{ "contractName": "PoolTokensContainer", "abi": [ { "inputs": [ { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "internalType": "uint8", "name": "_decimals", "type": "uint8" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_prevOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_newOwner", "type": "address" } ], "name": "OwnerUpdate", "type": "event" }, { "inputs": [], "name": "acceptOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "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": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "contract IERC20Token", "name": "_token", "type": "address" }, { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "withdrawTokens", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "poolTokens", "outputs": [ { "internalType": "contract ISmartToken[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "createToken", "outputs": [ { "internalType": "contract ISmartToken", "name": "", "type": "address" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "contract ISmartToken", "name": "_token", "type": "address" }, { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "contract ISmartToken", "name": "_token", "type": "address" }, { "internalType": "address", "name": "_from", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ], "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"_decimals\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_prevOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_newOwner\",\"type\":\"address\"}],\"name\":\"OwnerUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISmartToken\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"createToken\",\"outputs\":[{\"internalType\":\"contract ISmartToken\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISmartToken\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"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\":[],\"name\":\"poolTokens\",\"outputs\":[{\"internalType\":\"contract ISmartToken[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20Token\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"withdrawTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"The PoolTokensContainer contract serves as a container for multiple pool tokens. It is used by specific liquidity pool types that require more than a single pool token, while still maintaining the single converter / anchor relationship. It maintains and provides a list of the underlying pool tokens.\",\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"used by a new owner to accept an ownership transfer\"},\"burn(address,address,uint256)\":{\"details\":\"removes tokens from the given account and decreases the pool token supply can only be called by the contract owner\",\"params\":{\"_amount\":\"amount to burn\",\"_from\":\"account to remove the tokens from\",\"_token\":\"pool token address\"}},\"constructor\":{\"details\":\"initializes a new PoolTokensContainer instance\",\"params\":{\"_decimals\":\"used for the underlying pool token decimals\",\"_name\":\"pool name, also used as a prefix for the underlying pool token names\",\"_symbol\":\"pool symbol, also used as a prefix for the underlying pool token symbols\"}},\"createToken()\":{\"details\":\"creates a new pool token and adds it to the list\",\"returns\":{\"_0\":\"new pool token address\"}},\"mint(address,address,uint256)\":{\"details\":\"increases the pool token supply and sends the new tokens to the given account can only be called by the contract owner\",\"params\":{\"_amount\":\"amount to mint\",\"_to\":\"account to receive the newly minted tokens\",\"_token\":\"pool token address\"}},\"poolTokens()\":{\"details\":\"returns the list of pool tokens\",\"returns\":{\"_0\":\"list of pool tokens\"}},\"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\"}},\"withdrawTokens(address,address,uint256)\":{\"details\":\"withdraws tokens held by the contract and sends them to an account can only be called by the owner\",\"params\":{\"_amount\":\"amount to withdraw\",\"_to\":\"account to receive the new amount\",\"_token\":\"ERC20 token contract address\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/types/liquidity-pool-v2/PoolTokensContainer.sol\":\"PoolTokensContainer\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/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/types/liquidity-pool-v2/PoolTokensContainer.sol\":{\"keccak256\":\"0x79e583ec380c8982f74d4f707ae26ed96e1c90a6b54b4fc058ab2316656e0ddb\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://3c900b396fefda767db8b99d9ed10c9a22151279b0f8229098d28a08e75046da\",\"dweb:/ipfs/QmZBqgB1CnKpjM8Bv6HMrYtzdwu8wBmS3FzpWuvhyfGLwd\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/types/liquidity-pool-v2/interfaces/IPoolTokensContainer.sol\":{\"keccak256\":\"0xb62b1efbd3188a2ef15fef6122f45278e1c354cadb2544cb600af28bda00f3cd\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://ce08db6aafa20ced1fbaed11d4413580901f525bb318c23dff7532c815b03e1e\",\"dweb:/ipfs/QmeoC4D4vJiPMW7TjTmtu3z8WAtBDQ4GNSTeJzZsDzA36c\"]},\"/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/IOwned.sol\":{\"keccak256\":\"0xc60a9d197abc28c1906ed4d18b59caa0242db754a0e1f67af6e6277593530dae\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://a8c6f3e6525a81a5165ccbf04f73f6c389c14b74135d11a7b5f70b1c9bdac75c\",\"dweb:/ipfs/QmaPu4Z7yUPc9sMADmoTZVY6AnyDSYHtNNCx3mm4VkJwhP\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/interfaces/ITokenHolder.sol\":{\"keccak256\":\"0x9ccb8ab04d0bd874ba7aae5277e60f35c36918922649a0596bf3664ed257bfe2\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://b65e6db19cd244c9f3545695de5fd7573711c49fb306631ddbf0e1d2fa9fb589\",\"dweb:/ipfs/QmZeu5KYVMTbTx7h2BVUq52fpwL9Q44AUfzeVksucDohgf\"]}},\"version\":1}", "bytecode": "0x60806040523480156200001157600080fd5b506040516200224a3803806200224a833981810160405260608110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b5060405260200151600080546001600160a01b0319163317905584519092501515905062000200576040805162461bcd60e51b815260206004820152601060248201526f4552525f494e56414c49445f4e414d4560801b604482015290519081900360640190fd5b60008251116200024c576040805162461bcd60e51b815260206004820152601260248201527111549497d253959053125117d4d6535093d360721b604482015290519081900360640190fd5b82516200026190600290602086019062000295565b5081516200027790600390602085019062000295565b506004805460ff191660ff9290921691909117905550620003319050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002d857805160ff191683800117855562000308565b8280016001018555821562000308579182015b8281111562000308578251825591602001919060010190620002eb565b50620003169291506200031a565b5090565b5b808211156200031657600081556001016200031b565b611f0980620003416000396000f3fe60806040523480156200001157600080fd5b5060043610620000c45760003560e01c806395d89b41116200007b57806395d89b4114620002325780639cbf9e36146200023c578063c6c3bbe61462000246578063d4ee1d90146200027f578063f2fde38b1462000289578063f6b911bc14620002b257620000c4565b806306fdde0314620000c9578063313ce567146200014b5780635e35359e146200016b5780636d3e313e14620001a657806379ba509714620002025780638da5cb5b146200020c575b600080fd5b620000d3620002eb565b6040805160208082528351818301528351919283929083019185019080838360005b838110156200010f578181015183820152602001620000f5565b50505050905090810190601f1680156200013d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b620001556200037a565b6040805160ff9092168252519081900360200190f35b620001a4600480360360608110156200018357600080fd5b506001600160a01b0381358116916020810135909116906040013562000383565b005b620001b0620003c6565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015620001ee578181015183820152602001620001d4565b505050509050019250505060405180910390f35b620001a46200042a565b62000216620004e2565b604080516001600160a01b039092168252519081900360200190f35b620000d3620004f1565b620002166200054f565b620001a4600480360360608110156200025e57600080fd5b506001600160a01b038135811691602081013590911690604001356200082e565b62000216620008ae565b620001a460048036036020811015620002a157600080fd5b50356001600160a01b0316620008bd565b620001a460048036036060811015620002ca57600080fd5b506001600160a01b038135811691602081013590911690604001356200093e565b6002805460408051602060018416156101000260001901909316849004601f81018490048402820184019092528181529291830182828015620003725780601f10620003465761010080835404028352916020019162000372565b820191906000526020600020905b8154815290600101906020018083116200035457829003601f168201915b505050505081565b60045460ff1681565b6200038d620009a0565b826200039981620009f6565b82620003a581620009f6565b83620003b18162000a4b565b620003be86868662000aa0565b505050505050565b606060058054806020026020016040519081016040528092919081815260200182805480156200042057602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000401575b5050505050905090565b6001546001600160a01b031633146200047e576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b600154600080546040516001600160a01b0393841693909116917f343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a91a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6000546001600160a01b031681565b6003805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015620003725780601f10620003465761010080835404028352916020019162000372565b60006200055b620009a0565b6005805410620005aa576040805162461bcd60e51b815260206004820152601560248201527411549497d3505617d31253525517d4915050d21151605a1b604482015290519081900360640190fd5b6002805460408051602060018416156101000260001901909316849004601f81018490048402820184019092528181526060936200064e93919290918301828280156200063b5780601f106200060f576101008083540402835291602001916200063b565b820191906000526020600020905b8154815290600101906020018083116200061d57829003601f168201915b5050600554600101925062000c08915050565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152939450606093620006ba93909290918301828280156200063b5780601f106200060f576101008083540402835291602001916200063b565b905060008282600460009054906101000a900460ff16604051620006de9062000c92565b60ff82166040820152606080825284519082015283518190602080830191608084019188019080838360005b83811015620007245781810151838201526020016200070a565b50505050905090810190601f168015620007525780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015620007875781810151838201526020016200076d565b50505050905090810190601f168015620007b55780820380516001836020036101000a031916815260200191505b5095505050505050604051809103906000f080158015620007da573d6000803e3d6000fd5b50600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b0319166001600160a01b038316179055949350505050565b62000838620009a0565b826001600160a01b031663867904b483836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156200089057600080fd5b505af1158015620008a5573d6000803e3d6000fd5b50505050505050565b6001546001600160a01b031681565b620008c7620009a0565b6000546001600160a01b03828116911614156200091c576040805162461bcd60e51b815260206004820152600e60248201526d22a9292fa9a0a6a2afa7aba722a960911b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b62000948620009a0565b826001600160a01b031663a24835d183836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156200089057600080fd5b6000546001600160a01b03163314620009f4576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b565b6001600160a01b03811662000a48576040805162461bcd60e51b81526020600482015260136024820152724552525f494e56414c49445f4144445245535360681b604482015290519081900360640190fd5b50565b6001600160a01b03811630141562000a48576040805162461bcd60e51b815260206004820152601360248201527222a9292fa0a2222922a9a9afa4a9afa9a2a62360691b604482015290519081900360640190fd5b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b6020831062000b1f5780518252601f19909201916020918201910162000afe565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811462000b83576040519150601f19603f3d011682016040523d82523d6000602084013e62000b88565b606091505b509150915081801562000bb957508051158062000bb9575080806020019051602081101562000bb657600080fd5b50515b62000c01576040805162461bcd60e51b815260206004820152601360248201527211549497d514905394d1915497d19052531151606a1b604482015290519081900360640190fd5b5050505050565b60608282600360fc1b60f81c016040516020018083805190602001908083835b6020831062000c495780518252601f19909201916020918201910162000c28565b6001836020036101000a0380198251168184511680821785525050505050509050018260ff1660f81b815260010192505050604051602081830303815290604052905092915050565b6112338062000ca18339019056fe60806040526008805460ff191660011790553480156200001e57600080fd5b506040516200123338038062001233833981810160405260608110156200004457600080fd5b81019080805160405193929190846401000000008211156200006557600080fd5b9083019060208201858111156200007b57600080fd5b82516401000000008111828201881017156200009657600080fd5b82525081516020918201929091019080838360005b83811015620000c5578181015183820152602001620000ab565b50505050905090810190601f168015620000f35780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011757600080fd5b9083019060208201858111156200012d57600080fd5b82516401000000008111828201881017156200014857600080fd5b82525081516020918201929091019080838360005b83811015620001775781810151838201526020016200015d565b50505050905090810190601f168015620001a55780820380516001836020036101000a031916815260200191505b5060405260200151600080546001600160a01b031916331781558551919350859250849184919062000211576040805162461bcd60e51b815260206004820152601060248201526f4552525f494e56414c49445f4e414d4560801b604482015290519081900360640190fd5b60008351116200025d576040805162461bcd60e51b815260206004820152601260248201527111549497d253959053125117d4d6535093d360721b604482015290519081900360640190fd5b835162000272906002906020870190620002bf565b50825162000288906003906020860190620002bf565b506004805460ff191660ff9390931692909217909155600581905533600090815260066020526040902055506200035b9350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200030257805160ff191683800117855562000332565b8280016001018555821562000332579182015b828111156200033257825182559160200191906001019062000315565b506200034092915062000344565b5090565b5b8082111562000340576000815560010162000345565b610ec8806200036b6000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c806379ba5097116100ad578063a9059cbb11610071578063a9059cbb14610379578063bef97c87146103a5578063d4ee1d90146103ad578063dd62ed3e146103b5578063f2fde38b146103e357610121565b806379ba5097146102ed578063867904b4146102f55780638da5cb5b1461032157806395d89b4114610345578063a24835d11461034d57610121565b806323b872dd116100f457806323b872dd1461021e578063313ce5671461025457806354fd4d50146102725780635e35359e1461029157806370a08231146102c757610121565b806306fdde0314610126578063095ea7b3146101a35780631608f18f146101e357806318160ddd14610204575b600080fd5b61012e610409565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610168578181015183820152602001610150565b50505050905090810190601f1680156101955780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101cf600480360360408110156101b957600080fd5b506001600160a01b038135169060200135610494565b604080519115158252519081900360200190f35b610202600480360360208110156101f957600080fd5b5035151561057c565b005b61020c610596565b60408051918252519081900360200190f35b6101cf6004803603606081101561023457600080fd5b506001600160a01b0381358116916020810135909116906040013561059c565b61025c6105b9565b6040805160ff9092168252519081900360200190f35b61027a6105c2565b6040805161ffff9092168252519081900360200190f35b610202600480360360608110156102a757600080fd5b506001600160a01b038135811691602081013590911690604001356105c7565b61020c600480360360208110156102dd57600080fd5b50356001600160a01b0316610600565b610202610612565b6102026004803603604081101561030b57600080fd5b506001600160a01b0381351690602001356106c9565b61032961079f565b604080516001600160a01b039092168252519081900360200190f35b61012e6107ae565b6102026004803603604081101561036357600080fd5b506001600160a01b038135169060200135610809565b6101cf6004803603604081101561038f57600080fd5b506001600160a01b0381351690602001356108c3565b6101cf6108de565b6103296108e7565b61020c600480360360408110156103cb57600080fd5b506001600160a01b03813581169160200135166108f6565b610202600480360360208110156103f957600080fd5b50356001600160a01b0316610913565b6002805460408051602060018416156101000260001901909316849004601f8101849004840282018401909252818152929183018282801561048c5780601f106104615761010080835404028352916020019161048c565b820191906000526020600020905b81548152906001019060200180831161046f57829003601f168201915b505050505081565b6000826104a081610991565b8215806104ce57503360009081526007602090815260408083206001600160a01b0388168452909152902054155b610514576040805162461bcd60e51b815260206004820152601260248201527111549497d253959053125117d05353d5539560721b604482015290519081900360640190fd5b3360008181526007602090815260408083206001600160a01b03891680855290835292819020879055805187815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b6105846109e5565b6008805460ff19169115919091179055565b60055481565b60006105a6610a3a565b6105b1848484610a8a565b949350505050565b60045460ff1681565b600481565b6105cf6109e5565b826105d981610991565b826105e381610991565b836105ed81610b89565b6105f8868686610bdd565b505050505050565b60066020526000908152604090205481565b6001546001600160a01b03163314610665576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b600154600080546040516001600160a01b0393841693909116917f343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a91a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6106d16109e5565b816106db81610991565b826106e581610b89565b6005546106f29084610d3d565b6005556001600160a01b0384166000908152600660205260409020546107189084610d3d565b6001600160a01b03851660009081526006602090815260409182902092909255805185815290517f9386c90217c323f58030f9dadcbc938f807a940f4ff41cd4cead9562f5da7dc3929181900390910190a16040805184815290516001600160a01b03861691600091600080516020610e738339815191529181900360200190a350505050565b6000546001600160a01b031681565b6003805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561048c5780601f106104615761010080835404028352916020019161048c565b6108116109e5565b6001600160a01b0382166000908152600660205260409020546108349082610d86565b6001600160a01b03831660009081526006602052604090205560055461085a9082610d86565b6005556040805182815290516000916001600160a01b03851691600080516020610e738339815191529181900360200190a36040805182815290517f9a1b418bc061a5d80270261562e6986a35d995f8051145f277be16103abd34539181900360200190a15050565b60006108cd610a3a565b6108d78383610dd3565b9392505050565b60085460ff1681565b6001546001600160a01b031681565b600760209081526000928352604080842090915290825290205481565b61091b6109e5565b6000546001600160a01b038281169116141561096f576040805162461bcd60e51b815260206004820152600e60248201526d22a9292fa9a0a6a2afa7aba722a960911b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381166109e2576040805162461bcd60e51b81526020600482015260136024820152724552525f494e56414c49445f4144445245535360681b604482015290519081900360640190fd5b50565b6000546001600160a01b03163314610a38576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b565b60085460ff16610a38576040805162461bcd60e51b815260206004820152601660248201527511549497d514905394d1915494d7d11254d05093115160521b604482015290519081900360640190fd5b600083610a9681610991565b83610aa081610991565b6001600160a01b0386166000908152600760209081526040808320338452909152902054610ace9085610d86565b6001600160a01b038716600081815260076020908152604080832033845282528083209490945591815260069091522054610b099085610d86565b6001600160a01b038088166000908152600660205260408082209390935590871681522054610b389085610d3d565b6001600160a01b0380871660008181526006602090815260409182902094909455805188815290519193928a1692600080516020610e7383398151915292918290030190a350600195945050505050565b6001600160a01b0381163014156109e2576040805162461bcd60e51b815260206004820152601360248201527222a9292fa0a2222922a9a9afa4a9afa9a2a62360691b604482015290519081900360640190fd5b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b60208310610c5a5780518252601f199092019160209182019101610c3b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610cbc576040519150601f19603f3d011682016040523d82523d6000602084013e610cc1565b606091505b5091509150818015610cef575080511580610cef5750808060200190516020811015610cec57600080fd5b50515b610d36576040805162461bcd60e51b815260206004820152601360248201527211549497d514905394d1915497d19052531151606a1b604482015290519081900360640190fd5b5050505050565b6000828201838110156108d7576040805162461bcd60e51b815260206004820152600c60248201526b4552525f4f564552464c4f5760a01b604482015290519081900360640190fd5b600081831015610dcd576040805162461bcd60e51b815260206004820152600d60248201526c4552525f554e444552464c4f5760981b604482015290519081900360640190fd5b50900390565b600082610ddf81610991565b33600090815260066020526040902054610df99084610d86565b33600090815260066020526040808220929092556001600160a01b03861681522054610e259084610d3d565b6001600160a01b038516600081815260066020908152604091829020939093558051868152905191923392600080516020610e738339815191529281900390910190a3506001939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220d062eb319db2db22c11903c935b69a66b9513479c3c65c965f0b19eb73aa4f9464736f6c634300060c0033a26469706673582212204f09fb1778cc831abb7f873219dbed978e552fc8cd81237b1adc3e5d9ff2530f64736f6c634300060c0033", "deployedBytecode": "0x60806040523480156200001157600080fd5b5060043610620000c45760003560e01c806395d89b41116200007b57806395d89b4114620002325780639cbf9e36146200023c578063c6c3bbe61462000246578063d4ee1d90146200027f578063f2fde38b1462000289578063f6b911bc14620002b257620000c4565b806306fdde0314620000c9578063313ce567146200014b5780635e35359e146200016b5780636d3e313e14620001a657806379ba509714620002025780638da5cb5b146200020c575b600080fd5b620000d3620002eb565b6040805160208082528351818301528351919283929083019185019080838360005b838110156200010f578181015183820152602001620000f5565b50505050905090810190601f1680156200013d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b620001556200037a565b6040805160ff9092168252519081900360200190f35b620001a4600480360360608110156200018357600080fd5b506001600160a01b0381358116916020810135909116906040013562000383565b005b620001b0620003c6565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015620001ee578181015183820152602001620001d4565b505050509050019250505060405180910390f35b620001a46200042a565b62000216620004e2565b604080516001600160a01b039092168252519081900360200190f35b620000d3620004f1565b620002166200054f565b620001a4600480360360608110156200025e57600080fd5b506001600160a01b038135811691602081013590911690604001356200082e565b62000216620008ae565b620001a460048036036020811015620002a157600080fd5b50356001600160a01b0316620008bd565b620001a460048036036060811015620002ca57600080fd5b506001600160a01b038135811691602081013590911690604001356200093e565b6002805460408051602060018416156101000260001901909316849004601f81018490048402820184019092528181529291830182828015620003725780601f10620003465761010080835404028352916020019162000372565b820191906000526020600020905b8154815290600101906020018083116200035457829003601f168201915b505050505081565b60045460ff1681565b6200038d620009a0565b826200039981620009f6565b82620003a581620009f6565b83620003b18162000a4b565b620003be86868662000aa0565b505050505050565b606060058054806020026020016040519081016040528092919081815260200182805480156200042057602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000401575b5050505050905090565b6001546001600160a01b031633146200047e576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b600154600080546040516001600160a01b0393841693909116917f343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a91a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6000546001600160a01b031681565b6003805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015620003725780601f10620003465761010080835404028352916020019162000372565b60006200055b620009a0565b6005805410620005aa576040805162461bcd60e51b815260206004820152601560248201527411549497d3505617d31253525517d4915050d21151605a1b604482015290519081900360640190fd5b6002805460408051602060018416156101000260001901909316849004601f81018490048402820184019092528181526060936200064e93919290918301828280156200063b5780601f106200060f576101008083540402835291602001916200063b565b820191906000526020600020905b8154815290600101906020018083116200061d57829003601f168201915b5050600554600101925062000c08915050565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152939450606093620006ba93909290918301828280156200063b5780601f106200060f576101008083540402835291602001916200063b565b905060008282600460009054906101000a900460ff16604051620006de9062000c92565b60ff82166040820152606080825284519082015283518190602080830191608084019188019080838360005b83811015620007245781810151838201526020016200070a565b50505050905090810190601f168015620007525780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015620007875781810151838201526020016200076d565b50505050905090810190601f168015620007b55780820380516001836020036101000a031916815260200191505b5095505050505050604051809103906000f080158015620007da573d6000803e3d6000fd5b50600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b0319166001600160a01b038316179055949350505050565b62000838620009a0565b826001600160a01b031663867904b483836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156200089057600080fd5b505af1158015620008a5573d6000803e3d6000fd5b50505050505050565b6001546001600160a01b031681565b620008c7620009a0565b6000546001600160a01b03828116911614156200091c576040805162461bcd60e51b815260206004820152600e60248201526d22a9292fa9a0a6a2afa7aba722a960911b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b62000948620009a0565b826001600160a01b031663a24835d183836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156200089057600080fd5b6000546001600160a01b03163314620009f4576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b565b6001600160a01b03811662000a48576040805162461bcd60e51b81526020600482015260136024820152724552525f494e56414c49445f4144445245535360681b604482015290519081900360640190fd5b50565b6001600160a01b03811630141562000a48576040805162461bcd60e51b815260206004820152601360248201527222a9292fa0a2222922a9a9afa4a9afa9a2a62360691b604482015290519081900360640190fd5b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b6020831062000b1f5780518252601f19909201916020918201910162000afe565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811462000b83576040519150601f19603f3d011682016040523d82523d6000602084013e62000b88565b606091505b509150915081801562000bb957508051158062000bb9575080806020019051602081101562000bb657600080fd5b50515b62000c01576040805162461bcd60e51b815260206004820152601360248201527211549497d514905394d1915497d19052531151606a1b604482015290519081900360640190fd5b5050505050565b60608282600360fc1b60f81c016040516020018083805190602001908083835b6020831062000c495780518252601f19909201916020918201910162000c28565b6001836020036101000a0380198251168184511680821785525050505050509050018260ff1660f81b815260010192505050604051602081830303815290604052905092915050565b6112338062000ca18339019056fe60806040526008805460ff191660011790553480156200001e57600080fd5b506040516200123338038062001233833981810160405260608110156200004457600080fd5b81019080805160405193929190846401000000008211156200006557600080fd5b9083019060208201858111156200007b57600080fd5b82516401000000008111828201881017156200009657600080fd5b82525081516020918201929091019080838360005b83811015620000c5578181015183820152602001620000ab565b50505050905090810190601f168015620000f35780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011757600080fd5b9083019060208201858111156200012d57600080fd5b82516401000000008111828201881017156200014857600080fd5b82525081516020918201929091019080838360005b83811015620001775781810151838201526020016200015d565b50505050905090810190601f168015620001a55780820380516001836020036101000a031916815260200191505b5060405260200151600080546001600160a01b031916331781558551919350859250849184919062000211576040805162461bcd60e51b815260206004820152601060248201526f4552525f494e56414c49445f4e414d4560801b604482015290519081900360640190fd5b60008351116200025d576040805162461bcd60e51b815260206004820152601260248201527111549497d253959053125117d4d6535093d360721b604482015290519081900360640190fd5b835162000272906002906020870190620002bf565b50825162000288906003906020860190620002bf565b506004805460ff191660ff9390931692909217909155600581905533600090815260066020526040902055506200035b9350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200030257805160ff191683800117855562000332565b8280016001018555821562000332579182015b828111156200033257825182559160200191906001019062000315565b506200034092915062000344565b5090565b5b8082111562000340576000815560010162000345565b610ec8806200036b6000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c806379ba5097116100ad578063a9059cbb11610071578063a9059cbb14610379578063bef97c87146103a5578063d4ee1d90146103ad578063dd62ed3e146103b5578063f2fde38b146103e357610121565b806379ba5097146102ed578063867904b4146102f55780638da5cb5b1461032157806395d89b4114610345578063a24835d11461034d57610121565b806323b872dd116100f457806323b872dd1461021e578063313ce5671461025457806354fd4d50146102725780635e35359e1461029157806370a08231146102c757610121565b806306fdde0314610126578063095ea7b3146101a35780631608f18f146101e357806318160ddd14610204575b600080fd5b61012e610409565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610168578181015183820152602001610150565b50505050905090810190601f1680156101955780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101cf600480360360408110156101b957600080fd5b506001600160a01b038135169060200135610494565b604080519115158252519081900360200190f35b610202600480360360208110156101f957600080fd5b5035151561057c565b005b61020c610596565b60408051918252519081900360200190f35b6101cf6004803603606081101561023457600080fd5b506001600160a01b0381358116916020810135909116906040013561059c565b61025c6105b9565b6040805160ff9092168252519081900360200190f35b61027a6105c2565b6040805161ffff9092168252519081900360200190f35b610202600480360360608110156102a757600080fd5b506001600160a01b038135811691602081013590911690604001356105c7565b61020c600480360360208110156102dd57600080fd5b50356001600160a01b0316610600565b610202610612565b6102026004803603604081101561030b57600080fd5b506001600160a01b0381351690602001356106c9565b61032961079f565b604080516001600160a01b039092168252519081900360200190f35b61012e6107ae565b6102026004803603604081101561036357600080fd5b506001600160a01b038135169060200135610809565b6101cf6004803603604081101561038f57600080fd5b506001600160a01b0381351690602001356108c3565b6101cf6108de565b6103296108e7565b61020c600480360360408110156103cb57600080fd5b506001600160a01b03813581169160200135166108f6565b610202600480360360208110156103f957600080fd5b50356001600160a01b0316610913565b6002805460408051602060018416156101000260001901909316849004601f8101849004840282018401909252818152929183018282801561048c5780601f106104615761010080835404028352916020019161048c565b820191906000526020600020905b81548152906001019060200180831161046f57829003601f168201915b505050505081565b6000826104a081610991565b8215806104ce57503360009081526007602090815260408083206001600160a01b0388168452909152902054155b610514576040805162461bcd60e51b815260206004820152601260248201527111549497d253959053125117d05353d5539560721b604482015290519081900360640190fd5b3360008181526007602090815260408083206001600160a01b03891680855290835292819020879055805187815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b6105846109e5565b6008805460ff19169115919091179055565b60055481565b60006105a6610a3a565b6105b1848484610a8a565b949350505050565b60045460ff1681565b600481565b6105cf6109e5565b826105d981610991565b826105e381610991565b836105ed81610b89565b6105f8868686610bdd565b505050505050565b60066020526000908152604090205481565b6001546001600160a01b03163314610665576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b600154600080546040516001600160a01b0393841693909116917f343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a91a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6106d16109e5565b816106db81610991565b826106e581610b89565b6005546106f29084610d3d565b6005556001600160a01b0384166000908152600660205260409020546107189084610d3d565b6001600160a01b03851660009081526006602090815260409182902092909255805185815290517f9386c90217c323f58030f9dadcbc938f807a940f4ff41cd4cead9562f5da7dc3929181900390910190a16040805184815290516001600160a01b03861691600091600080516020610e738339815191529181900360200190a350505050565b6000546001600160a01b031681565b6003805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561048c5780601f106104615761010080835404028352916020019161048c565b6108116109e5565b6001600160a01b0382166000908152600660205260409020546108349082610d86565b6001600160a01b03831660009081526006602052604090205560055461085a9082610d86565b6005556040805182815290516000916001600160a01b03851691600080516020610e738339815191529181900360200190a36040805182815290517f9a1b418bc061a5d80270261562e6986a35d995f8051145f277be16103abd34539181900360200190a15050565b60006108cd610a3a565b6108d78383610dd3565b9392505050565b60085460ff1681565b6001546001600160a01b031681565b600760209081526000928352604080842090915290825290205481565b61091b6109e5565b6000546001600160a01b038281169116141561096f576040805162461bcd60e51b815260206004820152600e60248201526d22a9292fa9a0a6a2afa7aba722a960911b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381166109e2576040805162461bcd60e51b81526020600482015260136024820152724552525f494e56414c49445f4144445245535360681b604482015290519081900360640190fd5b50565b6000546001600160a01b03163314610a38576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b565b60085460ff16610a38576040805162461bcd60e51b815260206004820152601660248201527511549497d514905394d1915494d7d11254d05093115160521b604482015290519081900360640190fd5b600083610a9681610991565b83610aa081610991565b6001600160a01b0386166000908152600760209081526040808320338452909152902054610ace9085610d86565b6001600160a01b038716600081815260076020908152604080832033845282528083209490945591815260069091522054610b099085610d86565b6001600160a01b038088166000908152600660205260408082209390935590871681522054610b389085610d3d565b6001600160a01b0380871660008181526006602090815260409182902094909455805188815290519193928a1692600080516020610e7383398151915292918290030190a350600195945050505050565b6001600160a01b0381163014156109e2576040805162461bcd60e51b815260206004820152601360248201527222a9292fa0a2222922a9a9afa4a9afa9a2a62360691b604482015290519081900360640190fd5b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b60208310610c5a5780518252601f199092019160209182019101610c3b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610cbc576040519150601f19603f3d011682016040523d82523d6000602084013e610cc1565b606091505b5091509150818015610cef575080511580610cef5750808060200190516020811015610cec57600080fd5b50515b610d36576040805162461bcd60e51b815260206004820152601360248201527211549497d514905394d1915497d19052531151606a1b604482015290519081900360640190fd5b5050505050565b6000828201838110156108d7576040805162461bcd60e51b815260206004820152600c60248201526b4552525f4f564552464c4f5760a01b604482015290519081900360640190fd5b600081831015610dcd576040805162461bcd60e51b815260206004820152600d60248201526c4552525f554e444552464c4f5760981b604482015290519081900360640190fd5b50900390565b600082610ddf81610991565b33600090815260066020526040902054610df99084610d86565b33600090815260066020526040808220929092556001600160a01b03861681522054610e259084610d3d565b6001600160a01b038516600081815260066020908152604091829020939093558051868152905191923392600080516020610e738339815191529281900390910190a3506001939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220d062eb319db2db22c11903c935b69a66b9513479c3c65c965f0b19eb73aa4f9464736f6c634300060c0033a26469706673582212204f09fb1778cc831abb7f873219dbed978e552fc8cd81237b1adc3e5d9ff2530f64736f6c634300060c0033", "immutableReferences": {}, "sourceMap": "592:3348:32:-:0;;;1382:329;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1382:329:32;;;;;;;;;;-1:-1:-1;1382:329:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1382:329:32;;;;;;;;;;-1:-1:-1;1382:329:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1382:329:32;;;;;619:5:58;:18;;-1:-1:-1;;;;;;619:18:58;627:10;619:18;;;1509:19:32;;1382:329;;-1:-1:-1;1509:23:32;;;-1:-1:-1;1501:52:32;;;;;-1:-1:-1;;;1501:52:32;;;;;;;;;;;;-1:-1:-1;;;1501:52:32;;;;;;;;;;;;;;;1596:1;1578:7;1572:21;:25;1564:56;;;;;-1:-1:-1;;;1564:56:32;;;;;;;;;;;;-1:-1:-1;;;1564:56:32;;;;;;;;;;;;;;;1633:12;;;;:4;;:12;;;;;:::i;:::-;-1:-1:-1;1656:16:32;;;;:6;;:16;;;;;:::i;:::-;-1:-1:-1;1683:8:32;:20;;-1:-1:-1;;1683:20:32;;;;;;;;;;;;-1:-1:-1;592:3348:32;;-1:-1:-1;592:3348:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;592:3348:32;;;-1:-1:-1;592:3348:32;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;", "deployedSourceMap": "592:3348:32:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;767:18;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;877:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1196:290:63;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1196:290:63;;;;;;;;;;;;;;;;;:::i;:::-;;1828:113:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1422:217:58;;;:::i;219:29::-;;;:::i;:::-;;;;-1:-1:-1;;;;;219:29:58;;;;;;;;;;;;;;821:20:32;;;:::i;2078:530::-;;;:::i;2936:137::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2936:137:32;;;;;;;;;;;;;;;;;:::i;255:23:58:-;;;:::i;1164:167::-;;;;;;;;;;;;;;;;-1:-1:-1;1164:167:58;-1:-1:-1;;;;;1164:167:58;;:::i;3388:143:32:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3388:143:32;;;;;;;;;;;;;;;;;:::i;767:18::-;;;;;;;;;;;;;;-1:-1:-1;;767:18:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;877:21::-;;;;;;:::o;1196:290:63:-;726:12:58;:10;:12::i;:::-;1370:6:63::1;594:23:65;608:8;594:13;:23::i;:::-;1401:3:63::2;594:23:65;608:8;594:13;:23::i;:::-;1423:3:63::3;948:18:65;957:8;948;:18::i;:::-;1444:34:63::4;1457:6;1465:3;1470:7;1444:12;:34::i;:::-;628:1:65::3;::::2;749::58::1;1196:290:63::0;;;:::o;1828:113:32:-;1882:20;1922:11;1915:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1915:18:32;;;-1:-1:-1;1915:18:32;;;;;;;;;;;;;;;;;;;1828:113;:::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;;;;;1591:8:58;;-1:-1:-1;;;;;;1583:16:58;;;;;;;1610:21;;;1422:217::o;219:29::-;;;-1:-1:-1;;;;;219:29:58;;:::o;821:20:32:-;;;;;;;;;;;;;;;-1:-1:-1;;821:20:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2078:530;2138:11;726:12:58;:10;:12::i;:::-;714:1:32::1;2223:18:::0;;:36:::1;2215:70;;;::::0;;-1:-1:-1;;;2215:70:32;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;2215:70:32;;;;;;;;;;;;;::::1;;2338:4;2323:51:::0;;::::1;::::0;;::::1;;::::0;::::1;;;;-1:-1:-1::0;;2323:51:32;;;::::1;::::0;;::::1;;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;;2298:22:::1;::::0;2323:51:::1;::::0;;;2338:4;;2323:51;::::1;2338:4:::0;2323:51;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;2350:11:32::1;:18:::0;2371:1:::1;2350:22;::::0;-1:-1:-1;2323:14:32::1;::::0;-1:-1:-1;;2323:51:32:i:1;:::-;2427:6;2412:53:::0;;::::1;::::0;;::::1;;;::::0;::::1;;;;-1:-1:-1::0;;2412:53:32;;;::::1;::::0;;;::::1;;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;;2298:76;;-1:-1:-1;2385:24:32::1;::::0;2412:53:::1;::::0;;;2427:6;;2412:53;;::::1;2427:6:::0;2412:53;;::::1;;;;;;;;;;;;;;;;;;;;;;;2385:80;;2478:16;2512:8;2522:10;2534:8;;;;;;;;;;;2497:46;;;;;:::i;:::-;;::::0;::::1;::::0;;;;;;;;;;;;;;;;;;::::1;::::0;;::::1;::::0;;;;;;::::1;::::0;;;;;::::1;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;2497:46:32;;::::1;::::0;;;;;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;::::1;;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;2554:11:32::1;:23:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;2554:23:32;;;;;::::1;::::0;;-1:-1:-1;;;;;;2554:23:32::1;-1:-1:-1::0;;;;;2554:23:32;::::1;;::::0;;;;-1:-1:-1;;;;2078:530:32:o;2936:137::-;726:12:58;:10;:12::i;:::-;3039:26:32::1;::::0;;-1:-1:-1;;;3039:26:32;;-1:-1:-1;;;;;3039:26:32;;::::1;;::::0;::::1;::::0;;;;;;;;;:12;;::::1;::::0;::::1;::::0;:26;;;;;-1:-1:-1;;3039:26:32;;;;;;;;-1:-1:-1;3039:12:32;:26;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;2936:137:::0;;;:::o;255:23:58:-;;;-1:-1:-1;;;;;255:23:58;;:::o;1164:167::-;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;3388:143:32:-;726:12:58;:10;:12::i;:::-;3493:30:32::1;::::0;;-1:-1:-1;;;3493:30:32;;-1:-1:-1;;;;;3493:30:32;;::::1;;::::0;::::1;::::0;;;;;;;;;:14;;::::1;::::0;::::1;::::0;:30;;;;;-1:-1:-1;;3493:30:32;;;;;;;;-1:-1:-1;3493:14:32;:30;::::1;;::::0;::::1;;;;::::0;::::1;813:104:58::0;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;692:128:65:-;-1:-1:-1;;;;;766:22:65;;758:54;;;;;-1:-1:-1;;;758:54:65;;;;;;;;;;;;-1:-1:-1;;;758:54:65;;;;;;;;;;;;;;;692:128;:::o;1041:126::-;1130:4;-1:-1:-1;;;;;1110:25:65;;;;1102:57;;;;;-1:-1:-1;;;1102:57:65;;;;;;;;;;;;-1:-1:-1;;;1102:57:65;;;;;;;;;;;;;;1485:312:62;1631:59;;;-1:-1:-1;;;;;1631:59:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1631:59:62;-1:-1:-1;;;1631:59:62;;;1610:81;;;;-1:-1:-1;;1589:17:62;;1610:20;;;;1631:59;1610:81;;;1631:59;1610:81;;1631:59;1610:81;;;;;;;;;;-1:-1:-1;;1610:81:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1574:117;;;;1709:7;:57;;;;-1:-1:-1;1721:11:62;;:16;;:44;;;1752:4;1741:24;;;;;;;;;;;;;;;-1:-1:-1;1741:24:62;1721:44;1701:89;;;;;-1:-1:-1;;;1701:89:62;;;;;;;;;;;;-1:-1:-1;;;1701:89:62;;;;;;;;;;;;;;;1485:312;;;;;:::o;3757:180:32:-;3837:13;3894:4;3921:6;-1:-1:-1;;;3900:18:32;;:27;3877:51;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3877:51:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3863:66;;3757:180;;;;:::o;-1:-1:-1:-;;;;;;;;:::o", "source": "// SPDX-License-Identifier: SEE LICENSE IN LICENSE\r\npragma solidity 0.6.12;\r\nimport \"./interfaces/IPoolTokensContainer.sol\";\r\nimport \"../../../utility/Owned.sol\";\r\nimport \"../../../utility/TokenHolder.sol\";\r\nimport \"../../../token/SmartToken.sol\";\r\n\r\n/**\r\n * @dev The PoolTokensContainer contract serves as a container for multiple pool tokens.\r\n * It is used by specific liquidity pool types that require more than a single pool token,\r\n * while still maintaining the single converter / anchor relationship.\r\n *\r\n * It maintains and provides a list of the underlying pool tokens.\r\n */\r\ncontract PoolTokensContainer is IPoolTokensContainer, Owned, TokenHolder {\r\n uint8 internal constant MAX_POOL_TOKENS = 5; // maximum pool tokens in the container\r\n\r\n string public name; // pool name\r\n string public symbol; // pool symbol\r\n uint8 public decimals; // underlying pool tokens decimals\r\n ISmartToken[] private _poolTokens; // underlying pool tokens\r\n\r\n /**\r\n * @dev initializes a new PoolTokensContainer instance\r\n *\r\n * @param _name pool name, also used as a prefix for the underlying pool token names\r\n * @param _symbol pool symbol, also used as a prefix for the underlying pool token symbols\r\n * @param _decimals used for the underlying pool token decimals\r\n */\r\n constructor(string memory _name, string memory _symbol, uint8 _decimals) public {\r\n // validate input\r\n require(bytes(_name).length > 0, \"ERR_INVALID_NAME\");\r\n require(bytes(_symbol).length > 0, \"ERR_INVALID_SYMBOL\");\r\n\r\n name = _name;\r\n symbol = _symbol;\r\n decimals = _decimals;\r\n }\r\n\r\n /**\r\n * @dev returns the list of pool tokens\r\n *\r\n * @return list of pool tokens\r\n */\r\n function poolTokens() external view override returns (ISmartToken[] memory) {\r\n return _poolTokens;\r\n }\r\n\r\n /**\r\n * @dev creates a new pool token and adds it to the list\r\n *\r\n * @return new pool token address\r\n */\r\n function createToken() external override ownerOnly returns (ISmartToken) {\r\n // verify that the max limit wasn't reached\r\n require(_poolTokens.length < MAX_POOL_TOKENS, \"ERR_MAX_LIMIT_REACHED\");\r\n\r\n string memory poolName = concatStrDigit(name, uint8(_poolTokens.length + 1));\r\n string memory poolSymbol = concatStrDigit(symbol, uint8(_poolTokens.length + 1));\r\n\r\n SmartToken token = new SmartToken(poolName, poolSymbol, decimals);\r\n _poolTokens.push(token);\r\n return token;\r\n }\r\n\r\n /**\r\n * @dev increases the pool token supply and sends the new tokens to the given account\r\n * can only be called by the contract owner\r\n *\r\n * @param _token pool token address\r\n * @param _to account to receive the newly minted tokens\r\n * @param _amount amount to mint\r\n */\r\n function mint(ISmartToken _token, address _to, uint256 _amount) external override ownerOnly {\r\n _token.issue(_to, _amount);\r\n }\r\n\r\n /**\r\n * @dev removes tokens from the given account and decreases the pool token supply\r\n * can only be called by the contract owner\r\n *\r\n * @param _token pool token address\r\n * @param _from account to remove the tokens from\r\n * @param _amount amount to burn\r\n */\r\n function burn(ISmartToken _token, address _from, uint256 _amount) external override ownerOnly {\r\n _token.destroy(_from, _amount);\r\n }\r\n\r\n /**\r\n * @dev concatenates a string and a digit (single only) and returns the result string\r\n *\r\n * @param _str string\r\n * @param _digit digit\r\n * @return concatenated string\r\n */\r\n function concatStrDigit(string memory _str, uint8 _digit) private pure returns (string memory) {\r\n return string(abi.encodePacked(_str, uint8(bytes1('0')) + _digit));\r\n }\r\n}\r\n", "sourcePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/types/liquidity-pool-v2/PoolTokensContainer.sol", "ast": { "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/types/liquidity-pool-v2/PoolTokensContainer.sol", "exportedSymbols": { "PoolTokensContainer": [ 18724 ] }, "id": 18725, "license": "SEE LICENSE IN LICENSE", "nodeType": "SourceUnit", "nodes": [ { "id": 18513, "literals": [ "solidity", "0.6", ".12" ], "nodeType": "PragmaDirective", "src": "52:23:32" }, { "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/types/liquidity-pool-v2/interfaces/IPoolTokensContainer.sol", "file": "./interfaces/IPoolTokensContainer.sol", "id": 18514, "nodeType": "ImportDirective", "scope": 18725, "sourceUnit": 18802, "src": "77:47:32", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/Owned.sol", "file": "../../../utility/Owned.sol", "id": 18515, "nodeType": "ImportDirective", "scope": 18725, "sourceUnit": 22154, "src": "126:36:32", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/TokenHolder.sol", "file": "../../../utility/TokenHolder.sol", "id": 18516, "nodeType": "ImportDirective", "scope": 18725, "sourceUnit": 22911, "src": "164:42:32", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/token/SmartToken.sol", "file": "../../../token/SmartToken.sol", "id": 18517, "nodeType": "ImportDirective", "scope": 18725, "sourceUnit": 21395, "src": "208:39:32", "symbolAliases": [], "unitAlias": "" }, { "abstract": false, "baseContracts": [ { "arguments": null, "baseName": { "contractScope": null, "id": 18519, "name": "IPoolTokensContainer", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 18801, "src": "624:20:32", "typeDescriptions": { "typeIdentifier": "t_contract$_IPoolTokensContainer_$18801", "typeString": "contract IPoolTokensContainer" } }, "id": 18520, "nodeType": "InheritanceSpecifier", "src": "624:20:32" }, { "arguments": null, "baseName": { "contractScope": null, "id": 18521, "name": "Owned", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 22153, "src": "646:5:32", "typeDescriptions": { "typeIdentifier": "t_contract$_Owned_$22153", "typeString": "contract Owned" } }, "id": 18522, "nodeType": "InheritanceSpecifier", "src": "646:5:32" }, { "arguments": null, "baseName": { "contractScope": null, "id": 18523, "name": "TokenHolder", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 22910, "src": "653:11:32", "typeDescriptions": { "typeIdentifier": "t_contract$_TokenHolder_$22910", "typeString": "contract TokenHolder" } }, "id": 18524, "nodeType": "InheritanceSpecifier", "src": "653:11:32" } ], "contractDependencies": [ 13349, 18801, 21394, 22153, 22861, 22910, 22996, 23182, 23242 ], "contractKind": "contract", "documentation": { "id": 18518, "nodeType": "StructuredDocumentation", "src": "251:339:32", "text": " @dev The PoolTokensContainer contract serves as a container for multiple pool tokens.\n It is used by specific liquidity pool types that require more than a single pool token,\n while still maintaining the single converter / anchor relationship.\n It maintains and provides a list of the underlying pool tokens." }, "fullyImplemented": true, "id": 18724, "linearizedBaseContracts": [ 18724, 22910, 22996, 22153, 22861, 18801, 13349, 23242, 23182 ], "name": "PoolTokensContainer", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, "id": 18527, "mutability": "constant", "name": "MAX_POOL_TOKENS", "nodeType": "VariableDeclaration", "overrides": null, "scope": 18724, "src": "672:43:32", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 18525, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "672:5:32", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": { "argumentTypes": null, "hexValue": "35", "id": 18526, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "714:1:32", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", "typeString": "int_const 5" }, "value": "5" }, "visibility": "internal" }, { "constant": false, "functionSelector": "06fdde03", "id": 18529, "mutability": "mutable", "name": "name", "nodeType": "VariableDeclaration", "overrides": null, "scope": 18724, "src": "767:18:32", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string" }, "typeName": { "id": 18528, "name": "string", "nodeType": "ElementaryTypeName", "src": "767:6:32", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": null, "visibility": "public" }, { "constant": false, "functionSelector": "95d89b41", "id": 18531, "mutability": "mutable", "name": "symbol", "nodeType": "VariableDeclaration", "overrides": null, "scope": 18724, "src": "821:20:32", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string" }, "typeName": { "id": 18530, "name": "string", "nodeType": "ElementaryTypeName", "src": "821:6:32", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": null, "visibility": "public" }, { "constant": false, "functionSelector": "313ce567", "id": 18533, "mutability": "mutable", "name": "decimals", "nodeType": "VariableDeclaration", "overrides": null, "scope": 18724, "src": "877:21:32", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 18532, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "877:5:32", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "public" }, { "constant": false, "id": 18536, "mutability": "mutable", "name": "_poolTokens", "nodeType": "VariableDeclaration", "overrides": null, "scope": 18724, "src": "953:33:32", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_array$_t_contract$_ISmartToken_$21517_$dyn_storage", "typeString": "contract ISmartToken[]" }, "typeName": { "baseType": { "contractScope": null, "id": 18534, "name": "ISmartToken", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 21517, "src": "953:11:32", "typeDescriptions": { "typeIdentifier": "t_contract$_ISmartToken_$21517", "typeString": "contract ISmartToken" } }, "id": 18535, "length": null, "nodeType": "ArrayTypeName", "src": "953:13:32", "typeDescriptions": { "typeIdentifier": "t_array$_t_contract$_ISmartToken_$21517_$dyn_storage_ptr", "typeString": "contract ISmartToken[]" } }, "value": null, "visibility": "private" }, { "body": { "id": 18580, "nodeType": "Block", "src": "1462:249:32", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 18553, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 18549, "name": "_name", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18539, "src": "1515:5:32", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } ], "id": 18548, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1509:5:32", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", "typeString": "type(bytes storage pointer)" }, "typeName": { "id": 18547, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1509:5:32", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 18550, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1509:12:32", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 18551, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1509:19:32", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 18552, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1531:1:32", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "1509:23:32", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "4552525f494e56414c49445f4e414d45", "id": 18554, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1534:18:32", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_8c31b897cf1b4c41d9a3a2c9019700f5d8d0c36c906997985403c8f4610f8246", "typeString": "literal_string \"ERR_INVALID_NAME\"" }, "value": "ERR_INVALID_NAME" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_8c31b897cf1b4c41d9a3a2c9019700f5d8d0c36c906997985403c8f4610f8246", "typeString": "literal_string \"ERR_INVALID_NAME\"" } ], "id": 18546, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "1501:7:32", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 18555, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1501:52:32", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 18556, "nodeType": "ExpressionStatement", "src": "1501:52:32" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 18564, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 18560, "name": "_symbol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18541, "src": "1578:7:32", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } ], "id": 18559, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1572:5:32", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", "typeString": "type(bytes storage pointer)" }, "typeName": { "id": 18558, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1572:5:32", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 18561, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1572:14:32", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 18562, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1572:21:32", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 18563, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1596:1:32", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "1572:25:32", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "4552525f494e56414c49445f53594d424f4c", "id": 18565, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1599:20:32", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_8cbe13dffb618f268f4d803a75787a665744c462e7a6ba0f32e015df7f7a2fda", "typeString": "literal_string \"ERR_INVALID_SYMBOL\"" }, "value": "ERR_INVALID_SYMBOL" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_8cbe13dffb618f268f4d803a75787a665744c462e7a6ba0f32e015df7f7a2fda", "typeString": "literal_string \"ERR_INVALID_SYMBOL\"" } ], "id": 18557, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "1564:7:32", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 18566, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1564:56:32", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 18567, "nodeType": "ExpressionStatement", "src": "1564:56:32" }, { "expression": { "argumentTypes": null, "id": 18570, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 18568, "name": "name", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18529, "src": "1633:4:32", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 18569, "name": "_name", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18539, "src": "1640:5:32", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, "src": "1633:12:32", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, "id": 18571, "nodeType": "ExpressionStatement", "src": "1633:12:32" }, { "expression": { "argumentTypes": null, "id": 18574, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 18572, "name": "symbol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18531, "src": "1656:6:32", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 18573, "name": "_symbol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18541, "src": "1665:7:32", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, "src": "1656:16:32", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, "id": 18575, "nodeType": "ExpressionStatement", "src": "1656:16:32" }, { "expression": { "argumentTypes": null, "id": 18578, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 18576, "name": "decimals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18533, "src": "1683:8:32", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 18577, "name": "_decimals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18543, "src": "1694:9:32", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "1683:20:32", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "id": 18579, "nodeType": "ExpressionStatement", "src": "1683:20:32" } ] }, "documentation": { "id": 18537, "nodeType": "StructuredDocumentation", "src": "1022:354:32", "text": " @dev initializes a new PoolTokensContainer instance\n @param _name pool name, also used as a prefix for the underlying pool token names\n @param _symbol pool symbol, also used as a prefix for the underlying pool token symbols\n @param _decimals used for the underlying pool token decimals" }, "id": 18581, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 18544, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 18539, "mutability": "mutable", "name": "_name", "nodeType": "VariableDeclaration", "overrides": null, "scope": 18581, "src": "1394:19:32", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 18538, "name": "string", "nodeType": "ElementaryTypeName", "src": "1394:6:32", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 18541, "mutability": "mutable", "name": "_symbol", "nodeType": "VariableDeclaration", "overrides": null, "scope": 18581, "src": "1415:21:32", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 18540, "name": "string", "nodeType": "ElementaryTypeName", "src": "1415:6:32", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 18543, "mutability": "mutable", "name": "_decimals", "nodeType": "VariableDeclaration", "overrides": null, "scope": 18581, "src": "1438:15:32", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 18542, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "1438:5:32", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "src": "1393:61:32" }, "returnParameters": { "id": 18545, "nodeType": "ParameterList", "parameters": [], "src": "1462:0:32" }, "scope": 18724, "src": "1382:329:32", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "baseFunctions": [ 18777 ], "body": { "id": 18591, "nodeType": "Block", "src": "1904:37:32", "statements": [ { "expression": { "argumentTypes": null, "id": 18589, "name": "_poolTokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18536, "src": "1922:11:32", "typeDescriptions": { "typeIdentifier": "t_array$_t_contract$_ISmartToken_$21517_$dyn_storage", "typeString": "contract ISmartToken[] storage ref" } }, "functionReturnParameters": 18588, "id": 18590, "nodeType": "Return", "src": "1915:18:32" } ] }, "documentation": { "id": 18582, "nodeType": "StructuredDocumentation", "src": "1719:103:32", "text": " @dev returns the list of pool tokens\n @return list of pool tokens" }, "functionSelector": "6d3e313e", "id": 18592, "implemented": true, "kind": "function", "modifiers": [], "name": "poolTokens", "nodeType": "FunctionDefinition", "overrides": { "id": 18584, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1864:8:32" }, "parameters": { "id": 18583, "nodeType": "ParameterList", "parameters": [], "src": "1847:2:32" }, "returnParameters": { "id": 18588, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 18587, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 18592, "src": "1882:20:32", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_array$_t_contract$_ISmartToken_$21517_$dyn_memory_ptr", "typeString": "contract ISmartToken[]" }, "typeName": { "baseType": { "contractScope": null, "id": 18585, "name": "ISmartToken", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 21517, "src": "1882:11:32", "typeDescriptions": { "typeIdentifier": "t_contract$_ISmartToken_$21517", "typeString": "contract ISmartToken" } }, "id": 18586, "length": null, "nodeType": "ArrayTypeName", "src": "1882:13:32", "typeDescriptions": { "typeIdentifier": "t_array$_t_contract$_ISmartToken_$21517_$dyn_storage_ptr", "typeString": "contract ISmartToken[]" } }, "value": null, "visibility": "internal" } ], "src": "1881:22:32" }, "scope": 18724, "src": "1828:113:32", "stateMutability": "view", "virtual": false, "visibility": "external" }, { "baseFunctions": [ 18782 ], "body": { "id": 18652, "nodeType": "Block", "src": "2151:457:32", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 18605, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 18602, "name": "_poolTokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18536, "src": "2223:11:32", "typeDescriptions": { "typeIdentifier": "t_array$_t_contract$_ISmartToken_$21517_$dyn_storage", "typeString": "contract ISmartToken[] storage ref" } }, "id": 18603, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2223:18:32", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { "argumentTypes": null, "id": 18604, "name": "MAX_POOL_TOKENS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18527, "src": "2244:15:32", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "2223:36:32", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "4552525f4d41585f4c494d49545f52454143484544", "id": 18606, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2261:23:32", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_65600c00f67ab34f2203e92774a46e26e7dd32d8502d3f07241456a23d1290f8", "typeString": "literal_string \"ERR_MAX_LIMIT_REACHED\"" }, "value": "ERR_MAX_LIMIT_REACHED" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_65600c00f67ab34f2203e92774a46e26e7dd32d8502d3f07241456a23d1290f8", "typeString": "literal_string \"ERR_MAX_LIMIT_REACHED\"" } ], "id": 18601, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "2215:7:32", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 18607, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2215:70:32", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 18608, "nodeType": "ExpressionStatement", "src": "2215:70:32" }, { "assignments": [ 18610 ], "declarations": [ { "constant": false, "id": 18610, "mutability": "mutable", "name": "poolName", "nodeType": "VariableDeclaration", "overrides": null, "scope": 18652, "src": "2298:22:32", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 18609, "name": "string", "nodeType": "ElementaryTypeName", "src": "2298:6:32", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": null, "visibility": "internal" } ], "id": 18621, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 18612, "name": "name", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18529, "src": "2338:4:32", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 18618, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 18615, "name": "_poolTokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18536, "src": "2350:11:32", "typeDescriptions": { "typeIdentifier": "t_array$_t_contract$_ISmartToken_$21517_$dyn_storage", "typeString": "contract ISmartToken[] storage ref" } }, "id": 18616, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2350:18:32", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "hexValue": "31", "id": 18617, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2371:1:32", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "2350:22:32", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 18614, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2344:5:32", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint8_$", "typeString": "type(uint8)" }, "typeName": { "id": 18613, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "2344:5:32", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 18619, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2344:29:32", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" }, { "typeIdentifier": "t_uint8", "typeString": "uint8" } ], "id": 18611, "name": "concatStrDigit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18723, "src": "2323:14:32", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_uint8_$returns$_t_string_memory_ptr_$", "typeString": "function (string memory,uint8) pure returns (string memory)" } }, "id": 18620, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2323:51:32", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, "nodeType": "VariableDeclarationStatement", "src": "2298:76:32" }, { "assignments": [ 18623 ], "declarations": [ { "constant": false, "id": 18623, "mutability": "mutable", "name": "poolSymbol", "nodeType": "VariableDeclaration", "overrides": null, "scope": 18652, "src": "2385:24:32", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 18622, "name": "string", "nodeType": "ElementaryTypeName", "src": "2385:6:32", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": null, "visibility": "internal" } ], "id": 18634, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 18625, "name": "symbol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18531, "src": "2427:6:32", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 18631, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 18628, "name": "_poolTokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18536, "src": "2441:11:32", "typeDescriptions": { "typeIdentifier": "t_array$_t_contract$_ISmartToken_$21517_$dyn_storage", "typeString": "contract ISmartToken[] storage ref" } }, "id": 18629, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2441:18:32", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "hexValue": "31", "id": 18630, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2462:1:32", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "2441:22:32", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 18627, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2435:5:32", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint8_$", "typeString": "type(uint8)" }, "typeName": { "id": 18626, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "2435:5:32", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 18632, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2435:29:32", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" }, { "typeIdentifier": "t_uint8", "typeString": "uint8" } ], "id": 18624, "name": "concatStrDigit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18723, "src": "2412:14:32", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_uint8_$returns$_t_string_memory_ptr_$", "typeString": "function (string memory,uint8) pure returns (string memory)" } }, "id": 18633, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2412:53:32", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, "nodeType": "VariableDeclarationStatement", "src": "2385:80:32" }, { "assignments": [ 18636 ], "declarations": [ { "constant": false, "id": 18636, "mutability": "mutable", "name": "token", "nodeType": "VariableDeclaration", "overrides": null, "scope": 18652, "src": "2478:16:32", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_SmartToken_$21394", "typeString": "contract SmartToken" }, "typeName": { "contractScope": null, "id": 18635, "name": "SmartToken", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 21394, "src": "2478:10:32", "typeDescriptions": { "typeIdentifier": "t_contract$_SmartToken_$21394", "typeString": "contract SmartToken" } }, "value": null, "visibility": "internal" } ], "id": 18643, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 18639, "name": "poolName", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18610, "src": "2512:8:32", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, { "argumentTypes": null, "id": 18640, "name": "poolSymbol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18623, "src": "2522:10:32", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, { "argumentTypes": null, "id": 18641, "name": "decimals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18533, "src": "2534:8:32", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" }, { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" }, { "typeIdentifier": "t_uint8", "typeString": "uint8" } ], "id": 18638, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "NewExpression", "src": "2497:14:32", "typeDescriptions": { "typeIdentifier": "t_function_creation_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint8_$returns$_t_contract$_SmartToken_$21394_$", "typeString": "function (string memory,string memory,uint8) returns (contract SmartToken)" }, "typeName": { "contractScope": null, "id": 18637, "name": "SmartToken", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 21394, "src": "2501:10:32", "typeDescriptions": { "typeIdentifier": "t_contract$_SmartToken_$21394", "typeString": "contract SmartToken" } } }, "id": 18642, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2497:46:32", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_SmartToken_$21394", "typeString": "contract SmartToken" } }, "nodeType": "VariableDeclarationStatement", "src": "2478:65:32" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 18647, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18636, "src": "2571:5:32", "typeDescriptions": { "typeIdentifier": "t_contract$_SmartToken_$21394", "typeString": "contract SmartToken" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_SmartToken_$21394", "typeString": "contract SmartToken" } ], "expression": { "argumentTypes": null, "id": 18644, "name": "_poolTokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18536, "src": "2554:11:32", "typeDescriptions": { "typeIdentifier": "t_array$_t_contract$_ISmartToken_$21517_$dyn_storage", "typeString": "contract ISmartToken[] storage ref" } }, "id": 18646, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "push", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2554:16:32", "typeDescriptions": { "typeIdentifier": "t_function_arraypush_nonpayable$_t_contract$_ISmartToken_$21517_$returns$__$", "typeString": "function (contract ISmartToken)" } }, "id": 18648, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2554:23:32", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 18649, "nodeType": "ExpressionStatement", "src": "2554:23:32" }, { "expression": { "argumentTypes": null, "id": 18650, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18636, "src": "2595:5:32", "typeDescriptions": { "typeIdentifier": "t_contract$_SmartToken_$21394", "typeString": "contract SmartToken" } }, "functionReturnParameters": 18600, "id": 18651, "nodeType": "Return", "src": "2588:12:32" } ] }, "documentation": { "id": 18593, "nodeType": "StructuredDocumentation", "src": "1949:123:32", "text": " @dev creates a new pool token and adds it to the list\n @return new pool token address" }, "functionSelector": "9cbf9e36", "id": 18653, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 18597, "modifierName": { "argumentTypes": null, "id": 18596, "name": "ownerOnly", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 22089, "src": "2119:9:32", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "2119:9:32" } ], "name": "createToken", "nodeType": "FunctionDefinition", "overrides": { "id": 18595, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2110:8:32" }, "parameters": { "id": 18594, "nodeType": "ParameterList", "parameters": [], "src": "2098:2:32" }, "returnParameters": { "id": 18600, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 18599, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 18653, "src": "2138:11:32", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_ISmartToken_$21517", "typeString": "contract ISmartToken" }, "typeName": { "contractScope": null, "id": 18598, "name": "ISmartToken", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 21517, "src": "2138:11:32", "typeDescriptions": { "typeIdentifier": "t_contract$_ISmartToken_$21517", "typeString": "contract ISmartToken" } }, "value": null, "visibility": "internal" } ], "src": "2137:13:32" }, "scope": 18724, "src": "2078:530:32", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "baseFunctions": [ 18791 ], "body": { "id": 18673, "nodeType": "Block", "src": "3028:45:32", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 18669, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18658, "src": "3052:3:32", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 18670, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18660, "src": "3057:7:32", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 18666, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18656, "src": "3039:6:32", "typeDescriptions": { "typeIdentifier": "t_contract$_ISmartToken_$21517", "typeString": "contract ISmartToken" } }, "id": 18668, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "issue", "nodeType": "MemberAccess", "referencedDeclaration": 21509, "src": "3039:12:32", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256) external" } }, "id": 18671, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3039:26:32", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 18672, "nodeType": "ExpressionStatement", "src": "3039:26:32" } ] }, "documentation": { "id": 18654, "nodeType": "StructuredDocumentation", "src": "2616:314:32", "text": " @dev increases the pool token supply and sends the new tokens to the given account\n can only be called by the contract owner\n @param _token pool token address\n @param _to account to receive the newly minted tokens\n @param _amount amount to mint" }, "functionSelector": "c6c3bbe6", "id": 18674, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 18664, "modifierName": { "argumentTypes": null, "id": 18663, "name": "ownerOnly", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 22089, "src": "3018:9:32", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "3018:9:32" } ], "name": "mint", "nodeType": "FunctionDefinition", "overrides": { "id": 18662, "nodeType": "OverrideSpecifier", "overrides": [], "src": "3009:8:32" }, "parameters": { "id": 18661, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 18656, "mutability": "mutable", "name": "_token", "nodeType": "VariableDeclaration", "overrides": null, "scope": 18674, "src": "2950:18:32", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_ISmartToken_$21517", "typeString": "contract ISmartToken" }, "typeName": { "contractScope": null, "id": 18655, "name": "ISmartToken", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 21517, "src": "2950:11:32", "typeDescriptions": { "typeIdentifier": "t_contract$_ISmartToken_$21517", "typeString": "contract ISmartToken" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 18658, "mutability": "mutable", "name": "_to", "nodeType": "VariableDeclaration", "overrides": null, "scope": 18674, "src": "2970:11:32", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 18657, "name": "address", "nodeType": "ElementaryTypeName", "src": "2970:7:32", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 18660, "mutability": "mutable", "name": "_amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 18674, "src": "2983:15:32", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 18659, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2983:7:32", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "2949:50:32" }, "returnParameters": { "id": 18665, "nodeType": "ParameterList", "parameters": [], "src": "3028:0:32" }, "scope": 18724, "src": "2936:137:32", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "baseFunctions": [ 18800 ], "body": { "id": 18694, "nodeType": "Block", "src": "3482:49:32", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 18690, "name": "_from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18679, "src": "3508:5:32", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 18691, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18681, "src": "3515:7:32", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 18687, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18677, "src": "3493:6:32", "typeDescriptions": { "typeIdentifier": "t_contract$_ISmartToken_$21517", "typeString": "contract ISmartToken" } }, "id": 18689, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "destroy", "nodeType": "MemberAccess", "referencedDeclaration": 21516, "src": "3493:14:32", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256) external" } }, "id": 18692, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3493:30:32", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 18693, "nodeType": "ExpressionStatement", "src": "3493:30:32" } ] }, "documentation": { "id": 18675, "nodeType": "StructuredDocumentation", "src": "3081:301:32", "text": " @dev removes tokens from the given account and decreases the pool token supply\n can only be called by the contract owner\n @param _token pool token address\n @param _from account to remove the tokens from\n @param _amount amount to burn" }, "functionSelector": "f6b911bc", "id": 18695, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 18685, "modifierName": { "argumentTypes": null, "id": 18684, "name": "ownerOnly", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 22089, "src": "3472:9:32", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "3472:9:32" } ], "name": "burn", "nodeType": "FunctionDefinition", "overrides": { "id": 18683, "nodeType": "OverrideSpecifier", "overrides": [], "src": "3463:8:32" }, "parameters": { "id": 18682, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 18677, "mutability": "mutable", "name": "_token", "nodeType": "VariableDeclaration", "overrides": null, "scope": 18695, "src": "3402:18:32", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_ISmartToken_$21517", "typeString": "contract ISmartToken" }, "typeName": { "contractScope": null, "id": 18676, "name": "ISmartToken", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 21517, "src": "3402:11:32", "typeDescriptions": { "typeIdentifier": "t_contract$_ISmartToken_$21517", "typeString": "contract ISmartToken" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 18679, "mutability": "mutable", "name": "_from", "nodeType": "VariableDeclaration", "overrides": null, "scope": 18695, "src": "3422:13:32", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 18678, "name": "address", "nodeType": "ElementaryTypeName", "src": "3422:7:32", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 18681, "mutability": "mutable", "name": "_amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 18695, "src": "3437:15:32", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 18680, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3437:7:32", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "3401:52:32" }, "returnParameters": { "id": 18686, "nodeType": "ParameterList", "parameters": [], "src": "3482:0:32" }, "scope": 18724, "src": "3388:143:32", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "body": { "id": 18722, "nodeType": "Block", "src": "3852:85:32", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 18709, "name": "_str", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18698, "src": "3894:4:32", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 18718, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 18714, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3913:3:32", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d", "typeString": "literal_string \"0\"" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d", "typeString": "literal_string \"0\"" } ], "id": 18713, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3906:6:32", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)" }, "typeName": { "id": 18712, "name": "bytes1", "nodeType": "ElementaryTypeName", "src": "3906:6:32", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 18715, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3906:11:32", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes1", "typeString": "bytes1" } ], "id": 18711, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3900:5:32", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint8_$", "typeString": "type(uint8)" }, "typeName": { "id": 18710, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "3900:5:32", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 18716, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3900:18:32", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "id": 18717, "name": "_digit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18700, "src": "3921:6:32", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "3900:27:32", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" }, { "typeIdentifier": "t_uint8", "typeString": "uint8" } ], "expression": { "argumentTypes": null, "id": 18707, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "3877:3:32", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, "id": 18708, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodePacked", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3877:16:32", "typeDescriptions": { "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, "id": 18719, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3877:51:32", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } ], "id": 18706, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3870:6:32", "typeDescriptions": { "typeIdentifier": "t_type$_t_string_storage_ptr_$", "typeString": "type(string storage pointer)" }, "typeName": { "id": 18705, "name": "string", "nodeType": "ElementaryTypeName", "src": "3870:6:32", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 18720, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3870:59:32", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, "functionReturnParameters": 18704, "id": 18721, "nodeType": "Return", "src": "3863:66:32" } ] }, "documentation": { "id": 18696, "nodeType": "StructuredDocumentation", "src": "3539:212:32", "text": " @dev concatenates a string and a digit (single only) and returns the result string\n @param _str string\n @param _digit digit\n @return concatenated string" }, "id": 18723, "implemented": true, "kind": "function", "modifiers": [], "name": "concatStrDigit", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 18701, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 18698, "mutability": "mutable", "name": "_str", "nodeType": "VariableDeclaration", "overrides": null, "scope": 18723, "src": "3781:18:32", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 18697, "name": "string", "nodeType": "ElementaryTypeName", "src": "3781:6:32", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 18700, "mutability": "mutable", "name": "_digit", "nodeType": "VariableDeclaration", "overrides": null, "scope": 18723, "src": "3801:12:32", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 18699, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "3801:5:32", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "src": "3780:34:32" }, "returnParameters": { "id": 18704, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 18703, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 18723, "src": "3837:13:32", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 18702, "name": "string", "nodeType": "ElementaryTypeName", "src": "3837:6:32", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": null, "visibility": "internal" } ], "src": "3836:15:32" }, "scope": 18724, "src": "3757:180:32", "stateMutability": "pure", "virtual": false, "visibility": "private" } ], "scope": 18725, "src": "592:3348:32" } ], "src": "52:3890:32" }, "legacyAST": { "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/types/liquidity-pool-v2/PoolTokensContainer.sol", "exportedSymbols": { "PoolTokensContainer": [ 18724 ] }, "id": 18725, "license": "SEE LICENSE IN LICENSE", "nodeType": "SourceUnit", "nodes": [ { "id": 18513, "literals": [ "solidity", "0.6", ".12" ], "nodeType": "PragmaDirective", "src": "52:23:32" }, { "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/types/liquidity-pool-v2/interfaces/IPoolTokensContainer.sol", "file": "./interfaces/IPoolTokensContainer.sol", "id": 18514, "nodeType": "ImportDirective", "scope": 18725, "sourceUnit": 18802, "src": "77:47:32", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/Owned.sol", "file": "../../../utility/Owned.sol", "id": 18515, "nodeType": "ImportDirective", "scope": 18725, "sourceUnit": 22154, "src": "126:36:32", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/TokenHolder.sol", "file": "../../../utility/TokenHolder.sol", "id": 18516, "nodeType": "ImportDirective", "scope": 18725, "sourceUnit": 22911, "src": "164:42:32", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/token/SmartToken.sol", "file": "../../../token/SmartToken.sol", "id": 18517, "nodeType": "ImportDirective", "scope": 18725, "sourceUnit": 21395, "src": "208:39:32", "symbolAliases": [], "unitAlias": "" }, { "abstract": false, "baseContracts": [ { "arguments": null, "baseName": { "contractScope": null, "id": 18519, "name": "IPoolTokensContainer", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 18801, "src": "624:20:32", "typeDescriptions": { "typeIdentifier": "t_contract$_IPoolTokensContainer_$18801", "typeString": "contract IPoolTokensContainer" } }, "id": 18520, "nodeType": "InheritanceSpecifier", "src": "624:20:32" }, { "arguments": null, "baseName": { "contractScope": null, "id": 18521, "name": "Owned", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 22153, "src": "646:5:32", "typeDescriptions": { "typeIdentifier": "t_contract$_Owned_$22153", "typeString": "contract Owned" } }, "id": 18522, "nodeType": "InheritanceSpecifier", "src": "646:5:32" }, { "arguments": null, "baseName": { "contractScope": null, "id": 18523, "name": "TokenHolder", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 22910, "src": "653:11:32", "typeDescriptions": { "typeIdentifier": "t_contract$_TokenHolder_$22910", "typeString": "contract TokenHolder" } }, "id": 18524, "nodeType": "InheritanceSpecifier", "src": "653:11:32" } ], "contractDependencies": [ 13349, 18801, 21394, 22153, 22861, 22910, 22996, 23182, 23242 ], "contractKind": "contract", "documentation": { "id": 18518, "nodeType": "StructuredDocumentation", "src": "251:339:32", "text": " @dev The PoolTokensContainer contract serves as a container for multiple pool tokens.\n It is used by specific liquidity pool types that require more than a single pool token,\n while still maintaining the single converter / anchor relationship.\n It maintains and provides a list of the underlying pool tokens." }, "fullyImplemented": true, "id": 18724, "linearizedBaseContracts": [ 18724, 22910, 22996, 22153, 22861, 18801, 13349, 23242, 23182 ], "name": "PoolTokensContainer", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, "id": 18527, "mutability": "constant", "name": "MAX_POOL_TOKENS", "nodeType": "VariableDeclaration", "overrides": null, "scope": 18724, "src": "672:43:32", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 18525, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "672:5:32", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": { "argumentTypes": null, "hexValue": "35", "id": 18526, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "714:1:32", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", "typeString": "int_const 5" }, "value": "5" }, "visibility": "internal" }, { "constant": false, "functionSelector": "06fdde03", "id": 18529, "mutability": "mutable", "name": "name", "nodeType": "VariableDeclaration", "overrides": null, "scope": 18724, "src": "767:18:32", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string" }, "typeName": { "id": 18528, "name": "string", "nodeType": "ElementaryTypeName", "src": "767:6:32", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": null, "visibility": "public" }, { "constant": false, "functionSelector": "95d89b41", "id": 18531, "mutability": "mutable", "name": "symbol", "nodeType": "VariableDeclaration", "overrides": null, "scope": 18724, "src": "821:20:32", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string" }, "typeName": { "id": 18530, "name": "string", "nodeType": "ElementaryTypeName", "src": "821:6:32", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": null, "visibility": "public" }, { "constant": false, "functionSelector": "313ce567", "id": 18533, "mutability": "mutable", "name": "decimals", "nodeType": "VariableDeclaration", "overrides": null, "scope": 18724, "src": "877:21:32", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 18532, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "877:5:32", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "public" }, { "constant": false, "id": 18536, "mutability": "mutable", "name": "_poolTokens", "nodeType": "VariableDeclaration", "overrides": null, "scope": 18724, "src": "953:33:32", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_array$_t_contract$_ISmartToken_$21517_$dyn_storage", "typeString": "contract ISmartToken[]" }, "typeName": { "baseType": { "contractScope": null, "id": 18534, "name": "ISmartToken", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 21517, "src": "953:11:32", "typeDescriptions": { "typeIdentifier": "t_contract$_ISmartToken_$21517", "typeString": "contract ISmartToken" } }, "id": 18535, "length": null, "nodeType": "ArrayTypeName", "src": "953:13:32", "typeDescriptions": { "typeIdentifier": "t_array$_t_contract$_ISmartToken_$21517_$dyn_storage_ptr", "typeString": "contract ISmartToken[]" } }, "value": null, "visibility": "private" }, { "body": { "id": 18580, "nodeType": "Block", "src": "1462:249:32", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 18553, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 18549, "name": "_name", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18539, "src": "1515:5:32", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } ], "id": 18548, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1509:5:32", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", "typeString": "type(bytes storage pointer)" }, "typeName": { "id": 18547, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1509:5:32", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 18550, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1509:12:32", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 18551, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1509:19:32", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 18552, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1531:1:32", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "1509:23:32", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "4552525f494e56414c49445f4e414d45", "id": 18554, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1534:18:32", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_8c31b897cf1b4c41d9a3a2c9019700f5d8d0c36c906997985403c8f4610f8246", "typeString": "literal_string \"ERR_INVALID_NAME\"" }, "value": "ERR_INVALID_NAME" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_8c31b897cf1b4c41d9a3a2c9019700f5d8d0c36c906997985403c8f4610f8246", "typeString": "literal_string \"ERR_INVALID_NAME\"" } ], "id": 18546, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "1501:7:32", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 18555, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1501:52:32", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 18556, "nodeType": "ExpressionStatement", "src": "1501:52:32" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 18564, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 18560, "name": "_symbol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18541, "src": "1578:7:32", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } ], "id": 18559, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1572:5:32", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", "typeString": "type(bytes storage pointer)" }, "typeName": { "id": 18558, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1572:5:32", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 18561, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1572:14:32", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 18562, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1572:21:32", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 18563, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1596:1:32", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "1572:25:32", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "4552525f494e56414c49445f53594d424f4c", "id": 18565, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1599:20:32", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_8cbe13dffb618f268f4d803a75787a665744c462e7a6ba0f32e015df7f7a2fda", "typeString": "literal_string \"ERR_INVALID_SYMBOL\"" }, "value": "ERR_INVALID_SYMBOL" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_8cbe13dffb618f268f4d803a75787a665744c462e7a6ba0f32e015df7f7a2fda", "typeString": "literal_string \"ERR_INVALID_SYMBOL\"" } ], "id": 18557, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "1564:7:32", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 18566, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1564:56:32", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 18567, "nodeType": "ExpressionStatement", "src": "1564:56:32" }, { "expression": { "argumentTypes": null, "id": 18570, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 18568, "name": "name", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18529, "src": "1633:4:32", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 18569, "name": "_name", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18539, "src": "1640:5:32", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, "src": "1633:12:32", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, "id": 18571, "nodeType": "ExpressionStatement", "src": "1633:12:32" }, { "expression": { "argumentTypes": null, "id": 18574, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 18572, "name": "symbol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18531, "src": "1656:6:32", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 18573, "name": "_symbol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18541, "src": "1665:7:32", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, "src": "1656:16:32", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, "id": 18575, "nodeType": "ExpressionStatement", "src": "1656:16:32" }, { "expression": { "argumentTypes": null, "id": 18578, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 18576, "name": "decimals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18533, "src": "1683:8:32", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 18577, "name": "_decimals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18543, "src": "1694:9:32", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "1683:20:32", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "id": 18579, "nodeType": "ExpressionStatement", "src": "1683:20:32" } ] }, "documentation": { "id": 18537, "nodeType": "StructuredDocumentation", "src": "1022:354:32", "text": " @dev initializes a new PoolTokensContainer instance\n @param _name pool name, also used as a prefix for the underlying pool token names\n @param _symbol pool symbol, also used as a prefix for the underlying pool token symbols\n @param _decimals used for the underlying pool token decimals" }, "id": 18581, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 18544, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 18539, "mutability": "mutable", "name": "_name", "nodeType": "VariableDeclaration", "overrides": null, "scope": 18581, "src": "1394:19:32", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 18538, "name": "string", "nodeType": "ElementaryTypeName", "src": "1394:6:32", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 18541, "mutability": "mutable", "name": "_symbol", "nodeType": "VariableDeclaration", "overrides": null, "scope": 18581, "src": "1415:21:32", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 18540, "name": "string", "nodeType": "ElementaryTypeName", "src": "1415:6:32", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 18543, "mutability": "mutable", "name": "_decimals", "nodeType": "VariableDeclaration", "overrides": null, "scope": 18581, "src": "1438:15:32", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 18542, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "1438:5:32", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "src": "1393:61:32" }, "returnParameters": { "id": 18545, "nodeType": "ParameterList", "parameters": [], "src": "1462:0:32" }, "scope": 18724, "src": "1382:329:32", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "baseFunctions": [ 18777 ], "body": { "id": 18591, "nodeType": "Block", "src": "1904:37:32", "statements": [ { "expression": { "argumentTypes": null, "id": 18589, "name": "_poolTokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18536, "src": "1922:11:32", "typeDescriptions": { "typeIdentifier": "t_array$_t_contract$_ISmartToken_$21517_$dyn_storage", "typeString": "contract ISmartToken[] storage ref" } }, "functionReturnParameters": 18588, "id": 18590, "nodeType": "Return", "src": "1915:18:32" } ] }, "documentation": { "id": 18582, "nodeType": "StructuredDocumentation", "src": "1719:103:32", "text": " @dev returns the list of pool tokens\n @return list of pool tokens" }, "functionSelector": "6d3e313e", "id": 18592, "implemented": true, "kind": "function", "modifiers": [], "name": "poolTokens", "nodeType": "FunctionDefinition", "overrides": { "id": 18584, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1864:8:32" }, "parameters": { "id": 18583, "nodeType": "ParameterList", "parameters": [], "src": "1847:2:32" }, "returnParameters": { "id": 18588, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 18587, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 18592, "src": "1882:20:32", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_array$_t_contract$_ISmartToken_$21517_$dyn_memory_ptr", "typeString": "contract ISmartToken[]" }, "typeName": { "baseType": { "contractScope": null, "id": 18585, "name": "ISmartToken", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 21517, "src": "1882:11:32", "typeDescriptions": { "typeIdentifier": "t_contract$_ISmartToken_$21517", "typeString": "contract ISmartToken" } }, "id": 18586, "length": null, "nodeType": "ArrayTypeName", "src": "1882:13:32", "typeDescriptions": { "typeIdentifier": "t_array$_t_contract$_ISmartToken_$21517_$dyn_storage_ptr", "typeString": "contract ISmartToken[]" } }, "value": null, "visibility": "internal" } ], "src": "1881:22:32" }, "scope": 18724, "src": "1828:113:32", "stateMutability": "view", "virtual": false, "visibility": "external" }, { "baseFunctions": [ 18782 ], "body": { "id": 18652, "nodeType": "Block", "src": "2151:457:32", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 18605, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 18602, "name": "_poolTokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18536, "src": "2223:11:32", "typeDescriptions": { "typeIdentifier": "t_array$_t_contract$_ISmartToken_$21517_$dyn_storage", "typeString": "contract ISmartToken[] storage ref" } }, "id": 18603, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2223:18:32", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { "argumentTypes": null, "id": 18604, "name": "MAX_POOL_TOKENS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18527, "src": "2244:15:32", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "2223:36:32", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "4552525f4d41585f4c494d49545f52454143484544", "id": 18606, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2261:23:32", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_65600c00f67ab34f2203e92774a46e26e7dd32d8502d3f07241456a23d1290f8", "typeString": "literal_string \"ERR_MAX_LIMIT_REACHED\"" }, "value": "ERR_MAX_LIMIT_REACHED" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_65600c00f67ab34f2203e92774a46e26e7dd32d8502d3f07241456a23d1290f8", "typeString": "literal_string \"ERR_MAX_LIMIT_REACHED\"" } ], "id": 18601, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "2215:7:32", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 18607, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2215:70:32", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 18608, "nodeType": "ExpressionStatement", "src": "2215:70:32" }, { "assignments": [ 18610 ], "declarations": [ { "constant": false, "id": 18610, "mutability": "mutable", "name": "poolName", "nodeType": "VariableDeclaration", "overrides": null, "scope": 18652, "src": "2298:22:32", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 18609, "name": "string", "nodeType": "ElementaryTypeName", "src": "2298:6:32", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": null, "visibility": "internal" } ], "id": 18621, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 18612, "name": "name", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18529, "src": "2338:4:32", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 18618, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 18615, "name": "_poolTokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18536, "src": "2350:11:32", "typeDescriptions": { "typeIdentifier": "t_array$_t_contract$_ISmartToken_$21517_$dyn_storage", "typeString": "contract ISmartToken[] storage ref" } }, "id": 18616, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2350:18:32", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "hexValue": "31", "id": 18617, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2371:1:32", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "2350:22:32", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 18614, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2344:5:32", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint8_$", "typeString": "type(uint8)" }, "typeName": { "id": 18613, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "2344:5:32", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 18619, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2344:29:32", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" }, { "typeIdentifier": "t_uint8", "typeString": "uint8" } ], "id": 18611, "name": "concatStrDigit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18723, "src": "2323:14:32", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_uint8_$returns$_t_string_memory_ptr_$", "typeString": "function (string memory,uint8) pure returns (string memory)" } }, "id": 18620, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2323:51:32", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, "nodeType": "VariableDeclarationStatement", "src": "2298:76:32" }, { "assignments": [ 18623 ], "declarations": [ { "constant": false, "id": 18623, "mutability": "mutable", "name": "poolSymbol", "nodeType": "VariableDeclaration", "overrides": null, "scope": 18652, "src": "2385:24:32", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 18622, "name": "string", "nodeType": "ElementaryTypeName", "src": "2385:6:32", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": null, "visibility": "internal" } ], "id": 18634, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 18625, "name": "symbol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18531, "src": "2427:6:32", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 18631, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 18628, "name": "_poolTokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18536, "src": "2441:11:32", "typeDescriptions": { "typeIdentifier": "t_array$_t_contract$_ISmartToken_$21517_$dyn_storage", "typeString": "contract ISmartToken[] storage ref" } }, "id": 18629, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2441:18:32", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "hexValue": "31", "id": 18630, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2462:1:32", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "2441:22:32", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 18627, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2435:5:32", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint8_$", "typeString": "type(uint8)" }, "typeName": { "id": 18626, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "2435:5:32", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 18632, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2435:29:32", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" }, { "typeIdentifier": "t_uint8", "typeString": "uint8" } ], "id": 18624, "name": "concatStrDigit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18723, "src": "2412:14:32", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_uint8_$returns$_t_string_memory_ptr_$", "typeString": "function (string memory,uint8) pure returns (string memory)" } }, "id": 18633, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2412:53:32", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, "nodeType": "VariableDeclarationStatement", "src": "2385:80:32" }, { "assignments": [ 18636 ], "declarations": [ { "constant": false, "id": 18636, "mutability": "mutable", "name": "token", "nodeType": "VariableDeclaration", "overrides": null, "scope": 18652, "src": "2478:16:32", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_SmartToken_$21394", "typeString": "contract SmartToken" }, "typeName": { "contractScope": null, "id": 18635, "name": "SmartToken", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 21394, "src": "2478:10:32", "typeDescriptions": { "typeIdentifier": "t_contract$_SmartToken_$21394", "typeString": "contract SmartToken" } }, "value": null, "visibility": "internal" } ], "id": 18643, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 18639, "name": "poolName", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18610, "src": "2512:8:32", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, { "argumentTypes": null, "id": 18640, "name": "poolSymbol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18623, "src": "2522:10:32", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, { "argumentTypes": null, "id": 18641, "name": "decimals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18533, "src": "2534:8:32", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" }, { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" }, { "typeIdentifier": "t_uint8", "typeString": "uint8" } ], "id": 18638, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "NewExpression", "src": "2497:14:32", "typeDescriptions": { "typeIdentifier": "t_function_creation_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint8_$returns$_t_contract$_SmartToken_$21394_$", "typeString": "function (string memory,string memory,uint8) returns (contract SmartToken)" }, "typeName": { "contractScope": null, "id": 18637, "name": "SmartToken", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 21394, "src": "2501:10:32", "typeDescriptions": { "typeIdentifier": "t_contract$_SmartToken_$21394", "typeString": "contract SmartToken" } } }, "id": 18642, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2497:46:32", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_SmartToken_$21394", "typeString": "contract SmartToken" } }, "nodeType": "VariableDeclarationStatement", "src": "2478:65:32" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 18647, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18636, "src": "2571:5:32", "typeDescriptions": { "typeIdentifier": "t_contract$_SmartToken_$21394", "typeString": "contract SmartToken" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_SmartToken_$21394", "typeString": "contract SmartToken" } ], "expression": { "argumentTypes": null, "id": 18644, "name": "_poolTokens", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18536, "src": "2554:11:32", "typeDescriptions": { "typeIdentifier": "t_array$_t_contract$_ISmartToken_$21517_$dyn_storage", "typeString": "contract ISmartToken[] storage ref" } }, "id": 18646, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "push", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2554:16:32", "typeDescriptions": { "typeIdentifier": "t_function_arraypush_nonpayable$_t_contract$_ISmartToken_$21517_$returns$__$", "typeString": "function (contract ISmartToken)" } }, "id": 18648, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2554:23:32", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 18649, "nodeType": "ExpressionStatement", "src": "2554:23:32" }, { "expression": { "argumentTypes": null, "id": 18650, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18636, "src": "2595:5:32", "typeDescriptions": { "typeIdentifier": "t_contract$_SmartToken_$21394", "typeString": "contract SmartToken" } }, "functionReturnParameters": 18600, "id": 18651, "nodeType": "Return", "src": "2588:12:32" } ] }, "documentation": { "id": 18593, "nodeType": "StructuredDocumentation", "src": "1949:123:32", "text": " @dev creates a new pool token and adds it to the list\n @return new pool token address" }, "functionSelector": "9cbf9e36", "id": 18653, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 18597, "modifierName": { "argumentTypes": null, "id": 18596, "name": "ownerOnly", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 22089, "src": "2119:9:32", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "2119:9:32" } ], "name": "createToken", "nodeType": "FunctionDefinition", "overrides": { "id": 18595, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2110:8:32" }, "parameters": { "id": 18594, "nodeType": "ParameterList", "parameters": [], "src": "2098:2:32" }, "returnParameters": { "id": 18600, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 18599, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 18653, "src": "2138:11:32", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_ISmartToken_$21517", "typeString": "contract ISmartToken" }, "typeName": { "contractScope": null, "id": 18598, "name": "ISmartToken", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 21517, "src": "2138:11:32", "typeDescriptions": { "typeIdentifier": "t_contract$_ISmartToken_$21517", "typeString": "contract ISmartToken" } }, "value": null, "visibility": "internal" } ], "src": "2137:13:32" }, "scope": 18724, "src": "2078:530:32", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "baseFunctions": [ 18791 ], "body": { "id": 18673, "nodeType": "Block", "src": "3028:45:32", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 18669, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18658, "src": "3052:3:32", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 18670, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18660, "src": "3057:7:32", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 18666, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18656, "src": "3039:6:32", "typeDescriptions": { "typeIdentifier": "t_contract$_ISmartToken_$21517", "typeString": "contract ISmartToken" } }, "id": 18668, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "issue", "nodeType": "MemberAccess", "referencedDeclaration": 21509, "src": "3039:12:32", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256) external" } }, "id": 18671, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3039:26:32", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 18672, "nodeType": "ExpressionStatement", "src": "3039:26:32" } ] }, "documentation": { "id": 18654, "nodeType": "StructuredDocumentation", "src": "2616:314:32", "text": " @dev increases the pool token supply and sends the new tokens to the given account\n can only be called by the contract owner\n @param _token pool token address\n @param _to account to receive the newly minted tokens\n @param _amount amount to mint" }, "functionSelector": "c6c3bbe6", "id": 18674, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 18664, "modifierName": { "argumentTypes": null, "id": 18663, "name": "ownerOnly", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 22089, "src": "3018:9:32", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "3018:9:32" } ], "name": "mint", "nodeType": "FunctionDefinition", "overrides": { "id": 18662, "nodeType": "OverrideSpecifier", "overrides": [], "src": "3009:8:32" }, "parameters": { "id": 18661, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 18656, "mutability": "mutable", "name": "_token", "nodeType": "VariableDeclaration", "overrides": null, "scope": 18674, "src": "2950:18:32", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_ISmartToken_$21517", "typeString": "contract ISmartToken" }, "typeName": { "contractScope": null, "id": 18655, "name": "ISmartToken", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 21517, "src": "2950:11:32", "typeDescriptions": { "typeIdentifier": "t_contract$_ISmartToken_$21517", "typeString": "contract ISmartToken" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 18658, "mutability": "mutable", "name": "_to", "nodeType": "VariableDeclaration", "overrides": null, "scope": 18674, "src": "2970:11:32", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 18657, "name": "address", "nodeType": "ElementaryTypeName", "src": "2970:7:32", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 18660, "mutability": "mutable", "name": "_amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 18674, "src": "2983:15:32", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 18659, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2983:7:32", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "2949:50:32" }, "returnParameters": { "id": 18665, "nodeType": "ParameterList", "parameters": [], "src": "3028:0:32" }, "scope": 18724, "src": "2936:137:32", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "baseFunctions": [ 18800 ], "body": { "id": 18694, "nodeType": "Block", "src": "3482:49:32", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 18690, "name": "_from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18679, "src": "3508:5:32", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 18691, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18681, "src": "3515:7:32", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 18687, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18677, "src": "3493:6:32", "typeDescriptions": { "typeIdentifier": "t_contract$_ISmartToken_$21517", "typeString": "contract ISmartToken" } }, "id": 18689, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "destroy", "nodeType": "MemberAccess", "referencedDeclaration": 21516, "src": "3493:14:32", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256) external" } }, "id": 18692, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3493:30:32", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 18693, "nodeType": "ExpressionStatement", "src": "3493:30:32" } ] }, "documentation": { "id": 18675, "nodeType": "StructuredDocumentation", "src": "3081:301:32", "text": " @dev removes tokens from the given account and decreases the pool token supply\n can only be called by the contract owner\n @param _token pool token address\n @param _from account to remove the tokens from\n @param _amount amount to burn" }, "functionSelector": "f6b911bc", "id": 18695, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 18685, "modifierName": { "argumentTypes": null, "id": 18684, "name": "ownerOnly", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 22089, "src": "3472:9:32", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "3472:9:32" } ], "name": "burn", "nodeType": "FunctionDefinition", "overrides": { "id": 18683, "nodeType": "OverrideSpecifier", "overrides": [], "src": "3463:8:32" }, "parameters": { "id": 18682, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 18677, "mutability": "mutable", "name": "_token", "nodeType": "VariableDeclaration", "overrides": null, "scope": 18695, "src": "3402:18:32", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_ISmartToken_$21517", "typeString": "contract ISmartToken" }, "typeName": { "contractScope": null, "id": 18676, "name": "ISmartToken", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 21517, "src": "3402:11:32", "typeDescriptions": { "typeIdentifier": "t_contract$_ISmartToken_$21517", "typeString": "contract ISmartToken" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 18679, "mutability": "mutable", "name": "_from", "nodeType": "VariableDeclaration", "overrides": null, "scope": 18695, "src": "3422:13:32", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 18678, "name": "address", "nodeType": "ElementaryTypeName", "src": "3422:7:32", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 18681, "mutability": "mutable", "name": "_amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 18695, "src": "3437:15:32", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 18680, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3437:7:32", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "3401:52:32" }, "returnParameters": { "id": 18686, "nodeType": "ParameterList", "parameters": [], "src": "3482:0:32" }, "scope": 18724, "src": "3388:143:32", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "body": { "id": 18722, "nodeType": "Block", "src": "3852:85:32", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 18709, "name": "_str", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18698, "src": "3894:4:32", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 18718, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 18714, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3913:3:32", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d", "typeString": "literal_string \"0\"" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d", "typeString": "literal_string \"0\"" } ], "id": 18713, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3906:6:32", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)" }, "typeName": { "id": 18712, "name": "bytes1", "nodeType": "ElementaryTypeName", "src": "3906:6:32", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 18715, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3906:11:32", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes1", "typeString": "bytes1" } ], "id": 18711, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3900:5:32", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint8_$", "typeString": "type(uint8)" }, "typeName": { "id": 18710, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "3900:5:32", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 18716, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3900:18:32", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "id": 18717, "name": "_digit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18700, "src": "3921:6:32", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "3900:27:32", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" }, { "typeIdentifier": "t_uint8", "typeString": "uint8" } ], "expression": { "argumentTypes": null, "id": 18707, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "3877:3:32", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, "id": 18708, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodePacked", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3877:16:32", "typeDescriptions": { "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, "id": 18719, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3877:51:32", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } ], "id": 18706, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3870:6:32", "typeDescriptions": { "typeIdentifier": "t_type$_t_string_storage_ptr_$", "typeString": "type(string storage pointer)" }, "typeName": { "id": 18705, "name": "string", "nodeType": "ElementaryTypeName", "src": "3870:6:32", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 18720, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3870:59:32", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, "functionReturnParameters": 18704, "id": 18721, "nodeType": "Return", "src": "3863:66:32" } ] }, "documentation": { "id": 18696, "nodeType": "StructuredDocumentation", "src": "3539:212:32", "text": " @dev concatenates a string and a digit (single only) and returns the result string\n @param _str string\n @param _digit digit\n @return concatenated string" }, "id": 18723, "implemented": true, "kind": "function", "modifiers": [], "name": "concatStrDigit", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 18701, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 18698, "mutability": "mutable", "name": "_str", "nodeType": "VariableDeclaration", "overrides": null, "scope": 18723, "src": "3781:18:32", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 18697, "name": "string", "nodeType": "ElementaryTypeName", "src": "3781:6:32", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 18700, "mutability": "mutable", "name": "_digit", "nodeType": "VariableDeclaration", "overrides": null, "scope": 18723, "src": "3801:12:32", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 18699, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "3801:5:32", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "src": "3780:34:32" }, "returnParameters": { "id": 18704, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 18703, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 18723, "src": "3837:13:32", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 18702, "name": "string", "nodeType": "ElementaryTypeName", "src": "3837:6:32", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": null, "visibility": "internal" } ], "src": "3836:15:32" }, "scope": 18724, "src": "3757:180:32", "stateMutability": "pure", "virtual": false, "visibility": "private" } ], "scope": 18725, "src": "592:3348:32" } ], "src": "52:3890:32" }, "compiler": { "name": "solc", "version": "0.6.12+commit.27d51765.Emscripten.clang" }, "networks": {}, "schemaVersion": "3.2.3", "updatedAt": "2020-11-09T23:40:29.187Z", "devdoc": { "details": "The PoolTokensContainer contract serves as a container for multiple pool tokens. It is used by specific liquidity pool types that require more than a single pool token, while still maintaining the single converter / anchor relationship. It maintains and provides a list of the underlying pool tokens.", "kind": "dev", "methods": { "acceptOwnership()": { "details": "used by a new owner to accept an ownership transfer" }, "burn(address,address,uint256)": { "details": "removes tokens from the given account and decreases the pool token supply can only be called by the contract owner", "params": { "_amount": "amount to burn", "_from": "account to remove the tokens from", "_token": "pool token address" } }, "constructor": { "details": "initializes a new PoolTokensContainer instance", "params": { "_decimals": "used for the underlying pool token decimals", "_name": "pool name, also used as a prefix for the underlying pool token names", "_symbol": "pool symbol, also used as a prefix for the underlying pool token symbols" } }, "createToken()": { "details": "creates a new pool token and adds it to the list", "returns": { "_0": "new pool token address" } }, "mint(address,address,uint256)": { "details": "increases the pool token supply and sends the new tokens to the given account can only be called by the contract owner", "params": { "_amount": "amount to mint", "_to": "account to receive the newly minted tokens", "_token": "pool token address" } }, "poolTokens()": { "details": "returns the list of pool tokens", "returns": { "_0": "list of pool tokens" } }, "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" } }, "withdrawTokens(address,address,uint256)": { "details": "withdraws tokens held by the contract and sends them to an account can only be called by the owner", "params": { "_amount": "amount to withdraw", "_to": "account to receive the new amount", "_token": "ERC20 token contract address" } } }, "version": 1 }, "userdoc": { "kind": "user", "methods": {}, "version": 1 } }