{
  "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
  }
}