{
  "contractName": "TestConverterFactory",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint16",
          "name": "_type",
          "type": "uint16"
        },
        {
          "indexed": true,
          "internalType": "contract IConverter",
          "name": "_converter",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "NewConverter",
      "type": "event"
    },
    {
      "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": "uint16",
          "name": "",
          "type": "uint16"
        }
      ],
      "name": "anchorFactories",
      "outputs": [
        {
          "internalType": "contract ITypedConverterAnchorFactory",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint16",
          "name": "",
          "type": "uint16"
        }
      ],
      "name": "converterFactories",
      "outputs": [
        {
          "internalType": "contract ITypedConverterFactory",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "createdAnchor",
      "outputs": [
        {
          "internalType": "contract IConverterAnchor",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "createdConverter",
      "outputs": [
        {
          "internalType": "contract IConverter",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint16",
          "name": "",
          "type": "uint16"
        }
      ],
      "name": "customFactories",
      "outputs": [
        {
          "internalType": "contract ITypedConverterCustomFactory",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "newOwner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ITypedConverterAnchorFactory",
          "name": "_factory",
          "type": "address"
        }
      ],
      "name": "registerTypedConverterAnchorFactory",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ITypedConverterCustomFactory",
          "name": "_factory",
          "type": "address"
        }
      ],
      "name": "registerTypedConverterCustomFactory",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ITypedConverterFactory",
          "name": "_factory",
          "type": "address"
        }
      ],
      "name": "registerTypedConverterFactory",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint16",
          "name": "_converterType",
          "type": "uint16"
        },
        {
          "internalType": "string",
          "name": "_name",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "_symbol",
          "type": "string"
        },
        {
          "internalType": "uint8",
          "name": "_decimals",
          "type": "uint8"
        }
      ],
      "name": "createAnchor",
      "outputs": [
        {
          "internalType": "contract IConverterAnchor",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint16",
          "name": "_type",
          "type": "uint16"
        },
        {
          "internalType": "contract IConverterAnchor",
          "name": "_anchor",
          "type": "address"
        },
        {
          "internalType": "contract IContractRegistry",
          "name": "_registry",
          "type": "address"
        },
        {
          "internalType": "uint32",
          "name": "_maxConversionFee",
          "type": "uint32"
        }
      ],
      "name": "createConverter",
      "outputs": [
        {
          "internalType": "contract IConverter",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"_type\",\"type\":\"uint16\"},{\"indexed\":true,\"internalType\":\"contract IConverter\",\"name\":\"_converter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"NewConverter\",\"type\":\"event\"},{\"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\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"name\":\"anchorFactories\",\"outputs\":[{\"internalType\":\"contract ITypedConverterAnchorFactory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"name\":\"converterFactories\",\"outputs\":[{\"internalType\":\"contract ITypedConverterFactory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_converterType\",\"type\":\"uint16\"},{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"_decimals\",\"type\":\"uint8\"}],\"name\":\"createAnchor\",\"outputs\":[{\"internalType\":\"contract IConverterAnchor\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_type\",\"type\":\"uint16\"},{\"internalType\":\"contract IConverterAnchor\",\"name\":\"_anchor\",\"type\":\"address\"},{\"internalType\":\"contract IContractRegistry\",\"name\":\"_registry\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_maxConversionFee\",\"type\":\"uint32\"}],\"name\":\"createConverter\",\"outputs\":[{\"internalType\":\"contract IConverter\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"createdAnchor\",\"outputs\":[{\"internalType\":\"contract IConverterAnchor\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"createdConverter\",\"outputs\":[{\"internalType\":\"contract IConverter\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"name\":\"customFactories\",\"outputs\":[{\"internalType\":\"contract ITypedConverterCustomFactory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"newOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ITypedConverterAnchorFactory\",\"name\":\"_factory\",\"type\":\"address\"}],\"name\":\"registerTypedConverterAnchorFactory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ITypedConverterCustomFactory\",\"name\":\"_factory\",\"type\":\"address\"}],\"name\":\"registerTypedConverterCustomFactory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ITypedConverterFactory\",\"name\":\"_factory\",\"type\":\"address\"}],\"name\":\"registerTypedConverterFactory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"used by a new owner to accept an ownership transfer\"},\"createAnchor(uint16,string,string,uint8)\":{\"details\":\"creates a new converter anchor with the given arguments and transfers the ownership to the caller\",\"params\":{\"_converterType\":\"converter type, see ConverterBase contract main doc\",\"_decimals\":\"decimals\",\"_name\":\"name\",\"_symbol\":\"symbol\"},\"returns\":{\"_0\":\"new converter anchor\"}},\"createConverter(uint16,address,address,uint32)\":{\"details\":\"creates a new converter with the given arguments and transfers the ownership to the caller\",\"params\":{\"_anchor\":\"anchor governed by the converter\",\"_maxConversionFee\":\"maximum conversion fee, represented in ppm\",\"_registry\":\"address of a contract registry contract\",\"_type\":\"converter type, see ConverterBase contract main doc\"},\"returns\":{\"_0\":\"new converter\"}},\"registerTypedConverterAnchorFactory(address)\":{\"details\":\"initializes the factory with a specific typed converter anchor factory can only be called by the owner\",\"params\":{\"_factory\":\"typed converter anchor factory\"}},\"registerTypedConverterCustomFactory(address)\":{\"details\":\"initializes the factory with a specific typed converter custom factory can only be called by the owner\",\"params\":{\"_factory\":\"typed converter custom factory\"}},\"registerTypedConverterFactory(address)\":{\"details\":\"initializes the factory with a specific typed converter factory can only be called by the owner\",\"params\":{\"_factory\":\"typed converter factory\"}},\"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\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/helpers/TestConverterFactory.sol\":\"TestConverterFactory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/ConverterFactory.sol\":{\"keccak256\":\"0x41714dbd78e5e77c16aa74186a29e9dada20138e511e9fe0acea24b7184c3782\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://55420446cbabc53516b8ec7a77febbe3f9fc50af97ab97df208477c833f60edb\",\"dweb:/ipfs/QmPMCrQBhDLovSdUHushF2pK6sgjcQCGHNYpTCAPkeBiZB\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/interfaces/IConverter.sol\":{\"keccak256\":\"0x18b0d73a3d5ee951ede1b3f840ed35b40570e34975703079a4451555f4dd089b\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://1cd7263f1ef60793e3929509150420037df9a1194c3d0f40bb2ff5516d6a373f\",\"dweb:/ipfs/QmNUbsZt2rzWPjStYycgz3vMbNP4VrAqZPRAK39QNqUoos\"]},\"/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/IConverterFactory.sol\":{\"keccak256\":\"0x40a8b6a5dd24f48b0c51c9f784c2e5df5afbadad9459873c25163f13f68c99dd\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://6ad87f96e9e812869d79396d3415f89fabd1f068861f1c5c92bac09898938070\",\"dweb:/ipfs/QmaHUVyRsjUrQNtWnRhSnfPXMbwnFgpNwZvL9BMC5Xxagb\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/interfaces/ITypedConverterAnchorFactory.sol\":{\"keccak256\":\"0x33bbe6f5f485bfec1a21a1da83cf9044e6f320d075a3ee942886653537cc5fe9\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://7fd8f0b7c8edaf6c0d38fbef3b7a72ad02e7d228cc6a8717c094e0b6dc099d09\",\"dweb:/ipfs/QmXdT9GtrbUryT1Wxf2xnRtUXNVcKqFUDe8BwpPKcYacmo\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/interfaces/ITypedConverterCustomFactory.sol\":{\"keccak256\":\"0xe9e91f22d45e1c39dd441bed511d5fa6acffe83910f42ea7abcfd300f59daaaf\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://621881bd2a74632b697d87e4c3253142f8758364122240d5cc18826b18bfef80\",\"dweb:/ipfs/QmcTPevgXAYM7Li4r3rKn8uqRF2hWpid2uNBwymysYjLWp\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/interfaces/ITypedConverterFactory.sol\":{\"keccak256\":\"0xe82abff9b17574a0ac6ec6b97d192b2a31fd85d465fba99f942852921134d1be\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://5e9622922c6f24fbfb7f0730b74baba78e9a508e11ceefd693fbb295d8c1cc61\",\"dweb:/ipfs/QmYbatGXAE3pkqMMcK2eBCBa1F7ndSd9SYfH9HhkRSLmtK\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/helpers/TestConverterFactory.sol\":{\"keccak256\":\"0x760f2f4127c2de103b937e416480c2a7ebc02054afd204eeb7083c4f609ec38c\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://97de31aad810e9abc63ae4593447a4e57b12ee26b79c42bb22dedb846eb8e8f5\",\"dweb:/ipfs/QmfREFB9MmutBzpyZsejPWmjXeYeKN8YM512jijenQvxXf\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/token/ERC20Token.sol\":{\"keccak256\":\"0xf64a993754bb4afcdfda9e8fe377c2c8a198f23b39e954f5ee3f9f2825958ebd\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://9ee0b7fd792a589b8321f1f13686fe5d5ae949288b124c1a57e2ad895c87e915\",\"dweb:/ipfs/QmTCRx2G6rJAhX9FyYkV4Gx69owVDYSkjNGNFrJGQ7Xnik\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/token/SmartToken.sol\":{\"keccak256\":\"0xf5036eb68eef5c9e8c8065c359e4a6f360a1ff1371129dc6a01ebcab29f4c034\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://99f904a959fa0c1237afc6e02342300be0e5eb2d9d96e9f8cd29dd2c52d1837b\",\"dweb:/ipfs/QmNxF79PB1fDsWDpCurH97mRVMgm56jACjf2KNj8syw4DG\"]},\"/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/token/interfaces/ISmartToken.sol\":{\"keccak256\":\"0x5cfc15e7a23a9872059b0cea4d2ae902c3fc074a39e1c645036ce38ad47881ec\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://890ee09d24de5778e34c4c27d1377d83d378e8f4a13fcb94d5102f61d4749cce\",\"dweb:/ipfs/QmT89f61fmsUN1BVdebKxUc5VU7sitiP33LNk7TTtF18oj\"]},\"/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/SafeMath.sol\":{\"keccak256\":\"0x1ab7391a19ca8a3ad2f3c4a1074e080d4d76dfdb834637bdd0c1e6b6acdf28af\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://d6d8c99621ca884b72da2d84eddfec8ec8c5533915691d6eec94a07adf445608\",\"dweb:/ipfs/QmaXr6DN7VbfxfMn3PsTy7SAMgZVVXbdeaw11BsAjVL2x1\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/TokenHandler.sol\":{\"keccak256\":\"0xf65b87e3bf3343e368da67878c19d1a043a1025b10e9053d3562b53b4aa447fe\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://b85c5d96642c14c53b8d5062eecd4d27d3bdb457d1d0f130900763a75a512eb7\",\"dweb:/ipfs/QmUHtbqC1khqnRZXYn11Aykus4m5e9MVNUWqorxhpr5ipJ\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/TokenHolder.sol\":{\"keccak256\":\"0xac6bc102eff6c1bb8c1bb4466eab50322c7c101e2e33d577dd3035f106627577\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://9fdbda2d4509260ca3dd43654bdaea07ef18a5e04213ff16e38e3b4abad78a5f\",\"dweb:/ipfs/QmPb69rzX1DwDeEhhfzqQNS3U2bfGcFjXNaV5ffHsZHzfP\"]},\"/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\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/interfaces/IWhitelist.sol\":{\"keccak256\":\"0x356ad553ceeaea04d7cb8f0d6a5663c47dfccb2bd82517348128f032416ee34a\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://9ea3bbb9945144ead2c1392351f2f9f7444af78569f2b95da2e68bb6b919db52\",\"dweb:/ipfs/QmPyUAk44Kj7nJB4tzYqeSXWHyYP51mRNynEmWra9m4eKS\"]}},\"version\":1}",
  "bytecode": "[encoded data, 16072 characters]",
  "deployedBytecode": "[encoded data, 15972 characters]",
  "immutableReferences": {},
  "sourceMap": "193:714:39:-:0;;;;;;;;;;;;-1:-1:-1;619:5:58;:18;;-1:-1:-1;;;;;;619:18:58;627:10;619:18;;;193:714:39;;;;;;",
  "deployedSourceMap": "193:714:39:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1350:163:9;;;;;;;;;;;;;;;;-1:-1:-1;1350:163:9;-1:-1:-1;;;;;1350:163:9;;:::i;:::-;;612:293:39;;;;;;;;;;;;;;;;-1:-1:-1;612:293:39;;;;;;;;;-1:-1:-1;;;;;612:293:39;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;612:293:39;;;;;;;;;;;;;;249:34;;;:::i;333:273::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;333:273:39;;;;;;;;-1:-1:-1;333:273:39;;-1:-1:-1;;333:273:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;333:273:39;;-1:-1:-1;;;333:273:39;;;;;-1:-1:-1;333:273:39;;-1:-1:-1;333:273:39:i;914:68:9:-;;;;;;;;;;;;;;;;-1:-1:-1;914:68:9;;;;:::i;989:71::-;;;;;;;;;;;;;;;;-1:-1:-1;989:71:9;;;;:::i;289:37:39:-;;;:::i;1422:217:58:-;;;:::i;2117:172:9:-;;;;;;;;;;;;;;;;-1:-1:-1;2117:172:9;-1:-1:-1;;;;;2117:172:9;;:::i;219:29:58:-;;;:::i;1067:80:9:-;;;;;;;;;;;;;;;;-1:-1:-1;1067:80:9;;;;:::i;255:23:58:-;;;:::i;1729:172:9:-;;;;;;;;;;;;;;;;-1:-1:-1;1729:172:9;-1:-1:-1;;;;;1729:172:9;;:::i;1164:167:58:-;;;;;;;;;;;;;;;;-1:-1:-1;1164:167:58;-1:-1:-1;;;;;1164:167:58;;:::i;1350:163:9:-;726:12:58;:10;:12::i;:::-;1497:8:9::1;1450:18;:44;1469:8;-1:-1:-1::0;;;;;1469:22:9::1;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;1469:24:9;1450:44:::1;;::::0;;1469:24:::1;1450:44:::0;::::1;::::0;;;;;;-1:-1:-1;1450:44:9;:55;;-1:-1:-1;;;;;;1450:55:9::1;-1:-1:-1::0;;;;;1450:55:9;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;1350:163:9:o;612:293:39:-;757:10;798:67;820:5;827:7;836:9;847:17;798:21;:67::i;:::-;779:16;:86;;-1:-1:-1;;;;;;779:86:39;-1:-1:-1;;;;;779:86:39;;;;;;;;882:16;;612:293;-1:-1:-1;;;;;612:293:39:o;249:34::-;;;-1:-1:-1;;;;;249:34:39;;:::o;333:273::-;464:16;508:61;527:14;543:5;550:7;559:9;508:18;:61::i;:::-;492:13;:77;;-1:-1:-1;;;;;;492:77:39;-1:-1:-1;;;;;492:77:39;;;;;;;;586:13;;333:273;-1:-1:-1;;;;;333:273:39:o;914:68:9:-;;;;;;;;;;;;-1:-1:-1;;;;;914:68:9;;:::o;989:71::-;;;;;;;;;;;;-1:-1:-1;;;;;989:71:9;;:::o;289:37:39:-;;;-1:-1:-1;;;;;289:37:39;;:::o;1422:217:58:-;1498:8;;-1:-1:-1;;;;;1498:8:58;1484:10;:22;1476:52;;;;;-1:-1:-1;;;1476:52:58;;;;;;;;;;;;-1:-1:-1;;;1476:52:58;;;;;;;;;;;;;;;1563:8;;;1556:5;;1544:28;;-1:-1:-1;;;;;1563:8:58;;;;1556:5;;;;1544:28;;;1591:8;;;;1583:16;;-1:-1:-1;;;;;;1583:16:58;;;-1:-1:-1;;;;;1591:8:58;;1583:16;;;;1610:21;;;1422:217::o;2117:172:9:-;726:12:58;:10;:12::i;:::-;2273:8:9::1;2229:15;:41;2245:8;-1:-1:-1::0;;;;;2245:22:9::1;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;219:29:58::0;;;-1:-1:-1;;;;;219:29:58;;:::o;1067:80:9:-;;;;;;;;;;;;-1:-1:-1;;;;;1067:80:9;;:::o;255:23:58:-;;;-1:-1:-1;;;;;255:23:58;;:::o;1729:172:9:-;726:12:58;:10;:12::i;:::-;1885:8:9::1;1841:15;:41;1857:8;-1:-1:-1::0;;;;;1857:22:9::1;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;1164:167:58::0;726:12;:10;:12::i;:::-;1268:5:::1;::::0;-1:-1:-1;;;;;1255:18:58;;::::1;1268:5:::0;::::1;1255:18;;1247:45;;;::::0;;-1:-1:-1;;;1247:45:58;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;1247:45:58;;;;;;;;;;;;;::::1;;1303:8;:20:::0;;-1:-1:-1;;;;;;1303:20:58::1;-1:-1:-1::0;;;;;1303:20:58;;;::::1;::::0;;;::::1;::::0;;1164:167::o;813:104::-;882:5;;-1:-1:-1;;;;;882:5:58;868:10;:19;860:49;;;;;-1:-1:-1;;;860:49:58;;;;;;;;;;;;-1:-1:-1;;;860:49:58;;;;;;;;;;;;;;;813:104::o;3936:503:9:-;4176:25;;;4125:10;4176:25;;;:18;:25;;;;;;;;;:80;;-1:-1:-1;;;4176:80:9;;-1:-1:-1;;;;;4176:80:9;;;;;;;;;;;;;;;;;;;;;;;4125:10;;4176:25;;;;;:41;;:80;;;;;;;;;;4125:10;4176:25;:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4176:80:9;4267:27;;;-1:-1:-1;;;4267:27:9;;;;4176:80;;-1:-1:-1;;;;;;4267:25:9;;;;;:27;;;;;;;;;;;;;;;;:25;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4305:39:9;;;-1:-1:-1;;;4305:39:9;;4333:10;4305:39;;;;;;-1:-1:-1;;;;;4305:27:9;;;-1:-1:-1;4305:27:9;;-1:-1:-1;4305:39:9;;;;;-1:-1:-1;;4305:39:9;;;;;;;-1:-1:-1;4305:27:9;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4362:42:9;;4393:10;;-1:-1:-1;;;;;;4362:42:9;;;-1:-1:-1;4362:42:9;;;;;;;;;4422:9;3936:503;-1:-1:-1;;;;;3936:503:9:o;2696:744::-;2978:31;;;2871:16;2978:31;;;:15;:31;;;;;;2871:16;;-1:-1:-1;;;;;2978:31:9;3026:30;3022:338;;3148:5;3155:7;3164:9;3133:41;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3133:41:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3124:50;;3022:338;;;3262:7;-1:-1:-1;;;;;3262:20:9;;3283:5;3290:7;3299:9;3262:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3262:47:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3262:47:9;3324:24;;;-1:-1:-1;;;3324:24:9;;;;3262:47;;-1:-1:-1;;;;;;3324:22:9;;;;;:24;;;;;;;;;;;;;;;;:22;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3022:338;3372:36;;;-1:-1:-1;;;3372:36:9;;3397:10;3372:36;;;;;;-1:-1:-1;;;;;3372:24:9;;;;;:36;;;;;-1:-1:-1;;3372:36:9;;;;;;;-1:-1:-1;3372:24:9;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3426:6:9;;2696:744;-1:-1:-1;;;;;;;;;2696:744:9:o;-1:-1:-1:-;;;;;;;;:::o",
  "source": "// SPDX-License-Identifier: SEE LICENSE IN LICENSE\npragma solidity 0.6.12;\nimport \"../converter/ConverterFactory.sol\";\n\n/*\n    Utils test helper that exposes the converter factory functions\n*/\ncontract TestConverterFactory is ConverterFactory {\n    IConverter public createdConverter;\n    IConverterAnchor public createdAnchor;\n\n    function createAnchor(uint16 _converterType, string memory _name, string memory _symbol, uint8 _decimals) public override returns (IConverterAnchor) {\n        createdAnchor = super.createAnchor(_converterType, _name, _symbol, _decimals);\n        return createdAnchor;\n    }\n\n    function createConverter(uint16 _type, IConverterAnchor _anchor, IContractRegistry _registry, uint32 _maxConversionFee) public override returns (IConverter) {\n        createdConverter = super.createConverter(_type, _anchor, _registry, _maxConversionFee);\n        return createdConverter;\n    }\n}\n",
  "sourcePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/helpers/TestConverterFactory.sol",
  "ast": {
    "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/helpers/TestConverterFactory.sol",
    "exportedSymbols": {
      "TestConverterFactory": [
        19315
      ]
    },
    "id": 19316,
    "license": "SEE LICENSE IN LICENSE",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 19253,
        "literals": [
          "solidity",
          "0.6",
          ".12"
        ],
        "nodeType": "PragmaDirective",
        "src": "51:23:39"
      },
      {
        "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/ConverterFactory.sol",
        "file": "../converter/ConverterFactory.sol",
        "id": 19254,
        "nodeType": "ImportDirective",
        "scope": 19316,
        "sourceUnit": 10245,
        "src": "75:43:39",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 19255,
              "name": "ConverterFactory",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 10244,
              "src": "226:16:39",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ConverterFactory_$10244",
                "typeString": "contract ConverterFactory"
              }
            },
            "id": 19256,
            "nodeType": "InheritanceSpecifier",
            "src": "226:16:39"
          }
        ],
        "contractDependencies": [
          10244,
          13389,
          22153,
          23182
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 19315,
        "linearizedBaseContracts": [
          19315,
          10244,
          22153,
          23182,
          13389
        ],
        "name": "TestConverterFactory",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "functionSelector": "1814f2d2",
            "id": 19258,
            "mutability": "mutable",
            "name": "createdConverter",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 19315,
            "src": "249:34:39",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IConverter_$13340",
              "typeString": "contract IConverter"
            },
            "typeName": {
              "contractScope": null,
              "id": 19257,
              "name": "IConverter",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 13340,
              "src": "249:10:39",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IConverter_$13340",
                "typeString": "contract IConverter"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "6a4e5391",
            "id": 19260,
            "mutability": "mutable",
            "name": "createdAnchor",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 19315,
            "src": "289:37:39",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
              "typeString": "contract IConverterAnchor"
            },
            "typeName": {
              "contractScope": null,
              "id": 19259,
              "name": "IConverterAnchor",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 13349,
              "src": "289:16:39",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                "typeString": "contract IConverterAnchor"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              10195
            ],
            "body": {
              "id": 19286,
              "nodeType": "Block",
              "src": "482:124:39",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 19282,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 19274,
                      "name": "createdAnchor",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19260,
                      "src": "492:13:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                        "typeString": "contract IConverterAnchor"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 19277,
                          "name": "_converterType",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19262,
                          "src": "527:14:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 19278,
                          "name": "_name",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19264,
                          "src": "543:5:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 19279,
                          "name": "_symbol",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19266,
                          "src": "550:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 19280,
                          "name": "_decimals",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19268,
                          "src": "559:9:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          },
                          {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          },
                          {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          },
                          {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 19275,
                          "name": "super",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -25,
                          "src": "508:5:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_super$_TestConverterFactory_$19315",
                            "typeString": "contract super TestConverterFactory"
                          }
                        },
                        "id": 19276,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "createAnchor",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 10195,
                        "src": "508:18:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_uint16_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint8_$returns$_t_contract$_IConverterAnchor_$13349_$",
                          "typeString": "function (uint16,string memory,string memory,uint8) returns (contract IConverterAnchor)"
                        }
                      },
                      "id": 19281,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "508:61:39",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                        "typeString": "contract IConverterAnchor"
                      }
                    },
                    "src": "492:77:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "id": 19283,
                  "nodeType": "ExpressionStatement",
                  "src": "492:77:39"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 19284,
                    "name": "createdAnchor",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 19260,
                    "src": "586:13:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "functionReturnParameters": 19273,
                  "id": 19285,
                  "nodeType": "Return",
                  "src": "579:20:39"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "2e9ab7b3",
            "id": 19287,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "createAnchor",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 19270,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "446:8:39"
            },
            "parameters": {
              "id": 19269,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19262,
                  "mutability": "mutable",
                  "name": "_converterType",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19287,
                  "src": "355:21:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 19261,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "355:6:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19264,
                  "mutability": "mutable",
                  "name": "_name",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19287,
                  "src": "378:19:39",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19263,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "378:6:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19266,
                  "mutability": "mutable",
                  "name": "_symbol",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19287,
                  "src": "399:21:39",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19265,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "399:6:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19268,
                  "mutability": "mutable",
                  "name": "_decimals",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19287,
                  "src": "422:15:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 19267,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "422:5:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "354:84:39"
            },
            "returnParameters": {
              "id": 19273,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19272,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19287,
                  "src": "464:16:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                    "typeString": "contract IConverterAnchor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 19271,
                    "name": "IConverterAnchor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13349,
                    "src": "464:16:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "463:18:39"
            },
            "scope": 19315,
            "src": "333:273:39",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              10243
            ],
            "body": {
              "id": 19313,
              "nodeType": "Block",
              "src": "769:136:39",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 19309,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 19301,
                      "name": "createdConverter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19258,
                      "src": "779:16:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IConverter_$13340",
                        "typeString": "contract IConverter"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 19304,
                          "name": "_type",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19289,
                          "src": "820:5:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 19305,
                          "name": "_anchor",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19291,
                          "src": "827:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                            "typeString": "contract IConverterAnchor"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 19306,
                          "name": "_registry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19293,
                          "src": "836:9:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IContractRegistry_$23166",
                            "typeString": "contract IContractRegistry"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 19307,
                          "name": "_maxConversionFee",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19295,
                          "src": "847:17:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          },
                          {
                            "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                            "typeString": "contract IConverterAnchor"
                          },
                          {
                            "typeIdentifier": "t_contract$_IContractRegistry_$23166",
                            "typeString": "contract IContractRegistry"
                          },
                          {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 19302,
                          "name": "super",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -25,
                          "src": "798:5:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_super$_TestConverterFactory_$19315",
                            "typeString": "contract super TestConverterFactory"
                          }
                        },
                        "id": 19303,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "createConverter",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 10243,
                        "src": "798:21:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_uint16_$_t_contract$_IConverterAnchor_$13349_$_t_contract$_IContractRegistry_$23166_$_t_uint32_$returns$_t_contract$_IConverter_$13340_$",
                          "typeString": "function (uint16,contract IConverterAnchor,contract IContractRegistry,uint32) returns (contract IConverter)"
                        }
                      },
                      "id": 19308,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "798:67:39",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IConverter_$13340",
                        "typeString": "contract IConverter"
                      }
                    },
                    "src": "779:86:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "id": 19310,
                  "nodeType": "ExpressionStatement",
                  "src": "779:86:39"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 19311,
                    "name": "createdConverter",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 19258,
                    "src": "882:16:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "functionReturnParameters": 19300,
                  "id": 19312,
                  "nodeType": "Return",
                  "src": "875:23:39"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "15f64b6a",
            "id": 19314,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "createConverter",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 19297,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "739:8:39"
            },
            "parameters": {
              "id": 19296,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19289,
                  "mutability": "mutable",
                  "name": "_type",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19314,
                  "src": "637:12:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 19288,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "637:6:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19291,
                  "mutability": "mutable",
                  "name": "_anchor",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19314,
                  "src": "651:24:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                    "typeString": "contract IConverterAnchor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 19290,
                    "name": "IConverterAnchor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13349,
                    "src": "651:16:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19293,
                  "mutability": "mutable",
                  "name": "_registry",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19314,
                  "src": "677:27:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IContractRegistry_$23166",
                    "typeString": "contract IContractRegistry"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 19292,
                    "name": "IContractRegistry",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 23166,
                    "src": "677:17:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IContractRegistry_$23166",
                      "typeString": "contract IContractRegistry"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19295,
                  "mutability": "mutable",
                  "name": "_maxConversionFee",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19314,
                  "src": "706:24:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 19294,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "706:6:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "636:95:39"
            },
            "returnParameters": {
              "id": 19300,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19299,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19314,
                  "src": "757:10:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverter_$13340",
                    "typeString": "contract IConverter"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 19298,
                    "name": "IConverter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13340,
                    "src": "757:10:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "756:12:39"
            },
            "scope": 19315,
            "src": "612:293:39",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          }
        ],
        "scope": 19316,
        "src": "193:714:39"
      }
    ],
    "src": "51:857:39"
  },
  "legacyAST": {
    "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/helpers/TestConverterFactory.sol",
    "exportedSymbols": {
      "TestConverterFactory": [
        19315
      ]
    },
    "id": 19316,
    "license": "SEE LICENSE IN LICENSE",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 19253,
        "literals": [
          "solidity",
          "0.6",
          ".12"
        ],
        "nodeType": "PragmaDirective",
        "src": "51:23:39"
      },
      {
        "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/ConverterFactory.sol",
        "file": "../converter/ConverterFactory.sol",
        "id": 19254,
        "nodeType": "ImportDirective",
        "scope": 19316,
        "sourceUnit": 10245,
        "src": "75:43:39",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 19255,
              "name": "ConverterFactory",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 10244,
              "src": "226:16:39",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ConverterFactory_$10244",
                "typeString": "contract ConverterFactory"
              }
            },
            "id": 19256,
            "nodeType": "InheritanceSpecifier",
            "src": "226:16:39"
          }
        ],
        "contractDependencies": [
          10244,
          13389,
          22153,
          23182
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 19315,
        "linearizedBaseContracts": [
          19315,
          10244,
          22153,
          23182,
          13389
        ],
        "name": "TestConverterFactory",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "functionSelector": "1814f2d2",
            "id": 19258,
            "mutability": "mutable",
            "name": "createdConverter",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 19315,
            "src": "249:34:39",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IConverter_$13340",
              "typeString": "contract IConverter"
            },
            "typeName": {
              "contractScope": null,
              "id": 19257,
              "name": "IConverter",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 13340,
              "src": "249:10:39",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IConverter_$13340",
                "typeString": "contract IConverter"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "6a4e5391",
            "id": 19260,
            "mutability": "mutable",
            "name": "createdAnchor",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 19315,
            "src": "289:37:39",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
              "typeString": "contract IConverterAnchor"
            },
            "typeName": {
              "contractScope": null,
              "id": 19259,
              "name": "IConverterAnchor",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 13349,
              "src": "289:16:39",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                "typeString": "contract IConverterAnchor"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              10195
            ],
            "body": {
              "id": 19286,
              "nodeType": "Block",
              "src": "482:124:39",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 19282,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 19274,
                      "name": "createdAnchor",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19260,
                      "src": "492:13:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                        "typeString": "contract IConverterAnchor"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 19277,
                          "name": "_converterType",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19262,
                          "src": "527:14:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 19278,
                          "name": "_name",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19264,
                          "src": "543:5:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 19279,
                          "name": "_symbol",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19266,
                          "src": "550:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 19280,
                          "name": "_decimals",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19268,
                          "src": "559:9:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          },
                          {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          },
                          {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          },
                          {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 19275,
                          "name": "super",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -25,
                          "src": "508:5:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_super$_TestConverterFactory_$19315",
                            "typeString": "contract super TestConverterFactory"
                          }
                        },
                        "id": 19276,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "createAnchor",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 10195,
                        "src": "508:18:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_uint16_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint8_$returns$_t_contract$_IConverterAnchor_$13349_$",
                          "typeString": "function (uint16,string memory,string memory,uint8) returns (contract IConverterAnchor)"
                        }
                      },
                      "id": 19281,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "508:61:39",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                        "typeString": "contract IConverterAnchor"
                      }
                    },
                    "src": "492:77:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "id": 19283,
                  "nodeType": "ExpressionStatement",
                  "src": "492:77:39"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 19284,
                    "name": "createdAnchor",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 19260,
                    "src": "586:13:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "functionReturnParameters": 19273,
                  "id": 19285,
                  "nodeType": "Return",
                  "src": "579:20:39"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "2e9ab7b3",
            "id": 19287,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "createAnchor",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 19270,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "446:8:39"
            },
            "parameters": {
              "id": 19269,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19262,
                  "mutability": "mutable",
                  "name": "_converterType",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19287,
                  "src": "355:21:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 19261,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "355:6:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19264,
                  "mutability": "mutable",
                  "name": "_name",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19287,
                  "src": "378:19:39",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19263,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "378:6:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19266,
                  "mutability": "mutable",
                  "name": "_symbol",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19287,
                  "src": "399:21:39",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19265,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "399:6:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19268,
                  "mutability": "mutable",
                  "name": "_decimals",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19287,
                  "src": "422:15:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 19267,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "422:5:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "354:84:39"
            },
            "returnParameters": {
              "id": 19273,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19272,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19287,
                  "src": "464:16:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                    "typeString": "contract IConverterAnchor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 19271,
                    "name": "IConverterAnchor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13349,
                    "src": "464:16:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "463:18:39"
            },
            "scope": 19315,
            "src": "333:273:39",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              10243
            ],
            "body": {
              "id": 19313,
              "nodeType": "Block",
              "src": "769:136:39",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 19309,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 19301,
                      "name": "createdConverter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19258,
                      "src": "779:16:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IConverter_$13340",
                        "typeString": "contract IConverter"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 19304,
                          "name": "_type",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19289,
                          "src": "820:5:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 19305,
                          "name": "_anchor",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19291,
                          "src": "827:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                            "typeString": "contract IConverterAnchor"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 19306,
                          "name": "_registry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19293,
                          "src": "836:9:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IContractRegistry_$23166",
                            "typeString": "contract IContractRegistry"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 19307,
                          "name": "_maxConversionFee",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19295,
                          "src": "847:17:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          },
                          {
                            "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                            "typeString": "contract IConverterAnchor"
                          },
                          {
                            "typeIdentifier": "t_contract$_IContractRegistry_$23166",
                            "typeString": "contract IContractRegistry"
                          },
                          {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 19302,
                          "name": "super",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -25,
                          "src": "798:5:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_super$_TestConverterFactory_$19315",
                            "typeString": "contract super TestConverterFactory"
                          }
                        },
                        "id": 19303,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "createConverter",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 10243,
                        "src": "798:21:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_uint16_$_t_contract$_IConverterAnchor_$13349_$_t_contract$_IContractRegistry_$23166_$_t_uint32_$returns$_t_contract$_IConverter_$13340_$",
                          "typeString": "function (uint16,contract IConverterAnchor,contract IContractRegistry,uint32) returns (contract IConverter)"
                        }
                      },
                      "id": 19308,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "798:67:39",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IConverter_$13340",
                        "typeString": "contract IConverter"
                      }
                    },
                    "src": "779:86:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "id": 19310,
                  "nodeType": "ExpressionStatement",
                  "src": "779:86:39"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 19311,
                    "name": "createdConverter",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 19258,
                    "src": "882:16:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "functionReturnParameters": 19300,
                  "id": 19312,
                  "nodeType": "Return",
                  "src": "875:23:39"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "15f64b6a",
            "id": 19314,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "createConverter",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 19297,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "739:8:39"
            },
            "parameters": {
              "id": 19296,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19289,
                  "mutability": "mutable",
                  "name": "_type",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19314,
                  "src": "637:12:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 19288,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "637:6:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19291,
                  "mutability": "mutable",
                  "name": "_anchor",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19314,
                  "src": "651:24:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                    "typeString": "contract IConverterAnchor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 19290,
                    "name": "IConverterAnchor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13349,
                    "src": "651:16:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19293,
                  "mutability": "mutable",
                  "name": "_registry",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19314,
                  "src": "677:27:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IContractRegistry_$23166",
                    "typeString": "contract IContractRegistry"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 19292,
                    "name": "IContractRegistry",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 23166,
                    "src": "677:17:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IContractRegistry_$23166",
                      "typeString": "contract IContractRegistry"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19295,
                  "mutability": "mutable",
                  "name": "_maxConversionFee",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19314,
                  "src": "706:24:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 19294,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "706:6:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "636:95:39"
            },
            "returnParameters": {
              "id": 19300,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19299,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19314,
                  "src": "757:10:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverter_$13340",
                    "typeString": "contract IConverter"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 19298,
                    "name": "IConverter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13340,
                    "src": "757:10:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "756:12:39"
            },
            "scope": 19315,
            "src": "612:293:39",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          }
        ],
        "scope": 19316,
        "src": "193:714:39"
      }
    ],
    "src": "51:857:39"
  },
  "compiler": {
    "name": "solc",
    "version": "0.6.12+commit.27d51765.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.2.3",
  "updatedAt": "2020-11-09T23:40:29.190Z",
  "devdoc": {
    "kind": "dev",
    "methods": {
      "acceptOwnership()": {
        "details": "used by a new owner to accept an ownership transfer"
      },
      "createAnchor(uint16,string,string,uint8)": {
        "details": "creates a new converter anchor with the given arguments and transfers the ownership to the caller",
        "params": {
          "_converterType": "converter type, see ConverterBase contract main doc",
          "_decimals": "decimals",
          "_name": "name",
          "_symbol": "symbol"
        },
        "returns": {
          "_0": "new converter anchor"
        }
      },
      "createConverter(uint16,address,address,uint32)": {
        "details": "creates a new converter with the given arguments and transfers the ownership to the caller",
        "params": {
          "_anchor": "anchor governed by the converter",
          "_maxConversionFee": "maximum conversion fee, represented in ppm",
          "_registry": "address of a contract registry contract",
          "_type": "converter type, see ConverterBase contract main doc"
        },
        "returns": {
          "_0": "new converter"
        }
      },
      "registerTypedConverterAnchorFactory(address)": {
        "details": "initializes the factory with a specific typed converter anchor factory can only be called by the owner",
        "params": {
          "_factory": "typed converter anchor factory"
        }
      },
      "registerTypedConverterCustomFactory(address)": {
        "details": "initializes the factory with a specific typed converter custom factory can only be called by the owner",
        "params": {
          "_factory": "typed converter custom factory"
        }
      },
      "registerTypedConverterFactory(address)": {
        "details": "initializes the factory with a specific typed converter factory can only be called by the owner",
        "params": {
          "_factory": "typed converter factory"
        }
      },
      "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"
        }
      }
    },
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {},
    "version": 1
  }
}