{ "contractName": "ConverterRegistryData", "abi": [ { "inputs": [ { "internalType": "contract IContractRegistry", "name": "_registry", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_prevOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_newOwner", "type": "address" } ], "name": "OwnerUpdate", "type": "event" }, { "inputs": [], "name": "acceptOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "newOwner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function", "constant": true }, { "inputs": [], "name": "onlyOwnerCanUpdateRegistry", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function", "constant": true }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function", "constant": true }, { "inputs": [], "name": "prevRegistry", "outputs": [ { "internalType": "contract IContractRegistry", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function", "constant": true }, { "inputs": [], "name": "registry", "outputs": [ { "internalType": "contract IContractRegistry", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function", "constant": true }, { "inputs": [], "name": "restoreRegistry", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_onlyOwnerCanUpdateRegistry", "type": "bool" } ], "name": "restrictRegistryUpdate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "updateRegistry", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "contract IConverterAnchor", "name": "_anchor", "type": "address" } ], "name": "addSmartToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "contract IConverterAnchor", "name": "_anchor", "type": "address" } ], "name": "removeSmartToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "contract IConverterAnchor", "name": "_liquidityPoolAnchor", "type": "address" } ], "name": "addLiquidityPool", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "contract IConverterAnchor", "name": "_liquidityPoolAnchor", "type": "address" } ], "name": "removeLiquidityPool", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "contract IERC20Token", "name": "_convertibleToken", "type": "address" }, { "internalType": "contract IConverterAnchor", "name": "_anchor", "type": "address" } ], "name": "addConvertibleToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "contract IERC20Token", "name": "_convertibleToken", "type": "address" }, { "internalType": "contract IConverterAnchor", "name": "_anchor", "type": "address" } ], "name": "removeConvertibleToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "getSmartTokenCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function", "constant": true }, { "inputs": [], "name": "getSmartTokens", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function", "constant": true }, { "inputs": [ { "internalType": "uint256", "name": "_index", "type": "uint256" } ], "name": "getSmartToken", "outputs": [ { "internalType": "contract IConverterAnchor", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function", "constant": true }, { "inputs": [ { "internalType": "address", "name": "_value", "type": "address" } ], "name": "isSmartToken", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function", "constant": true }, { "inputs": [], "name": "getLiquidityPoolCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function", "constant": true }, { "inputs": [], "name": "getLiquidityPools", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function", "constant": true }, { "inputs": [ { "internalType": "uint256", "name": "_index", "type": "uint256" } ], "name": "getLiquidityPool", "outputs": [ { "internalType": "contract IConverterAnchor", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function", "constant": true }, { "inputs": [ { "internalType": "address", "name": "_value", "type": "address" } ], "name": "isLiquidityPool", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function", "constant": true }, { "inputs": [], "name": "getConvertibleTokenCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function", "constant": true }, { "inputs": [], "name": "getConvertibleTokens", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function", "constant": true }, { "inputs": [ { "internalType": "uint256", "name": "_index", "type": "uint256" } ], "name": "getConvertibleToken", "outputs": [ { "internalType": "contract IERC20Token", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function", "constant": true }, { "inputs": [ { "internalType": "address", "name": "_value", "type": "address" } ], "name": "isConvertibleToken", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function", "constant": true }, { "inputs": [ { "internalType": "contract IERC20Token", "name": "_convertibleToken", "type": "address" } ], "name": "getConvertibleTokenSmartTokenCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function", "constant": true }, { "inputs": [ { "internalType": "contract IERC20Token", "name": "_convertibleToken", "type": "address" } ], "name": "getConvertibleTokenSmartTokens", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function", "constant": true }, { "inputs": [ { "internalType": "contract IERC20Token", "name": "_convertibleToken", "type": "address" }, { "internalType": "uint256", "name": "_index", "type": "uint256" } ], "name": "getConvertibleTokenSmartToken", "outputs": [ { "internalType": "contract IConverterAnchor", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function", "constant": true }, { "inputs": [ { "internalType": "contract IERC20Token", "name": "_convertibleToken", "type": "address" }, { "internalType": "address", "name": "_value", "type": "address" } ], "name": "isConvertibleTokenSmartToken", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function", "constant": true } ], "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IContractRegistry\",\"name\":\"_registry\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_prevOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_newOwner\",\"type\":\"address\"}],\"name\":\"OwnerUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20Token\",\"name\":\"_convertibleToken\",\"type\":\"address\"},{\"internalType\":\"contract IConverterAnchor\",\"name\":\"_anchor\",\"type\":\"address\"}],\"name\":\"addConvertibleToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IConverterAnchor\",\"name\":\"_liquidityPoolAnchor\",\"type\":\"address\"}],\"name\":\"addLiquidityPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IConverterAnchor\",\"name\":\"_anchor\",\"type\":\"address\"}],\"name\":\"addSmartToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"getConvertibleToken\",\"outputs\":[{\"internalType\":\"contract IERC20Token\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getConvertibleTokenCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20Token\",\"name\":\"_convertibleToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"getConvertibleTokenSmartToken\",\"outputs\":[{\"internalType\":\"contract IConverterAnchor\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20Token\",\"name\":\"_convertibleToken\",\"type\":\"address\"}],\"name\":\"getConvertibleTokenSmartTokenCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20Token\",\"name\":\"_convertibleToken\",\"type\":\"address\"}],\"name\":\"getConvertibleTokenSmartTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getConvertibleTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"getLiquidityPool\",\"outputs\":[{\"internalType\":\"contract IConverterAnchor\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLiquidityPoolCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLiquidityPools\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"getSmartToken\",\"outputs\":[{\"internalType\":\"contract IConverterAnchor\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSmartTokenCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSmartTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_value\",\"type\":\"address\"}],\"name\":\"isConvertibleToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20Token\",\"name\":\"_convertibleToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_value\",\"type\":\"address\"}],\"name\":\"isConvertibleTokenSmartToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_value\",\"type\":\"address\"}],\"name\":\"isLiquidityPool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_value\",\"type\":\"address\"}],\"name\":\"isSmartToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"newOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"onlyOwnerCanUpdateRegistry\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"prevRegistry\",\"outputs\":[{\"internalType\":\"contract IContractRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registry\",\"outputs\":[{\"internalType\":\"contract IContractRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20Token\",\"name\":\"_convertibleToken\",\"type\":\"address\"},{\"internalType\":\"contract IConverterAnchor\",\"name\":\"_anchor\",\"type\":\"address\"}],\"name\":\"removeConvertibleToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IConverterAnchor\",\"name\":\"_liquidityPoolAnchor\",\"type\":\"address\"}],\"name\":\"removeLiquidityPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IConverterAnchor\",\"name\":\"_anchor\",\"type\":\"address\"}],\"name\":\"removeSmartToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"restoreRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_onlyOwnerCanUpdateRegistry\",\"type\":\"bool\"}],\"name\":\"restrictRegistryUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"updateRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"The ConverterRegistryData contract is an integral part of the converter registry as it serves as the database contract that holds all registry data. The registry is separated into two different contracts for upgradability - the data contract is harder to upgrade as it requires migrating all registry data into a new contract, while the registry contract itself can be easily upgraded. For that same reason, the data contract is simple and contains no logic beyond the basic data access utilities that it exposes.\",\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"used by a new owner to accept an ownership transfer\"},\"addConvertibleToken(address,address)\":{\"details\":\"adds a convertible token\",\"params\":{\"_anchor\":\"associated smart token\",\"_convertibleToken\":\"convertible token\"}},\"addLiquidityPool(address)\":{\"details\":\"adds a liquidity pool\",\"params\":{\"_liquidityPoolAnchor\":\"liquidity pool\"}},\"addSmartToken(address)\":{\"details\":\"adds a smart token\",\"params\":{\"_anchor\":\"smart token\"}},\"constructor\":{\"details\":\"initializes a new ConverterRegistryData instance\",\"params\":{\"_registry\":\"address of a contract registry contract\"}},\"getConvertibleToken(uint256)\":{\"details\":\"returns the convertible token at a given index\",\"params\":{\"_index\":\"index\"},\"returns\":{\"_0\":\"convertible token at the given index\"}},\"getConvertibleTokenCount()\":{\"details\":\"returns the number of convertible tokens\",\"returns\":{\"_0\":\"number of convertible tokens\"}},\"getConvertibleTokenSmartToken(address,uint256)\":{\"details\":\"returns the smart token associated with a given convertible token at a given index\",\"params\":{\"_index\":\"index\"},\"returns\":{\"_0\":\"smart token associated with the given convertible token at the given index\"}},\"getConvertibleTokenSmartTokenCount(address)\":{\"details\":\"returns the number of smart tokens associated with a given convertible token\",\"params\":{\"_convertibleToken\":\"convertible token\"},\"returns\":{\"_0\":\"number of smart tokens associated with the given convertible token\"}},\"getConvertibleTokenSmartTokens(address)\":{\"details\":\"returns the list of smart tokens associated with a given convertible token\",\"params\":{\"_convertibleToken\":\"convertible token\"},\"returns\":{\"_0\":\"list of smart tokens associated with the given convertible token\"}},\"getConvertibleTokens()\":{\"details\":\"returns the list of convertible tokens\",\"returns\":{\"_0\":\"list of convertible tokens\"}},\"getLiquidityPool(uint256)\":{\"details\":\"returns the liquidity pool at a given index\",\"params\":{\"_index\":\"index\"},\"returns\":{\"_0\":\"liquidity pool at the given index\"}},\"getLiquidityPoolCount()\":{\"details\":\"returns the number of liquidity pools\",\"returns\":{\"_0\":\"number of liquidity pools\"}},\"getLiquidityPools()\":{\"details\":\"returns the list of liquidity pools\",\"returns\":{\"_0\":\"list of liquidity pools\"}},\"getSmartToken(uint256)\":{\"details\":\"returns the smart token at a given index\",\"params\":{\"_index\":\"index\"},\"returns\":{\"_0\":\"smart token at the given index\"}},\"getSmartTokenCount()\":{\"details\":\"returns the number of smart tokens\",\"returns\":{\"_0\":\"number of smart tokens\"}},\"getSmartTokens()\":{\"details\":\"returns the list of smart tokens\",\"returns\":{\"_0\":\"list of smart tokens\"}},\"isConvertibleToken(address)\":{\"details\":\"checks whether or not a given value is a convertible token\",\"params\":{\"_value\":\"value\"},\"returns\":{\"_0\":\"true if the given value is a convertible token, false if not\"}},\"isConvertibleTokenSmartToken(address,address)\":{\"details\":\"checks whether or not a given value is a smart token of a given convertible token\",\"params\":{\"_convertibleToken\":\"convertible token\",\"_value\":\"value\"},\"returns\":{\"_0\":\"true if the given value is a smart token of the given convertible token, false it not\"}},\"isLiquidityPool(address)\":{\"details\":\"checks whether or not a given value is a liquidity pool\",\"params\":{\"_value\":\"value\"},\"returns\":{\"_0\":\"true if the given value is a liquidity pool, false if not\"}},\"isSmartToken(address)\":{\"details\":\"checks whether or not a given value is a smart token\",\"params\":{\"_value\":\"value\"},\"returns\":{\"_0\":\"true if the given value is a smart token, false if not\"}},\"removeConvertibleToken(address,address)\":{\"details\":\"removes a convertible token\",\"params\":{\"_anchor\":\"associated smart token\",\"_convertibleToken\":\"convertible token\"}},\"removeLiquidityPool(address)\":{\"details\":\"removes a liquidity pool\",\"params\":{\"_liquidityPoolAnchor\":\"liquidity pool\"}},\"removeSmartToken(address)\":{\"details\":\"removes a smart token\",\"params\":{\"_anchor\":\"smart token\"}},\"restoreRegistry()\":{\"details\":\"restores the previous contract-registry\"},\"restrictRegistryUpdate(bool)\":{\"details\":\"restricts the permission to update the contract-registry\",\"params\":{\"_onlyOwnerCanUpdateRegistry\":\"indicates whether or not permission is restricted to owner only\"}},\"transferOwnership(address)\":{\"details\":\"allows transferring the contract ownership the new owner still needs to accept the transfer can only be called by the contract owner\",\"params\":{\"_newOwner\":\"new contract owner\"}},\"updateRegistry()\":{\"details\":\"updates to the new contract-registry\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/ConverterRegistryData.sol\":\"ConverterRegistryData\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/ConverterRegistryData.sol\":{\"keccak256\":\"0x1cd40757c5d9316221a12e4f2a73593b3d01fd45d719534e2ec5d78f60ac92f0\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://ed83c89f0284b0868364f0788434e963f7e98c86ce982ff747882981aff9e31d\",\"dweb:/ipfs/QmVC8zcAfdZ5EG1QNpvvGnm2xMVAzsJjiBhHCJHAumpA8n\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/interfaces/IConverterAnchor.sol\":{\"keccak256\":\"0x9448cdbe90293fb5c1a0808b77af8754a1025b59c45f432eee01f659361a6115\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://1ef2bb2e1543c9324daf7f3fd086a57efb45b89f3d62b9d7a9fc78c138d24dbc\",\"dweb:/ipfs/QmVcXDib3K6xYJMBNxawmo4krJGiDfxb5oL64Lc3pi14XK\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/interfaces/IConverterRegistryData.sol\":{\"keccak256\":\"0xc2b8e75bf4d69b34f9687d90d8eb31e8462bfcf25565f5ca399151648624c73a\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://e3825b1ccce31117c984a7605376ec2e6f18b15cdd61e9d5624667332a935dd7\",\"dweb:/ipfs/QmeRHtWU1oZJtL8UxJQMbwmTyMhf8Z3DJz6XubFxbP5xQx\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/token/interfaces/IERC20Token.sol\":{\"keccak256\":\"0xe6f988c3156e88258474526a541d5a42b6a9adae98b04177a059d9f723bc82cd\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://9a6eb77a5b9ce70995a11a6e48ac3985a4c70896fe5fe04d46146ad7c1c83ea3\",\"dweb:/ipfs/QmYvGSveZFG51tghwkVuu6eK9Jy8frHpfLxHTMyvNZN461\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/ContractRegistryClient.sol\":{\"keccak256\":\"0x74caf88eff1cb113ad8277df9ba7933a6f1e0deea8fd1855157def3be833b859\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://c7793c9f245736cd8413bc8c4b5c40b67949cbee32289a16d29c83cf59396ad6\",\"dweb:/ipfs/QmWony7b1buUrGnE32gjLAnSwkBYMrJ68vUcCwDMmp3MbJ\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/Owned.sol\":{\"keccak256\":\"0x6ef69d9dcc80a8a36d5eb37783375cd5e4831c6d20c723fa6f6b6a06c0aeb53d\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://5a5d087e2c5b47739615ef22e1f29749de44b43c9a37cfae32b3dfc498a258c4\",\"dweb:/ipfs/Qmd1mXKEQbmBxqHk326LGVzNoayXsam8gZNecknnYpBnyh\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/Utils.sol\":{\"keccak256\":\"0x073efa69fcd6b5e60f841b28b366d63b62ff48ab12a06ce3f5a7f41afd6ce885\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://e8b8ecb2d29197ca77f0ed98f728ace54e6edcfdf5cd1194ae22701607eaf608\",\"dweb:/ipfs/QmcsR6Q35Hurh3TrPkYAboicz9bQQoGCWmZLzUCDyhotH8\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/interfaces/IContractRegistry.sol\":{\"keccak256\":\"0x3551889a83738b621c29ed66f1ecb6a843cca4217e54c9357198559b9cc92259\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://231a59c8f2665adeda8c7e6930832409c9b991fd27ad84b3a24335e7bf269bbe\",\"dweb:/ipfs/QmeJJbn1EAUbZenruTEdJAnwUn3dxsVNeJvxPe81qKEGqL\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/interfaces/IOwned.sol\":{\"keccak256\":\"0xc60a9d197abc28c1906ed4d18b59caa0242db754a0e1f67af6e6277593530dae\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://a8c6f3e6525a81a5165ccbf04f73f6c389c14b74135d11a7b5f70b1c9bdac75c\",\"dweb:/ipfs/QmaPu4Z7yUPc9sMADmoTZVY6AnyDSYHtNNCx3mm4VkJwhP\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/interfaces/ITokenHolder.sol\":{\"keccak256\":\"0x9ccb8ab04d0bd874ba7aae5277e60f35c36918922649a0596bf3664ed257bfe2\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://b65e6db19cd244c9f3545695de5fd7573711c49fb306631ddbf0e1d2fa9fb589\",\"dweb:/ipfs/QmZeu5KYVMTbTx7h2BVUq52fpwL9Q44AUfzeVksucDohgf\"]}},\"version\":1}", "bytecode": "0x608060405234801561001057600080fd5b506040516113c43803806113c48339818101604052602081101561003357600080fd5b5051600080546001600160a01b03191633179055808061005281610083565b50600280546001600160a01b039092166001600160a01b0319928316811790915560038054909216179055506100e1565b6001600160a01b0381166100de576040805162461bcd60e51b815260206004820152601360248201527f4552525f494e56414c49445f4144445245535300000000000000000000000000604482015290519081900360640190fd5b50565b6112d4806100f06000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80638da5cb5b1161010f578063d4ee1d90116100a2578063ee6a934c11610071578063ee6a934c14610501578063f2fde38b14610527578063f4fb86c01461054d578063fba8f03114610573576101f0565b8063d4ee1d901461049f578063d6c4b5b2146104a7578063e571049b146104d3578063e85455d7146104db576101f0565b8063a74498aa116100de578063a74498aa1461042e578063ae22107f1461044b578063b4a176d314610471578063ceb9838c14610479576101f0565b80638da5cb5b146103bd5780638de6c3eb146103c5578063a109d214146103eb578063a43d5e9414610408576101f0565b806361cd756e116101875780637a5f0ffd116101565780637a5f0ffd146103885780637b103999146103905780637f45c4c314610398578063865cf194146103a0576101f0565b806361cd756e1461031457806369be478414610338578063725b87861461035257806379ba509714610380576101f0565b80633ab8857c116101c35780633ab8857c146102b85780634123ef60146102de57806349d10b64146103045780635f1b50fe1461030c576101f0565b8063024c7ec7146101f557806304ceaf41146102165780632fe8a6ad1461026e57806336900c111461028a575b600080fd5b6102146004803603602081101561020b57600080fd5b503515156105a1565b005b61021e6105c7565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561025a578181015183820152602001610242565b505050509050019250505060405180910390f35b61027661062c565b604080519115158252519081900360200190f35b610214600480360360408110156102a057600080fd5b506001600160a01b038135811691602001351661063c565b610276600480360360208110156102ce57600080fd5b50356001600160a01b03166106d7565b610276600480360360208110156102f457600080fd5b50356001600160a01b03166106f7565b610214610715565b61021e61091d565b61031c610980565b604080516001600160a01b039092168252519081900360200190f35b61034061098f565b60408051918252519081900360200190f35b6102766004803603604081101561036857600080fd5b506001600160a01b0381358116916020013516610995565b6102146109c7565b610340610a7e565b61031c610a84565b61021e610a93565b61031c600480360360208110156103b657600080fd5b5035610af6565b61031c610b23565b610214600480360360208110156103db57600080fd5b50356001600160a01b0316610b32565b61031c6004803603602081101561040157600080fd5b5035610b59565b6103406004803603602081101561041e57600080fd5b50356001600160a01b0316610b6b565b61031c6004803603602081101561044457600080fd5b5035610b89565b6102146004803603602081101561046157600080fd5b50356001600160a01b0316610b9b565b610214610bbe565b6102146004803603602081101561048f57600080fd5b50356001600160a01b0316610bea565b61031c610c0d565b61031c600480360360408110156104bd57600080fd5b506001600160a01b038135169060200135610c1c565b610340610c5f565b610276600480360360208110156104f157600080fd5b50356001600160a01b0316610c65565b6102146004803603602081101561051757600080fd5b50356001600160a01b0316610c83565b6102146004803603602081101561053d57600080fd5b50356001600160a01b0316610ca6565b61021e6004803603602081101561056357600080fd5b50356001600160a01b0316610d24565b6102146004803603604081101561058957600080fd5b506001600160a01b0381358116916020013516610d9d565b6105a9610ec3565b60038054911515600160a01b0260ff60a01b19909216919091179055565b6060600460000180548060200260200160405190810160405280929190818152602001828054801561062257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610604575b5050505050905090565b600354600160a01b900460ff1681565b60008051602061127f83398151915261065481610f18565b6001600160a01b038316600090815260096020526040902060018101546106c457600880548083556001810182556000919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319166001600160a01b0386161790555b6106d18160010184610f7d565b50505050565b6001600160a01b0316600090815260096020526040902060010154151590565b6001600160a01b031660009081526005602052604090205460ff1690565b6000546001600160a01b03163314806107385750600354600160a01b900460ff16155b61077d576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b600061079b6f436f6e7472616374526567697374727960801b611032565b6002549091506001600160a01b038083169116148015906107c457506001600160a01b03811615155b61080c576040805162461bcd60e51b81526020600482015260146024820152734552525f494e56414c49445f524547495354525960601b604482015290519081900360640190fd5b60006001600160a01b0316816001600160a01b031663bb34534c6f436f6e7472616374526567697374727960801b6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561086e57600080fd5b505afa158015610882573d6000803e3d6000fd5b505050506040513d602081101561089857600080fd5b50516001600160a01b031614156108ed576040805162461bcd60e51b81526020600482015260146024820152734552525f494e56414c49445f524547495354525960601b604482015290519081900360640190fd5b60028054600380546001600160a01b038084166001600160a01b0319928316179092559091169216919091179055565b60606008600001805480602002602001604051908101604052809291908181526020018280548015610622576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610604575050505050905090565b6003546001600160a01b031681565b60085490565b6001600160a01b0391821660009081526009602090815260408083209390941682526002909201909152205460ff1690565b6001546001600160a01b03163314610a1a576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b600154600080546040516001600160a01b0393841693909116917f343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a91a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b60065490565b6002546001600160a01b031681565b60606006600001805480602002602001604051908101604052809291908181526020018280548015610622576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610604575050505050905090565b600060086000018281548110610b0857fe5b6000918252602090912001546001600160a01b031692915050565b6000546001600160a01b031681565b60008051602061127f833981519152610b4a81610f18565b610b55600483610f7d565b5050565b600060046000018281548110610b0857fe5b6001600160a01b031660009081526009602052604090206001015490565b600060066000018281548110610b0857fe5b60008051602061127f833981519152610bb381610f18565b610b556006836110b0565b610bc6610ec3565b600354600280546001600160a01b0319166001600160a01b03909216919091179055565b60008051602061127f833981519152610c0281610f18565b610b556004836110b0565b6001546001600160a01b031681565b6001600160a01b0382166000908152600960205260408120600101805483908110610c4357fe5b6000918252602090912001546001600160a01b03169392505050565b60045490565b6001600160a01b031660009081526007602052604090205460ff1690565b60008051602061127f833981519152610c9b81610f18565b610b55600683610f7d565b610cae610ec3565b6000546001600160a01b0382811691161415610d02576040805162461bcd60e51b815260206004820152600e60248201526d22a9292fa9a0a6a2afa7aba722a960911b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038116600090815260096020908152604091829020600101805483518184028101840190945280845260609392830182828015610d9157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d73575b50505050509050919050565b60008051602061127f833981519152610db581610f18565b6001600160a01b0383166000908152600960205260409020610dda60018201846110b0565b60018101546106d15760088054600091906000198101908110610df957fe5b600091825260208083209091015484546001600160a01b039091168084526009909252604090922082905560088054919350839290918110610e3757fe5b600091825260209091200180546001600160a01b0319166001600160a01b03929092169190911790556008805480610e6b57fe5b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b03871682526009905260408120818155906001820181610eb8828261124c565b505050505050505050565b6000546001600160a01b03163314610f16576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b565b610f2181611032565b6001600160a01b0316336001600160a01b031614610f7a576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b50565b80610f87816111fb565b6001600160a01b03821660009081526001840160205260409020805460ff1615610feb576040805162461bcd60e51b815260206004820152601060248201526f4552525f494e56414c49445f4954454d60801b604482015290519081900360640190fd5b835460018281018290558082018655600095865260209095200180546001600160a01b0319166001600160a01b03949094169390931790925550805460ff19169091179055565b60025460408051632ecd14d360e21b81526004810184905290516000926001600160a01b03169163bb34534c916024808301926020929190829003018186803b15801561107e57600080fd5b505afa158015611092573d6000803e3d6000fd5b505050506040513d60208110156110a857600080fd5b505192915050565b806110ba816111fb565b6001600160a01b03821660009081526001840160205260409020805460ff1661111d576040805162461bcd60e51b815260206004820152601060248201526f4552525f494e56414c49445f4954454d60801b604482015290519081900360640190fd5b83546000908590600019810190811061113257fe5b60009182526020808320909101546001858101546001600160a01b039092168085528982019093526040909320909201829055865490925082918791811061117657fe5b600091825260209091200180546001600160a01b0319166001600160a01b039290921691909117905584548590806111aa57fe5b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b039590951681526001958601909452505060408220805460ff191681559092015550565b6001600160a01b038116610f7a576040805162461bcd60e51b81526020600482015260136024820152724552525f494e56414c49445f4144445245535360681b604482015290519081900360640190fd5b5080546000825590600052602060002090810190610f7a91905b8082111561127a5760008155600101611266565b509056fe42616e636f72436f6e7665727465725265676973747279000000000000000000a26469706673582212204a484f67d4c791ea09d72b50c23bff0b3e627810a6c00a1935a071f3ff88796464736f6c634300060c0033", "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101f05760003560e01c80638da5cb5b1161010f578063d4ee1d90116100a2578063ee6a934c11610071578063ee6a934c14610501578063f2fde38b14610527578063f4fb86c01461054d578063fba8f03114610573576101f0565b8063d4ee1d901461049f578063d6c4b5b2146104a7578063e571049b146104d3578063e85455d7146104db576101f0565b8063a74498aa116100de578063a74498aa1461042e578063ae22107f1461044b578063b4a176d314610471578063ceb9838c14610479576101f0565b80638da5cb5b146103bd5780638de6c3eb146103c5578063a109d214146103eb578063a43d5e9414610408576101f0565b806361cd756e116101875780637a5f0ffd116101565780637a5f0ffd146103885780637b103999146103905780637f45c4c314610398578063865cf194146103a0576101f0565b806361cd756e1461031457806369be478414610338578063725b87861461035257806379ba509714610380576101f0565b80633ab8857c116101c35780633ab8857c146102b85780634123ef60146102de57806349d10b64146103045780635f1b50fe1461030c576101f0565b8063024c7ec7146101f557806304ceaf41146102165780632fe8a6ad1461026e57806336900c111461028a575b600080fd5b6102146004803603602081101561020b57600080fd5b503515156105a1565b005b61021e6105c7565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561025a578181015183820152602001610242565b505050509050019250505060405180910390f35b61027661062c565b604080519115158252519081900360200190f35b610214600480360360408110156102a057600080fd5b506001600160a01b038135811691602001351661063c565b610276600480360360208110156102ce57600080fd5b50356001600160a01b03166106d7565b610276600480360360208110156102f457600080fd5b50356001600160a01b03166106f7565b610214610715565b61021e61091d565b61031c610980565b604080516001600160a01b039092168252519081900360200190f35b61034061098f565b60408051918252519081900360200190f35b6102766004803603604081101561036857600080fd5b506001600160a01b0381358116916020013516610995565b6102146109c7565b610340610a7e565b61031c610a84565b61021e610a93565b61031c600480360360208110156103b657600080fd5b5035610af6565b61031c610b23565b610214600480360360208110156103db57600080fd5b50356001600160a01b0316610b32565b61031c6004803603602081101561040157600080fd5b5035610b59565b6103406004803603602081101561041e57600080fd5b50356001600160a01b0316610b6b565b61031c6004803603602081101561044457600080fd5b5035610b89565b6102146004803603602081101561046157600080fd5b50356001600160a01b0316610b9b565b610214610bbe565b6102146004803603602081101561048f57600080fd5b50356001600160a01b0316610bea565b61031c610c0d565b61031c600480360360408110156104bd57600080fd5b506001600160a01b038135169060200135610c1c565b610340610c5f565b610276600480360360208110156104f157600080fd5b50356001600160a01b0316610c65565b6102146004803603602081101561051757600080fd5b50356001600160a01b0316610c83565b6102146004803603602081101561053d57600080fd5b50356001600160a01b0316610ca6565b61021e6004803603602081101561056357600080fd5b50356001600160a01b0316610d24565b6102146004803603604081101561058957600080fd5b506001600160a01b0381358116916020013516610d9d565b6105a9610ec3565b60038054911515600160a01b0260ff60a01b19909216919091179055565b6060600460000180548060200260200160405190810160405280929190818152602001828054801561062257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610604575b5050505050905090565b600354600160a01b900460ff1681565b60008051602061127f83398151915261065481610f18565b6001600160a01b038316600090815260096020526040902060018101546106c457600880548083556001810182556000919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319166001600160a01b0386161790555b6106d18160010184610f7d565b50505050565b6001600160a01b0316600090815260096020526040902060010154151590565b6001600160a01b031660009081526005602052604090205460ff1690565b6000546001600160a01b03163314806107385750600354600160a01b900460ff16155b61077d576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b600061079b6f436f6e7472616374526567697374727960801b611032565b6002549091506001600160a01b038083169116148015906107c457506001600160a01b03811615155b61080c576040805162461bcd60e51b81526020600482015260146024820152734552525f494e56414c49445f524547495354525960601b604482015290519081900360640190fd5b60006001600160a01b0316816001600160a01b031663bb34534c6f436f6e7472616374526567697374727960801b6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561086e57600080fd5b505afa158015610882573d6000803e3d6000fd5b505050506040513d602081101561089857600080fd5b50516001600160a01b031614156108ed576040805162461bcd60e51b81526020600482015260146024820152734552525f494e56414c49445f524547495354525960601b604482015290519081900360640190fd5b60028054600380546001600160a01b038084166001600160a01b0319928316179092559091169216919091179055565b60606008600001805480602002602001604051908101604052809291908181526020018280548015610622576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610604575050505050905090565b6003546001600160a01b031681565b60085490565b6001600160a01b0391821660009081526009602090815260408083209390941682526002909201909152205460ff1690565b6001546001600160a01b03163314610a1a576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b600154600080546040516001600160a01b0393841693909116917f343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a91a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b60065490565b6002546001600160a01b031681565b60606006600001805480602002602001604051908101604052809291908181526020018280548015610622576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610604575050505050905090565b600060086000018281548110610b0857fe5b6000918252602090912001546001600160a01b031692915050565b6000546001600160a01b031681565b60008051602061127f833981519152610b4a81610f18565b610b55600483610f7d565b5050565b600060046000018281548110610b0857fe5b6001600160a01b031660009081526009602052604090206001015490565b600060066000018281548110610b0857fe5b60008051602061127f833981519152610bb381610f18565b610b556006836110b0565b610bc6610ec3565b600354600280546001600160a01b0319166001600160a01b03909216919091179055565b60008051602061127f833981519152610c0281610f18565b610b556004836110b0565b6001546001600160a01b031681565b6001600160a01b0382166000908152600960205260408120600101805483908110610c4357fe5b6000918252602090912001546001600160a01b03169392505050565b60045490565b6001600160a01b031660009081526007602052604090205460ff1690565b60008051602061127f833981519152610c9b81610f18565b610b55600683610f7d565b610cae610ec3565b6000546001600160a01b0382811691161415610d02576040805162461bcd60e51b815260206004820152600e60248201526d22a9292fa9a0a6a2afa7aba722a960911b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038116600090815260096020908152604091829020600101805483518184028101840190945280845260609392830182828015610d9157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d73575b50505050509050919050565b60008051602061127f833981519152610db581610f18565b6001600160a01b0383166000908152600960205260409020610dda60018201846110b0565b60018101546106d15760088054600091906000198101908110610df957fe5b600091825260208083209091015484546001600160a01b039091168084526009909252604090922082905560088054919350839290918110610e3757fe5b600091825260209091200180546001600160a01b0319166001600160a01b03929092169190911790556008805480610e6b57fe5b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b03871682526009905260408120818155906001820181610eb8828261124c565b505050505050505050565b6000546001600160a01b03163314610f16576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b565b610f2181611032565b6001600160a01b0316336001600160a01b031614610f7a576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b50565b80610f87816111fb565b6001600160a01b03821660009081526001840160205260409020805460ff1615610feb576040805162461bcd60e51b815260206004820152601060248201526f4552525f494e56414c49445f4954454d60801b604482015290519081900360640190fd5b835460018281018290558082018655600095865260209095200180546001600160a01b0319166001600160a01b03949094169390931790925550805460ff19169091179055565b60025460408051632ecd14d360e21b81526004810184905290516000926001600160a01b03169163bb34534c916024808301926020929190829003018186803b15801561107e57600080fd5b505afa158015611092573d6000803e3d6000fd5b505050506040513d60208110156110a857600080fd5b505192915050565b806110ba816111fb565b6001600160a01b03821660009081526001840160205260409020805460ff1661111d576040805162461bcd60e51b815260206004820152601060248201526f4552525f494e56414c49445f4954454d60801b604482015290519081900360640190fd5b83546000908590600019810190811061113257fe5b60009182526020808320909101546001858101546001600160a01b039092168085528982019093526040909320909201829055865490925082918791811061117657fe5b600091825260209091200180546001600160a01b0319166001600160a01b039290921691909117905584548590806111aa57fe5b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b039590951681526001958601909452505060408220805460ff191681559092015550565b6001600160a01b038116610f7a576040805162461bcd60e51b81526020600482015260136024820152724552525f494e56414c49445f4144445245535360681b604482015290519081900360640190fd5b5080546000825590600052602060002090810190610f7a91905b8082111561127a5760008155600101611266565b509056fe42616e636f72436f6e7665727465725265676973747279000000000000000000a26469706673582212204a484f67d4c791ea09d72b50c23bff0b3e627810a6c00a1935a071f3ff88796464736f6c634300060c0033", "immutableReferences": {}, "sourceMap": "752:10050:11:-:0;;;1441:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1441:90:11;619:5:57;:18;;-1:-1:-1;;;;;;619:18:57;627:10;619:18;;;1441:90:11;;594:23:64;1441:90:11;594:13:64;:23::i;:::-;-1:-1:-1;2122:8:56::1;:39:::0;;-1:-1:-1;;;;;2122:39:56;;::::1;-1:-1:-1::0;;;;;;2122:39:56;;::::1;::::0;::::1;::::0;;;2172:12:::1;:43:::0;;;;::::1;;::::0;;-1:-1:-1;752:10050:11;;692:128:64;-1:-1:-1;;;;;766:22:64;;758:54;;;;;-1:-1:-1;;;758:54:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;692:128;:::o;752:10050:11:-;;;;;;;", "deployedSourceMap": "752:10050:11:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3655:224:56;;;;;;;;;;;;;;;;-1:-1:-1;3655:224:56;;;;:::i;:::-;;4556:119:11;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1333:38:56;;;:::i;:::-;;;;;;;;;;;;;;;;;;2847:452:11;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2847:452:11;;;;;;;;;;:::i;7605:162::-;;;;;;;;;;;;;;;;-1:-1:-1;7605:162:11;-1:-1:-1;;;;;7605:162:11;;:::i;5201:133::-;;;;;;;;;;;;;;;;-1:-1:-1;5201:133:11;-1:-1:-1;;;;;5201:133:11;;:::i;2300:925:56:-;;;:::i;6922:131:11:-;;;:::i;1243:37:56:-;;;:::i;:::-;;;;-1:-1:-1;;;;;1243:37:56;;;;;;;;;;;;;;6658:133:11;;;:::i;:::-;;;;;;;;;;;;;;;;9524:226;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;9524:226:11;;;;;;;;;;:::i;1422:217:57:-;;;:::i;5463:127:11:-;;;:::i;1154:33:56:-;;;:::i;5715:125:11:-;;;:::i;7231:160::-;;;;;;;;;;;;;;;;-1:-1:-1;7231:160:11;;:::i;219:29:57:-;;;:::i;1634:149:11:-;;;;;;;;;;;;;;;;-1:-1:-1;1634:149:11;-1:-1:-1;;;;;1634:149:11;;:::i;4841:158::-;;;;;;;;;;;;;;;;-1:-1:-1;4841:158:11;;:::i;8028:212::-;;;;;;;;;;;;;;;;-1:-1:-1;8028:212:11;-1:-1:-1;;;;;8028:212:11;;:::i;6012:164::-;;;;;;;;;;;;;;;;-1:-1:-1;6012:164:11;;:::i;2472:187::-;;;;;;;;;;;;;;;;-1:-1:-1;2472:187:11;-1:-1:-1;;;;;2472:187:11;;:::i;3304:137:56:-;;;:::i;1889:155:11:-;;;;;;;;;;;;;;;;-1:-1:-1;1889:155:11;-1:-1:-1;;;;;1889:155:11;;:::i;255:23:57:-;;;:::i;8959:251:11:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;8959:251:11;;;;;;;;:::i;4316:121::-;;;:::i;6384:139::-;;;;;;;;;;;;;;;;-1:-1:-1;6384:139:11;-1:-1:-1;;;;;6384:139:11;;:::i;2166:181::-;;;;;;;;;;;;;;;;-1:-1:-1;2166:181:11;-1:-1:-1;;;;;2166:181:11;;:::i;1164:167:57:-;;;;;;;;;;;;;;;;-1:-1:-1;1164:167:57;-1:-1:-1;;;;;1164:167:57;;:::i;8497:210:11:-;;;;;;;;;;;;;;;;-1:-1:-1;8497:210:11;-1:-1:-1;;;;;8497:210:11;;:::i;3490:703::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3490:703:11;;;;;;;;;;:::i;3655:224:56:-;726:12:57;:10;:12::i;:::-;3815:26:56::1;:56:::0;;;::::1;;-1:-1:-1::0;;;3815:56:56::1;-1:-1:-1::0;;;;3815:56:56;;::::1;::::0;;;::::1;::::0;;3655:224::o;4556:119:11:-;4614:16;4650:11;:17;;4643:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4643:24:11;;;;;;;;;;;;;;;;;;;;;;;4556:119;:::o;1333:38:56:-;;;-1:-1:-1;;;1333:38:56;;;;;:::o;2847:452:11:-;-1:-1:-1;;;;;;;;;;;1627:20:56;1633:13;1627:5;:20::i;:::-;-1:-1:-1;;;;;3007:51:11;::::1;2987:17;3007:51:::0;;;:23;:51:::1;::::0;;;;:23:::1;3073:10:::0;::::1;:23:::0;3069:175:::1;;3131:17;:30:::0;;3118:43;;;3176:56:::1;::::0;::::1;::::0;;-1:-1:-1;3176:56:11;;;;;::::1;::::0;;-1:-1:-1;;;;;;3176:56:11::1;-1:-1:-1::0;;;;;3176:56:11;::::1;;::::0;;3069:175:::1;3254:37;3262:4;:10;;3282:7;3254;:37::i;:::-;1658:1:56;2847:452:11::0;;;:::o;7605:162::-;-1:-1:-1;;;;;7705:31:11;7681:4;7705:31;;;:23;:31;;;;;:23;:37;:50;:54;;;7605:162::o;5201:133::-;-1:-1:-1;;;;;5295:25:11;5271:4;5295:25;;;:17;:25;;;;;:31;;;;5201:133::o;2300:925:56:-;2417:5;;-1:-1:-1;;;;;2417:5:56;2403:10;:19;;:50;;-1:-1:-1;2427:26:56;;-1:-1:-1;;;2427:26:56;;;;2426:27;2403:50;2395:80;;;;;-1:-1:-1;;;2395:80:56;;;;;;;;;;;;-1:-1:-1;;;2395:80:56;;;;;;;;;;;;;;;2530:29;2580:28;-1:-1:-1;;;2580:9:56;:28::i;:::-;2721:8;;2530:79;;-1:-1:-1;;;;;;2706:23:56;;;2721:8;;2706:23;;;;:61;;-1:-1:-1;;;;;;2733:34:56;;;;2706:61;2698:94;;;;;-1:-1:-1;;;2698:94:56;;;;;;;;;;;;-1:-1:-1;;;2698:94:56;;;;;;;;;;;;;;;2959:1;-1:-1:-1;;;;;2907:54:56;:11;-1:-1:-1;;;;;2907:21:56;;-1:-1:-1;;;2907:40:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2907:40:56;-1:-1:-1;;;;;2907:54:56;;;2899:87;;;;;-1:-1:-1;;;2899:87:56;;;;;;;;;;;;-1:-1:-1;;;2899:87:56;;;;;;;;;;;;;;;3093:8;;;3078:12;:23;;-1:-1:-1;;;;;3093:8:56;;;-1:-1:-1;;;;;;3078:23:56;;;;;;;3195:22;;;;;;;;;;;2300:925::o;6922:131:11:-;6986:16;7022:17;:23;;7015:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7015:30:11;;;;;;;;;;;;;;;;;;;;;;6922:131;:::o;1243:37:56:-;;;-1:-1:-1;;;;;1243:37:56;;:::o;6658:133:11:-;6753:17;:30;6658:133;:::o;9524:226::-;-1:-1:-1;;;;;9665:51:11;;;9641:4;9665:51;;;:23;:51;;;;;;;;:71;;;;;;:63;;;;:71;;;;:77;;;;9524:226::o;1422:217:57:-;1498:8;;-1:-1:-1;;;;;1498:8:57;1484:10;:22;1476:52;;;;;-1:-1:-1;;;1476:52:57;;;;;;;;;;;;-1:-1:-1;;;1476:52:57;;;;;;;;;;;;;;;1563:8;;;1556:5;;1544:28;;-1:-1:-1;;;;;1563:8:57;;;;1556:5;;;;1544:28;;;1591:8;;;;1583:16;;-1:-1:-1;;;;;;1583:16:57;;;-1:-1:-1;;;;;1591:8:57;;1583:16;;;;1610:21;;;1422:217::o;5463:127:11:-;5555:14;:27;5463:127;:::o;1154:33:56:-;;;-1:-1:-1;;;;;1154:33:56;;:::o;5715:125:11:-;5776:16;5812:14;:20;;5805:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5805:27:11;;;;;;;;;;;;;;;;;;;;;;5715:125;:::o;7231:160::-;7308:11;7351:17;:23;;7375:6;7351:31;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7351:31:11;;7231:160;-1:-1:-1;;7231:160:11:o;219:29:57:-;;;-1:-1:-1;;;;;219:29:57;;:::o;1634:149:11:-;-1:-1:-1;;;;;;;;;;;1627:20:56;1633:13;1627:5;:20::i;:::-;1737:38:11::1;1745:11;1766:7;1737;:38::i;:::-;1634:149:::0;;:::o;4841:158::-;4912:16;4965:11;:17;;4983:6;4965:25;;;;;;;8028:212;-1:-1:-1;;;;;8162:51:11;8135:7;8162:51;;;:23;:51;;;;;:23;:57;:70;;8028:212::o;6012:164::-;6086:16;6139:14;:20;;6160:6;6139:28;;;;;;;2472:187;-1:-1:-1;;;;;;;;;;;1627:20:56;1633:13;1627:5;:20::i;:::-;2594:57:11::1;2605:14;2629:20;2594:10;:57::i;3304:137:56:-:0;726:12:57;:10;:12::i;:::-;3421::56::1;::::0;3410:8:::1;:23:::0;;-1:-1:-1;;;;;;3410:23:56::1;-1:-1:-1::0;;;;;3421:12:56;;::::1;3410:23:::0;;;::::1;::::0;;3304:137::o;1889:155:11:-;-1:-1:-1;;;;;;;;;;;1627:20:56;1633:13;1627:5;:20::i;:::-;1995:41:11::1;2006:11;2027:7;1995:10;:41::i;255:23:57:-:0;;;-1:-1:-1;;;;;255:23:57;;:::o;8959:251:11:-;-1:-1:-1;;;;;9130:51:11;;9077:16;9130:51;;;:23;:51;;;;;:23;:57;:71;;9194:6;;9130:71;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9130:71:11;;8959:251;-1:-1:-1;;;8959:251:11:o;4316:121::-;4405:11;:24;4316:121;:::o;6384:139::-;-1:-1:-1;;;;;6481:28:11;6457:4;6481:28;;;:20;:28;;;;;:34;;;;6384:139::o;2166:181::-;-1:-1:-1;;;;;;;;;;;1627:20:56;1633:13;1627:5;:20::i;:::-;2285:54:11::1;2293:14;2317:20;2285:7;:54::i;1164:167:57:-:0;726:12;:10;:12::i;:::-;1268:5:::1;::::0;-1:-1:-1;;;;;1255:18:57;;::::1;1268:5:::0;::::1;1255:18;;1247:45;;;::::0;;-1:-1:-1;;;1247:45:57;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;1247:45:57;;;;;;;;;;;;;::::1;;1303:8;:20:::0;;-1:-1:-1;;;;;;1303:20:57::1;-1:-1:-1::0;;;;;1303:20:57;;;::::1;::::0;;;::::1;::::0;;1164:167::o;8497:210:11:-;-1:-1:-1;;;;;8636:51:11;;;;;;:23;:51;;;;;;;;;:23;:57;8629:70;;;;;;;;;;;;;;;;;8600:16;;8629:70;;;8636:57;8629:70;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8629:70:11;;;;;;;;;;;;;;;;;;;;;;;8497:210;;;:::o;3490:703::-;-1:-1:-1;;;;;;;;;;;1627:20:56;1633:13;1627:5;:20::i;:::-;-1:-1:-1;;;;;3653:51:11;::::1;3633:17;3653:51:::0;;;:23;:51:::1;::::0;;;;3715:40:::1;3653:23;3726:10:::0;::::1;3746:7:::0;3715:10:::1;:40::i;:::-;3770:10;::::0;::::1;:23:::0;3766:420:::1;;3846:17;3870:30:::0;;3815:28:::1;::::0;3846:17;-1:-1:-1;;3870:34:11;;;3846:59;::::1;;;;;;::::0;;;::::1;::::0;;;;;::::1;::::0;3974:10;;-1:-1:-1;;;;;3846:59:11;;::::1;3920:45:::0;;;:23;:45;;;;;;;:64;;;:17:::1;3999:35:::0;;3846:59;;-1:-1:-1;3846:59:11;;3920:17;;3999:35;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;:58:::0;;-1:-1:-1;;;;;;3999:58:11::1;-1:-1:-1::0;;;;;3999:58:11;;;::::1;::::0;;;::::1;::::0;;4072:17:::1;:29:::0;;;::::1;;;;;::::0;;;::::1;::::0;;;;;-1:-1:-1;;4072:29:11;;;;;-1:-1:-1;;;;;;4072:29:11::1;::::0;;;;;;;;-1:-1:-1;;;;;4123:51:11;::::1;::::0;;:23;:51;;;;;4116:58;;;4123:51;4072:29:::1;4116:58:::0;::::1;4072:29:::0;4116:58:::1;::::0;4072:29;4116:58:::1;:::i;:::-;;;;;3766:420;1658:1:56;3490:703:11::0;;;:::o;813:104:57:-;882:5;;-1:-1:-1;;;;;882:5:57;868:10;:19;860:49;;;;;-1:-1:-1;;;860:49:57;;;;;;;;;;;;-1:-1:-1;;;860:49:57;;;;;;;;;;;;;;;813:104::o;1722:139:56:-;1807:24;1817:13;1807:9;:24::i;:::-;-1:-1:-1;;;;;1793:38:56;:10;-1:-1:-1;;;;;1793:38:56;;1785:68;;;;;-1:-1:-1;;;1785:68:56;;;;;;;;;;;;-1:-1:-1;;;1785:68:56;;;;;;;;;;;;;;;1722:139;:::o;9903:304:11:-;9980:6;594:23:64;608:8;594:13;:23::i;:::-;-1:-1:-1;;;;;10019:20:11;::::1;9999:17;10019:20:::0;;;:12:::1;::::0;::::1;:20;::::0;;;;10059:10;;::::1;;10058:11;10050:40;;;::::0;;-1:-1:-1;;;10050:40:11;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;10050:40:11;;;;;;;;;;;;;::::1;;10116:19:::0;;10103:10:::1;::::0;;::::1;:32:::0;;;10146:25;;::::1;::::0;;-1:-1:-1;10146:25:11;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;;;;10146:25:11::1;-1:-1:-1::0;;;;;10146:25:11;;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;10182:17:11;;-1:-1:-1;;10182:17:11::1;::::0;;::::1;::::0;;9903:304::o;4077:133:56:-;4169:8;;:33;;;-1:-1:-1;;;4169:33:56;;;;;;;;;;4142:7;;-1:-1:-1;;;;;4169:8:56;;:18;;:33;;;;;;;;;;;;;;:8;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4169:33:56;;4077:133;-1:-1:-1;;4077:133:56:o;10365:434:11:-;10445:6;594:23:64;608:8;594:13;:23::i;:::-;-1:-1:-1;;;;;10484:20:11;::::1;10464:17;10484:20:::0;;;:12:::1;::::0;::::1;:20;::::0;;;;10523:10;;::::1;;10515:39;;;::::0;;-1:-1:-1;;;10515:39:11;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;10515:39:11;;;;;;;;;;;;;::::1;;10600:19:::0;;10567:17:::1;::::0;10587:6;;-1:-1:-1;;10600:23:11;;;10587:37;::::1;;;;;;::::0;;;::::1;::::0;;;;;::::1;::::0;;10667:10;;::::1;::::0;-1:-1:-1;;;;;10587:37:11;;::::1;10635:23:::0;;;:12;;::::1;:23:::0;;;;;;;:29;;::::1;:42:::0;;;10688:24;;10587:37;;-1:-1:-1;10587:37:11;;10635:6;;10688:24;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;:36:::0;;-1:-1:-1;;;;;;10688:36:11::1;-1:-1:-1::0;;;;;10688:36:11;;;::::1;::::0;;;::::1;::::0;;10735:18;;;;;::::1;;;;;::::0;;;::::1;::::0;;;;;-1:-1:-1;;10735:18:11;;;;;-1:-1:-1;;;;;;10735:18:11::1;::::0;;;;;;;;-1:-1:-1;;;;;10771:20:11;;;::::1;::::0;;10735:18:::1;10771:12:::0;;::::1;:20:::0;;;-1:-1:-1;;10771:20:11;;;10764:27;;-1:-1:-1;;10764:27:11::1;::::0;;;;::::1;::::0;-1:-1:-1;10365:434:11:o;692:128:64:-;-1:-1:-1;;;;;766:22:64;;758:54;;;;;-1:-1:-1;;;758:54:64;;;;;;;;;;;;-1:-1:-1;;;758:54:64;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", "source": "// SPDX-License-Identifier: SEE LICENSE IN LICENSE\r\npragma solidity 0.6.12;\r\nimport \"../utility/ContractRegistryClient.sol\";\r\nimport \"./interfaces/IConverterRegistryData.sol\";\r\n\r\n/**\r\n * @dev The ConverterRegistryData contract is an integral part of the converter registry\r\n * as it serves as the database contract that holds all registry data.\r\n *\r\n * The registry is separated into two different contracts for upgradability - the data contract\r\n * is harder to upgrade as it requires migrating all registry data into a new contract, while\r\n * the registry contract itself can be easily upgraded.\r\n *\r\n * For that same reason, the data contract is simple and contains no logic beyond the basic data\r\n * access utilities that it exposes.\r\n*/\r\ncontract ConverterRegistryData is IConverterRegistryData, ContractRegistryClient {\r\n struct Item {\r\n bool valid;\r\n uint256 index;\r\n }\r\n\r\n struct Items {\r\n address[] array;\r\n mapping(address => Item) table;\r\n }\r\n\r\n struct List {\r\n uint256 index;\r\n Items items;\r\n }\r\n\r\n struct Lists {\r\n address[] array;\r\n mapping(address => List) table;\r\n }\r\n\r\n Items private smartTokens;\r\n Items private liquidityPools;\r\n Lists private convertibleTokens;\r\n\r\n /**\r\n * @dev initializes a new ConverterRegistryData instance\r\n *\r\n * @param _registry address of a contract registry contract\r\n */\r\n constructor(IContractRegistry _registry) ContractRegistryClient(_registry) public {\r\n }\r\n\r\n /**\r\n * @dev adds a smart token\r\n *\r\n * @param _anchor smart token\r\n */\r\n function addSmartToken(IConverterAnchor _anchor) external override only(CONVERTER_REGISTRY) {\r\n addItem(smartTokens, address(_anchor));\r\n }\r\n\r\n /**\r\n * @dev removes a smart token\r\n *\r\n * @param _anchor smart token\r\n */\r\n function removeSmartToken(IConverterAnchor _anchor) external override only(CONVERTER_REGISTRY) {\r\n removeItem(smartTokens, address(_anchor));\r\n }\r\n\r\n /**\r\n * @dev adds a liquidity pool\r\n *\r\n * @param _liquidityPoolAnchor liquidity pool\r\n */\r\n function addLiquidityPool(IConverterAnchor _liquidityPoolAnchor) external override only(CONVERTER_REGISTRY) {\r\n addItem(liquidityPools, address(_liquidityPoolAnchor));\r\n }\r\n\r\n /**\r\n * @dev removes a liquidity pool\r\n *\r\n * @param _liquidityPoolAnchor liquidity pool\r\n */\r\n function removeLiquidityPool(IConverterAnchor _liquidityPoolAnchor) external override only(CONVERTER_REGISTRY) {\r\n removeItem(liquidityPools, address(_liquidityPoolAnchor));\r\n }\r\n\r\n /**\r\n * @dev adds a convertible token\r\n *\r\n * @param _convertibleToken convertible token\r\n * @param _anchor associated smart token\r\n */\r\n function addConvertibleToken(IERC20Token _convertibleToken, IConverterAnchor _anchor) external override only(CONVERTER_REGISTRY) {\r\n List storage list = convertibleTokens.table[address(_convertibleToken)];\r\n if (list.items.array.length == 0) {\r\n list.index = convertibleTokens.array.length;\r\n convertibleTokens.array.push(address(_convertibleToken));\r\n }\r\n addItem(list.items, address(_anchor));\r\n }\r\n\r\n /**\r\n * @dev removes a convertible token\r\n *\r\n * @param _convertibleToken convertible token\r\n * @param _anchor associated smart token\r\n */\r\n function removeConvertibleToken(IERC20Token _convertibleToken, IConverterAnchor _anchor) external override only(CONVERTER_REGISTRY) {\r\n List storage list = convertibleTokens.table[address(_convertibleToken)];\r\n removeItem(list.items, address(_anchor));\r\n if (list.items.array.length == 0) {\r\n address lastConvertibleToken = convertibleTokens.array[convertibleTokens.array.length - 1];\r\n convertibleTokens.table[lastConvertibleToken].index = list.index;\r\n convertibleTokens.array[list.index] = lastConvertibleToken;\r\n convertibleTokens.array.pop();\r\n delete convertibleTokens.table[address(_convertibleToken)];\r\n }\r\n }\r\n\r\n /**\r\n * @dev returns the number of smart tokens\r\n *\r\n * @return number of smart tokens\r\n */\r\n function getSmartTokenCount() external view override returns (uint256) {\r\n return smartTokens.array.length;\r\n }\r\n\r\n /**\r\n * @dev returns the list of smart tokens\r\n *\r\n * @return list of smart tokens\r\n */\r\n function getSmartTokens() external view override returns (address[] memory) {\r\n return smartTokens.array;\r\n }\r\n\r\n /**\r\n * @dev returns the smart token at a given index\r\n *\r\n * @param _index index\r\n * @return smart token at the given index\r\n */\r\n function getSmartToken(uint256 _index) external view override returns (IConverterAnchor) {\r\n return IConverterAnchor(smartTokens.array[_index]);\r\n }\r\n\r\n /**\r\n * @dev checks whether or not a given value is a smart token\r\n *\r\n * @param _value value\r\n * @return true if the given value is a smart token, false if not\r\n */\r\n function isSmartToken(address _value) external view override returns (bool) {\r\n return smartTokens.table[_value].valid;\r\n }\r\n\r\n /**\r\n * @dev returns the number of liquidity pools\r\n *\r\n * @return number of liquidity pools\r\n */\r\n function getLiquidityPoolCount() external view override returns (uint256) {\r\n return liquidityPools.array.length;\r\n }\r\n\r\n /**\r\n * @dev returns the list of liquidity pools\r\n *\r\n * @return list of liquidity pools\r\n */\r\n function getLiquidityPools() external view override returns (address[] memory) {\r\n return liquidityPools.array;\r\n }\r\n\r\n /**\r\n * @dev returns the liquidity pool at a given index\r\n *\r\n * @param _index index\r\n * @return liquidity pool at the given index\r\n */\r\n function getLiquidityPool(uint256 _index) external view override returns (IConverterAnchor) {\r\n return IConverterAnchor(liquidityPools.array[_index]);\r\n }\r\n\r\n /**\r\n * @dev checks whether or not a given value is a liquidity pool\r\n *\r\n * @param _value value\r\n * @return true if the given value is a liquidity pool, false if not\r\n */\r\n function isLiquidityPool(address _value) external view override returns (bool) {\r\n return liquidityPools.table[_value].valid;\r\n }\r\n\r\n /**\r\n * @dev returns the number of convertible tokens\r\n *\r\n * @return number of convertible tokens\r\n */\r\n function getConvertibleTokenCount() external view override returns (uint256) {\r\n return convertibleTokens.array.length;\r\n }\r\n\r\n /**\r\n * @dev returns the list of convertible tokens\r\n *\r\n * @return list of convertible tokens\r\n */\r\n function getConvertibleTokens() external view override returns (address[] memory) {\r\n return convertibleTokens.array;\r\n }\r\n\r\n /**\r\n * @dev returns the convertible token at a given index\r\n *\r\n * @param _index index\r\n * @return convertible token at the given index\r\n */\r\n function getConvertibleToken(uint256 _index) external view override returns (IERC20Token) {\r\n return IERC20Token(convertibleTokens.array[_index]);\r\n }\r\n\r\n /**\r\n * @dev checks whether or not a given value is a convertible token\r\n *\r\n * @param _value value\r\n * @return true if the given value is a convertible token, false if not\r\n */\r\n function isConvertibleToken(address _value) external view override returns (bool) {\r\n return convertibleTokens.table[_value].items.array.length > 0;\r\n }\r\n\r\n /**\r\n * @dev returns the number of smart tokens associated with a given convertible token\r\n *\r\n * @param _convertibleToken convertible token\r\n * @return number of smart tokens associated with the given convertible token\r\n */\r\n function getConvertibleTokenSmartTokenCount(IERC20Token _convertibleToken) external view override returns (uint256) {\r\n return convertibleTokens.table[address(_convertibleToken)].items.array.length;\r\n }\r\n\r\n /**\r\n * @dev returns the list of smart tokens associated with a given convertible token\r\n *\r\n * @param _convertibleToken convertible token\r\n * @return list of smart tokens associated with the given convertible token\r\n */\r\n function getConvertibleTokenSmartTokens(IERC20Token _convertibleToken) external view override returns (address[] memory) {\r\n return convertibleTokens.table[address(_convertibleToken)].items.array;\r\n }\r\n\r\n /**\r\n * @dev returns the smart token associated with a given convertible token at a given index\r\n *\r\n * @param _index index\r\n * @return smart token associated with the given convertible token at the given index\r\n */\r\n function getConvertibleTokenSmartToken(IERC20Token _convertibleToken, uint256 _index) external view override returns (IConverterAnchor) {\r\n return IConverterAnchor(convertibleTokens.table[address(_convertibleToken)].items.array[_index]);\r\n }\r\n\r\n /**\r\n * @dev checks whether or not a given value is a smart token of a given convertible token\r\n *\r\n * @param _convertibleToken convertible token\r\n * @param _value value\r\n * @return true if the given value is a smart token of the given convertible token, false it not\r\n */\r\n function isConvertibleTokenSmartToken(IERC20Token _convertibleToken, address _value) external view override returns (bool) {\r\n return convertibleTokens.table[address(_convertibleToken)].items.table[_value].valid;\r\n }\r\n\r\n /**\r\n * @dev adds an item to a list of items\r\n *\r\n * @param _items list of items\r\n * @param _value item's value\r\n */\r\n function addItem(Items storage _items, address _value) internal validAddress(_value) {\r\n Item storage item = _items.table[_value];\r\n require(!item.valid, \"ERR_INVALID_ITEM\");\r\n\r\n item.index = _items.array.length;\r\n _items.array.push(_value);\r\n item.valid = true;\r\n }\r\n\r\n /**\r\n * @dev removes an item from a list of items\r\n *\r\n * @param _items list of items\r\n * @param _value item's value\r\n */\r\n function removeItem(Items storage _items, address _value) internal validAddress(_value) {\r\n Item storage item = _items.table[_value];\r\n require(item.valid, \"ERR_INVALID_ITEM\");\r\n\r\n address lastValue = _items.array[_items.array.length - 1];\r\n _items.table[lastValue].index = item.index;\r\n _items.array[item.index] = lastValue;\r\n _items.array.pop();\r\n delete _items.table[_value];\r\n }\r\n}\r\n", "sourcePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/ConverterRegistryData.sol", "ast": { "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/ConverterRegistryData.sol", "exportedSymbols": { "ConverterRegistryData": [ 12324 ] }, "id": 12325, "license": "SEE LICENSE IN LICENSE", "nodeType": "SourceUnit", "nodes": [ { "id": 11669, "literals": [ "solidity", "0.6", ".12" ], "nodeType": "PragmaDirective", "src": "52:23:11" }, { "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/ContractRegistryClient.sol", "file": "../utility/ContractRegistryClient.sol", "id": 11670, "nodeType": "ImportDirective", "scope": 12325, "sourceUnit": 21720, "src": "77:47:11", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/interfaces/IConverterRegistryData.sol", "file": "./interfaces/IConverterRegistryData.sol", "id": 11671, "nodeType": "ImportDirective", "scope": 12325, "sourceUnit": 13648, "src": "126:49:11", "symbolAliases": [], "unitAlias": "" }, { "abstract": false, "baseContracts": [ { "arguments": null, "baseName": { "contractScope": null, "id": 11673, "name": "IConverterRegistryData", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 13647, "src": "786:22:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IConverterRegistryData_$13647", "typeString": "contract IConverterRegistryData" } }, "id": 11674, "nodeType": "InheritanceSpecifier", "src": "786:22:11" }, { "arguments": null, "baseName": { "contractScope": null, "id": 11675, "name": "ContractRegistryClient", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 21719, "src": "810:22:11", "typeDescriptions": { "typeIdentifier": "t_contract$_ContractRegistryClient_$21719", "typeString": "contract ContractRegistryClient" } }, "id": 11676, "nodeType": "InheritanceSpecifier", "src": "810:22:11" } ], "contractDependencies": [ 13647, 21719, 21818, 22661, 22847 ], "contractKind": "contract", "documentation": { "id": 11672, "nodeType": "StructuredDocumentation", "src": "179:571:11", "text": " @dev The ConverterRegistryData contract is an integral part of the converter registry\n as it serves as the database contract that holds all registry data.\n The registry is separated into two different contracts for upgradability - the data contract\n is harder to upgrade as it requires migrating all registry data into a new contract, while\n the registry contract itself can be easily upgraded.\n For that same reason, the data contract is simple and contains no logic beyond the basic data\n access utilities that it exposes." }, "fullyImplemented": true, "id": 12324, "linearizedBaseContracts": [ 12324, 21719, 22661, 21818, 22847, 13647 ], "name": "ConverterRegistryData", "nodeType": "ContractDefinition", "nodes": [ { "canonicalName": "ConverterRegistryData.Item", "id": 11681, "members": [ { "constant": false, "id": 11678, "mutability": "mutable", "name": "valid", "nodeType": "VariableDeclaration", "overrides": null, "scope": 11681, "src": "863:10:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 11677, "name": "bool", "nodeType": "ElementaryTypeName", "src": "863:4:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 11680, "mutability": "mutable", "name": "index", "nodeType": "VariableDeclaration", "overrides": null, "scope": 11681, "src": "884:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 11679, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "884:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "name": "Item", "nodeType": "StructDefinition", "scope": 12324, "src": "840:65:11", "visibility": "public" }, { "canonicalName": "ConverterRegistryData.Items", "id": 11689, "members": [ { "constant": false, "id": 11684, "mutability": "mutable", "name": "array", "nodeType": "VariableDeclaration", "overrides": null, "scope": 11689, "src": "937:15:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" }, "typeName": { "baseType": { "id": 11682, "name": "address", "nodeType": "ElementaryTypeName", "src": "937:7:11", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 11683, "length": null, "nodeType": "ArrayTypeName", "src": "937:9:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 11688, "mutability": "mutable", "name": "table", "nodeType": "VariableDeclaration", "overrides": null, "scope": 11689, "src": "963:30:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Item_$11681_storage_$", "typeString": "mapping(address => struct ConverterRegistryData.Item)" }, "typeName": { "id": 11687, "keyType": { "id": 11685, "name": "address", "nodeType": "ElementaryTypeName", "src": "971:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "963:24:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Item_$11681_storage_$", "typeString": "mapping(address => struct ConverterRegistryData.Item)" }, "valueType": { "contractScope": null, "id": 11686, "name": "Item", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11681, "src": "982:4:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Item_$11681_storage_ptr", "typeString": "struct ConverterRegistryData.Item" } } }, "value": null, "visibility": "internal" } ], "name": "Items", "nodeType": "StructDefinition", "scope": 12324, "src": "913:88:11", "visibility": "public" }, { "canonicalName": "ConverterRegistryData.List", "id": 11694, "members": [ { "constant": false, "id": 11691, "mutability": "mutable", "name": "index", "nodeType": "VariableDeclaration", "overrides": null, "scope": 11694, "src": "1032:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 11690, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1032:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 11693, "mutability": "mutable", "name": "items", "nodeType": "VariableDeclaration", "overrides": null, "scope": 11694, "src": "1056:11:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage_ptr", "typeString": "struct ConverterRegistryData.Items" }, "typeName": { "contractScope": null, "id": 11692, "name": "Items", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11689, "src": "1056:5:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage_ptr", "typeString": "struct ConverterRegistryData.Items" } }, "value": null, "visibility": "internal" } ], "name": "List", "nodeType": "StructDefinition", "scope": 12324, "src": "1009:66:11", "visibility": "public" }, { "canonicalName": "ConverterRegistryData.Lists", "id": 11702, "members": [ { "constant": false, "id": 11697, "mutability": "mutable", "name": "array", "nodeType": "VariableDeclaration", "overrides": null, "scope": 11702, "src": "1107:15:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" }, "typeName": { "baseType": { "id": 11695, "name": "address", "nodeType": "ElementaryTypeName", "src": "1107:7:11", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 11696, "length": null, "nodeType": "ArrayTypeName", "src": "1107:9:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 11701, "mutability": "mutable", "name": "table", "nodeType": "VariableDeclaration", "overrides": null, "scope": 11702, "src": "1133:30:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_List_$11694_storage_$", "typeString": "mapping(address => struct ConverterRegistryData.List)" }, "typeName": { "id": 11700, "keyType": { "id": 11698, "name": "address", "nodeType": "ElementaryTypeName", "src": "1141:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "1133:24:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_List_$11694_storage_$", "typeString": "mapping(address => struct ConverterRegistryData.List)" }, "valueType": { "contractScope": null, "id": 11699, "name": "List", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11694, "src": "1152:4:11", "typeDescriptions": { "typeIdentifier": "t_struct$_List_$11694_storage_ptr", "typeString": "struct ConverterRegistryData.List" } } }, "value": null, "visibility": "internal" } ], "name": "Lists", "nodeType": "StructDefinition", "scope": 12324, "src": "1083:88:11", "visibility": "public" }, { "constant": false, "id": 11704, "mutability": "mutable", "name": "smartTokens", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12324, "src": "1179:25:11", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage", "typeString": "struct ConverterRegistryData.Items" }, "typeName": { "contractScope": null, "id": 11703, "name": "Items", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11689, "src": "1179:5:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage_ptr", "typeString": "struct ConverterRegistryData.Items" } }, "value": null, "visibility": "private" }, { "constant": false, "id": 11706, "mutability": "mutable", "name": "liquidityPools", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12324, "src": "1211:28:11", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage", "typeString": "struct ConverterRegistryData.Items" }, "typeName": { "contractScope": null, "id": 11705, "name": "Items", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11689, "src": "1211:5:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage_ptr", "typeString": "struct ConverterRegistryData.Items" } }, "value": null, "visibility": "private" }, { "constant": false, "id": 11708, "mutability": "mutable", "name": "convertibleTokens", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12324, "src": "1246:31:11", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_struct$_Lists_$11702_storage", "typeString": "struct ConverterRegistryData.Lists" }, "typeName": { "contractScope": null, "id": 11707, "name": "Lists", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11702, "src": "1246:5:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Lists_$11702_storage_ptr", "typeString": "struct ConverterRegistryData.Lists" } }, "value": null, "visibility": "private" }, { "body": { "id": 11717, "nodeType": "Block", "src": "1523:8:11", "statements": [] }, "documentation": { "id": 11709, "nodeType": "StructuredDocumentation", "src": "1286:149:11", "text": " @dev initializes a new ConverterRegistryData instance\n @param _registry address of a contract registry contract" }, "id": 11718, "implemented": true, "kind": "constructor", "modifiers": [ { "arguments": [ { "argumentTypes": null, "id": 11714, "name": "_registry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11711, "src": "1505:9:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } } ], "id": 11715, "modifierName": { "argumentTypes": null, "id": 11713, "name": "ContractRegistryClient", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21719, "src": "1482:22:11", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_ContractRegistryClient_$21719_$", "typeString": "type(contract ContractRegistryClient)" } }, "nodeType": "ModifierInvocation", "src": "1482:33:11" } ], "name": "", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 11712, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 11711, "mutability": "mutable", "name": "_registry", "nodeType": "VariableDeclaration", "overrides": null, "scope": 11718, "src": "1453:27:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" }, "typeName": { "contractScope": null, "id": 11710, "name": "IContractRegistry", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 22831, "src": "1453:17:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } }, "value": null, "visibility": "internal" } ], "src": "1452:29:11" }, "returnParameters": { "id": 11716, "nodeType": "ParameterList", "parameters": [], "src": "1523:0:11" }, "scope": 12324, "src": "1441:90:11", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "baseFunctions": [ 13509 ], "body": { "id": 11736, "nodeType": "Block", "src": "1726:57:11", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 11729, "name": "smartTokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11704, "src": "1745:11:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage", "typeString": "struct ConverterRegistryData.Items storage ref" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 11732, "name": "_anchor", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11721, "src": "1766:7:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" } ], "id": 11731, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1758:7:11", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 11730, "name": "address", "nodeType": "ElementaryTypeName", "src": "1758:7:11", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 11733, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1758:16:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_struct$_Items_$11689_storage", "typeString": "struct ConverterRegistryData.Items storage ref" }, { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 11728, "name": "addItem", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12255, "src": "1737:7:11", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Items_$11689_storage_ptr_$_t_address_$returns$__$", "typeString": "function (struct ConverterRegistryData.Items storage pointer,address)" } }, "id": 11734, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1737:38:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 11735, "nodeType": "ExpressionStatement", "src": "1737:38:11" } ] }, "documentation": { "id": 11719, "nodeType": "StructuredDocumentation", "src": "1539:89:11", "text": " @dev adds a smart token\n @param _anchor smart token" }, "functionSelector": "8de6c3eb", "id": 11737, "implemented": true, "kind": "function", "modifiers": [ { "arguments": [ { "argumentTypes": null, "id": 11725, "name": "CONVERTER_REGISTRY", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21545, "src": "1706:18:11", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], "id": 11726, "modifierName": { "argumentTypes": null, "id": 11724, "name": "only", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21577, "src": "1701:4:11", "typeDescriptions": { "typeIdentifier": "t_modifier$_t_bytes32_$", "typeString": "modifier (bytes32)" } }, "nodeType": "ModifierInvocation", "src": "1701:24:11" } ], "name": "addSmartToken", "nodeType": "FunctionDefinition", "overrides": { "id": 11723, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1692:8:11" }, "parameters": { "id": 11722, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 11721, "mutability": "mutable", "name": "_anchor", "nodeType": "VariableDeclaration", "overrides": null, "scope": 11737, "src": "1657:24:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" }, "typeName": { "contractScope": null, "id": 11720, "name": "IConverterAnchor", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 13349, "src": "1657:16:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" } }, "value": null, "visibility": "internal" } ], "src": "1656:26:11" }, "returnParameters": { "id": 11727, "nodeType": "ParameterList", "parameters": [], "src": "1726:0:11" }, "scope": 12324, "src": "1634:149:11", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "baseFunctions": [ 13514 ], "body": { "id": 11755, "nodeType": "Block", "src": "1984:60:11", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 11748, "name": "smartTokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11704, "src": "2006:11:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage", "typeString": "struct ConverterRegistryData.Items storage ref" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 11751, "name": "_anchor", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11740, "src": "2027:7:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" } ], "id": 11750, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2019:7:11", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 11749, "name": "address", "nodeType": "ElementaryTypeName", "src": "2019:7:11", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 11752, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2019:16:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_struct$_Items_$11689_storage", "typeString": "struct ConverterRegistryData.Items storage ref" }, { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 11747, "name": "removeItem", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12323, "src": "1995:10:11", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Items_$11689_storage_ptr_$_t_address_$returns$__$", "typeString": "function (struct ConverterRegistryData.Items storage pointer,address)" } }, "id": 11753, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1995:41:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 11754, "nodeType": "ExpressionStatement", "src": "1995:41:11" } ] }, "documentation": { "id": 11738, "nodeType": "StructuredDocumentation", "src": "1791:92:11", "text": " @dev removes a smart token\n @param _anchor smart token" }, "functionSelector": "ceb9838c", "id": 11756, "implemented": true, "kind": "function", "modifiers": [ { "arguments": [ { "argumentTypes": null, "id": 11744, "name": "CONVERTER_REGISTRY", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21545, "src": "1964:18:11", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], "id": 11745, "modifierName": { "argumentTypes": null, "id": 11743, "name": "only", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21577, "src": "1959:4:11", "typeDescriptions": { "typeIdentifier": "t_modifier$_t_bytes32_$", "typeString": "modifier (bytes32)" } }, "nodeType": "ModifierInvocation", "src": "1959:24:11" } ], "name": "removeSmartToken", "nodeType": "FunctionDefinition", "overrides": { "id": 11742, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1950:8:11" }, "parameters": { "id": 11741, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 11740, "mutability": "mutable", "name": "_anchor", "nodeType": "VariableDeclaration", "overrides": null, "scope": 11756, "src": "1915:24:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" }, "typeName": { "contractScope": null, "id": 11739, "name": "IConverterAnchor", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 13349, "src": "1915:16:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" } }, "value": null, "visibility": "internal" } ], "src": "1914:26:11" }, "returnParameters": { "id": 11746, "nodeType": "ParameterList", "parameters": [], "src": "1984:0:11" }, "scope": 12324, "src": "1889:155:11", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "baseFunctions": [ 13519 ], "body": { "id": 11774, "nodeType": "Block", "src": "2274:73:11", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 11767, "name": "liquidityPools", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11706, "src": "2293:14:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage", "typeString": "struct ConverterRegistryData.Items storage ref" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 11770, "name": "_liquidityPoolAnchor", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11759, "src": "2317:20:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" } ], "id": 11769, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2309:7:11", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 11768, "name": "address", "nodeType": "ElementaryTypeName", "src": "2309:7:11", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 11771, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2309:29:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_struct$_Items_$11689_storage", "typeString": "struct ConverterRegistryData.Items storage ref" }, { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 11766, "name": "addItem", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12255, "src": "2285:7:11", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Items_$11689_storage_ptr_$_t_address_$returns$__$", "typeString": "function (struct ConverterRegistryData.Items storage pointer,address)" } }, "id": 11772, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2285:54:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 11773, "nodeType": "ExpressionStatement", "src": "2285:54:11" } ] }, "documentation": { "id": 11757, "nodeType": "StructuredDocumentation", "src": "2052:108:11", "text": " @dev adds a liquidity pool\n @param _liquidityPoolAnchor liquidity pool" }, "functionSelector": "ee6a934c", "id": 11775, "implemented": true, "kind": "function", "modifiers": [ { "arguments": [ { "argumentTypes": null, "id": 11763, "name": "CONVERTER_REGISTRY", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21545, "src": "2254:18:11", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], "id": 11764, "modifierName": { "argumentTypes": null, "id": 11762, "name": "only", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21577, "src": "2249:4:11", "typeDescriptions": { "typeIdentifier": "t_modifier$_t_bytes32_$", "typeString": "modifier (bytes32)" } }, "nodeType": "ModifierInvocation", "src": "2249:24:11" } ], "name": "addLiquidityPool", "nodeType": "FunctionDefinition", "overrides": { "id": 11761, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2240:8:11" }, "parameters": { "id": 11760, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 11759, "mutability": "mutable", "name": "_liquidityPoolAnchor", "nodeType": "VariableDeclaration", "overrides": null, "scope": 11775, "src": "2192:37:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" }, "typeName": { "contractScope": null, "id": 11758, "name": "IConverterAnchor", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 13349, "src": "2192:16:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" } }, "value": null, "visibility": "internal" } ], "src": "2191:39:11" }, "returnParameters": { "id": 11765, "nodeType": "ParameterList", "parameters": [], "src": "2274:0:11" }, "scope": 12324, "src": "2166:181:11", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "baseFunctions": [ 13524 ], "body": { "id": 11793, "nodeType": "Block", "src": "2583:76:11", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 11786, "name": "liquidityPools", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11706, "src": "2605:14:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage", "typeString": "struct ConverterRegistryData.Items storage ref" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 11789, "name": "_liquidityPoolAnchor", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11778, "src": "2629:20:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" } ], "id": 11788, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2621:7:11", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 11787, "name": "address", "nodeType": "ElementaryTypeName", "src": "2621:7:11", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 11790, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2621:29:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_struct$_Items_$11689_storage", "typeString": "struct ConverterRegistryData.Items storage ref" }, { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 11785, "name": "removeItem", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12323, "src": "2594:10:11", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Items_$11689_storage_ptr_$_t_address_$returns$__$", "typeString": "function (struct ConverterRegistryData.Items storage pointer,address)" } }, "id": 11791, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2594:57:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 11792, "nodeType": "ExpressionStatement", "src": "2594:57:11" } ] }, "documentation": { "id": 11776, "nodeType": "StructuredDocumentation", "src": "2355:111:11", "text": " @dev removes a liquidity pool\n @param _liquidityPoolAnchor liquidity pool" }, "functionSelector": "ae22107f", "id": 11794, "implemented": true, "kind": "function", "modifiers": [ { "arguments": [ { "argumentTypes": null, "id": 11782, "name": "CONVERTER_REGISTRY", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21545, "src": "2563:18:11", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], "id": 11783, "modifierName": { "argumentTypes": null, "id": 11781, "name": "only", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21577, "src": "2558:4:11", "typeDescriptions": { "typeIdentifier": "t_modifier$_t_bytes32_$", "typeString": "modifier (bytes32)" } }, "nodeType": "ModifierInvocation", "src": "2558:24:11" } ], "name": "removeLiquidityPool", "nodeType": "FunctionDefinition", "overrides": { "id": 11780, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2549:8:11" }, "parameters": { "id": 11779, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 11778, "mutability": "mutable", "name": "_liquidityPoolAnchor", "nodeType": "VariableDeclaration", "overrides": null, "scope": 11794, "src": "2501:37:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" }, "typeName": { "contractScope": null, "id": 11777, "name": "IConverterAnchor", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 13349, "src": "2501:16:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" } }, "value": null, "visibility": "internal" } ], "src": "2500:39:11" }, "returnParameters": { "id": 11784, "nodeType": "ParameterList", "parameters": [], "src": "2583:0:11" }, "scope": 12324, "src": "2472:187:11", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "baseFunctions": [ 13531 ], "body": { "id": 11852, "nodeType": "Block", "src": "2976:323:11", "statements": [ { "assignments": [ 11807 ], "declarations": [ { "constant": false, "id": 11807, "mutability": "mutable", "name": "list", "nodeType": "VariableDeclaration", "overrides": null, "scope": 11852, "src": "2987:17:11", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { "typeIdentifier": "t_struct$_List_$11694_storage_ptr", "typeString": "struct ConverterRegistryData.List" }, "typeName": { "contractScope": null, "id": 11806, "name": "List", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11694, "src": "2987:4:11", "typeDescriptions": { "typeIdentifier": "t_struct$_List_$11694_storage_ptr", "typeString": "struct ConverterRegistryData.List" } }, "value": null, "visibility": "internal" } ], "id": 11815, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 11808, "name": "convertibleTokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11708, "src": "3007:17:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Lists_$11702_storage", "typeString": "struct ConverterRegistryData.Lists storage ref" } }, "id": 11809, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "table", "nodeType": "MemberAccess", "referencedDeclaration": 11701, "src": "3007:23:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_List_$11694_storage_$", "typeString": "mapping(address => struct ConverterRegistryData.List storage ref)" } }, "id": 11814, "indexExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 11812, "name": "_convertibleToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11797, "src": "3039:17:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" } ], "id": 11811, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3031:7:11", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 11810, "name": "address", "nodeType": "ElementaryTypeName", "src": "3031:7:11", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 11813, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3031:26:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3007:51:11", "typeDescriptions": { "typeIdentifier": "t_struct$_List_$11694_storage", "typeString": "struct ConverterRegistryData.List storage ref" } }, "nodeType": "VariableDeclarationStatement", "src": "2987:71:11" }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 11821, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 11816, "name": "list", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11807, "src": "3073:4:11", "typeDescriptions": { "typeIdentifier": "t_struct$_List_$11694_storage_ptr", "typeString": "struct ConverterRegistryData.List storage pointer" } }, "id": 11817, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "items", "nodeType": "MemberAccess", "referencedDeclaration": 11693, "src": "3073:10:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage", "typeString": "struct ConverterRegistryData.Items storage ref" } }, "id": 11818, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "array", "nodeType": "MemberAccess", "referencedDeclaration": 11684, "src": "3073:16:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 11819, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3073:23:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 11820, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3100:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "3073:28:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 11842, "nodeType": "IfStatement", "src": "3069:175:11", "trueBody": { "id": 11841, "nodeType": "Block", "src": "3103:141:11", "statements": [ { "expression": { "argumentTypes": null, "id": 11828, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 11822, "name": "list", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11807, "src": "3118:4:11", "typeDescriptions": { "typeIdentifier": "t_struct$_List_$11694_storage_ptr", "typeString": "struct ConverterRegistryData.List storage pointer" } }, "id": 11824, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 11691, "src": "3118:10:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 11825, "name": "convertibleTokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11708, "src": "3131:17:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Lists_$11702_storage", "typeString": "struct ConverterRegistryData.Lists storage ref" } }, "id": 11826, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "array", "nodeType": "MemberAccess", "referencedDeclaration": 11697, "src": "3131:23:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 11827, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3131:30:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3118:43:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 11829, "nodeType": "ExpressionStatement", "src": "3118:43:11" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 11837, "name": "_convertibleToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11797, "src": "3213:17:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" } ], "id": 11836, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3205:7:11", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 11835, "name": "address", "nodeType": "ElementaryTypeName", "src": "3205:7:11", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 11838, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3205:26:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 11830, "name": "convertibleTokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11708, "src": "3176:17:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Lists_$11702_storage", "typeString": "struct ConverterRegistryData.Lists storage ref" } }, "id": 11833, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "array", "nodeType": "MemberAccess", "referencedDeclaration": 11697, "src": "3176:23:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 11834, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "push", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3176:28:11", "typeDescriptions": { "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, "id": 11839, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3176:56:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 11840, "nodeType": "ExpressionStatement", "src": "3176:56:11" } ] } }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 11844, "name": "list", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11807, "src": "3262:4:11", "typeDescriptions": { "typeIdentifier": "t_struct$_List_$11694_storage_ptr", "typeString": "struct ConverterRegistryData.List storage pointer" } }, "id": 11845, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "items", "nodeType": "MemberAccess", "referencedDeclaration": 11693, "src": "3262:10:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage", "typeString": "struct ConverterRegistryData.Items storage ref" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 11848, "name": "_anchor", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11799, "src": "3282:7:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" } ], "id": 11847, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3274:7:11", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 11846, "name": "address", "nodeType": "ElementaryTypeName", "src": "3274:7:11", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 11849, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3274:16:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_struct$_Items_$11689_storage", "typeString": "struct ConverterRegistryData.Items storage ref" }, { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 11843, "name": "addItem", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12255, "src": "3254:7:11", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Items_$11689_storage_ptr_$_t_address_$returns$__$", "typeString": "function (struct ConverterRegistryData.Items storage pointer,address)" } }, "id": 11850, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3254:37:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 11851, "nodeType": "ExpressionStatement", "src": "3254:37:11" } ] }, "documentation": { "id": 11795, "nodeType": "StructuredDocumentation", "src": "2667:174:11", "text": " @dev adds a convertible token\n @param _convertibleToken convertible token\n @param _anchor associated smart token" }, "functionSelector": "36900c11", "id": 11853, "implemented": true, "kind": "function", "modifiers": [ { "arguments": [ { "argumentTypes": null, "id": 11803, "name": "CONVERTER_REGISTRY", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21545, "src": "2956:18:11", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], "id": 11804, "modifierName": { "argumentTypes": null, "id": 11802, "name": "only", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21577, "src": "2951:4:11", "typeDescriptions": { "typeIdentifier": "t_modifier$_t_bytes32_$", "typeString": "modifier (bytes32)" } }, "nodeType": "ModifierInvocation", "src": "2951:24:11" } ], "name": "addConvertibleToken", "nodeType": "FunctionDefinition", "overrides": { "id": 11801, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2942:8:11" }, "parameters": { "id": 11800, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 11797, "mutability": "mutable", "name": "_convertibleToken", "nodeType": "VariableDeclaration", "overrides": null, "scope": 11853, "src": "2876:29:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" }, "typeName": { "contractScope": null, "id": 11796, "name": "IERC20Token", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 21127, "src": "2876:11:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 11799, "mutability": "mutable", "name": "_anchor", "nodeType": "VariableDeclaration", "overrides": null, "scope": 11853, "src": "2907:24:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" }, "typeName": { "contractScope": null, "id": 11798, "name": "IConverterAnchor", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 13349, "src": "2907:16:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" } }, "value": null, "visibility": "internal" } ], "src": "2875:57:11" }, "returnParameters": { "id": 11805, "nodeType": "ParameterList", "parameters": [], "src": "2976:0:11" }, "scope": 12324, "src": "2847:452:11", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "baseFunctions": [ 13538 ], "body": { "id": 11938, "nodeType": "Block", "src": "3622:571:11", "statements": [ { "assignments": [ 11866 ], "declarations": [ { "constant": false, "id": 11866, "mutability": "mutable", "name": "list", "nodeType": "VariableDeclaration", "overrides": null, "scope": 11938, "src": "3633:17:11", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { "typeIdentifier": "t_struct$_List_$11694_storage_ptr", "typeString": "struct ConverterRegistryData.List" }, "typeName": { "contractScope": null, "id": 11865, "name": "List", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11694, "src": "3633:4:11", "typeDescriptions": { "typeIdentifier": "t_struct$_List_$11694_storage_ptr", "typeString": "struct ConverterRegistryData.List" } }, "value": null, "visibility": "internal" } ], "id": 11874, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 11867, "name": "convertibleTokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11708, "src": "3653:17:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Lists_$11702_storage", "typeString": "struct ConverterRegistryData.Lists storage ref" } }, "id": 11868, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "table", "nodeType": "MemberAccess", "referencedDeclaration": 11701, "src": "3653:23:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_List_$11694_storage_$", "typeString": "mapping(address => struct ConverterRegistryData.List storage ref)" } }, "id": 11873, "indexExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 11871, "name": "_convertibleToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11856, "src": "3685:17:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" } ], "id": 11870, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3677:7:11", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 11869, "name": "address", "nodeType": "ElementaryTypeName", "src": "3677:7:11", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 11872, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3677:26:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3653:51:11", "typeDescriptions": { "typeIdentifier": "t_struct$_List_$11694_storage", "typeString": "struct ConverterRegistryData.List storage ref" } }, "nodeType": "VariableDeclarationStatement", "src": "3633:71:11" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 11876, "name": "list", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11866, "src": "3726:4:11", "typeDescriptions": { "typeIdentifier": "t_struct$_List_$11694_storage_ptr", "typeString": "struct ConverterRegistryData.List storage pointer" } }, "id": 11877, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "items", "nodeType": "MemberAccess", "referencedDeclaration": 11693, "src": "3726:10:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage", "typeString": "struct ConverterRegistryData.Items storage ref" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 11880, "name": "_anchor", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11858, "src": "3746:7:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" } ], "id": 11879, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3738:7:11", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 11878, "name": "address", "nodeType": "ElementaryTypeName", "src": "3738:7:11", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 11881, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3738:16:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_struct$_Items_$11689_storage", "typeString": "struct ConverterRegistryData.Items storage ref" }, { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 11875, "name": "removeItem", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12323, "src": "3715:10:11", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Items_$11689_storage_ptr_$_t_address_$returns$__$", "typeString": "function (struct ConverterRegistryData.Items storage pointer,address)" } }, "id": 11882, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3715:40:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 11883, "nodeType": "ExpressionStatement", "src": "3715:40:11" }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 11889, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 11884, "name": "list", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11866, "src": "3770:4:11", "typeDescriptions": { "typeIdentifier": "t_struct$_List_$11694_storage_ptr", "typeString": "struct ConverterRegistryData.List storage pointer" } }, "id": 11885, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "items", "nodeType": "MemberAccess", "referencedDeclaration": 11693, "src": "3770:10:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage", "typeString": "struct ConverterRegistryData.Items storage ref" } }, "id": 11886, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "array", "nodeType": "MemberAccess", "referencedDeclaration": 11684, "src": "3770:16:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 11887, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3770:23:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 11888, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3797:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "3770:28:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 11937, "nodeType": "IfStatement", "src": "3766:420:11", "trueBody": { "id": 11936, "nodeType": "Block", "src": "3800:386:11", "statements": [ { "assignments": [ 11891 ], "declarations": [ { "constant": false, "id": 11891, "mutability": "mutable", "name": "lastConvertibleToken", "nodeType": "VariableDeclaration", "overrides": null, "scope": 11936, "src": "3815:28:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 11890, "name": "address", "nodeType": "ElementaryTypeName", "src": "3815:7:11", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 11900, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 11892, "name": "convertibleTokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11708, "src": "3846:17:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Lists_$11702_storage", "typeString": "struct ConverterRegistryData.Lists storage ref" } }, "id": 11893, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "array", "nodeType": "MemberAccess", "referencedDeclaration": 11697, "src": "3846:23:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 11899, "indexExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 11898, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 11894, "name": "convertibleTokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11708, "src": "3870:17:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Lists_$11702_storage", "typeString": "struct ConverterRegistryData.Lists storage ref" } }, "id": 11895, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "array", "nodeType": "MemberAccess", "referencedDeclaration": 11697, "src": "3870:23:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 11896, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3870:30:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "argumentTypes": null, "hexValue": "31", "id": 11897, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3903:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "3870:34:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3846:59:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "3815:90:11" }, { "expression": { "argumentTypes": null, "id": 11909, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 11901, "name": "convertibleTokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11708, "src": "3920:17:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Lists_$11702_storage", "typeString": "struct ConverterRegistryData.Lists storage ref" } }, "id": 11904, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "table", "nodeType": "MemberAccess", "referencedDeclaration": 11701, "src": "3920:23:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_List_$11694_storage_$", "typeString": "mapping(address => struct ConverterRegistryData.List storage ref)" } }, "id": 11905, "indexExpression": { "argumentTypes": null, "id": 11903, "name": "lastConvertibleToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11891, "src": "3944:20:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3920:45:11", "typeDescriptions": { "typeIdentifier": "t_struct$_List_$11694_storage", "typeString": "struct ConverterRegistryData.List storage ref" } }, "id": 11906, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 11691, "src": "3920:51:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 11907, "name": "list", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11866, "src": "3974:4:11", "typeDescriptions": { "typeIdentifier": "t_struct$_List_$11694_storage_ptr", "typeString": "struct ConverterRegistryData.List storage pointer" } }, "id": 11908, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 11691, "src": "3974:10:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3920:64:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 11910, "nodeType": "ExpressionStatement", "src": "3920:64:11" }, { "expression": { "argumentTypes": null, "id": 11918, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 11911, "name": "convertibleTokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11708, "src": "3999:17:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Lists_$11702_storage", "typeString": "struct ConverterRegistryData.Lists storage ref" } }, "id": 11915, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "array", "nodeType": "MemberAccess", "referencedDeclaration": 11697, "src": "3999:23:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 11916, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 11913, "name": "list", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11866, "src": "4023:4:11", "typeDescriptions": { "typeIdentifier": "t_struct$_List_$11694_storage_ptr", "typeString": "struct ConverterRegistryData.List storage pointer" } }, "id": 11914, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 11691, "src": "4023:10:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "3999:35:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 11917, "name": "lastConvertibleToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11891, "src": "4037:20:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "3999:58:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 11919, "nodeType": "ExpressionStatement", "src": "3999:58:11" }, { "expression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 11920, "name": "convertibleTokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11708, "src": "4072:17:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Lists_$11702_storage", "typeString": "struct ConverterRegistryData.Lists storage ref" } }, "id": 11923, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "array", "nodeType": "MemberAccess", "referencedDeclaration": 11697, "src": "4072:23:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 11924, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "pop", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "4072:27:11", "typeDescriptions": { "typeIdentifier": "t_function_arraypop_nonpayable$__$returns$__$", "typeString": "function ()" } }, "id": 11925, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4072:29:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 11926, "nodeType": "ExpressionStatement", "src": "4072:29:11" }, { "expression": { "argumentTypes": null, "id": 11934, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, "src": "4116:58:11", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 11927, "name": "convertibleTokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11708, "src": "4123:17:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Lists_$11702_storage", "typeString": "struct ConverterRegistryData.Lists storage ref" } }, "id": 11928, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "table", "nodeType": "MemberAccess", "referencedDeclaration": 11701, "src": "4123:23:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_List_$11694_storage_$", "typeString": "mapping(address => struct ConverterRegistryData.List storage ref)" } }, "id": 11933, "indexExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 11931, "name": "_convertibleToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11856, "src": "4155:17:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" } ], "id": 11930, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4147:7:11", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 11929, "name": "address", "nodeType": "ElementaryTypeName", "src": "4147:7:11", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 11932, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4147:26:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "4123:51:11", "typeDescriptions": { "typeIdentifier": "t_struct$_List_$11694_storage", "typeString": "struct ConverterRegistryData.List storage ref" } }, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 11935, "nodeType": "ExpressionStatement", "src": "4116:58:11" } ] } } ] }, "documentation": { "id": 11854, "nodeType": "StructuredDocumentation", "src": "3307:177:11", "text": " @dev removes a convertible token\n @param _convertibleToken convertible token\n @param _anchor associated smart token" }, "functionSelector": "fba8f031", "id": 11939, "implemented": true, "kind": "function", "modifiers": [ { "arguments": [ { "argumentTypes": null, "id": 11862, "name": "CONVERTER_REGISTRY", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21545, "src": "3602:18:11", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], "id": 11863, "modifierName": { "argumentTypes": null, "id": 11861, "name": "only", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21577, "src": "3597:4:11", "typeDescriptions": { "typeIdentifier": "t_modifier$_t_bytes32_$", "typeString": "modifier (bytes32)" } }, "nodeType": "ModifierInvocation", "src": "3597:24:11" } ], "name": "removeConvertibleToken", "nodeType": "FunctionDefinition", "overrides": { "id": 11860, "nodeType": "OverrideSpecifier", "overrides": [], "src": "3588:8:11" }, "parameters": { "id": 11859, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 11856, "mutability": "mutable", "name": "_convertibleToken", "nodeType": "VariableDeclaration", "overrides": null, "scope": 11939, "src": "3522:29:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" }, "typeName": { "contractScope": null, "id": 11855, "name": "IERC20Token", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 21127, "src": "3522:11:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 11858, "mutability": "mutable", "name": "_anchor", "nodeType": "VariableDeclaration", "overrides": null, "scope": 11939, "src": "3553:24:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" }, "typeName": { "contractScope": null, "id": 11857, "name": "IConverterAnchor", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 13349, "src": "3553:16:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" } }, "value": null, "visibility": "internal" } ], "src": "3521:57:11" }, "returnParameters": { "id": 11864, "nodeType": "ParameterList", "parameters": [], "src": "3622:0:11" }, "scope": 12324, "src": "3490:703:11", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "baseFunctions": [ 13543 ], "body": { "id": 11950, "nodeType": "Block", "src": "4387:50:11", "statements": [ { "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 11946, "name": "smartTokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11704, "src": "4405:11:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage", "typeString": "struct ConverterRegistryData.Items storage ref" } }, "id": 11947, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "array", "nodeType": "MemberAccess", "referencedDeclaration": 11684, "src": "4405:17:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 11948, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "4405:24:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 11945, "id": 11949, "nodeType": "Return", "src": "4398:31:11" } ] }, "documentation": { "id": 11940, "nodeType": "StructuredDocumentation", "src": "4201:109:11", "text": " @dev returns the number of smart tokens\n @return number of smart tokens" }, "functionSelector": "e571049b", "id": 11951, "implemented": true, "kind": "function", "modifiers": [], "name": "getSmartTokenCount", "nodeType": "FunctionDefinition", "overrides": { "id": 11942, "nodeType": "OverrideSpecifier", "overrides": [], "src": "4360:8:11" }, "parameters": { "id": 11941, "nodeType": "ParameterList", "parameters": [], "src": "4343:2:11" }, "returnParameters": { "id": 11945, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 11944, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 11951, "src": "4378:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 11943, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4378:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "4377:9:11" }, "scope": 12324, "src": "4316:121:11", "stateMutability": "view", "virtual": false, "visibility": "external" }, { "baseFunctions": [ 13549 ], "body": { "id": 11962, "nodeType": "Block", "src": "4632:43:11", "statements": [ { "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 11959, "name": "smartTokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11704, "src": "4650:11:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage", "typeString": "struct ConverterRegistryData.Items storage ref" } }, "id": 11960, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "array", "nodeType": "MemberAccess", "referencedDeclaration": 11684, "src": "4650:17:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "functionReturnParameters": 11958, "id": 11961, "nodeType": "Return", "src": "4643:24:11" } ] }, "documentation": { "id": 11952, "nodeType": "StructuredDocumentation", "src": "4445:105:11", "text": " @dev returns the list of smart tokens\n @return list of smart tokens" }, "functionSelector": "04ceaf41", "id": 11963, "implemented": true, "kind": "function", "modifiers": [], "name": "getSmartTokens", "nodeType": "FunctionDefinition", "overrides": { "id": 11954, "nodeType": "OverrideSpecifier", "overrides": [], "src": "4596:8:11" }, "parameters": { "id": 11953, "nodeType": "ParameterList", "parameters": [], "src": "4579:2:11" }, "returnParameters": { "id": 11958, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 11957, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 11963, "src": "4614:16:11", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]" }, "typeName": { "baseType": { "id": 11955, "name": "address", "nodeType": "ElementaryTypeName", "src": "4614:7:11", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 11956, "length": null, "nodeType": "ArrayTypeName", "src": "4614:9:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } }, "value": null, "visibility": "internal" } ], "src": "4613:18:11" }, "scope": 12324, "src": "4556:119:11", "stateMutability": "view", "virtual": false, "visibility": "external" }, { "baseFunctions": [ 13556 ], "body": { "id": 11979, "nodeType": "Block", "src": "4930:69:11", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 11973, "name": "smartTokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11704, "src": "4965:11:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage", "typeString": "struct ConverterRegistryData.Items storage ref" } }, "id": 11974, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "array", "nodeType": "MemberAccess", "referencedDeclaration": 11684, "src": "4965:17:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 11976, "indexExpression": { "argumentTypes": null, "id": 11975, "name": "_index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11966, "src": "4983:6:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4965:25:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 11972, "name": "IConverterAnchor", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 13349, "src": "4948:16:11", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IConverterAnchor_$13349_$", "typeString": "type(contract IConverterAnchor)" } }, "id": 11977, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4948:43:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" } }, "functionReturnParameters": 11971, "id": 11978, "nodeType": "Return", "src": "4941:50:11" } ] }, "documentation": { "id": 11964, "nodeType": "StructuredDocumentation", "src": "4683:152:11", "text": " @dev returns the smart token at a given index\n @param _index index\n @return smart token at the given index" }, "functionSelector": "a109d214", "id": 11980, "implemented": true, "kind": "function", "modifiers": [], "name": "getSmartToken", "nodeType": "FunctionDefinition", "overrides": { "id": 11968, "nodeType": "OverrideSpecifier", "overrides": [], "src": "4894:8:11" }, "parameters": { "id": 11967, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 11966, "mutability": "mutable", "name": "_index", "nodeType": "VariableDeclaration", "overrides": null, "scope": 11980, "src": "4864:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 11965, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4864:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "4863:16:11" }, "returnParameters": { "id": 11971, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 11970, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 11980, "src": "4912:16:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" }, "typeName": { "contractScope": null, "id": 11969, "name": "IConverterAnchor", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 13349, "src": "4912:16:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" } }, "value": null, "visibility": "internal" } ], "src": "4911:18:11" }, "scope": 12324, "src": "4841:158:11", "stateMutability": "view", "virtual": false, "visibility": "external" }, { "baseFunctions": [ 13563 ], "body": { "id": 11995, "nodeType": "Block", "src": "5277:57:11", "statements": [ { "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 11989, "name": "smartTokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11704, "src": "5295:11:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage", "typeString": "struct ConverterRegistryData.Items storage ref" } }, "id": 11990, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "table", "nodeType": "MemberAccess", "referencedDeclaration": 11688, "src": "5295:17:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Item_$11681_storage_$", "typeString": "mapping(address => struct ConverterRegistryData.Item storage ref)" } }, "id": 11992, "indexExpression": { "argumentTypes": null, "id": 11991, "name": "_value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11983, "src": "5313:6:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5295:25:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Item_$11681_storage", "typeString": "struct ConverterRegistryData.Item storage ref" } }, "id": 11993, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "valid", "nodeType": "MemberAccess", "referencedDeclaration": 11678, "src": "5295:31:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "functionReturnParameters": 11988, "id": 11994, "nodeType": "Return", "src": "5288:38:11" } ] }, "documentation": { "id": 11981, "nodeType": "StructuredDocumentation", "src": "5007:188:11", "text": " @dev checks whether or not a given value is a smart token\n @param _value value\n @return true if the given value is a smart token, false if not" }, "functionSelector": "4123ef60", "id": 11996, "implemented": true, "kind": "function", "modifiers": [], "name": "isSmartToken", "nodeType": "FunctionDefinition", "overrides": { "id": 11985, "nodeType": "OverrideSpecifier", "overrides": [], "src": "5253:8:11" }, "parameters": { "id": 11984, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 11983, "mutability": "mutable", "name": "_value", "nodeType": "VariableDeclaration", "overrides": null, "scope": 11996, "src": "5223:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 11982, "name": "address", "nodeType": "ElementaryTypeName", "src": "5223:7:11", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "5222:16:11" }, "returnParameters": { "id": 11988, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 11987, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 11996, "src": "5271:4:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 11986, "name": "bool", "nodeType": "ElementaryTypeName", "src": "5271:4:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "5270:6:11" }, "scope": 12324, "src": "5201:133:11", "stateMutability": "view", "virtual": false, "visibility": "external" }, { "baseFunctions": [ 13568 ], "body": { "id": 12007, "nodeType": "Block", "src": "5537:53:11", "statements": [ { "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 12003, "name": "liquidityPools", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11706, "src": "5555:14:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage", "typeString": "struct ConverterRegistryData.Items storage ref" } }, "id": 12004, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "array", "nodeType": "MemberAccess", "referencedDeclaration": 11684, "src": "5555:20:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 12005, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "5555:27:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 12002, "id": 12006, "nodeType": "Return", "src": "5548:34:11" } ] }, "documentation": { "id": 11997, "nodeType": "StructuredDocumentation", "src": "5342:115:11", "text": " @dev returns the number of liquidity pools\n @return number of liquidity pools" }, "functionSelector": "7a5f0ffd", "id": 12008, "implemented": true, "kind": "function", "modifiers": [], "name": "getLiquidityPoolCount", "nodeType": "FunctionDefinition", "overrides": { "id": 11999, "nodeType": "OverrideSpecifier", "overrides": [], "src": "5510:8:11" }, "parameters": { "id": 11998, "nodeType": "ParameterList", "parameters": [], "src": "5493:2:11" }, "returnParameters": { "id": 12002, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 12001, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12008, "src": "5528:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 12000, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5528:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "5527:9:11" }, "scope": 12324, "src": "5463:127:11", "stateMutability": "view", "virtual": false, "visibility": "external" }, { "baseFunctions": [ 13574 ], "body": { "id": 12019, "nodeType": "Block", "src": "5794:46:11", "statements": [ { "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 12016, "name": "liquidityPools", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11706, "src": "5812:14:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage", "typeString": "struct ConverterRegistryData.Items storage ref" } }, "id": 12017, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "array", "nodeType": "MemberAccess", "referencedDeclaration": 11684, "src": "5812:20:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "functionReturnParameters": 12015, "id": 12018, "nodeType": "Return", "src": "5805:27:11" } ] }, "documentation": { "id": 12009, "nodeType": "StructuredDocumentation", "src": "5598:111:11", "text": " @dev returns the list of liquidity pools\n @return list of liquidity pools" }, "functionSelector": "7f45c4c3", "id": 12020, "implemented": true, "kind": "function", "modifiers": [], "name": "getLiquidityPools", "nodeType": "FunctionDefinition", "overrides": { "id": 12011, "nodeType": "OverrideSpecifier", "overrides": [], "src": "5758:8:11" }, "parameters": { "id": 12010, "nodeType": "ParameterList", "parameters": [], "src": "5741:2:11" }, "returnParameters": { "id": 12015, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 12014, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12020, "src": "5776:16:11", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]" }, "typeName": { "baseType": { "id": 12012, "name": "address", "nodeType": "ElementaryTypeName", "src": "5776:7:11", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 12013, "length": null, "nodeType": "ArrayTypeName", "src": "5776:9:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } }, "value": null, "visibility": "internal" } ], "src": "5775:18:11" }, "scope": 12324, "src": "5715:125:11", "stateMutability": "view", "virtual": false, "visibility": "external" }, { "baseFunctions": [ 13581 ], "body": { "id": 12036, "nodeType": "Block", "src": "6104:72:11", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 12030, "name": "liquidityPools", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11706, "src": "6139:14:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage", "typeString": "struct ConverterRegistryData.Items storage ref" } }, "id": 12031, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "array", "nodeType": "MemberAccess", "referencedDeclaration": 11684, "src": "6139:20:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 12033, "indexExpression": { "argumentTypes": null, "id": 12032, "name": "_index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12023, "src": "6160:6:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6139:28:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 12029, "name": "IConverterAnchor", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 13349, "src": "6122:16:11", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IConverterAnchor_$13349_$", "typeString": "type(contract IConverterAnchor)" } }, "id": 12034, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6122:46:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" } }, "functionReturnParameters": 12028, "id": 12035, "nodeType": "Return", "src": "6115:53:11" } ] }, "documentation": { "id": 12021, "nodeType": "StructuredDocumentation", "src": "5848:158:11", "text": " @dev returns the liquidity pool at a given index\n @param _index index\n @return liquidity pool at the given index" }, "functionSelector": "a74498aa", "id": 12037, "implemented": true, "kind": "function", "modifiers": [], "name": "getLiquidityPool", "nodeType": "FunctionDefinition", "overrides": { "id": 12025, "nodeType": "OverrideSpecifier", "overrides": [], "src": "6068:8:11" }, "parameters": { "id": 12024, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 12023, "mutability": "mutable", "name": "_index", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12037, "src": "6038:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 12022, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6038:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "6037:16:11" }, "returnParameters": { "id": 12028, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 12027, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12037, "src": "6086:16:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" }, "typeName": { "contractScope": null, "id": 12026, "name": "IConverterAnchor", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 13349, "src": "6086:16:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" } }, "value": null, "visibility": "internal" } ], "src": "6085:18:11" }, "scope": 12324, "src": "6012:164:11", "stateMutability": "view", "virtual": false, "visibility": "external" }, { "baseFunctions": [ 13588 ], "body": { "id": 12052, "nodeType": "Block", "src": "6463:60:11", "statements": [ { "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 12046, "name": "liquidityPools", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11706, "src": "6481:14:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage", "typeString": "struct ConverterRegistryData.Items storage ref" } }, "id": 12047, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "table", "nodeType": "MemberAccess", "referencedDeclaration": 11688, "src": "6481:20:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Item_$11681_storage_$", "typeString": "mapping(address => struct ConverterRegistryData.Item storage ref)" } }, "id": 12049, "indexExpression": { "argumentTypes": null, "id": 12048, "name": "_value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12040, "src": "6502:6:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6481:28:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Item_$11681_storage", "typeString": "struct ConverterRegistryData.Item storage ref" } }, "id": 12050, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "valid", "nodeType": "MemberAccess", "referencedDeclaration": 11678, "src": "6481:34:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "functionReturnParameters": 12045, "id": 12051, "nodeType": "Return", "src": "6474:41:11" } ] }, "documentation": { "id": 12038, "nodeType": "StructuredDocumentation", "src": "6184:194:11", "text": " @dev checks whether or not a given value is a liquidity pool\n @param _value value\n @return true if the given value is a liquidity pool, false if not" }, "functionSelector": "e85455d7", "id": 12053, "implemented": true, "kind": "function", "modifiers": [], "name": "isLiquidityPool", "nodeType": "FunctionDefinition", "overrides": { "id": 12042, "nodeType": "OverrideSpecifier", "overrides": [], "src": "6439:8:11" }, "parameters": { "id": 12041, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 12040, "mutability": "mutable", "name": "_value", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12053, "src": "6409:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 12039, "name": "address", "nodeType": "ElementaryTypeName", "src": "6409:7:11", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "6408:16:11" }, "returnParameters": { "id": 12045, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 12044, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12053, "src": "6457:4:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 12043, "name": "bool", "nodeType": "ElementaryTypeName", "src": "6457:4:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "6456:6:11" }, "scope": 12324, "src": "6384:139:11", "stateMutability": "view", "virtual": false, "visibility": "external" }, { "baseFunctions": [ 13593 ], "body": { "id": 12064, "nodeType": "Block", "src": "6735:56:11", "statements": [ { "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 12060, "name": "convertibleTokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11708, "src": "6753:17:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Lists_$11702_storage", "typeString": "struct ConverterRegistryData.Lists storage ref" } }, "id": 12061, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "array", "nodeType": "MemberAccess", "referencedDeclaration": 11697, "src": "6753:23:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 12062, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "6753:30:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 12059, "id": 12063, "nodeType": "Return", "src": "6746:37:11" } ] }, "documentation": { "id": 12054, "nodeType": "StructuredDocumentation", "src": "6531:121:11", "text": " @dev returns the number of convertible tokens\n @return number of convertible tokens" }, "functionSelector": "69be4784", "id": 12065, "implemented": true, "kind": "function", "modifiers": [], "name": "getConvertibleTokenCount", "nodeType": "FunctionDefinition", "overrides": { "id": 12056, "nodeType": "OverrideSpecifier", "overrides": [], "src": "6708:8:11" }, "parameters": { "id": 12055, "nodeType": "ParameterList", "parameters": [], "src": "6691:2:11" }, "returnParameters": { "id": 12059, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 12058, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12065, "src": "6726:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 12057, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6726:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "6725:9:11" }, "scope": 12324, "src": "6658:133:11", "stateMutability": "view", "virtual": false, "visibility": "external" }, { "baseFunctions": [ 13599 ], "body": { "id": 12076, "nodeType": "Block", "src": "7004:49:11", "statements": [ { "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 12073, "name": "convertibleTokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11708, "src": "7022:17:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Lists_$11702_storage", "typeString": "struct ConverterRegistryData.Lists storage ref" } }, "id": 12074, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "array", "nodeType": "MemberAccess", "referencedDeclaration": 11697, "src": "7022:23:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "functionReturnParameters": 12072, "id": 12075, "nodeType": "Return", "src": "7015:30:11" } ] }, "documentation": { "id": 12066, "nodeType": "StructuredDocumentation", "src": "6799:117:11", "text": " @dev returns the list of convertible tokens\n @return list of convertible tokens" }, "functionSelector": "5f1b50fe", "id": 12077, "implemented": true, "kind": "function", "modifiers": [], "name": "getConvertibleTokens", "nodeType": "FunctionDefinition", "overrides": { "id": 12068, "nodeType": "OverrideSpecifier", "overrides": [], "src": "6968:8:11" }, "parameters": { "id": 12067, "nodeType": "ParameterList", "parameters": [], "src": "6951:2:11" }, "returnParameters": { "id": 12072, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 12071, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12077, "src": "6986:16:11", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]" }, "typeName": { "baseType": { "id": 12069, "name": "address", "nodeType": "ElementaryTypeName", "src": "6986:7:11", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 12070, "length": null, "nodeType": "ArrayTypeName", "src": "6986:9:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } }, "value": null, "visibility": "internal" } ], "src": "6985:18:11" }, "scope": 12324, "src": "6922:131:11", "stateMutability": "view", "virtual": false, "visibility": "external" }, { "baseFunctions": [ 13606 ], "body": { "id": 12093, "nodeType": "Block", "src": "7321:70:11", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 12087, "name": "convertibleTokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11708, "src": "7351:17:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Lists_$11702_storage", "typeString": "struct ConverterRegistryData.Lists storage ref" } }, "id": 12088, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "array", "nodeType": "MemberAccess", "referencedDeclaration": 11697, "src": "7351:23:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 12090, "indexExpression": { "argumentTypes": null, "id": 12089, "name": "_index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12080, "src": "7375:6:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "7351:31:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 12086, "name": "IERC20Token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21127, "src": "7339:11:11", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20Token_$21127_$", "typeString": "type(contract IERC20Token)" } }, "id": 12091, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7339:44:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" } }, "functionReturnParameters": 12085, "id": 12092, "nodeType": "Return", "src": "7332:51:11" } ] }, "documentation": { "id": 12078, "nodeType": "StructuredDocumentation", "src": "7061:164:11", "text": " @dev returns the convertible token at a given index\n @param _index index\n @return convertible token at the given index" }, "functionSelector": "865cf194", "id": 12094, "implemented": true, "kind": "function", "modifiers": [], "name": "getConvertibleToken", "nodeType": "FunctionDefinition", "overrides": { "id": 12082, "nodeType": "OverrideSpecifier", "overrides": [], "src": "7290:8:11" }, "parameters": { "id": 12081, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 12080, "mutability": "mutable", "name": "_index", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12094, "src": "7260:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 12079, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7260:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "7259:16:11" }, "returnParameters": { "id": 12085, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 12084, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12094, "src": "7308:11:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" }, "typeName": { "contractScope": null, "id": 12083, "name": "IERC20Token", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 21127, "src": "7308:11:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" } }, "value": null, "visibility": "internal" } ], "src": "7307:13:11" }, "scope": 12324, "src": "7231:160:11", "stateMutability": "view", "virtual": false, "visibility": "external" }, { "baseFunctions": [ 13613 ], "body": { "id": 12113, "nodeType": "Block", "src": "7687:80:11", "statements": [ { "expression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 12111, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 12103, "name": "convertibleTokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11708, "src": "7705:17:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Lists_$11702_storage", "typeString": "struct ConverterRegistryData.Lists storage ref" } }, "id": 12104, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "table", "nodeType": "MemberAccess", "referencedDeclaration": 11701, "src": "7705:23:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_List_$11694_storage_$", "typeString": "mapping(address => struct ConverterRegistryData.List storage ref)" } }, "id": 12106, "indexExpression": { "argumentTypes": null, "id": 12105, "name": "_value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12097, "src": "7729:6:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "7705:31:11", "typeDescriptions": { "typeIdentifier": "t_struct$_List_$11694_storage", "typeString": "struct ConverterRegistryData.List storage ref" } }, "id": 12107, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "items", "nodeType": "MemberAccess", "referencedDeclaration": 11693, "src": "7705:37:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage", "typeString": "struct ConverterRegistryData.Items storage ref" } }, "id": 12108, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "array", "nodeType": "MemberAccess", "referencedDeclaration": 11684, "src": "7705:43:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 12109, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "7705:50:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 12110, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7758:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "7705:54:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "functionReturnParameters": 12102, "id": 12112, "nodeType": "Return", "src": "7698:61:11" } ] }, "documentation": { "id": 12095, "nodeType": "StructuredDocumentation", "src": "7399:200:11", "text": " @dev checks whether or not a given value is a convertible token\n @param _value value\n @return true if the given value is a convertible token, false if not" }, "functionSelector": "3ab8857c", "id": 12114, "implemented": true, "kind": "function", "modifiers": [], "name": "isConvertibleToken", "nodeType": "FunctionDefinition", "overrides": { "id": 12099, "nodeType": "OverrideSpecifier", "overrides": [], "src": "7663:8:11" }, "parameters": { "id": 12098, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 12097, "mutability": "mutable", "name": "_value", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12114, "src": "7633:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 12096, "name": "address", "nodeType": "ElementaryTypeName", "src": "7633:7:11", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "7632:16:11" }, "returnParameters": { "id": 12102, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 12101, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12114, "src": "7681:4:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 12100, "name": "bool", "nodeType": "ElementaryTypeName", "src": "7681:4:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "7680:6:11" }, "scope": 12324, "src": "7605:162:11", "stateMutability": "view", "virtual": false, "visibility": "external" }, { "baseFunctions": [ 13620 ], "body": { "id": 12134, "nodeType": "Block", "src": "8144:96:11", "statements": [ { "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 12123, "name": "convertibleTokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11708, "src": "8162:17:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Lists_$11702_storage", "typeString": "struct ConverterRegistryData.Lists storage ref" } }, "id": 12124, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "table", "nodeType": "MemberAccess", "referencedDeclaration": 11701, "src": "8162:23:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_List_$11694_storage_$", "typeString": "mapping(address => struct ConverterRegistryData.List storage ref)" } }, "id": 12129, "indexExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 12127, "name": "_convertibleToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12117, "src": "8194:17:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" } ], "id": 12126, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8186:7:11", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 12125, "name": "address", "nodeType": "ElementaryTypeName", "src": "8186:7:11", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 12128, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8186:26:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "8162:51:11", "typeDescriptions": { "typeIdentifier": "t_struct$_List_$11694_storage", "typeString": "struct ConverterRegistryData.List storage ref" } }, "id": 12130, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "items", "nodeType": "MemberAccess", "referencedDeclaration": 11693, "src": "8162:57:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage", "typeString": "struct ConverterRegistryData.Items storage ref" } }, "id": 12131, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "array", "nodeType": "MemberAccess", "referencedDeclaration": 11684, "src": "8162:63:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 12132, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "8162:70:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 12122, "id": 12133, "nodeType": "Return", "src": "8155:77:11" } ] }, "documentation": { "id": 12115, "nodeType": "StructuredDocumentation", "src": "7775:247:11", "text": " @dev returns the number of smart tokens associated with a given convertible token\n @param _convertibleToken convertible token\n @return number of smart tokens associated with the given convertible token" }, "functionSelector": "a43d5e94", "id": 12135, "implemented": true, "kind": "function", "modifiers": [], "name": "getConvertibleTokenSmartTokenCount", "nodeType": "FunctionDefinition", "overrides": { "id": 12119, "nodeType": "OverrideSpecifier", "overrides": [], "src": "8117:8:11" }, "parameters": { "id": 12118, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 12117, "mutability": "mutable", "name": "_convertibleToken", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12135, "src": "8072:29:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" }, "typeName": { "contractScope": null, "id": 12116, "name": "IERC20Token", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 21127, "src": "8072:11:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" } }, "value": null, "visibility": "internal" } ], "src": "8071:31:11" }, "returnParameters": { "id": 12122, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 12121, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12135, "src": "8135:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 12120, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8135:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "8134:9:11" }, "scope": 12324, "src": "8028:212:11", "stateMutability": "view", "virtual": false, "visibility": "external" }, { "baseFunctions": [ 13628 ], "body": { "id": 12155, "nodeType": "Block", "src": "8618:89:11", "statements": [ { "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 12145, "name": "convertibleTokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11708, "src": "8636:17:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Lists_$11702_storage", "typeString": "struct ConverterRegistryData.Lists storage ref" } }, "id": 12146, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "table", "nodeType": "MemberAccess", "referencedDeclaration": 11701, "src": "8636:23:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_List_$11694_storage_$", "typeString": "mapping(address => struct ConverterRegistryData.List storage ref)" } }, "id": 12151, "indexExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 12149, "name": "_convertibleToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12138, "src": "8668:17:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" } ], "id": 12148, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8660:7:11", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 12147, "name": "address", "nodeType": "ElementaryTypeName", "src": "8660:7:11", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 12150, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8660:26:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "8636:51:11", "typeDescriptions": { "typeIdentifier": "t_struct$_List_$11694_storage", "typeString": "struct ConverterRegistryData.List storage ref" } }, "id": 12152, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "items", "nodeType": "MemberAccess", "referencedDeclaration": 11693, "src": "8636:57:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage", "typeString": "struct ConverterRegistryData.Items storage ref" } }, "id": 12153, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "array", "nodeType": "MemberAccess", "referencedDeclaration": 11684, "src": "8636:63:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "functionReturnParameters": 12144, "id": 12154, "nodeType": "Return", "src": "8629:70:11" } ] }, "documentation": { "id": 12136, "nodeType": "StructuredDocumentation", "src": "8248:243:11", "text": " @dev returns the list of smart tokens associated with a given convertible token\n @param _convertibleToken convertible token\n @return list of smart tokens associated with the given convertible token" }, "functionSelector": "f4fb86c0", "id": 12156, "implemented": true, "kind": "function", "modifiers": [], "name": "getConvertibleTokenSmartTokens", "nodeType": "FunctionDefinition", "overrides": { "id": 12140, "nodeType": "OverrideSpecifier", "overrides": [], "src": "8582:8:11" }, "parameters": { "id": 12139, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 12138, "mutability": "mutable", "name": "_convertibleToken", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12156, "src": "8537:29:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" }, "typeName": { "contractScope": null, "id": 12137, "name": "IERC20Token", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 21127, "src": "8537:11:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" } }, "value": null, "visibility": "internal" } ], "src": "8536:31:11" }, "returnParameters": { "id": 12144, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 12143, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12156, "src": "8600:16:11", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]" }, "typeName": { "baseType": { "id": 12141, "name": "address", "nodeType": "ElementaryTypeName", "src": "8600:7:11", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 12142, "length": null, "nodeType": "ArrayTypeName", "src": "8600:9:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } }, "value": null, "visibility": "internal" } ], "src": "8599:18:11" }, "scope": 12324, "src": "8497:210:11", "stateMutability": "view", "virtual": false, "visibility": "external" }, { "baseFunctions": [ 13637 ], "body": { "id": 12181, "nodeType": "Block", "src": "9095:115:11", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 12168, "name": "convertibleTokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11708, "src": "9130:17:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Lists_$11702_storage", "typeString": "struct ConverterRegistryData.Lists storage ref" } }, "id": 12169, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "table", "nodeType": "MemberAccess", "referencedDeclaration": 11701, "src": "9130:23:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_List_$11694_storage_$", "typeString": "mapping(address => struct ConverterRegistryData.List storage ref)" } }, "id": 12174, "indexExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 12172, "name": "_convertibleToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12159, "src": "9162:17:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" } ], "id": 12171, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9154:7:11", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 12170, "name": "address", "nodeType": "ElementaryTypeName", "src": "9154:7:11", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 12173, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9154:26:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "9130:51:11", "typeDescriptions": { "typeIdentifier": "t_struct$_List_$11694_storage", "typeString": "struct ConverterRegistryData.List storage ref" } }, "id": 12175, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "items", "nodeType": "MemberAccess", "referencedDeclaration": 11693, "src": "9130:57:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage", "typeString": "struct ConverterRegistryData.Items storage ref" } }, "id": 12176, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "array", "nodeType": "MemberAccess", "referencedDeclaration": 11684, "src": "9130:63:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 12178, "indexExpression": { "argumentTypes": null, "id": 12177, "name": "_index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12161, "src": "9194:6:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "9130:71:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 12167, "name": "IConverterAnchor", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 13349, "src": "9113:16:11", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IConverterAnchor_$13349_$", "typeString": "type(contract IConverterAnchor)" } }, "id": 12179, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9113:89:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" } }, "functionReturnParameters": 12166, "id": 12180, "nodeType": "Return", "src": "9106:96:11" } ] }, "documentation": { "id": 12157, "nodeType": "StructuredDocumentation", "src": "8715:238:11", "text": " @dev returns the smart token associated with a given convertible token at a given index\n @param _index index\n @return smart token associated with the given convertible token at the given index" }, "functionSelector": "d6c4b5b2", "id": 12182, "implemented": true, "kind": "function", "modifiers": [], "name": "getConvertibleTokenSmartToken", "nodeType": "FunctionDefinition", "overrides": { "id": 12163, "nodeType": "OverrideSpecifier", "overrides": [], "src": "9059:8:11" }, "parameters": { "id": 12162, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 12159, "mutability": "mutable", "name": "_convertibleToken", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12182, "src": "8998:29:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" }, "typeName": { "contractScope": null, "id": 12158, "name": "IERC20Token", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 21127, "src": "8998:11:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 12161, "mutability": "mutable", "name": "_index", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12182, "src": "9029:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 12160, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "9029:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "8997:47:11" }, "returnParameters": { "id": 12166, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 12165, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12182, "src": "9077:16:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" }, "typeName": { "contractScope": null, "id": 12164, "name": "IConverterAnchor", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 13349, "src": "9077:16:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" } }, "value": null, "visibility": "internal" } ], "src": "9076:18:11" }, "scope": 12324, "src": "8959:251:11", "stateMutability": "view", "virtual": false, "visibility": "external" }, { "baseFunctions": [ 13646 ], "body": { "id": 12206, "nodeType": "Block", "src": "9647:103:11", "statements": [ { "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 12193, "name": "convertibleTokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11708, "src": "9665:17:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Lists_$11702_storage", "typeString": "struct ConverterRegistryData.Lists storage ref" } }, "id": 12194, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "table", "nodeType": "MemberAccess", "referencedDeclaration": 11701, "src": "9665:23:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_List_$11694_storage_$", "typeString": "mapping(address => struct ConverterRegistryData.List storage ref)" } }, "id": 12199, "indexExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 12197, "name": "_convertibleToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12185, "src": "9697:17:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" } ], "id": 12196, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9689:7:11", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 12195, "name": "address", "nodeType": "ElementaryTypeName", "src": "9689:7:11", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 12198, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9689:26:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "9665:51:11", "typeDescriptions": { "typeIdentifier": "t_struct$_List_$11694_storage", "typeString": "struct ConverterRegistryData.List storage ref" } }, "id": 12200, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "items", "nodeType": "MemberAccess", "referencedDeclaration": 11693, "src": "9665:57:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage", "typeString": "struct ConverterRegistryData.Items storage ref" } }, "id": 12201, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "table", "nodeType": "MemberAccess", "referencedDeclaration": 11688, "src": "9665:63:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Item_$11681_storage_$", "typeString": "mapping(address => struct ConverterRegistryData.Item storage ref)" } }, "id": 12203, "indexExpression": { "argumentTypes": null, "id": 12202, "name": "_value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12187, "src": "9729:6:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "9665:71:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Item_$11681_storage", "typeString": "struct ConverterRegistryData.Item storage ref" } }, "id": 12204, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "valid", "nodeType": "MemberAccess", "referencedDeclaration": 11678, "src": "9665:77:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "functionReturnParameters": 12192, "id": 12205, "nodeType": "Return", "src": "9658:84:11" } ] }, "documentation": { "id": 12183, "nodeType": "StructuredDocumentation", "src": "9218:300:11", "text": " @dev checks whether or not a given value is a smart token of a given convertible token\n @param _convertibleToken convertible token\n @param _value value\n @return true if the given value is a smart token of the given convertible token, false it not" }, "functionSelector": "725b8786", "id": 12207, "implemented": true, "kind": "function", "modifiers": [], "name": "isConvertibleTokenSmartToken", "nodeType": "FunctionDefinition", "overrides": { "id": 12189, "nodeType": "OverrideSpecifier", "overrides": [], "src": "9623:8:11" }, "parameters": { "id": 12188, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 12185, "mutability": "mutable", "name": "_convertibleToken", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12207, "src": "9562:29:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" }, "typeName": { "contractScope": null, "id": 12184, "name": "IERC20Token", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 21127, "src": "9562:11:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 12187, "mutability": "mutable", "name": "_value", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12207, "src": "9593:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 12186, "name": "address", "nodeType": "ElementaryTypeName", "src": "9593:7:11", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "9561:47:11" }, "returnParameters": { "id": 12192, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 12191, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12207, "src": "9641:4:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 12190, "name": "bool", "nodeType": "ElementaryTypeName", "src": "9641:4:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "9640:6:11" }, "scope": 12324, "src": "9524:226:11", "stateMutability": "view", "virtual": false, "visibility": "external" }, { "body": { "id": 12254, "nodeType": "Block", "src": "9988:219:11", "statements": [ { "assignments": [ 12219 ], "declarations": [ { "constant": false, "id": 12219, "mutability": "mutable", "name": "item", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12254, "src": "9999:17:11", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { "typeIdentifier": "t_struct$_Item_$11681_storage_ptr", "typeString": "struct ConverterRegistryData.Item" }, "typeName": { "contractScope": null, "id": 12218, "name": "Item", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11681, "src": "9999:4:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Item_$11681_storage_ptr", "typeString": "struct ConverterRegistryData.Item" } }, "value": null, "visibility": "internal" } ], "id": 12224, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 12220, "name": "_items", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12210, "src": "10019:6:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage_ptr", "typeString": "struct ConverterRegistryData.Items storage pointer" } }, "id": 12221, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "table", "nodeType": "MemberAccess", "referencedDeclaration": 11688, "src": "10019:12:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Item_$11681_storage_$", "typeString": "mapping(address => struct ConverterRegistryData.Item storage ref)" } }, "id": 12223, "indexExpression": { "argumentTypes": null, "id": 12222, "name": "_value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12212, "src": "10032:6:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10019:20:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Item_$11681_storage", "typeString": "struct ConverterRegistryData.Item storage ref" } }, "nodeType": "VariableDeclarationStatement", "src": "9999:40:11" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 12228, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "10058:11:11", "subExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 12226, "name": "item", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12219, "src": "10059:4:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Item_$11681_storage_ptr", "typeString": "struct ConverterRegistryData.Item storage pointer" } }, "id": 12227, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "valid", "nodeType": "MemberAccess", "referencedDeclaration": 11678, "src": "10059:10:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "4552525f494e56414c49445f4954454d", "id": 12229, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "10071:18:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_45c52aff26d012f687a90a37723f3c6469b3bdb8dce3fb6f14072d935b05b47b", "typeString": "literal_string \"ERR_INVALID_ITEM\"" }, "value": "ERR_INVALID_ITEM" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_45c52aff26d012f687a90a37723f3c6469b3bdb8dce3fb6f14072d935b05b47b", "typeString": "literal_string \"ERR_INVALID_ITEM\"" } ], "id": 12225, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "10050:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 12230, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10050:40:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 12231, "nodeType": "ExpressionStatement", "src": "10050:40:11" }, { "expression": { "argumentTypes": null, "id": 12238, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 12232, "name": "item", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12219, "src": "10103:4:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Item_$11681_storage_ptr", "typeString": "struct ConverterRegistryData.Item storage pointer" } }, "id": 12234, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 11680, "src": "10103:10:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 12235, "name": "_items", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12210, "src": "10116:6:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage_ptr", "typeString": "struct ConverterRegistryData.Items storage pointer" } }, "id": 12236, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "array", "nodeType": "MemberAccess", "referencedDeclaration": 11684, "src": "10116:12:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 12237, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "10116:19:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "10103:32:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 12239, "nodeType": "ExpressionStatement", "src": "10103:32:11" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 12245, "name": "_value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12212, "src": "10164:6:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 12240, "name": "_items", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12210, "src": "10146:6:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage_ptr", "typeString": "struct ConverterRegistryData.Items storage pointer" } }, "id": 12243, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "array", "nodeType": "MemberAccess", "referencedDeclaration": 11684, "src": "10146:12:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 12244, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "push", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "10146:17:11", "typeDescriptions": { "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, "id": 12246, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10146:25:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 12247, "nodeType": "ExpressionStatement", "src": "10146:25:11" }, { "expression": { "argumentTypes": null, "id": 12252, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 12248, "name": "item", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12219, "src": "10182:4:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Item_$11681_storage_ptr", "typeString": "struct ConverterRegistryData.Item storage pointer" } }, "id": 12250, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "valid", "nodeType": "MemberAccess", "referencedDeclaration": 11678, "src": "10182:10:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", "id": 12251, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "10195:4:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "src": "10182:17:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 12253, "nodeType": "ExpressionStatement", "src": "10182:17:11" } ] }, "documentation": { "id": 12208, "nodeType": "StructuredDocumentation", "src": "9758:139:11", "text": " @dev adds an item to a list of items\n @param _items list of items\n @param _value item's value" }, "id": 12255, "implemented": true, "kind": "function", "modifiers": [ { "arguments": [ { "argumentTypes": null, "id": 12215, "name": "_value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12212, "src": "9980:6:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "id": 12216, "modifierName": { "argumentTypes": null, "id": 12214, "name": "validAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 22618, "src": "9967:12:11", "typeDescriptions": { "typeIdentifier": "t_modifier$_t_address_$", "typeString": "modifier (address)" } }, "nodeType": "ModifierInvocation", "src": "9967:20:11" } ], "name": "addItem", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 12213, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 12210, "mutability": "mutable", "name": "_items", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12255, "src": "9920:20:11", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage_ptr", "typeString": "struct ConverterRegistryData.Items" }, "typeName": { "contractScope": null, "id": 12209, "name": "Items", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11689, "src": "9920:5:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage_ptr", "typeString": "struct ConverterRegistryData.Items" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 12212, "mutability": "mutable", "name": "_value", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12255, "src": "9942:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 12211, "name": "address", "nodeType": "ElementaryTypeName", "src": "9942:7:11", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "9919:38:11" }, "returnParameters": { "id": 12217, "nodeType": "ParameterList", "parameters": [], "src": "9988:0:11" }, "scope": 12324, "src": "9903:304:11", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" }, { "body": { "id": 12322, "nodeType": "Block", "src": "10453:346:11", "statements": [ { "assignments": [ 12267 ], "declarations": [ { "constant": false, "id": 12267, "mutability": "mutable", "name": "item", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12322, "src": "10464:17:11", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { "typeIdentifier": "t_struct$_Item_$11681_storage_ptr", "typeString": "struct ConverterRegistryData.Item" }, "typeName": { "contractScope": null, "id": 12266, "name": "Item", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11681, "src": "10464:4:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Item_$11681_storage_ptr", "typeString": "struct ConverterRegistryData.Item" } }, "value": null, "visibility": "internal" } ], "id": 12272, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 12268, "name": "_items", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12258, "src": "10484:6:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage_ptr", "typeString": "struct ConverterRegistryData.Items storage pointer" } }, "id": 12269, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "table", "nodeType": "MemberAccess", "referencedDeclaration": 11688, "src": "10484:12:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Item_$11681_storage_$", "typeString": "mapping(address => struct ConverterRegistryData.Item storage ref)" } }, "id": 12271, "indexExpression": { "argumentTypes": null, "id": 12270, "name": "_value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12260, "src": "10497:6:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10484:20:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Item_$11681_storage", "typeString": "struct ConverterRegistryData.Item storage ref" } }, "nodeType": "VariableDeclarationStatement", "src": "10464:40:11" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 12274, "name": "item", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12267, "src": "10523:4:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Item_$11681_storage_ptr", "typeString": "struct ConverterRegistryData.Item storage pointer" } }, "id": 12275, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "valid", "nodeType": "MemberAccess", "referencedDeclaration": 11678, "src": "10523:10:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "4552525f494e56414c49445f4954454d", "id": 12276, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "10535:18:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_45c52aff26d012f687a90a37723f3c6469b3bdb8dce3fb6f14072d935b05b47b", "typeString": "literal_string \"ERR_INVALID_ITEM\"" }, "value": "ERR_INVALID_ITEM" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_45c52aff26d012f687a90a37723f3c6469b3bdb8dce3fb6f14072d935b05b47b", "typeString": "literal_string \"ERR_INVALID_ITEM\"" } ], "id": 12273, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "10515:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 12277, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10515:39:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 12278, "nodeType": "ExpressionStatement", "src": "10515:39:11" }, { "assignments": [ 12280 ], "declarations": [ { "constant": false, "id": 12280, "mutability": "mutable", "name": "lastValue", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12322, "src": "10567:17:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 12279, "name": "address", "nodeType": "ElementaryTypeName", "src": "10567:7:11", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 12289, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 12281, "name": "_items", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12258, "src": "10587:6:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage_ptr", "typeString": "struct ConverterRegistryData.Items storage pointer" } }, "id": 12282, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "array", "nodeType": "MemberAccess", "referencedDeclaration": 11684, "src": "10587:12:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 12288, "indexExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 12287, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 12283, "name": "_items", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12258, "src": "10600:6:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage_ptr", "typeString": "struct ConverterRegistryData.Items storage pointer" } }, "id": 12284, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "array", "nodeType": "MemberAccess", "referencedDeclaration": 11684, "src": "10600:12:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 12285, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "10600:19:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "argumentTypes": null, "hexValue": "31", "id": 12286, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10622:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "10600:23:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10587:37:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "10567:57:11" }, { "expression": { "argumentTypes": null, "id": 12298, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 12290, "name": "_items", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12258, "src": "10635:6:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage_ptr", "typeString": "struct ConverterRegistryData.Items storage pointer" } }, "id": 12293, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "table", "nodeType": "MemberAccess", "referencedDeclaration": 11688, "src": "10635:12:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Item_$11681_storage_$", "typeString": "mapping(address => struct ConverterRegistryData.Item storage ref)" } }, "id": 12294, "indexExpression": { "argumentTypes": null, "id": 12292, "name": "lastValue", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12280, "src": "10648:9:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10635:23:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Item_$11681_storage", "typeString": "struct ConverterRegistryData.Item storage ref" } }, "id": 12295, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 11680, "src": "10635:29:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 12296, "name": "item", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12267, "src": "10667:4:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Item_$11681_storage_ptr", "typeString": "struct ConverterRegistryData.Item storage pointer" } }, "id": 12297, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 11680, "src": "10667:10:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "10635:42:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 12299, "nodeType": "ExpressionStatement", "src": "10635:42:11" }, { "expression": { "argumentTypes": null, "id": 12307, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 12300, "name": "_items", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12258, "src": "10688:6:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage_ptr", "typeString": "struct ConverterRegistryData.Items storage pointer" } }, "id": 12304, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "array", "nodeType": "MemberAccess", "referencedDeclaration": 11684, "src": "10688:12:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 12305, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 12302, "name": "item", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12267, "src": "10701:4:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Item_$11681_storage_ptr", "typeString": "struct ConverterRegistryData.Item storage pointer" } }, "id": 12303, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 11680, "src": "10701:10:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "10688:24:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 12306, "name": "lastValue", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12280, "src": "10715:9:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "10688:36:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 12308, "nodeType": "ExpressionStatement", "src": "10688:36:11" }, { "expression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 12309, "name": "_items", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12258, "src": "10735:6:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage_ptr", "typeString": "struct ConverterRegistryData.Items storage pointer" } }, "id": 12312, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "array", "nodeType": "MemberAccess", "referencedDeclaration": 11684, "src": "10735:12:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 12313, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "pop", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "10735:16:11", "typeDescriptions": { "typeIdentifier": "t_function_arraypop_nonpayable$__$returns$__$", "typeString": "function ()" } }, "id": 12314, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10735:18:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 12315, "nodeType": "ExpressionStatement", "src": "10735:18:11" }, { "expression": { "argumentTypes": null, "id": 12320, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, "src": "10764:27:11", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 12316, "name": "_items", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12258, "src": "10771:6:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage_ptr", "typeString": "struct ConverterRegistryData.Items storage pointer" } }, "id": 12317, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "table", "nodeType": "MemberAccess", "referencedDeclaration": 11688, "src": "10771:12:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Item_$11681_storage_$", "typeString": "mapping(address => struct ConverterRegistryData.Item storage ref)" } }, "id": 12319, "indexExpression": { "argumentTypes": null, "id": 12318, "name": "_value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12260, "src": "10784:6:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "10771:20:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Item_$11681_storage", "typeString": "struct ConverterRegistryData.Item storage ref" } }, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 12321, "nodeType": "ExpressionStatement", "src": "10764:27:11" } ] }, "documentation": { "id": 12256, "nodeType": "StructuredDocumentation", "src": "10215:144:11", "text": " @dev removes an item from a list of items\n @param _items list of items\n @param _value item's value" }, "id": 12323, "implemented": true, "kind": "function", "modifiers": [ { "arguments": [ { "argumentTypes": null, "id": 12263, "name": "_value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12260, "src": "10445:6:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "id": 12264, "modifierName": { "argumentTypes": null, "id": 12262, "name": "validAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 22618, "src": "10432:12:11", "typeDescriptions": { "typeIdentifier": "t_modifier$_t_address_$", "typeString": "modifier (address)" } }, "nodeType": "ModifierInvocation", "src": "10432:20:11" } ], "name": "removeItem", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 12261, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 12258, "mutability": "mutable", "name": "_items", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12323, "src": "10385:20:11", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage_ptr", "typeString": "struct ConverterRegistryData.Items" }, "typeName": { "contractScope": null, "id": 12257, "name": "Items", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11689, "src": "10385:5:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage_ptr", "typeString": "struct ConverterRegistryData.Items" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 12260, "mutability": "mutable", "name": "_value", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12323, "src": "10407:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 12259, "name": "address", "nodeType": "ElementaryTypeName", "src": "10407:7:11", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "10384:38:11" }, "returnParameters": { "id": 12265, "nodeType": "ParameterList", "parameters": [], "src": "10453:0:11" }, "scope": 12324, "src": "10365:434:11", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" } ], "scope": 12325, "src": "752:10050:11" } ], "src": "52:10752:11" }, "legacyAST": { "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/ConverterRegistryData.sol", "exportedSymbols": { "ConverterRegistryData": [ 12324 ] }, "id": 12325, "license": "SEE LICENSE IN LICENSE", "nodeType": "SourceUnit", "nodes": [ { "id": 11669, "literals": [ "solidity", "0.6", ".12" ], "nodeType": "PragmaDirective", "src": "52:23:11" }, { "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/ContractRegistryClient.sol", "file": "../utility/ContractRegistryClient.sol", "id": 11670, "nodeType": "ImportDirective", "scope": 12325, "sourceUnit": 21720, "src": "77:47:11", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/interfaces/IConverterRegistryData.sol", "file": "./interfaces/IConverterRegistryData.sol", "id": 11671, "nodeType": "ImportDirective", "scope": 12325, "sourceUnit": 13648, "src": "126:49:11", "symbolAliases": [], "unitAlias": "" }, { "abstract": false, "baseContracts": [ { "arguments": null, "baseName": { "contractScope": null, "id": 11673, "name": "IConverterRegistryData", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 13647, "src": "786:22:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IConverterRegistryData_$13647", "typeString": "contract IConverterRegistryData" } }, "id": 11674, "nodeType": "InheritanceSpecifier", "src": "786:22:11" }, { "arguments": null, "baseName": { "contractScope": null, "id": 11675, "name": "ContractRegistryClient", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 21719, "src": "810:22:11", "typeDescriptions": { "typeIdentifier": "t_contract$_ContractRegistryClient_$21719", "typeString": "contract ContractRegistryClient" } }, "id": 11676, "nodeType": "InheritanceSpecifier", "src": "810:22:11" } ], "contractDependencies": [ 13647, 21719, 21818, 22661, 22847 ], "contractKind": "contract", "documentation": { "id": 11672, "nodeType": "StructuredDocumentation", "src": "179:571:11", "text": " @dev The ConverterRegistryData contract is an integral part of the converter registry\n as it serves as the database contract that holds all registry data.\n The registry is separated into two different contracts for upgradability - the data contract\n is harder to upgrade as it requires migrating all registry data into a new contract, while\n the registry contract itself can be easily upgraded.\n For that same reason, the data contract is simple and contains no logic beyond the basic data\n access utilities that it exposes." }, "fullyImplemented": true, "id": 12324, "linearizedBaseContracts": [ 12324, 21719, 22661, 21818, 22847, 13647 ], "name": "ConverterRegistryData", "nodeType": "ContractDefinition", "nodes": [ { "canonicalName": "ConverterRegistryData.Item", "id": 11681, "members": [ { "constant": false, "id": 11678, "mutability": "mutable", "name": "valid", "nodeType": "VariableDeclaration", "overrides": null, "scope": 11681, "src": "863:10:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 11677, "name": "bool", "nodeType": "ElementaryTypeName", "src": "863:4:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 11680, "mutability": "mutable", "name": "index", "nodeType": "VariableDeclaration", "overrides": null, "scope": 11681, "src": "884:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 11679, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "884:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "name": "Item", "nodeType": "StructDefinition", "scope": 12324, "src": "840:65:11", "visibility": "public" }, { "canonicalName": "ConverterRegistryData.Items", "id": 11689, "members": [ { "constant": false, "id": 11684, "mutability": "mutable", "name": "array", "nodeType": "VariableDeclaration", "overrides": null, "scope": 11689, "src": "937:15:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" }, "typeName": { "baseType": { "id": 11682, "name": "address", "nodeType": "ElementaryTypeName", "src": "937:7:11", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 11683, "length": null, "nodeType": "ArrayTypeName", "src": "937:9:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 11688, "mutability": "mutable", "name": "table", "nodeType": "VariableDeclaration", "overrides": null, "scope": 11689, "src": "963:30:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Item_$11681_storage_$", "typeString": "mapping(address => struct ConverterRegistryData.Item)" }, "typeName": { "id": 11687, "keyType": { "id": 11685, "name": "address", "nodeType": "ElementaryTypeName", "src": "971:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "963:24:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Item_$11681_storage_$", "typeString": "mapping(address => struct ConverterRegistryData.Item)" }, "valueType": { "contractScope": null, "id": 11686, "name": "Item", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11681, "src": "982:4:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Item_$11681_storage_ptr", "typeString": "struct ConverterRegistryData.Item" } } }, "value": null, "visibility": "internal" } ], "name": "Items", "nodeType": "StructDefinition", "scope": 12324, "src": "913:88:11", "visibility": "public" }, { "canonicalName": "ConverterRegistryData.List", "id": 11694, "members": [ { "constant": false, "id": 11691, "mutability": "mutable", "name": "index", "nodeType": "VariableDeclaration", "overrides": null, "scope": 11694, "src": "1032:13:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 11690, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1032:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 11693, "mutability": "mutable", "name": "items", "nodeType": "VariableDeclaration", "overrides": null, "scope": 11694, "src": "1056:11:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage_ptr", "typeString": "struct ConverterRegistryData.Items" }, "typeName": { "contractScope": null, "id": 11692, "name": "Items", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11689, "src": "1056:5:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage_ptr", "typeString": "struct ConverterRegistryData.Items" } }, "value": null, "visibility": "internal" } ], "name": "List", "nodeType": "StructDefinition", "scope": 12324, "src": "1009:66:11", "visibility": "public" }, { "canonicalName": "ConverterRegistryData.Lists", "id": 11702, "members": [ { "constant": false, "id": 11697, "mutability": "mutable", "name": "array", "nodeType": "VariableDeclaration", "overrides": null, "scope": 11702, "src": "1107:15:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" }, "typeName": { "baseType": { "id": 11695, "name": "address", "nodeType": "ElementaryTypeName", "src": "1107:7:11", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 11696, "length": null, "nodeType": "ArrayTypeName", "src": "1107:9:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 11701, "mutability": "mutable", "name": "table", "nodeType": "VariableDeclaration", "overrides": null, "scope": 11702, "src": "1133:30:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_List_$11694_storage_$", "typeString": "mapping(address => struct ConverterRegistryData.List)" }, "typeName": { "id": 11700, "keyType": { "id": 11698, "name": "address", "nodeType": "ElementaryTypeName", "src": "1141:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "1133:24:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_List_$11694_storage_$", "typeString": "mapping(address => struct ConverterRegistryData.List)" }, "valueType": { "contractScope": null, "id": 11699, "name": "List", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11694, "src": "1152:4:11", "typeDescriptions": { "typeIdentifier": "t_struct$_List_$11694_storage_ptr", "typeString": "struct ConverterRegistryData.List" } } }, "value": null, "visibility": "internal" } ], "name": "Lists", "nodeType": "StructDefinition", "scope": 12324, "src": "1083:88:11", "visibility": "public" }, { "constant": false, "id": 11704, "mutability": "mutable", "name": "smartTokens", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12324, "src": "1179:25:11", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage", "typeString": "struct ConverterRegistryData.Items" }, "typeName": { "contractScope": null, "id": 11703, "name": "Items", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11689, "src": "1179:5:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage_ptr", "typeString": "struct ConverterRegistryData.Items" } }, "value": null, "visibility": "private" }, { "constant": false, "id": 11706, "mutability": "mutable", "name": "liquidityPools", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12324, "src": "1211:28:11", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage", "typeString": "struct ConverterRegistryData.Items" }, "typeName": { "contractScope": null, "id": 11705, "name": "Items", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11689, "src": "1211:5:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage_ptr", "typeString": "struct ConverterRegistryData.Items" } }, "value": null, "visibility": "private" }, { "constant": false, "id": 11708, "mutability": "mutable", "name": "convertibleTokens", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12324, "src": "1246:31:11", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_struct$_Lists_$11702_storage", "typeString": "struct ConverterRegistryData.Lists" }, "typeName": { "contractScope": null, "id": 11707, "name": "Lists", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11702, "src": "1246:5:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Lists_$11702_storage_ptr", "typeString": "struct ConverterRegistryData.Lists" } }, "value": null, "visibility": "private" }, { "body": { "id": 11717, "nodeType": "Block", "src": "1523:8:11", "statements": [] }, "documentation": { "id": 11709, "nodeType": "StructuredDocumentation", "src": "1286:149:11", "text": " @dev initializes a new ConverterRegistryData instance\n @param _registry address of a contract registry contract" }, "id": 11718, "implemented": true, "kind": "constructor", "modifiers": [ { "arguments": [ { "argumentTypes": null, "id": 11714, "name": "_registry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11711, "src": "1505:9:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } } ], "id": 11715, "modifierName": { "argumentTypes": null, "id": 11713, "name": "ContractRegistryClient", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21719, "src": "1482:22:11", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_ContractRegistryClient_$21719_$", "typeString": "type(contract ContractRegistryClient)" } }, "nodeType": "ModifierInvocation", "src": "1482:33:11" } ], "name": "", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 11712, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 11711, "mutability": "mutable", "name": "_registry", "nodeType": "VariableDeclaration", "overrides": null, "scope": 11718, "src": "1453:27:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" }, "typeName": { "contractScope": null, "id": 11710, "name": "IContractRegistry", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 22831, "src": "1453:17:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } }, "value": null, "visibility": "internal" } ], "src": "1452:29:11" }, "returnParameters": { "id": 11716, "nodeType": "ParameterList", "parameters": [], "src": "1523:0:11" }, "scope": 12324, "src": "1441:90:11", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "baseFunctions": [ 13509 ], "body": { "id": 11736, "nodeType": "Block", "src": "1726:57:11", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 11729, "name": "smartTokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11704, "src": "1745:11:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage", "typeString": "struct ConverterRegistryData.Items storage ref" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 11732, "name": "_anchor", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11721, "src": "1766:7:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" } ], "id": 11731, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1758:7:11", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 11730, "name": "address", "nodeType": "ElementaryTypeName", "src": "1758:7:11", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 11733, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1758:16:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_struct$_Items_$11689_storage", "typeString": "struct ConverterRegistryData.Items storage ref" }, { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 11728, "name": "addItem", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12255, "src": "1737:7:11", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Items_$11689_storage_ptr_$_t_address_$returns$__$", "typeString": "function (struct ConverterRegistryData.Items storage pointer,address)" } }, "id": 11734, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1737:38:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 11735, "nodeType": "ExpressionStatement", "src": "1737:38:11" } ] }, "documentation": { "id": 11719, "nodeType": "StructuredDocumentation", "src": "1539:89:11", "text": " @dev adds a smart token\n @param _anchor smart token" }, "functionSelector": "8de6c3eb", "id": 11737, "implemented": true, "kind": "function", "modifiers": [ { "arguments": [ { "argumentTypes": null, "id": 11725, "name": "CONVERTER_REGISTRY", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21545, "src": "1706:18:11", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], "id": 11726, "modifierName": { "argumentTypes": null, "id": 11724, "name": "only", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21577, "src": "1701:4:11", "typeDescriptions": { "typeIdentifier": "t_modifier$_t_bytes32_$", "typeString": "modifier (bytes32)" } }, "nodeType": "ModifierInvocation", "src": "1701:24:11" } ], "name": "addSmartToken", "nodeType": "FunctionDefinition", "overrides": { "id": 11723, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1692:8:11" }, "parameters": { "id": 11722, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 11721, "mutability": "mutable", "name": "_anchor", "nodeType": "VariableDeclaration", "overrides": null, "scope": 11737, "src": "1657:24:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" }, "typeName": { "contractScope": null, "id": 11720, "name": "IConverterAnchor", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 13349, "src": "1657:16:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" } }, "value": null, "visibility": "internal" } ], "src": "1656:26:11" }, "returnParameters": { "id": 11727, "nodeType": "ParameterList", "parameters": [], "src": "1726:0:11" }, "scope": 12324, "src": "1634:149:11", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "baseFunctions": [ 13514 ], "body": { "id": 11755, "nodeType": "Block", "src": "1984:60:11", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 11748, "name": "smartTokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11704, "src": "2006:11:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage", "typeString": "struct ConverterRegistryData.Items storage ref" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 11751, "name": "_anchor", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11740, "src": "2027:7:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" } ], "id": 11750, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2019:7:11", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 11749, "name": "address", "nodeType": "ElementaryTypeName", "src": "2019:7:11", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 11752, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2019:16:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_struct$_Items_$11689_storage", "typeString": "struct ConverterRegistryData.Items storage ref" }, { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 11747, "name": "removeItem", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12323, "src": "1995:10:11", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Items_$11689_storage_ptr_$_t_address_$returns$__$", "typeString": "function (struct ConverterRegistryData.Items storage pointer,address)" } }, "id": 11753, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1995:41:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 11754, "nodeType": "ExpressionStatement", "src": "1995:41:11" } ] }, "documentation": { "id": 11738, "nodeType": "StructuredDocumentation", "src": "1791:92:11", "text": " @dev removes a smart token\n @param _anchor smart token" }, "functionSelector": "ceb9838c", "id": 11756, "implemented": true, "kind": "function", "modifiers": [ { "arguments": [ { "argumentTypes": null, "id": 11744, "name": "CONVERTER_REGISTRY", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21545, "src": "1964:18:11", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], "id": 11745, "modifierName": { "argumentTypes": null, "id": 11743, "name": "only", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21577, "src": "1959:4:11", "typeDescriptions": { "typeIdentifier": "t_modifier$_t_bytes32_$", "typeString": "modifier (bytes32)" } }, "nodeType": "ModifierInvocation", "src": "1959:24:11" } ], "name": "removeSmartToken", "nodeType": "FunctionDefinition", "overrides": { "id": 11742, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1950:8:11" }, "parameters": { "id": 11741, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 11740, "mutability": "mutable", "name": "_anchor", "nodeType": "VariableDeclaration", "overrides": null, "scope": 11756, "src": "1915:24:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" }, "typeName": { "contractScope": null, "id": 11739, "name": "IConverterAnchor", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 13349, "src": "1915:16:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" } }, "value": null, "visibility": "internal" } ], "src": "1914:26:11" }, "returnParameters": { "id": 11746, "nodeType": "ParameterList", "parameters": [], "src": "1984:0:11" }, "scope": 12324, "src": "1889:155:11", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "baseFunctions": [ 13519 ], "body": { "id": 11774, "nodeType": "Block", "src": "2274:73:11", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 11767, "name": "liquidityPools", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11706, "src": "2293:14:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage", "typeString": "struct ConverterRegistryData.Items storage ref" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 11770, "name": "_liquidityPoolAnchor", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11759, "src": "2317:20:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" } ], "id": 11769, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2309:7:11", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 11768, "name": "address", "nodeType": "ElementaryTypeName", "src": "2309:7:11", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 11771, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2309:29:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_struct$_Items_$11689_storage", "typeString": "struct ConverterRegistryData.Items storage ref" }, { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 11766, "name": "addItem", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12255, "src": "2285:7:11", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Items_$11689_storage_ptr_$_t_address_$returns$__$", "typeString": "function (struct ConverterRegistryData.Items storage pointer,address)" } }, "id": 11772, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2285:54:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 11773, "nodeType": "ExpressionStatement", "src": "2285:54:11" } ] }, "documentation": { "id": 11757, "nodeType": "StructuredDocumentation", "src": "2052:108:11", "text": " @dev adds a liquidity pool\n @param _liquidityPoolAnchor liquidity pool" }, "functionSelector": "ee6a934c", "id": 11775, "implemented": true, "kind": "function", "modifiers": [ { "arguments": [ { "argumentTypes": null, "id": 11763, "name": "CONVERTER_REGISTRY", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21545, "src": "2254:18:11", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], "id": 11764, "modifierName": { "argumentTypes": null, "id": 11762, "name": "only", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21577, "src": "2249:4:11", "typeDescriptions": { "typeIdentifier": "t_modifier$_t_bytes32_$", "typeString": "modifier (bytes32)" } }, "nodeType": "ModifierInvocation", "src": "2249:24:11" } ], "name": "addLiquidityPool", "nodeType": "FunctionDefinition", "overrides": { "id": 11761, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2240:8:11" }, "parameters": { "id": 11760, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 11759, "mutability": "mutable", "name": "_liquidityPoolAnchor", "nodeType": "VariableDeclaration", "overrides": null, "scope": 11775, "src": "2192:37:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" }, "typeName": { "contractScope": null, "id": 11758, "name": "IConverterAnchor", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 13349, "src": "2192:16:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" } }, "value": null, "visibility": "internal" } ], "src": "2191:39:11" }, "returnParameters": { "id": 11765, "nodeType": "ParameterList", "parameters": [], "src": "2274:0:11" }, "scope": 12324, "src": "2166:181:11", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "baseFunctions": [ 13524 ], "body": { "id": 11793, "nodeType": "Block", "src": "2583:76:11", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 11786, "name": "liquidityPools", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11706, "src": "2605:14:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage", "typeString": "struct ConverterRegistryData.Items storage ref" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 11789, "name": "_liquidityPoolAnchor", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11778, "src": "2629:20:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" } ], "id": 11788, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2621:7:11", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 11787, "name": "address", "nodeType": "ElementaryTypeName", "src": "2621:7:11", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 11790, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2621:29:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_struct$_Items_$11689_storage", "typeString": "struct ConverterRegistryData.Items storage ref" }, { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 11785, "name": "removeItem", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12323, "src": "2594:10:11", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Items_$11689_storage_ptr_$_t_address_$returns$__$", "typeString": "function (struct ConverterRegistryData.Items storage pointer,address)" } }, "id": 11791, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2594:57:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 11792, "nodeType": "ExpressionStatement", "src": "2594:57:11" } ] }, "documentation": { "id": 11776, "nodeType": "StructuredDocumentation", "src": "2355:111:11", "text": " @dev removes a liquidity pool\n @param _liquidityPoolAnchor liquidity pool" }, "functionSelector": "ae22107f", "id": 11794, "implemented": true, "kind": "function", "modifiers": [ { "arguments": [ { "argumentTypes": null, "id": 11782, "name": "CONVERTER_REGISTRY", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21545, "src": "2563:18:11", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], "id": 11783, "modifierName": { "argumentTypes": null, "id": 11781, "name": "only", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21577, "src": "2558:4:11", "typeDescriptions": { "typeIdentifier": "t_modifier$_t_bytes32_$", "typeString": "modifier (bytes32)" } }, "nodeType": "ModifierInvocation", "src": "2558:24:11" } ], "name": "removeLiquidityPool", "nodeType": "FunctionDefinition", "overrides": { "id": 11780, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2549:8:11" }, "parameters": { "id": 11779, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 11778, "mutability": "mutable", "name": "_liquidityPoolAnchor", "nodeType": "VariableDeclaration", "overrides": null, "scope": 11794, "src": "2501:37:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" }, "typeName": { "contractScope": null, "id": 11777, "name": "IConverterAnchor", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 13349, "src": "2501:16:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" } }, "value": null, "visibility": "internal" } ], "src": "2500:39:11" }, "returnParameters": { "id": 11784, "nodeType": "ParameterList", "parameters": [], "src": "2583:0:11" }, "scope": 12324, "src": "2472:187:11", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "baseFunctions": [ 13531 ], "body": { "id": 11852, "nodeType": "Block", "src": "2976:323:11", "statements": [ { "assignments": [ 11807 ], "declarations": [ { "constant": false, "id": 11807, "mutability": "mutable", "name": "list", "nodeType": "VariableDeclaration", "overrides": null, "scope": 11852, "src": "2987:17:11", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { "typeIdentifier": "t_struct$_List_$11694_storage_ptr", "typeString": "struct ConverterRegistryData.List" }, "typeName": { "contractScope": null, "id": 11806, "name": "List", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11694, "src": "2987:4:11", "typeDescriptions": { "typeIdentifier": "t_struct$_List_$11694_storage_ptr", "typeString": "struct ConverterRegistryData.List" } }, "value": null, "visibility": "internal" } ], "id": 11815, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 11808, "name": "convertibleTokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11708, "src": "3007:17:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Lists_$11702_storage", "typeString": "struct ConverterRegistryData.Lists storage ref" } }, "id": 11809, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "table", "nodeType": "MemberAccess", "referencedDeclaration": 11701, "src": "3007:23:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_List_$11694_storage_$", "typeString": "mapping(address => struct ConverterRegistryData.List storage ref)" } }, "id": 11814, "indexExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 11812, "name": "_convertibleToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11797, "src": "3039:17:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" } ], "id": 11811, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3031:7:11", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 11810, "name": "address", "nodeType": "ElementaryTypeName", "src": "3031:7:11", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 11813, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3031:26:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3007:51:11", "typeDescriptions": { "typeIdentifier": "t_struct$_List_$11694_storage", "typeString": "struct ConverterRegistryData.List storage ref" } }, "nodeType": "VariableDeclarationStatement", "src": "2987:71:11" }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 11821, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 11816, "name": "list", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11807, "src": "3073:4:11", "typeDescriptions": { "typeIdentifier": "t_struct$_List_$11694_storage_ptr", "typeString": "struct ConverterRegistryData.List storage pointer" } }, "id": 11817, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "items", "nodeType": "MemberAccess", "referencedDeclaration": 11693, "src": "3073:10:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage", "typeString": "struct ConverterRegistryData.Items storage ref" } }, "id": 11818, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "array", "nodeType": "MemberAccess", "referencedDeclaration": 11684, "src": "3073:16:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 11819, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3073:23:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 11820, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3100:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "3073:28:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 11842, "nodeType": "IfStatement", "src": "3069:175:11", "trueBody": { "id": 11841, "nodeType": "Block", "src": "3103:141:11", "statements": [ { "expression": { "argumentTypes": null, "id": 11828, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 11822, "name": "list", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11807, "src": "3118:4:11", "typeDescriptions": { "typeIdentifier": "t_struct$_List_$11694_storage_ptr", "typeString": "struct ConverterRegistryData.List storage pointer" } }, "id": 11824, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 11691, "src": "3118:10:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 11825, "name": "convertibleTokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11708, "src": "3131:17:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Lists_$11702_storage", "typeString": "struct ConverterRegistryData.Lists storage ref" } }, "id": 11826, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "array", "nodeType": "MemberAccess", "referencedDeclaration": 11697, "src": "3131:23:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 11827, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3131:30:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3118:43:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 11829, "nodeType": "ExpressionStatement", "src": "3118:43:11" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 11837, "name": "_convertibleToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11797, "src": "3213:17:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" } ], "id": 11836, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3205:7:11", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 11835, "name": "address", "nodeType": "ElementaryTypeName", "src": "3205:7:11", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 11838, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3205:26:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 11830, "name": "convertibleTokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11708, "src": "3176:17:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Lists_$11702_storage", "typeString": "struct ConverterRegistryData.Lists storage ref" } }, "id": 11833, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "array", "nodeType": "MemberAccess", "referencedDeclaration": 11697, "src": "3176:23:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 11834, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "push", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3176:28:11", "typeDescriptions": { "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, "id": 11839, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3176:56:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 11840, "nodeType": "ExpressionStatement", "src": "3176:56:11" } ] } }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 11844, "name": "list", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11807, "src": "3262:4:11", "typeDescriptions": { "typeIdentifier": "t_struct$_List_$11694_storage_ptr", "typeString": "struct ConverterRegistryData.List storage pointer" } }, "id": 11845, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "items", "nodeType": "MemberAccess", "referencedDeclaration": 11693, "src": "3262:10:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage", "typeString": "struct ConverterRegistryData.Items storage ref" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 11848, "name": "_anchor", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11799, "src": "3282:7:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" } ], "id": 11847, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3274:7:11", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 11846, "name": "address", "nodeType": "ElementaryTypeName", "src": "3274:7:11", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 11849, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3274:16:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_struct$_Items_$11689_storage", "typeString": "struct ConverterRegistryData.Items storage ref" }, { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 11843, "name": "addItem", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12255, "src": "3254:7:11", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Items_$11689_storage_ptr_$_t_address_$returns$__$", "typeString": "function (struct ConverterRegistryData.Items storage pointer,address)" } }, "id": 11850, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3254:37:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 11851, "nodeType": "ExpressionStatement", "src": "3254:37:11" } ] }, "documentation": { "id": 11795, "nodeType": "StructuredDocumentation", "src": "2667:174:11", "text": " @dev adds a convertible token\n @param _convertibleToken convertible token\n @param _anchor associated smart token" }, "functionSelector": "36900c11", "id": 11853, "implemented": true, "kind": "function", "modifiers": [ { "arguments": [ { "argumentTypes": null, "id": 11803, "name": "CONVERTER_REGISTRY", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21545, "src": "2956:18:11", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], "id": 11804, "modifierName": { "argumentTypes": null, "id": 11802, "name": "only", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21577, "src": "2951:4:11", "typeDescriptions": { "typeIdentifier": "t_modifier$_t_bytes32_$", "typeString": "modifier (bytes32)" } }, "nodeType": "ModifierInvocation", "src": "2951:24:11" } ], "name": "addConvertibleToken", "nodeType": "FunctionDefinition", "overrides": { "id": 11801, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2942:8:11" }, "parameters": { "id": 11800, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 11797, "mutability": "mutable", "name": "_convertibleToken", "nodeType": "VariableDeclaration", "overrides": null, "scope": 11853, "src": "2876:29:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" }, "typeName": { "contractScope": null, "id": 11796, "name": "IERC20Token", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 21127, "src": "2876:11:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 11799, "mutability": "mutable", "name": "_anchor", "nodeType": "VariableDeclaration", "overrides": null, "scope": 11853, "src": "2907:24:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" }, "typeName": { "contractScope": null, "id": 11798, "name": "IConverterAnchor", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 13349, "src": "2907:16:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" } }, "value": null, "visibility": "internal" } ], "src": "2875:57:11" }, "returnParameters": { "id": 11805, "nodeType": "ParameterList", "parameters": [], "src": "2976:0:11" }, "scope": 12324, "src": "2847:452:11", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "baseFunctions": [ 13538 ], "body": { "id": 11938, "nodeType": "Block", "src": "3622:571:11", "statements": [ { "assignments": [ 11866 ], "declarations": [ { "constant": false, "id": 11866, "mutability": "mutable", "name": "list", "nodeType": "VariableDeclaration", "overrides": null, "scope": 11938, "src": "3633:17:11", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { "typeIdentifier": "t_struct$_List_$11694_storage_ptr", "typeString": "struct ConverterRegistryData.List" }, "typeName": { "contractScope": null, "id": 11865, "name": "List", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11694, "src": "3633:4:11", "typeDescriptions": { "typeIdentifier": "t_struct$_List_$11694_storage_ptr", "typeString": "struct ConverterRegistryData.List" } }, "value": null, "visibility": "internal" } ], "id": 11874, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 11867, "name": "convertibleTokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11708, "src": "3653:17:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Lists_$11702_storage", "typeString": "struct ConverterRegistryData.Lists storage ref" } }, "id": 11868, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "table", "nodeType": "MemberAccess", "referencedDeclaration": 11701, "src": "3653:23:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_List_$11694_storage_$", "typeString": "mapping(address => struct ConverterRegistryData.List storage ref)" } }, "id": 11873, "indexExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 11871, "name": "_convertibleToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11856, "src": "3685:17:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" } ], "id": 11870, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3677:7:11", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 11869, "name": "address", "nodeType": "ElementaryTypeName", "src": "3677:7:11", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 11872, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3677:26:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3653:51:11", "typeDescriptions": { "typeIdentifier": "t_struct$_List_$11694_storage", "typeString": "struct ConverterRegistryData.List storage ref" } }, "nodeType": "VariableDeclarationStatement", "src": "3633:71:11" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 11876, "name": "list", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11866, "src": "3726:4:11", "typeDescriptions": { "typeIdentifier": "t_struct$_List_$11694_storage_ptr", "typeString": "struct ConverterRegistryData.List storage pointer" } }, "id": 11877, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "items", "nodeType": "MemberAccess", "referencedDeclaration": 11693, "src": "3726:10:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage", "typeString": "struct ConverterRegistryData.Items storage ref" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 11880, "name": "_anchor", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11858, "src": "3746:7:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" } ], "id": 11879, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3738:7:11", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 11878, "name": "address", "nodeType": "ElementaryTypeName", "src": "3738:7:11", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 11881, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3738:16:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_struct$_Items_$11689_storage", "typeString": "struct ConverterRegistryData.Items storage ref" }, { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 11875, "name": "removeItem", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12323, "src": "3715:10:11", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Items_$11689_storage_ptr_$_t_address_$returns$__$", "typeString": "function (struct ConverterRegistryData.Items storage pointer,address)" } }, "id": 11882, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3715:40:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 11883, "nodeType": "ExpressionStatement", "src": "3715:40:11" }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 11889, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 11884, "name": "list", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11866, "src": "3770:4:11", "typeDescriptions": { "typeIdentifier": "t_struct$_List_$11694_storage_ptr", "typeString": "struct ConverterRegistryData.List storage pointer" } }, "id": 11885, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "items", "nodeType": "MemberAccess", "referencedDeclaration": 11693, "src": "3770:10:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage", "typeString": "struct ConverterRegistryData.Items storage ref" } }, "id": 11886, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "array", "nodeType": "MemberAccess", "referencedDeclaration": 11684, "src": "3770:16:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 11887, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3770:23:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 11888, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3797:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "3770:28:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 11937, "nodeType": "IfStatement", "src": "3766:420:11", "trueBody": { "id": 11936, "nodeType": "Block", "src": "3800:386:11", "statements": [ { "assignments": [ 11891 ], "declarations": [ { "constant": false, "id": 11891, "mutability": "mutable", "name": "lastConvertibleToken", "nodeType": "VariableDeclaration", "overrides": null, "scope": 11936, "src": "3815:28:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 11890, "name": "address", "nodeType": "ElementaryTypeName", "src": "3815:7:11", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 11900, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 11892, "name": "convertibleTokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11708, "src": "3846:17:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Lists_$11702_storage", "typeString": "struct ConverterRegistryData.Lists storage ref" } }, "id": 11893, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "array", "nodeType": "MemberAccess", "referencedDeclaration": 11697, "src": "3846:23:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 11899, "indexExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 11898, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 11894, "name": "convertibleTokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11708, "src": "3870:17:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Lists_$11702_storage", "typeString": "struct ConverterRegistryData.Lists storage ref" } }, "id": 11895, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "array", "nodeType": "MemberAccess", "referencedDeclaration": 11697, "src": "3870:23:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 11896, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3870:30:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "argumentTypes": null, "hexValue": "31", "id": 11897, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3903:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "3870:34:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3846:59:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "3815:90:11" }, { "expression": { "argumentTypes": null, "id": 11909, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 11901, "name": "convertibleTokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11708, "src": "3920:17:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Lists_$11702_storage", "typeString": "struct ConverterRegistryData.Lists storage ref" } }, "id": 11904, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "table", "nodeType": "MemberAccess", "referencedDeclaration": 11701, "src": "3920:23:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_List_$11694_storage_$", "typeString": "mapping(address => struct ConverterRegistryData.List storage ref)" } }, "id": 11905, "indexExpression": { "argumentTypes": null, "id": 11903, "name": "lastConvertibleToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11891, "src": "3944:20:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3920:45:11", "typeDescriptions": { "typeIdentifier": "t_struct$_List_$11694_storage", "typeString": "struct ConverterRegistryData.List storage ref" } }, "id": 11906, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 11691, "src": "3920:51:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 11907, "name": "list", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11866, "src": "3974:4:11", "typeDescriptions": { "typeIdentifier": "t_struct$_List_$11694_storage_ptr", "typeString": "struct ConverterRegistryData.List storage pointer" } }, "id": 11908, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 11691, "src": "3974:10:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3920:64:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 11910, "nodeType": "ExpressionStatement", "src": "3920:64:11" }, { "expression": { "argumentTypes": null, "id": 11918, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 11911, "name": "convertibleTokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11708, "src": "3999:17:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Lists_$11702_storage", "typeString": "struct ConverterRegistryData.Lists storage ref" } }, "id": 11915, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "array", "nodeType": "MemberAccess", "referencedDeclaration": 11697, "src": "3999:23:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 11916, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 11913, "name": "list", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11866, "src": "4023:4:11", "typeDescriptions": { "typeIdentifier": "t_struct$_List_$11694_storage_ptr", "typeString": "struct ConverterRegistryData.List storage pointer" } }, "id": 11914, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 11691, "src": "4023:10:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "3999:35:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 11917, "name": "lastConvertibleToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11891, "src": "4037:20:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "3999:58:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 11919, "nodeType": "ExpressionStatement", "src": "3999:58:11" }, { "expression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 11920, "name": "convertibleTokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11708, "src": "4072:17:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Lists_$11702_storage", "typeString": "struct ConverterRegistryData.Lists storage ref" } }, "id": 11923, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "array", "nodeType": "MemberAccess", "referencedDeclaration": 11697, "src": "4072:23:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 11924, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "pop", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "4072:27:11", "typeDescriptions": { "typeIdentifier": "t_function_arraypop_nonpayable$__$returns$__$", "typeString": "function ()" } }, "id": 11925, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4072:29:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 11926, "nodeType": "ExpressionStatement", "src": "4072:29:11" }, { "expression": { "argumentTypes": null, "id": 11934, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, "src": "4116:58:11", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 11927, "name": "convertibleTokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11708, "src": "4123:17:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Lists_$11702_storage", "typeString": "struct ConverterRegistryData.Lists storage ref" } }, "id": 11928, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "table", "nodeType": "MemberAccess", "referencedDeclaration": 11701, "src": "4123:23:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_List_$11694_storage_$", "typeString": "mapping(address => struct ConverterRegistryData.List storage ref)" } }, "id": 11933, "indexExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 11931, "name": "_convertibleToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11856, "src": "4155:17:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" } ], "id": 11930, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4147:7:11", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 11929, "name": "address", "nodeType": "ElementaryTypeName", "src": "4147:7:11", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 11932, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4147:26:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "4123:51:11", "typeDescriptions": { "typeIdentifier": "t_struct$_List_$11694_storage", "typeString": "struct ConverterRegistryData.List storage ref" } }, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 11935, "nodeType": "ExpressionStatement", "src": "4116:58:11" } ] } } ] }, "documentation": { "id": 11854, "nodeType": "StructuredDocumentation", "src": "3307:177:11", "text": " @dev removes a convertible token\n @param _convertibleToken convertible token\n @param _anchor associated smart token" }, "functionSelector": "fba8f031", "id": 11939, "implemented": true, "kind": "function", "modifiers": [ { "arguments": [ { "argumentTypes": null, "id": 11862, "name": "CONVERTER_REGISTRY", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21545, "src": "3602:18:11", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], "id": 11863, "modifierName": { "argumentTypes": null, "id": 11861, "name": "only", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21577, "src": "3597:4:11", "typeDescriptions": { "typeIdentifier": "t_modifier$_t_bytes32_$", "typeString": "modifier (bytes32)" } }, "nodeType": "ModifierInvocation", "src": "3597:24:11" } ], "name": "removeConvertibleToken", "nodeType": "FunctionDefinition", "overrides": { "id": 11860, "nodeType": "OverrideSpecifier", "overrides": [], "src": "3588:8:11" }, "parameters": { "id": 11859, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 11856, "mutability": "mutable", "name": "_convertibleToken", "nodeType": "VariableDeclaration", "overrides": null, "scope": 11939, "src": "3522:29:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" }, "typeName": { "contractScope": null, "id": 11855, "name": "IERC20Token", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 21127, "src": "3522:11:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 11858, "mutability": "mutable", "name": "_anchor", "nodeType": "VariableDeclaration", "overrides": null, "scope": 11939, "src": "3553:24:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" }, "typeName": { "contractScope": null, "id": 11857, "name": "IConverterAnchor", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 13349, "src": "3553:16:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" } }, "value": null, "visibility": "internal" } ], "src": "3521:57:11" }, "returnParameters": { "id": 11864, "nodeType": "ParameterList", "parameters": [], "src": "3622:0:11" }, "scope": 12324, "src": "3490:703:11", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "baseFunctions": [ 13543 ], "body": { "id": 11950, "nodeType": "Block", "src": "4387:50:11", "statements": [ { "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 11946, "name": "smartTokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11704, "src": "4405:11:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage", "typeString": "struct ConverterRegistryData.Items storage ref" } }, "id": 11947, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "array", "nodeType": "MemberAccess", "referencedDeclaration": 11684, "src": "4405:17:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 11948, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "4405:24:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 11945, "id": 11949, "nodeType": "Return", "src": "4398:31:11" } ] }, "documentation": { "id": 11940, "nodeType": "StructuredDocumentation", "src": "4201:109:11", "text": " @dev returns the number of smart tokens\n @return number of smart tokens" }, "functionSelector": "e571049b", "id": 11951, "implemented": true, "kind": "function", "modifiers": [], "name": "getSmartTokenCount", "nodeType": "FunctionDefinition", "overrides": { "id": 11942, "nodeType": "OverrideSpecifier", "overrides": [], "src": "4360:8:11" }, "parameters": { "id": 11941, "nodeType": "ParameterList", "parameters": [], "src": "4343:2:11" }, "returnParameters": { "id": 11945, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 11944, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 11951, "src": "4378:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 11943, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4378:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "4377:9:11" }, "scope": 12324, "src": "4316:121:11", "stateMutability": "view", "virtual": false, "visibility": "external" }, { "baseFunctions": [ 13549 ], "body": { "id": 11962, "nodeType": "Block", "src": "4632:43:11", "statements": [ { "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 11959, "name": "smartTokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11704, "src": "4650:11:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage", "typeString": "struct ConverterRegistryData.Items storage ref" } }, "id": 11960, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "array", "nodeType": "MemberAccess", "referencedDeclaration": 11684, "src": "4650:17:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "functionReturnParameters": 11958, "id": 11961, "nodeType": "Return", "src": "4643:24:11" } ] }, "documentation": { "id": 11952, "nodeType": "StructuredDocumentation", "src": "4445:105:11", "text": " @dev returns the list of smart tokens\n @return list of smart tokens" }, "functionSelector": "04ceaf41", "id": 11963, "implemented": true, "kind": "function", "modifiers": [], "name": "getSmartTokens", "nodeType": "FunctionDefinition", "overrides": { "id": 11954, "nodeType": "OverrideSpecifier", "overrides": [], "src": "4596:8:11" }, "parameters": { "id": 11953, "nodeType": "ParameterList", "parameters": [], "src": "4579:2:11" }, "returnParameters": { "id": 11958, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 11957, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 11963, "src": "4614:16:11", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]" }, "typeName": { "baseType": { "id": 11955, "name": "address", "nodeType": "ElementaryTypeName", "src": "4614:7:11", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 11956, "length": null, "nodeType": "ArrayTypeName", "src": "4614:9:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } }, "value": null, "visibility": "internal" } ], "src": "4613:18:11" }, "scope": 12324, "src": "4556:119:11", "stateMutability": "view", "virtual": false, "visibility": "external" }, { "baseFunctions": [ 13556 ], "body": { "id": 11979, "nodeType": "Block", "src": "4930:69:11", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 11973, "name": "smartTokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11704, "src": "4965:11:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage", "typeString": "struct ConverterRegistryData.Items storage ref" } }, "id": 11974, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "array", "nodeType": "MemberAccess", "referencedDeclaration": 11684, "src": "4965:17:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 11976, "indexExpression": { "argumentTypes": null, "id": 11975, "name": "_index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11966, "src": "4983:6:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4965:25:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 11972, "name": "IConverterAnchor", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 13349, "src": "4948:16:11", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IConverterAnchor_$13349_$", "typeString": "type(contract IConverterAnchor)" } }, "id": 11977, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4948:43:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" } }, "functionReturnParameters": 11971, "id": 11978, "nodeType": "Return", "src": "4941:50:11" } ] }, "documentation": { "id": 11964, "nodeType": "StructuredDocumentation", "src": "4683:152:11", "text": " @dev returns the smart token at a given index\n @param _index index\n @return smart token at the given index" }, "functionSelector": "a109d214", "id": 11980, "implemented": true, "kind": "function", "modifiers": [], "name": "getSmartToken", "nodeType": "FunctionDefinition", "overrides": { "id": 11968, "nodeType": "OverrideSpecifier", "overrides": [], "src": "4894:8:11" }, "parameters": { "id": 11967, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 11966, "mutability": "mutable", "name": "_index", "nodeType": "VariableDeclaration", "overrides": null, "scope": 11980, "src": "4864:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 11965, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4864:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "4863:16:11" }, "returnParameters": { "id": 11971, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 11970, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 11980, "src": "4912:16:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" }, "typeName": { "contractScope": null, "id": 11969, "name": "IConverterAnchor", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 13349, "src": "4912:16:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" } }, "value": null, "visibility": "internal" } ], "src": "4911:18:11" }, "scope": 12324, "src": "4841:158:11", "stateMutability": "view", "virtual": false, "visibility": "external" }, { "baseFunctions": [ 13563 ], "body": { "id": 11995, "nodeType": "Block", "src": "5277:57:11", "statements": [ { "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 11989, "name": "smartTokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11704, "src": "5295:11:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage", "typeString": "struct ConverterRegistryData.Items storage ref" } }, "id": 11990, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "table", "nodeType": "MemberAccess", "referencedDeclaration": 11688, "src": "5295:17:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Item_$11681_storage_$", "typeString": "mapping(address => struct ConverterRegistryData.Item storage ref)" } }, "id": 11992, "indexExpression": { "argumentTypes": null, "id": 11991, "name": "_value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11983, "src": "5313:6:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5295:25:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Item_$11681_storage", "typeString": "struct ConverterRegistryData.Item storage ref" } }, "id": 11993, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "valid", "nodeType": "MemberAccess", "referencedDeclaration": 11678, "src": "5295:31:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "functionReturnParameters": 11988, "id": 11994, "nodeType": "Return", "src": "5288:38:11" } ] }, "documentation": { "id": 11981, "nodeType": "StructuredDocumentation", "src": "5007:188:11", "text": " @dev checks whether or not a given value is a smart token\n @param _value value\n @return true if the given value is a smart token, false if not" }, "functionSelector": "4123ef60", "id": 11996, "implemented": true, "kind": "function", "modifiers": [], "name": "isSmartToken", "nodeType": "FunctionDefinition", "overrides": { "id": 11985, "nodeType": "OverrideSpecifier", "overrides": [], "src": "5253:8:11" }, "parameters": { "id": 11984, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 11983, "mutability": "mutable", "name": "_value", "nodeType": "VariableDeclaration", "overrides": null, "scope": 11996, "src": "5223:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 11982, "name": "address", "nodeType": "ElementaryTypeName", "src": "5223:7:11", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "5222:16:11" }, "returnParameters": { "id": 11988, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 11987, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 11996, "src": "5271:4:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 11986, "name": "bool", "nodeType": "ElementaryTypeName", "src": "5271:4:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "5270:6:11" }, "scope": 12324, "src": "5201:133:11", "stateMutability": "view", "virtual": false, "visibility": "external" }, { "baseFunctions": [ 13568 ], "body": { "id": 12007, "nodeType": "Block", "src": "5537:53:11", "statements": [ { "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 12003, "name": "liquidityPools", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11706, "src": "5555:14:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage", "typeString": "struct ConverterRegistryData.Items storage ref" } }, "id": 12004, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "array", "nodeType": "MemberAccess", "referencedDeclaration": 11684, "src": "5555:20:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 12005, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "5555:27:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 12002, "id": 12006, "nodeType": "Return", "src": "5548:34:11" } ] }, "documentation": { "id": 11997, "nodeType": "StructuredDocumentation", "src": "5342:115:11", "text": " @dev returns the number of liquidity pools\n @return number of liquidity pools" }, "functionSelector": "7a5f0ffd", "id": 12008, "implemented": true, "kind": "function", "modifiers": [], "name": "getLiquidityPoolCount", "nodeType": "FunctionDefinition", "overrides": { "id": 11999, "nodeType": "OverrideSpecifier", "overrides": [], "src": "5510:8:11" }, "parameters": { "id": 11998, "nodeType": "ParameterList", "parameters": [], "src": "5493:2:11" }, "returnParameters": { "id": 12002, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 12001, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12008, "src": "5528:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 12000, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5528:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "5527:9:11" }, "scope": 12324, "src": "5463:127:11", "stateMutability": "view", "virtual": false, "visibility": "external" }, { "baseFunctions": [ 13574 ], "body": { "id": 12019, "nodeType": "Block", "src": "5794:46:11", "statements": [ { "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 12016, "name": "liquidityPools", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11706, "src": "5812:14:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage", "typeString": "struct ConverterRegistryData.Items storage ref" } }, "id": 12017, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "array", "nodeType": "MemberAccess", "referencedDeclaration": 11684, "src": "5812:20:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "functionReturnParameters": 12015, "id": 12018, "nodeType": "Return", "src": "5805:27:11" } ] }, "documentation": { "id": 12009, "nodeType": "StructuredDocumentation", "src": "5598:111:11", "text": " @dev returns the list of liquidity pools\n @return list of liquidity pools" }, "functionSelector": "7f45c4c3", "id": 12020, "implemented": true, "kind": "function", "modifiers": [], "name": "getLiquidityPools", "nodeType": "FunctionDefinition", "overrides": { "id": 12011, "nodeType": "OverrideSpecifier", "overrides": [], "src": "5758:8:11" }, "parameters": { "id": 12010, "nodeType": "ParameterList", "parameters": [], "src": "5741:2:11" }, "returnParameters": { "id": 12015, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 12014, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12020, "src": "5776:16:11", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]" }, "typeName": { "baseType": { "id": 12012, "name": "address", "nodeType": "ElementaryTypeName", "src": "5776:7:11", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 12013, "length": null, "nodeType": "ArrayTypeName", "src": "5776:9:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } }, "value": null, "visibility": "internal" } ], "src": "5775:18:11" }, "scope": 12324, "src": "5715:125:11", "stateMutability": "view", "virtual": false, "visibility": "external" }, { "baseFunctions": [ 13581 ], "body": { "id": 12036, "nodeType": "Block", "src": "6104:72:11", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 12030, "name": "liquidityPools", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11706, "src": "6139:14:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage", "typeString": "struct ConverterRegistryData.Items storage ref" } }, "id": 12031, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "array", "nodeType": "MemberAccess", "referencedDeclaration": 11684, "src": "6139:20:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 12033, "indexExpression": { "argumentTypes": null, "id": 12032, "name": "_index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12023, "src": "6160:6:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6139:28:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 12029, "name": "IConverterAnchor", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 13349, "src": "6122:16:11", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IConverterAnchor_$13349_$", "typeString": "type(contract IConverterAnchor)" } }, "id": 12034, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6122:46:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" } }, "functionReturnParameters": 12028, "id": 12035, "nodeType": "Return", "src": "6115:53:11" } ] }, "documentation": { "id": 12021, "nodeType": "StructuredDocumentation", "src": "5848:158:11", "text": " @dev returns the liquidity pool at a given index\n @param _index index\n @return liquidity pool at the given index" }, "functionSelector": "a74498aa", "id": 12037, "implemented": true, "kind": "function", "modifiers": [], "name": "getLiquidityPool", "nodeType": "FunctionDefinition", "overrides": { "id": 12025, "nodeType": "OverrideSpecifier", "overrides": [], "src": "6068:8:11" }, "parameters": { "id": 12024, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 12023, "mutability": "mutable", "name": "_index", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12037, "src": "6038:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 12022, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6038:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "6037:16:11" }, "returnParameters": { "id": 12028, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 12027, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12037, "src": "6086:16:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" }, "typeName": { "contractScope": null, "id": 12026, "name": "IConverterAnchor", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 13349, "src": "6086:16:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" } }, "value": null, "visibility": "internal" } ], "src": "6085:18:11" }, "scope": 12324, "src": "6012:164:11", "stateMutability": "view", "virtual": false, "visibility": "external" }, { "baseFunctions": [ 13588 ], "body": { "id": 12052, "nodeType": "Block", "src": "6463:60:11", "statements": [ { "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 12046, "name": "liquidityPools", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11706, "src": "6481:14:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage", "typeString": "struct ConverterRegistryData.Items storage ref" } }, "id": 12047, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "table", "nodeType": "MemberAccess", "referencedDeclaration": 11688, "src": "6481:20:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Item_$11681_storage_$", "typeString": "mapping(address => struct ConverterRegistryData.Item storage ref)" } }, "id": 12049, "indexExpression": { "argumentTypes": null, "id": 12048, "name": "_value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12040, "src": "6502:6:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6481:28:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Item_$11681_storage", "typeString": "struct ConverterRegistryData.Item storage ref" } }, "id": 12050, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "valid", "nodeType": "MemberAccess", "referencedDeclaration": 11678, "src": "6481:34:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "functionReturnParameters": 12045, "id": 12051, "nodeType": "Return", "src": "6474:41:11" } ] }, "documentation": { "id": 12038, "nodeType": "StructuredDocumentation", "src": "6184:194:11", "text": " @dev checks whether or not a given value is a liquidity pool\n @param _value value\n @return true if the given value is a liquidity pool, false if not" }, "functionSelector": "e85455d7", "id": 12053, "implemented": true, "kind": "function", "modifiers": [], "name": "isLiquidityPool", "nodeType": "FunctionDefinition", "overrides": { "id": 12042, "nodeType": "OverrideSpecifier", "overrides": [], "src": "6439:8:11" }, "parameters": { "id": 12041, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 12040, "mutability": "mutable", "name": "_value", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12053, "src": "6409:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 12039, "name": "address", "nodeType": "ElementaryTypeName", "src": "6409:7:11", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "6408:16:11" }, "returnParameters": { "id": 12045, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 12044, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12053, "src": "6457:4:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 12043, "name": "bool", "nodeType": "ElementaryTypeName", "src": "6457:4:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "6456:6:11" }, "scope": 12324, "src": "6384:139:11", "stateMutability": "view", "virtual": false, "visibility": "external" }, { "baseFunctions": [ 13593 ], "body": { "id": 12064, "nodeType": "Block", "src": "6735:56:11", "statements": [ { "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 12060, "name": "convertibleTokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11708, "src": "6753:17:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Lists_$11702_storage", "typeString": "struct ConverterRegistryData.Lists storage ref" } }, "id": 12061, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "array", "nodeType": "MemberAccess", "referencedDeclaration": 11697, "src": "6753:23:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 12062, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "6753:30:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 12059, "id": 12063, "nodeType": "Return", "src": "6746:37:11" } ] }, "documentation": { "id": 12054, "nodeType": "StructuredDocumentation", "src": "6531:121:11", "text": " @dev returns the number of convertible tokens\n @return number of convertible tokens" }, "functionSelector": "69be4784", "id": 12065, "implemented": true, "kind": "function", "modifiers": [], "name": "getConvertibleTokenCount", "nodeType": "FunctionDefinition", "overrides": { "id": 12056, "nodeType": "OverrideSpecifier", "overrides": [], "src": "6708:8:11" }, "parameters": { "id": 12055, "nodeType": "ParameterList", "parameters": [], "src": "6691:2:11" }, "returnParameters": { "id": 12059, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 12058, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12065, "src": "6726:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 12057, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6726:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "6725:9:11" }, "scope": 12324, "src": "6658:133:11", "stateMutability": "view", "virtual": false, "visibility": "external" }, { "baseFunctions": [ 13599 ], "body": { "id": 12076, "nodeType": "Block", "src": "7004:49:11", "statements": [ { "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 12073, "name": "convertibleTokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11708, "src": "7022:17:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Lists_$11702_storage", "typeString": "struct ConverterRegistryData.Lists storage ref" } }, "id": 12074, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "array", "nodeType": "MemberAccess", "referencedDeclaration": 11697, "src": "7022:23:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "functionReturnParameters": 12072, "id": 12075, "nodeType": "Return", "src": "7015:30:11" } ] }, "documentation": { "id": 12066, "nodeType": "StructuredDocumentation", "src": "6799:117:11", "text": " @dev returns the list of convertible tokens\n @return list of convertible tokens" }, "functionSelector": "5f1b50fe", "id": 12077, "implemented": true, "kind": "function", "modifiers": [], "name": "getConvertibleTokens", "nodeType": "FunctionDefinition", "overrides": { "id": 12068, "nodeType": "OverrideSpecifier", "overrides": [], "src": "6968:8:11" }, "parameters": { "id": 12067, "nodeType": "ParameterList", "parameters": [], "src": "6951:2:11" }, "returnParameters": { "id": 12072, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 12071, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12077, "src": "6986:16:11", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]" }, "typeName": { "baseType": { "id": 12069, "name": "address", "nodeType": "ElementaryTypeName", "src": "6986:7:11", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 12070, "length": null, "nodeType": "ArrayTypeName", "src": "6986:9:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } }, "value": null, "visibility": "internal" } ], "src": "6985:18:11" }, "scope": 12324, "src": "6922:131:11", "stateMutability": "view", "virtual": false, "visibility": "external" }, { "baseFunctions": [ 13606 ], "body": { "id": 12093, "nodeType": "Block", "src": "7321:70:11", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 12087, "name": "convertibleTokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11708, "src": "7351:17:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Lists_$11702_storage", "typeString": "struct ConverterRegistryData.Lists storage ref" } }, "id": 12088, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "array", "nodeType": "MemberAccess", "referencedDeclaration": 11697, "src": "7351:23:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 12090, "indexExpression": { "argumentTypes": null, "id": 12089, "name": "_index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12080, "src": "7375:6:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "7351:31:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 12086, "name": "IERC20Token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21127, "src": "7339:11:11", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20Token_$21127_$", "typeString": "type(contract IERC20Token)" } }, "id": 12091, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7339:44:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" } }, "functionReturnParameters": 12085, "id": 12092, "nodeType": "Return", "src": "7332:51:11" } ] }, "documentation": { "id": 12078, "nodeType": "StructuredDocumentation", "src": "7061:164:11", "text": " @dev returns the convertible token at a given index\n @param _index index\n @return convertible token at the given index" }, "functionSelector": "865cf194", "id": 12094, "implemented": true, "kind": "function", "modifiers": [], "name": "getConvertibleToken", "nodeType": "FunctionDefinition", "overrides": { "id": 12082, "nodeType": "OverrideSpecifier", "overrides": [], "src": "7290:8:11" }, "parameters": { "id": 12081, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 12080, "mutability": "mutable", "name": "_index", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12094, "src": "7260:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 12079, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7260:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "7259:16:11" }, "returnParameters": { "id": 12085, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 12084, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12094, "src": "7308:11:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" }, "typeName": { "contractScope": null, "id": 12083, "name": "IERC20Token", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 21127, "src": "7308:11:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" } }, "value": null, "visibility": "internal" } ], "src": "7307:13:11" }, "scope": 12324, "src": "7231:160:11", "stateMutability": "view", "virtual": false, "visibility": "external" }, { "baseFunctions": [ 13613 ], "body": { "id": 12113, "nodeType": "Block", "src": "7687:80:11", "statements": [ { "expression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 12111, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 12103, "name": "convertibleTokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11708, "src": "7705:17:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Lists_$11702_storage", "typeString": "struct ConverterRegistryData.Lists storage ref" } }, "id": 12104, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "table", "nodeType": "MemberAccess", "referencedDeclaration": 11701, "src": "7705:23:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_List_$11694_storage_$", "typeString": "mapping(address => struct ConverterRegistryData.List storage ref)" } }, "id": 12106, "indexExpression": { "argumentTypes": null, "id": 12105, "name": "_value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12097, "src": "7729:6:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "7705:31:11", "typeDescriptions": { "typeIdentifier": "t_struct$_List_$11694_storage", "typeString": "struct ConverterRegistryData.List storage ref" } }, "id": 12107, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "items", "nodeType": "MemberAccess", "referencedDeclaration": 11693, "src": "7705:37:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage", "typeString": "struct ConverterRegistryData.Items storage ref" } }, "id": 12108, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "array", "nodeType": "MemberAccess", "referencedDeclaration": 11684, "src": "7705:43:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 12109, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "7705:50:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 12110, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7758:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "7705:54:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "functionReturnParameters": 12102, "id": 12112, "nodeType": "Return", "src": "7698:61:11" } ] }, "documentation": { "id": 12095, "nodeType": "StructuredDocumentation", "src": "7399:200:11", "text": " @dev checks whether or not a given value is a convertible token\n @param _value value\n @return true if the given value is a convertible token, false if not" }, "functionSelector": "3ab8857c", "id": 12114, "implemented": true, "kind": "function", "modifiers": [], "name": "isConvertibleToken", "nodeType": "FunctionDefinition", "overrides": { "id": 12099, "nodeType": "OverrideSpecifier", "overrides": [], "src": "7663:8:11" }, "parameters": { "id": 12098, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 12097, "mutability": "mutable", "name": "_value", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12114, "src": "7633:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 12096, "name": "address", "nodeType": "ElementaryTypeName", "src": "7633:7:11", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "7632:16:11" }, "returnParameters": { "id": 12102, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 12101, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12114, "src": "7681:4:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 12100, "name": "bool", "nodeType": "ElementaryTypeName", "src": "7681:4:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "7680:6:11" }, "scope": 12324, "src": "7605:162:11", "stateMutability": "view", "virtual": false, "visibility": "external" }, { "baseFunctions": [ 13620 ], "body": { "id": 12134, "nodeType": "Block", "src": "8144:96:11", "statements": [ { "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 12123, "name": "convertibleTokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11708, "src": "8162:17:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Lists_$11702_storage", "typeString": "struct ConverterRegistryData.Lists storage ref" } }, "id": 12124, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "table", "nodeType": "MemberAccess", "referencedDeclaration": 11701, "src": "8162:23:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_List_$11694_storage_$", "typeString": "mapping(address => struct ConverterRegistryData.List storage ref)" } }, "id": 12129, "indexExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 12127, "name": "_convertibleToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12117, "src": "8194:17:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" } ], "id": 12126, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8186:7:11", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 12125, "name": "address", "nodeType": "ElementaryTypeName", "src": "8186:7:11", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 12128, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8186:26:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "8162:51:11", "typeDescriptions": { "typeIdentifier": "t_struct$_List_$11694_storage", "typeString": "struct ConverterRegistryData.List storage ref" } }, "id": 12130, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "items", "nodeType": "MemberAccess", "referencedDeclaration": 11693, "src": "8162:57:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage", "typeString": "struct ConverterRegistryData.Items storage ref" } }, "id": 12131, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "array", "nodeType": "MemberAccess", "referencedDeclaration": 11684, "src": "8162:63:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 12132, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "8162:70:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 12122, "id": 12133, "nodeType": "Return", "src": "8155:77:11" } ] }, "documentation": { "id": 12115, "nodeType": "StructuredDocumentation", "src": "7775:247:11", "text": " @dev returns the number of smart tokens associated with a given convertible token\n @param _convertibleToken convertible token\n @return number of smart tokens associated with the given convertible token" }, "functionSelector": "a43d5e94", "id": 12135, "implemented": true, "kind": "function", "modifiers": [], "name": "getConvertibleTokenSmartTokenCount", "nodeType": "FunctionDefinition", "overrides": { "id": 12119, "nodeType": "OverrideSpecifier", "overrides": [], "src": "8117:8:11" }, "parameters": { "id": 12118, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 12117, "mutability": "mutable", "name": "_convertibleToken", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12135, "src": "8072:29:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" }, "typeName": { "contractScope": null, "id": 12116, "name": "IERC20Token", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 21127, "src": "8072:11:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" } }, "value": null, "visibility": "internal" } ], "src": "8071:31:11" }, "returnParameters": { "id": 12122, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 12121, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12135, "src": "8135:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 12120, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8135:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "8134:9:11" }, "scope": 12324, "src": "8028:212:11", "stateMutability": "view", "virtual": false, "visibility": "external" }, { "baseFunctions": [ 13628 ], "body": { "id": 12155, "nodeType": "Block", "src": "8618:89:11", "statements": [ { "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 12145, "name": "convertibleTokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11708, "src": "8636:17:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Lists_$11702_storage", "typeString": "struct ConverterRegistryData.Lists storage ref" } }, "id": 12146, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "table", "nodeType": "MemberAccess", "referencedDeclaration": 11701, "src": "8636:23:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_List_$11694_storage_$", "typeString": "mapping(address => struct ConverterRegistryData.List storage ref)" } }, "id": 12151, "indexExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 12149, "name": "_convertibleToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12138, "src": "8668:17:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" } ], "id": 12148, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8660:7:11", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 12147, "name": "address", "nodeType": "ElementaryTypeName", "src": "8660:7:11", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 12150, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8660:26:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "8636:51:11", "typeDescriptions": { "typeIdentifier": "t_struct$_List_$11694_storage", "typeString": "struct ConverterRegistryData.List storage ref" } }, "id": 12152, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "items", "nodeType": "MemberAccess", "referencedDeclaration": 11693, "src": "8636:57:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage", "typeString": "struct ConverterRegistryData.Items storage ref" } }, "id": 12153, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "array", "nodeType": "MemberAccess", "referencedDeclaration": 11684, "src": "8636:63:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "functionReturnParameters": 12144, "id": 12154, "nodeType": "Return", "src": "8629:70:11" } ] }, "documentation": { "id": 12136, "nodeType": "StructuredDocumentation", "src": "8248:243:11", "text": " @dev returns the list of smart tokens associated with a given convertible token\n @param _convertibleToken convertible token\n @return list of smart tokens associated with the given convertible token" }, "functionSelector": "f4fb86c0", "id": 12156, "implemented": true, "kind": "function", "modifiers": [], "name": "getConvertibleTokenSmartTokens", "nodeType": "FunctionDefinition", "overrides": { "id": 12140, "nodeType": "OverrideSpecifier", "overrides": [], "src": "8582:8:11" }, "parameters": { "id": 12139, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 12138, "mutability": "mutable", "name": "_convertibleToken", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12156, "src": "8537:29:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" }, "typeName": { "contractScope": null, "id": 12137, "name": "IERC20Token", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 21127, "src": "8537:11:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" } }, "value": null, "visibility": "internal" } ], "src": "8536:31:11" }, "returnParameters": { "id": 12144, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 12143, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12156, "src": "8600:16:11", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]" }, "typeName": { "baseType": { "id": 12141, "name": "address", "nodeType": "ElementaryTypeName", "src": "8600:7:11", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 12142, "length": null, "nodeType": "ArrayTypeName", "src": "8600:9:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } }, "value": null, "visibility": "internal" } ], "src": "8599:18:11" }, "scope": 12324, "src": "8497:210:11", "stateMutability": "view", "virtual": false, "visibility": "external" }, { "baseFunctions": [ 13637 ], "body": { "id": 12181, "nodeType": "Block", "src": "9095:115:11", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 12168, "name": "convertibleTokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11708, "src": "9130:17:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Lists_$11702_storage", "typeString": "struct ConverterRegistryData.Lists storage ref" } }, "id": 12169, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "table", "nodeType": "MemberAccess", "referencedDeclaration": 11701, "src": "9130:23:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_List_$11694_storage_$", "typeString": "mapping(address => struct ConverterRegistryData.List storage ref)" } }, "id": 12174, "indexExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 12172, "name": "_convertibleToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12159, "src": "9162:17:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" } ], "id": 12171, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9154:7:11", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 12170, "name": "address", "nodeType": "ElementaryTypeName", "src": "9154:7:11", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 12173, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9154:26:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "9130:51:11", "typeDescriptions": { "typeIdentifier": "t_struct$_List_$11694_storage", "typeString": "struct ConverterRegistryData.List storage ref" } }, "id": 12175, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "items", "nodeType": "MemberAccess", "referencedDeclaration": 11693, "src": "9130:57:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage", "typeString": "struct ConverterRegistryData.Items storage ref" } }, "id": 12176, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "array", "nodeType": "MemberAccess", "referencedDeclaration": 11684, "src": "9130:63:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 12178, "indexExpression": { "argumentTypes": null, "id": 12177, "name": "_index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12161, "src": "9194:6:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "9130:71:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 12167, "name": "IConverterAnchor", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 13349, "src": "9113:16:11", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IConverterAnchor_$13349_$", "typeString": "type(contract IConverterAnchor)" } }, "id": 12179, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9113:89:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" } }, "functionReturnParameters": 12166, "id": 12180, "nodeType": "Return", "src": "9106:96:11" } ] }, "documentation": { "id": 12157, "nodeType": "StructuredDocumentation", "src": "8715:238:11", "text": " @dev returns the smart token associated with a given convertible token at a given index\n @param _index index\n @return smart token associated with the given convertible token at the given index" }, "functionSelector": "d6c4b5b2", "id": 12182, "implemented": true, "kind": "function", "modifiers": [], "name": "getConvertibleTokenSmartToken", "nodeType": "FunctionDefinition", "overrides": { "id": 12163, "nodeType": "OverrideSpecifier", "overrides": [], "src": "9059:8:11" }, "parameters": { "id": 12162, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 12159, "mutability": "mutable", "name": "_convertibleToken", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12182, "src": "8998:29:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" }, "typeName": { "contractScope": null, "id": 12158, "name": "IERC20Token", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 21127, "src": "8998:11:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 12161, "mutability": "mutable", "name": "_index", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12182, "src": "9029:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 12160, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "9029:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "8997:47:11" }, "returnParameters": { "id": 12166, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 12165, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12182, "src": "9077:16:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" }, "typeName": { "contractScope": null, "id": 12164, "name": "IConverterAnchor", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 13349, "src": "9077:16:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IConverterAnchor_$13349", "typeString": "contract IConverterAnchor" } }, "value": null, "visibility": "internal" } ], "src": "9076:18:11" }, "scope": 12324, "src": "8959:251:11", "stateMutability": "view", "virtual": false, "visibility": "external" }, { "baseFunctions": [ 13646 ], "body": { "id": 12206, "nodeType": "Block", "src": "9647:103:11", "statements": [ { "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 12193, "name": "convertibleTokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 11708, "src": "9665:17:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Lists_$11702_storage", "typeString": "struct ConverterRegistryData.Lists storage ref" } }, "id": 12194, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "table", "nodeType": "MemberAccess", "referencedDeclaration": 11701, "src": "9665:23:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_List_$11694_storage_$", "typeString": "mapping(address => struct ConverterRegistryData.List storage ref)" } }, "id": 12199, "indexExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 12197, "name": "_convertibleToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12185, "src": "9697:17:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" } ], "id": 12196, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9689:7:11", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 12195, "name": "address", "nodeType": "ElementaryTypeName", "src": "9689:7:11", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 12198, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9689:26:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "9665:51:11", "typeDescriptions": { "typeIdentifier": "t_struct$_List_$11694_storage", "typeString": "struct ConverterRegistryData.List storage ref" } }, "id": 12200, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "items", "nodeType": "MemberAccess", "referencedDeclaration": 11693, "src": "9665:57:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage", "typeString": "struct ConverterRegistryData.Items storage ref" } }, "id": 12201, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "table", "nodeType": "MemberAccess", "referencedDeclaration": 11688, "src": "9665:63:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Item_$11681_storage_$", "typeString": "mapping(address => struct ConverterRegistryData.Item storage ref)" } }, "id": 12203, "indexExpression": { "argumentTypes": null, "id": 12202, "name": "_value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12187, "src": "9729:6:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "9665:71:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Item_$11681_storage", "typeString": "struct ConverterRegistryData.Item storage ref" } }, "id": 12204, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "valid", "nodeType": "MemberAccess", "referencedDeclaration": 11678, "src": "9665:77:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "functionReturnParameters": 12192, "id": 12205, "nodeType": "Return", "src": "9658:84:11" } ] }, "documentation": { "id": 12183, "nodeType": "StructuredDocumentation", "src": "9218:300:11", "text": " @dev checks whether or not a given value is a smart token of a given convertible token\n @param _convertibleToken convertible token\n @param _value value\n @return true if the given value is a smart token of the given convertible token, false it not" }, "functionSelector": "725b8786", "id": 12207, "implemented": true, "kind": "function", "modifiers": [], "name": "isConvertibleTokenSmartToken", "nodeType": "FunctionDefinition", "overrides": { "id": 12189, "nodeType": "OverrideSpecifier", "overrides": [], "src": "9623:8:11" }, "parameters": { "id": 12188, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 12185, "mutability": "mutable", "name": "_convertibleToken", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12207, "src": "9562:29:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" }, "typeName": { "contractScope": null, "id": 12184, "name": "IERC20Token", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 21127, "src": "9562:11:11", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Token_$21127", "typeString": "contract IERC20Token" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 12187, "mutability": "mutable", "name": "_value", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12207, "src": "9593:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 12186, "name": "address", "nodeType": "ElementaryTypeName", "src": "9593:7:11", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "9561:47:11" }, "returnParameters": { "id": 12192, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 12191, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12207, "src": "9641:4:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 12190, "name": "bool", "nodeType": "ElementaryTypeName", "src": "9641:4:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "9640:6:11" }, "scope": 12324, "src": "9524:226:11", "stateMutability": "view", "virtual": false, "visibility": "external" }, { "body": { "id": 12254, "nodeType": "Block", "src": "9988:219:11", "statements": [ { "assignments": [ 12219 ], "declarations": [ { "constant": false, "id": 12219, "mutability": "mutable", "name": "item", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12254, "src": "9999:17:11", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { "typeIdentifier": "t_struct$_Item_$11681_storage_ptr", "typeString": "struct ConverterRegistryData.Item" }, "typeName": { "contractScope": null, "id": 12218, "name": "Item", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11681, "src": "9999:4:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Item_$11681_storage_ptr", "typeString": "struct ConverterRegistryData.Item" } }, "value": null, "visibility": "internal" } ], "id": 12224, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 12220, "name": "_items", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12210, "src": "10019:6:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage_ptr", "typeString": "struct ConverterRegistryData.Items storage pointer" } }, "id": 12221, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "table", "nodeType": "MemberAccess", "referencedDeclaration": 11688, "src": "10019:12:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Item_$11681_storage_$", "typeString": "mapping(address => struct ConverterRegistryData.Item storage ref)" } }, "id": 12223, "indexExpression": { "argumentTypes": null, "id": 12222, "name": "_value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12212, "src": "10032:6:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10019:20:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Item_$11681_storage", "typeString": "struct ConverterRegistryData.Item storage ref" } }, "nodeType": "VariableDeclarationStatement", "src": "9999:40:11" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 12228, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "10058:11:11", "subExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 12226, "name": "item", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12219, "src": "10059:4:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Item_$11681_storage_ptr", "typeString": "struct ConverterRegistryData.Item storage pointer" } }, "id": 12227, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "valid", "nodeType": "MemberAccess", "referencedDeclaration": 11678, "src": "10059:10:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "4552525f494e56414c49445f4954454d", "id": 12229, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "10071:18:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_45c52aff26d012f687a90a37723f3c6469b3bdb8dce3fb6f14072d935b05b47b", "typeString": "literal_string \"ERR_INVALID_ITEM\"" }, "value": "ERR_INVALID_ITEM" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_45c52aff26d012f687a90a37723f3c6469b3bdb8dce3fb6f14072d935b05b47b", "typeString": "literal_string \"ERR_INVALID_ITEM\"" } ], "id": 12225, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "10050:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 12230, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10050:40:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 12231, "nodeType": "ExpressionStatement", "src": "10050:40:11" }, { "expression": { "argumentTypes": null, "id": 12238, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 12232, "name": "item", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12219, "src": "10103:4:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Item_$11681_storage_ptr", "typeString": "struct ConverterRegistryData.Item storage pointer" } }, "id": 12234, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 11680, "src": "10103:10:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 12235, "name": "_items", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12210, "src": "10116:6:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage_ptr", "typeString": "struct ConverterRegistryData.Items storage pointer" } }, "id": 12236, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "array", "nodeType": "MemberAccess", "referencedDeclaration": 11684, "src": "10116:12:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 12237, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "10116:19:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "10103:32:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 12239, "nodeType": "ExpressionStatement", "src": "10103:32:11" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 12245, "name": "_value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12212, "src": "10164:6:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 12240, "name": "_items", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12210, "src": "10146:6:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage_ptr", "typeString": "struct ConverterRegistryData.Items storage pointer" } }, "id": 12243, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "array", "nodeType": "MemberAccess", "referencedDeclaration": 11684, "src": "10146:12:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 12244, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "push", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "10146:17:11", "typeDescriptions": { "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, "id": 12246, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10146:25:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 12247, "nodeType": "ExpressionStatement", "src": "10146:25:11" }, { "expression": { "argumentTypes": null, "id": 12252, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 12248, "name": "item", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12219, "src": "10182:4:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Item_$11681_storage_ptr", "typeString": "struct ConverterRegistryData.Item storage pointer" } }, "id": 12250, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "valid", "nodeType": "MemberAccess", "referencedDeclaration": 11678, "src": "10182:10:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", "id": 12251, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "10195:4:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "src": "10182:17:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 12253, "nodeType": "ExpressionStatement", "src": "10182:17:11" } ] }, "documentation": { "id": 12208, "nodeType": "StructuredDocumentation", "src": "9758:139:11", "text": " @dev adds an item to a list of items\n @param _items list of items\n @param _value item's value" }, "id": 12255, "implemented": true, "kind": "function", "modifiers": [ { "arguments": [ { "argumentTypes": null, "id": 12215, "name": "_value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12212, "src": "9980:6:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "id": 12216, "modifierName": { "argumentTypes": null, "id": 12214, "name": "validAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 22618, "src": "9967:12:11", "typeDescriptions": { "typeIdentifier": "t_modifier$_t_address_$", "typeString": "modifier (address)" } }, "nodeType": "ModifierInvocation", "src": "9967:20:11" } ], "name": "addItem", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 12213, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 12210, "mutability": "mutable", "name": "_items", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12255, "src": "9920:20:11", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage_ptr", "typeString": "struct ConverterRegistryData.Items" }, "typeName": { "contractScope": null, "id": 12209, "name": "Items", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11689, "src": "9920:5:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage_ptr", "typeString": "struct ConverterRegistryData.Items" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 12212, "mutability": "mutable", "name": "_value", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12255, "src": "9942:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 12211, "name": "address", "nodeType": "ElementaryTypeName", "src": "9942:7:11", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "9919:38:11" }, "returnParameters": { "id": 12217, "nodeType": "ParameterList", "parameters": [], "src": "9988:0:11" }, "scope": 12324, "src": "9903:304:11", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" }, { "body": { "id": 12322, "nodeType": "Block", "src": "10453:346:11", "statements": [ { "assignments": [ 12267 ], "declarations": [ { "constant": false, "id": 12267, "mutability": "mutable", "name": "item", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12322, "src": "10464:17:11", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { "typeIdentifier": "t_struct$_Item_$11681_storage_ptr", "typeString": "struct ConverterRegistryData.Item" }, "typeName": { "contractScope": null, "id": 12266, "name": "Item", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11681, "src": "10464:4:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Item_$11681_storage_ptr", "typeString": "struct ConverterRegistryData.Item" } }, "value": null, "visibility": "internal" } ], "id": 12272, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 12268, "name": "_items", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12258, "src": "10484:6:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage_ptr", "typeString": "struct ConverterRegistryData.Items storage pointer" } }, "id": 12269, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "table", "nodeType": "MemberAccess", "referencedDeclaration": 11688, "src": "10484:12:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Item_$11681_storage_$", "typeString": "mapping(address => struct ConverterRegistryData.Item storage ref)" } }, "id": 12271, "indexExpression": { "argumentTypes": null, "id": 12270, "name": "_value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12260, "src": "10497:6:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10484:20:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Item_$11681_storage", "typeString": "struct ConverterRegistryData.Item storage ref" } }, "nodeType": "VariableDeclarationStatement", "src": "10464:40:11" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 12274, "name": "item", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12267, "src": "10523:4:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Item_$11681_storage_ptr", "typeString": "struct ConverterRegistryData.Item storage pointer" } }, "id": 12275, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "valid", "nodeType": "MemberAccess", "referencedDeclaration": 11678, "src": "10523:10:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "4552525f494e56414c49445f4954454d", "id": 12276, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "10535:18:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_45c52aff26d012f687a90a37723f3c6469b3bdb8dce3fb6f14072d935b05b47b", "typeString": "literal_string \"ERR_INVALID_ITEM\"" }, "value": "ERR_INVALID_ITEM" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_45c52aff26d012f687a90a37723f3c6469b3bdb8dce3fb6f14072d935b05b47b", "typeString": "literal_string \"ERR_INVALID_ITEM\"" } ], "id": 12273, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "10515:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 12277, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10515:39:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 12278, "nodeType": "ExpressionStatement", "src": "10515:39:11" }, { "assignments": [ 12280 ], "declarations": [ { "constant": false, "id": 12280, "mutability": "mutable", "name": "lastValue", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12322, "src": "10567:17:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 12279, "name": "address", "nodeType": "ElementaryTypeName", "src": "10567:7:11", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 12289, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 12281, "name": "_items", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12258, "src": "10587:6:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage_ptr", "typeString": "struct ConverterRegistryData.Items storage pointer" } }, "id": 12282, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "array", "nodeType": "MemberAccess", "referencedDeclaration": 11684, "src": "10587:12:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 12288, "indexExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 12287, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 12283, "name": "_items", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12258, "src": "10600:6:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage_ptr", "typeString": "struct ConverterRegistryData.Items storage pointer" } }, "id": 12284, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "array", "nodeType": "MemberAccess", "referencedDeclaration": 11684, "src": "10600:12:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 12285, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "10600:19:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "argumentTypes": null, "hexValue": "31", "id": 12286, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10622:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "10600:23:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10587:37:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "10567:57:11" }, { "expression": { "argumentTypes": null, "id": 12298, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 12290, "name": "_items", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12258, "src": "10635:6:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage_ptr", "typeString": "struct ConverterRegistryData.Items storage pointer" } }, "id": 12293, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "table", "nodeType": "MemberAccess", "referencedDeclaration": 11688, "src": "10635:12:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Item_$11681_storage_$", "typeString": "mapping(address => struct ConverterRegistryData.Item storage ref)" } }, "id": 12294, "indexExpression": { "argumentTypes": null, "id": 12292, "name": "lastValue", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12280, "src": "10648:9:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10635:23:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Item_$11681_storage", "typeString": "struct ConverterRegistryData.Item storage ref" } }, "id": 12295, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 11680, "src": "10635:29:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 12296, "name": "item", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12267, "src": "10667:4:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Item_$11681_storage_ptr", "typeString": "struct ConverterRegistryData.Item storage pointer" } }, "id": 12297, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 11680, "src": "10667:10:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "10635:42:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 12299, "nodeType": "ExpressionStatement", "src": "10635:42:11" }, { "expression": { "argumentTypes": null, "id": 12307, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 12300, "name": "_items", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12258, "src": "10688:6:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage_ptr", "typeString": "struct ConverterRegistryData.Items storage pointer" } }, "id": 12304, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "array", "nodeType": "MemberAccess", "referencedDeclaration": 11684, "src": "10688:12:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 12305, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 12302, "name": "item", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12267, "src": "10701:4:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Item_$11681_storage_ptr", "typeString": "struct ConverterRegistryData.Item storage pointer" } }, "id": 12303, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "index", "nodeType": "MemberAccess", "referencedDeclaration": 11680, "src": "10701:10:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "10688:24:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 12306, "name": "lastValue", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12280, "src": "10715:9:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "10688:36:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 12308, "nodeType": "ExpressionStatement", "src": "10688:36:11" }, { "expression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 12309, "name": "_items", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12258, "src": "10735:6:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage_ptr", "typeString": "struct ConverterRegistryData.Items storage pointer" } }, "id": 12312, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "array", "nodeType": "MemberAccess", "referencedDeclaration": 11684, "src": "10735:12:11", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, "id": 12313, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "pop", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "10735:16:11", "typeDescriptions": { "typeIdentifier": "t_function_arraypop_nonpayable$__$returns$__$", "typeString": "function ()" } }, "id": 12314, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10735:18:11", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 12315, "nodeType": "ExpressionStatement", "src": "10735:18:11" }, { "expression": { "argumentTypes": null, "id": 12320, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "delete", "prefix": true, "src": "10764:27:11", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 12316, "name": "_items", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12258, "src": "10771:6:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage_ptr", "typeString": "struct ConverterRegistryData.Items storage pointer" } }, "id": 12317, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "table", "nodeType": "MemberAccess", "referencedDeclaration": 11688, "src": "10771:12:11", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Item_$11681_storage_$", "typeString": "mapping(address => struct ConverterRegistryData.Item storage ref)" } }, "id": 12319, "indexExpression": { "argumentTypes": null, "id": 12318, "name": "_value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12260, "src": "10784:6:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "10771:20:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Item_$11681_storage", "typeString": "struct ConverterRegistryData.Item storage ref" } }, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 12321, "nodeType": "ExpressionStatement", "src": "10764:27:11" } ] }, "documentation": { "id": 12256, "nodeType": "StructuredDocumentation", "src": "10215:144:11", "text": " @dev removes an item from a list of items\n @param _items list of items\n @param _value item's value" }, "id": 12323, "implemented": true, "kind": "function", "modifiers": [ { "arguments": [ { "argumentTypes": null, "id": 12263, "name": "_value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 12260, "src": "10445:6:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "id": 12264, "modifierName": { "argumentTypes": null, "id": 12262, "name": "validAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 22618, "src": "10432:12:11", "typeDescriptions": { "typeIdentifier": "t_modifier$_t_address_$", "typeString": "modifier (address)" } }, "nodeType": "ModifierInvocation", "src": "10432:20:11" } ], "name": "removeItem", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 12261, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 12258, "mutability": "mutable", "name": "_items", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12323, "src": "10385:20:11", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage_ptr", "typeString": "struct ConverterRegistryData.Items" }, "typeName": { "contractScope": null, "id": 12257, "name": "Items", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 11689, "src": "10385:5:11", "typeDescriptions": { "typeIdentifier": "t_struct$_Items_$11689_storage_ptr", "typeString": "struct ConverterRegistryData.Items" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 12260, "mutability": "mutable", "name": "_value", "nodeType": "VariableDeclaration", "overrides": null, "scope": 12323, "src": "10407:14:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 12259, "name": "address", "nodeType": "ElementaryTypeName", "src": "10407:7:11", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "10384:38:11" }, "returnParameters": { "id": 12265, "nodeType": "ParameterList", "parameters": [], "src": "10453:0:11" }, "scope": 12324, "src": "10365:434:11", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" } ], "scope": 12325, "src": "752:10050:11" } ], "src": "52:10752:11" }, "compiler": { "name": "solc", "version": "0.6.12+commit.27d51765.Emscripten.clang" }, "networks": { "42": { "events": { "0x343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a": { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_prevOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_newOwner", "type": "address" } ], "name": "OwnerUpdate", "type": "event" } }, "links": {}, "address": "0xd0097a901AF4ac2E63A5b6E86be8Ad91f10b05d7", "transactionHash": "0x89fa917fc8afde60ec81e4388b75a298bf821df70589964493f8950d8fc3f63d" }, "8995": { "events": { "0x343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a": { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_prevOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_newOwner", "type": "address" } ], "name": "OwnerUpdate", "type": "event" } }, "links": {}, "address": "0xd0097a901AF4ac2E63A5b6E86be8Ad91f10b05d7", "transactionHash": "0x89fa917fc8afde60ec81e4388b75a298bf821df70589964493f8950d8fc3f63d" }, "1604964387852": { "events": { "0x343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a": { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_prevOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_newOwner", "type": "address" } ], "name": "OwnerUpdate", "type": "event" } }, "links": {}, "address": "0x55Ff16F5765c13A4446b511b596263C1De8Dfc26", "transactionHash": "0x144e03bae03b254034eaa0e1aee71eb82f73230d9588852d68d86a8f921304c1" }, "1604964469407": { "events": { "0x343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a": { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_prevOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_newOwner", "type": "address" } ], "name": "OwnerUpdate", "type": "event" } }, "links": {}, "address": "0xAC3ff05D43718dF1d4c0F9363Baec946609640BA", "transactionHash": "0xa9dc657a9abf000cda08ff7cca415975f43550f7f240e7be3e37f3f888e5485a" }, "1604965528035": { "events": { "0x343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a": { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_prevOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_newOwner", "type": "address" } ], "name": "OwnerUpdate", "type": "event" } }, "links": {}, "address": "0xcF7f75A6080BeA51a04A5d10B6f2A9eD4fA94160", "transactionHash": "0xfe909296dec939d70261c1d9f24e15e47fb1eda091150932ba01fa5330ab0ae4" }, "1604965645554": { "events": { "0x343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a": { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_prevOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_newOwner", "type": "address" } ], "name": "OwnerUpdate", "type": "event" } }, "links": {}, "address": "0x48ec918ea761D509b367fe291A0980648554181C", "transactionHash": "0x98be38342bdb36332b2c7fa19cab1741f3af7ab71882436748519f23e938dfbd" }, "1604965679541": { "events": { "0x343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a": { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_prevOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_newOwner", "type": "address" } ], "name": "OwnerUpdate", "type": "event" } }, "links": {}, "address": "0x87745E2a343213bBB441dcd051DdF097a013892E", "transactionHash": "0x2c03673176e2c2328055a2a41b8cc82543c7a9986ff766e19a5cf2d67a951489" }, "1604965719492": { "events": { "0x343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a": { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_prevOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_newOwner", "type": "address" } ], "name": "OwnerUpdate", "type": "event" } }, "links": {}, "address": "0xD382D4E21484C60847a48E52122cCf704C731bFf", "transactionHash": "0x753f7963061ecd52d6348c9b8af34721f84069b72fcb487c9226d29ccf3771a9" }, "1604965760834": { "events": { "0x343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a": { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_prevOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_newOwner", "type": "address" } ], "name": "OwnerUpdate", "type": "event" } }, "links": {}, "address": "0x6076e2Dbe065826C21C4bB82e05D0e5fd1D92d15", "transactionHash": "0x1c4d1c3a519f64956bc6b5727cf1248addf3d8d8369b350d008125b6710c035d" } }, "schemaVersion": "3.2.3", "updatedAt": "2020-11-10T14:20:41.912Z", "networkType": "ethereum", "devdoc": { "details": "The ConverterRegistryData contract is an integral part of the converter registry as it serves as the database contract that holds all registry data. The registry is separated into two different contracts for upgradability - the data contract is harder to upgrade as it requires migrating all registry data into a new contract, while the registry contract itself can be easily upgraded. For that same reason, the data contract is simple and contains no logic beyond the basic data access utilities that it exposes.", "kind": "dev", "methods": { "acceptOwnership()": { "details": "used by a new owner to accept an ownership transfer" }, "addConvertibleToken(address,address)": { "details": "adds a convertible token", "params": { "_anchor": "associated smart token", "_convertibleToken": "convertible token" } }, "addLiquidityPool(address)": { "details": "adds a liquidity pool", "params": { "_liquidityPoolAnchor": "liquidity pool" } }, "addSmartToken(address)": { "details": "adds a smart token", "params": { "_anchor": "smart token" } }, "constructor": { "details": "initializes a new ConverterRegistryData instance", "params": { "_registry": "address of a contract registry contract" } }, "getConvertibleToken(uint256)": { "details": "returns the convertible token at a given index", "params": { "_index": "index" }, "returns": { "_0": "convertible token at the given index" } }, "getConvertibleTokenCount()": { "details": "returns the number of convertible tokens", "returns": { "_0": "number of convertible tokens" } }, "getConvertibleTokenSmartToken(address,uint256)": { "details": "returns the smart token associated with a given convertible token at a given index", "params": { "_index": "index" }, "returns": { "_0": "smart token associated with the given convertible token at the given index" } }, "getConvertibleTokenSmartTokenCount(address)": { "details": "returns the number of smart tokens associated with a given convertible token", "params": { "_convertibleToken": "convertible token" }, "returns": { "_0": "number of smart tokens associated with the given convertible token" } }, "getConvertibleTokenSmartTokens(address)": { "details": "returns the list of smart tokens associated with a given convertible token", "params": { "_convertibleToken": "convertible token" }, "returns": { "_0": "list of smart tokens associated with the given convertible token" } }, "getConvertibleTokens()": { "details": "returns the list of convertible tokens", "returns": { "_0": "list of convertible tokens" } }, "getLiquidityPool(uint256)": { "details": "returns the liquidity pool at a given index", "params": { "_index": "index" }, "returns": { "_0": "liquidity pool at the given index" } }, "getLiquidityPoolCount()": { "details": "returns the number of liquidity pools", "returns": { "_0": "number of liquidity pools" } }, "getLiquidityPools()": { "details": "returns the list of liquidity pools", "returns": { "_0": "list of liquidity pools" } }, "getSmartToken(uint256)": { "details": "returns the smart token at a given index", "params": { "_index": "index" }, "returns": { "_0": "smart token at the given index" } }, "getSmartTokenCount()": { "details": "returns the number of smart tokens", "returns": { "_0": "number of smart tokens" } }, "getSmartTokens()": { "details": "returns the list of smart tokens", "returns": { "_0": "list of smart tokens" } }, "isConvertibleToken(address)": { "details": "checks whether or not a given value is a convertible token", "params": { "_value": "value" }, "returns": { "_0": "true if the given value is a convertible token, false if not" } }, "isConvertibleTokenSmartToken(address,address)": { "details": "checks whether or not a given value is a smart token of a given convertible token", "params": { "_convertibleToken": "convertible token", "_value": "value" }, "returns": { "_0": "true if the given value is a smart token of the given convertible token, false it not" } }, "isLiquidityPool(address)": { "details": "checks whether or not a given value is a liquidity pool", "params": { "_value": "value" }, "returns": { "_0": "true if the given value is a liquidity pool, false if not" } }, "isSmartToken(address)": { "details": "checks whether or not a given value is a smart token", "params": { "_value": "value" }, "returns": { "_0": "true if the given value is a smart token, false if not" } }, "removeConvertibleToken(address,address)": { "details": "removes a convertible token", "params": { "_anchor": "associated smart token", "_convertibleToken": "convertible token" } }, "removeLiquidityPool(address)": { "details": "removes a liquidity pool", "params": { "_liquidityPoolAnchor": "liquidity pool" } }, "removeSmartToken(address)": { "details": "removes a smart token", "params": { "_anchor": "smart token" } }, "restoreRegistry()": { "details": "restores the previous contract-registry" }, "restrictRegistryUpdate(bool)": { "details": "restricts the permission to update the contract-registry", "params": { "_onlyOwnerCanUpdateRegistry": "indicates whether or not permission is restricted to owner only" } }, "transferOwnership(address)": { "details": "allows transferring the contract ownership the new owner still needs to accept the transfer can only be called by the contract owner", "params": { "_newOwner": "new contract owner" } }, "updateRegistry()": { "details": "updates to the new contract-registry" } }, "version": 1 }, "userdoc": { "kind": "user", "methods": {}, "version": 1 } }