diff --git a/client/contracts/CELOTornado.-1.json b/client/contracts/CELOTornado.-1.json index 2361706..6696fd1 100644 --- a/client/contracts/CELOTornado.-1.json +++ b/client/contracts/CELOTornado.-1.json @@ -8,6 +8,11 @@ "name": "_verifier", "type": "address" }, + { + "internalType": "contract IFeeManager", + "name": "_feeManager", + "type": "address" + }, { "internalType": "uint256", "name": "_denomination", @@ -215,6 +220,21 @@ "stateMutability": "payable", "type": "function" }, + { + "constant": true, + "inputs": [], + "name": "feeManager", + "outputs": [ + { + "internalType": "contract IFeeManager", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, { "constant": true, "inputs": [ @@ -406,6 +426,21 @@ "stateMutability": "view", "type": "function" }, + { + "constant": true, + "inputs": [], + "name": "protocolFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, { "constant": true, "inputs": [ @@ -539,21 +574,21 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVerifier\",\"name\":\"_verifier\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_denomination\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_merkleTreeHeight\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"leafIndex\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"nullifierHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"Withdrawal\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"FIELD_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"ROOT_HISTORY_SIZE\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"ZERO_VALUE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newOperator\",\"type\":\"address\"}],\"name\":\"changeOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"commitments\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"currentRootIndex\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"denomination\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_commitment\",\"type\":\"bytes32\"}],\"name\":\"deposit\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"filledSubtrees\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getLastRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_left\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_right\",\"type\":\"bytes32\"}],\"name\":\"hashLeftRight\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_root\",\"type\":\"bytes32\"}],\"name\":\"isKnownRoot\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_nullifierHash\",\"type\":\"bytes32\"}],\"name\":\"isSpent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"_nullifierHashes\",\"type\":\"bytes32[]\"}],\"name\":\"isSpentArray\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"spent\",\"type\":\"bool[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"levels\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"nextIndex\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"nullifierHashes\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"operator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"roots\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newVerifier\",\"type\":\"address\"}],\"name\":\"updateVerifier\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"verifier\",\"outputs\":[{\"internalType\":\"contract IVerifier\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_proof\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"_root\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_nullifierHash\",\"type\":\"bytes32\"},{\"internalType\":\"address payable\",\"name\":\"_recipient\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"_relayer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_refund\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"zeros\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"changeOperator(address)\":{\"details\":\"operator can change his address \"},\"deposit(bytes32)\":{\"details\":\"Deposit funds into the contract. The caller must send (for ETH) or approve (for ERC20) value equal to or `denomination` of this instance.\",\"params\":{\"_commitment\":\"the note commitment, which is PedersenHash(nullifier + secret)\"}},\"getLastRoot()\":{\"details\":\"Returns the last root\"},\"hashLeftRight(bytes32,bytes32)\":{\"details\":\"Hash 2 tree leaves, returns MiMC(_left, _right)\"},\"isKnownRoot(bytes32)\":{\"details\":\"Whether the root is present in the root history\"},\"isSpent(bytes32)\":{\"details\":\"whether a note is already spent \"},\"isSpentArray(bytes32[])\":{\"details\":\"whether an array of notes is already spent \"},\"updateVerifier(address)\":{\"details\":\"allow operator to update SNARK verification keys. This is needed to update keys after the final trusted setup ceremony is held. After that operator rights are supposed to be transferred to zero address\"},\"withdraw(bytes,bytes32,bytes32,address,address,uint256,uint256)\":{\"details\":\"Withdraw a deposit from the contract. `proof` is a zkSNARK proof data, and input is an array of circuit public inputs `input` array consists of: - merkle root of all deposits in the contract - hash of unique deposit nullifier to prevent double spends - the recipient of funds - optional fee that goes to the transaction sender (usually a relay)\"}}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/Users/brianli/dotfiles/tornado-core/contracts/ERC20Tornado.sol\":\"ERC20Tornado\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/brianli/dotfiles/tornado-core/contracts/ERC20Tornado.sol\":{\"keccak256\":\"0x708938fd083239d2e9cd17e457cf25a2150bb900082fad58af8b689f786aef9c\",\"urls\":[\"bzz-raw://f345afd62002f883c60c032cd0cb051663dc8a3e59a52bf44109633b96cb3685\",\"dweb:/ipfs/QmNwjnH2uyNoq9GPjNUv6Z1mgtiR5rY3K7EHY74RBjXMpw\"]},\"/Users/brianli/dotfiles/tornado-core/contracts/MerkleTreeWithHistory.sol\":{\"keccak256\":\"0x671cc9268dd70c47d18795f7e37fc4df11763fcbcca026edcf163f4239036254\",\"urls\":[\"bzz-raw://9c36a207ed164b60a514eae89bfb15e5b4de4b346c4a89a7a1cb50a940bc699d\",\"dweb:/ipfs/QmbPEqFJAGMpYduLEFsbPazyBsYWcjRtpth8X26wCHALwk\"]},\"/Users/brianli/dotfiles/tornado-core/contracts/Tornado.sol\":{\"keccak256\":\"0x09c70432243629ef44697fd3d0ca89d3578e2b1c9f46d90757371edb163c14da\",\"urls\":[\"bzz-raw://d2a2c9fa85c32cb15793282792cd25c71804a10aa5a911e41f3bcd07f5df117e\",\"dweb:/ipfs/QmeQ1s6ypNnP7fossR4x9svuuLjcSBtQ5spUTmWGZY5Ljr\"]},\"@openzeppelin/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0xb63221b23818d622bfd83d18e0968307e4fcb7a35536bdceded76e1cf8349acd\",\"urls\":[\"bzz-raw://44e1e8c22362c4708a8c3362735f1465f5b05e2f7315e16c7010d694ce019d73\",\"dweb:/ipfs/QmWj9g8X1hxkXRre2kwkEjLBetjuzmSbWHD81bsSojnBkS\"]}},\"version\":1}", - "bytecode": "0x6080604052600380546001600160401b03191690553480156200002157600080fd5b5060405162001d1238038062001d12833981810160405260a08110156200004757600080fd5b50805160208201516040830151606084015160809094015192939192909190848484848163ffffffff8116620000af5760405162461bcd60e51b815260040180806020018281038252602781526020018062001c896027913960400191505060405180910390fd5b60208163ffffffff1610620000f65760405162461bcd60e51b815260040180806020018281038252602281526020018062001cd06022913960400191505060405180910390fd5b6000805463ffffffff191663ffffffff83161781556002805460018181019092557f2fe54c60d3acabf3343a35b6eba15db4821b340f76e741e2249685ed4899af6c60008051602062001c48833981519152909101819055815480830183559282905260008051602062001cf28339815191529092018290555b60005463ffffffff9081169082161015620001e4576200019a82806001600160e01b036200029f16565b60028054600181810190925560008051602062001c488339815191520182905580548082018255600082905260008051602062001cf2833981519152018290559092500162000170565b50620001fa81806001600160e01b036200029f16565b60046000015550506068805460ff19166001179055826200024d5760405162461bcd60e51b815260040180806020018281038252602581526020018062001c236025913960400191505060405180910390fd5b606c80546001600160a01b039586166001600160a01b031991821617909155606d80549286169282169290921790915560699290925550606e8054939092169216919091179055506200048c92505050565b600060008051602062001cb0833981519152831062000305576040805162461bcd60e51b815260206004820181905260248201527f5f6c6566742073686f756c6420626520696e7369646520746865206669656c64604482015290519081900360640190fd5b60008051602062001cb08339815191528210620003545760405162461bcd60e51b815260040180806020018281038252602181526020018062001c686021913960400191505060405180910390fd5b6040805163f47d33b560e01b81526004810185905260006024820181905282518693919273__Hasher________________________________9263f47d33b592604480840193829003018186803b158015620003af57600080fd5b505af4158015620003c4573d6000803e3d6000fd5b505050506040513d6040811015620003db57600080fd5b508051602090910151909250905060008051602062001cb0833981519152848308915073__Hasher________________________________63f47d33b583836040518363ffffffff1660e01b81526004018083815260200182815260200192505050604080518083038186803b1580156200045557600080fd5b505af41580156200046a573d6000803e3d6000fd5b505050506040513d60408110156200048157600080fd5b505195945050505050565b611787806200049c6000396000f3fe60806040526004361061014b5760003560e01c806397fc007c116100b6578063e5285dcc1161006f578063e5285dcc14610514578063e82955881461053e578063ec73295914610568578063f178e47c1461057d578063fc0c546a146105a7578063fc7e9c6f146105bc5761014b565b806397fc007c146103a55780639fa12d0b146103d8578063b214faa5146104a3578063ba70f757146104c0578063c2b40ae4146104d5578063cd87a3b4146104ff5761014b565b80634ecf518b116101085780634ecf518b146102e4578063570ca735146103125780636d9833e314610327578063839df945146103515780638bca6d161461037b57806390eeb02b146103905761014b565b806306394c9b1461015057806317cc915c1461018557806321a0adb6146101c35780632b7ac3f31461025c57806338bf282e1461028d578063414a37ba146102cf575b600080fd5b34801561015c57600080fd5b506101836004803603602081101561017357600080fd5b50356001600160a01b03166105d1565b005b34801561019157600080fd5b506101af600480360360208110156101a857600080fd5b503561063c565b604080519115158252519081900360200190f35b610183600480360360e08110156101d957600080fd5b810190602081018135600160201b8111156101f357600080fd5b82018360208201111561020557600080fd5b803590602001918460018302840111600160201b8311171561022657600080fd5b91935091508035906020810135906001600160a01b03604082013581169160608101359091169060808101359060a00135610651565b34801561026857600080fd5b5061027161099e565b604080516001600160a01b039092168252519081900360200190f35b34801561029957600080fd5b506102bd600480360360408110156102b057600080fd5b50803590602001356109ad565b60408051918252519081900360200190f35b3480156102db57600080fd5b506102bd610b8e565b3480156102f057600080fd5b506102f9610ba0565b6040805163ffffffff9092168252519081900360200190f35b34801561031e57600080fd5b50610271610bac565b34801561033357600080fd5b506101af6004803603602081101561034a57600080fd5b5035610bbb565b34801561035d57600080fd5b506101af6004803603602081101561037457600080fd5b5035610c2e565b34801561038757600080fd5b506102bd610c43565b34801561039c57600080fd5b506102f9610c49565b3480156103b157600080fd5b50610183600480360360208110156103c857600080fd5b50356001600160a01b0316610c55565b3480156103e457600080fd5b50610453600480360360208110156103fb57600080fd5b810190602081018135600160201b81111561041557600080fd5b82018360208201111561042757600080fd5b803590602001918460208302840111600160201b8311171561044857600080fd5b509092509050610cc0565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561048f578181015183820152602001610477565b505050509050019250505060405180910390f35b610183600480360360208110156104b957600080fd5b5035610d48565b3480156104cc57600080fd5b506102bd610e75565b3480156104e157600080fd5b506102bd600480360360208110156104f857600080fd5b5035610e95565b34801561050b57600080fd5b506102f9610ea9565b34801561052057600080fd5b506101af6004803603602081101561053757600080fd5b5035610eae565b34801561054a57600080fd5b506102bd6004803603602081101561056157600080fd5b5035610ec3565b34801561057457600080fd5b506102bd610ee1565b34801561058957600080fd5b506102bd600480360360208110156105a057600080fd5b5035610f05565b3480156105b357600080fd5b50610271610f12565b3480156105c857600080fd5b506102f9610f21565b606d546001600160a01b0316331461061a5760405162461bcd60e51b815260040180806020018281038252602581526020018061172e6025913960400191505060405180910390fd5b606d80546001600160a01b0319166001600160a01b0392909216919091179055565b606a6020526000908152604090205460ff1681565b60685460ff166106a8576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6068805460ff19169055606954821115610709576040805162461bcd60e51b815260206004820152601a60248201527f4665652065786365656473207472616e736665722076616c7565000000000000604482015290519081900360640190fd5b6000858152606a602052604090205460ff161561076d576040805162461bcd60e51b815260206004820152601f60248201527f546865206e6f746520686173206265656e20616c7265616479207370656e7400604482015290519081900360640190fd5b61077686610bbb565b6107c7576040805162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742066696e6420796f7572206d65726b6c6520726f6f7400000000604482015290519081900360640190fd5b606c546040805160c08082018352898252602082018990526001600160a01b038881168385015287811660608401526080830187905260a08301869052925163695ef6f960e01b8152929093169263695ef6f9928c928c9290916004810191829160240190849080838360005b8381101561084c578181015183820152602001610834565b505050509050018281038252858582818152602001925080828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b15801561089e57600080fd5b505af11580156108b2573d6000803e3d6000fd5b505050506040513d60208110156108c857600080fd5b5051610914576040805162461bcd60e51b815260206004820152601660248201527524b73b30b634b2103bb4ba34323930bb90383937b7b360511b604482015290519081900360640190fd5b6000858152606a60205260409020805460ff1916600117905561093984848484610f34565b604080516001600160a01b038681168252602082018890528183018590529151918516917fe9e508bad6d4c3227e881ca19068f099da81b5164dd6d62b2eaf1e8bc6c349319181900360600190a250506068805460ff19166001179055505050505050565b606c546001600160a01b031681565b60006000805160206116bd8339815191528310610a11576040805162461bcd60e51b815260206004820181905260248201527f5f6c6566742073686f756c6420626520696e7369646520746865206669656c64604482015290519081900360640190fd5b6000805160206116bd8339815191528210610a5d5760405162461bcd60e51b815260040180806020018281038252602181526020018061166d6021913960400191505060405180910390fd5b6040805163f47d33b560e01b81526004810185905260006024820181905282518693919273__Hasher________________________________9263f47d33b592604480840193829003018186803b158015610ab757600080fd5b505af4158015610acb573d6000803e3d6000fd5b505050506040513d6040811015610ae157600080fd5b50805160209091015190925090506000805160206116bd833981519152848308915073__Hasher________________________________63f47d33b583836040518363ffffffff1660e01b81526004018083815260200182815260200192505050604080518083038186803b158015610b5957600080fd5b505af4158015610b6d573d6000803e3d6000fd5b505050506040513d6040811015610b8357600080fd5b505195945050505050565b6000805160206116bd83398151915281565b60005463ffffffff1681565b606d546001600160a01b031681565b600081610bca57506000610c29565b60035463ffffffff165b60048163ffffffff1660648110610be757fe5b0154831415610bfa576001915050610c29565b63ffffffff8116610c09575060645b6003546000199091019063ffffffff80831691161415610bd45760009150505b919050565b606b6020526000908152604090205460ff1681565b60695481565b60035463ffffffff1681565b606d546001600160a01b03163314610c9e5760405162461bcd60e51b815260040180806020018281038252602581526020018061172e6025913960400191505060405180910390fd5b606c80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518281526020808402820101909152606090828015610cec578160200160208202803883390190505b50905060005b82811015610d4157610d15848483818110610d0957fe5b90506020020135610eae565b15610d39576001828281518110610d2857fe5b911515602092830291909101909101525b600101610cf2565b5092915050565b60685460ff16610d9f576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6068805460ff191690556000818152606b602052604090205460ff1615610df75760405162461bcd60e51b81526004018080602001828103825260218152602001806116dd6021913960400191505060405180910390fd5b6000610e028261102f565b6000838152606b60205260409020805460ff191660011790559050610e256111c6565b6040805163ffffffff83168152426020820152815184927fa945e51eec50ab98c161376f0db4cf2aeba3ec92755fe2fcd388bdbbb80ff196928290030190a250506068805460ff19166001179055565b60035460009060049063ffffffff1660648110610e8e57fe5b0154905090565b60048160648110610ea257fe5b0154905081565b606481565b6000908152606a602052604090205460ff1690565b60028181548110610ed057fe5b600091825260209091200154905081565b7f2fe54c60d3acabf3343a35b6eba15db4821b340f76e741e2249685ed4899af6c81565b60018181548110610ed057fe5b606e546001600160a01b031681565b600354600160201b900463ffffffff1681565b803414610f725760405162461bcd60e51b81526004018080602001828103825260308152602001806116166030913960400191505060405180910390fd5b610f80848360695403611212565b8115610f9057610f908383611212565b8015611029576040516000906001600160a01b0386169083908381818185875af1925050503d8060008114610fe1576040519150601f19603f3d011682016040523d82523d6000602084013e610fe6565b606091505b5050905080611027576040516001600160a01b0385169083156108fc029084906000818181858888f19350505050158015611025573d6000803e3d6000fd5b505b505b50505050565b60035460008054909163ffffffff600160201b909104811691811660020a1681141561108c5760405162461bcd60e51b815260040180806020018281038252602f8152602001806115bd602f913960400191505060405180910390fd5b6003805463ffffffff600160201b80830482166001019091160267ffffffff000000001990911617905582600080805b60005463ffffffff908116908216101561116457600185166111205783925060028163ffffffff16815481106110ee57fe5b906000526020600020015491508360018263ffffffff168154811061110f57fe5b600091825260209091200155611144565b60018163ffffffff168154811061113357fe5b906000526020600020015492508391505b61114e83836109ad565b9350600263ffffffff86160494506001016110bc565b5060035460649063ffffffff908116600101166003805463ffffffff19169290910663ffffffff9081169290921790819055849160049116606481106111a657fe5b01555050600354600160201b900463ffffffff1660001901949350505050565b34156112035760405162461bcd60e51b81526004018080602001828103825260308152602001806116fe6030913960400191505060405180910390fd5b61121033306069546113dd565b565b606e54604080516001600160a01b038581166024830152604480830186905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000956060959316939282918083835b6020831061128f5780518252601f199092019160209182019101611270565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146112f1576040519150601f19603f3d011682016040523d82523d6000602084013e6112f6565b606091505b509150915081611341576040805162461bcd60e51b81526020600482015260116024820152706e6f7420656e6f75676820746f6b656e7360781b604482015290519081900360640190fd5b8051156110295780516020146113885760405162461bcd60e51b815260040180806020018281038252602a8152602001806115ec602a913960400191505060405180910390fd5b80806020019051602081101561139d57600080fd5b50519150816110295760405162461bcd60e51b81526004018080602001828103825260278152602001806116466027913960400191505060405180910390fd5b606e54604080516001600160a01b0386811660248301528581166044830152606480830186905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b178152925182516000956060959316939282918083835b602083106114625780518252601f199092019160209182019101611443565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146114c4576040519150601f19603f3d011682016040523d82523d6000602084013e6114c9565b606091505b509150915081611520576040805162461bcd60e51b815260206004820152601960248201527f6e6f7420656e6f75676820616c6c6f77656420746f6b656e7300000000000000604482015290519081900360640190fd5b8051156110275780516020146115675760405162461bcd60e51b815260040180806020018281038252602a8152602001806115ec602a913960400191505060405180910390fd5b80806020019051602081101561157c57600080fd5b50519150816110275760405162461bcd60e51b815260040180806020018281038252602f81526020018061168e602f913960400191505060405180910390fdfe4d65726b6c6520747265652069732066756c6c2e204e6f206d6f7265206c656166732063616e20626520616464656464617461206c656e6774682073686f756c64206265206569746865722030206f72203332206279746573496e636f727265637420726566756e6420616d6f756e742072656365697665642062792074686520636f6e74726163746e6f7420656e6f75676820746f6b656e732e20546f6b656e2072657475726e732066616c73652e5f72696768742073686f756c6420626520696e7369646520746865206669656c646e6f7420656e6f75676820616c6c6f77656420746f6b656e732e20546f6b656e2072657475726e732066616c73652e30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000154686520636f6d6d69746d656e7420686173206265656e207375626d69747465644554482076616c756520697320737570706f73656420746f206265203020666f7220455243323020696e7374616e63654f6e6c79206f70657261746f722063616e2063616c6c20746869732066756e6374696f6e2ea265627a7a72315820494b71139a3b0e5b3d4285ff58127e5c54881ed5204c3d740b94c1c4832e681c64736f6c6343000511003264656e6f6d696e6174696f6e2073686f756c642062652067726561746572207468616e2030405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace5f72696768742073686f756c6420626520696e7369646520746865206669656c645f747265654c6576656c732073686f756c642062652067726561746572207468616e207a65726f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000015f747265654c6576656c732073686f756c64206265206c657373207468616e203332b10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6", - "deployedBytecode": "0x60806040526004361061014b5760003560e01c806397fc007c116100b6578063e5285dcc1161006f578063e5285dcc14610514578063e82955881461053e578063ec73295914610568578063f178e47c1461057d578063fc0c546a146105a7578063fc7e9c6f146105bc5761014b565b806397fc007c146103a55780639fa12d0b146103d8578063b214faa5146104a3578063ba70f757146104c0578063c2b40ae4146104d5578063cd87a3b4146104ff5761014b565b80634ecf518b116101085780634ecf518b146102e4578063570ca735146103125780636d9833e314610327578063839df945146103515780638bca6d161461037b57806390eeb02b146103905761014b565b806306394c9b1461015057806317cc915c1461018557806321a0adb6146101c35780632b7ac3f31461025c57806338bf282e1461028d578063414a37ba146102cf575b600080fd5b34801561015c57600080fd5b506101836004803603602081101561017357600080fd5b50356001600160a01b03166105d1565b005b34801561019157600080fd5b506101af600480360360208110156101a857600080fd5b503561063c565b604080519115158252519081900360200190f35b610183600480360360e08110156101d957600080fd5b810190602081018135600160201b8111156101f357600080fd5b82018360208201111561020557600080fd5b803590602001918460018302840111600160201b8311171561022657600080fd5b91935091508035906020810135906001600160a01b03604082013581169160608101359091169060808101359060a00135610651565b34801561026857600080fd5b5061027161099e565b604080516001600160a01b039092168252519081900360200190f35b34801561029957600080fd5b506102bd600480360360408110156102b057600080fd5b50803590602001356109ad565b60408051918252519081900360200190f35b3480156102db57600080fd5b506102bd610b8e565b3480156102f057600080fd5b506102f9610ba0565b6040805163ffffffff9092168252519081900360200190f35b34801561031e57600080fd5b50610271610bac565b34801561033357600080fd5b506101af6004803603602081101561034a57600080fd5b5035610bbb565b34801561035d57600080fd5b506101af6004803603602081101561037457600080fd5b5035610c2e565b34801561038757600080fd5b506102bd610c43565b34801561039c57600080fd5b506102f9610c49565b3480156103b157600080fd5b50610183600480360360208110156103c857600080fd5b50356001600160a01b0316610c55565b3480156103e457600080fd5b50610453600480360360208110156103fb57600080fd5b810190602081018135600160201b81111561041557600080fd5b82018360208201111561042757600080fd5b803590602001918460208302840111600160201b8311171561044857600080fd5b509092509050610cc0565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561048f578181015183820152602001610477565b505050509050019250505060405180910390f35b610183600480360360208110156104b957600080fd5b5035610d48565b3480156104cc57600080fd5b506102bd610e75565b3480156104e157600080fd5b506102bd600480360360208110156104f857600080fd5b5035610e95565b34801561050b57600080fd5b506102f9610ea9565b34801561052057600080fd5b506101af6004803603602081101561053757600080fd5b5035610eae565b34801561054a57600080fd5b506102bd6004803603602081101561056157600080fd5b5035610ec3565b34801561057457600080fd5b506102bd610ee1565b34801561058957600080fd5b506102bd600480360360208110156105a057600080fd5b5035610f05565b3480156105b357600080fd5b50610271610f12565b3480156105c857600080fd5b506102f9610f21565b606d546001600160a01b0316331461061a5760405162461bcd60e51b815260040180806020018281038252602581526020018061172e6025913960400191505060405180910390fd5b606d80546001600160a01b0319166001600160a01b0392909216919091179055565b606a6020526000908152604090205460ff1681565b60685460ff166106a8576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6068805460ff19169055606954821115610709576040805162461bcd60e51b815260206004820152601a60248201527f4665652065786365656473207472616e736665722076616c7565000000000000604482015290519081900360640190fd5b6000858152606a602052604090205460ff161561076d576040805162461bcd60e51b815260206004820152601f60248201527f546865206e6f746520686173206265656e20616c7265616479207370656e7400604482015290519081900360640190fd5b61077686610bbb565b6107c7576040805162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742066696e6420796f7572206d65726b6c6520726f6f7400000000604482015290519081900360640190fd5b606c546040805160c08082018352898252602082018990526001600160a01b038881168385015287811660608401526080830187905260a08301869052925163695ef6f960e01b8152929093169263695ef6f9928c928c9290916004810191829160240190849080838360005b8381101561084c578181015183820152602001610834565b505050509050018281038252858582818152602001925080828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b15801561089e57600080fd5b505af11580156108b2573d6000803e3d6000fd5b505050506040513d60208110156108c857600080fd5b5051610914576040805162461bcd60e51b815260206004820152601660248201527524b73b30b634b2103bb4ba34323930bb90383937b7b360511b604482015290519081900360640190fd5b6000858152606a60205260409020805460ff1916600117905561093984848484610f34565b604080516001600160a01b038681168252602082018890528183018590529151918516917fe9e508bad6d4c3227e881ca19068f099da81b5164dd6d62b2eaf1e8bc6c349319181900360600190a250506068805460ff19166001179055505050505050565b606c546001600160a01b031681565b60006000805160206116bd8339815191528310610a11576040805162461bcd60e51b815260206004820181905260248201527f5f6c6566742073686f756c6420626520696e7369646520746865206669656c64604482015290519081900360640190fd5b6000805160206116bd8339815191528210610a5d5760405162461bcd60e51b815260040180806020018281038252602181526020018061166d6021913960400191505060405180910390fd5b6040805163f47d33b560e01b81526004810185905260006024820181905282518693919273__Hasher________________________________9263f47d33b592604480840193829003018186803b158015610ab757600080fd5b505af4158015610acb573d6000803e3d6000fd5b505050506040513d6040811015610ae157600080fd5b50805160209091015190925090506000805160206116bd833981519152848308915073__Hasher________________________________63f47d33b583836040518363ffffffff1660e01b81526004018083815260200182815260200192505050604080518083038186803b158015610b5957600080fd5b505af4158015610b6d573d6000803e3d6000fd5b505050506040513d6040811015610b8357600080fd5b505195945050505050565b6000805160206116bd83398151915281565b60005463ffffffff1681565b606d546001600160a01b031681565b600081610bca57506000610c29565b60035463ffffffff165b60048163ffffffff1660648110610be757fe5b0154831415610bfa576001915050610c29565b63ffffffff8116610c09575060645b6003546000199091019063ffffffff80831691161415610bd45760009150505b919050565b606b6020526000908152604090205460ff1681565b60695481565b60035463ffffffff1681565b606d546001600160a01b03163314610c9e5760405162461bcd60e51b815260040180806020018281038252602581526020018061172e6025913960400191505060405180910390fd5b606c80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518281526020808402820101909152606090828015610cec578160200160208202803883390190505b50905060005b82811015610d4157610d15848483818110610d0957fe5b90506020020135610eae565b15610d39576001828281518110610d2857fe5b911515602092830291909101909101525b600101610cf2565b5092915050565b60685460ff16610d9f576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6068805460ff191690556000818152606b602052604090205460ff1615610df75760405162461bcd60e51b81526004018080602001828103825260218152602001806116dd6021913960400191505060405180910390fd5b6000610e028261102f565b6000838152606b60205260409020805460ff191660011790559050610e256111c6565b6040805163ffffffff83168152426020820152815184927fa945e51eec50ab98c161376f0db4cf2aeba3ec92755fe2fcd388bdbbb80ff196928290030190a250506068805460ff19166001179055565b60035460009060049063ffffffff1660648110610e8e57fe5b0154905090565b60048160648110610ea257fe5b0154905081565b606481565b6000908152606a602052604090205460ff1690565b60028181548110610ed057fe5b600091825260209091200154905081565b7f2fe54c60d3acabf3343a35b6eba15db4821b340f76e741e2249685ed4899af6c81565b60018181548110610ed057fe5b606e546001600160a01b031681565b600354600160201b900463ffffffff1681565b803414610f725760405162461bcd60e51b81526004018080602001828103825260308152602001806116166030913960400191505060405180910390fd5b610f80848360695403611212565b8115610f9057610f908383611212565b8015611029576040516000906001600160a01b0386169083908381818185875af1925050503d8060008114610fe1576040519150601f19603f3d011682016040523d82523d6000602084013e610fe6565b606091505b5050905080611027576040516001600160a01b0385169083156108fc029084906000818181858888f19350505050158015611025573d6000803e3d6000fd5b505b505b50505050565b60035460008054909163ffffffff600160201b909104811691811660020a1681141561108c5760405162461bcd60e51b815260040180806020018281038252602f8152602001806115bd602f913960400191505060405180910390fd5b6003805463ffffffff600160201b80830482166001019091160267ffffffff000000001990911617905582600080805b60005463ffffffff908116908216101561116457600185166111205783925060028163ffffffff16815481106110ee57fe5b906000526020600020015491508360018263ffffffff168154811061110f57fe5b600091825260209091200155611144565b60018163ffffffff168154811061113357fe5b906000526020600020015492508391505b61114e83836109ad565b9350600263ffffffff86160494506001016110bc565b5060035460649063ffffffff908116600101166003805463ffffffff19169290910663ffffffff9081169290921790819055849160049116606481106111a657fe5b01555050600354600160201b900463ffffffff1660001901949350505050565b34156112035760405162461bcd60e51b81526004018080602001828103825260308152602001806116fe6030913960400191505060405180910390fd5b61121033306069546113dd565b565b606e54604080516001600160a01b038581166024830152604480830186905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000956060959316939282918083835b6020831061128f5780518252601f199092019160209182019101611270565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146112f1576040519150601f19603f3d011682016040523d82523d6000602084013e6112f6565b606091505b509150915081611341576040805162461bcd60e51b81526020600482015260116024820152706e6f7420656e6f75676820746f6b656e7360781b604482015290519081900360640190fd5b8051156110295780516020146113885760405162461bcd60e51b815260040180806020018281038252602a8152602001806115ec602a913960400191505060405180910390fd5b80806020019051602081101561139d57600080fd5b50519150816110295760405162461bcd60e51b81526004018080602001828103825260278152602001806116466027913960400191505060405180910390fd5b606e54604080516001600160a01b0386811660248301528581166044830152606480830186905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b178152925182516000956060959316939282918083835b602083106114625780518252601f199092019160209182019101611443565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146114c4576040519150601f19603f3d011682016040523d82523d6000602084013e6114c9565b606091505b509150915081611520576040805162461bcd60e51b815260206004820152601960248201527f6e6f7420656e6f75676820616c6c6f77656420746f6b656e7300000000000000604482015290519081900360640190fd5b8051156110275780516020146115675760405162461bcd60e51b815260040180806020018281038252602a8152602001806115ec602a913960400191505060405180910390fd5b80806020019051602081101561157c57600080fd5b50519150816110275760405162461bcd60e51b815260040180806020018281038252602f81526020018061168e602f913960400191505060405180910390fdfe4d65726b6c6520747265652069732066756c6c2e204e6f206d6f7265206c656166732063616e20626520616464656464617461206c656e6774682073686f756c64206265206569746865722030206f72203332206279746573496e636f727265637420726566756e6420616d6f756e742072656365697665642062792074686520636f6e74726163746e6f7420656e6f75676820746f6b656e732e20546f6b656e2072657475726e732066616c73652e5f72696768742073686f756c6420626520696e7369646520746865206669656c646e6f7420656e6f75676820616c6c6f77656420746f6b656e732e20546f6b656e2072657475726e732066616c73652e30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000154686520636f6d6d69746d656e7420686173206265656e207375626d69747465644554482076616c756520697320737570706f73656420746f206265203020666f7220455243323020696e7374616e63654f6e6c79206f70657261746f722063616e2063616c6c20746869732066756e6374696f6e2ea265627a7a72315820494b71139a3b0e5b3d4285ff58127e5c54881ed5204c3d740b94c1c4832e681c64736f6c63430005110032", - "sourceMap": "805:2189:0:-;;;1430:34:2;;;-1:-1:-1;;;;;;1468:27:2;;;867:237:0;5:2:-1;;;;30:1;27;20:12;5:2;867:237:0;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;867:237:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1646:15:2;;;1638:67;;;;-1:-1:-1;;;1638:67:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1733:2;1719:11;:16;;;1711:63;;;;-1:-1:-1;;;1711:63:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1780:6;:20;;-1:-1:-1;;1780:20:2;;;;;;;1854:5;27:10:-1;;-1:-1;23:18;;;45:23;;;1088:77:2;-1:-1:-1;;;;;;;;;;;1854:23:2;;;;;;27:10:-1;;23:18;;;45:23;;1883:32:2;;;;-1:-1:-1;;;;;;;;;;;1883:32:2;;;;;;1922:175;1945:6;;;;;;1941:10;;;;1922:175;;;1980:39;1994:11;;-1:-1:-1;;;;;1980:13:2;:39;:::i;:::-;2027:5;27:10:-1;;39:1;23:18;;;45:23;;;-1:-1;;;;;;;;;;;2027:23:2;;;;27:10:-1;;23:18;;;45:23;;-1:-1;2058:32:2;;;-1:-1:-1;;;;;;;;;;;2058:32:2;;;;1966:53;;-1:-1:-1;1953:3:2;1922:175;;;-1:-1:-1;2114:39:2;2128:11;;-1:-1:-1;;;;;2114:13:2;:39;:::i;:::-;2103:5;2109:1;2103:8;:50;-1:-1:-1;;1421:11:18;:18;;-1:-1:-1;;1421:18:18;1435:4;1421:18;;;2260:17:8;2252:67;;;;-1:-1:-1;;;2252:67:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2325:8;:20;;-1:-1:-1;;;;;2325:20:8;;;-1:-1:-1;;;;;;2325:20:8;;;;;;;2351:8;:20;;;;;;;;;;;;;;;2377:12;:28;;;;-1:-1:-1;1085:5:0;:14;;;;;;;;;;;;;;-1:-1:-1;805:2189:0;;-1:-1:-1;;;805:2189:0;2230:445:2;2305:7;-1:-1:-1;;;;;;;;;;;2328:27:2;;2320:72;;;;;-1:-1:-1;;;2320:72:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2406:28:2;;2398:74;;;;-1:-1:-1;;;2398:74:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2538:23;;;-1:-1:-1;;;2538:23:2;;;;;;;;2478:9;2538:23;;;;;;;;2498:5;;2478:9;;2538:6;;:17;;:23;;;;;;;;;;:6;:23;;;5:2:-1;;;;30:1;27;20:12;5:2;2538:23:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2538:23:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2538:23:2;;;;;;;;;-1:-1:-1;2538:23:2;-1:-1:-1;;;;;;;;;;;;2589:6:2;2578:1;2571:38;2567:42;;2624:6;:17;2642:1;2645;2624:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2624:23:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2624:23:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2624:23:2;;2230:445;-1:-1:-1;;;;;2230:445:2:o;805:2189:0:-;;;;;;;", - "deployedSourceMap": "805:2189:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5355:102:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5355:102:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5355:102:8;-1:-1:-1;;;;;5355:102:8;;:::i;:::-;;1089:47;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1089:47:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1089:47:8;;:::i;:::-;;;;;;;;;;;;;;;;;;3478:781;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;3478:781:8;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;3478:781:8;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3478:781:8;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;3478:781:8;;-1:-1:-1;3478:781:8;-1:-1:-1;3478:781:8;;;;;;;;-1:-1:-1;;;;;3478:781:8;;;;;;;;;;;;;;;;;;;;;;;;:::i;1278:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1278:25:8;;;:::i;:::-;;;;-1:-1:-1;;;;;1278:25:8;;;;;;;;;;;;;;2230:445:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2230:445:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2230:445:2;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;933:114;;8:9:-1;5:2;;;30:1;27;20:12;5:2;933:114:2;;;:::i;1209:20::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1209:20:2;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1463:23:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1463:23:8;;;:::i;3553:342:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3553:342:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3553:342:2;;:::i;1231:43:8:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1231:43:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1231:43:8;;:::i;1058:27::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1058:27:8;;;:::i;1430:34:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1430:34:2;;;:::i;5192:113:8:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5192:113:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5192:113:8;-1:-1:-1;;;;;5192:113:8;;:::i;4669:293::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4669:293:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4669:293:8;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;4669:293:8;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4669:293:8;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;4669:293:8;;-1:-1:-1;4669:293:8;-1:-1:-1;4669:293:8;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4669:293:8;;;;;;;;;;;;;;;;;2658:324;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2658:324:8;;:::i;3941:93:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3941:93:2;;;:::i;1549:39::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1549:39:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1549:39:2;;:::i;1499:46::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1499:46:2;;;:::i;4492:116:8:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4492:116:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4492:116:8;;:::i;1404:22:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1404:22:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1404:22:2;;:::i;1051:114::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1051:114:2;;;:::i;1369:31::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1369:31:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1369:31:2;;:::i;842:20:0:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;842:20:0;;;:::i;1468:27:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1468:27:2;;;:::i;5355:102:8:-;1540:8;;-1:-1:-1;;;;;1540:8:8;1526:10;:22;1518:72;;;;-1:-1:-1;;;1518:72:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5429:8;:23;;-1:-1:-1;;;;;;5429:23:8;-1:-1:-1;;;;;5429:23:8;;;;;;;;;;5355:102::o;1089:47::-;;;;;;;;;;;;;;;:::o;3478:781::-;1934:11:18;;;;1926:55;;;;;-1:-1:-1;;;1926:55:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;2056:11;:19;;-1:-1:-1;;2056:19:18;;;3695:12:8;;3687:20;;;3679:59;;;;;-1:-1:-1;;;3679:59:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;3753:31;;;;:15;:31;;;;;;;;3752:32;3744:76;;;;;-1:-1:-1;;;3744:76:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;3834:18;3846:5;3834:11;:18::i;:::-;3826:59;;;;;-1:-1:-1;;;3826:59:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;3932:8;;:126;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4003:19:8;;;3932:126;;;;4024:17;;;3932:126;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3932:126:8;;:8;;;;;:20;;3953:6;;;;3932:126;;;;;;;;;;;;;;;;:8;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3932:126:8;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;3932:126:8;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3932:126:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3932:126:8;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3932:126:8;3924:161;;;;;-1:-1:-1;;;3924:161:8;;;;;;;;;;;;-1:-1:-1;;;3924:161:8;;;;;;;;;;;;;;;4092:31;;;;:15;:31;;;;;:38;;-1:-1:-1;;4092:38:8;4126:4;4092:38;;;4136:53;4153:10;4165:8;4175:4;4181:7;4136:16;:53::i;:::-;4200:54;;;-1:-1:-1;;;;;4200:54:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2230:11:18;:18;;-1:-1:-1;;2230:18:18;2244:4;2230:18;;;-1:-1:-1;;;;;;3478:781:8:o;1278:25::-;;;-1:-1:-1;;;;;1278:25:8;;:::o;2230:445:2:-;2305:7;-1:-1:-1;;;;;;;;;;;2328:27:2;;2320:72;;;;;-1:-1:-1;;;2320:72:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2406:28:2;;2398:74;;;;-1:-1:-1;;;2398:74:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2538:23;;;-1:-1:-1;;;2538:23:2;;;;;;;;2478:9;2538:23;;;;;;;;2498:5;;2478:9;;2538:6;;:17;;:23;;;;;;;;;;:6;:23;;;5:2:-1;;;;30:1;27;20:12;5:2;2538:23:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2538:23:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2538:23:2;;;;;;;;;-1:-1:-1;2538:23:2;-1:-1:-1;;;;;;;;;;;;2589:6:2;2578:1;2571:38;2567:42;;2624:6;:17;2642:1;2645;2624:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2624:23:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2624:23:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2624:23:2;;2230:445;-1:-1:-1;;;;;2230:445:2:o;933:114::-;-1:-1:-1;;;;;;;;;;;933:114:2;:::o;1209:20::-;;;;;;:::o;1463:23:8:-;;;-1:-1:-1;;;;;1463:23:8;;:::o;3553:342:2:-;3609:4;3625:10;3621:43;;-1:-1:-1;3652:5:2;3645:12;;3621:43;3680:16;;;;3702:171;3726:5;3732:1;3726:8;;;;;;;;;;;3717:5;:17;3713:53;;;3753:4;3746:11;;;;;3713:53;3777:6;;;3773:52;;-1:-1:-1;1542:3:2;3773:52;3855:16;;-1:-1:-1;;3832:3:2;;;;3855:16;3850:21;;;3855:16;;3850:21;;3702:171;;3885:5;3878:12;;;3553:342;;;;:::o;1231:43:8:-;;;;;;;;;;;;;;;:::o;1058:27::-;;;;:::o;1430:34:2:-;;;;;;:::o;5192:113:8:-;1540:8;;-1:-1:-1;;;;;1540:8:8;1526:10;:22;1518:72;;;;-1:-1:-1;;;1518:72:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5266:8;:34;;-1:-1:-1;;;;;;5266:34:8;-1:-1:-1;;;;;5266:34:8;;;;;;;;;;5192:113::o;4669:293::-;4785:35;;;;;;;;;;;;;;;;4750:19;;4796:16;4785:35;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;4785:35:8;-1:-1:-1;4777:43:8;-1:-1:-1;4830:6:8;4826:132;4842:27;;;4826:132;;;4888:28;4896:16;;4913:1;4896:19;;;;;;;;;;;;;4888:7;:28::i;:::-;4884:68;;;4939:4;4928:5;4934:1;4928:8;;;;;;;;:15;;;:8;;;;;;;;;;;:15;4884:68;4871:3;;4826:132;;;;4669:293;;;;:::o;2658:324::-;1934:11:18;;;;1926:55;;;;;-1:-1:-1;;;1926:55:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;2056:11;:19;;-1:-1:-1;;2056:19:18;;;2070:5;2741:24:8;;;:11;:24;;;;;;2056:19:18;2741:24:8;2740:25;2732:71;;;;-1:-1:-1;;;2732:71:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2810:20;2833;2841:11;2833:7;:20::i;:::-;2859:24;;;;:11;:24;;;;;:31;;-1:-1:-1;;2859:31:8;2886:4;2859:31;;;2810:43;-1:-1:-1;2896:17:8;:15;:17::i;:::-;2925:52;;;;;;;;2961:15;2925:52;;;;;;2933:11;;2925:52;;;;;;;;-1:-1:-1;;2230:11:18;:18;;-1:-1:-1;;2230:18:18;2244:4;2230:18;;;2658:324:8:o;3941:93:2:-;4012:16;;3984:7;;4006:5;;4012:16;;4006:23;;;;;;;;;3999:30;;3941:93;:::o;1549:39::-;;;;;;;;;;;;;-1:-1:-1;1549:39:2;:::o;1499:46::-;1542:3;1499:46;:::o;4492:116:8:-;4553:4;4572:31;;;:15;:31;;;;;;;;;4492:116::o;1404:22:2:-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1404:22:2;:::o;1051:114::-;1088:77;1051:114;:::o;1369:31::-;;;;;;;;;;842:20:0;;;-1:-1:-1;;;;;842:20:0;;:::o;1468:27:2:-;;;-1:-1:-1;;;1468:27:2;;;;;:::o;1303:547:0:-;1450:7;1437:9;:20;1429:81;;;;-1:-1:-1;;;1429:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1517:51;1536:10;1563:4;1548:12;;:19;1517:18;:51::i;:::-;1578:8;;1574:63;;1596:34;1615:8;1625:4;1596:18;:34::i;:::-;1647:11;;1643:203;;1687:34;;1669:12;;-1:-1:-1;;;;;1687:15:0;;;1709:7;;1669:12;1687:34;1669:12;1687:34;1709:7;1687:15;:34;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;1668:53:0;;;1734:7;1729:111;;1805:26;;-1:-1:-1;;;;;1805:17:0;;;:26;;;;;1823:7;;1805:26;;;;1823:7;1805:17;:26;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1805:26:0;1729:111;1643:203;;1303:547;;;;:::o;2679:802:2:-;2770:9;;2728:12;2820:6;;2728:12;;2770:9;-1:-1:-1;;;2770:9:2;;;;;;2820:6;;2816:1;2809:17;2793:33;;;;2785:93;;;;-1:-1:-1;;;2785:93:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2884:9;:14;;;-1:-1:-1;;;2884:14:2;;;;;2897:1;2884:14;;;;;-1:-1:-1;;2884:14:2;;;;;;2931:5;-1:-1:-1;;;2980:355:2;3003:6;;;;;;2999:10;;;;2980:355;;;3028:16;;;3024:225;;3068:16;3061:23;;3102:5;3108:1;3102:8;;;;;;;;;;;;;;;;;;3094:16;;3141;3121:14;3136:1;3121:17;;;;;;;;;;;;;;;;;;;:36;3024:225;;;3189:14;3204:1;3189:17;;;;;;;;;;;;;;;;;;3182:24;;3224:16;3216:24;;3024:225;3276:26;3290:4;3296:5;3276:13;:26::i;:::-;3257:45;-1:-1:-1;3327:1:2;3311:17;;;;;-1:-1:-1;3011:3:2;;2980:355;;;-1:-1:-1;3361:16:2;;1542:3;;3360:42;3361:16;;;;:20;3360:42;3341:16;:61;;-1:-1:-1;;3341:61:2;3360:42;;;;3341:61;;;;;;;;;;;;3434:16;;3408:5;;3414:16;3408:23;;;;;;;;:42;-1:-1:-1;;3463:9:2;;-1:-1:-1;;;3463:9:2;;;;-1:-1:-1;;3463:13:2;;2679:802;-1:-1:-1;;;;2679:802:2:o;1108:191:0:-;1158:9;:14;1150:75;;;;-1:-1:-1;;;1150:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1231:63;1254:10;1274:4;1281:12;;1231:22;:63::i;:::-;1108:191::o;2448:544::-;2557:5;;2568:63;;;-1:-1:-1;;;;;2568:63:0;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;2568:63:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2557:75:0;;;;2522:12;;2536:17;;2557:5;;;2568:63;2557:75;;;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;2557:75:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2521:111:0;;;;2646:7;2638:37;;;;;-1:-1:-1;;;2638:37:0;;;;;;;;;;;;-1:-1:-1;;;2638:37:0;;;;;;;;;;;;;;;2775:11;;:15;2771:217;;2808:4;:11;2823:2;2808:17;2800:72;;;;-1:-1:-1;;;2800:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2901:4;2890:24;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2890:24:0;;-1:-1:-1;2890:24:0;2922:59;;;;-1:-1:-1;;;2922:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1854:590;1982:5;;1993:74;;;-1:-1:-1;;;;;1993:74:0;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1993:74:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1982:86:0;;;;1947:12;;1961:17;;1982:5;;;1993:74;1982:86;;;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;1982:86:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;1946:122:0;;;;2082:7;2074:45;;;;;-1:-1:-1;;;2074:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;2219:11;;:15;2215:225;;2252:4;:11;2267:2;2252:17;2244:72;;;;-1:-1:-1;;;2244:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2345:4;2334:24;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2334:24:0;;-1:-1:-1;2334:24:0;2366:67;;;;-1:-1:-1;;;2366:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", - "source": "// https://tornado.cash\n/*\n* d888888P dP a88888b. dP\n* 88 88 d8' `88 88\n* 88 .d8888b. 88d888b. 88d888b. .d8888b. .d888b88 .d8888b. 88 .d8888b. .d8888b. 88d888b.\n* 88 88' `88 88' `88 88' `88 88' `88 88' `88 88' `88 88 88' `88 Y8ooooo. 88' `88\n* 88 88. .88 88 88 88 88. .88 88. .88 88. .88 dP Y8. .88 88. .88 88 88 88\n* dP `88888P' dP dP dP `88888P8 `88888P8 `88888P' 88 Y88888P' `88888P8 `88888P' dP dP\n* ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo\n*/\n\npragma solidity 0.5.17;\n\nimport \"./Tornado.sol\";\n\ncontract ERC20Tornado is Tornado {\n address public token;\n\n constructor(\n IVerifier _verifier,\n uint256 _denomination,\n uint32 _merkleTreeHeight,\n address _operator,\n address _token\n ) Tornado(_verifier, _denomination, _merkleTreeHeight, _operator) public {\n token = _token;\n }\n\n function _processDeposit() internal {\n require(msg.value == 0, \"ETH value is supposed to be 0 for ERC20 instance\");\n _safeErc20TransferFrom(msg.sender, address(this), denomination);\n }\n\n function _processWithdraw(address payable _recipient, address payable _relayer, uint256 _fee, uint256 _refund) internal {\n require(msg.value == _refund, \"Incorrect refund amount received by the contract\");\n\n _safeErc20Transfer(_recipient, denomination - _fee);\n if (_fee > 0) {\n _safeErc20Transfer(_relayer, _fee);\n }\n\n if (_refund > 0) {\n (bool success, ) = _recipient.call.value(_refund)(\"\");\n if (!success) {\n // let's return _refund back to the relayer\n _relayer.transfer(_refund);\n }\n }\n }\n\n function _safeErc20TransferFrom(address _from, address _to, uint256 _amount) internal {\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd /* transferFrom */, _from, _to, _amount));\n require(success, \"not enough allowed tokens\");\n\n // if contract returns some data lets make sure that is `true` according to standard\n if (data.length > 0) {\n require(data.length == 32, \"data length should be either 0 or 32 bytes\");\n success = abi.decode(data, (bool));\n require(success, \"not enough allowed tokens. Token returns false.\");\n }\n }\n\n function _safeErc20Transfer(address _to, uint256 _amount) internal {\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb /* transfer */, _to, _amount));\n require(success, \"not enough tokens\");\n\n // if contract returns some data lets make sure that is `true` according to standard\n if (data.length > 0) {\n require(data.length == 32, \"data length should be either 0 or 32 bytes\");\n success = abi.decode(data, (bool));\n require(success, \"not enough tokens. Token returns false.\");\n }\n }\n}\n", + "metadata": "{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVerifier\",\"name\":\"_verifier\",\"type\":\"address\"},{\"internalType\":\"contract IFeeManager\",\"name\":\"_feeManager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_denomination\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_merkleTreeHeight\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"leafIndex\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"nullifierHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"Withdrawal\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"FIELD_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"ROOT_HISTORY_SIZE\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"ZERO_VALUE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newOperator\",\"type\":\"address\"}],\"name\":\"changeOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"commitments\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"currentRootIndex\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"denomination\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_commitment\",\"type\":\"bytes32\"}],\"name\":\"deposit\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeManager\",\"outputs\":[{\"internalType\":\"contract IFeeManager\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"filledSubtrees\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getLastRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_left\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_right\",\"type\":\"bytes32\"}],\"name\":\"hashLeftRight\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_root\",\"type\":\"bytes32\"}],\"name\":\"isKnownRoot\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_nullifierHash\",\"type\":\"bytes32\"}],\"name\":\"isSpent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"_nullifierHashes\",\"type\":\"bytes32[]\"}],\"name\":\"isSpentArray\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"spent\",\"type\":\"bool[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"levels\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"nextIndex\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"nullifierHashes\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"operator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"protocolFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"roots\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newVerifier\",\"type\":\"address\"}],\"name\":\"updateVerifier\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"verifier\",\"outputs\":[{\"internalType\":\"contract IVerifier\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_proof\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"_root\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_nullifierHash\",\"type\":\"bytes32\"},{\"internalType\":\"address payable\",\"name\":\"_recipient\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"_relayer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_refund\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"zeros\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"changeOperator(address)\":{\"details\":\"operator can change his address \"},\"deposit(bytes32)\":{\"details\":\"Deposit funds into the contract. The caller must send (for ETH) or approve (for ERC20) value equal to or `denomination` of this instance.\",\"params\":{\"_commitment\":\"the note commitment, which is PedersenHash(nullifier + secret)\"}},\"getLastRoot()\":{\"details\":\"Returns the last root\"},\"hashLeftRight(bytes32,bytes32)\":{\"details\":\"Hash 2 tree leaves, returns MiMC(_left, _right)\"},\"isKnownRoot(bytes32)\":{\"details\":\"Whether the root is present in the root history\"},\"isSpent(bytes32)\":{\"details\":\"whether a note is already spent \"},\"isSpentArray(bytes32[])\":{\"details\":\"whether an array of notes is already spent \"},\"updateVerifier(address)\":{\"details\":\"allow operator to update SNARK verification keys. This is needed to update keys after the final trusted setup ceremony is held. After that operator rights are supposed to be transferred to zero address\"},\"withdraw(bytes,bytes32,bytes32,address,address,uint256,uint256)\":{\"details\":\"Withdraw a deposit from the contract. `proof` is a zkSNARK proof data, and input is an array of circuit public inputs `input` array consists of: - merkle root of all deposits in the contract - hash of unique deposit nullifier to prevent double spends - the recipient of funds - optional fee that goes to the transaction sender (usually a relay)\"}}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/Users/brianli/dotfiles/tornado-core/contracts/ERC20Tornado.sol\":\"ERC20Tornado\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/brianli/dotfiles/tornado-core/contracts/ERC20Tornado.sol\":{\"keccak256\":\"0x5c57c88351063f1864166162f6f32be5aebae197a18abaef8d08d67b36440a51\",\"urls\":[\"bzz-raw://6da2d6faa828b1cad43428366d273e4aa61fc176d6541fb641028985497caa0f\",\"dweb:/ipfs/QmULz388t88hr999vUk5PidTTJwbEWGUyb3d6QGnDA6qoV\"]},\"/Users/brianli/dotfiles/tornado-core/contracts/MerkleTreeWithHistory.sol\":{\"keccak256\":\"0x671cc9268dd70c47d18795f7e37fc4df11763fcbcca026edcf163f4239036254\",\"urls\":[\"bzz-raw://9c36a207ed164b60a514eae89bfb15e5b4de4b346c4a89a7a1cb50a940bc699d\",\"dweb:/ipfs/QmbPEqFJAGMpYduLEFsbPazyBsYWcjRtpth8X26wCHALwk\"]},\"/Users/brianli/dotfiles/tornado-core/contracts/Tornado.sol\":{\"keccak256\":\"0xe7db8acb3efcecf95c7364f447ed1764c571dbf5090fd4641fe4668a965332eb\",\"urls\":[\"bzz-raw://45e790c247c38ed8ae473e3165c1148ea10a753cf6e9f9c8742394019be2aef6\",\"dweb:/ipfs/QmaGfk1ndvqur2NvCY3TWoKuorfBVShXeykKei18GDY582\"]},\"@openzeppelin/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0xb63221b23818d622bfd83d18e0968307e4fcb7a35536bdceded76e1cf8349acd\",\"urls\":[\"bzz-raw://44e1e8c22362c4708a8c3362735f1465f5b05e2f7315e16c7010d694ce019d73\",\"dweb:/ipfs/QmWj9g8X1hxkXRre2kwkEjLBetjuzmSbWHD81bsSojnBkS\"]}},\"version\":1}", + "bytecode": "0x6080604052600380546001600160401b03191690553480156200002157600080fd5b5060405162001e5838038062001e58833981810160405260c08110156200004757600080fd5b508051602082015160408301516060840151608085015160a090950151939492939192909185858585858163ffffffff8116620000b65760405162461bcd60e51b815260040180806020018281038252602781526020018062001dcf6027913960400191505060405180910390fd5b60208163ffffffff1610620000fd5760405162461bcd60e51b815260040180806020018281038252602281526020018062001e166022913960400191505060405180910390fd5b6000805463ffffffff191663ffffffff83161781556002805460018181019092557f2fe54c60d3acabf3343a35b6eba15db4821b340f76e741e2249685ed4899af6c60008051602062001d8e833981519152909101819055815480830183559282905260008051602062001e388339815191529092018290555b60005463ffffffff9081169082161015620001eb57620001a182806001600160e01b03620002ba16565b60028054600181810190925560008051602062001d8e8339815191520182905580548082018255600082905260008051602062001e38833981519152018290559092500162000177565b506200020181806001600160e01b03620002ba16565b60046000015550506068805460ff1916600117905582620002545760405162461bcd60e51b815260040180806020018281038252602581526020018062001d696025913960400191505060405180910390fd5b606c80546001600160a01b03199081166001600160a01b0397881617909155606d8054821695871695909517909455606e8054851691861691909117905550606955606f805490911691831691909117905560c8840460705550620004a7945050505050565b600060008051602062001df6833981519152831062000320576040805162461bcd60e51b815260206004820181905260248201527f5f6c6566742073686f756c6420626520696e7369646520746865206669656c64604482015290519081900360640190fd5b60008051602062001df683398151915282106200036f5760405162461bcd60e51b815260040180806020018281038252602181526020018062001dae6021913960400191505060405180910390fd5b6040805163f47d33b560e01b81526004810185905260006024820181905282518693919273__Hasher________________________________9263f47d33b592604480840193829003018186803b158015620003ca57600080fd5b505af4158015620003df573d6000803e3d6000fd5b505050506040513d6040811015620003f657600080fd5b508051602090910151909250905060008051602062001df6833981519152848308915073__Hasher________________________________63f47d33b583836040518363ffffffff1660e01b81526004018083815260200182815260200192505050604080518083038186803b1580156200047057600080fd5b505af415801562000485573d6000803e3d6000fd5b505050506040513d60408110156200049c57600080fd5b505195945050505050565b6118b280620004b76000396000f3fe6080604052600436106101815760003560e01c80639fa12d0b116100d1578063d0fb02031161008a578063ec73295911610064578063ec732959146105c8578063f178e47c146105dd578063fc0c546a14610607578063fc7e9c6f1461061c57610181565b8063d0fb02031461055f578063e5285dcc14610574578063e82955881461059e57610181565b80639fa12d0b1461040e578063b0e21e8a146104d9578063b214faa5146104ee578063ba70f7571461050b578063c2b40ae414610520578063cd87a3b41461054a57610181565b80634ecf518b1161013e578063839df94511610118578063839df945146103875780638bca6d16146103b157806390eeb02b146103c657806397fc007c146103db57610181565b80634ecf518b1461031a578063570ca735146103485780636d9833e31461035d57610181565b806306394c9b1461018657806317cc915c146101bb57806321a0adb6146101f95780632b7ac3f31461029257806338bf282e146102c3578063414a37ba14610305575b600080fd5b34801561019257600080fd5b506101b9600480360360208110156101a957600080fd5b50356001600160a01b0316610631565b005b3480156101c757600080fd5b506101e5600480360360208110156101de57600080fd5b503561069c565b604080519115158252519081900360200190f35b6101b9600480360360e081101561020f57600080fd5b810190602081018135600160201b81111561022957600080fd5b82018360208201111561023b57600080fd5b803590602001918460018302840111600160201b8311171561025c57600080fd5b91935091508035906020810135906001600160a01b03604082013581169160608101359091169060808101359060a001356106b1565b34801561029e57600080fd5b506102a7610a70565b604080516001600160a01b039092168252519081900360200190f35b3480156102cf57600080fd5b506102f3600480360360408110156102e657600080fd5b5080359060200135610a7f565b60408051918252519081900360200190f35b34801561031157600080fd5b506102f3610c60565b34801561032657600080fd5b5061032f610c72565b6040805163ffffffff9092168252519081900360200190f35b34801561035457600080fd5b506102a7610c7e565b34801561036957600080fd5b506101e56004803603602081101561038057600080fd5b5035610c8d565b34801561039357600080fd5b506101e5600480360360208110156103aa57600080fd5b5035610d00565b3480156103bd57600080fd5b506102f3610d15565b3480156103d257600080fd5b5061032f610d1b565b3480156103e757600080fd5b506101b9600480360360208110156103fe57600080fd5b50356001600160a01b0316610d27565b34801561041a57600080fd5b506104896004803603602081101561043157600080fd5b810190602081018135600160201b81111561044b57600080fd5b82018360208201111561045d57600080fd5b803590602001918460208302840111600160201b8311171561047e57600080fd5b509092509050610d92565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156104c55781810151838201526020016104ad565b505050509050019250505060405180910390f35b3480156104e557600080fd5b506102f3610e1a565b6101b96004803603602081101561050457600080fd5b5035610e20565b34801561051757600080fd5b506102f3610f4d565b34801561052c57600080fd5b506102f36004803603602081101561054357600080fd5b5035610f6d565b34801561055657600080fd5b5061032f610f81565b34801561056b57600080fd5b506102a7610f86565b34801561058057600080fd5b506101e56004803603602081101561059757600080fd5b5035610f95565b3480156105aa57600080fd5b506102f3600480360360208110156105c157600080fd5b5035610faa565b3480156105d457600080fd5b506102f3610fc8565b3480156105e957600080fd5b506102f36004803603602081101561060057600080fd5b5035610fec565b34801561061357600080fd5b506102a7610ff9565b34801561062857600080fd5b5061032f611008565b606e546001600160a01b0316331461067a5760405162461bcd60e51b81526004018080602001828103825260258152602001806118596025913960400191505060405180910390fd5b606e80546001600160a01b0319166001600160a01b0392909216919091179055565b606a6020526000908152604090205460ff1681565b60685460ff16610708576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6068805460ff19169055606954821115610769576040805162461bcd60e51b815260206004820152601a60248201527f4665652065786365656473207472616e736665722076616c7565000000000000604482015290519081900360640190fd5b6000858152606a602052604090205460ff16156107cd576040805162461bcd60e51b815260206004820152601f60248201527f546865206e6f746520686173206265656e20616c7265616479207370656e7400604482015290519081900360640190fd5b6107d686610c8d565b610827576040805162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742066696e6420796f7572206d65726b6c6520726f6f7400000000604482015290519081900360640190fd5b606c546040805160c08082018352898252602082018990526001600160a01b038881168385015287811660608401526080830187905260a08301869052925163695ef6f960e01b8152929093169263695ef6f9928c928c9290916004810191829160240190849080838360005b838110156108ac578181015183820152602001610894565b505050509050018281038252858582818152602001925080828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b1580156108fe57600080fd5b505af1158015610912573d6000803e3d6000fd5b505050506040513d602081101561092857600080fd5b5051610974576040805162461bcd60e51b815260206004820152601660248201527524b73b30b634b2103bb4ba34323930bb90383937b7b360511b604482015290519081900360640190fd5b6000858152606a6020908152604091829020805460ff19166001179055606d548251622fcfcb60e31b81529251610a0b9388938893889388936001600160a01b039092169263017e7e589260048082019391829003018186803b1580156109da57600080fd5b505afa1580156109ee573d6000803e3d6000fd5b505050506040513d6020811015610a0457600080fd5b505161101b565b604080516001600160a01b038681168252602082018890528183018590529151918516917fe9e508bad6d4c3227e881ca19068f099da81b5164dd6d62b2eaf1e8bc6c349319181900360600190a250506068805460ff19166001179055505050505050565b606c546001600160a01b031681565b60006000805160206117e88339815191528310610ae3576040805162461bcd60e51b815260206004820181905260248201527f5f6c6566742073686f756c6420626520696e7369646520746865206669656c64604482015290519081900360640190fd5b6000805160206117e88339815191528210610b2f5760405162461bcd60e51b81526004018080602001828103825260218152602001806117986021913960400191505060405180910390fd5b6040805163f47d33b560e01b81526004810185905260006024820181905282518693919273__Hasher________________________________9263f47d33b592604480840193829003018186803b158015610b8957600080fd5b505af4158015610b9d573d6000803e3d6000fd5b505050506040513d6040811015610bb357600080fd5b50805160209091015190925090506000805160206117e8833981519152848308915073__Hasher________________________________63f47d33b583836040518363ffffffff1660e01b81526004018083815260200182815260200192505050604080518083038186803b158015610c2b57600080fd5b505af4158015610c3f573d6000803e3d6000fd5b505050506040513d6040811015610c5557600080fd5b505195945050505050565b6000805160206117e883398151915281565b60005463ffffffff1681565b606e546001600160a01b031681565b600081610c9c57506000610cfb565b60035463ffffffff165b60048163ffffffff1660648110610cb957fe5b0154831415610ccc576001915050610cfb565b63ffffffff8116610cdb575060645b6003546000199091019063ffffffff80831691161415610ca65760009150505b919050565b606b6020526000908152604090205460ff1681565b60695481565b60035463ffffffff1681565b606e546001600160a01b03163314610d705760405162461bcd60e51b81526004018080602001828103825260258152602001806118596025913960400191505060405180910390fd5b606c80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518281526020808402820101909152606090828015610dbe578160200160208202803883390190505b50905060005b82811015610e1357610de7848483818110610ddb57fe5b90506020020135610f95565b15610e0b576001828281518110610dfa57fe5b911515602092830291909101909101525b600101610dc4565b5092915050565b60705481565b60685460ff16610e77576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6068805460ff191690556000818152606b602052604090205460ff1615610ecf5760405162461bcd60e51b81526004018080602001828103825260218152602001806118086021913960400191505060405180910390fd5b6000610eda8261114d565b6000838152606b60205260409020805460ff191660011790559050610efd6112e4565b6040805163ffffffff83168152426020820152815184927fa945e51eec50ab98c161376f0db4cf2aeba3ec92755fe2fcd388bdbbb80ff196928290030190a250506068805460ff19166001179055565b60035460009060049063ffffffff1660648110610f6657fe5b0154905090565b60048160648110610f7a57fe5b0154905081565b606481565b606d546001600160a01b031681565b6000908152606a602052604090205460ff1690565b60028181548110610fb757fe5b600091825260209091200154905081565b7f2fe54c60d3acabf3343a35b6eba15db4821b340f76e741e2249685ed4899af6c81565b60018181548110610fb757fe5b606f546001600160a01b031681565b600354600160201b900463ffffffff1681565b8134146110595760405162461bcd60e51b81526004018080602001828103825260308152602001806117416030913960400191505060405180910390fd5b6001600160a01b0381161580159061108e5761107d86607054866069540303611330565b61108982607054611330565b61109c565b61109c868560695403611330565b83156110ac576110ac8585611330565b8215611145576040516000906001600160a01b0388169085908381818185875af1925050503d80600081146110fd576040519150601f19603f3d011682016040523d82523d6000602084013e611102565b606091505b5050905080611143576040516001600160a01b0387169085156108fc029086906000818181858888f19350505050158015611141573d6000803e3d6000fd5b505b505b505050505050565b60035460008054909163ffffffff600160201b909104811691811660020a168114156111aa5760405162461bcd60e51b815260040180806020018281038252602f8152602001806116e8602f913960400191505060405180910390fd5b6003805463ffffffff600160201b80830482166001019091160267ffffffff000000001990911617905582600080805b60005463ffffffff9081169082161015611282576001851661123e5783925060028163ffffffff168154811061120c57fe5b906000526020600020015491508360018263ffffffff168154811061122d57fe5b600091825260209091200155611262565b60018163ffffffff168154811061125157fe5b906000526020600020015492508391505b61126c8383610a7f565b9350600263ffffffff86160494506001016111da565b5060035460649063ffffffff908116600101166003805463ffffffff19169290910663ffffffff9081169290921790819055849160049116606481106112c457fe5b01555050600354600160201b900463ffffffff1660001901949350505050565b34156113215760405162461bcd60e51b81526004018080602001828103825260308152602001806118296030913960400191505060405180910390fd5b61132e3330606954611501565b565b606f54604080516001600160a01b038581166024830152604480830186905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000956060959316939282918083835b602083106113ad5780518252601f19909201916020918201910161138e565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461140f576040519150601f19603f3d011682016040523d82523d6000602084013e611414565b606091505b50915091508161145f576040805162461bcd60e51b81526020600482015260116024820152706e6f7420656e6f75676820746f6b656e7360781b604482015290519081900360640190fd5b8051156114fb5780516020146114a65760405162461bcd60e51b815260040180806020018281038252602a815260200180611717602a913960400191505060405180910390fd5b8080602001905160208110156114bb57600080fd5b50519150816114fb5760405162461bcd60e51b81526004018080602001828103825260278152602001806117716027913960400191505060405180910390fd5b50505050565b606f54604080516001600160a01b0386811660248301528581166044830152606480830186905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b178152925182516000956060959316939282918083835b602083106115865780518252601f199092019160209182019101611567565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146115e8576040519150601f19603f3d011682016040523d82523d6000602084013e6115ed565b606091505b509150915081611644576040805162461bcd60e51b815260206004820152601960248201527f6e6f7420656e6f75676820616c6c6f77656420746f6b656e7300000000000000604482015290519081900360640190fd5b8051156116e057805160201461168b5760405162461bcd60e51b815260040180806020018281038252602a815260200180611717602a913960400191505060405180910390fd5b8080602001905160208110156116a057600080fd5b50519150816116e05760405162461bcd60e51b815260040180806020018281038252602f8152602001806117b9602f913960400191505060405180910390fd5b505050505056fe4d65726b6c6520747265652069732066756c6c2e204e6f206d6f7265206c656166732063616e20626520616464656464617461206c656e6774682073686f756c64206265206569746865722030206f72203332206279746573496e636f727265637420726566756e6420616d6f756e742072656365697665642062792074686520636f6e74726163746e6f7420656e6f75676820746f6b656e732e20546f6b656e2072657475726e732066616c73652e5f72696768742073686f756c6420626520696e7369646520746865206669656c646e6f7420656e6f75676820616c6c6f77656420746f6b656e732e20546f6b656e2072657475726e732066616c73652e30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000154686520636f6d6d69746d656e7420686173206265656e207375626d69747465644554482076616c756520697320737570706f73656420746f206265203020666f7220455243323020696e7374616e63654f6e6c79206f70657261746f722063616e2063616c6c20746869732066756e6374696f6e2ea265627a7a72315820c90af910ddfda5b33dab20c369a888b349922f695f9eee0e2eb3e0273adc895364736f6c6343000511003264656e6f6d696e6174696f6e2073686f756c642062652067726561746572207468616e2030405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace5f72696768742073686f756c6420626520696e7369646520746865206669656c645f747265654c6576656c732073686f756c642062652067726561746572207468616e207a65726f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000015f747265654c6576656c732073686f756c64206265206c657373207468616e203332b10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6", + "deployedBytecode": "0x6080604052600436106101815760003560e01c80639fa12d0b116100d1578063d0fb02031161008a578063ec73295911610064578063ec732959146105c8578063f178e47c146105dd578063fc0c546a14610607578063fc7e9c6f1461061c57610181565b8063d0fb02031461055f578063e5285dcc14610574578063e82955881461059e57610181565b80639fa12d0b1461040e578063b0e21e8a146104d9578063b214faa5146104ee578063ba70f7571461050b578063c2b40ae414610520578063cd87a3b41461054a57610181565b80634ecf518b1161013e578063839df94511610118578063839df945146103875780638bca6d16146103b157806390eeb02b146103c657806397fc007c146103db57610181565b80634ecf518b1461031a578063570ca735146103485780636d9833e31461035d57610181565b806306394c9b1461018657806317cc915c146101bb57806321a0adb6146101f95780632b7ac3f31461029257806338bf282e146102c3578063414a37ba14610305575b600080fd5b34801561019257600080fd5b506101b9600480360360208110156101a957600080fd5b50356001600160a01b0316610631565b005b3480156101c757600080fd5b506101e5600480360360208110156101de57600080fd5b503561069c565b604080519115158252519081900360200190f35b6101b9600480360360e081101561020f57600080fd5b810190602081018135600160201b81111561022957600080fd5b82018360208201111561023b57600080fd5b803590602001918460018302840111600160201b8311171561025c57600080fd5b91935091508035906020810135906001600160a01b03604082013581169160608101359091169060808101359060a001356106b1565b34801561029e57600080fd5b506102a7610a70565b604080516001600160a01b039092168252519081900360200190f35b3480156102cf57600080fd5b506102f3600480360360408110156102e657600080fd5b5080359060200135610a7f565b60408051918252519081900360200190f35b34801561031157600080fd5b506102f3610c60565b34801561032657600080fd5b5061032f610c72565b6040805163ffffffff9092168252519081900360200190f35b34801561035457600080fd5b506102a7610c7e565b34801561036957600080fd5b506101e56004803603602081101561038057600080fd5b5035610c8d565b34801561039357600080fd5b506101e5600480360360208110156103aa57600080fd5b5035610d00565b3480156103bd57600080fd5b506102f3610d15565b3480156103d257600080fd5b5061032f610d1b565b3480156103e757600080fd5b506101b9600480360360208110156103fe57600080fd5b50356001600160a01b0316610d27565b34801561041a57600080fd5b506104896004803603602081101561043157600080fd5b810190602081018135600160201b81111561044b57600080fd5b82018360208201111561045d57600080fd5b803590602001918460208302840111600160201b8311171561047e57600080fd5b509092509050610d92565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156104c55781810151838201526020016104ad565b505050509050019250505060405180910390f35b3480156104e557600080fd5b506102f3610e1a565b6101b96004803603602081101561050457600080fd5b5035610e20565b34801561051757600080fd5b506102f3610f4d565b34801561052c57600080fd5b506102f36004803603602081101561054357600080fd5b5035610f6d565b34801561055657600080fd5b5061032f610f81565b34801561056b57600080fd5b506102a7610f86565b34801561058057600080fd5b506101e56004803603602081101561059757600080fd5b5035610f95565b3480156105aa57600080fd5b506102f3600480360360208110156105c157600080fd5b5035610faa565b3480156105d457600080fd5b506102f3610fc8565b3480156105e957600080fd5b506102f36004803603602081101561060057600080fd5b5035610fec565b34801561061357600080fd5b506102a7610ff9565b34801561062857600080fd5b5061032f611008565b606e546001600160a01b0316331461067a5760405162461bcd60e51b81526004018080602001828103825260258152602001806118596025913960400191505060405180910390fd5b606e80546001600160a01b0319166001600160a01b0392909216919091179055565b606a6020526000908152604090205460ff1681565b60685460ff16610708576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6068805460ff19169055606954821115610769576040805162461bcd60e51b815260206004820152601a60248201527f4665652065786365656473207472616e736665722076616c7565000000000000604482015290519081900360640190fd5b6000858152606a602052604090205460ff16156107cd576040805162461bcd60e51b815260206004820152601f60248201527f546865206e6f746520686173206265656e20616c7265616479207370656e7400604482015290519081900360640190fd5b6107d686610c8d565b610827576040805162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742066696e6420796f7572206d65726b6c6520726f6f7400000000604482015290519081900360640190fd5b606c546040805160c08082018352898252602082018990526001600160a01b038881168385015287811660608401526080830187905260a08301869052925163695ef6f960e01b8152929093169263695ef6f9928c928c9290916004810191829160240190849080838360005b838110156108ac578181015183820152602001610894565b505050509050018281038252858582818152602001925080828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b1580156108fe57600080fd5b505af1158015610912573d6000803e3d6000fd5b505050506040513d602081101561092857600080fd5b5051610974576040805162461bcd60e51b815260206004820152601660248201527524b73b30b634b2103bb4ba34323930bb90383937b7b360511b604482015290519081900360640190fd5b6000858152606a6020908152604091829020805460ff19166001179055606d548251622fcfcb60e31b81529251610a0b9388938893889388936001600160a01b039092169263017e7e589260048082019391829003018186803b1580156109da57600080fd5b505afa1580156109ee573d6000803e3d6000fd5b505050506040513d6020811015610a0457600080fd5b505161101b565b604080516001600160a01b038681168252602082018890528183018590529151918516917fe9e508bad6d4c3227e881ca19068f099da81b5164dd6d62b2eaf1e8bc6c349319181900360600190a250506068805460ff19166001179055505050505050565b606c546001600160a01b031681565b60006000805160206117e88339815191528310610ae3576040805162461bcd60e51b815260206004820181905260248201527f5f6c6566742073686f756c6420626520696e7369646520746865206669656c64604482015290519081900360640190fd5b6000805160206117e88339815191528210610b2f5760405162461bcd60e51b81526004018080602001828103825260218152602001806117986021913960400191505060405180910390fd5b6040805163f47d33b560e01b81526004810185905260006024820181905282518693919273__Hasher________________________________9263f47d33b592604480840193829003018186803b158015610b8957600080fd5b505af4158015610b9d573d6000803e3d6000fd5b505050506040513d6040811015610bb357600080fd5b50805160209091015190925090506000805160206117e8833981519152848308915073__Hasher________________________________63f47d33b583836040518363ffffffff1660e01b81526004018083815260200182815260200192505050604080518083038186803b158015610c2b57600080fd5b505af4158015610c3f573d6000803e3d6000fd5b505050506040513d6040811015610c5557600080fd5b505195945050505050565b6000805160206117e883398151915281565b60005463ffffffff1681565b606e546001600160a01b031681565b600081610c9c57506000610cfb565b60035463ffffffff165b60048163ffffffff1660648110610cb957fe5b0154831415610ccc576001915050610cfb565b63ffffffff8116610cdb575060645b6003546000199091019063ffffffff80831691161415610ca65760009150505b919050565b606b6020526000908152604090205460ff1681565b60695481565b60035463ffffffff1681565b606e546001600160a01b03163314610d705760405162461bcd60e51b81526004018080602001828103825260258152602001806118596025913960400191505060405180910390fd5b606c80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518281526020808402820101909152606090828015610dbe578160200160208202803883390190505b50905060005b82811015610e1357610de7848483818110610ddb57fe5b90506020020135610f95565b15610e0b576001828281518110610dfa57fe5b911515602092830291909101909101525b600101610dc4565b5092915050565b60705481565b60685460ff16610e77576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6068805460ff191690556000818152606b602052604090205460ff1615610ecf5760405162461bcd60e51b81526004018080602001828103825260218152602001806118086021913960400191505060405180910390fd5b6000610eda8261114d565b6000838152606b60205260409020805460ff191660011790559050610efd6112e4565b6040805163ffffffff83168152426020820152815184927fa945e51eec50ab98c161376f0db4cf2aeba3ec92755fe2fcd388bdbbb80ff196928290030190a250506068805460ff19166001179055565b60035460009060049063ffffffff1660648110610f6657fe5b0154905090565b60048160648110610f7a57fe5b0154905081565b606481565b606d546001600160a01b031681565b6000908152606a602052604090205460ff1690565b60028181548110610fb757fe5b600091825260209091200154905081565b7f2fe54c60d3acabf3343a35b6eba15db4821b340f76e741e2249685ed4899af6c81565b60018181548110610fb757fe5b606f546001600160a01b031681565b600354600160201b900463ffffffff1681565b8134146110595760405162461bcd60e51b81526004018080602001828103825260308152602001806117416030913960400191505060405180910390fd5b6001600160a01b0381161580159061108e5761107d86607054866069540303611330565b61108982607054611330565b61109c565b61109c868560695403611330565b83156110ac576110ac8585611330565b8215611145576040516000906001600160a01b0388169085908381818185875af1925050503d80600081146110fd576040519150601f19603f3d011682016040523d82523d6000602084013e611102565b606091505b5050905080611143576040516001600160a01b0387169085156108fc029086906000818181858888f19350505050158015611141573d6000803e3d6000fd5b505b505b505050505050565b60035460008054909163ffffffff600160201b909104811691811660020a168114156111aa5760405162461bcd60e51b815260040180806020018281038252602f8152602001806116e8602f913960400191505060405180910390fd5b6003805463ffffffff600160201b80830482166001019091160267ffffffff000000001990911617905582600080805b60005463ffffffff9081169082161015611282576001851661123e5783925060028163ffffffff168154811061120c57fe5b906000526020600020015491508360018263ffffffff168154811061122d57fe5b600091825260209091200155611262565b60018163ffffffff168154811061125157fe5b906000526020600020015492508391505b61126c8383610a7f565b9350600263ffffffff86160494506001016111da565b5060035460649063ffffffff908116600101166003805463ffffffff19169290910663ffffffff9081169290921790819055849160049116606481106112c457fe5b01555050600354600160201b900463ffffffff1660001901949350505050565b34156113215760405162461bcd60e51b81526004018080602001828103825260308152602001806118296030913960400191505060405180910390fd5b61132e3330606954611501565b565b606f54604080516001600160a01b038581166024830152604480830186905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000956060959316939282918083835b602083106113ad5780518252601f19909201916020918201910161138e565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461140f576040519150601f19603f3d011682016040523d82523d6000602084013e611414565b606091505b50915091508161145f576040805162461bcd60e51b81526020600482015260116024820152706e6f7420656e6f75676820746f6b656e7360781b604482015290519081900360640190fd5b8051156114fb5780516020146114a65760405162461bcd60e51b815260040180806020018281038252602a815260200180611717602a913960400191505060405180910390fd5b8080602001905160208110156114bb57600080fd5b50519150816114fb5760405162461bcd60e51b81526004018080602001828103825260278152602001806117716027913960400191505060405180910390fd5b50505050565b606f54604080516001600160a01b0386811660248301528581166044830152606480830186905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b178152925182516000956060959316939282918083835b602083106115865780518252601f199092019160209182019101611567565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146115e8576040519150601f19603f3d011682016040523d82523d6000602084013e6115ed565b606091505b509150915081611644576040805162461bcd60e51b815260206004820152601960248201527f6e6f7420656e6f75676820616c6c6f77656420746f6b656e7300000000000000604482015290519081900360640190fd5b8051156116e057805160201461168b5760405162461bcd60e51b815260040180806020018281038252602a815260200180611717602a913960400191505060405180910390fd5b8080602001905160208110156116a057600080fd5b50519150816116e05760405162461bcd60e51b815260040180806020018281038252602f8152602001806117b9602f913960400191505060405180910390fd5b505050505056fe4d65726b6c6520747265652069732066756c6c2e204e6f206d6f7265206c656166732063616e20626520616464656464617461206c656e6774682073686f756c64206265206569746865722030206f72203332206279746573496e636f727265637420726566756e6420616d6f756e742072656365697665642062792074686520636f6e74726163746e6f7420656e6f75676820746f6b656e732e20546f6b656e2072657475726e732066616c73652e5f72696768742073686f756c6420626520696e7369646520746865206669656c646e6f7420656e6f75676820616c6c6f77656420746f6b656e732e20546f6b656e2072657475726e732066616c73652e30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000154686520636f6d6d69746d656e7420686173206265656e207375626d69747465644554482076616c756520697320737570706f73656420746f206265203020666f7220455243323020696e7374616e63654f6e6c79206f70657261746f722063616e2063616c6c20746869732066756e6374696f6e2ea265627a7a72315820c90af910ddfda5b33dab20c369a888b349922f695f9eee0e2eb3e0273adc895364736f6c63430005110032", + "sourceMap": "805:2570:0:-;;;1430:34:1;;;-1:-1:-1;;;;;;1468:27:1;;;897:334:0;5:2:-1;;;;30:1;27;20:12;5:2;897:334:0;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;897:334:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1646:15:1;;;1638:67;;;;-1:-1:-1;;;1638:67:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1733:2;1719:11;:16;;;1711:63;;;;-1:-1:-1;;;1711:63:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1780:6;:20;;-1:-1:-1;;1780:20:1;;;;;;;1854:5;27:10:-1;;-1:-1;23:18;;;45:23;;;1088:77:1;-1:-1:-1;;;;;;;;;;;1854:23:1;;;;;;27:10:-1;;23:18;;;45:23;;1883:32:1;;;;-1:-1:-1;;;;;;;;;;;1883:32:1;;;;;;1922:175;1945:6;;;;;;1941:10;;;;1922:175;;;1980:39;1994:11;;-1:-1:-1;;;;;1980:13:1;:39;:::i;:::-;2027:5;27:10:-1;;39:1;23:18;;;45:23;;;-1:-1;;;;;;;;;;;2027:23:1;;;;27:10:-1;;23:18;;;45:23;;-1:-1;2058:32:1;;;-1:-1:-1;;;;;;;;;;;2058:32:1;;;;1966:53;;-1:-1:-1;1953:3:1;1922:175;;;-1:-1:-1;2114:39:1;2128:11;;-1:-1:-1;;;;;2114:13:1;:39;:::i;:::-;2103:5;2109:1;2103:8;:50;-1:-1:-1;;1421:11:3;:18;;-1:-1:-1;;1421:18:3;1435:4;1421:18;;;1645:17:2;1637:67;;;;-1:-1:-1;;;1637:67:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1710:8;:20;;-1:-1:-1;;;;;;1710:20:2;;;-1:-1:-1;;;;;1710:20:2;;;;;;;1736:10;:24;;;;;;;;;;;;;;1766:8;:20;;;;;;;;;;;;;-1:-1:-1;1792:12:2;:28;1157:5:0;:14;;;;;;;;;;;;;;1223:3;1207:13;:19;1193:11;:33;-1:-1:-1;805:2570:0;;-1:-1:-1;;;;;805:2570:0;2230:445:1;2305:7;-1:-1:-1;;;;;;;;;;;2328:27:1;;2320:72;;;;;-1:-1:-1;;;2320:72:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2406:28:1;;2398:74;;;;-1:-1:-1;;;2398:74:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2538:23;;;-1:-1:-1;;;2538:23:1;;;;;;;;2478:9;2538:23;;;;;;;;2498:5;;2478:9;;2538:6;;:17;;:23;;;;;;;;;;:6;:23;;;5:2:-1;;;;30:1;27;20:12;5:2;2538:23:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2538:23:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2538:23:1;;;;;;;;;-1:-1:-1;2538:23:1;-1:-1:-1;;;;;;;;;;;;2589:6:1;2578:1;2571:38;2567:42;;2624:6;:17;2642:1;2645;2624:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2624:23:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2624:23:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2624:23:1;;2230:445;-1:-1:-1;;;;;2230:445:1:o;805:2570:0:-;;;;;;;", + "deployedSourceMap": "805:2570:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4814:102:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4814:102:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4814:102:2;-1:-1:-1;;;;;4814:102:2;;:::i;:::-;;412:47;;8:9:-1;5:2;;;30:1;27;20:12;5:2;412:47:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;412:47:2;;:::i;:::-;;;;;;;;;;;;;;;;;;2893:801;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;2893:801:2;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;2893:801:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2893:801:2;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2893:801:2;;-1:-1:-1;2893:801:2;-1:-1:-1;2893:801:2;;;;;;;;-1:-1:-1;;;;;2893:801:2;;;;;;;;;;;;;;;;;;;;;;;;:::i;601:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;601:25:2;;;:::i;:::-;;;;-1:-1:-1;;;;;601:25:2;;;;;;;;;;;;;;2230:445:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2230:445:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2230:445:1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;933:114;;8:9:-1;5:2;;;30:1;27;20:12;5:2;933:114:1;;;:::i;1209:20::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1209:20:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;819:23:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;819:23:2;;;:::i;3553:342:1:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3553:342:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3553:342:1;;:::i;554:43:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;554:43:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;554:43:2;;:::i;381:27::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;381:27:2;;;:::i;1430:34:1:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1430:34:1;;;:::i;4651:113:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4651:113:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4651:113:2;-1:-1:-1;;;;;4651:113:2;;:::i;4128:293::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4128:293:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4128:293:2;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;4128:293:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4128:293:2;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;4128:293:2;;-1:-1:-1;4128:293:2;-1:-1:-1;4128:293:2;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4128:293:2;;;;;;;;;;;;;;;;;866:26:0;;8:9:-1;5:2;;;30:1;27;20:12;5:2;866:26:0;;;:::i;2073:324:2:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2073:324:2;;:::i;3941:93:1:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3941:93:1;;;:::i;1549:39::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1549:39:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1549:39:1;;:::i;1499:46::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1499:46:1;;;:::i;630:29:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;630:29:2;;;:::i;3951:116::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3951:116:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3951:116:2;;:::i;1404:22:1:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1404:22:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1404:22:1;;:::i;1051:114::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1051:114:1;;;:::i;1369:31::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1369:31:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1369:31:1;;:::i;842:20:0:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;842:20:0;;;:::i;1468:27:1:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1468:27:1;;;:::i;4814:102:2:-;896:8;;-1:-1:-1;;;;;896:8:2;882:10;:22;874:72;;;;-1:-1:-1;;;874:72:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4888:8;:23;;-1:-1:-1;;;;;;4888:23:2;-1:-1:-1;;;;;4888:23:2;;;;;;;;;;4814:102::o;412:47::-;;;;;;;;;;;;;;;:::o;2893:801::-;1934:11:3;;;;1926:55;;;;;-1:-1:-1;;;1926:55:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;2056:11;:19;;-1:-1:-1;;2056:19:3;;;3110:12:2;;3102:20;;;3094:59;;;;;-1:-1:-1;;;3094:59:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;3168:31;;;;:15;:31;;;;;;;;3167:32;3159:76;;;;;-1:-1:-1;;;3159:76:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;3249:18;3261:5;3249:11;:18::i;:::-;3241:59;;;;;-1:-1:-1;;;3241:59:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;3347:8;;:126;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3418:19:2;;;3347:126;;;;3439:17;;;3347:126;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3347:126:2;;:8;;;;;:20;;3368:6;;;;3347:126;;;;;;;;;;;;;;;;:8;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3347:126:2;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;3347:126:2;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3347:126:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3347:126:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3347:126:2;3339:161;;;;;-1:-1:-1;;;3339:161:2;;;;;;;;;;;;-1:-1:-1;;;3339:161:2;;;;;;;;;;;;;;;3507:31;;;;:15;:31;;;;;;;;;:38;;-1:-1:-1;;3507:38:2;3541:4;3507:38;;;3605:10;;:18;;-1:-1:-1;;;3605:18:2;;;;3551:73;;3568:10;;3580:8;;3590:4;;3596:7;;-1:-1:-1;;;;;3605:10:2;;;;:16;;:18;;;;;;;;;;;:10;:18;;;5:2:-1;;;;30:1;27;20:12;5:2;3605:18:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3605:18:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3605:18:2;3551:16;:73::i;:::-;3635:54;;;-1:-1:-1;;;;;3635:54:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2230:11:3;:18;;-1:-1:-1;;2230:18:3;2244:4;2230:18;;;-1:-1:-1;;;;;;2893:801:2:o;601:25::-;;;-1:-1:-1;;;;;601:25:2;;:::o;2230:445:1:-;2305:7;-1:-1:-1;;;;;;;;;;;2328:27:1;;2320:72;;;;;-1:-1:-1;;;2320:72:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2406:28:1;;2398:74;;;;-1:-1:-1;;;2398:74:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2538:23;;;-1:-1:-1;;;2538:23:1;;;;;;;;2478:9;2538:23;;;;;;;;2498:5;;2478:9;;2538:6;;:17;;:23;;;;;;;;;;:6;:23;;;5:2:-1;;;;30:1;27;20:12;5:2;2538:23:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2538:23:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2538:23:1;;;;;;;;;-1:-1:-1;2538:23:1;-1:-1:-1;;;;;;;;;;;;2589:6:1;2578:1;2571:38;2567:42;;2624:6;:17;2642:1;2645;2624:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2624:23:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2624:23:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2624:23:1;;2230:445;-1:-1:-1;;;;;2230:445:1:o;933:114::-;-1:-1:-1;;;;;;;;;;;933:114:1;:::o;1209:20::-;;;;;;:::o;819:23:2:-;;;-1:-1:-1;;;;;819:23:2;;:::o;3553:342:1:-;3609:4;3625:10;3621:43;;-1:-1:-1;3652:5:1;3645:12;;3621:43;3680:16;;;;3702:171;3726:5;3732:1;3726:8;;;;;;;;;;;3717:5;:17;3713:53;;;3753:4;3746:11;;;;;3713:53;3777:6;;;3773:52;;-1:-1:-1;1542:3:1;3773:52;3855:16;;-1:-1:-1;;3832:3:1;;;;3855:16;3850:21;;;3855:16;;3850:21;;3702:171;;3885:5;3878:12;;;3553:342;;;;:::o;554:43:2:-;;;;;;;;;;;;;;;:::o;381:27::-;;;;:::o;1430:34:1:-;;;;;;:::o;4651:113:2:-;896:8;;-1:-1:-1;;;;;896:8:2;882:10;:22;874:72;;;;-1:-1:-1;;;874:72:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4725:8;:34;;-1:-1:-1;;;;;;4725:34:2;-1:-1:-1;;;;;4725:34:2;;;;;;;;;;4651:113::o;4128:293::-;4244:35;;;;;;;;;;;;;;;;4209:19;;4255:16;4244:35;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;4244:35:2;-1:-1:-1;4236:43:2;-1:-1:-1;4289:6:2;4285:132;4301:27;;;4285:132;;;4347:28;4355:16;;4372:1;4355:19;;;;;;;;;;;;;4347:7;:28::i;:::-;4343:68;;;4398:4;4387:5;4393:1;4387:8;;;;;;;;:15;;;:8;;;;;;;;;;;:15;4343:68;4330:3;;4285:132;;;;4128:293;;;;:::o;866:26:0:-;;;;:::o;2073:324:2:-;1934:11:3;;;;1926:55;;;;;-1:-1:-1;;;1926:55:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;2056:11;:19;;-1:-1:-1;;2056:19:3;;;2070:5;2156:24:2;;;:11;:24;;;;;;2056:19:3;2156:24:2;2155:25;2147:71;;;;-1:-1:-1;;;2147:71:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2225:20;2248;2256:11;2248:7;:20::i;:::-;2274:24;;;;:11;:24;;;;;:31;;-1:-1:-1;;2274:31:2;2301:4;2274:31;;;2225:43;-1:-1:-1;2311:17:2;:15;:17::i;:::-;2340:52;;;;;;;;2376:15;2340:52;;;;;;2348:11;;2340:52;;;;;;;;-1:-1:-1;;2230:11:3;:18;;-1:-1:-1;;2230:18:3;2244:4;2230:18;;;2073:324:2:o;3941:93:1:-;4012:16;;3984:7;;4006:5;;4012:16;;4006:23;;;;;;;;;3999:30;;3941:93;:::o;1549:39::-;;;;;;;;;;;;;-1:-1:-1;1549:39:1;:::o;1499:46::-;1542:3;1499:46;:::o;630:29:2:-;;;-1:-1:-1;;;;;630:29:2;;:::o;3951:116::-;4012:4;4031:31;;;:15;:31;;;;;;;;;3951:116::o;1404:22:1:-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1404:22:1;:::o;1051:114::-;1088:77;1051:114;:::o;1369:31::-;;;;;;;;;;842:20:0;;;-1:-1:-1;;;;;842:20:0;;:::o;1468:27:1:-;;;-1:-1:-1;;;1468:27:1;;;;;:::o;1430:801:0:-;1601:7;1588:9;:20;1580:81;;;;-1:-1:-1;;;1580:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1681:20:0;;;;;;1707:226;;1726:73;1745:10;1787:11;;1772:12;1757;;:27;:41;1726:18;:73::i;:::-;1807:39;1826:6;1834:11;;1807:18;:39::i;:::-;1707:226;;;1867:59;1886:10;1913:12;1898;;:27;1867:18;:59::i;:::-;1943:16;;1939:79;;1969:42;1988:8;1998:12;1969:18;:42::i;:::-;2028:11;;2024:203;;2068:34;;2050:12;;-1:-1:-1;;;;;2068:15:0;;;2090:7;;2050:12;2068:34;2050:12;2068:34;2090:7;2068:15;:34;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2049:53:0;;;2115:7;2110:111;;2186:26;;-1:-1:-1;;;;;2186:17:0;;;:26;;;;;2204:7;;2186:26;;;;2204:7;2186:17;:26;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2186:26:0;2110:111;2024:203;;1430:801;;;;;;:::o;2679:802:1:-;2770:9;;2728:12;2820:6;;2728:12;;2770:9;-1:-1:-1;;;2770:9:1;;;;;;2820:6;;2816:1;2809:17;2793:33;;;;2785:93;;;;-1:-1:-1;;;2785:93:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2884:9;:14;;;-1:-1:-1;;;2884:14:1;;;;;2897:1;2884:14;;;;;-1:-1:-1;;2884:14:1;;;;;;2931:5;-1:-1:-1;;;2980:355:1;3003:6;;;;;;2999:10;;;;2980:355;;;3028:16;;;3024:225;;3068:16;3061:23;;3102:5;3108:1;3102:8;;;;;;;;;;;;;;;;;;3094:16;;3141;3121:14;3136:1;3121:17;;;;;;;;;;;;;;;;;;;:36;3024:225;;;3189:14;3204:1;3189:17;;;;;;;;;;;;;;;;;;3182:24;;3224:16;3216:24;;3024:225;3276:26;3290:4;3296:5;3276:13;:26::i;:::-;3257:45;-1:-1:-1;3327:1:1;3311:17;;;;;-1:-1:-1;3011:3:1;;2980:355;;;-1:-1:-1;3361:16:1;;1542:3;;3360:42;3361:16;;;;:20;3360:42;3341:16;:61;;-1:-1:-1;;3341:61:1;3360:42;;;;3341:61;;;;;;;;;;;;3434:16;;3408:5;;3414:16;3408:23;;;;;;;;:42;-1:-1:-1;;3463:9:1;;-1:-1:-1;;;3463:9:1;;;;-1:-1:-1;;3463:13:1;;2679:802;-1:-1:-1;;;;2679:802:1:o;1235:191:0:-;1285:9;:14;1277:75;;;;-1:-1:-1;;;1277:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1358:63;1381:10;1401:4;1408:12;;1358:22;:63::i;:::-;1235:191::o;2829:544::-;2938:5;;2949:63;;;-1:-1:-1;;;;;2949:63:0;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;2949:63:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2938:75:0;;;;2903:12;;2917:17;;2938:5;;;2949:63;2938:75;;;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;2938:75:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2902:111:0;;;;3027:7;3019:37;;;;;-1:-1:-1;;;3019:37:0;;;;;;;;;;;;-1:-1:-1;;;3019:37:0;;;;;;;;;;;;;;;3156:11;;:15;3152:217;;3189:4;:11;3204:2;3189:17;3181:72;;;;-1:-1:-1;;;3181:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3282:4;3271:24;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3271:24:0;;-1:-1:-1;3271:24:0;3303:59;;;;-1:-1:-1;;;3303:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2829:544;;;;:::o;2235:590::-;2363:5;;2374:74;;;-1:-1:-1;;;;;2374:74:0;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;2374:74:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2363:86:0;;;;2328:12;;2342:17;;2363:5;;;2374:74;2363:86;;;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;2363:86:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2327:122:0;;;;2463:7;2455:45;;;;;-1:-1:-1;;;2455:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;2600:11;;:15;2596:225;;2633:4;:11;2648:2;2633:17;2625:72;;;;-1:-1:-1;;;2625:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2726:4;2715:24;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2715:24:0;;-1:-1:-1;2715:24:0;2747:67;;;;-1:-1:-1;;;2747:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2235:590;;;;;:::o", + "source": "// https://tornado.cash\n/*\n* d888888P dP a88888b. dP\n* 88 88 d8' `88 88\n* 88 .d8888b. 88d888b. 88d888b. .d8888b. .d888b88 .d8888b. 88 .d8888b. .d8888b. 88d888b.\n* 88 88' `88 88' `88 88' `88 88' `88 88' `88 88' `88 88 88' `88 Y8ooooo. 88' `88\n* 88 88. .88 88 88 88 88. .88 88. .88 88. .88 dP Y8. .88 88. .88 88 88 88\n* dP `88888P' dP dP dP `88888P8 `88888P8 `88888P' 88 Y88888P' `88888P8 `88888P' dP dP\n* ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo\n*/\n\npragma solidity 0.5.17;\n\nimport \"./Tornado.sol\";\n\ncontract ERC20Tornado is Tornado {\n address public token;\n uint256 public protocolFee;\n\n constructor(\n IVerifier _verifier,\n IFeeManager _feeManager,\n uint256 _denomination,\n uint32 _merkleTreeHeight,\n address _operator,\n address _token\n ) Tornado(_verifier, _feeManager, _denomination, _merkleTreeHeight, _operator) public {\n token = _token;\n // 0.5% fee\n protocolFee = _denomination / 200;\n }\n\n function _processDeposit() internal {\n require(msg.value == 0, \"ETH value is supposed to be 0 for ERC20 instance\");\n _safeErc20TransferFrom(msg.sender, address(this), denomination);\n }\n\n function _processWithdraw(address payable _recipient, address payable _relayer, uint256 _relayer_fee, uint256 _refund, address _feeTo) internal {\n require(msg.value == _refund, \"Incorrect refund amount received by the contract\");\n\n bool feeOn = _feeTo != address(0);\n if (feeOn) {\n _safeErc20Transfer(_recipient, denomination - _relayer_fee - protocolFee);\n _safeErc20Transfer(_feeTo, protocolFee);\n } else {\n _safeErc20Transfer(_recipient, denomination - _relayer_fee);\n }\n\n if (_relayer_fee > 0) {\n _safeErc20Transfer(_relayer, _relayer_fee);\n }\n\n if (_refund > 0) {\n (bool success, ) = _recipient.call.value(_refund)(\"\");\n if (!success) {\n // let's return _refund back to the relayer\n _relayer.transfer(_refund);\n }\n }\n }\n\n function _safeErc20TransferFrom(address _from, address _to, uint256 _amount) internal {\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd /* transferFrom */, _from, _to, _amount));\n require(success, \"not enough allowed tokens\");\n\n // if contract returns some data lets make sure that is `true` according to standard\n if (data.length > 0) {\n require(data.length == 32, \"data length should be either 0 or 32 bytes\");\n success = abi.decode(data, (bool));\n require(success, \"not enough allowed tokens. Token returns false.\");\n }\n }\n\n function _safeErc20Transfer(address _to, uint256 _amount) internal {\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb /* transfer */, _to, _amount));\n require(success, \"not enough tokens\");\n\n // if contract returns some data lets make sure that is `true` according to standard\n if (data.length > 0) {\n require(data.length == 32, \"data length should be either 0 or 32 bytes\");\n success = abi.decode(data, (bool));\n require(success, \"not enough tokens. Token returns false.\");\n }\n }\n}\n", "sourcePath": "/Users/brianli/dotfiles/tornado-core/contracts/ERC20Tornado.sol", "ast": { "absolutePath": "/Users/brianli/dotfiles/tornado-core/contracts/ERC20Tornado.sol", "exportedSymbols": { "ERC20Tornado": [ - 227 + 266 ] }, - "id": 228, + "id": 267, "nodeType": "SourceUnit", "nodes": [ { @@ -571,8 +606,8 @@ "file": "./Tornado.sol", "id": 2, "nodeType": "ImportDirective", - "scope": 228, - "sourceUnit": 1195, + "scope": 267, + "sourceUnit": 971, "src": "780:23:0", "symbolAliases": [], "unitAlias": "" @@ -586,10 +621,10 @@ "id": 3, "name": "Tornado", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1194, + "referencedDeclaration": 970, "src": "830:7:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_Tornado_$1194", + "typeIdentifier": "t_contract$_Tornado_$970", "typeString": "contract Tornado" } }, @@ -599,19 +634,19 @@ } ], "contractDependencies": [ - 694, - 1194, - 3245 + 632, + 970, + 1000 ], "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 227, + "id": 266, "linearizedBaseContracts": [ - 227, - 1194, - 3245, - 694 + 266, + 970, + 1000, + 632 ], "name": "ERC20Tornado", "nodeType": "ContractDefinition", @@ -621,7 +656,7 @@ "id": 6, "name": "token", "nodeType": "VariableDeclaration", - "scope": 227, + "scope": 266, "src": "842:20:0", "stateVariable": true, "storageLocation": "default", @@ -643,28 +678,54 @@ "value": null, "visibility": "public" }, + { + "constant": false, + "id": 8, + "name": "protocolFee", + "nodeType": "VariableDeclaration", + "scope": 266, + "src": "866:26:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "866:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "public" + }, { "body": { - "id": 29, + "id": 40, "nodeType": "Block", - "src": "1079:25:0", + "src": "1151:80:0", "statements": [ { "expression": { "argumentTypes": null, - "id": 27, + "id": 32, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 25, + "id": 30, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6, - "src": "1085:5:0", + "src": "1157:5:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -674,31 +735,114 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 26, + "id": 31, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 16, - "src": "1093:6:0", + "referencedDeclaration": 20, + "src": "1165:6:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1085:14:0", + "src": "1157:14:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 28, + "id": 33, "nodeType": "ExpressionStatement", - "src": "1085:14:0" + "src": "1157:14:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 38, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 34, + "name": "protocolFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8, + "src": "1193:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 37, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 35, + "name": "_denomination", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "1207:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "hexValue": "323030", + "id": 36, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1223:3:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_200_by_1", + "typeString": "int_const 200" + }, + "value": "200" + }, + "src": "1207:19:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1193:33:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 39, + "nodeType": "ExpressionStatement", + "src": "1193:33:0" } ] }, "documentation": null, - "id": 30, + "id": 41, "implemented": true, "kind": "constructor", "modifiers": [ @@ -706,25 +850,38 @@ "arguments": [ { "argumentTypes": null, - "id": 19, + "id": 23, "name": "_verifier", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8, - "src": "1016:9:0", + "referencedDeclaration": 10, + "src": "1075:9:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_IVerifier_$891", + "typeIdentifier": "t_contract$_IVerifier_$648", "typeString": "contract IVerifier" } }, { "argumentTypes": null, - "id": 20, + "id": 24, + "name": "_feeManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12, + "src": "1086:11:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IFeeManager_$654", + "typeString": "contract IFeeManager" + } + }, + { + "argumentTypes": null, + "id": 25, "name": "_denomination", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 10, - "src": "1027:13:0", + "referencedDeclaration": 14, + "src": "1099:13:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -732,12 +889,12 @@ }, { "argumentTypes": null, - "id": 21, + "id": 26, "name": "_merkleTreeHeight", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12, - "src": "1042:17:0", + "referencedDeclaration": 16, + "src": "1114:17:0", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -745,103 +902,131 @@ }, { "argumentTypes": null, - "id": 22, + "id": 27, "name": "_operator", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 14, - "src": "1061:9:0", + "referencedDeclaration": 18, + "src": "1133:9:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], - "id": 23, + "id": 28, "modifierName": { "argumentTypes": null, - "id": 18, + "id": 22, "name": "Tornado", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1194, - "src": "1008:7:0", + "referencedDeclaration": 970, + "src": "1067:7:0", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Tornado_$1194_$", + "typeIdentifier": "t_type$_t_contract$_Tornado_$970_$", "typeString": "type(contract Tornado)" } }, "nodeType": "ModifierInvocation", - "src": "1008:63:0" + "src": "1067:76:0" } ], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 17, + "id": 21, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 8, + "id": 10, "name": "_verifier", "nodeType": "VariableDeclaration", - "scope": 30, - "src": "884:19:0", + "scope": 41, + "src": "914:19:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IVerifier_$891", + "typeIdentifier": "t_contract$_IVerifier_$648", "typeString": "contract IVerifier" }, "typeName": { "contractScope": null, - "id": 7, + "id": 9, "name": "IVerifier", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 891, - "src": "884:9:0", + "referencedDeclaration": 648, + "src": "914:9:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_IVerifier_$891", + "typeIdentifier": "t_contract$_IVerifier_$648", "typeString": "contract IVerifier" } }, "value": null, "visibility": "internal" }, - { - "constant": false, - "id": 10, - "name": "_denomination", - "nodeType": "VariableDeclaration", - "scope": 30, - "src": "909:21:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 9, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "909:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, { "constant": false, "id": 12, + "name": "_feeManager", + "nodeType": "VariableDeclaration", + "scope": 41, + "src": "939:23:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IFeeManager_$654", + "typeString": "contract IFeeManager" + }, + "typeName": { + "contractScope": null, + "id": 11, + "name": "IFeeManager", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 654, + "src": "939:11:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IFeeManager_$654", + "typeString": "contract IFeeManager" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 14, + "name": "_denomination", + "nodeType": "VariableDeclaration", + "scope": 41, + "src": "968:21:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "968:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 16, "name": "_merkleTreeHeight", "nodeType": "VariableDeclaration", - "scope": 30, - "src": "936:24:0", + "scope": 41, + "src": "995:24:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -849,10 +1034,10 @@ "typeString": "uint32" }, "typeName": { - "id": 11, + "id": 15, "name": "uint32", "nodeType": "ElementaryTypeName", - "src": "936:6:0", + "src": "995:6:0", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -863,11 +1048,11 @@ }, { "constant": false, - "id": 14, + "id": 18, "name": "_operator", "nodeType": "VariableDeclaration", - "scope": 30, - "src": "966:17:0", + "scope": 41, + "src": "1025:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -875,10 +1060,10 @@ "typeString": "address" }, "typeName": { - "id": 13, + "id": 17, "name": "address", "nodeType": "ElementaryTypeName", - "src": "966:7:0", + "src": "1025:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -890,11 +1075,11 @@ }, { "constant": false, - "id": 16, + "id": 20, "name": "_token", "nodeType": "VariableDeclaration", - "scope": 30, - "src": "989:14:0", + "scope": 41, + "src": "1048:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -902,10 +1087,10 @@ "typeString": "address" }, "typeName": { - "id": 15, + "id": 19, "name": "address", "nodeType": "ElementaryTypeName", - "src": "989:7:0", + "src": "1048:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -916,25 +1101,25 @@ "visibility": "internal" } ], - "src": "878:129:0" + "src": "908:158:0" }, "returnParameters": { - "id": 24, + "id": 29, "nodeType": "ParameterList", "parameters": [], - "src": "1079:0:0" + "src": "1151:0:0" }, - "scope": 227, - "src": "867:237:0", + "scope": 266, + "src": "897:334:0", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 50, + "id": 61, "nodeType": "Block", - "src": "1144:155:0", + "src": "1271:155:0", "statements": [ { "expression": { @@ -946,7 +1131,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 37, + "id": 48, "isConstant": false, "isLValue": false, "isPure": false, @@ -955,18 +1140,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 34, + "id": 45, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3260, - "src": "1158:3:0", + "referencedDeclaration": 1015, + "src": "1285:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 35, + "id": 46, "isConstant": false, "isLValue": false, "isPure": false, @@ -974,7 +1159,7 @@ "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1158:9:0", + "src": "1285:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -985,14 +1170,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 36, + "id": 47, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1171:1:0", + "src": "1298:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1000,7 +1185,7 @@ }, "value": "0" }, - "src": "1158:14:0", + "src": "1285:14:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1009,14 +1194,14 @@ { "argumentTypes": null, "hexValue": "4554482076616c756520697320737570706f73656420746f206265203020666f7220455243323020696e7374616e6365", - "id": 38, + "id": 49, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1174:50:0", + "src": "1301:50:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_b14b0818f1fdc710b92ba7e1ce725992b43e47a5b220b1b890f352eeac2e1d5e", @@ -1036,21 +1221,21 @@ "typeString": "literal_string \"ETH value is supposed to be 0 for ERC20 instance\"" } ], - "id": 33, + "id": 44, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 3263, - 3264 + 1018, + 1019 ], - "referencedDeclaration": 3264, - "src": "1150:7:0", + "referencedDeclaration": 1019, + "src": "1277:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 39, + "id": 50, "isConstant": false, "isLValue": false, "isPure": false, @@ -1058,15 +1243,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1150:75:0", + "src": "1277:75:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 40, + "id": 51, "nodeType": "ExpressionStatement", - "src": "1150:75:0" + "src": "1277:75:0" }, { "expression": { @@ -1076,18 +1261,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 42, + "id": 53, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3260, - "src": "1254:3:0", + "referencedDeclaration": 1015, + "src": "1381:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 43, + "id": 54, "isConstant": false, "isLValue": false, "isPure": false, @@ -1095,7 +1280,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1254:10:0", + "src": "1381:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -1106,14 +1291,14 @@ "arguments": [ { "argumentTypes": null, - "id": 45, + "id": 56, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3284, - "src": "1274:4:0", + "referencedDeclaration": 1041, + "src": "1401:4:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Tornado_$227", + "typeIdentifier": "t_contract$_ERC20Tornado_$266", "typeString": "contract ERC20Tornado" } } @@ -1121,24 +1306,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ERC20Tornado_$227", + "typeIdentifier": "t_contract$_ERC20Tornado_$266", "typeString": "contract ERC20Tornado" } ], - "id": 44, + "id": 55, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1266:7:0", + "src": "1393:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 46, + "id": 57, "isConstant": false, "isLValue": false, "isPure": false, @@ -1146,7 +1331,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1266:13:0", + "src": "1393:13:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1154,12 +1339,12 @@ }, { "argumentTypes": null, - "id": 47, + "id": 58, "name": "denomination", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 897, - "src": "1281:12:0", + "referencedDeclaration": 660, + "src": "1408:12:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1181,18 +1366,18 @@ "typeString": "uint256" } ], - "id": 41, + "id": 52, "name": "_safeErc20TransferFrom", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 171, - "src": "1231:22:0", + "referencedDeclaration": 210, + "src": "1358:22:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, - "id": 48, + "id": 59, "isConstant": false, "isLValue": false, "isPure": false, @@ -1200,48 +1385,48 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1231:63:0", + "src": "1358:63:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 49, + "id": 60, "nodeType": "ExpressionStatement", - "src": "1231:63:0" + "src": "1358:63:0" } ] }, "documentation": null, - "id": 51, + "id": 62, "implemented": true, "kind": "function", "modifiers": [], "name": "_processDeposit", "nodeType": "FunctionDefinition", "parameters": { - "id": 31, + "id": 42, "nodeType": "ParameterList", "parameters": [], - "src": "1132:2:0" + "src": "1259:2:0" }, "returnParameters": { - "id": 32, + "id": 43, "nodeType": "ParameterList", "parameters": [], - "src": "1144:0:0" + "src": "1271:0:0" }, - "scope": 227, - "src": "1108:191:0", + "scope": 266, + "src": "1235:191:0", "stateMutability": "nonpayable", - "superFunction": 1014, + "superFunction": 785, "visibility": "internal" }, { "body": { - "id": 112, + "id": 151, "nodeType": "Block", - "src": "1423:427:0", + "src": "1574:657:0", "statements": [ { "expression": { @@ -1253,7 +1438,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 66, + "id": 79, "isConstant": false, "isLValue": false, "isPure": false, @@ -1262,18 +1447,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 63, + "id": 76, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3260, - "src": "1437:3:0", + "referencedDeclaration": 1015, + "src": "1588:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 64, + "id": 77, "isConstant": false, "isLValue": false, "isPure": false, @@ -1281,7 +1466,7 @@ "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1437:9:0", + "src": "1588:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1291,18 +1476,18 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 65, + "id": 78, "name": "_refund", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 59, - "src": "1450:7:0", + "referencedDeclaration": 70, + "src": "1601:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1437:20:0", + "src": "1588:20:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1311,14 +1496,14 @@ { "argumentTypes": null, "hexValue": "496e636f727265637420726566756e6420616d6f756e742072656365697665642062792074686520636f6e7472616374", - "id": 67, + "id": 80, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1459:50:0", + "src": "1610:50:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_3189ced290ffd29dc422911cd3b29574f21c524c91f4b41e6abb0646c581cbff", @@ -1338,21 +1523,21 @@ "typeString": "literal_string \"Incorrect refund amount received by the contract\"" } ], - "id": 62, + "id": 75, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 3263, - 3264 + 1018, + 1019 ], - "referencedDeclaration": 3264, - "src": "1429:7:0", + "referencedDeclaration": 1019, + "src": "1580:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 68, + "id": 81, "isConstant": false, "isLValue": false, "isPure": false, @@ -1360,178 +1545,158 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1429:81:0", + "src": "1580:81:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69, + "id": 82, "nodeType": "ExpressionStatement", - "src": "1429:81:0" + "src": "1580:81:0" }, { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 71, - "name": "_recipient", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 53, - "src": "1536:10:0", + "assignments": [ + 84 + ], + "declarations": [ + { + "constant": false, + "id": 84, + "name": "feeOn", + "nodeType": "VariableDeclaration", + "scope": 151, + "src": "1668:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 83, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1668:4:0", "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 74, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 72, - "name": "denomination", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 897, - "src": "1548:12:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 73, - "name": "_fee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 57, - "src": "1563:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1548:19:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 70, - "name": "_safeErc20Transfer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 226, - "src": "1517:18:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,uint256)" - } - }, - "id": 75, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1517:51:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + "value": null, + "visibility": "internal" } - }, - "id": 76, - "nodeType": "ExpressionStatement", - "src": "1517:51:0" - }, - { - "condition": { + ], + "id": 90, + "initialValue": { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" }, - "id": 79, + "id": 89, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 77, - "name": "_fee", + "id": 85, + "name": "_feeTo", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 57, - "src": "1578:4:0", + "referencedDeclaration": 72, + "src": "1681:6:0", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, "nodeType": "BinaryOperation", - "operator": ">", + "operator": "!=", "rightExpression": { "argumentTypes": null, - "hexValue": "30", - "id": 78, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 87, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1699:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 86, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1691:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 88, "isConstant": false, "isLValue": false, "isPure": true, - "kind": "number", + "kind": "typeConversion", "lValueRequested": false, - "nodeType": "Literal", - "src": "1585:1:0", - "subdenomination": null, + "names": [], + "nodeType": "FunctionCall", + "src": "1691:10:0", "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } }, - "src": "1578:8:0", + "src": "1681:20:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "falseBody": null, - "id": 86, - "nodeType": "IfStatement", - "src": "1574:63:0", - "trueBody": { - "id": 85, + "nodeType": "VariableDeclarationStatement", + "src": "1668:33:0" + }, + { + "condition": { + "argumentTypes": null, + "id": 91, + "name": "feeOn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 84, + "src": "1711:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 114, "nodeType": "Block", - "src": "1588:49:0", + "src": "1859:74:0", "statements": [ { "expression": { @@ -1539,12 +1704,12 @@ "arguments": [ { "argumentTypes": null, - "id": 81, - "name": "_relayer", + "id": 108, + "name": "_recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 55, - "src": "1615:8:0", + "referencedDeclaration": 64, + "src": "1886:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -1552,12 +1717,44 @@ }, { "argumentTypes": null, - "id": 82, - "name": "_fee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 57, - "src": "1625:4:0", + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 111, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 109, + "name": "denomination", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 660, + "src": "1898:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 110, + "name": "_relayer_fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 68, + "src": "1913:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1898:27:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1575,18 +1772,18 @@ "typeString": "uint256" } ], - "id": 80, + "id": 107, "name": "_safeErc20Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 226, - "src": "1596:18:0", + "referencedDeclaration": 265, + "src": "1867:18:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, - "id": 83, + "id": 112, "isConstant": false, "isLValue": false, "isPure": false, @@ -1594,15 +1791,231 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1596:34:0", + "src": "1867:59:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 84, + "id": 113, "nodeType": "ExpressionStatement", - "src": "1596:34:0" + "src": "1867:59:0" + } + ] + }, + "id": 115, + "nodeType": "IfStatement", + "src": "1707:226:0", + "trueBody": { + "id": 106, + "nodeType": "Block", + "src": "1718:135:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 93, + "name": "_recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64, + "src": "1745:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 98, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 96, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 94, + "name": "denomination", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 660, + "src": "1757:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 95, + "name": "_relayer_fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 68, + "src": "1772:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1757:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 97, + "name": "protocolFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8, + "src": "1787:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1757:41:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 92, + "name": "_safeErc20Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 265, + "src": "1726:18:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 99, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1726:73:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 100, + "nodeType": "ExpressionStatement", + "src": "1726:73:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 102, + "name": "_feeTo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 72, + "src": "1826:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 103, + "name": "protocolFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8, + "src": "1834:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 101, + "name": "_safeErc20Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 265, + "src": "1807:18:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 104, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1807:39:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 105, + "nodeType": "ExpressionStatement", + "src": "1807:39:0" } ] } @@ -1614,19 +2027,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 89, + "id": 118, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 87, - "name": "_refund", + "id": 116, + "name": "_relayer_fee", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 59, - "src": "1647:7:0", + "referencedDeclaration": 68, + "src": "1943:12:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1637,14 +2050,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 88, + "id": 117, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1657:1:0", + "src": "1958:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1652,34 +2065,168 @@ }, "value": "0" }, - "src": "1647:11:0", + "src": "1943:16:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 111, + "id": 125, "nodeType": "IfStatement", - "src": "1643:203:0", + "src": "1939:79:0", "trueBody": { - "id": 110, + "id": 124, "nodeType": "Block", - "src": "1660:186:0", + "src": "1961:57:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 120, + "name": "_relayer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66, + "src": "1988:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 121, + "name": "_relayer_fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 68, + "src": "1998:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 119, + "name": "_safeErc20Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 265, + "src": "1969:18:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 122, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1969:42:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 123, + "nodeType": "ExpressionStatement", + "src": "1969:42:0" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 128, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 126, + "name": "_refund", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 70, + "src": "2028:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 127, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2038:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2028:11:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 150, + "nodeType": "IfStatement", + "src": "2024:203:0", + "trueBody": { + "id": 149, + "nodeType": "Block", + "src": "2041:186:0", "statements": [ { "assignments": [ - 91, + 130, null ], "declarations": [ { "constant": false, - "id": 91, + "id": 130, "name": "success", "nodeType": "VariableDeclaration", - "scope": 110, - "src": "1669:12:0", + "scope": 149, + "src": "2050:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1687,10 +2234,10 @@ "typeString": "bool" }, "typeName": { - "id": 90, + "id": 129, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "1669:4:0", + "src": "2050:4:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1701,21 +2248,21 @@ }, null ], - "id": 99, + "id": 138, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "", - "id": 97, + "id": 136, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1718:2:0", + "src": "2099:2:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", @@ -1734,12 +2281,12 @@ "arguments": [ { "argumentTypes": null, - "id": 95, + "id": 134, "name": "_refund", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 59, - "src": "1709:7:0", + "referencedDeclaration": 70, + "src": "2090:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1757,18 +2304,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 92, + "id": 131, "name": "_recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 53, - "src": "1687:10:0", + "referencedDeclaration": 64, + "src": "2068:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, - "id": 93, + "id": 132, "isConstant": false, "isLValue": false, "isPure": false, @@ -1776,13 +2323,13 @@ "memberName": "call", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1687:15:0", + "src": "2068:15:0", "typeDescriptions": { "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory) payable returns (bool,bytes memory)" } }, - "id": 94, + "id": 133, "isConstant": false, "isLValue": false, "isPure": false, @@ -1790,13 +2337,13 @@ "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1687:21:0", + "src": "2068:21:0", "typeDescriptions": { "typeIdentifier": "t_function_setvalue_pure$_t_uint256_$returns$_t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value_$", "typeString": "function (uint256) pure returns (function (bytes memory) payable returns (bool,bytes memory))" } }, - "id": 96, + "id": 135, "isConstant": false, "isLValue": false, "isPure": false, @@ -1804,13 +2351,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1687:30:0", + "src": "2068:30:0", "typeDescriptions": { "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value", "typeString": "function (bytes memory) payable returns (bool,bytes memory)" } }, - "id": 98, + "id": 137, "isConstant": false, "isLValue": false, "isPure": false, @@ -1818,19 +2365,19 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1687:34:0", + "src": "2068:34:0", "typeDescriptions": { "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "tuple(bool,bytes memory)" } }, "nodeType": "VariableDeclarationStatement", - "src": "1668:53:0" + "src": "2049:53:0" }, { "condition": { "argumentTypes": null, - "id": 101, + "id": 140, "isConstant": false, "isLValue": false, "isPure": false, @@ -1838,15 +2385,15 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "1733:8:0", + "src": "2114:8:0", "subExpression": { "argumentTypes": null, - "id": 100, + "id": 139, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 91, - "src": "1734:7:0", + "referencedDeclaration": 130, + "src": "2115:7:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1858,13 +2405,13 @@ } }, "falseBody": null, - "id": 109, + "id": 148, "nodeType": "IfStatement", - "src": "1729:111:0", + "src": "2110:111:0", "trueBody": { - "id": 108, + "id": 147, "nodeType": "Block", - "src": "1743:97:0", + "src": "2124:97:0", "statements": [ { "expression": { @@ -1872,12 +2419,12 @@ "arguments": [ { "argumentTypes": null, - "id": 105, + "id": 144, "name": "_refund", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 59, - "src": "1823:7:0", + "referencedDeclaration": 70, + "src": "2204:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1893,18 +2440,18 @@ ], "expression": { "argumentTypes": null, - "id": 102, + "id": 141, "name": "_relayer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 55, - "src": "1805:8:0", + "referencedDeclaration": 66, + "src": "2186:8:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, - "id": 104, + "id": 143, "isConstant": false, "isLValue": false, "isPure": false, @@ -1912,13 +2459,13 @@ "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1805:17:0", + "src": "2186:17:0", "typeDescriptions": { "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)" } }, - "id": 106, + "id": 145, "isConstant": false, "isLValue": false, "isPure": false, @@ -1926,15 +2473,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1805:26:0", + "src": "2186:26:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 107, + "id": 146, "nodeType": "ExpressionStatement", - "src": "1805:26:0" + "src": "2186:26:0" } ] } @@ -1945,23 +2492,23 @@ ] }, "documentation": null, - "id": 113, + "id": 152, "implemented": true, "kind": "function", "modifiers": [], "name": "_processWithdraw", "nodeType": "FunctionDefinition", "parameters": { - "id": 60, + "id": 73, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 53, + "id": 64, "name": "_recipient", "nodeType": "VariableDeclaration", - "scope": 113, - "src": "1329:26:0", + "scope": 152, + "src": "1456:26:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1969,10 +2516,10 @@ "typeString": "address payable" }, "typeName": { - "id": 52, + "id": 63, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1329:15:0", + "src": "1456:15:0", "stateMutability": "payable", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -1984,11 +2531,11 @@ }, { "constant": false, - "id": 55, + "id": 66, "name": "_relayer", "nodeType": "VariableDeclaration", - "scope": 113, - "src": "1357:24:0", + "scope": 152, + "src": "1484:24:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1996,10 +2543,10 @@ "typeString": "address payable" }, "typeName": { - "id": 54, + "id": 65, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1357:15:0", + "src": "1484:15:0", "stateMutability": "payable", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -2011,11 +2558,11 @@ }, { "constant": false, - "id": 57, - "name": "_fee", + "id": 68, + "name": "_relayer_fee", "nodeType": "VariableDeclaration", - "scope": 113, - "src": "1383:12:0", + "scope": 152, + "src": "1510:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2023,10 +2570,10 @@ "typeString": "uint256" }, "typeName": { - "id": 56, + "id": 67, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1383:7:0", + "src": "1510:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2037,11 +2584,11 @@ }, { "constant": false, - "id": 59, + "id": 70, "name": "_refund", "nodeType": "VariableDeclaration", - "scope": 113, - "src": "1397:15:0", + "scope": 152, + "src": "1532:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2049,10 +2596,10 @@ "typeString": "uint256" }, "typeName": { - "id": 58, + "id": 69, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1397:7:0", + "src": "1532:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2060,41 +2607,68 @@ }, "value": null, "visibility": "internal" + }, + { + "constant": false, + "id": 72, + "name": "_feeTo", + "nodeType": "VariableDeclaration", + "scope": 152, + "src": "1549:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 71, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1549:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" } ], - "src": "1328:85:0" + "src": "1455:109:0" }, "returnParameters": { - "id": 61, + "id": 74, "nodeType": "ParameterList", "parameters": [], - "src": "1423:0:0" + "src": "1574:0:0" }, - "scope": 227, - "src": "1303:547:0", + "scope": 266, + "src": "1430:801:0", "stateMutability": "nonpayable", - "superFunction": 1110, + "superFunction": 886, "visibility": "internal" }, { "body": { - "id": 170, + "id": 209, "nodeType": "Block", - "src": "1940:504:0", + "src": "2321:504:0", "statements": [ { "assignments": [ - 123, - 125 + 162, + 164 ], "declarations": [ { "constant": false, - "id": 123, + "id": 162, "name": "success", "nodeType": "VariableDeclaration", - "scope": 170, - "src": "1947:12:0", + "scope": 209, + "src": "2328:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2102,10 +2676,10 @@ "typeString": "bool" }, "typeName": { - "id": 122, + "id": 161, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "1947:4:0", + "src": "2328:4:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2116,11 +2690,11 @@ }, { "constant": false, - "id": 125, + "id": 164, "name": "data", "nodeType": "VariableDeclaration", - "scope": 170, - "src": "1961:17:0", + "scope": 209, + "src": "2342:17:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -2128,10 +2702,10 @@ "typeString": "bytes" }, "typeName": { - "id": 124, + "id": 163, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "1961:5:0", + "src": "2342:5:0", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -2141,7 +2715,7 @@ "visibility": "internal" } ], - "id": 136, + "id": 175, "initialValue": { "argumentTypes": null, "arguments": [ @@ -2151,14 +2725,14 @@ { "argumentTypes": null, "hexValue": "30783233623837326464", - "id": 130, + "id": 169, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2016:10:0", + "src": "2397:10:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_599290589_by_1", @@ -2168,12 +2742,12 @@ }, { "argumentTypes": null, - "id": 131, + "id": 170, "name": "_from", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 115, - "src": "2047:5:0", + "referencedDeclaration": 154, + "src": "2428:5:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2181,12 +2755,12 @@ }, { "argumentTypes": null, - "id": 132, + "id": 171, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 117, - "src": "2054:3:0", + "referencedDeclaration": 156, + "src": "2435:3:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2194,12 +2768,12 @@ }, { "argumentTypes": null, - "id": 133, + "id": 172, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 119, - "src": "2059:7:0", + "referencedDeclaration": 158, + "src": "2440:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2227,18 +2801,18 @@ ], "expression": { "argumentTypes": null, - "id": 128, + "id": 167, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3247, - "src": "1993:3:0", + "referencedDeclaration": 1002, + "src": "2374:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 129, + "id": 168, "isConstant": false, "isLValue": false, "isPure": true, @@ -2246,13 +2820,13 @@ "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1993:22:0", + "src": "2374:22:0", "typeDescriptions": { "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)" } }, - "id": 134, + "id": 173, "isConstant": false, "isLValue": false, "isPure": false, @@ -2260,7 +2834,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1993:74:0", + "src": "2374:74:0", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -2276,18 +2850,18 @@ ], "expression": { "argumentTypes": null, - "id": 126, + "id": 165, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6, - "src": "1982:5:0", + "src": "2363:5:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 127, + "id": 166, "isConstant": false, "isLValue": false, "isPure": false, @@ -2295,13 +2869,13 @@ "memberName": "call", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1982:10:0", + "src": "2363:10:0", "typeDescriptions": { "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory) payable returns (bool,bytes memory)" } }, - "id": 135, + "id": 174, "isConstant": false, "isLValue": false, "isPure": false, @@ -2309,14 +2883,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1982:86:0", + "src": "2363:86:0", "typeDescriptions": { "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "tuple(bool,bytes memory)" } }, "nodeType": "VariableDeclarationStatement", - "src": "1946:122:0" + "src": "2327:122:0" }, { "expression": { @@ -2324,12 +2898,12 @@ "arguments": [ { "argumentTypes": null, - "id": 138, + "id": 177, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2082:7:0", + "referencedDeclaration": 162, + "src": "2463:7:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2338,14 +2912,14 @@ { "argumentTypes": null, "hexValue": "6e6f7420656e6f75676820616c6c6f77656420746f6b656e73", - "id": 139, + "id": 178, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2091:27:0", + "src": "2472:27:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_b31c8a8545ea674c554dd2f6bad7d7bd1dfe923a25150b76350dc6970bf3ff5c", @@ -2365,21 +2939,21 @@ "typeString": "literal_string \"not enough allowed tokens\"" } ], - "id": 137, + "id": 176, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 3263, - 3264 + 1018, + 1019 ], - "referencedDeclaration": 3264, - "src": "2074:7:0", + "referencedDeclaration": 1019, + "src": "2455:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 140, + "id": 179, "isConstant": false, "isLValue": false, "isPure": false, @@ -2387,15 +2961,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2074:45:0", + "src": "2455:45:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 141, + "id": 180, "nodeType": "ExpressionStatement", - "src": "2074:45:0" + "src": "2455:45:0" }, { "condition": { @@ -2404,7 +2978,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 145, + "id": 184, "isConstant": false, "isLValue": false, "isPure": false, @@ -2413,18 +2987,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 142, + "id": 181, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 125, - "src": "2219:4:0", + "referencedDeclaration": 164, + "src": "2600:4:0", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 143, + "id": 182, "isConstant": false, "isLValue": false, "isPure": false, @@ -2432,7 +3006,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2219:11:0", + "src": "2600:11:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2443,14 +3017,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 144, + "id": 183, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2233:1:0", + "src": "2614:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2458,20 +3032,20 @@ }, "value": "0" }, - "src": "2219:15:0", + "src": "2600:15:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 169, + "id": 208, "nodeType": "IfStatement", - "src": "2215:225:0", + "src": "2596:225:0", "trueBody": { - "id": 168, + "id": 207, "nodeType": "Block", - "src": "2236:204:0", + "src": "2617:204:0", "statements": [ { "expression": { @@ -2483,7 +3057,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 150, + "id": 189, "isConstant": false, "isLValue": false, "isPure": false, @@ -2492,18 +3066,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 147, + "id": 186, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 125, - "src": "2252:4:0", + "referencedDeclaration": 164, + "src": "2633:4:0", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 148, + "id": 187, "isConstant": false, "isLValue": false, "isPure": false, @@ -2511,7 +3085,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2252:11:0", + "src": "2633:11:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2522,14 +3096,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "3332", - "id": 149, + "id": 188, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2267:2:0", + "src": "2648:2:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_32_by_1", @@ -2537,7 +3111,7 @@ }, "value": "32" }, - "src": "2252:17:0", + "src": "2633:17:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2546,14 +3120,14 @@ { "argumentTypes": null, "hexValue": "64617461206c656e6774682073686f756c64206265206569746865722030206f72203332206279746573", - "id": 151, + "id": 190, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2271:44:0", + "src": "2652:44:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_22b4652a1c8fbdfc6305c7ee289e87caf6a45e5ae327ee8f67eb64ba36d62560", @@ -2573,21 +3147,21 @@ "typeString": "literal_string \"data length should be either 0 or 32 bytes\"" } ], - "id": 146, + "id": 185, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 3263, - 3264 + 1018, + 1019 ], - "referencedDeclaration": 3264, - "src": "2244:7:0", + "referencedDeclaration": 1019, + "src": "2625:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 152, + "id": 191, "isConstant": false, "isLValue": false, "isPure": false, @@ -2595,32 +3169,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2244:72:0", + "src": "2625:72:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 153, + "id": 192, "nodeType": "ExpressionStatement", - "src": "2244:72:0" + "src": "2625:72:0" }, { "expression": { "argumentTypes": null, - "id": 161, + "id": 200, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 154, + "id": 193, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2324:7:0", + "referencedDeclaration": 162, + "src": "2705:7:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2633,12 +3207,12 @@ "arguments": [ { "argumentTypes": null, - "id": 157, + "id": 196, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 125, - "src": "2345:4:0", + "referencedDeclaration": 164, + "src": "2726:4:0", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -2649,13 +3223,13 @@ "components": [ { "argumentTypes": null, - "id": 158, + "id": 197, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2352:4:0", + "src": "2733:4:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_bool_$", "typeString": "type(bool)" @@ -2663,14 +3237,14 @@ "typeName": "bool" } ], - "id": 159, + "id": 198, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "2351:6:0", + "src": "2732:6:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_bool_$", "typeString": "type(bool)" @@ -2690,18 +3264,18 @@ ], "expression": { "argumentTypes": null, - "id": 155, + "id": 194, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3247, - "src": "2334:3:0", + "referencedDeclaration": 1002, + "src": "2715:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 156, + "id": 195, "isConstant": false, "isLValue": false, "isPure": true, @@ -2709,13 +3283,13 @@ "memberName": "decode", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2334:10:0", + "src": "2715:10:0", "typeDescriptions": { "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", "typeString": "function () pure" } }, - "id": 160, + "id": 199, "isConstant": false, "isLValue": false, "isPure": false, @@ -2723,21 +3297,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2334:24:0", + "src": "2715:24:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "2324:34:0", + "src": "2705:34:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 162, + "id": 201, "nodeType": "ExpressionStatement", - "src": "2324:34:0" + "src": "2705:34:0" }, { "expression": { @@ -2745,12 +3319,12 @@ "arguments": [ { "argumentTypes": null, - "id": 164, + "id": 203, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2374:7:0", + "referencedDeclaration": 162, + "src": "2755:7:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2759,14 +3333,14 @@ { "argumentTypes": null, "hexValue": "6e6f7420656e6f75676820616c6c6f77656420746f6b656e732e20546f6b656e2072657475726e732066616c73652e", - "id": 165, + "id": 204, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2383:49:0", + "src": "2764:49:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_6cfae212a217874b58247660ff4d75d72aa825e8f2120480a7da09cf7efa221d", @@ -2786,21 +3360,21 @@ "typeString": "literal_string \"not enough allowed tokens. Token returns false.\"" } ], - "id": 163, + "id": 202, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 3263, - 3264 + 1018, + 1019 ], - "referencedDeclaration": 3264, - "src": "2366:7:0", + "referencedDeclaration": 1019, + "src": "2747:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 166, + "id": 205, "isConstant": false, "isLValue": false, "isPure": false, @@ -2808,15 +3382,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2366:67:0", + "src": "2747:67:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 167, + "id": 206, "nodeType": "ExpressionStatement", - "src": "2366:67:0" + "src": "2747:67:0" } ] } @@ -2824,23 +3398,23 @@ ] }, "documentation": null, - "id": 171, + "id": 210, "implemented": true, "kind": "function", "modifiers": [], "name": "_safeErc20TransferFrom", "nodeType": "FunctionDefinition", "parameters": { - "id": 120, + "id": 159, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 115, + "id": 154, "name": "_from", "nodeType": "VariableDeclaration", - "scope": 171, - "src": "1886:13:0", + "scope": 210, + "src": "2267:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2848,10 +3422,10 @@ "typeString": "address" }, "typeName": { - "id": 114, + "id": 153, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1886:7:0", + "src": "2267:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2863,11 +3437,11 @@ }, { "constant": false, - "id": 117, + "id": 156, "name": "_to", "nodeType": "VariableDeclaration", - "scope": 171, - "src": "1901:11:0", + "scope": 210, + "src": "2282:11:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2875,10 +3449,10 @@ "typeString": "address" }, "typeName": { - "id": 116, + "id": 155, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1901:7:0", + "src": "2282:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2890,11 +3464,11 @@ }, { "constant": false, - "id": 119, + "id": 158, "name": "_amount", "nodeType": "VariableDeclaration", - "scope": 171, - "src": "1914:15:0", + "scope": 210, + "src": "2295:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2902,10 +3476,10 @@ "typeString": "uint256" }, "typeName": { - "id": 118, + "id": 157, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1914:7:0", + "src": "2295:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2915,39 +3489,39 @@ "visibility": "internal" } ], - "src": "1885:45:0" + "src": "2266:45:0" }, "returnParameters": { - "id": 121, + "id": 160, "nodeType": "ParameterList", "parameters": [], - "src": "1940:0:0" + "src": "2321:0:0" }, - "scope": 227, - "src": "1854:590:0", + "scope": 266, + "src": "2235:590:0", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 225, + "id": 264, "nodeType": "Block", - "src": "2515:477:0", + "src": "2896:477:0", "statements": [ { "assignments": [ - 179, - 181 + 218, + 220 ], "declarations": [ { "constant": false, - "id": 179, + "id": 218, "name": "success", "nodeType": "VariableDeclaration", - "scope": 225, - "src": "2522:12:0", + "scope": 264, + "src": "2903:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2955,10 +3529,10 @@ "typeString": "bool" }, "typeName": { - "id": 178, + "id": 217, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "2522:4:0", + "src": "2903:4:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2969,11 +3543,11 @@ }, { "constant": false, - "id": 181, + "id": 220, "name": "data", "nodeType": "VariableDeclaration", - "scope": 225, - "src": "2536:17:0", + "scope": 264, + "src": "2917:17:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -2981,10 +3555,10 @@ "typeString": "bytes" }, "typeName": { - "id": 180, + "id": 219, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2536:5:0", + "src": "2917:5:0", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -2994,7 +3568,7 @@ "visibility": "internal" } ], - "id": 191, + "id": 230, "initialValue": { "argumentTypes": null, "arguments": [ @@ -3004,14 +3578,14 @@ { "argumentTypes": null, "hexValue": "30786139303539636262", - "id": 186, + "id": 225, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2591:10:0", + "src": "2972:10:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2835717307_by_1", @@ -3021,12 +3595,12 @@ }, { "argumentTypes": null, - "id": 187, + "id": 226, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 173, - "src": "2618:3:0", + "referencedDeclaration": 212, + "src": "2999:3:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3034,12 +3608,12 @@ }, { "argumentTypes": null, - "id": 188, + "id": 227, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 175, - "src": "2623:7:0", + "referencedDeclaration": 214, + "src": "3004:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3063,18 +3637,18 @@ ], "expression": { "argumentTypes": null, - "id": 184, + "id": 223, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3247, - "src": "2568:3:0", + "referencedDeclaration": 1002, + "src": "2949:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 185, + "id": 224, "isConstant": false, "isLValue": false, "isPure": true, @@ -3082,13 +3656,13 @@ "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2568:22:0", + "src": "2949:22:0", "typeDescriptions": { "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)" } }, - "id": 189, + "id": 228, "isConstant": false, "isLValue": false, "isPure": false, @@ -3096,7 +3670,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2568:63:0", + "src": "2949:63:0", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -3112,18 +3686,18 @@ ], "expression": { "argumentTypes": null, - "id": 182, + "id": 221, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6, - "src": "2557:5:0", + "src": "2938:5:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 183, + "id": 222, "isConstant": false, "isLValue": false, "isPure": false, @@ -3131,13 +3705,13 @@ "memberName": "call", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2557:10:0", + "src": "2938:10:0", "typeDescriptions": { "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory) payable returns (bool,bytes memory)" } }, - "id": 190, + "id": 229, "isConstant": false, "isLValue": false, "isPure": false, @@ -3145,14 +3719,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2557:75:0", + "src": "2938:75:0", "typeDescriptions": { "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "tuple(bool,bytes memory)" } }, "nodeType": "VariableDeclarationStatement", - "src": "2521:111:0" + "src": "2902:111:0" }, { "expression": { @@ -3160,12 +3734,12 @@ "arguments": [ { "argumentTypes": null, - "id": 193, + "id": 232, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 179, - "src": "2646:7:0", + "referencedDeclaration": 218, + "src": "3027:7:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3174,14 +3748,14 @@ { "argumentTypes": null, "hexValue": "6e6f7420656e6f75676820746f6b656e73", - "id": 194, + "id": 233, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2655:19:0", + "src": "3036:19:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_73949bcdc07934e9395e82489bb22c4742e057960a2c090d38e53d68d3caf52a", @@ -3201,21 +3775,21 @@ "typeString": "literal_string \"not enough tokens\"" } ], - "id": 192, + "id": 231, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 3263, - 3264 + 1018, + 1019 ], - "referencedDeclaration": 3264, - "src": "2638:7:0", + "referencedDeclaration": 1019, + "src": "3019:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 195, + "id": 234, "isConstant": false, "isLValue": false, "isPure": false, @@ -3223,15 +3797,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2638:37:0", + "src": "3019:37:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 196, + "id": 235, "nodeType": "ExpressionStatement", - "src": "2638:37:0" + "src": "3019:37:0" }, { "condition": { @@ -3240,7 +3814,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 200, + "id": 239, "isConstant": false, "isLValue": false, "isPure": false, @@ -3249,18 +3823,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 197, + "id": 236, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 181, - "src": "2775:4:0", + "referencedDeclaration": 220, + "src": "3156:4:0", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 198, + "id": 237, "isConstant": false, "isLValue": false, "isPure": false, @@ -3268,7 +3842,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2775:11:0", + "src": "3156:11:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3279,14 +3853,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 199, + "id": 238, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2789:1:0", + "src": "3170:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3294,20 +3868,20 @@ }, "value": "0" }, - "src": "2775:15:0", + "src": "3156:15:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 224, + "id": 263, "nodeType": "IfStatement", - "src": "2771:217:0", + "src": "3152:217:0", "trueBody": { - "id": 223, + "id": 262, "nodeType": "Block", - "src": "2792:196:0", + "src": "3173:196:0", "statements": [ { "expression": { @@ -3319,7 +3893,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 205, + "id": 244, "isConstant": false, "isLValue": false, "isPure": false, @@ -3328,18 +3902,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 202, + "id": 241, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 181, - "src": "2808:4:0", + "referencedDeclaration": 220, + "src": "3189:4:0", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 203, + "id": 242, "isConstant": false, "isLValue": false, "isPure": false, @@ -3347,7 +3921,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2808:11:0", + "src": "3189:11:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3358,14 +3932,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "3332", - "id": 204, + "id": 243, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2823:2:0", + "src": "3204:2:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_32_by_1", @@ -3373,7 +3947,7 @@ }, "value": "32" }, - "src": "2808:17:0", + "src": "3189:17:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3382,14 +3956,14 @@ { "argumentTypes": null, "hexValue": "64617461206c656e6774682073686f756c64206265206569746865722030206f72203332206279746573", - "id": 206, + "id": 245, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2827:44:0", + "src": "3208:44:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_22b4652a1c8fbdfc6305c7ee289e87caf6a45e5ae327ee8f67eb64ba36d62560", @@ -3409,21 +3983,21 @@ "typeString": "literal_string \"data length should be either 0 or 32 bytes\"" } ], - "id": 201, + "id": 240, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 3263, - 3264 + 1018, + 1019 ], - "referencedDeclaration": 3264, - "src": "2800:7:0", + "referencedDeclaration": 1019, + "src": "3181:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 207, + "id": 246, "isConstant": false, "isLValue": false, "isPure": false, @@ -3431,32 +4005,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2800:72:0", + "src": "3181:72:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 208, + "id": 247, "nodeType": "ExpressionStatement", - "src": "2800:72:0" + "src": "3181:72:0" }, { "expression": { "argumentTypes": null, - "id": 216, + "id": 255, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 209, + "id": 248, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 179, - "src": "2880:7:0", + "referencedDeclaration": 218, + "src": "3261:7:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3469,12 +4043,12 @@ "arguments": [ { "argumentTypes": null, - "id": 212, + "id": 251, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 181, - "src": "2901:4:0", + "referencedDeclaration": 220, + "src": "3282:4:0", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -3485,13 +4059,13 @@ "components": [ { "argumentTypes": null, - "id": 213, + "id": 252, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2908:4:0", + "src": "3289:4:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_bool_$", "typeString": "type(bool)" @@ -3499,14 +4073,14 @@ "typeName": "bool" } ], - "id": 214, + "id": 253, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "2907:6:0", + "src": "3288:6:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_bool_$", "typeString": "type(bool)" @@ -3526,18 +4100,18 @@ ], "expression": { "argumentTypes": null, - "id": 210, + "id": 249, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3247, - "src": "2890:3:0", + "referencedDeclaration": 1002, + "src": "3271:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 211, + "id": 250, "isConstant": false, "isLValue": false, "isPure": true, @@ -3545,13 +4119,13 @@ "memberName": "decode", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2890:10:0", + "src": "3271:10:0", "typeDescriptions": { "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", "typeString": "function () pure" } }, - "id": 215, + "id": 254, "isConstant": false, "isLValue": false, "isPure": false, @@ -3559,21 +4133,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2890:24:0", + "src": "3271:24:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "2880:34:0", + "src": "3261:34:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 217, + "id": 256, "nodeType": "ExpressionStatement", - "src": "2880:34:0" + "src": "3261:34:0" }, { "expression": { @@ -3581,12 +4155,12 @@ "arguments": [ { "argumentTypes": null, - "id": 219, + "id": 258, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 179, - "src": "2930:7:0", + "referencedDeclaration": 218, + "src": "3311:7:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3595,14 +4169,14 @@ { "argumentTypes": null, "hexValue": "6e6f7420656e6f75676820746f6b656e732e20546f6b656e2072657475726e732066616c73652e", - "id": 220, + "id": 259, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2939:41:0", + "src": "3320:41:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_38fa5aabf87e9f42de902eb4d9022484dde7943d80702b79ba468e9fc08f5e5e", @@ -3622,21 +4196,21 @@ "typeString": "literal_string \"not enough tokens. Token returns false.\"" } ], - "id": 218, + "id": 257, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 3263, - 3264 + 1018, + 1019 ], - "referencedDeclaration": 3264, - "src": "2922:7:0", + "referencedDeclaration": 1019, + "src": "3303:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 221, + "id": 260, "isConstant": false, "isLValue": false, "isPure": false, @@ -3644,15 +4218,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2922:59:0", + "src": "3303:59:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 222, + "id": 261, "nodeType": "ExpressionStatement", - "src": "2922:59:0" + "src": "3303:59:0" } ] } @@ -3660,23 +4234,23 @@ ] }, "documentation": null, - "id": 226, + "id": 265, "implemented": true, "kind": "function", "modifiers": [], "name": "_safeErc20Transfer", "nodeType": "FunctionDefinition", "parameters": { - "id": 176, + "id": 215, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 173, + "id": 212, "name": "_to", "nodeType": "VariableDeclaration", - "scope": 226, - "src": "2476:11:0", + "scope": 265, + "src": "2857:11:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3684,10 +4258,10 @@ "typeString": "address" }, "typeName": { - "id": 172, + "id": 211, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2476:7:0", + "src": "2857:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3699,11 +4273,11 @@ }, { "constant": false, - "id": 175, + "id": 214, "name": "_amount", "nodeType": "VariableDeclaration", - "scope": 226, - "src": "2489:15:0", + "scope": 265, + "src": "2870:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3711,10 +4285,10 @@ "typeString": "uint256" }, "typeName": { - "id": 174, + "id": 213, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2489:7:0", + "src": "2870:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3724,33 +4298,33 @@ "visibility": "internal" } ], - "src": "2475:30:0" + "src": "2856:30:0" }, "returnParameters": { - "id": 177, + "id": 216, "nodeType": "ParameterList", "parameters": [], - "src": "2515:0:0" + "src": "2896:0:0" }, - "scope": 227, - "src": "2448:544:0", + "scope": 266, + "src": "2829:544:0", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 228, - "src": "805:2189:0" + "scope": 267, + "src": "805:2570:0" } ], - "src": "755:2240:0" + "src": "755:2621:0" }, "legacyAST": { "attributes": { "absolutePath": "/Users/brianli/dotfiles/tornado-core/contracts/ERC20Tornado.sol", "exportedSymbols": { "ERC20Tornado": [ - 227 + 266 ] } }, @@ -3769,10 +4343,10 @@ }, { "attributes": { - "SourceUnit": 1195, + "SourceUnit": 971, "absolutePath": "/Users/brianli/dotfiles/tornado-core/contracts/Tornado.sol", "file": "./Tornado.sol", - "scope": 228, + "scope": 267, "symbolAliases": [ null ], @@ -3785,21 +4359,21 @@ { "attributes": { "contractDependencies": [ - 694, - 1194, - 3245 + 632, + 970, + 1000 ], "contractKind": "contract", "documentation": null, "fullyImplemented": true, "linearizedBaseContracts": [ - 227, - 1194, - 3245, - 694 + 266, + 970, + 1000, + 632 ], "name": "ERC20Tornado", - "scope": 228 + "scope": 267 }, "children": [ { @@ -3811,7 +4385,7 @@ "attributes": { "contractScope": null, "name": "Tornado", - "referencedDeclaration": 1194, + "referencedDeclaration": 970, "type": "contract Tornado" }, "id": 3, @@ -3827,7 +4401,7 @@ "attributes": { "constant": false, "name": "token", - "scope": 227, + "scope": 266, "stateVariable": true, "storageLocation": "default", "type": "address", @@ -3850,6 +4424,32 @@ "name": "VariableDeclaration", "src": "842:20:0" }, + { + "attributes": { + "constant": false, + "name": "protocolFee", + "scope": 266, + "stateVariable": true, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 7, + "name": "ElementaryTypeName", + "src": "866:7:0" + } + ], + "id": 8, + "name": "VariableDeclaration", + "src": "866:26:0" + }, { "attributes": { "documentation": null, @@ -3857,7 +4457,7 @@ "isConstructor": true, "kind": "constructor", "name": "", - "scope": 227, + "scope": 266, "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -3869,7 +4469,7 @@ "attributes": { "constant": false, "name": "_verifier", - "scope": 30, + "scope": 41, "stateVariable": false, "storageLocation": "default", "type": "contract IVerifier", @@ -3881,23 +4481,51 @@ "attributes": { "contractScope": null, "name": "IVerifier", - "referencedDeclaration": 891, + "referencedDeclaration": 648, "type": "contract IVerifier" }, - "id": 7, + "id": 9, "name": "UserDefinedTypeName", - "src": "884:9:0" + "src": "914:9:0" } ], - "id": 8, + "id": 10, "name": "VariableDeclaration", - "src": "884:19:0" + "src": "914:19:0" + }, + { + "attributes": { + "constant": false, + "name": "_feeManager", + "scope": 41, + "stateVariable": false, + "storageLocation": "default", + "type": "contract IFeeManager", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "IFeeManager", + "referencedDeclaration": 654, + "type": "contract IFeeManager" + }, + "id": 11, + "name": "UserDefinedTypeName", + "src": "939:11:0" + } + ], + "id": 12, + "name": "VariableDeclaration", + "src": "939:23:0" }, { "attributes": { "constant": false, "name": "_denomination", - "scope": 30, + "scope": 41, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -3910,20 +4538,20 @@ "name": "uint256", "type": "uint256" }, - "id": 9, + "id": 13, "name": "ElementaryTypeName", - "src": "909:7:0" + "src": "968:7:0" } ], - "id": 10, + "id": 14, "name": "VariableDeclaration", - "src": "909:21:0" + "src": "968:21:0" }, { "attributes": { "constant": false, "name": "_merkleTreeHeight", - "scope": 30, + "scope": 41, "stateVariable": false, "storageLocation": "default", "type": "uint32", @@ -3936,20 +4564,20 @@ "name": "uint32", "type": "uint32" }, - "id": 11, + "id": 15, "name": "ElementaryTypeName", - "src": "936:6:0" + "src": "995:6:0" } ], - "id": 12, + "id": 16, "name": "VariableDeclaration", - "src": "936:24:0" + "src": "995:24:0" }, { "attributes": { "constant": false, "name": "_operator", - "scope": 30, + "scope": 41, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -3963,20 +4591,20 @@ "stateMutability": "nonpayable", "type": "address" }, - "id": 13, + "id": 17, "name": "ElementaryTypeName", - "src": "966:7:0" + "src": "1025:7:0" } ], - "id": 14, + "id": 18, "name": "VariableDeclaration", - "src": "966:17:0" + "src": "1025:17:0" }, { "attributes": { "constant": false, "name": "_token", - "scope": 30, + "scope": 41, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -3990,19 +4618,19 @@ "stateMutability": "nonpayable", "type": "address" }, - "id": 15, + "id": 19, "name": "ElementaryTypeName", - "src": "989:7:0" + "src": "1048:7:0" } ], - "id": 16, + "id": 20, "name": "VariableDeclaration", - "src": "989:14:0" + "src": "1048:14:0" } ], - "id": 17, + "id": 21, "name": "ParameterList", - "src": "878:129:0" + "src": "908:158:0" }, { "attributes": { @@ -4011,9 +4639,9 @@ ] }, "children": [], - "id": 24, + "id": 29, "name": "ParameterList", - "src": "1079:0:0" + "src": "1151:0:0" }, { "children": [ @@ -4023,27 +4651,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1194, + "referencedDeclaration": 970, "type": "type(contract Tornado)", "value": "Tornado" }, - "id": 18, + "id": 22, "name": "Identifier", - "src": "1008:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 8, - "type": "contract IVerifier", - "value": "_verifier" - }, - "id": 19, - "name": "Identifier", - "src": "1016:9:0" + "src": "1067:7:0" }, { "attributes": { @@ -4052,12 +4666,12 @@ null ], "referencedDeclaration": 10, - "type": "uint256", - "value": "_denomination" + "type": "contract IVerifier", + "value": "_verifier" }, - "id": 20, + "id": 23, "name": "Identifier", - "src": "1027:13:0" + "src": "1075:9:0" }, { "attributes": { @@ -4066,12 +4680,12 @@ null ], "referencedDeclaration": 12, - "type": "uint32", - "value": "_merkleTreeHeight" + "type": "contract IFeeManager", + "value": "_feeManager" }, - "id": 21, + "id": 24, "name": "Identifier", - "src": "1042:17:0" + "src": "1086:11:0" }, { "attributes": { @@ -4080,17 +4694,45 @@ null ], "referencedDeclaration": 14, + "type": "uint256", + "value": "_denomination" + }, + "id": 25, + "name": "Identifier", + "src": "1099:13:0" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 16, + "type": "uint32", + "value": "_merkleTreeHeight" + }, + "id": 26, + "name": "Identifier", + "src": "1114:17:0" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 18, "type": "address", "value": "_operator" }, - "id": 22, + "id": 27, "name": "Identifier", - "src": "1061:9:0" + "src": "1133:9:0" } ], - "id": 23, + "id": 28, "name": "ModifierInvocation", - "src": "1008:63:0" + "src": "1067:76:0" }, { "children": [ @@ -4117,9 +4759,9 @@ "type": "address", "value": "token" }, - "id": 25, + "id": 30, "name": "Identifier", - "src": "1085:5:0" + "src": "1157:5:0" }, { "attributes": { @@ -4127,33 +4769,121 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 16, + "referencedDeclaration": 20, "type": "address", "value": "_token" }, - "id": 26, + "id": 31, "name": "Identifier", - "src": "1093:6:0" + "src": "1165:6:0" } ], - "id": 27, + "id": 32, "name": "Assignment", - "src": "1085:14:0" + "src": "1157:14:0" } ], - "id": 28, + "id": 33, "name": "ExpressionStatement", - "src": "1085:14:0" + "src": "1157:14:0" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 8, + "type": "uint256", + "value": "protocolFee" + }, + "id": 34, + "name": "Identifier", + "src": "1193:11:0" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "/", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 14, + "type": "uint256", + "value": "_denomination" + }, + "id": 35, + "name": "Identifier", + "src": "1207:13:0" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "323030", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 200", + "value": "200" + }, + "id": 36, + "name": "Literal", + "src": "1223:3:0" + } + ], + "id": 37, + "name": "BinaryOperation", + "src": "1207:19:0" + } + ], + "id": 38, + "name": "Assignment", + "src": "1193:33:0" + } + ], + "id": 39, + "name": "ExpressionStatement", + "src": "1193:33:0" } ], - "id": 29, + "id": 40, "name": "Block", - "src": "1079:25:0" + "src": "1151:80:0" } ], - "id": 30, + "id": 41, "name": "FunctionDefinition", - "src": "867:237:0" + "src": "897:334:0" }, { "attributes": { @@ -4165,9 +4895,9 @@ null ], "name": "_processDeposit", - "scope": 227, + "scope": 266, "stateMutability": "nonpayable", - "superFunction": 1014, + "superFunction": 785, "visibility": "internal" }, "children": [ @@ -4178,9 +4908,9 @@ ] }, "children": [], - "id": 31, + "id": 42, "name": "ParameterList", - "src": "1132:2:0" + "src": "1259:2:0" }, { "attributes": { @@ -4189,9 +4919,9 @@ ] }, "children": [], - "id": 32, + "id": 43, "name": "ParameterList", - "src": "1144:0:0" + "src": "1271:0:0" }, { "children": [ @@ -4225,16 +4955,16 @@ } ], "overloadedDeclarations": [ - 3263, - 3264 + 1018, + 1019 ], - "referencedDeclaration": 3264, + "referencedDeclaration": 1019, "type": "function (bool,string memory) pure", "value": "require" }, - "id": 33, + "id": 44, "name": "Identifier", - "src": "1150:7:0" + "src": "1277:7:0" }, { "attributes": { @@ -4269,18 +4999,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 3260, + "referencedDeclaration": 1015, "type": "msg", "value": "msg" }, - "id": 34, + "id": 45, "name": "Identifier", - "src": "1158:3:0" + "src": "1285:3:0" } ], - "id": 35, + "id": 46, "name": "MemberAccess", - "src": "1158:9:0" + "src": "1285:9:0" }, { "attributes": { @@ -4295,14 +5025,14 @@ "type": "int_const 0", "value": "0" }, - "id": 36, + "id": 47, "name": "Literal", - "src": "1171:1:0" + "src": "1298:1:0" } ], - "id": 37, + "id": 48, "name": "BinaryOperation", - "src": "1158:14:0" + "src": "1285:14:0" }, { "attributes": { @@ -4317,19 +5047,19 @@ "type": "literal_string \"ETH value is supposed to be 0 for ERC20 instance\"", "value": "ETH value is supposed to be 0 for ERC20 instance" }, - "id": 38, + "id": 49, "name": "Literal", - "src": "1174:50:0" + "src": "1301:50:0" } ], - "id": 39, + "id": 50, "name": "FunctionCall", - "src": "1150:75:0" + "src": "1277:75:0" } ], - "id": 40, + "id": 51, "name": "ExpressionStatement", - "src": "1150:75:0" + "src": "1277:75:0" }, { "children": [ @@ -4367,13 +5097,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 171, + "referencedDeclaration": 210, "type": "function (address,address,uint256)", "value": "_safeErc20TransferFrom" }, - "id": 41, + "id": 52, "name": "Identifier", - "src": "1231:22:0" + "src": "1358:22:0" }, { "attributes": { @@ -4393,18 +5123,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 3260, + "referencedDeclaration": 1015, "type": "msg", "value": "msg" }, - "id": 42, + "id": 53, "name": "Identifier", - "src": "1254:3:0" + "src": "1381:3:0" } ], - "id": 43, + "id": 54, "name": "MemberAccess", - "src": "1254:10:0" + "src": "1381:10:0" }, { "attributes": { @@ -4425,7 +5155,7 @@ "attributes": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ERC20Tornado_$227", + "typeIdentifier": "t_contract$_ERC20Tornado_$266", "typeString": "contract ERC20Tornado" } ], @@ -4436,9 +5166,9 @@ "type": "type(address)", "value": "address" }, - "id": 44, + "id": 55, "name": "ElementaryTypeNameExpression", - "src": "1266:7:0" + "src": "1393:7:0" }, { "attributes": { @@ -4446,18 +5176,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 3284, + "referencedDeclaration": 1041, "type": "contract ERC20Tornado", "value": "this" }, - "id": 45, + "id": 56, "name": "Identifier", - "src": "1274:4:0" + "src": "1401:4:0" } ], - "id": 46, + "id": 57, "name": "FunctionCall", - "src": "1266:13:0" + "src": "1393:13:0" }, { "attributes": { @@ -4465,33 +5195,33 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 897, + "referencedDeclaration": 660, "type": "uint256", "value": "denomination" }, - "id": 47, + "id": 58, "name": "Identifier", - "src": "1281:12:0" + "src": "1408:12:0" } ], - "id": 48, + "id": 59, "name": "FunctionCall", - "src": "1231:63:0" + "src": "1358:63:0" } ], - "id": 49, + "id": 60, "name": "ExpressionStatement", - "src": "1231:63:0" + "src": "1358:63:0" } ], - "id": 50, + "id": 61, "name": "Block", - "src": "1144:155:0" + "src": "1271:155:0" } ], - "id": 51, + "id": 62, "name": "FunctionDefinition", - "src": "1108:191:0" + "src": "1235:191:0" }, { "attributes": { @@ -4503,9 +5233,9 @@ null ], "name": "_processWithdraw", - "scope": 227, + "scope": 266, "stateMutability": "nonpayable", - "superFunction": 1110, + "superFunction": 886, "visibility": "internal" }, "children": [ @@ -4515,7 +5245,7 @@ "attributes": { "constant": false, "name": "_recipient", - "scope": 113, + "scope": 152, "stateVariable": false, "storageLocation": "default", "type": "address payable", @@ -4529,20 +5259,20 @@ "stateMutability": "payable", "type": "address payable" }, - "id": 52, + "id": 63, "name": "ElementaryTypeName", - "src": "1329:15:0" + "src": "1456:15:0" } ], - "id": 53, + "id": 64, "name": "VariableDeclaration", - "src": "1329:26:0" + "src": "1456:26:0" }, { "attributes": { "constant": false, "name": "_relayer", - "scope": 113, + "scope": 152, "stateVariable": false, "storageLocation": "default", "type": "address payable", @@ -4556,20 +5286,20 @@ "stateMutability": "payable", "type": "address payable" }, - "id": 54, + "id": 65, "name": "ElementaryTypeName", - "src": "1357:15:0" + "src": "1484:15:0" } ], - "id": 55, + "id": 66, "name": "VariableDeclaration", - "src": "1357:24:0" + "src": "1484:24:0" }, { "attributes": { "constant": false, - "name": "_fee", - "scope": 113, + "name": "_relayer_fee", + "scope": 152, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -4582,20 +5312,20 @@ "name": "uint256", "type": "uint256" }, - "id": 56, + "id": 67, "name": "ElementaryTypeName", - "src": "1383:7:0" + "src": "1510:7:0" } ], - "id": 57, + "id": 68, "name": "VariableDeclaration", - "src": "1383:12:0" + "src": "1510:20:0" }, { "attributes": { "constant": false, "name": "_refund", - "scope": 113, + "scope": 152, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -4608,19 +5338,46 @@ "name": "uint256", "type": "uint256" }, - "id": 58, + "id": 69, "name": "ElementaryTypeName", - "src": "1397:7:0" + "src": "1532:7:0" } ], - "id": 59, + "id": 70, "name": "VariableDeclaration", - "src": "1397:15:0" + "src": "1532:15:0" + }, + { + "attributes": { + "constant": false, + "name": "_feeTo", + "scope": 152, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 71, + "name": "ElementaryTypeName", + "src": "1549:7:0" + } + ], + "id": 72, + "name": "VariableDeclaration", + "src": "1549:14:0" } ], - "id": 60, + "id": 73, "name": "ParameterList", - "src": "1328:85:0" + "src": "1455:109:0" }, { "attributes": { @@ -4629,9 +5386,9 @@ ] }, "children": [], - "id": 61, + "id": 74, "name": "ParameterList", - "src": "1423:0:0" + "src": "1574:0:0" }, { "children": [ @@ -4665,16 +5422,16 @@ } ], "overloadedDeclarations": [ - 3263, - 3264 + 1018, + 1019 ], - "referencedDeclaration": 3264, + "referencedDeclaration": 1019, "type": "function (bool,string memory) pure", "value": "require" }, - "id": 62, + "id": 75, "name": "Identifier", - "src": "1429:7:0" + "src": "1580:7:0" }, { "attributes": { @@ -4709,18 +5466,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 3260, + "referencedDeclaration": 1015, "type": "msg", "value": "msg" }, - "id": 63, + "id": 76, "name": "Identifier", - "src": "1437:3:0" + "src": "1588:3:0" } ], - "id": 64, + "id": 77, "name": "MemberAccess", - "src": "1437:9:0" + "src": "1588:9:0" }, { "attributes": { @@ -4728,18 +5485,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 59, + "referencedDeclaration": 70, "type": "uint256", "value": "_refund" }, - "id": 65, + "id": 78, "name": "Identifier", - "src": "1450:7:0" + "src": "1601:7:0" } ], - "id": 66, + "id": 79, "name": "BinaryOperation", - "src": "1437:20:0" + "src": "1588:20:0" }, { "attributes": { @@ -4754,149 +5511,65 @@ "type": "literal_string \"Incorrect refund amount received by the contract\"", "value": "Incorrect refund amount received by the contract" }, - "id": 67, + "id": 80, "name": "Literal", - "src": "1459:50:0" + "src": "1610:50:0" } ], - "id": 68, + "id": 81, "name": "FunctionCall", - "src": "1429:81:0" + "src": "1580:81:0" } ], - "id": 69, + "id": 82, "name": "ExpressionStatement", - "src": "1429:81:0" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 226, - "type": "function (address,uint256)", - "value": "_safeErc20Transfer" - }, - "id": 70, - "name": "Identifier", - "src": "1517:18:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 53, - "type": "address payable", - "value": "_recipient" - }, - "id": 71, - "name": "Identifier", - "src": "1536:10:0" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "-", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 897, - "type": "uint256", - "value": "denomination" - }, - "id": 72, - "name": "Identifier", - "src": "1548:12:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 57, - "type": "uint256", - "value": "_fee" - }, - "id": 73, - "name": "Identifier", - "src": "1563:4:0" - } - ], - "id": 74, - "name": "BinaryOperation", - "src": "1548:19:0" - } - ], - "id": 75, - "name": "FunctionCall", - "src": "1517:51:0" - } - ], - "id": 76, - "name": "ExpressionStatement", - "src": "1517:51:0" + "src": "1580:81:0" }, { "attributes": { - "falseBody": null + "assignments": [ + 84 + ] }, "children": [ + { + "attributes": { + "constant": false, + "name": "feeOn", + "scope": 151, + "stateVariable": false, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 83, + "name": "ElementaryTypeName", + "src": "1668:4:0" + } + ], + "id": 84, + "name": "VariableDeclaration", + "src": "1668:10:0" + }, { "attributes": { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" }, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "operator": ">", + "operator": "!=", "type": "bool" }, "children": [ @@ -4906,35 +5579,95 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 57, - "type": "uint256", - "value": "_fee" + "referencedDeclaration": 72, + "type": "address", + "value": "_feeTo" }, - "id": 77, + "id": 85, "name": "Identifier", - "src": "1578:4:0" + "src": "1681:6:0" }, { "attributes": { "argumentTypes": null, - "hexvalue": "30", "isConstant": false, "isLValue": false, "isPure": true, + "isStructConstructorCall": false, "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" + "names": [ + null + ], + "type": "address payable", + "type_conversion": true }, - "id": 78, - "name": "Literal", - "src": "1585:1:0" + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)", + "value": "address" + }, + "id": 86, + "name": "ElementaryTypeNameExpression", + "src": "1691:7:0" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 87, + "name": "Literal", + "src": "1699:1:0" + } + ], + "id": 88, + "name": "FunctionCall", + "src": "1691:10:0" } ], - "id": 79, + "id": 89, "name": "BinaryOperation", - "src": "1578:8:0" + "src": "1681:20:0" + } + ], + "id": 90, + "name": "VariableDeclarationStatement", + "src": "1668:33:0" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 84, + "type": "bool", + "value": "feeOn" + }, + "id": 91, + "name": "Identifier", + "src": "1711:5:0" }, { "children": [ @@ -4970,13 +5703,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 226, + "referencedDeclaration": 265, "type": "function (address,uint256)", "value": "_safeErc20Transfer" }, - "id": 80, + "id": 92, "name": "Identifier", - "src": "1596:18:0" + "src": "1726:18:0" }, { "attributes": { @@ -4984,47 +5717,312 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 55, + "referencedDeclaration": 64, "type": "address payable", - "value": "_relayer" + "value": "_recipient" }, - "id": 81, + "id": 93, "name": "Identifier", - "src": "1615:8:0" + "src": "1745:10:0" }, { "attributes": { "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 57, - "type": "uint256", - "value": "_fee" + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "-", + "type": "uint256" }, - "id": 82, - "name": "Identifier", - "src": "1625:4:0" + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "-", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 660, + "type": "uint256", + "value": "denomination" + }, + "id": 94, + "name": "Identifier", + "src": "1757:12:0" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 68, + "type": "uint256", + "value": "_relayer_fee" + }, + "id": 95, + "name": "Identifier", + "src": "1772:12:0" + } + ], + "id": 96, + "name": "BinaryOperation", + "src": "1757:27:0" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 8, + "type": "uint256", + "value": "protocolFee" + }, + "id": 97, + "name": "Identifier", + "src": "1787:11:0" + } + ], + "id": 98, + "name": "BinaryOperation", + "src": "1757:41:0" } ], - "id": 83, + "id": 99, "name": "FunctionCall", - "src": "1596:34:0" + "src": "1726:73:0" } ], - "id": 84, + "id": 100, "name": "ExpressionStatement", - "src": "1596:34:0" + "src": "1726:73:0" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 265, + "type": "function (address,uint256)", + "value": "_safeErc20Transfer" + }, + "id": 101, + "name": "Identifier", + "src": "1807:18:0" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 72, + "type": "address", + "value": "_feeTo" + }, + "id": 102, + "name": "Identifier", + "src": "1826:6:0" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 8, + "type": "uint256", + "value": "protocolFee" + }, + "id": 103, + "name": "Identifier", + "src": "1834:11:0" + } + ], + "id": 104, + "name": "FunctionCall", + "src": "1807:39:0" + } + ], + "id": 105, + "name": "ExpressionStatement", + "src": "1807:39:0" } ], - "id": 85, + "id": 106, "name": "Block", - "src": "1588:49:0" + "src": "1718:135:0" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 265, + "type": "function (address,uint256)", + "value": "_safeErc20Transfer" + }, + "id": 107, + "name": "Identifier", + "src": "1867:18:0" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 64, + "type": "address payable", + "value": "_recipient" + }, + "id": 108, + "name": "Identifier", + "src": "1886:10:0" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "-", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 660, + "type": "uint256", + "value": "denomination" + }, + "id": 109, + "name": "Identifier", + "src": "1898:12:0" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 68, + "type": "uint256", + "value": "_relayer_fee" + }, + "id": 110, + "name": "Identifier", + "src": "1913:12:0" + } + ], + "id": 111, + "name": "BinaryOperation", + "src": "1898:27:0" + } + ], + "id": 112, + "name": "FunctionCall", + "src": "1867:59:0" + } + ], + "id": 113, + "name": "ExpressionStatement", + "src": "1867:59:0" + } + ], + "id": 114, + "name": "Block", + "src": "1859:74:0" } ], - "id": 86, + "id": 115, "name": "IfStatement", - "src": "1574:63:0" + "src": "1707:226:0" }, { "attributes": { @@ -5052,13 +6050,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 59, + "referencedDeclaration": 68, "type": "uint256", - "value": "_refund" + "value": "_relayer_fee" }, - "id": 87, + "id": 116, "name": "Identifier", - "src": "1647:7:0" + "src": "1943:12:0" }, { "attributes": { @@ -5073,21 +6071,167 @@ "type": "int_const 0", "value": "0" }, - "id": 88, + "id": 117, "name": "Literal", - "src": "1657:1:0" + "src": "1958:1:0" } ], - "id": 89, + "id": 118, "name": "BinaryOperation", - "src": "1647:11:0" + "src": "1943:16:0" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 265, + "type": "function (address,uint256)", + "value": "_safeErc20Transfer" + }, + "id": 119, + "name": "Identifier", + "src": "1969:18:0" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 66, + "type": "address payable", + "value": "_relayer" + }, + "id": 120, + "name": "Identifier", + "src": "1988:8:0" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 68, + "type": "uint256", + "value": "_relayer_fee" + }, + "id": 121, + "name": "Identifier", + "src": "1998:12:0" + } + ], + "id": 122, + "name": "FunctionCall", + "src": "1969:42:0" + } + ], + "id": 123, + "name": "ExpressionStatement", + "src": "1969:42:0" + } + ], + "id": 124, + "name": "Block", + "src": "1961:57:0" + } + ], + "id": 125, + "name": "IfStatement", + "src": "1939:79:0" + }, + { + "attributes": { + "falseBody": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": ">", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 70, + "type": "uint256", + "value": "_refund" + }, + "id": 126, + "name": "Identifier", + "src": "2028:7:0" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 127, + "name": "Literal", + "src": "2038:1:0" + } + ], + "id": 128, + "name": "BinaryOperation", + "src": "2028:11:0" }, { "children": [ { "attributes": { "assignments": [ - 91, + 130, null ] }, @@ -5096,7 +6240,7 @@ "attributes": { "constant": false, "name": "success", - "scope": 110, + "scope": 149, "stateVariable": false, "storageLocation": "default", "type": "bool", @@ -5109,14 +6253,14 @@ "name": "bool", "type": "bool" }, - "id": 90, + "id": 129, "name": "ElementaryTypeName", - "src": "1669:4:0" + "src": "2050:4:0" } ], - "id": 91, + "id": 130, "name": "VariableDeclaration", - "src": "1669:12:0" + "src": "2050:12:0" }, { "attributes": { @@ -5188,23 +6332,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 53, + "referencedDeclaration": 64, "type": "address payable", "value": "_recipient" }, - "id": 92, + "id": 131, "name": "Identifier", - "src": "1687:10:0" + "src": "2068:10:0" } ], - "id": 93, + "id": 132, "name": "MemberAccess", - "src": "1687:15:0" + "src": "2068:15:0" } ], - "id": 94, + "id": 133, "name": "MemberAccess", - "src": "1687:21:0" + "src": "2068:21:0" }, { "attributes": { @@ -5212,18 +6356,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 59, + "referencedDeclaration": 70, "type": "uint256", "value": "_refund" }, - "id": 95, + "id": 134, "name": "Identifier", - "src": "1709:7:0" + "src": "2090:7:0" } ], - "id": 96, + "id": 135, "name": "FunctionCall", - "src": "1687:30:0" + "src": "2068:30:0" }, { "attributes": { @@ -5238,19 +6382,19 @@ "type": "literal_string \"\"", "value": "" }, - "id": 97, + "id": 136, "name": "Literal", - "src": "1718:2:0" + "src": "2099:2:0" } ], - "id": 98, + "id": 137, "name": "FunctionCall", - "src": "1687:34:0" + "src": "2068:34:0" } ], - "id": 99, + "id": 138, "name": "VariableDeclarationStatement", - "src": "1668:53:0" + "src": "2049:53:0" }, { "attributes": { @@ -5275,18 +6419,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 91, + "referencedDeclaration": 130, "type": "bool", "value": "success" }, - "id": 100, + "id": 139, "name": "Identifier", - "src": "1734:7:0" + "src": "2115:7:0" } ], - "id": 101, + "id": 140, "name": "UnaryOperation", - "src": "1733:8:0" + "src": "2114:8:0" }, { "children": [ @@ -5330,18 +6474,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 55, + "referencedDeclaration": 66, "type": "address payable", "value": "_relayer" }, - "id": 102, + "id": 141, "name": "Identifier", - "src": "1805:8:0" + "src": "2186:8:0" } ], - "id": 104, + "id": 143, "name": "MemberAccess", - "src": "1805:17:0" + "src": "2186:17:0" }, { "attributes": { @@ -5349,53 +6493,53 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 59, + "referencedDeclaration": 70, "type": "uint256", "value": "_refund" }, - "id": 105, + "id": 144, "name": "Identifier", - "src": "1823:7:0" + "src": "2204:7:0" } ], - "id": 106, + "id": 145, "name": "FunctionCall", - "src": "1805:26:0" + "src": "2186:26:0" } ], - "id": 107, + "id": 146, "name": "ExpressionStatement", - "src": "1805:26:0" + "src": "2186:26:0" } ], - "id": 108, + "id": 147, "name": "Block", - "src": "1743:97:0" + "src": "2124:97:0" } ], - "id": 109, + "id": 148, "name": "IfStatement", - "src": "1729:111:0" + "src": "2110:111:0" } ], - "id": 110, + "id": 149, "name": "Block", - "src": "1660:186:0" + "src": "2041:186:0" } ], - "id": 111, + "id": 150, "name": "IfStatement", - "src": "1643:203:0" + "src": "2024:203:0" } ], - "id": 112, + "id": 151, "name": "Block", - "src": "1423:427:0" + "src": "1574:657:0" } ], - "id": 113, + "id": 152, "name": "FunctionDefinition", - "src": "1303:547:0" + "src": "1430:801:0" }, { "attributes": { @@ -5407,7 +6551,7 @@ null ], "name": "_safeErc20TransferFrom", - "scope": 227, + "scope": 266, "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" @@ -5419,7 +6563,7 @@ "attributes": { "constant": false, "name": "_from", - "scope": 171, + "scope": 210, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -5433,20 +6577,20 @@ "stateMutability": "nonpayable", "type": "address" }, - "id": 114, + "id": 153, "name": "ElementaryTypeName", - "src": "1886:7:0" + "src": "2267:7:0" } ], - "id": 115, + "id": 154, "name": "VariableDeclaration", - "src": "1886:13:0" + "src": "2267:13:0" }, { "attributes": { "constant": false, "name": "_to", - "scope": 171, + "scope": 210, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -5460,20 +6604,20 @@ "stateMutability": "nonpayable", "type": "address" }, - "id": 116, + "id": 155, "name": "ElementaryTypeName", - "src": "1901:7:0" + "src": "2282:7:0" } ], - "id": 117, + "id": 156, "name": "VariableDeclaration", - "src": "1901:11:0" + "src": "2282:11:0" }, { "attributes": { "constant": false, "name": "_amount", - "scope": 171, + "scope": 210, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -5486,19 +6630,19 @@ "name": "uint256", "type": "uint256" }, - "id": 118, + "id": 157, "name": "ElementaryTypeName", - "src": "1914:7:0" + "src": "2295:7:0" } ], - "id": 119, + "id": 158, "name": "VariableDeclaration", - "src": "1914:15:0" + "src": "2295:15:0" } ], - "id": 120, + "id": 159, "name": "ParameterList", - "src": "1885:45:0" + "src": "2266:45:0" }, { "attributes": { @@ -5507,17 +6651,17 @@ ] }, "children": [], - "id": 121, + "id": 160, "name": "ParameterList", - "src": "1940:0:0" + "src": "2321:0:0" }, { "children": [ { "attributes": { "assignments": [ - 123, - 125 + 162, + 164 ] }, "children": [ @@ -5525,7 +6669,7 @@ "attributes": { "constant": false, "name": "success", - "scope": 170, + "scope": 209, "stateVariable": false, "storageLocation": "default", "type": "bool", @@ -5538,20 +6682,20 @@ "name": "bool", "type": "bool" }, - "id": 122, + "id": 161, "name": "ElementaryTypeName", - "src": "1947:4:0" + "src": "2328:4:0" } ], - "id": 123, + "id": 162, "name": "VariableDeclaration", - "src": "1947:12:0" + "src": "2328:12:0" }, { "attributes": { "constant": false, "name": "data", - "scope": 170, + "scope": 209, "stateVariable": false, "storageLocation": "memory", "type": "bytes", @@ -5564,14 +6708,14 @@ "name": "bytes", "type": "bytes" }, - "id": 124, + "id": 163, "name": "ElementaryTypeName", - "src": "1961:5:0" + "src": "2342:5:0" } ], - "id": 125, + "id": 164, "name": "VariableDeclaration", - "src": "1961:17:0" + "src": "2342:17:0" }, { "attributes": { @@ -5615,14 +6759,14 @@ "type": "address", "value": "token" }, - "id": 126, + "id": 165, "name": "Identifier", - "src": "1982:5:0" + "src": "2363:5:0" } ], - "id": 127, + "id": 166, "name": "MemberAccess", - "src": "1982:10:0" + "src": "2363:10:0" }, { "attributes": { @@ -5674,18 +6818,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 3247, + "referencedDeclaration": 1002, "type": "abi", "value": "abi" }, - "id": 128, + "id": 167, "name": "Identifier", - "src": "1993:3:0" + "src": "2374:3:0" } ], - "id": 129, + "id": 168, "name": "MemberAccess", - "src": "1993:22:0" + "src": "2374:22:0" }, { "attributes": { @@ -5700,9 +6844,9 @@ "type": "int_const 599290589", "value": "0x23b872dd" }, - "id": 130, + "id": 169, "name": "Literal", - "src": "2016:10:0" + "src": "2397:10:0" }, { "attributes": { @@ -5710,13 +6854,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 115, + "referencedDeclaration": 154, "type": "address", "value": "_from" }, - "id": 131, + "id": 170, "name": "Identifier", - "src": "2047:5:0" + "src": "2428:5:0" }, { "attributes": { @@ -5724,13 +6868,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 117, + "referencedDeclaration": 156, "type": "address", "value": "_to" }, - "id": 132, + "id": 171, "name": "Identifier", - "src": "2054:3:0" + "src": "2435:3:0" }, { "attributes": { @@ -5738,28 +6882,28 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 119, + "referencedDeclaration": 158, "type": "uint256", "value": "_amount" }, - "id": 133, + "id": 172, "name": "Identifier", - "src": "2059:7:0" + "src": "2440:7:0" } ], - "id": 134, + "id": 173, "name": "FunctionCall", - "src": "1993:74:0" + "src": "2374:74:0" } ], - "id": 135, + "id": 174, "name": "FunctionCall", - "src": "1982:86:0" + "src": "2363:86:0" } ], - "id": 136, + "id": 175, "name": "VariableDeclarationStatement", - "src": "1946:122:0" + "src": "2327:122:0" }, { "children": [ @@ -5791,16 +6935,16 @@ } ], "overloadedDeclarations": [ - 3263, - 3264 + 1018, + 1019 ], - "referencedDeclaration": 3264, + "referencedDeclaration": 1019, "type": "function (bool,string memory) pure", "value": "require" }, - "id": 137, + "id": 176, "name": "Identifier", - "src": "2074:7:0" + "src": "2455:7:0" }, { "attributes": { @@ -5808,13 +6952,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 123, + "referencedDeclaration": 162, "type": "bool", "value": "success" }, - "id": 138, + "id": 177, "name": "Identifier", - "src": "2082:7:0" + "src": "2463:7:0" }, { "attributes": { @@ -5829,19 +6973,19 @@ "type": "literal_string \"not enough allowed tokens\"", "value": "not enough allowed tokens" }, - "id": 139, + "id": 178, "name": "Literal", - "src": "2091:27:0" + "src": "2472:27:0" } ], - "id": 140, + "id": 179, "name": "FunctionCall", - "src": "2074:45:0" + "src": "2455:45:0" } ], - "id": 141, + "id": 180, "name": "ExpressionStatement", - "src": "2074:45:0" + "src": "2455:45:0" }, { "attributes": { @@ -5881,18 +7025,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 125, + "referencedDeclaration": 164, "type": "bytes memory", "value": "data" }, - "id": 142, + "id": 181, "name": "Identifier", - "src": "2219:4:0" + "src": "2600:4:0" } ], - "id": 143, + "id": 182, "name": "MemberAccess", - "src": "2219:11:0" + "src": "2600:11:0" }, { "attributes": { @@ -5907,14 +7051,14 @@ "type": "int_const 0", "value": "0" }, - "id": 144, + "id": 183, "name": "Literal", - "src": "2233:1:0" + "src": "2614:1:0" } ], - "id": 145, + "id": 184, "name": "BinaryOperation", - "src": "2219:15:0" + "src": "2600:15:0" }, { "children": [ @@ -5948,16 +7092,16 @@ } ], "overloadedDeclarations": [ - 3263, - 3264 + 1018, + 1019 ], - "referencedDeclaration": 3264, + "referencedDeclaration": 1019, "type": "function (bool,string memory) pure", "value": "require" }, - "id": 146, + "id": 185, "name": "Identifier", - "src": "2244:7:0" + "src": "2625:7:0" }, { "attributes": { @@ -5992,18 +7136,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 125, + "referencedDeclaration": 164, "type": "bytes memory", "value": "data" }, - "id": 147, + "id": 186, "name": "Identifier", - "src": "2252:4:0" + "src": "2633:4:0" } ], - "id": 148, + "id": 187, "name": "MemberAccess", - "src": "2252:11:0" + "src": "2633:11:0" }, { "attributes": { @@ -6018,14 +7162,14 @@ "type": "int_const 32", "value": "32" }, - "id": 149, + "id": 188, "name": "Literal", - "src": "2267:2:0" + "src": "2648:2:0" } ], - "id": 150, + "id": 189, "name": "BinaryOperation", - "src": "2252:17:0" + "src": "2633:17:0" }, { "attributes": { @@ -6040,19 +7184,19 @@ "type": "literal_string \"data length should be either 0 or 32 bytes\"", "value": "data length should be either 0 or 32 bytes" }, - "id": 151, + "id": 190, "name": "Literal", - "src": "2271:44:0" + "src": "2652:44:0" } ], - "id": 152, + "id": 191, "name": "FunctionCall", - "src": "2244:72:0" + "src": "2625:72:0" } ], - "id": 153, + "id": 192, "name": "ExpressionStatement", - "src": "2244:72:0" + "src": "2625:72:0" }, { "children": [ @@ -6073,13 +7217,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 123, + "referencedDeclaration": 162, "type": "bool", "value": "success" }, - "id": 154, + "id": 193, "name": "Identifier", - "src": "2324:7:0" + "src": "2705:7:0" }, { "attributes": { @@ -6123,18 +7267,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 3247, + "referencedDeclaration": 1002, "type": "abi", "value": "abi" }, - "id": 155, + "id": 194, "name": "Identifier", - "src": "2334:3:0" + "src": "2715:3:0" } ], - "id": 156, + "id": 195, "name": "MemberAccess", - "src": "2334:10:0" + "src": "2715:10:0" }, { "attributes": { @@ -6142,13 +7286,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 125, + "referencedDeclaration": 164, "type": "bytes memory", "value": "data" }, - "id": 157, + "id": 196, "name": "Identifier", - "src": "2345:4:0" + "src": "2726:4:0" }, { "attributes": { @@ -6171,29 +7315,29 @@ "type": "type(bool)", "value": "bool" }, - "id": 158, + "id": 197, "name": "ElementaryTypeNameExpression", - "src": "2352:4:0" + "src": "2733:4:0" } ], - "id": 159, + "id": 198, "name": "TupleExpression", - "src": "2351:6:0" + "src": "2732:6:0" } ], - "id": 160, + "id": 199, "name": "FunctionCall", - "src": "2334:24:0" + "src": "2715:24:0" } ], - "id": 161, + "id": 200, "name": "Assignment", - "src": "2324:34:0" + "src": "2705:34:0" } ], - "id": 162, + "id": 201, "name": "ExpressionStatement", - "src": "2324:34:0" + "src": "2705:34:0" }, { "children": [ @@ -6225,16 +7369,16 @@ } ], "overloadedDeclarations": [ - 3263, - 3264 + 1018, + 1019 ], - "referencedDeclaration": 3264, + "referencedDeclaration": 1019, "type": "function (bool,string memory) pure", "value": "require" }, - "id": 163, + "id": 202, "name": "Identifier", - "src": "2366:7:0" + "src": "2747:7:0" }, { "attributes": { @@ -6242,13 +7386,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 123, + "referencedDeclaration": 162, "type": "bool", "value": "success" }, - "id": 164, + "id": 203, "name": "Identifier", - "src": "2374:7:0" + "src": "2755:7:0" }, { "attributes": { @@ -6263,39 +7407,39 @@ "type": "literal_string \"not enough allowed tokens. Token returns false.\"", "value": "not enough allowed tokens. Token returns false." }, - "id": 165, + "id": 204, "name": "Literal", - "src": "2383:49:0" + "src": "2764:49:0" } ], - "id": 166, + "id": 205, "name": "FunctionCall", - "src": "2366:67:0" + "src": "2747:67:0" } ], - "id": 167, + "id": 206, "name": "ExpressionStatement", - "src": "2366:67:0" + "src": "2747:67:0" } ], - "id": 168, + "id": 207, "name": "Block", - "src": "2236:204:0" + "src": "2617:204:0" } ], - "id": 169, + "id": 208, "name": "IfStatement", - "src": "2215:225:0" + "src": "2596:225:0" } ], - "id": 170, + "id": 209, "name": "Block", - "src": "1940:504:0" + "src": "2321:504:0" } ], - "id": 171, + "id": 210, "name": "FunctionDefinition", - "src": "1854:590:0" + "src": "2235:590:0" }, { "attributes": { @@ -6307,7 +7451,7 @@ null ], "name": "_safeErc20Transfer", - "scope": 227, + "scope": 266, "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" @@ -6319,7 +7463,7 @@ "attributes": { "constant": false, "name": "_to", - "scope": 226, + "scope": 265, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -6333,20 +7477,20 @@ "stateMutability": "nonpayable", "type": "address" }, - "id": 172, + "id": 211, "name": "ElementaryTypeName", - "src": "2476:7:0" + "src": "2857:7:0" } ], - "id": 173, + "id": 212, "name": "VariableDeclaration", - "src": "2476:11:0" + "src": "2857:11:0" }, { "attributes": { "constant": false, "name": "_amount", - "scope": 226, + "scope": 265, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -6359,19 +7503,19 @@ "name": "uint256", "type": "uint256" }, - "id": 174, + "id": 213, "name": "ElementaryTypeName", - "src": "2489:7:0" + "src": "2870:7:0" } ], - "id": 175, + "id": 214, "name": "VariableDeclaration", - "src": "2489:15:0" + "src": "2870:15:0" } ], - "id": 176, + "id": 215, "name": "ParameterList", - "src": "2475:30:0" + "src": "2856:30:0" }, { "attributes": { @@ -6380,17 +7524,17 @@ ] }, "children": [], - "id": 177, + "id": 216, "name": "ParameterList", - "src": "2515:0:0" + "src": "2896:0:0" }, { "children": [ { "attributes": { "assignments": [ - 179, - 181 + 218, + 220 ] }, "children": [ @@ -6398,7 +7542,7 @@ "attributes": { "constant": false, "name": "success", - "scope": 225, + "scope": 264, "stateVariable": false, "storageLocation": "default", "type": "bool", @@ -6411,20 +7555,20 @@ "name": "bool", "type": "bool" }, - "id": 178, + "id": 217, "name": "ElementaryTypeName", - "src": "2522:4:0" + "src": "2903:4:0" } ], - "id": 179, + "id": 218, "name": "VariableDeclaration", - "src": "2522:12:0" + "src": "2903:12:0" }, { "attributes": { "constant": false, "name": "data", - "scope": 225, + "scope": 264, "stateVariable": false, "storageLocation": "memory", "type": "bytes", @@ -6437,14 +7581,14 @@ "name": "bytes", "type": "bytes" }, - "id": 180, + "id": 219, "name": "ElementaryTypeName", - "src": "2536:5:0" + "src": "2917:5:0" } ], - "id": 181, + "id": 220, "name": "VariableDeclaration", - "src": "2536:17:0" + "src": "2917:17:0" }, { "attributes": { @@ -6488,14 +7632,14 @@ "type": "address", "value": "token" }, - "id": 182, + "id": 221, "name": "Identifier", - "src": "2557:5:0" + "src": "2938:5:0" } ], - "id": 183, + "id": 222, "name": "MemberAccess", - "src": "2557:10:0" + "src": "2938:10:0" }, { "attributes": { @@ -6543,18 +7687,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 3247, + "referencedDeclaration": 1002, "type": "abi", "value": "abi" }, - "id": 184, + "id": 223, "name": "Identifier", - "src": "2568:3:0" + "src": "2949:3:0" } ], - "id": 185, + "id": 224, "name": "MemberAccess", - "src": "2568:22:0" + "src": "2949:22:0" }, { "attributes": { @@ -6569,9 +7713,9 @@ "type": "int_const 2835717307", "value": "0xa9059cbb" }, - "id": 186, + "id": 225, "name": "Literal", - "src": "2591:10:0" + "src": "2972:10:0" }, { "attributes": { @@ -6579,13 +7723,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 173, + "referencedDeclaration": 212, "type": "address", "value": "_to" }, - "id": 187, + "id": 226, "name": "Identifier", - "src": "2618:3:0" + "src": "2999:3:0" }, { "attributes": { @@ -6593,28 +7737,28 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 175, + "referencedDeclaration": 214, "type": "uint256", "value": "_amount" }, - "id": 188, + "id": 227, "name": "Identifier", - "src": "2623:7:0" + "src": "3004:7:0" } ], - "id": 189, + "id": 228, "name": "FunctionCall", - "src": "2568:63:0" + "src": "2949:63:0" } ], - "id": 190, + "id": 229, "name": "FunctionCall", - "src": "2557:75:0" + "src": "2938:75:0" } ], - "id": 191, + "id": 230, "name": "VariableDeclarationStatement", - "src": "2521:111:0" + "src": "2902:111:0" }, { "children": [ @@ -6646,16 +7790,16 @@ } ], "overloadedDeclarations": [ - 3263, - 3264 + 1018, + 1019 ], - "referencedDeclaration": 3264, + "referencedDeclaration": 1019, "type": "function (bool,string memory) pure", "value": "require" }, - "id": 192, + "id": 231, "name": "Identifier", - "src": "2638:7:0" + "src": "3019:7:0" }, { "attributes": { @@ -6663,13 +7807,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 179, + "referencedDeclaration": 218, "type": "bool", "value": "success" }, - "id": 193, + "id": 232, "name": "Identifier", - "src": "2646:7:0" + "src": "3027:7:0" }, { "attributes": { @@ -6684,19 +7828,19 @@ "type": "literal_string \"not enough tokens\"", "value": "not enough tokens" }, - "id": 194, + "id": 233, "name": "Literal", - "src": "2655:19:0" + "src": "3036:19:0" } ], - "id": 195, + "id": 234, "name": "FunctionCall", - "src": "2638:37:0" + "src": "3019:37:0" } ], - "id": 196, + "id": 235, "name": "ExpressionStatement", - "src": "2638:37:0" + "src": "3019:37:0" }, { "attributes": { @@ -6736,18 +7880,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 181, + "referencedDeclaration": 220, "type": "bytes memory", "value": "data" }, - "id": 197, + "id": 236, "name": "Identifier", - "src": "2775:4:0" + "src": "3156:4:0" } ], - "id": 198, + "id": 237, "name": "MemberAccess", - "src": "2775:11:0" + "src": "3156:11:0" }, { "attributes": { @@ -6762,14 +7906,14 @@ "type": "int_const 0", "value": "0" }, - "id": 199, + "id": 238, "name": "Literal", - "src": "2789:1:0" + "src": "3170:1:0" } ], - "id": 200, + "id": 239, "name": "BinaryOperation", - "src": "2775:15:0" + "src": "3156:15:0" }, { "children": [ @@ -6803,16 +7947,16 @@ } ], "overloadedDeclarations": [ - 3263, - 3264 + 1018, + 1019 ], - "referencedDeclaration": 3264, + "referencedDeclaration": 1019, "type": "function (bool,string memory) pure", "value": "require" }, - "id": 201, + "id": 240, "name": "Identifier", - "src": "2800:7:0" + "src": "3181:7:0" }, { "attributes": { @@ -6847,18 +7991,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 181, + "referencedDeclaration": 220, "type": "bytes memory", "value": "data" }, - "id": 202, + "id": 241, "name": "Identifier", - "src": "2808:4:0" + "src": "3189:4:0" } ], - "id": 203, + "id": 242, "name": "MemberAccess", - "src": "2808:11:0" + "src": "3189:11:0" }, { "attributes": { @@ -6873,14 +8017,14 @@ "type": "int_const 32", "value": "32" }, - "id": 204, + "id": 243, "name": "Literal", - "src": "2823:2:0" + "src": "3204:2:0" } ], - "id": 205, + "id": 244, "name": "BinaryOperation", - "src": "2808:17:0" + "src": "3189:17:0" }, { "attributes": { @@ -6895,19 +8039,19 @@ "type": "literal_string \"data length should be either 0 or 32 bytes\"", "value": "data length should be either 0 or 32 bytes" }, - "id": 206, + "id": 245, "name": "Literal", - "src": "2827:44:0" + "src": "3208:44:0" } ], - "id": 207, + "id": 246, "name": "FunctionCall", - "src": "2800:72:0" + "src": "3181:72:0" } ], - "id": 208, + "id": 247, "name": "ExpressionStatement", - "src": "2800:72:0" + "src": "3181:72:0" }, { "children": [ @@ -6928,13 +8072,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 179, + "referencedDeclaration": 218, "type": "bool", "value": "success" }, - "id": 209, + "id": 248, "name": "Identifier", - "src": "2880:7:0" + "src": "3261:7:0" }, { "attributes": { @@ -6978,18 +8122,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 3247, + "referencedDeclaration": 1002, "type": "abi", "value": "abi" }, - "id": 210, + "id": 249, "name": "Identifier", - "src": "2890:3:0" + "src": "3271:3:0" } ], - "id": 211, + "id": 250, "name": "MemberAccess", - "src": "2890:10:0" + "src": "3271:10:0" }, { "attributes": { @@ -6997,13 +8141,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 181, + "referencedDeclaration": 220, "type": "bytes memory", "value": "data" }, - "id": 212, + "id": 251, "name": "Identifier", - "src": "2901:4:0" + "src": "3282:4:0" }, { "attributes": { @@ -7026,29 +8170,29 @@ "type": "type(bool)", "value": "bool" }, - "id": 213, + "id": 252, "name": "ElementaryTypeNameExpression", - "src": "2908:4:0" + "src": "3289:4:0" } ], - "id": 214, + "id": 253, "name": "TupleExpression", - "src": "2907:6:0" + "src": "3288:6:0" } ], - "id": 215, + "id": 254, "name": "FunctionCall", - "src": "2890:24:0" + "src": "3271:24:0" } ], - "id": 216, + "id": 255, "name": "Assignment", - "src": "2880:34:0" + "src": "3261:34:0" } ], - "id": 217, + "id": 256, "name": "ExpressionStatement", - "src": "2880:34:0" + "src": "3261:34:0" }, { "children": [ @@ -7080,16 +8224,16 @@ } ], "overloadedDeclarations": [ - 3263, - 3264 + 1018, + 1019 ], - "referencedDeclaration": 3264, + "referencedDeclaration": 1019, "type": "function (bool,string memory) pure", "value": "require" }, - "id": 218, + "id": 257, "name": "Identifier", - "src": "2922:7:0" + "src": "3303:7:0" }, { "attributes": { @@ -7097,13 +8241,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 179, + "referencedDeclaration": 218, "type": "bool", "value": "success" }, - "id": 219, + "id": 258, "name": "Identifier", - "src": "2930:7:0" + "src": "3311:7:0" }, { "attributes": { @@ -7118,49 +8262,49 @@ "type": "literal_string \"not enough tokens. Token returns false.\"", "value": "not enough tokens. Token returns false." }, - "id": 220, + "id": 259, "name": "Literal", - "src": "2939:41:0" + "src": "3320:41:0" } ], - "id": 221, + "id": 260, "name": "FunctionCall", - "src": "2922:59:0" + "src": "3303:59:0" } ], - "id": 222, + "id": 261, "name": "ExpressionStatement", - "src": "2922:59:0" + "src": "3303:59:0" } ], - "id": 223, + "id": 262, "name": "Block", - "src": "2792:196:0" + "src": "3173:196:0" } ], - "id": 224, + "id": 263, "name": "IfStatement", - "src": "2771:217:0" + "src": "3152:217:0" } ], - "id": 225, + "id": 264, "name": "Block", - "src": "2515:477:0" + "src": "2896:477:0" } ], - "id": 226, + "id": 265, "name": "FunctionDefinition", - "src": "2448:544:0" + "src": "2829:544:0" } ], - "id": 227, + "id": 266, "name": "ContractDefinition", - "src": "805:2189:0" + "src": "805:2570:0" } ], - "id": 228, + "id": 267, "name": "SourceUnit", - "src": "755:2240:0" + "src": "755:2621:0" }, "compiler": { "name": "solc", @@ -7170,14 +8314,14 @@ "42220": { "events": {}, "links": { - "Hasher": "0xD75035293f552aB5c33483f321DBf0DfA1C7c71d" + "Hasher": "0x5666A6E07d7b991489b1D0f53d37B664B312a1fE" }, - "address": "0x89c8BB50BBa5B15B5044bdA870d1c34322B66171", - "transactionHash": "0xa26063a78dbf50e366559e0eaefd298963a7176b318d163a926d199dc9a1268e" + "address": "0xC8980dcBc56F5CEdd5356D190cB42125e16486eb", + "transactionHash": "0xbbd8007eb57eeeb98a12b9807e7d23d46e64b834d929967a9abf6cd0984d34bd" } }, "schemaVersion": "3.3.4", - "updatedAt": "2021-03-22T02:54:26.391Z", + "updatedAt": "2021-04-02T22:56:11.626Z", "networkType": "ethereum", "devdoc": { "methods": { diff --git a/client/contracts/CELOTornado.0.json b/client/contracts/CELOTornado.0.json index aa4e953..dabb954 100644 --- a/client/contracts/CELOTornado.0.json +++ b/client/contracts/CELOTornado.0.json @@ -8,6 +8,11 @@ "name": "_verifier", "type": "address" }, + { + "internalType": "contract IFeeManager", + "name": "_feeManager", + "type": "address" + }, { "internalType": "uint256", "name": "_denomination", @@ -215,6 +220,21 @@ "stateMutability": "payable", "type": "function" }, + { + "constant": true, + "inputs": [], + "name": "feeManager", + "outputs": [ + { + "internalType": "contract IFeeManager", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, { "constant": true, "inputs": [ @@ -406,6 +426,21 @@ "stateMutability": "view", "type": "function" }, + { + "constant": true, + "inputs": [], + "name": "protocolFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, { "constant": true, "inputs": [ @@ -539,21 +574,21 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVerifier\",\"name\":\"_verifier\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_denomination\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_merkleTreeHeight\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"leafIndex\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"nullifierHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"Withdrawal\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"FIELD_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"ROOT_HISTORY_SIZE\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"ZERO_VALUE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newOperator\",\"type\":\"address\"}],\"name\":\"changeOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"commitments\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"currentRootIndex\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"denomination\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_commitment\",\"type\":\"bytes32\"}],\"name\":\"deposit\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"filledSubtrees\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getLastRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_left\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_right\",\"type\":\"bytes32\"}],\"name\":\"hashLeftRight\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_root\",\"type\":\"bytes32\"}],\"name\":\"isKnownRoot\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_nullifierHash\",\"type\":\"bytes32\"}],\"name\":\"isSpent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"_nullifierHashes\",\"type\":\"bytes32[]\"}],\"name\":\"isSpentArray\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"spent\",\"type\":\"bool[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"levels\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"nextIndex\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"nullifierHashes\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"operator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"roots\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newVerifier\",\"type\":\"address\"}],\"name\":\"updateVerifier\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"verifier\",\"outputs\":[{\"internalType\":\"contract IVerifier\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_proof\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"_root\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_nullifierHash\",\"type\":\"bytes32\"},{\"internalType\":\"address payable\",\"name\":\"_recipient\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"_relayer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_refund\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"zeros\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"changeOperator(address)\":{\"details\":\"operator can change his address \"},\"deposit(bytes32)\":{\"details\":\"Deposit funds into the contract. The caller must send (for ETH) or approve (for ERC20) value equal to or `denomination` of this instance.\",\"params\":{\"_commitment\":\"the note commitment, which is PedersenHash(nullifier + secret)\"}},\"getLastRoot()\":{\"details\":\"Returns the last root\"},\"hashLeftRight(bytes32,bytes32)\":{\"details\":\"Hash 2 tree leaves, returns MiMC(_left, _right)\"},\"isKnownRoot(bytes32)\":{\"details\":\"Whether the root is present in the root history\"},\"isSpent(bytes32)\":{\"details\":\"whether a note is already spent \"},\"isSpentArray(bytes32[])\":{\"details\":\"whether an array of notes is already spent \"},\"updateVerifier(address)\":{\"details\":\"allow operator to update SNARK verification keys. This is needed to update keys after the final trusted setup ceremony is held. After that operator rights are supposed to be transferred to zero address\"},\"withdraw(bytes,bytes32,bytes32,address,address,uint256,uint256)\":{\"details\":\"Withdraw a deposit from the contract. `proof` is a zkSNARK proof data, and input is an array of circuit public inputs `input` array consists of: - merkle root of all deposits in the contract - hash of unique deposit nullifier to prevent double spends - the recipient of funds - optional fee that goes to the transaction sender (usually a relay)\"}}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/Users/brianli/dotfiles/tornado-core/contracts/ERC20Tornado.sol\":\"ERC20Tornado\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/brianli/dotfiles/tornado-core/contracts/ERC20Tornado.sol\":{\"keccak256\":\"0x708938fd083239d2e9cd17e457cf25a2150bb900082fad58af8b689f786aef9c\",\"urls\":[\"bzz-raw://f345afd62002f883c60c032cd0cb051663dc8a3e59a52bf44109633b96cb3685\",\"dweb:/ipfs/QmNwjnH2uyNoq9GPjNUv6Z1mgtiR5rY3K7EHY74RBjXMpw\"]},\"/Users/brianli/dotfiles/tornado-core/contracts/MerkleTreeWithHistory.sol\":{\"keccak256\":\"0x671cc9268dd70c47d18795f7e37fc4df11763fcbcca026edcf163f4239036254\",\"urls\":[\"bzz-raw://9c36a207ed164b60a514eae89bfb15e5b4de4b346c4a89a7a1cb50a940bc699d\",\"dweb:/ipfs/QmbPEqFJAGMpYduLEFsbPazyBsYWcjRtpth8X26wCHALwk\"]},\"/Users/brianli/dotfiles/tornado-core/contracts/Tornado.sol\":{\"keccak256\":\"0x09c70432243629ef44697fd3d0ca89d3578e2b1c9f46d90757371edb163c14da\",\"urls\":[\"bzz-raw://d2a2c9fa85c32cb15793282792cd25c71804a10aa5a911e41f3bcd07f5df117e\",\"dweb:/ipfs/QmeQ1s6ypNnP7fossR4x9svuuLjcSBtQ5spUTmWGZY5Ljr\"]},\"@openzeppelin/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0xb63221b23818d622bfd83d18e0968307e4fcb7a35536bdceded76e1cf8349acd\",\"urls\":[\"bzz-raw://44e1e8c22362c4708a8c3362735f1465f5b05e2f7315e16c7010d694ce019d73\",\"dweb:/ipfs/QmWj9g8X1hxkXRre2kwkEjLBetjuzmSbWHD81bsSojnBkS\"]}},\"version\":1}", - "bytecode": "0x6080604052600380546001600160401b03191690553480156200002157600080fd5b5060405162001d1238038062001d12833981810160405260a08110156200004757600080fd5b50805160208201516040830151606084015160809094015192939192909190848484848163ffffffff8116620000af5760405162461bcd60e51b815260040180806020018281038252602781526020018062001c896027913960400191505060405180910390fd5b60208163ffffffff1610620000f65760405162461bcd60e51b815260040180806020018281038252602281526020018062001cd06022913960400191505060405180910390fd5b6000805463ffffffff191663ffffffff83161781556002805460018181019092557f2fe54c60d3acabf3343a35b6eba15db4821b340f76e741e2249685ed4899af6c60008051602062001c48833981519152909101819055815480830183559282905260008051602062001cf28339815191529092018290555b60005463ffffffff9081169082161015620001e4576200019a82806001600160e01b036200029f16565b60028054600181810190925560008051602062001c488339815191520182905580548082018255600082905260008051602062001cf2833981519152018290559092500162000170565b50620001fa81806001600160e01b036200029f16565b60046000015550506068805460ff19166001179055826200024d5760405162461bcd60e51b815260040180806020018281038252602581526020018062001c236025913960400191505060405180910390fd5b606c80546001600160a01b039586166001600160a01b031991821617909155606d80549286169282169290921790915560699290925550606e8054939092169216919091179055506200048c92505050565b600060008051602062001cb0833981519152831062000305576040805162461bcd60e51b815260206004820181905260248201527f5f6c6566742073686f756c6420626520696e7369646520746865206669656c64604482015290519081900360640190fd5b60008051602062001cb08339815191528210620003545760405162461bcd60e51b815260040180806020018281038252602181526020018062001c686021913960400191505060405180910390fd5b6040805163f47d33b560e01b81526004810185905260006024820181905282518693919273__Hasher________________________________9263f47d33b592604480840193829003018186803b158015620003af57600080fd5b505af4158015620003c4573d6000803e3d6000fd5b505050506040513d6040811015620003db57600080fd5b508051602090910151909250905060008051602062001cb0833981519152848308915073__Hasher________________________________63f47d33b583836040518363ffffffff1660e01b81526004018083815260200182815260200192505050604080518083038186803b1580156200045557600080fd5b505af41580156200046a573d6000803e3d6000fd5b505050506040513d60408110156200048157600080fd5b505195945050505050565b611787806200049c6000396000f3fe60806040526004361061014b5760003560e01c806397fc007c116100b6578063e5285dcc1161006f578063e5285dcc14610514578063e82955881461053e578063ec73295914610568578063f178e47c1461057d578063fc0c546a146105a7578063fc7e9c6f146105bc5761014b565b806397fc007c146103a55780639fa12d0b146103d8578063b214faa5146104a3578063ba70f757146104c0578063c2b40ae4146104d5578063cd87a3b4146104ff5761014b565b80634ecf518b116101085780634ecf518b146102e4578063570ca735146103125780636d9833e314610327578063839df945146103515780638bca6d161461037b57806390eeb02b146103905761014b565b806306394c9b1461015057806317cc915c1461018557806321a0adb6146101c35780632b7ac3f31461025c57806338bf282e1461028d578063414a37ba146102cf575b600080fd5b34801561015c57600080fd5b506101836004803603602081101561017357600080fd5b50356001600160a01b03166105d1565b005b34801561019157600080fd5b506101af600480360360208110156101a857600080fd5b503561063c565b604080519115158252519081900360200190f35b610183600480360360e08110156101d957600080fd5b810190602081018135600160201b8111156101f357600080fd5b82018360208201111561020557600080fd5b803590602001918460018302840111600160201b8311171561022657600080fd5b91935091508035906020810135906001600160a01b03604082013581169160608101359091169060808101359060a00135610651565b34801561026857600080fd5b5061027161099e565b604080516001600160a01b039092168252519081900360200190f35b34801561029957600080fd5b506102bd600480360360408110156102b057600080fd5b50803590602001356109ad565b60408051918252519081900360200190f35b3480156102db57600080fd5b506102bd610b8e565b3480156102f057600080fd5b506102f9610ba0565b6040805163ffffffff9092168252519081900360200190f35b34801561031e57600080fd5b50610271610bac565b34801561033357600080fd5b506101af6004803603602081101561034a57600080fd5b5035610bbb565b34801561035d57600080fd5b506101af6004803603602081101561037457600080fd5b5035610c2e565b34801561038757600080fd5b506102bd610c43565b34801561039c57600080fd5b506102f9610c49565b3480156103b157600080fd5b50610183600480360360208110156103c857600080fd5b50356001600160a01b0316610c55565b3480156103e457600080fd5b50610453600480360360208110156103fb57600080fd5b810190602081018135600160201b81111561041557600080fd5b82018360208201111561042757600080fd5b803590602001918460208302840111600160201b8311171561044857600080fd5b509092509050610cc0565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561048f578181015183820152602001610477565b505050509050019250505060405180910390f35b610183600480360360208110156104b957600080fd5b5035610d48565b3480156104cc57600080fd5b506102bd610e75565b3480156104e157600080fd5b506102bd600480360360208110156104f857600080fd5b5035610e95565b34801561050b57600080fd5b506102f9610ea9565b34801561052057600080fd5b506101af6004803603602081101561053757600080fd5b5035610eae565b34801561054a57600080fd5b506102bd6004803603602081101561056157600080fd5b5035610ec3565b34801561057457600080fd5b506102bd610ee1565b34801561058957600080fd5b506102bd600480360360208110156105a057600080fd5b5035610f05565b3480156105b357600080fd5b50610271610f12565b3480156105c857600080fd5b506102f9610f21565b606d546001600160a01b0316331461061a5760405162461bcd60e51b815260040180806020018281038252602581526020018061172e6025913960400191505060405180910390fd5b606d80546001600160a01b0319166001600160a01b0392909216919091179055565b606a6020526000908152604090205460ff1681565b60685460ff166106a8576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6068805460ff19169055606954821115610709576040805162461bcd60e51b815260206004820152601a60248201527f4665652065786365656473207472616e736665722076616c7565000000000000604482015290519081900360640190fd5b6000858152606a602052604090205460ff161561076d576040805162461bcd60e51b815260206004820152601f60248201527f546865206e6f746520686173206265656e20616c7265616479207370656e7400604482015290519081900360640190fd5b61077686610bbb565b6107c7576040805162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742066696e6420796f7572206d65726b6c6520726f6f7400000000604482015290519081900360640190fd5b606c546040805160c08082018352898252602082018990526001600160a01b038881168385015287811660608401526080830187905260a08301869052925163695ef6f960e01b8152929093169263695ef6f9928c928c9290916004810191829160240190849080838360005b8381101561084c578181015183820152602001610834565b505050509050018281038252858582818152602001925080828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b15801561089e57600080fd5b505af11580156108b2573d6000803e3d6000fd5b505050506040513d60208110156108c857600080fd5b5051610914576040805162461bcd60e51b815260206004820152601660248201527524b73b30b634b2103bb4ba34323930bb90383937b7b360511b604482015290519081900360640190fd5b6000858152606a60205260409020805460ff1916600117905561093984848484610f34565b604080516001600160a01b038681168252602082018890528183018590529151918516917fe9e508bad6d4c3227e881ca19068f099da81b5164dd6d62b2eaf1e8bc6c349319181900360600190a250506068805460ff19166001179055505050505050565b606c546001600160a01b031681565b60006000805160206116bd8339815191528310610a11576040805162461bcd60e51b815260206004820181905260248201527f5f6c6566742073686f756c6420626520696e7369646520746865206669656c64604482015290519081900360640190fd5b6000805160206116bd8339815191528210610a5d5760405162461bcd60e51b815260040180806020018281038252602181526020018061166d6021913960400191505060405180910390fd5b6040805163f47d33b560e01b81526004810185905260006024820181905282518693919273__Hasher________________________________9263f47d33b592604480840193829003018186803b158015610ab757600080fd5b505af4158015610acb573d6000803e3d6000fd5b505050506040513d6040811015610ae157600080fd5b50805160209091015190925090506000805160206116bd833981519152848308915073__Hasher________________________________63f47d33b583836040518363ffffffff1660e01b81526004018083815260200182815260200192505050604080518083038186803b158015610b5957600080fd5b505af4158015610b6d573d6000803e3d6000fd5b505050506040513d6040811015610b8357600080fd5b505195945050505050565b6000805160206116bd83398151915281565b60005463ffffffff1681565b606d546001600160a01b031681565b600081610bca57506000610c29565b60035463ffffffff165b60048163ffffffff1660648110610be757fe5b0154831415610bfa576001915050610c29565b63ffffffff8116610c09575060645b6003546000199091019063ffffffff80831691161415610bd45760009150505b919050565b606b6020526000908152604090205460ff1681565b60695481565b60035463ffffffff1681565b606d546001600160a01b03163314610c9e5760405162461bcd60e51b815260040180806020018281038252602581526020018061172e6025913960400191505060405180910390fd5b606c80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518281526020808402820101909152606090828015610cec578160200160208202803883390190505b50905060005b82811015610d4157610d15848483818110610d0957fe5b90506020020135610eae565b15610d39576001828281518110610d2857fe5b911515602092830291909101909101525b600101610cf2565b5092915050565b60685460ff16610d9f576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6068805460ff191690556000818152606b602052604090205460ff1615610df75760405162461bcd60e51b81526004018080602001828103825260218152602001806116dd6021913960400191505060405180910390fd5b6000610e028261102f565b6000838152606b60205260409020805460ff191660011790559050610e256111c6565b6040805163ffffffff83168152426020820152815184927fa945e51eec50ab98c161376f0db4cf2aeba3ec92755fe2fcd388bdbbb80ff196928290030190a250506068805460ff19166001179055565b60035460009060049063ffffffff1660648110610e8e57fe5b0154905090565b60048160648110610ea257fe5b0154905081565b606481565b6000908152606a602052604090205460ff1690565b60028181548110610ed057fe5b600091825260209091200154905081565b7f2fe54c60d3acabf3343a35b6eba15db4821b340f76e741e2249685ed4899af6c81565b60018181548110610ed057fe5b606e546001600160a01b031681565b600354600160201b900463ffffffff1681565b803414610f725760405162461bcd60e51b81526004018080602001828103825260308152602001806116166030913960400191505060405180910390fd5b610f80848360695403611212565b8115610f9057610f908383611212565b8015611029576040516000906001600160a01b0386169083908381818185875af1925050503d8060008114610fe1576040519150601f19603f3d011682016040523d82523d6000602084013e610fe6565b606091505b5050905080611027576040516001600160a01b0385169083156108fc029084906000818181858888f19350505050158015611025573d6000803e3d6000fd5b505b505b50505050565b60035460008054909163ffffffff600160201b909104811691811660020a1681141561108c5760405162461bcd60e51b815260040180806020018281038252602f8152602001806115bd602f913960400191505060405180910390fd5b6003805463ffffffff600160201b80830482166001019091160267ffffffff000000001990911617905582600080805b60005463ffffffff908116908216101561116457600185166111205783925060028163ffffffff16815481106110ee57fe5b906000526020600020015491508360018263ffffffff168154811061110f57fe5b600091825260209091200155611144565b60018163ffffffff168154811061113357fe5b906000526020600020015492508391505b61114e83836109ad565b9350600263ffffffff86160494506001016110bc565b5060035460649063ffffffff908116600101166003805463ffffffff19169290910663ffffffff9081169290921790819055849160049116606481106111a657fe5b01555050600354600160201b900463ffffffff1660001901949350505050565b34156112035760405162461bcd60e51b81526004018080602001828103825260308152602001806116fe6030913960400191505060405180910390fd5b61121033306069546113dd565b565b606e54604080516001600160a01b038581166024830152604480830186905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000956060959316939282918083835b6020831061128f5780518252601f199092019160209182019101611270565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146112f1576040519150601f19603f3d011682016040523d82523d6000602084013e6112f6565b606091505b509150915081611341576040805162461bcd60e51b81526020600482015260116024820152706e6f7420656e6f75676820746f6b656e7360781b604482015290519081900360640190fd5b8051156110295780516020146113885760405162461bcd60e51b815260040180806020018281038252602a8152602001806115ec602a913960400191505060405180910390fd5b80806020019051602081101561139d57600080fd5b50519150816110295760405162461bcd60e51b81526004018080602001828103825260278152602001806116466027913960400191505060405180910390fd5b606e54604080516001600160a01b0386811660248301528581166044830152606480830186905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b178152925182516000956060959316939282918083835b602083106114625780518252601f199092019160209182019101611443565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146114c4576040519150601f19603f3d011682016040523d82523d6000602084013e6114c9565b606091505b509150915081611520576040805162461bcd60e51b815260206004820152601960248201527f6e6f7420656e6f75676820616c6c6f77656420746f6b656e7300000000000000604482015290519081900360640190fd5b8051156110275780516020146115675760405162461bcd60e51b815260040180806020018281038252602a8152602001806115ec602a913960400191505060405180910390fd5b80806020019051602081101561157c57600080fd5b50519150816110275760405162461bcd60e51b815260040180806020018281038252602f81526020018061168e602f913960400191505060405180910390fdfe4d65726b6c6520747265652069732066756c6c2e204e6f206d6f7265206c656166732063616e20626520616464656464617461206c656e6774682073686f756c64206265206569746865722030206f72203332206279746573496e636f727265637420726566756e6420616d6f756e742072656365697665642062792074686520636f6e74726163746e6f7420656e6f75676820746f6b656e732e20546f6b656e2072657475726e732066616c73652e5f72696768742073686f756c6420626520696e7369646520746865206669656c646e6f7420656e6f75676820616c6c6f77656420746f6b656e732e20546f6b656e2072657475726e732066616c73652e30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000154686520636f6d6d69746d656e7420686173206265656e207375626d69747465644554482076616c756520697320737570706f73656420746f206265203020666f7220455243323020696e7374616e63654f6e6c79206f70657261746f722063616e2063616c6c20746869732066756e6374696f6e2ea265627a7a72315820494b71139a3b0e5b3d4285ff58127e5c54881ed5204c3d740b94c1c4832e681c64736f6c6343000511003264656e6f6d696e6174696f6e2073686f756c642062652067726561746572207468616e2030405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace5f72696768742073686f756c6420626520696e7369646520746865206669656c645f747265654c6576656c732073686f756c642062652067726561746572207468616e207a65726f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000015f747265654c6576656c732073686f756c64206265206c657373207468616e203332b10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6", - "deployedBytecode": "0x60806040526004361061014b5760003560e01c806397fc007c116100b6578063e5285dcc1161006f578063e5285dcc14610514578063e82955881461053e578063ec73295914610568578063f178e47c1461057d578063fc0c546a146105a7578063fc7e9c6f146105bc5761014b565b806397fc007c146103a55780639fa12d0b146103d8578063b214faa5146104a3578063ba70f757146104c0578063c2b40ae4146104d5578063cd87a3b4146104ff5761014b565b80634ecf518b116101085780634ecf518b146102e4578063570ca735146103125780636d9833e314610327578063839df945146103515780638bca6d161461037b57806390eeb02b146103905761014b565b806306394c9b1461015057806317cc915c1461018557806321a0adb6146101c35780632b7ac3f31461025c57806338bf282e1461028d578063414a37ba146102cf575b600080fd5b34801561015c57600080fd5b506101836004803603602081101561017357600080fd5b50356001600160a01b03166105d1565b005b34801561019157600080fd5b506101af600480360360208110156101a857600080fd5b503561063c565b604080519115158252519081900360200190f35b610183600480360360e08110156101d957600080fd5b810190602081018135600160201b8111156101f357600080fd5b82018360208201111561020557600080fd5b803590602001918460018302840111600160201b8311171561022657600080fd5b91935091508035906020810135906001600160a01b03604082013581169160608101359091169060808101359060a00135610651565b34801561026857600080fd5b5061027161099e565b604080516001600160a01b039092168252519081900360200190f35b34801561029957600080fd5b506102bd600480360360408110156102b057600080fd5b50803590602001356109ad565b60408051918252519081900360200190f35b3480156102db57600080fd5b506102bd610b8e565b3480156102f057600080fd5b506102f9610ba0565b6040805163ffffffff9092168252519081900360200190f35b34801561031e57600080fd5b50610271610bac565b34801561033357600080fd5b506101af6004803603602081101561034a57600080fd5b5035610bbb565b34801561035d57600080fd5b506101af6004803603602081101561037457600080fd5b5035610c2e565b34801561038757600080fd5b506102bd610c43565b34801561039c57600080fd5b506102f9610c49565b3480156103b157600080fd5b50610183600480360360208110156103c857600080fd5b50356001600160a01b0316610c55565b3480156103e457600080fd5b50610453600480360360208110156103fb57600080fd5b810190602081018135600160201b81111561041557600080fd5b82018360208201111561042757600080fd5b803590602001918460208302840111600160201b8311171561044857600080fd5b509092509050610cc0565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561048f578181015183820152602001610477565b505050509050019250505060405180910390f35b610183600480360360208110156104b957600080fd5b5035610d48565b3480156104cc57600080fd5b506102bd610e75565b3480156104e157600080fd5b506102bd600480360360208110156104f857600080fd5b5035610e95565b34801561050b57600080fd5b506102f9610ea9565b34801561052057600080fd5b506101af6004803603602081101561053757600080fd5b5035610eae565b34801561054a57600080fd5b506102bd6004803603602081101561056157600080fd5b5035610ec3565b34801561057457600080fd5b506102bd610ee1565b34801561058957600080fd5b506102bd600480360360208110156105a057600080fd5b5035610f05565b3480156105b357600080fd5b50610271610f12565b3480156105c857600080fd5b506102f9610f21565b606d546001600160a01b0316331461061a5760405162461bcd60e51b815260040180806020018281038252602581526020018061172e6025913960400191505060405180910390fd5b606d80546001600160a01b0319166001600160a01b0392909216919091179055565b606a6020526000908152604090205460ff1681565b60685460ff166106a8576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6068805460ff19169055606954821115610709576040805162461bcd60e51b815260206004820152601a60248201527f4665652065786365656473207472616e736665722076616c7565000000000000604482015290519081900360640190fd5b6000858152606a602052604090205460ff161561076d576040805162461bcd60e51b815260206004820152601f60248201527f546865206e6f746520686173206265656e20616c7265616479207370656e7400604482015290519081900360640190fd5b61077686610bbb565b6107c7576040805162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742066696e6420796f7572206d65726b6c6520726f6f7400000000604482015290519081900360640190fd5b606c546040805160c08082018352898252602082018990526001600160a01b038881168385015287811660608401526080830187905260a08301869052925163695ef6f960e01b8152929093169263695ef6f9928c928c9290916004810191829160240190849080838360005b8381101561084c578181015183820152602001610834565b505050509050018281038252858582818152602001925080828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b15801561089e57600080fd5b505af11580156108b2573d6000803e3d6000fd5b505050506040513d60208110156108c857600080fd5b5051610914576040805162461bcd60e51b815260206004820152601660248201527524b73b30b634b2103bb4ba34323930bb90383937b7b360511b604482015290519081900360640190fd5b6000858152606a60205260409020805460ff1916600117905561093984848484610f34565b604080516001600160a01b038681168252602082018890528183018590529151918516917fe9e508bad6d4c3227e881ca19068f099da81b5164dd6d62b2eaf1e8bc6c349319181900360600190a250506068805460ff19166001179055505050505050565b606c546001600160a01b031681565b60006000805160206116bd8339815191528310610a11576040805162461bcd60e51b815260206004820181905260248201527f5f6c6566742073686f756c6420626520696e7369646520746865206669656c64604482015290519081900360640190fd5b6000805160206116bd8339815191528210610a5d5760405162461bcd60e51b815260040180806020018281038252602181526020018061166d6021913960400191505060405180910390fd5b6040805163f47d33b560e01b81526004810185905260006024820181905282518693919273__Hasher________________________________9263f47d33b592604480840193829003018186803b158015610ab757600080fd5b505af4158015610acb573d6000803e3d6000fd5b505050506040513d6040811015610ae157600080fd5b50805160209091015190925090506000805160206116bd833981519152848308915073__Hasher________________________________63f47d33b583836040518363ffffffff1660e01b81526004018083815260200182815260200192505050604080518083038186803b158015610b5957600080fd5b505af4158015610b6d573d6000803e3d6000fd5b505050506040513d6040811015610b8357600080fd5b505195945050505050565b6000805160206116bd83398151915281565b60005463ffffffff1681565b606d546001600160a01b031681565b600081610bca57506000610c29565b60035463ffffffff165b60048163ffffffff1660648110610be757fe5b0154831415610bfa576001915050610c29565b63ffffffff8116610c09575060645b6003546000199091019063ffffffff80831691161415610bd45760009150505b919050565b606b6020526000908152604090205460ff1681565b60695481565b60035463ffffffff1681565b606d546001600160a01b03163314610c9e5760405162461bcd60e51b815260040180806020018281038252602581526020018061172e6025913960400191505060405180910390fd5b606c80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518281526020808402820101909152606090828015610cec578160200160208202803883390190505b50905060005b82811015610d4157610d15848483818110610d0957fe5b90506020020135610eae565b15610d39576001828281518110610d2857fe5b911515602092830291909101909101525b600101610cf2565b5092915050565b60685460ff16610d9f576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6068805460ff191690556000818152606b602052604090205460ff1615610df75760405162461bcd60e51b81526004018080602001828103825260218152602001806116dd6021913960400191505060405180910390fd5b6000610e028261102f565b6000838152606b60205260409020805460ff191660011790559050610e256111c6565b6040805163ffffffff83168152426020820152815184927fa945e51eec50ab98c161376f0db4cf2aeba3ec92755fe2fcd388bdbbb80ff196928290030190a250506068805460ff19166001179055565b60035460009060049063ffffffff1660648110610e8e57fe5b0154905090565b60048160648110610ea257fe5b0154905081565b606481565b6000908152606a602052604090205460ff1690565b60028181548110610ed057fe5b600091825260209091200154905081565b7f2fe54c60d3acabf3343a35b6eba15db4821b340f76e741e2249685ed4899af6c81565b60018181548110610ed057fe5b606e546001600160a01b031681565b600354600160201b900463ffffffff1681565b803414610f725760405162461bcd60e51b81526004018080602001828103825260308152602001806116166030913960400191505060405180910390fd5b610f80848360695403611212565b8115610f9057610f908383611212565b8015611029576040516000906001600160a01b0386169083908381818185875af1925050503d8060008114610fe1576040519150601f19603f3d011682016040523d82523d6000602084013e610fe6565b606091505b5050905080611027576040516001600160a01b0385169083156108fc029084906000818181858888f19350505050158015611025573d6000803e3d6000fd5b505b505b50505050565b60035460008054909163ffffffff600160201b909104811691811660020a1681141561108c5760405162461bcd60e51b815260040180806020018281038252602f8152602001806115bd602f913960400191505060405180910390fd5b6003805463ffffffff600160201b80830482166001019091160267ffffffff000000001990911617905582600080805b60005463ffffffff908116908216101561116457600185166111205783925060028163ffffffff16815481106110ee57fe5b906000526020600020015491508360018263ffffffff168154811061110f57fe5b600091825260209091200155611144565b60018163ffffffff168154811061113357fe5b906000526020600020015492508391505b61114e83836109ad565b9350600263ffffffff86160494506001016110bc565b5060035460649063ffffffff908116600101166003805463ffffffff19169290910663ffffffff9081169290921790819055849160049116606481106111a657fe5b01555050600354600160201b900463ffffffff1660001901949350505050565b34156112035760405162461bcd60e51b81526004018080602001828103825260308152602001806116fe6030913960400191505060405180910390fd5b61121033306069546113dd565b565b606e54604080516001600160a01b038581166024830152604480830186905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000956060959316939282918083835b6020831061128f5780518252601f199092019160209182019101611270565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146112f1576040519150601f19603f3d011682016040523d82523d6000602084013e6112f6565b606091505b509150915081611341576040805162461bcd60e51b81526020600482015260116024820152706e6f7420656e6f75676820746f6b656e7360781b604482015290519081900360640190fd5b8051156110295780516020146113885760405162461bcd60e51b815260040180806020018281038252602a8152602001806115ec602a913960400191505060405180910390fd5b80806020019051602081101561139d57600080fd5b50519150816110295760405162461bcd60e51b81526004018080602001828103825260278152602001806116466027913960400191505060405180910390fd5b606e54604080516001600160a01b0386811660248301528581166044830152606480830186905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b178152925182516000956060959316939282918083835b602083106114625780518252601f199092019160209182019101611443565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146114c4576040519150601f19603f3d011682016040523d82523d6000602084013e6114c9565b606091505b509150915081611520576040805162461bcd60e51b815260206004820152601960248201527f6e6f7420656e6f75676820616c6c6f77656420746f6b656e7300000000000000604482015290519081900360640190fd5b8051156110275780516020146115675760405162461bcd60e51b815260040180806020018281038252602a8152602001806115ec602a913960400191505060405180910390fd5b80806020019051602081101561157c57600080fd5b50519150816110275760405162461bcd60e51b815260040180806020018281038252602f81526020018061168e602f913960400191505060405180910390fdfe4d65726b6c6520747265652069732066756c6c2e204e6f206d6f7265206c656166732063616e20626520616464656464617461206c656e6774682073686f756c64206265206569746865722030206f72203332206279746573496e636f727265637420726566756e6420616d6f756e742072656365697665642062792074686520636f6e74726163746e6f7420656e6f75676820746f6b656e732e20546f6b656e2072657475726e732066616c73652e5f72696768742073686f756c6420626520696e7369646520746865206669656c646e6f7420656e6f75676820616c6c6f77656420746f6b656e732e20546f6b656e2072657475726e732066616c73652e30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000154686520636f6d6d69746d656e7420686173206265656e207375626d69747465644554482076616c756520697320737570706f73656420746f206265203020666f7220455243323020696e7374616e63654f6e6c79206f70657261746f722063616e2063616c6c20746869732066756e6374696f6e2ea265627a7a72315820494b71139a3b0e5b3d4285ff58127e5c54881ed5204c3d740b94c1c4832e681c64736f6c63430005110032", - "sourceMap": "805:2189:0:-;;;1430:34:2;;;-1:-1:-1;;;;;;1468:27:2;;;867:237:0;5:2:-1;;;;30:1;27;20:12;5:2;867:237:0;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;867:237:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1646:15:2;;;1638:67;;;;-1:-1:-1;;;1638:67:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1733:2;1719:11;:16;;;1711:63;;;;-1:-1:-1;;;1711:63:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1780:6;:20;;-1:-1:-1;;1780:20:2;;;;;;;1854:5;27:10:-1;;-1:-1;23:18;;;45:23;;;1088:77:2;-1:-1:-1;;;;;;;;;;;1854:23:2;;;;;;27:10:-1;;23:18;;;45:23;;1883:32:2;;;;-1:-1:-1;;;;;;;;;;;1883:32:2;;;;;;1922:175;1945:6;;;;;;1941:10;;;;1922:175;;;1980:39;1994:11;;-1:-1:-1;;;;;1980:13:2;:39;:::i;:::-;2027:5;27:10:-1;;39:1;23:18;;;45:23;;;-1:-1;;;;;;;;;;;2027:23:2;;;;27:10:-1;;23:18;;;45:23;;-1:-1;2058:32:2;;;-1:-1:-1;;;;;;;;;;;2058:32:2;;;;1966:53;;-1:-1:-1;1953:3:2;1922:175;;;-1:-1:-1;2114:39:2;2128:11;;-1:-1:-1;;;;;2114:13:2;:39;:::i;:::-;2103:5;2109:1;2103:8;:50;-1:-1:-1;;1421:11:18;:18;;-1:-1:-1;;1421:18:18;1435:4;1421:18;;;2260:17:8;2252:67;;;;-1:-1:-1;;;2252:67:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2325:8;:20;;-1:-1:-1;;;;;2325:20:8;;;-1:-1:-1;;;;;;2325:20:8;;;;;;;2351:8;:20;;;;;;;;;;;;;;;2377:12;:28;;;;-1:-1:-1;1085:5:0;:14;;;;;;;;;;;;;;-1:-1:-1;805:2189:0;;-1:-1:-1;;;805:2189:0;2230:445:2;2305:7;-1:-1:-1;;;;;;;;;;;2328:27:2;;2320:72;;;;;-1:-1:-1;;;2320:72:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2406:28:2;;2398:74;;;;-1:-1:-1;;;2398:74:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2538:23;;;-1:-1:-1;;;2538:23:2;;;;;;;;2478:9;2538:23;;;;;;;;2498:5;;2478:9;;2538:6;;:17;;:23;;;;;;;;;;:6;:23;;;5:2:-1;;;;30:1;27;20:12;5:2;2538:23:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2538:23:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2538:23:2;;;;;;;;;-1:-1:-1;2538:23:2;-1:-1:-1;;;;;;;;;;;;2589:6:2;2578:1;2571:38;2567:42;;2624:6;:17;2642:1;2645;2624:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2624:23:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2624:23:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2624:23:2;;2230:445;-1:-1:-1;;;;;2230:445:2:o;805:2189:0:-;;;;;;;", - "deployedSourceMap": "805:2189:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5355:102:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5355:102:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5355:102:8;-1:-1:-1;;;;;5355:102:8;;:::i;:::-;;1089:47;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1089:47:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1089:47:8;;:::i;:::-;;;;;;;;;;;;;;;;;;3478:781;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;3478:781:8;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;3478:781:8;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3478:781:8;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;3478:781:8;;-1:-1:-1;3478:781:8;-1:-1:-1;3478:781:8;;;;;;;;-1:-1:-1;;;;;3478:781:8;;;;;;;;;;;;;;;;;;;;;;;;:::i;1278:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1278:25:8;;;:::i;:::-;;;;-1:-1:-1;;;;;1278:25:8;;;;;;;;;;;;;;2230:445:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2230:445:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2230:445:2;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;933:114;;8:9:-1;5:2;;;30:1;27;20:12;5:2;933:114:2;;;:::i;1209:20::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1209:20:2;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1463:23:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1463:23:8;;;:::i;3553:342:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3553:342:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3553:342:2;;:::i;1231:43:8:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1231:43:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1231:43:8;;:::i;1058:27::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1058:27:8;;;:::i;1430:34:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1430:34:2;;;:::i;5192:113:8:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5192:113:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5192:113:8;-1:-1:-1;;;;;5192:113:8;;:::i;4669:293::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4669:293:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4669:293:8;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;4669:293:8;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4669:293:8;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;4669:293:8;;-1:-1:-1;4669:293:8;-1:-1:-1;4669:293:8;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4669:293:8;;;;;;;;;;;;;;;;;2658:324;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2658:324:8;;:::i;3941:93:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3941:93:2;;;:::i;1549:39::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1549:39:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1549:39:2;;:::i;1499:46::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1499:46:2;;;:::i;4492:116:8:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4492:116:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4492:116:8;;:::i;1404:22:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1404:22:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1404:22:2;;:::i;1051:114::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1051:114:2;;;:::i;1369:31::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1369:31:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1369:31:2;;:::i;842:20:0:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;842:20:0;;;:::i;1468:27:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1468:27:2;;;:::i;5355:102:8:-;1540:8;;-1:-1:-1;;;;;1540:8:8;1526:10;:22;1518:72;;;;-1:-1:-1;;;1518:72:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5429:8;:23;;-1:-1:-1;;;;;;5429:23:8;-1:-1:-1;;;;;5429:23:8;;;;;;;;;;5355:102::o;1089:47::-;;;;;;;;;;;;;;;:::o;3478:781::-;1934:11:18;;;;1926:55;;;;;-1:-1:-1;;;1926:55:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;2056:11;:19;;-1:-1:-1;;2056:19:18;;;3695:12:8;;3687:20;;;3679:59;;;;;-1:-1:-1;;;3679:59:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;3753:31;;;;:15;:31;;;;;;;;3752:32;3744:76;;;;;-1:-1:-1;;;3744:76:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;3834:18;3846:5;3834:11;:18::i;:::-;3826:59;;;;;-1:-1:-1;;;3826:59:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;3932:8;;:126;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4003:19:8;;;3932:126;;;;4024:17;;;3932:126;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3932:126:8;;:8;;;;;:20;;3953:6;;;;3932:126;;;;;;;;;;;;;;;;:8;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3932:126:8;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;3932:126:8;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3932:126:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3932:126:8;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3932:126:8;3924:161;;;;;-1:-1:-1;;;3924:161:8;;;;;;;;;;;;-1:-1:-1;;;3924:161:8;;;;;;;;;;;;;;;4092:31;;;;:15;:31;;;;;:38;;-1:-1:-1;;4092:38:8;4126:4;4092:38;;;4136:53;4153:10;4165:8;4175:4;4181:7;4136:16;:53::i;:::-;4200:54;;;-1:-1:-1;;;;;4200:54:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2230:11:18;:18;;-1:-1:-1;;2230:18:18;2244:4;2230:18;;;-1:-1:-1;;;;;;3478:781:8:o;1278:25::-;;;-1:-1:-1;;;;;1278:25:8;;:::o;2230:445:2:-;2305:7;-1:-1:-1;;;;;;;;;;;2328:27:2;;2320:72;;;;;-1:-1:-1;;;2320:72:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2406:28:2;;2398:74;;;;-1:-1:-1;;;2398:74:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2538:23;;;-1:-1:-1;;;2538:23:2;;;;;;;;2478:9;2538:23;;;;;;;;2498:5;;2478:9;;2538:6;;:17;;:23;;;;;;;;;;:6;:23;;;5:2:-1;;;;30:1;27;20:12;5:2;2538:23:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2538:23:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2538:23:2;;;;;;;;;-1:-1:-1;2538:23:2;-1:-1:-1;;;;;;;;;;;;2589:6:2;2578:1;2571:38;2567:42;;2624:6;:17;2642:1;2645;2624:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2624:23:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2624:23:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2624:23:2;;2230:445;-1:-1:-1;;;;;2230:445:2:o;933:114::-;-1:-1:-1;;;;;;;;;;;933:114:2;:::o;1209:20::-;;;;;;:::o;1463:23:8:-;;;-1:-1:-1;;;;;1463:23:8;;:::o;3553:342:2:-;3609:4;3625:10;3621:43;;-1:-1:-1;3652:5:2;3645:12;;3621:43;3680:16;;;;3702:171;3726:5;3732:1;3726:8;;;;;;;;;;;3717:5;:17;3713:53;;;3753:4;3746:11;;;;;3713:53;3777:6;;;3773:52;;-1:-1:-1;1542:3:2;3773:52;3855:16;;-1:-1:-1;;3832:3:2;;;;3855:16;3850:21;;;3855:16;;3850:21;;3702:171;;3885:5;3878:12;;;3553:342;;;;:::o;1231:43:8:-;;;;;;;;;;;;;;;:::o;1058:27::-;;;;:::o;1430:34:2:-;;;;;;:::o;5192:113:8:-;1540:8;;-1:-1:-1;;;;;1540:8:8;1526:10;:22;1518:72;;;;-1:-1:-1;;;1518:72:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5266:8;:34;;-1:-1:-1;;;;;;5266:34:8;-1:-1:-1;;;;;5266:34:8;;;;;;;;;;5192:113::o;4669:293::-;4785:35;;;;;;;;;;;;;;;;4750:19;;4796:16;4785:35;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;4785:35:8;-1:-1:-1;4777:43:8;-1:-1:-1;4830:6:8;4826:132;4842:27;;;4826:132;;;4888:28;4896:16;;4913:1;4896:19;;;;;;;;;;;;;4888:7;:28::i;:::-;4884:68;;;4939:4;4928:5;4934:1;4928:8;;;;;;;;:15;;;:8;;;;;;;;;;;:15;4884:68;4871:3;;4826:132;;;;4669:293;;;;:::o;2658:324::-;1934:11:18;;;;1926:55;;;;;-1:-1:-1;;;1926:55:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;2056:11;:19;;-1:-1:-1;;2056:19:18;;;2070:5;2741:24:8;;;:11;:24;;;;;;2056:19:18;2741:24:8;2740:25;2732:71;;;;-1:-1:-1;;;2732:71:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2810:20;2833;2841:11;2833:7;:20::i;:::-;2859:24;;;;:11;:24;;;;;:31;;-1:-1:-1;;2859:31:8;2886:4;2859:31;;;2810:43;-1:-1:-1;2896:17:8;:15;:17::i;:::-;2925:52;;;;;;;;2961:15;2925:52;;;;;;2933:11;;2925:52;;;;;;;;-1:-1:-1;;2230:11:18;:18;;-1:-1:-1;;2230:18:18;2244:4;2230:18;;;2658:324:8:o;3941:93:2:-;4012:16;;3984:7;;4006:5;;4012:16;;4006:23;;;;;;;;;3999:30;;3941:93;:::o;1549:39::-;;;;;;;;;;;;;-1:-1:-1;1549:39:2;:::o;1499:46::-;1542:3;1499:46;:::o;4492:116:8:-;4553:4;4572:31;;;:15;:31;;;;;;;;;4492:116::o;1404:22:2:-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1404:22:2;:::o;1051:114::-;1088:77;1051:114;:::o;1369:31::-;;;;;;;;;;842:20:0;;;-1:-1:-1;;;;;842:20:0;;:::o;1468:27:2:-;;;-1:-1:-1;;;1468:27:2;;;;;:::o;1303:547:0:-;1450:7;1437:9;:20;1429:81;;;;-1:-1:-1;;;1429:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1517:51;1536:10;1563:4;1548:12;;:19;1517:18;:51::i;:::-;1578:8;;1574:63;;1596:34;1615:8;1625:4;1596:18;:34::i;:::-;1647:11;;1643:203;;1687:34;;1669:12;;-1:-1:-1;;;;;1687:15:0;;;1709:7;;1669:12;1687:34;1669:12;1687:34;1709:7;1687:15;:34;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;1668:53:0;;;1734:7;1729:111;;1805:26;;-1:-1:-1;;;;;1805:17:0;;;:26;;;;;1823:7;;1805:26;;;;1823:7;1805:17;:26;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1805:26:0;1729:111;1643:203;;1303:547;;;;:::o;2679:802:2:-;2770:9;;2728:12;2820:6;;2728:12;;2770:9;-1:-1:-1;;;2770:9:2;;;;;;2820:6;;2816:1;2809:17;2793:33;;;;2785:93;;;;-1:-1:-1;;;2785:93:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2884:9;:14;;;-1:-1:-1;;;2884:14:2;;;;;2897:1;2884:14;;;;;-1:-1:-1;;2884:14:2;;;;;;2931:5;-1:-1:-1;;;2980:355:2;3003:6;;;;;;2999:10;;;;2980:355;;;3028:16;;;3024:225;;3068:16;3061:23;;3102:5;3108:1;3102:8;;;;;;;;;;;;;;;;;;3094:16;;3141;3121:14;3136:1;3121:17;;;;;;;;;;;;;;;;;;;:36;3024:225;;;3189:14;3204:1;3189:17;;;;;;;;;;;;;;;;;;3182:24;;3224:16;3216:24;;3024:225;3276:26;3290:4;3296:5;3276:13;:26::i;:::-;3257:45;-1:-1:-1;3327:1:2;3311:17;;;;;-1:-1:-1;3011:3:2;;2980:355;;;-1:-1:-1;3361:16:2;;1542:3;;3360:42;3361:16;;;;:20;3360:42;3341:16;:61;;-1:-1:-1;;3341:61:2;3360:42;;;;3341:61;;;;;;;;;;;;3434:16;;3408:5;;3414:16;3408:23;;;;;;;;:42;-1:-1:-1;;3463:9:2;;-1:-1:-1;;;3463:9:2;;;;-1:-1:-1;;3463:13:2;;2679:802;-1:-1:-1;;;;2679:802:2:o;1108:191:0:-;1158:9;:14;1150:75;;;;-1:-1:-1;;;1150:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1231:63;1254:10;1274:4;1281:12;;1231:22;:63::i;:::-;1108:191::o;2448:544::-;2557:5;;2568:63;;;-1:-1:-1;;;;;2568:63:0;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;2568:63:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2557:75:0;;;;2522:12;;2536:17;;2557:5;;;2568:63;2557:75;;;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;2557:75:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2521:111:0;;;;2646:7;2638:37;;;;;-1:-1:-1;;;2638:37:0;;;;;;;;;;;;-1:-1:-1;;;2638:37:0;;;;;;;;;;;;;;;2775:11;;:15;2771:217;;2808:4;:11;2823:2;2808:17;2800:72;;;;-1:-1:-1;;;2800:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2901:4;2890:24;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2890:24:0;;-1:-1:-1;2890:24:0;2922:59;;;;-1:-1:-1;;;2922:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1854:590;1982:5;;1993:74;;;-1:-1:-1;;;;;1993:74:0;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1993:74:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1982:86:0;;;;1947:12;;1961:17;;1982:5;;;1993:74;1982:86;;;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;1982:86:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;1946:122:0;;;;2082:7;2074:45;;;;;-1:-1:-1;;;2074:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;2219:11;;:15;2215:225;;2252:4;:11;2267:2;2252:17;2244:72;;;;-1:-1:-1;;;2244:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2345:4;2334:24;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2334:24:0;;-1:-1:-1;2334:24:0;2366:67;;;;-1:-1:-1;;;2366:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", - "source": "// https://tornado.cash\n/*\n* d888888P dP a88888b. dP\n* 88 88 d8' `88 88\n* 88 .d8888b. 88d888b. 88d888b. .d8888b. .d888b88 .d8888b. 88 .d8888b. .d8888b. 88d888b.\n* 88 88' `88 88' `88 88' `88 88' `88 88' `88 88' `88 88 88' `88 Y8ooooo. 88' `88\n* 88 88. .88 88 88 88 88. .88 88. .88 88. .88 dP Y8. .88 88. .88 88 88 88\n* dP `88888P' dP dP dP `88888P8 `88888P8 `88888P' 88 Y88888P' `88888P8 `88888P' dP dP\n* ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo\n*/\n\npragma solidity 0.5.17;\n\nimport \"./Tornado.sol\";\n\ncontract ERC20Tornado is Tornado {\n address public token;\n\n constructor(\n IVerifier _verifier,\n uint256 _denomination,\n uint32 _merkleTreeHeight,\n address _operator,\n address _token\n ) Tornado(_verifier, _denomination, _merkleTreeHeight, _operator) public {\n token = _token;\n }\n\n function _processDeposit() internal {\n require(msg.value == 0, \"ETH value is supposed to be 0 for ERC20 instance\");\n _safeErc20TransferFrom(msg.sender, address(this), denomination);\n }\n\n function _processWithdraw(address payable _recipient, address payable _relayer, uint256 _fee, uint256 _refund) internal {\n require(msg.value == _refund, \"Incorrect refund amount received by the contract\");\n\n _safeErc20Transfer(_recipient, denomination - _fee);\n if (_fee > 0) {\n _safeErc20Transfer(_relayer, _fee);\n }\n\n if (_refund > 0) {\n (bool success, ) = _recipient.call.value(_refund)(\"\");\n if (!success) {\n // let's return _refund back to the relayer\n _relayer.transfer(_refund);\n }\n }\n }\n\n function _safeErc20TransferFrom(address _from, address _to, uint256 _amount) internal {\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd /* transferFrom */, _from, _to, _amount));\n require(success, \"not enough allowed tokens\");\n\n // if contract returns some data lets make sure that is `true` according to standard\n if (data.length > 0) {\n require(data.length == 32, \"data length should be either 0 or 32 bytes\");\n success = abi.decode(data, (bool));\n require(success, \"not enough allowed tokens. Token returns false.\");\n }\n }\n\n function _safeErc20Transfer(address _to, uint256 _amount) internal {\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb /* transfer */, _to, _amount));\n require(success, \"not enough tokens\");\n\n // if contract returns some data lets make sure that is `true` according to standard\n if (data.length > 0) {\n require(data.length == 32, \"data length should be either 0 or 32 bytes\");\n success = abi.decode(data, (bool));\n require(success, \"not enough tokens. Token returns false.\");\n }\n }\n}\n", + "metadata": "{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVerifier\",\"name\":\"_verifier\",\"type\":\"address\"},{\"internalType\":\"contract IFeeManager\",\"name\":\"_feeManager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_denomination\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_merkleTreeHeight\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"leafIndex\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"nullifierHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"Withdrawal\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"FIELD_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"ROOT_HISTORY_SIZE\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"ZERO_VALUE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newOperator\",\"type\":\"address\"}],\"name\":\"changeOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"commitments\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"currentRootIndex\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"denomination\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_commitment\",\"type\":\"bytes32\"}],\"name\":\"deposit\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeManager\",\"outputs\":[{\"internalType\":\"contract IFeeManager\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"filledSubtrees\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getLastRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_left\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_right\",\"type\":\"bytes32\"}],\"name\":\"hashLeftRight\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_root\",\"type\":\"bytes32\"}],\"name\":\"isKnownRoot\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_nullifierHash\",\"type\":\"bytes32\"}],\"name\":\"isSpent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"_nullifierHashes\",\"type\":\"bytes32[]\"}],\"name\":\"isSpentArray\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"spent\",\"type\":\"bool[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"levels\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"nextIndex\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"nullifierHashes\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"operator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"protocolFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"roots\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newVerifier\",\"type\":\"address\"}],\"name\":\"updateVerifier\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"verifier\",\"outputs\":[{\"internalType\":\"contract IVerifier\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_proof\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"_root\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_nullifierHash\",\"type\":\"bytes32\"},{\"internalType\":\"address payable\",\"name\":\"_recipient\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"_relayer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_refund\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"zeros\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"changeOperator(address)\":{\"details\":\"operator can change his address \"},\"deposit(bytes32)\":{\"details\":\"Deposit funds into the contract. The caller must send (for ETH) or approve (for ERC20) value equal to or `denomination` of this instance.\",\"params\":{\"_commitment\":\"the note commitment, which is PedersenHash(nullifier + secret)\"}},\"getLastRoot()\":{\"details\":\"Returns the last root\"},\"hashLeftRight(bytes32,bytes32)\":{\"details\":\"Hash 2 tree leaves, returns MiMC(_left, _right)\"},\"isKnownRoot(bytes32)\":{\"details\":\"Whether the root is present in the root history\"},\"isSpent(bytes32)\":{\"details\":\"whether a note is already spent \"},\"isSpentArray(bytes32[])\":{\"details\":\"whether an array of notes is already spent \"},\"updateVerifier(address)\":{\"details\":\"allow operator to update SNARK verification keys. This is needed to update keys after the final trusted setup ceremony is held. After that operator rights are supposed to be transferred to zero address\"},\"withdraw(bytes,bytes32,bytes32,address,address,uint256,uint256)\":{\"details\":\"Withdraw a deposit from the contract. `proof` is a zkSNARK proof data, and input is an array of circuit public inputs `input` array consists of: - merkle root of all deposits in the contract - hash of unique deposit nullifier to prevent double spends - the recipient of funds - optional fee that goes to the transaction sender (usually a relay)\"}}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/Users/brianli/dotfiles/tornado-core/contracts/ERC20Tornado.sol\":\"ERC20Tornado\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/brianli/dotfiles/tornado-core/contracts/ERC20Tornado.sol\":{\"keccak256\":\"0x5c57c88351063f1864166162f6f32be5aebae197a18abaef8d08d67b36440a51\",\"urls\":[\"bzz-raw://6da2d6faa828b1cad43428366d273e4aa61fc176d6541fb641028985497caa0f\",\"dweb:/ipfs/QmULz388t88hr999vUk5PidTTJwbEWGUyb3d6QGnDA6qoV\"]},\"/Users/brianli/dotfiles/tornado-core/contracts/MerkleTreeWithHistory.sol\":{\"keccak256\":\"0x671cc9268dd70c47d18795f7e37fc4df11763fcbcca026edcf163f4239036254\",\"urls\":[\"bzz-raw://9c36a207ed164b60a514eae89bfb15e5b4de4b346c4a89a7a1cb50a940bc699d\",\"dweb:/ipfs/QmbPEqFJAGMpYduLEFsbPazyBsYWcjRtpth8X26wCHALwk\"]},\"/Users/brianli/dotfiles/tornado-core/contracts/Tornado.sol\":{\"keccak256\":\"0xe7db8acb3efcecf95c7364f447ed1764c571dbf5090fd4641fe4668a965332eb\",\"urls\":[\"bzz-raw://45e790c247c38ed8ae473e3165c1148ea10a753cf6e9f9c8742394019be2aef6\",\"dweb:/ipfs/QmaGfk1ndvqur2NvCY3TWoKuorfBVShXeykKei18GDY582\"]},\"@openzeppelin/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0xb63221b23818d622bfd83d18e0968307e4fcb7a35536bdceded76e1cf8349acd\",\"urls\":[\"bzz-raw://44e1e8c22362c4708a8c3362735f1465f5b05e2f7315e16c7010d694ce019d73\",\"dweb:/ipfs/QmWj9g8X1hxkXRre2kwkEjLBetjuzmSbWHD81bsSojnBkS\"]}},\"version\":1}", + "bytecode": "0x6080604052600380546001600160401b03191690553480156200002157600080fd5b5060405162001e5838038062001e58833981810160405260c08110156200004757600080fd5b508051602082015160408301516060840151608085015160a090950151939492939192909185858585858163ffffffff8116620000b65760405162461bcd60e51b815260040180806020018281038252602781526020018062001dcf6027913960400191505060405180910390fd5b60208163ffffffff1610620000fd5760405162461bcd60e51b815260040180806020018281038252602281526020018062001e166022913960400191505060405180910390fd5b6000805463ffffffff191663ffffffff83161781556002805460018181019092557f2fe54c60d3acabf3343a35b6eba15db4821b340f76e741e2249685ed4899af6c60008051602062001d8e833981519152909101819055815480830183559282905260008051602062001e388339815191529092018290555b60005463ffffffff9081169082161015620001eb57620001a182806001600160e01b03620002ba16565b60028054600181810190925560008051602062001d8e8339815191520182905580548082018255600082905260008051602062001e38833981519152018290559092500162000177565b506200020181806001600160e01b03620002ba16565b60046000015550506068805460ff1916600117905582620002545760405162461bcd60e51b815260040180806020018281038252602581526020018062001d696025913960400191505060405180910390fd5b606c80546001600160a01b03199081166001600160a01b0397881617909155606d8054821695871695909517909455606e8054851691861691909117905550606955606f805490911691831691909117905560c8840460705550620004a7945050505050565b600060008051602062001df6833981519152831062000320576040805162461bcd60e51b815260206004820181905260248201527f5f6c6566742073686f756c6420626520696e7369646520746865206669656c64604482015290519081900360640190fd5b60008051602062001df683398151915282106200036f5760405162461bcd60e51b815260040180806020018281038252602181526020018062001dae6021913960400191505060405180910390fd5b6040805163f47d33b560e01b81526004810185905260006024820181905282518693919273__Hasher________________________________9263f47d33b592604480840193829003018186803b158015620003ca57600080fd5b505af4158015620003df573d6000803e3d6000fd5b505050506040513d6040811015620003f657600080fd5b508051602090910151909250905060008051602062001df6833981519152848308915073__Hasher________________________________63f47d33b583836040518363ffffffff1660e01b81526004018083815260200182815260200192505050604080518083038186803b1580156200047057600080fd5b505af415801562000485573d6000803e3d6000fd5b505050506040513d60408110156200049c57600080fd5b505195945050505050565b6118b280620004b76000396000f3fe6080604052600436106101815760003560e01c80639fa12d0b116100d1578063d0fb02031161008a578063ec73295911610064578063ec732959146105c8578063f178e47c146105dd578063fc0c546a14610607578063fc7e9c6f1461061c57610181565b8063d0fb02031461055f578063e5285dcc14610574578063e82955881461059e57610181565b80639fa12d0b1461040e578063b0e21e8a146104d9578063b214faa5146104ee578063ba70f7571461050b578063c2b40ae414610520578063cd87a3b41461054a57610181565b80634ecf518b1161013e578063839df94511610118578063839df945146103875780638bca6d16146103b157806390eeb02b146103c657806397fc007c146103db57610181565b80634ecf518b1461031a578063570ca735146103485780636d9833e31461035d57610181565b806306394c9b1461018657806317cc915c146101bb57806321a0adb6146101f95780632b7ac3f31461029257806338bf282e146102c3578063414a37ba14610305575b600080fd5b34801561019257600080fd5b506101b9600480360360208110156101a957600080fd5b50356001600160a01b0316610631565b005b3480156101c757600080fd5b506101e5600480360360208110156101de57600080fd5b503561069c565b604080519115158252519081900360200190f35b6101b9600480360360e081101561020f57600080fd5b810190602081018135600160201b81111561022957600080fd5b82018360208201111561023b57600080fd5b803590602001918460018302840111600160201b8311171561025c57600080fd5b91935091508035906020810135906001600160a01b03604082013581169160608101359091169060808101359060a001356106b1565b34801561029e57600080fd5b506102a7610a70565b604080516001600160a01b039092168252519081900360200190f35b3480156102cf57600080fd5b506102f3600480360360408110156102e657600080fd5b5080359060200135610a7f565b60408051918252519081900360200190f35b34801561031157600080fd5b506102f3610c60565b34801561032657600080fd5b5061032f610c72565b6040805163ffffffff9092168252519081900360200190f35b34801561035457600080fd5b506102a7610c7e565b34801561036957600080fd5b506101e56004803603602081101561038057600080fd5b5035610c8d565b34801561039357600080fd5b506101e5600480360360208110156103aa57600080fd5b5035610d00565b3480156103bd57600080fd5b506102f3610d15565b3480156103d257600080fd5b5061032f610d1b565b3480156103e757600080fd5b506101b9600480360360208110156103fe57600080fd5b50356001600160a01b0316610d27565b34801561041a57600080fd5b506104896004803603602081101561043157600080fd5b810190602081018135600160201b81111561044b57600080fd5b82018360208201111561045d57600080fd5b803590602001918460208302840111600160201b8311171561047e57600080fd5b509092509050610d92565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156104c55781810151838201526020016104ad565b505050509050019250505060405180910390f35b3480156104e557600080fd5b506102f3610e1a565b6101b96004803603602081101561050457600080fd5b5035610e20565b34801561051757600080fd5b506102f3610f4d565b34801561052c57600080fd5b506102f36004803603602081101561054357600080fd5b5035610f6d565b34801561055657600080fd5b5061032f610f81565b34801561056b57600080fd5b506102a7610f86565b34801561058057600080fd5b506101e56004803603602081101561059757600080fd5b5035610f95565b3480156105aa57600080fd5b506102f3600480360360208110156105c157600080fd5b5035610faa565b3480156105d457600080fd5b506102f3610fc8565b3480156105e957600080fd5b506102f36004803603602081101561060057600080fd5b5035610fec565b34801561061357600080fd5b506102a7610ff9565b34801561062857600080fd5b5061032f611008565b606e546001600160a01b0316331461067a5760405162461bcd60e51b81526004018080602001828103825260258152602001806118596025913960400191505060405180910390fd5b606e80546001600160a01b0319166001600160a01b0392909216919091179055565b606a6020526000908152604090205460ff1681565b60685460ff16610708576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6068805460ff19169055606954821115610769576040805162461bcd60e51b815260206004820152601a60248201527f4665652065786365656473207472616e736665722076616c7565000000000000604482015290519081900360640190fd5b6000858152606a602052604090205460ff16156107cd576040805162461bcd60e51b815260206004820152601f60248201527f546865206e6f746520686173206265656e20616c7265616479207370656e7400604482015290519081900360640190fd5b6107d686610c8d565b610827576040805162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742066696e6420796f7572206d65726b6c6520726f6f7400000000604482015290519081900360640190fd5b606c546040805160c08082018352898252602082018990526001600160a01b038881168385015287811660608401526080830187905260a08301869052925163695ef6f960e01b8152929093169263695ef6f9928c928c9290916004810191829160240190849080838360005b838110156108ac578181015183820152602001610894565b505050509050018281038252858582818152602001925080828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b1580156108fe57600080fd5b505af1158015610912573d6000803e3d6000fd5b505050506040513d602081101561092857600080fd5b5051610974576040805162461bcd60e51b815260206004820152601660248201527524b73b30b634b2103bb4ba34323930bb90383937b7b360511b604482015290519081900360640190fd5b6000858152606a6020908152604091829020805460ff19166001179055606d548251622fcfcb60e31b81529251610a0b9388938893889388936001600160a01b039092169263017e7e589260048082019391829003018186803b1580156109da57600080fd5b505afa1580156109ee573d6000803e3d6000fd5b505050506040513d6020811015610a0457600080fd5b505161101b565b604080516001600160a01b038681168252602082018890528183018590529151918516917fe9e508bad6d4c3227e881ca19068f099da81b5164dd6d62b2eaf1e8bc6c349319181900360600190a250506068805460ff19166001179055505050505050565b606c546001600160a01b031681565b60006000805160206117e88339815191528310610ae3576040805162461bcd60e51b815260206004820181905260248201527f5f6c6566742073686f756c6420626520696e7369646520746865206669656c64604482015290519081900360640190fd5b6000805160206117e88339815191528210610b2f5760405162461bcd60e51b81526004018080602001828103825260218152602001806117986021913960400191505060405180910390fd5b6040805163f47d33b560e01b81526004810185905260006024820181905282518693919273__Hasher________________________________9263f47d33b592604480840193829003018186803b158015610b8957600080fd5b505af4158015610b9d573d6000803e3d6000fd5b505050506040513d6040811015610bb357600080fd5b50805160209091015190925090506000805160206117e8833981519152848308915073__Hasher________________________________63f47d33b583836040518363ffffffff1660e01b81526004018083815260200182815260200192505050604080518083038186803b158015610c2b57600080fd5b505af4158015610c3f573d6000803e3d6000fd5b505050506040513d6040811015610c5557600080fd5b505195945050505050565b6000805160206117e883398151915281565b60005463ffffffff1681565b606e546001600160a01b031681565b600081610c9c57506000610cfb565b60035463ffffffff165b60048163ffffffff1660648110610cb957fe5b0154831415610ccc576001915050610cfb565b63ffffffff8116610cdb575060645b6003546000199091019063ffffffff80831691161415610ca65760009150505b919050565b606b6020526000908152604090205460ff1681565b60695481565b60035463ffffffff1681565b606e546001600160a01b03163314610d705760405162461bcd60e51b81526004018080602001828103825260258152602001806118596025913960400191505060405180910390fd5b606c80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518281526020808402820101909152606090828015610dbe578160200160208202803883390190505b50905060005b82811015610e1357610de7848483818110610ddb57fe5b90506020020135610f95565b15610e0b576001828281518110610dfa57fe5b911515602092830291909101909101525b600101610dc4565b5092915050565b60705481565b60685460ff16610e77576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6068805460ff191690556000818152606b602052604090205460ff1615610ecf5760405162461bcd60e51b81526004018080602001828103825260218152602001806118086021913960400191505060405180910390fd5b6000610eda8261114d565b6000838152606b60205260409020805460ff191660011790559050610efd6112e4565b6040805163ffffffff83168152426020820152815184927fa945e51eec50ab98c161376f0db4cf2aeba3ec92755fe2fcd388bdbbb80ff196928290030190a250506068805460ff19166001179055565b60035460009060049063ffffffff1660648110610f6657fe5b0154905090565b60048160648110610f7a57fe5b0154905081565b606481565b606d546001600160a01b031681565b6000908152606a602052604090205460ff1690565b60028181548110610fb757fe5b600091825260209091200154905081565b7f2fe54c60d3acabf3343a35b6eba15db4821b340f76e741e2249685ed4899af6c81565b60018181548110610fb757fe5b606f546001600160a01b031681565b600354600160201b900463ffffffff1681565b8134146110595760405162461bcd60e51b81526004018080602001828103825260308152602001806117416030913960400191505060405180910390fd5b6001600160a01b0381161580159061108e5761107d86607054866069540303611330565b61108982607054611330565b61109c565b61109c868560695403611330565b83156110ac576110ac8585611330565b8215611145576040516000906001600160a01b0388169085908381818185875af1925050503d80600081146110fd576040519150601f19603f3d011682016040523d82523d6000602084013e611102565b606091505b5050905080611143576040516001600160a01b0387169085156108fc029086906000818181858888f19350505050158015611141573d6000803e3d6000fd5b505b505b505050505050565b60035460008054909163ffffffff600160201b909104811691811660020a168114156111aa5760405162461bcd60e51b815260040180806020018281038252602f8152602001806116e8602f913960400191505060405180910390fd5b6003805463ffffffff600160201b80830482166001019091160267ffffffff000000001990911617905582600080805b60005463ffffffff9081169082161015611282576001851661123e5783925060028163ffffffff168154811061120c57fe5b906000526020600020015491508360018263ffffffff168154811061122d57fe5b600091825260209091200155611262565b60018163ffffffff168154811061125157fe5b906000526020600020015492508391505b61126c8383610a7f565b9350600263ffffffff86160494506001016111da565b5060035460649063ffffffff908116600101166003805463ffffffff19169290910663ffffffff9081169290921790819055849160049116606481106112c457fe5b01555050600354600160201b900463ffffffff1660001901949350505050565b34156113215760405162461bcd60e51b81526004018080602001828103825260308152602001806118296030913960400191505060405180910390fd5b61132e3330606954611501565b565b606f54604080516001600160a01b038581166024830152604480830186905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000956060959316939282918083835b602083106113ad5780518252601f19909201916020918201910161138e565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461140f576040519150601f19603f3d011682016040523d82523d6000602084013e611414565b606091505b50915091508161145f576040805162461bcd60e51b81526020600482015260116024820152706e6f7420656e6f75676820746f6b656e7360781b604482015290519081900360640190fd5b8051156114fb5780516020146114a65760405162461bcd60e51b815260040180806020018281038252602a815260200180611717602a913960400191505060405180910390fd5b8080602001905160208110156114bb57600080fd5b50519150816114fb5760405162461bcd60e51b81526004018080602001828103825260278152602001806117716027913960400191505060405180910390fd5b50505050565b606f54604080516001600160a01b0386811660248301528581166044830152606480830186905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b178152925182516000956060959316939282918083835b602083106115865780518252601f199092019160209182019101611567565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146115e8576040519150601f19603f3d011682016040523d82523d6000602084013e6115ed565b606091505b509150915081611644576040805162461bcd60e51b815260206004820152601960248201527f6e6f7420656e6f75676820616c6c6f77656420746f6b656e7300000000000000604482015290519081900360640190fd5b8051156116e057805160201461168b5760405162461bcd60e51b815260040180806020018281038252602a815260200180611717602a913960400191505060405180910390fd5b8080602001905160208110156116a057600080fd5b50519150816116e05760405162461bcd60e51b815260040180806020018281038252602f8152602001806117b9602f913960400191505060405180910390fd5b505050505056fe4d65726b6c6520747265652069732066756c6c2e204e6f206d6f7265206c656166732063616e20626520616464656464617461206c656e6774682073686f756c64206265206569746865722030206f72203332206279746573496e636f727265637420726566756e6420616d6f756e742072656365697665642062792074686520636f6e74726163746e6f7420656e6f75676820746f6b656e732e20546f6b656e2072657475726e732066616c73652e5f72696768742073686f756c6420626520696e7369646520746865206669656c646e6f7420656e6f75676820616c6c6f77656420746f6b656e732e20546f6b656e2072657475726e732066616c73652e30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000154686520636f6d6d69746d656e7420686173206265656e207375626d69747465644554482076616c756520697320737570706f73656420746f206265203020666f7220455243323020696e7374616e63654f6e6c79206f70657261746f722063616e2063616c6c20746869732066756e6374696f6e2ea265627a7a72315820c90af910ddfda5b33dab20c369a888b349922f695f9eee0e2eb3e0273adc895364736f6c6343000511003264656e6f6d696e6174696f6e2073686f756c642062652067726561746572207468616e2030405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace5f72696768742073686f756c6420626520696e7369646520746865206669656c645f747265654c6576656c732073686f756c642062652067726561746572207468616e207a65726f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000015f747265654c6576656c732073686f756c64206265206c657373207468616e203332b10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6", + "deployedBytecode": "0x6080604052600436106101815760003560e01c80639fa12d0b116100d1578063d0fb02031161008a578063ec73295911610064578063ec732959146105c8578063f178e47c146105dd578063fc0c546a14610607578063fc7e9c6f1461061c57610181565b8063d0fb02031461055f578063e5285dcc14610574578063e82955881461059e57610181565b80639fa12d0b1461040e578063b0e21e8a146104d9578063b214faa5146104ee578063ba70f7571461050b578063c2b40ae414610520578063cd87a3b41461054a57610181565b80634ecf518b1161013e578063839df94511610118578063839df945146103875780638bca6d16146103b157806390eeb02b146103c657806397fc007c146103db57610181565b80634ecf518b1461031a578063570ca735146103485780636d9833e31461035d57610181565b806306394c9b1461018657806317cc915c146101bb57806321a0adb6146101f95780632b7ac3f31461029257806338bf282e146102c3578063414a37ba14610305575b600080fd5b34801561019257600080fd5b506101b9600480360360208110156101a957600080fd5b50356001600160a01b0316610631565b005b3480156101c757600080fd5b506101e5600480360360208110156101de57600080fd5b503561069c565b604080519115158252519081900360200190f35b6101b9600480360360e081101561020f57600080fd5b810190602081018135600160201b81111561022957600080fd5b82018360208201111561023b57600080fd5b803590602001918460018302840111600160201b8311171561025c57600080fd5b91935091508035906020810135906001600160a01b03604082013581169160608101359091169060808101359060a001356106b1565b34801561029e57600080fd5b506102a7610a70565b604080516001600160a01b039092168252519081900360200190f35b3480156102cf57600080fd5b506102f3600480360360408110156102e657600080fd5b5080359060200135610a7f565b60408051918252519081900360200190f35b34801561031157600080fd5b506102f3610c60565b34801561032657600080fd5b5061032f610c72565b6040805163ffffffff9092168252519081900360200190f35b34801561035457600080fd5b506102a7610c7e565b34801561036957600080fd5b506101e56004803603602081101561038057600080fd5b5035610c8d565b34801561039357600080fd5b506101e5600480360360208110156103aa57600080fd5b5035610d00565b3480156103bd57600080fd5b506102f3610d15565b3480156103d257600080fd5b5061032f610d1b565b3480156103e757600080fd5b506101b9600480360360208110156103fe57600080fd5b50356001600160a01b0316610d27565b34801561041a57600080fd5b506104896004803603602081101561043157600080fd5b810190602081018135600160201b81111561044b57600080fd5b82018360208201111561045d57600080fd5b803590602001918460208302840111600160201b8311171561047e57600080fd5b509092509050610d92565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156104c55781810151838201526020016104ad565b505050509050019250505060405180910390f35b3480156104e557600080fd5b506102f3610e1a565b6101b96004803603602081101561050457600080fd5b5035610e20565b34801561051757600080fd5b506102f3610f4d565b34801561052c57600080fd5b506102f36004803603602081101561054357600080fd5b5035610f6d565b34801561055657600080fd5b5061032f610f81565b34801561056b57600080fd5b506102a7610f86565b34801561058057600080fd5b506101e56004803603602081101561059757600080fd5b5035610f95565b3480156105aa57600080fd5b506102f3600480360360208110156105c157600080fd5b5035610faa565b3480156105d457600080fd5b506102f3610fc8565b3480156105e957600080fd5b506102f36004803603602081101561060057600080fd5b5035610fec565b34801561061357600080fd5b506102a7610ff9565b34801561062857600080fd5b5061032f611008565b606e546001600160a01b0316331461067a5760405162461bcd60e51b81526004018080602001828103825260258152602001806118596025913960400191505060405180910390fd5b606e80546001600160a01b0319166001600160a01b0392909216919091179055565b606a6020526000908152604090205460ff1681565b60685460ff16610708576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6068805460ff19169055606954821115610769576040805162461bcd60e51b815260206004820152601a60248201527f4665652065786365656473207472616e736665722076616c7565000000000000604482015290519081900360640190fd5b6000858152606a602052604090205460ff16156107cd576040805162461bcd60e51b815260206004820152601f60248201527f546865206e6f746520686173206265656e20616c7265616479207370656e7400604482015290519081900360640190fd5b6107d686610c8d565b610827576040805162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742066696e6420796f7572206d65726b6c6520726f6f7400000000604482015290519081900360640190fd5b606c546040805160c08082018352898252602082018990526001600160a01b038881168385015287811660608401526080830187905260a08301869052925163695ef6f960e01b8152929093169263695ef6f9928c928c9290916004810191829160240190849080838360005b838110156108ac578181015183820152602001610894565b505050509050018281038252858582818152602001925080828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b1580156108fe57600080fd5b505af1158015610912573d6000803e3d6000fd5b505050506040513d602081101561092857600080fd5b5051610974576040805162461bcd60e51b815260206004820152601660248201527524b73b30b634b2103bb4ba34323930bb90383937b7b360511b604482015290519081900360640190fd5b6000858152606a6020908152604091829020805460ff19166001179055606d548251622fcfcb60e31b81529251610a0b9388938893889388936001600160a01b039092169263017e7e589260048082019391829003018186803b1580156109da57600080fd5b505afa1580156109ee573d6000803e3d6000fd5b505050506040513d6020811015610a0457600080fd5b505161101b565b604080516001600160a01b038681168252602082018890528183018590529151918516917fe9e508bad6d4c3227e881ca19068f099da81b5164dd6d62b2eaf1e8bc6c349319181900360600190a250506068805460ff19166001179055505050505050565b606c546001600160a01b031681565b60006000805160206117e88339815191528310610ae3576040805162461bcd60e51b815260206004820181905260248201527f5f6c6566742073686f756c6420626520696e7369646520746865206669656c64604482015290519081900360640190fd5b6000805160206117e88339815191528210610b2f5760405162461bcd60e51b81526004018080602001828103825260218152602001806117986021913960400191505060405180910390fd5b6040805163f47d33b560e01b81526004810185905260006024820181905282518693919273__Hasher________________________________9263f47d33b592604480840193829003018186803b158015610b8957600080fd5b505af4158015610b9d573d6000803e3d6000fd5b505050506040513d6040811015610bb357600080fd5b50805160209091015190925090506000805160206117e8833981519152848308915073__Hasher________________________________63f47d33b583836040518363ffffffff1660e01b81526004018083815260200182815260200192505050604080518083038186803b158015610c2b57600080fd5b505af4158015610c3f573d6000803e3d6000fd5b505050506040513d6040811015610c5557600080fd5b505195945050505050565b6000805160206117e883398151915281565b60005463ffffffff1681565b606e546001600160a01b031681565b600081610c9c57506000610cfb565b60035463ffffffff165b60048163ffffffff1660648110610cb957fe5b0154831415610ccc576001915050610cfb565b63ffffffff8116610cdb575060645b6003546000199091019063ffffffff80831691161415610ca65760009150505b919050565b606b6020526000908152604090205460ff1681565b60695481565b60035463ffffffff1681565b606e546001600160a01b03163314610d705760405162461bcd60e51b81526004018080602001828103825260258152602001806118596025913960400191505060405180910390fd5b606c80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518281526020808402820101909152606090828015610dbe578160200160208202803883390190505b50905060005b82811015610e1357610de7848483818110610ddb57fe5b90506020020135610f95565b15610e0b576001828281518110610dfa57fe5b911515602092830291909101909101525b600101610dc4565b5092915050565b60705481565b60685460ff16610e77576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6068805460ff191690556000818152606b602052604090205460ff1615610ecf5760405162461bcd60e51b81526004018080602001828103825260218152602001806118086021913960400191505060405180910390fd5b6000610eda8261114d565b6000838152606b60205260409020805460ff191660011790559050610efd6112e4565b6040805163ffffffff83168152426020820152815184927fa945e51eec50ab98c161376f0db4cf2aeba3ec92755fe2fcd388bdbbb80ff196928290030190a250506068805460ff19166001179055565b60035460009060049063ffffffff1660648110610f6657fe5b0154905090565b60048160648110610f7a57fe5b0154905081565b606481565b606d546001600160a01b031681565b6000908152606a602052604090205460ff1690565b60028181548110610fb757fe5b600091825260209091200154905081565b7f2fe54c60d3acabf3343a35b6eba15db4821b340f76e741e2249685ed4899af6c81565b60018181548110610fb757fe5b606f546001600160a01b031681565b600354600160201b900463ffffffff1681565b8134146110595760405162461bcd60e51b81526004018080602001828103825260308152602001806117416030913960400191505060405180910390fd5b6001600160a01b0381161580159061108e5761107d86607054866069540303611330565b61108982607054611330565b61109c565b61109c868560695403611330565b83156110ac576110ac8585611330565b8215611145576040516000906001600160a01b0388169085908381818185875af1925050503d80600081146110fd576040519150601f19603f3d011682016040523d82523d6000602084013e611102565b606091505b5050905080611143576040516001600160a01b0387169085156108fc029086906000818181858888f19350505050158015611141573d6000803e3d6000fd5b505b505b505050505050565b60035460008054909163ffffffff600160201b909104811691811660020a168114156111aa5760405162461bcd60e51b815260040180806020018281038252602f8152602001806116e8602f913960400191505060405180910390fd5b6003805463ffffffff600160201b80830482166001019091160267ffffffff000000001990911617905582600080805b60005463ffffffff9081169082161015611282576001851661123e5783925060028163ffffffff168154811061120c57fe5b906000526020600020015491508360018263ffffffff168154811061122d57fe5b600091825260209091200155611262565b60018163ffffffff168154811061125157fe5b906000526020600020015492508391505b61126c8383610a7f565b9350600263ffffffff86160494506001016111da565b5060035460649063ffffffff908116600101166003805463ffffffff19169290910663ffffffff9081169290921790819055849160049116606481106112c457fe5b01555050600354600160201b900463ffffffff1660001901949350505050565b34156113215760405162461bcd60e51b81526004018080602001828103825260308152602001806118296030913960400191505060405180910390fd5b61132e3330606954611501565b565b606f54604080516001600160a01b038581166024830152604480830186905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000956060959316939282918083835b602083106113ad5780518252601f19909201916020918201910161138e565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461140f576040519150601f19603f3d011682016040523d82523d6000602084013e611414565b606091505b50915091508161145f576040805162461bcd60e51b81526020600482015260116024820152706e6f7420656e6f75676820746f6b656e7360781b604482015290519081900360640190fd5b8051156114fb5780516020146114a65760405162461bcd60e51b815260040180806020018281038252602a815260200180611717602a913960400191505060405180910390fd5b8080602001905160208110156114bb57600080fd5b50519150816114fb5760405162461bcd60e51b81526004018080602001828103825260278152602001806117716027913960400191505060405180910390fd5b50505050565b606f54604080516001600160a01b0386811660248301528581166044830152606480830186905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b178152925182516000956060959316939282918083835b602083106115865780518252601f199092019160209182019101611567565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146115e8576040519150601f19603f3d011682016040523d82523d6000602084013e6115ed565b606091505b509150915081611644576040805162461bcd60e51b815260206004820152601960248201527f6e6f7420656e6f75676820616c6c6f77656420746f6b656e7300000000000000604482015290519081900360640190fd5b8051156116e057805160201461168b5760405162461bcd60e51b815260040180806020018281038252602a815260200180611717602a913960400191505060405180910390fd5b8080602001905160208110156116a057600080fd5b50519150816116e05760405162461bcd60e51b815260040180806020018281038252602f8152602001806117b9602f913960400191505060405180910390fd5b505050505056fe4d65726b6c6520747265652069732066756c6c2e204e6f206d6f7265206c656166732063616e20626520616464656464617461206c656e6774682073686f756c64206265206569746865722030206f72203332206279746573496e636f727265637420726566756e6420616d6f756e742072656365697665642062792074686520636f6e74726163746e6f7420656e6f75676820746f6b656e732e20546f6b656e2072657475726e732066616c73652e5f72696768742073686f756c6420626520696e7369646520746865206669656c646e6f7420656e6f75676820616c6c6f77656420746f6b656e732e20546f6b656e2072657475726e732066616c73652e30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000154686520636f6d6d69746d656e7420686173206265656e207375626d69747465644554482076616c756520697320737570706f73656420746f206265203020666f7220455243323020696e7374616e63654f6e6c79206f70657261746f722063616e2063616c6c20746869732066756e6374696f6e2ea265627a7a72315820c90af910ddfda5b33dab20c369a888b349922f695f9eee0e2eb3e0273adc895364736f6c63430005110032", + "sourceMap": "805:2570:0:-;;;1430:34:1;;;-1:-1:-1;;;;;;1468:27:1;;;897:334:0;5:2:-1;;;;30:1;27;20:12;5:2;897:334:0;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;897:334:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1646:15:1;;;1638:67;;;;-1:-1:-1;;;1638:67:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1733:2;1719:11;:16;;;1711:63;;;;-1:-1:-1;;;1711:63:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1780:6;:20;;-1:-1:-1;;1780:20:1;;;;;;;1854:5;27:10:-1;;-1:-1;23:18;;;45:23;;;1088:77:1;-1:-1:-1;;;;;;;;;;;1854:23:1;;;;;;27:10:-1;;23:18;;;45:23;;1883:32:1;;;;-1:-1:-1;;;;;;;;;;;1883:32:1;;;;;;1922:175;1945:6;;;;;;1941:10;;;;1922:175;;;1980:39;1994:11;;-1:-1:-1;;;;;1980:13:1;:39;:::i;:::-;2027:5;27:10:-1;;39:1;23:18;;;45:23;;;-1:-1;;;;;;;;;;;2027:23:1;;;;27:10:-1;;23:18;;;45:23;;-1:-1;2058:32:1;;;-1:-1:-1;;;;;;;;;;;2058:32:1;;;;1966:53;;-1:-1:-1;1953:3:1;1922:175;;;-1:-1:-1;2114:39:1;2128:11;;-1:-1:-1;;;;;2114:13:1;:39;:::i;:::-;2103:5;2109:1;2103:8;:50;-1:-1:-1;;1421:11:3;:18;;-1:-1:-1;;1421:18:3;1435:4;1421:18;;;1645:17:2;1637:67;;;;-1:-1:-1;;;1637:67:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1710:8;:20;;-1:-1:-1;;;;;;1710:20:2;;;-1:-1:-1;;;;;1710:20:2;;;;;;;1736:10;:24;;;;;;;;;;;;;;1766:8;:20;;;;;;;;;;;;;-1:-1:-1;1792:12:2;:28;1157:5:0;:14;;;;;;;;;;;;;;1223:3;1207:13;:19;1193:11;:33;-1:-1:-1;805:2570:0;;-1:-1:-1;;;;;805:2570:0;2230:445:1;2305:7;-1:-1:-1;;;;;;;;;;;2328:27:1;;2320:72;;;;;-1:-1:-1;;;2320:72:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2406:28:1;;2398:74;;;;-1:-1:-1;;;2398:74:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2538:23;;;-1:-1:-1;;;2538:23:1;;;;;;;;2478:9;2538:23;;;;;;;;2498:5;;2478:9;;2538:6;;:17;;:23;;;;;;;;;;:6;:23;;;5:2:-1;;;;30:1;27;20:12;5:2;2538:23:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2538:23:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2538:23:1;;;;;;;;;-1:-1:-1;2538:23:1;-1:-1:-1;;;;;;;;;;;;2589:6:1;2578:1;2571:38;2567:42;;2624:6;:17;2642:1;2645;2624:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2624:23:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2624:23:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2624:23:1;;2230:445;-1:-1:-1;;;;;2230:445:1:o;805:2570:0:-;;;;;;;", + "deployedSourceMap": "805:2570:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4814:102:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4814:102:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4814:102:2;-1:-1:-1;;;;;4814:102:2;;:::i;:::-;;412:47;;8:9:-1;5:2;;;30:1;27;20:12;5:2;412:47:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;412:47:2;;:::i;:::-;;;;;;;;;;;;;;;;;;2893:801;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;2893:801:2;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;2893:801:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2893:801:2;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2893:801:2;;-1:-1:-1;2893:801:2;-1:-1:-1;2893:801:2;;;;;;;;-1:-1:-1;;;;;2893:801:2;;;;;;;;;;;;;;;;;;;;;;;;:::i;601:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;601:25:2;;;:::i;:::-;;;;-1:-1:-1;;;;;601:25:2;;;;;;;;;;;;;;2230:445:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2230:445:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2230:445:1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;933:114;;8:9:-1;5:2;;;30:1;27;20:12;5:2;933:114:1;;;:::i;1209:20::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1209:20:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;819:23:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;819:23:2;;;:::i;3553:342:1:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3553:342:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3553:342:1;;:::i;554:43:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;554:43:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;554:43:2;;:::i;381:27::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;381:27:2;;;:::i;1430:34:1:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1430:34:1;;;:::i;4651:113:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4651:113:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4651:113:2;-1:-1:-1;;;;;4651:113:2;;:::i;4128:293::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4128:293:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4128:293:2;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;4128:293:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4128:293:2;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;4128:293:2;;-1:-1:-1;4128:293:2;-1:-1:-1;4128:293:2;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4128:293:2;;;;;;;;;;;;;;;;;866:26:0;;8:9:-1;5:2;;;30:1;27;20:12;5:2;866:26:0;;;:::i;2073:324:2:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2073:324:2;;:::i;3941:93:1:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3941:93:1;;;:::i;1549:39::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1549:39:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1549:39:1;;:::i;1499:46::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1499:46:1;;;:::i;630:29:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;630:29:2;;;:::i;3951:116::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3951:116:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3951:116:2;;:::i;1404:22:1:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1404:22:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1404:22:1;;:::i;1051:114::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1051:114:1;;;:::i;1369:31::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1369:31:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1369:31:1;;:::i;842:20:0:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;842:20:0;;;:::i;1468:27:1:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1468:27:1;;;:::i;4814:102:2:-;896:8;;-1:-1:-1;;;;;896:8:2;882:10;:22;874:72;;;;-1:-1:-1;;;874:72:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4888:8;:23;;-1:-1:-1;;;;;;4888:23:2;-1:-1:-1;;;;;4888:23:2;;;;;;;;;;4814:102::o;412:47::-;;;;;;;;;;;;;;;:::o;2893:801::-;1934:11:3;;;;1926:55;;;;;-1:-1:-1;;;1926:55:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;2056:11;:19;;-1:-1:-1;;2056:19:3;;;3110:12:2;;3102:20;;;3094:59;;;;;-1:-1:-1;;;3094:59:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;3168:31;;;;:15;:31;;;;;;;;3167:32;3159:76;;;;;-1:-1:-1;;;3159:76:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;3249:18;3261:5;3249:11;:18::i;:::-;3241:59;;;;;-1:-1:-1;;;3241:59:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;3347:8;;:126;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3418:19:2;;;3347:126;;;;3439:17;;;3347:126;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3347:126:2;;:8;;;;;:20;;3368:6;;;;3347:126;;;;;;;;;;;;;;;;:8;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3347:126:2;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;3347:126:2;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3347:126:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3347:126:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3347:126:2;3339:161;;;;;-1:-1:-1;;;3339:161:2;;;;;;;;;;;;-1:-1:-1;;;3339:161:2;;;;;;;;;;;;;;;3507:31;;;;:15;:31;;;;;;;;;:38;;-1:-1:-1;;3507:38:2;3541:4;3507:38;;;3605:10;;:18;;-1:-1:-1;;;3605:18:2;;;;3551:73;;3568:10;;3580:8;;3590:4;;3596:7;;-1:-1:-1;;;;;3605:10:2;;;;:16;;:18;;;;;;;;;;;:10;:18;;;5:2:-1;;;;30:1;27;20:12;5:2;3605:18:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3605:18:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3605:18:2;3551:16;:73::i;:::-;3635:54;;;-1:-1:-1;;;;;3635:54:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2230:11:3;:18;;-1:-1:-1;;2230:18:3;2244:4;2230:18;;;-1:-1:-1;;;;;;2893:801:2:o;601:25::-;;;-1:-1:-1;;;;;601:25:2;;:::o;2230:445:1:-;2305:7;-1:-1:-1;;;;;;;;;;;2328:27:1;;2320:72;;;;;-1:-1:-1;;;2320:72:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2406:28:1;;2398:74;;;;-1:-1:-1;;;2398:74:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2538:23;;;-1:-1:-1;;;2538:23:1;;;;;;;;2478:9;2538:23;;;;;;;;2498:5;;2478:9;;2538:6;;:17;;:23;;;;;;;;;;:6;:23;;;5:2:-1;;;;30:1;27;20:12;5:2;2538:23:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2538:23:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2538:23:1;;;;;;;;;-1:-1:-1;2538:23:1;-1:-1:-1;;;;;;;;;;;;2589:6:1;2578:1;2571:38;2567:42;;2624:6;:17;2642:1;2645;2624:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2624:23:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2624:23:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2624:23:1;;2230:445;-1:-1:-1;;;;;2230:445:1:o;933:114::-;-1:-1:-1;;;;;;;;;;;933:114:1;:::o;1209:20::-;;;;;;:::o;819:23:2:-;;;-1:-1:-1;;;;;819:23:2;;:::o;3553:342:1:-;3609:4;3625:10;3621:43;;-1:-1:-1;3652:5:1;3645:12;;3621:43;3680:16;;;;3702:171;3726:5;3732:1;3726:8;;;;;;;;;;;3717:5;:17;3713:53;;;3753:4;3746:11;;;;;3713:53;3777:6;;;3773:52;;-1:-1:-1;1542:3:1;3773:52;3855:16;;-1:-1:-1;;3832:3:1;;;;3855:16;3850:21;;;3855:16;;3850:21;;3702:171;;3885:5;3878:12;;;3553:342;;;;:::o;554:43:2:-;;;;;;;;;;;;;;;:::o;381:27::-;;;;:::o;1430:34:1:-;;;;;;:::o;4651:113:2:-;896:8;;-1:-1:-1;;;;;896:8:2;882:10;:22;874:72;;;;-1:-1:-1;;;874:72:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4725:8;:34;;-1:-1:-1;;;;;;4725:34:2;-1:-1:-1;;;;;4725:34:2;;;;;;;;;;4651:113::o;4128:293::-;4244:35;;;;;;;;;;;;;;;;4209:19;;4255:16;4244:35;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;4244:35:2;-1:-1:-1;4236:43:2;-1:-1:-1;4289:6:2;4285:132;4301:27;;;4285:132;;;4347:28;4355:16;;4372:1;4355:19;;;;;;;;;;;;;4347:7;:28::i;:::-;4343:68;;;4398:4;4387:5;4393:1;4387:8;;;;;;;;:15;;;:8;;;;;;;;;;;:15;4343:68;4330:3;;4285:132;;;;4128:293;;;;:::o;866:26:0:-;;;;:::o;2073:324:2:-;1934:11:3;;;;1926:55;;;;;-1:-1:-1;;;1926:55:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;2056:11;:19;;-1:-1:-1;;2056:19:3;;;2070:5;2156:24:2;;;:11;:24;;;;;;2056:19:3;2156:24:2;2155:25;2147:71;;;;-1:-1:-1;;;2147:71:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2225:20;2248;2256:11;2248:7;:20::i;:::-;2274:24;;;;:11;:24;;;;;:31;;-1:-1:-1;;2274:31:2;2301:4;2274:31;;;2225:43;-1:-1:-1;2311:17:2;:15;:17::i;:::-;2340:52;;;;;;;;2376:15;2340:52;;;;;;2348:11;;2340:52;;;;;;;;-1:-1:-1;;2230:11:3;:18;;-1:-1:-1;;2230:18:3;2244:4;2230:18;;;2073:324:2:o;3941:93:1:-;4012:16;;3984:7;;4006:5;;4012:16;;4006:23;;;;;;;;;3999:30;;3941:93;:::o;1549:39::-;;;;;;;;;;;;;-1:-1:-1;1549:39:1;:::o;1499:46::-;1542:3;1499:46;:::o;630:29:2:-;;;-1:-1:-1;;;;;630:29:2;;:::o;3951:116::-;4012:4;4031:31;;;:15;:31;;;;;;;;;3951:116::o;1404:22:1:-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1404:22:1;:::o;1051:114::-;1088:77;1051:114;:::o;1369:31::-;;;;;;;;;;842:20:0;;;-1:-1:-1;;;;;842:20:0;;:::o;1468:27:1:-;;;-1:-1:-1;;;1468:27:1;;;;;:::o;1430:801:0:-;1601:7;1588:9;:20;1580:81;;;;-1:-1:-1;;;1580:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1681:20:0;;;;;;1707:226;;1726:73;1745:10;1787:11;;1772:12;1757;;:27;:41;1726:18;:73::i;:::-;1807:39;1826:6;1834:11;;1807:18;:39::i;:::-;1707:226;;;1867:59;1886:10;1913:12;1898;;:27;1867:18;:59::i;:::-;1943:16;;1939:79;;1969:42;1988:8;1998:12;1969:18;:42::i;:::-;2028:11;;2024:203;;2068:34;;2050:12;;-1:-1:-1;;;;;2068:15:0;;;2090:7;;2050:12;2068:34;2050:12;2068:34;2090:7;2068:15;:34;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2049:53:0;;;2115:7;2110:111;;2186:26;;-1:-1:-1;;;;;2186:17:0;;;:26;;;;;2204:7;;2186:26;;;;2204:7;2186:17;:26;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2186:26:0;2110:111;2024:203;;1430:801;;;;;;:::o;2679:802:1:-;2770:9;;2728:12;2820:6;;2728:12;;2770:9;-1:-1:-1;;;2770:9:1;;;;;;2820:6;;2816:1;2809:17;2793:33;;;;2785:93;;;;-1:-1:-1;;;2785:93:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2884:9;:14;;;-1:-1:-1;;;2884:14:1;;;;;2897:1;2884:14;;;;;-1:-1:-1;;2884:14:1;;;;;;2931:5;-1:-1:-1;;;2980:355:1;3003:6;;;;;;2999:10;;;;2980:355;;;3028:16;;;3024:225;;3068:16;3061:23;;3102:5;3108:1;3102:8;;;;;;;;;;;;;;;;;;3094:16;;3141;3121:14;3136:1;3121:17;;;;;;;;;;;;;;;;;;;:36;3024:225;;;3189:14;3204:1;3189:17;;;;;;;;;;;;;;;;;;3182:24;;3224:16;3216:24;;3024:225;3276:26;3290:4;3296:5;3276:13;:26::i;:::-;3257:45;-1:-1:-1;3327:1:1;3311:17;;;;;-1:-1:-1;3011:3:1;;2980:355;;;-1:-1:-1;3361:16:1;;1542:3;;3360:42;3361:16;;;;:20;3360:42;3341:16;:61;;-1:-1:-1;;3341:61:1;3360:42;;;;3341:61;;;;;;;;;;;;3434:16;;3408:5;;3414:16;3408:23;;;;;;;;:42;-1:-1:-1;;3463:9:1;;-1:-1:-1;;;3463:9:1;;;;-1:-1:-1;;3463:13:1;;2679:802;-1:-1:-1;;;;2679:802:1:o;1235:191:0:-;1285:9;:14;1277:75;;;;-1:-1:-1;;;1277:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1358:63;1381:10;1401:4;1408:12;;1358:22;:63::i;:::-;1235:191::o;2829:544::-;2938:5;;2949:63;;;-1:-1:-1;;;;;2949:63:0;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;2949:63:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2938:75:0;;;;2903:12;;2917:17;;2938:5;;;2949:63;2938:75;;;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;2938:75:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2902:111:0;;;;3027:7;3019:37;;;;;-1:-1:-1;;;3019:37:0;;;;;;;;;;;;-1:-1:-1;;;3019:37:0;;;;;;;;;;;;;;;3156:11;;:15;3152:217;;3189:4;:11;3204:2;3189:17;3181:72;;;;-1:-1:-1;;;3181:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3282:4;3271:24;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3271:24:0;;-1:-1:-1;3271:24:0;3303:59;;;;-1:-1:-1;;;3303:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2829:544;;;;:::o;2235:590::-;2363:5;;2374:74;;;-1:-1:-1;;;;;2374:74:0;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;2374:74:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2363:86:0;;;;2328:12;;2342:17;;2363:5;;;2374:74;2363:86;;;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;2363:86:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2327:122:0;;;;2463:7;2455:45;;;;;-1:-1:-1;;;2455:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;2600:11;;:15;2596:225;;2633:4;:11;2648:2;2633:17;2625:72;;;;-1:-1:-1;;;2625:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2726:4;2715:24;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2715:24:0;;-1:-1:-1;2715:24:0;2747:67;;;;-1:-1:-1;;;2747:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2235:590;;;;;:::o", + "source": "// https://tornado.cash\n/*\n* d888888P dP a88888b. dP\n* 88 88 d8' `88 88\n* 88 .d8888b. 88d888b. 88d888b. .d8888b. .d888b88 .d8888b. 88 .d8888b. .d8888b. 88d888b.\n* 88 88' `88 88' `88 88' `88 88' `88 88' `88 88' `88 88 88' `88 Y8ooooo. 88' `88\n* 88 88. .88 88 88 88 88. .88 88. .88 88. .88 dP Y8. .88 88. .88 88 88 88\n* dP `88888P' dP dP dP `88888P8 `88888P8 `88888P' 88 Y88888P' `88888P8 `88888P' dP dP\n* ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo\n*/\n\npragma solidity 0.5.17;\n\nimport \"./Tornado.sol\";\n\ncontract ERC20Tornado is Tornado {\n address public token;\n uint256 public protocolFee;\n\n constructor(\n IVerifier _verifier,\n IFeeManager _feeManager,\n uint256 _denomination,\n uint32 _merkleTreeHeight,\n address _operator,\n address _token\n ) Tornado(_verifier, _feeManager, _denomination, _merkleTreeHeight, _operator) public {\n token = _token;\n // 0.5% fee\n protocolFee = _denomination / 200;\n }\n\n function _processDeposit() internal {\n require(msg.value == 0, \"ETH value is supposed to be 0 for ERC20 instance\");\n _safeErc20TransferFrom(msg.sender, address(this), denomination);\n }\n\n function _processWithdraw(address payable _recipient, address payable _relayer, uint256 _relayer_fee, uint256 _refund, address _feeTo) internal {\n require(msg.value == _refund, \"Incorrect refund amount received by the contract\");\n\n bool feeOn = _feeTo != address(0);\n if (feeOn) {\n _safeErc20Transfer(_recipient, denomination - _relayer_fee - protocolFee);\n _safeErc20Transfer(_feeTo, protocolFee);\n } else {\n _safeErc20Transfer(_recipient, denomination - _relayer_fee);\n }\n\n if (_relayer_fee > 0) {\n _safeErc20Transfer(_relayer, _relayer_fee);\n }\n\n if (_refund > 0) {\n (bool success, ) = _recipient.call.value(_refund)(\"\");\n if (!success) {\n // let's return _refund back to the relayer\n _relayer.transfer(_refund);\n }\n }\n }\n\n function _safeErc20TransferFrom(address _from, address _to, uint256 _amount) internal {\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd /* transferFrom */, _from, _to, _amount));\n require(success, \"not enough allowed tokens\");\n\n // if contract returns some data lets make sure that is `true` according to standard\n if (data.length > 0) {\n require(data.length == 32, \"data length should be either 0 or 32 bytes\");\n success = abi.decode(data, (bool));\n require(success, \"not enough allowed tokens. Token returns false.\");\n }\n }\n\n function _safeErc20Transfer(address _to, uint256 _amount) internal {\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb /* transfer */, _to, _amount));\n require(success, \"not enough tokens\");\n\n // if contract returns some data lets make sure that is `true` according to standard\n if (data.length > 0) {\n require(data.length == 32, \"data length should be either 0 or 32 bytes\");\n success = abi.decode(data, (bool));\n require(success, \"not enough tokens. Token returns false.\");\n }\n }\n}\n", "sourcePath": "/Users/brianli/dotfiles/tornado-core/contracts/ERC20Tornado.sol", "ast": { "absolutePath": "/Users/brianli/dotfiles/tornado-core/contracts/ERC20Tornado.sol", "exportedSymbols": { "ERC20Tornado": [ - 227 + 266 ] }, - "id": 228, + "id": 267, "nodeType": "SourceUnit", "nodes": [ { @@ -571,8 +606,8 @@ "file": "./Tornado.sol", "id": 2, "nodeType": "ImportDirective", - "scope": 228, - "sourceUnit": 1195, + "scope": 267, + "sourceUnit": 971, "src": "780:23:0", "symbolAliases": [], "unitAlias": "" @@ -586,10 +621,10 @@ "id": 3, "name": "Tornado", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1194, + "referencedDeclaration": 970, "src": "830:7:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_Tornado_$1194", + "typeIdentifier": "t_contract$_Tornado_$970", "typeString": "contract Tornado" } }, @@ -599,19 +634,19 @@ } ], "contractDependencies": [ - 694, - 1194, - 3245 + 632, + 970, + 1000 ], "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 227, + "id": 266, "linearizedBaseContracts": [ - 227, - 1194, - 3245, - 694 + 266, + 970, + 1000, + 632 ], "name": "ERC20Tornado", "nodeType": "ContractDefinition", @@ -621,7 +656,7 @@ "id": 6, "name": "token", "nodeType": "VariableDeclaration", - "scope": 227, + "scope": 266, "src": "842:20:0", "stateVariable": true, "storageLocation": "default", @@ -643,28 +678,54 @@ "value": null, "visibility": "public" }, + { + "constant": false, + "id": 8, + "name": "protocolFee", + "nodeType": "VariableDeclaration", + "scope": 266, + "src": "866:26:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "866:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "public" + }, { "body": { - "id": 29, + "id": 40, "nodeType": "Block", - "src": "1079:25:0", + "src": "1151:80:0", "statements": [ { "expression": { "argumentTypes": null, - "id": 27, + "id": 32, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 25, + "id": 30, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6, - "src": "1085:5:0", + "src": "1157:5:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -674,31 +735,114 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 26, + "id": 31, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 16, - "src": "1093:6:0", + "referencedDeclaration": 20, + "src": "1165:6:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1085:14:0", + "src": "1157:14:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 28, + "id": 33, "nodeType": "ExpressionStatement", - "src": "1085:14:0" + "src": "1157:14:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 38, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 34, + "name": "protocolFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8, + "src": "1193:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 37, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 35, + "name": "_denomination", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "1207:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "hexValue": "323030", + "id": 36, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1223:3:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_200_by_1", + "typeString": "int_const 200" + }, + "value": "200" + }, + "src": "1207:19:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1193:33:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 39, + "nodeType": "ExpressionStatement", + "src": "1193:33:0" } ] }, "documentation": null, - "id": 30, + "id": 41, "implemented": true, "kind": "constructor", "modifiers": [ @@ -706,25 +850,38 @@ "arguments": [ { "argumentTypes": null, - "id": 19, + "id": 23, "name": "_verifier", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8, - "src": "1016:9:0", + "referencedDeclaration": 10, + "src": "1075:9:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_IVerifier_$891", + "typeIdentifier": "t_contract$_IVerifier_$648", "typeString": "contract IVerifier" } }, { "argumentTypes": null, - "id": 20, + "id": 24, + "name": "_feeManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12, + "src": "1086:11:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IFeeManager_$654", + "typeString": "contract IFeeManager" + } + }, + { + "argumentTypes": null, + "id": 25, "name": "_denomination", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 10, - "src": "1027:13:0", + "referencedDeclaration": 14, + "src": "1099:13:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -732,12 +889,12 @@ }, { "argumentTypes": null, - "id": 21, + "id": 26, "name": "_merkleTreeHeight", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12, - "src": "1042:17:0", + "referencedDeclaration": 16, + "src": "1114:17:0", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -745,103 +902,131 @@ }, { "argumentTypes": null, - "id": 22, + "id": 27, "name": "_operator", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 14, - "src": "1061:9:0", + "referencedDeclaration": 18, + "src": "1133:9:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], - "id": 23, + "id": 28, "modifierName": { "argumentTypes": null, - "id": 18, + "id": 22, "name": "Tornado", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1194, - "src": "1008:7:0", + "referencedDeclaration": 970, + "src": "1067:7:0", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Tornado_$1194_$", + "typeIdentifier": "t_type$_t_contract$_Tornado_$970_$", "typeString": "type(contract Tornado)" } }, "nodeType": "ModifierInvocation", - "src": "1008:63:0" + "src": "1067:76:0" } ], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 17, + "id": 21, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 8, + "id": 10, "name": "_verifier", "nodeType": "VariableDeclaration", - "scope": 30, - "src": "884:19:0", + "scope": 41, + "src": "914:19:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IVerifier_$891", + "typeIdentifier": "t_contract$_IVerifier_$648", "typeString": "contract IVerifier" }, "typeName": { "contractScope": null, - "id": 7, + "id": 9, "name": "IVerifier", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 891, - "src": "884:9:0", + "referencedDeclaration": 648, + "src": "914:9:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_IVerifier_$891", + "typeIdentifier": "t_contract$_IVerifier_$648", "typeString": "contract IVerifier" } }, "value": null, "visibility": "internal" }, - { - "constant": false, - "id": 10, - "name": "_denomination", - "nodeType": "VariableDeclaration", - "scope": 30, - "src": "909:21:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 9, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "909:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, { "constant": false, "id": 12, + "name": "_feeManager", + "nodeType": "VariableDeclaration", + "scope": 41, + "src": "939:23:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IFeeManager_$654", + "typeString": "contract IFeeManager" + }, + "typeName": { + "contractScope": null, + "id": 11, + "name": "IFeeManager", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 654, + "src": "939:11:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IFeeManager_$654", + "typeString": "contract IFeeManager" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 14, + "name": "_denomination", + "nodeType": "VariableDeclaration", + "scope": 41, + "src": "968:21:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "968:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 16, "name": "_merkleTreeHeight", "nodeType": "VariableDeclaration", - "scope": 30, - "src": "936:24:0", + "scope": 41, + "src": "995:24:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -849,10 +1034,10 @@ "typeString": "uint32" }, "typeName": { - "id": 11, + "id": 15, "name": "uint32", "nodeType": "ElementaryTypeName", - "src": "936:6:0", + "src": "995:6:0", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -863,11 +1048,11 @@ }, { "constant": false, - "id": 14, + "id": 18, "name": "_operator", "nodeType": "VariableDeclaration", - "scope": 30, - "src": "966:17:0", + "scope": 41, + "src": "1025:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -875,10 +1060,10 @@ "typeString": "address" }, "typeName": { - "id": 13, + "id": 17, "name": "address", "nodeType": "ElementaryTypeName", - "src": "966:7:0", + "src": "1025:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -890,11 +1075,11 @@ }, { "constant": false, - "id": 16, + "id": 20, "name": "_token", "nodeType": "VariableDeclaration", - "scope": 30, - "src": "989:14:0", + "scope": 41, + "src": "1048:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -902,10 +1087,10 @@ "typeString": "address" }, "typeName": { - "id": 15, + "id": 19, "name": "address", "nodeType": "ElementaryTypeName", - "src": "989:7:0", + "src": "1048:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -916,25 +1101,25 @@ "visibility": "internal" } ], - "src": "878:129:0" + "src": "908:158:0" }, "returnParameters": { - "id": 24, + "id": 29, "nodeType": "ParameterList", "parameters": [], - "src": "1079:0:0" + "src": "1151:0:0" }, - "scope": 227, - "src": "867:237:0", + "scope": 266, + "src": "897:334:0", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 50, + "id": 61, "nodeType": "Block", - "src": "1144:155:0", + "src": "1271:155:0", "statements": [ { "expression": { @@ -946,7 +1131,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 37, + "id": 48, "isConstant": false, "isLValue": false, "isPure": false, @@ -955,18 +1140,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 34, + "id": 45, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3260, - "src": "1158:3:0", + "referencedDeclaration": 1015, + "src": "1285:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 35, + "id": 46, "isConstant": false, "isLValue": false, "isPure": false, @@ -974,7 +1159,7 @@ "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1158:9:0", + "src": "1285:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -985,14 +1170,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 36, + "id": 47, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1171:1:0", + "src": "1298:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1000,7 +1185,7 @@ }, "value": "0" }, - "src": "1158:14:0", + "src": "1285:14:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1009,14 +1194,14 @@ { "argumentTypes": null, "hexValue": "4554482076616c756520697320737570706f73656420746f206265203020666f7220455243323020696e7374616e6365", - "id": 38, + "id": 49, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1174:50:0", + "src": "1301:50:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_b14b0818f1fdc710b92ba7e1ce725992b43e47a5b220b1b890f352eeac2e1d5e", @@ -1036,21 +1221,21 @@ "typeString": "literal_string \"ETH value is supposed to be 0 for ERC20 instance\"" } ], - "id": 33, + "id": 44, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 3263, - 3264 + 1018, + 1019 ], - "referencedDeclaration": 3264, - "src": "1150:7:0", + "referencedDeclaration": 1019, + "src": "1277:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 39, + "id": 50, "isConstant": false, "isLValue": false, "isPure": false, @@ -1058,15 +1243,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1150:75:0", + "src": "1277:75:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 40, + "id": 51, "nodeType": "ExpressionStatement", - "src": "1150:75:0" + "src": "1277:75:0" }, { "expression": { @@ -1076,18 +1261,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 42, + "id": 53, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3260, - "src": "1254:3:0", + "referencedDeclaration": 1015, + "src": "1381:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 43, + "id": 54, "isConstant": false, "isLValue": false, "isPure": false, @@ -1095,7 +1280,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1254:10:0", + "src": "1381:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -1106,14 +1291,14 @@ "arguments": [ { "argumentTypes": null, - "id": 45, + "id": 56, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3284, - "src": "1274:4:0", + "referencedDeclaration": 1041, + "src": "1401:4:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Tornado_$227", + "typeIdentifier": "t_contract$_ERC20Tornado_$266", "typeString": "contract ERC20Tornado" } } @@ -1121,24 +1306,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ERC20Tornado_$227", + "typeIdentifier": "t_contract$_ERC20Tornado_$266", "typeString": "contract ERC20Tornado" } ], - "id": 44, + "id": 55, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1266:7:0", + "src": "1393:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 46, + "id": 57, "isConstant": false, "isLValue": false, "isPure": false, @@ -1146,7 +1331,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1266:13:0", + "src": "1393:13:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1154,12 +1339,12 @@ }, { "argumentTypes": null, - "id": 47, + "id": 58, "name": "denomination", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 897, - "src": "1281:12:0", + "referencedDeclaration": 660, + "src": "1408:12:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1181,18 +1366,18 @@ "typeString": "uint256" } ], - "id": 41, + "id": 52, "name": "_safeErc20TransferFrom", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 171, - "src": "1231:22:0", + "referencedDeclaration": 210, + "src": "1358:22:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, - "id": 48, + "id": 59, "isConstant": false, "isLValue": false, "isPure": false, @@ -1200,48 +1385,48 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1231:63:0", + "src": "1358:63:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 49, + "id": 60, "nodeType": "ExpressionStatement", - "src": "1231:63:0" + "src": "1358:63:0" } ] }, "documentation": null, - "id": 51, + "id": 62, "implemented": true, "kind": "function", "modifiers": [], "name": "_processDeposit", "nodeType": "FunctionDefinition", "parameters": { - "id": 31, + "id": 42, "nodeType": "ParameterList", "parameters": [], - "src": "1132:2:0" + "src": "1259:2:0" }, "returnParameters": { - "id": 32, + "id": 43, "nodeType": "ParameterList", "parameters": [], - "src": "1144:0:0" + "src": "1271:0:0" }, - "scope": 227, - "src": "1108:191:0", + "scope": 266, + "src": "1235:191:0", "stateMutability": "nonpayable", - "superFunction": 1014, + "superFunction": 785, "visibility": "internal" }, { "body": { - "id": 112, + "id": 151, "nodeType": "Block", - "src": "1423:427:0", + "src": "1574:657:0", "statements": [ { "expression": { @@ -1253,7 +1438,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 66, + "id": 79, "isConstant": false, "isLValue": false, "isPure": false, @@ -1262,18 +1447,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 63, + "id": 76, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3260, - "src": "1437:3:0", + "referencedDeclaration": 1015, + "src": "1588:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 64, + "id": 77, "isConstant": false, "isLValue": false, "isPure": false, @@ -1281,7 +1466,7 @@ "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1437:9:0", + "src": "1588:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1291,18 +1476,18 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 65, + "id": 78, "name": "_refund", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 59, - "src": "1450:7:0", + "referencedDeclaration": 70, + "src": "1601:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1437:20:0", + "src": "1588:20:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1311,14 +1496,14 @@ { "argumentTypes": null, "hexValue": "496e636f727265637420726566756e6420616d6f756e742072656365697665642062792074686520636f6e7472616374", - "id": 67, + "id": 80, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1459:50:0", + "src": "1610:50:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_3189ced290ffd29dc422911cd3b29574f21c524c91f4b41e6abb0646c581cbff", @@ -1338,21 +1523,21 @@ "typeString": "literal_string \"Incorrect refund amount received by the contract\"" } ], - "id": 62, + "id": 75, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 3263, - 3264 + 1018, + 1019 ], - "referencedDeclaration": 3264, - "src": "1429:7:0", + "referencedDeclaration": 1019, + "src": "1580:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 68, + "id": 81, "isConstant": false, "isLValue": false, "isPure": false, @@ -1360,178 +1545,158 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1429:81:0", + "src": "1580:81:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69, + "id": 82, "nodeType": "ExpressionStatement", - "src": "1429:81:0" + "src": "1580:81:0" }, { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 71, - "name": "_recipient", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 53, - "src": "1536:10:0", + "assignments": [ + 84 + ], + "declarations": [ + { + "constant": false, + "id": 84, + "name": "feeOn", + "nodeType": "VariableDeclaration", + "scope": 151, + "src": "1668:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 83, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1668:4:0", "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 74, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 72, - "name": "denomination", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 897, - "src": "1548:12:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 73, - "name": "_fee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 57, - "src": "1563:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1548:19:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 70, - "name": "_safeErc20Transfer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 226, - "src": "1517:18:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,uint256)" - } - }, - "id": 75, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1517:51:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + "value": null, + "visibility": "internal" } - }, - "id": 76, - "nodeType": "ExpressionStatement", - "src": "1517:51:0" - }, - { - "condition": { + ], + "id": 90, + "initialValue": { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" }, - "id": 79, + "id": 89, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 77, - "name": "_fee", + "id": 85, + "name": "_feeTo", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 57, - "src": "1578:4:0", + "referencedDeclaration": 72, + "src": "1681:6:0", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, "nodeType": "BinaryOperation", - "operator": ">", + "operator": "!=", "rightExpression": { "argumentTypes": null, - "hexValue": "30", - "id": 78, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 87, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1699:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 86, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1691:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 88, "isConstant": false, "isLValue": false, "isPure": true, - "kind": "number", + "kind": "typeConversion", "lValueRequested": false, - "nodeType": "Literal", - "src": "1585:1:0", - "subdenomination": null, + "names": [], + "nodeType": "FunctionCall", + "src": "1691:10:0", "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } }, - "src": "1578:8:0", + "src": "1681:20:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "falseBody": null, - "id": 86, - "nodeType": "IfStatement", - "src": "1574:63:0", - "trueBody": { - "id": 85, + "nodeType": "VariableDeclarationStatement", + "src": "1668:33:0" + }, + { + "condition": { + "argumentTypes": null, + "id": 91, + "name": "feeOn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 84, + "src": "1711:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 114, "nodeType": "Block", - "src": "1588:49:0", + "src": "1859:74:0", "statements": [ { "expression": { @@ -1539,12 +1704,12 @@ "arguments": [ { "argumentTypes": null, - "id": 81, - "name": "_relayer", + "id": 108, + "name": "_recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 55, - "src": "1615:8:0", + "referencedDeclaration": 64, + "src": "1886:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -1552,12 +1717,44 @@ }, { "argumentTypes": null, - "id": 82, - "name": "_fee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 57, - "src": "1625:4:0", + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 111, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 109, + "name": "denomination", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 660, + "src": "1898:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 110, + "name": "_relayer_fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 68, + "src": "1913:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1898:27:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1575,18 +1772,18 @@ "typeString": "uint256" } ], - "id": 80, + "id": 107, "name": "_safeErc20Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 226, - "src": "1596:18:0", + "referencedDeclaration": 265, + "src": "1867:18:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, - "id": 83, + "id": 112, "isConstant": false, "isLValue": false, "isPure": false, @@ -1594,15 +1791,231 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1596:34:0", + "src": "1867:59:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 84, + "id": 113, "nodeType": "ExpressionStatement", - "src": "1596:34:0" + "src": "1867:59:0" + } + ] + }, + "id": 115, + "nodeType": "IfStatement", + "src": "1707:226:0", + "trueBody": { + "id": 106, + "nodeType": "Block", + "src": "1718:135:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 93, + "name": "_recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64, + "src": "1745:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 98, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 96, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 94, + "name": "denomination", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 660, + "src": "1757:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 95, + "name": "_relayer_fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 68, + "src": "1772:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1757:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 97, + "name": "protocolFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8, + "src": "1787:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1757:41:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 92, + "name": "_safeErc20Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 265, + "src": "1726:18:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 99, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1726:73:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 100, + "nodeType": "ExpressionStatement", + "src": "1726:73:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 102, + "name": "_feeTo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 72, + "src": "1826:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 103, + "name": "protocolFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8, + "src": "1834:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 101, + "name": "_safeErc20Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 265, + "src": "1807:18:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 104, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1807:39:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 105, + "nodeType": "ExpressionStatement", + "src": "1807:39:0" } ] } @@ -1614,19 +2027,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 89, + "id": 118, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 87, - "name": "_refund", + "id": 116, + "name": "_relayer_fee", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 59, - "src": "1647:7:0", + "referencedDeclaration": 68, + "src": "1943:12:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1637,14 +2050,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 88, + "id": 117, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1657:1:0", + "src": "1958:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1652,34 +2065,168 @@ }, "value": "0" }, - "src": "1647:11:0", + "src": "1943:16:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 111, + "id": 125, "nodeType": "IfStatement", - "src": "1643:203:0", + "src": "1939:79:0", "trueBody": { - "id": 110, + "id": 124, "nodeType": "Block", - "src": "1660:186:0", + "src": "1961:57:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 120, + "name": "_relayer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66, + "src": "1988:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 121, + "name": "_relayer_fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 68, + "src": "1998:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 119, + "name": "_safeErc20Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 265, + "src": "1969:18:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 122, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1969:42:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 123, + "nodeType": "ExpressionStatement", + "src": "1969:42:0" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 128, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 126, + "name": "_refund", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 70, + "src": "2028:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 127, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2038:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2028:11:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 150, + "nodeType": "IfStatement", + "src": "2024:203:0", + "trueBody": { + "id": 149, + "nodeType": "Block", + "src": "2041:186:0", "statements": [ { "assignments": [ - 91, + 130, null ], "declarations": [ { "constant": false, - "id": 91, + "id": 130, "name": "success", "nodeType": "VariableDeclaration", - "scope": 110, - "src": "1669:12:0", + "scope": 149, + "src": "2050:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1687,10 +2234,10 @@ "typeString": "bool" }, "typeName": { - "id": 90, + "id": 129, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "1669:4:0", + "src": "2050:4:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1701,21 +2248,21 @@ }, null ], - "id": 99, + "id": 138, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "", - "id": 97, + "id": 136, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1718:2:0", + "src": "2099:2:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", @@ -1734,12 +2281,12 @@ "arguments": [ { "argumentTypes": null, - "id": 95, + "id": 134, "name": "_refund", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 59, - "src": "1709:7:0", + "referencedDeclaration": 70, + "src": "2090:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1757,18 +2304,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 92, + "id": 131, "name": "_recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 53, - "src": "1687:10:0", + "referencedDeclaration": 64, + "src": "2068:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, - "id": 93, + "id": 132, "isConstant": false, "isLValue": false, "isPure": false, @@ -1776,13 +2323,13 @@ "memberName": "call", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1687:15:0", + "src": "2068:15:0", "typeDescriptions": { "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory) payable returns (bool,bytes memory)" } }, - "id": 94, + "id": 133, "isConstant": false, "isLValue": false, "isPure": false, @@ -1790,13 +2337,13 @@ "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1687:21:0", + "src": "2068:21:0", "typeDescriptions": { "typeIdentifier": "t_function_setvalue_pure$_t_uint256_$returns$_t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value_$", "typeString": "function (uint256) pure returns (function (bytes memory) payable returns (bool,bytes memory))" } }, - "id": 96, + "id": 135, "isConstant": false, "isLValue": false, "isPure": false, @@ -1804,13 +2351,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1687:30:0", + "src": "2068:30:0", "typeDescriptions": { "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value", "typeString": "function (bytes memory) payable returns (bool,bytes memory)" } }, - "id": 98, + "id": 137, "isConstant": false, "isLValue": false, "isPure": false, @@ -1818,19 +2365,19 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1687:34:0", + "src": "2068:34:0", "typeDescriptions": { "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "tuple(bool,bytes memory)" } }, "nodeType": "VariableDeclarationStatement", - "src": "1668:53:0" + "src": "2049:53:0" }, { "condition": { "argumentTypes": null, - "id": 101, + "id": 140, "isConstant": false, "isLValue": false, "isPure": false, @@ -1838,15 +2385,15 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "1733:8:0", + "src": "2114:8:0", "subExpression": { "argumentTypes": null, - "id": 100, + "id": 139, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 91, - "src": "1734:7:0", + "referencedDeclaration": 130, + "src": "2115:7:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1858,13 +2405,13 @@ } }, "falseBody": null, - "id": 109, + "id": 148, "nodeType": "IfStatement", - "src": "1729:111:0", + "src": "2110:111:0", "trueBody": { - "id": 108, + "id": 147, "nodeType": "Block", - "src": "1743:97:0", + "src": "2124:97:0", "statements": [ { "expression": { @@ -1872,12 +2419,12 @@ "arguments": [ { "argumentTypes": null, - "id": 105, + "id": 144, "name": "_refund", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 59, - "src": "1823:7:0", + "referencedDeclaration": 70, + "src": "2204:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1893,18 +2440,18 @@ ], "expression": { "argumentTypes": null, - "id": 102, + "id": 141, "name": "_relayer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 55, - "src": "1805:8:0", + "referencedDeclaration": 66, + "src": "2186:8:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, - "id": 104, + "id": 143, "isConstant": false, "isLValue": false, "isPure": false, @@ -1912,13 +2459,13 @@ "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1805:17:0", + "src": "2186:17:0", "typeDescriptions": { "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)" } }, - "id": 106, + "id": 145, "isConstant": false, "isLValue": false, "isPure": false, @@ -1926,15 +2473,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1805:26:0", + "src": "2186:26:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 107, + "id": 146, "nodeType": "ExpressionStatement", - "src": "1805:26:0" + "src": "2186:26:0" } ] } @@ -1945,23 +2492,23 @@ ] }, "documentation": null, - "id": 113, + "id": 152, "implemented": true, "kind": "function", "modifiers": [], "name": "_processWithdraw", "nodeType": "FunctionDefinition", "parameters": { - "id": 60, + "id": 73, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 53, + "id": 64, "name": "_recipient", "nodeType": "VariableDeclaration", - "scope": 113, - "src": "1329:26:0", + "scope": 152, + "src": "1456:26:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1969,10 +2516,10 @@ "typeString": "address payable" }, "typeName": { - "id": 52, + "id": 63, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1329:15:0", + "src": "1456:15:0", "stateMutability": "payable", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -1984,11 +2531,11 @@ }, { "constant": false, - "id": 55, + "id": 66, "name": "_relayer", "nodeType": "VariableDeclaration", - "scope": 113, - "src": "1357:24:0", + "scope": 152, + "src": "1484:24:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1996,10 +2543,10 @@ "typeString": "address payable" }, "typeName": { - "id": 54, + "id": 65, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1357:15:0", + "src": "1484:15:0", "stateMutability": "payable", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -2011,11 +2558,11 @@ }, { "constant": false, - "id": 57, - "name": "_fee", + "id": 68, + "name": "_relayer_fee", "nodeType": "VariableDeclaration", - "scope": 113, - "src": "1383:12:0", + "scope": 152, + "src": "1510:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2023,10 +2570,10 @@ "typeString": "uint256" }, "typeName": { - "id": 56, + "id": 67, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1383:7:0", + "src": "1510:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2037,11 +2584,11 @@ }, { "constant": false, - "id": 59, + "id": 70, "name": "_refund", "nodeType": "VariableDeclaration", - "scope": 113, - "src": "1397:15:0", + "scope": 152, + "src": "1532:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2049,10 +2596,10 @@ "typeString": "uint256" }, "typeName": { - "id": 58, + "id": 69, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1397:7:0", + "src": "1532:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2060,41 +2607,68 @@ }, "value": null, "visibility": "internal" + }, + { + "constant": false, + "id": 72, + "name": "_feeTo", + "nodeType": "VariableDeclaration", + "scope": 152, + "src": "1549:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 71, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1549:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" } ], - "src": "1328:85:0" + "src": "1455:109:0" }, "returnParameters": { - "id": 61, + "id": 74, "nodeType": "ParameterList", "parameters": [], - "src": "1423:0:0" + "src": "1574:0:0" }, - "scope": 227, - "src": "1303:547:0", + "scope": 266, + "src": "1430:801:0", "stateMutability": "nonpayable", - "superFunction": 1110, + "superFunction": 886, "visibility": "internal" }, { "body": { - "id": 170, + "id": 209, "nodeType": "Block", - "src": "1940:504:0", + "src": "2321:504:0", "statements": [ { "assignments": [ - 123, - 125 + 162, + 164 ], "declarations": [ { "constant": false, - "id": 123, + "id": 162, "name": "success", "nodeType": "VariableDeclaration", - "scope": 170, - "src": "1947:12:0", + "scope": 209, + "src": "2328:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2102,10 +2676,10 @@ "typeString": "bool" }, "typeName": { - "id": 122, + "id": 161, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "1947:4:0", + "src": "2328:4:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2116,11 +2690,11 @@ }, { "constant": false, - "id": 125, + "id": 164, "name": "data", "nodeType": "VariableDeclaration", - "scope": 170, - "src": "1961:17:0", + "scope": 209, + "src": "2342:17:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -2128,10 +2702,10 @@ "typeString": "bytes" }, "typeName": { - "id": 124, + "id": 163, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "1961:5:0", + "src": "2342:5:0", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -2141,7 +2715,7 @@ "visibility": "internal" } ], - "id": 136, + "id": 175, "initialValue": { "argumentTypes": null, "arguments": [ @@ -2151,14 +2725,14 @@ { "argumentTypes": null, "hexValue": "30783233623837326464", - "id": 130, + "id": 169, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2016:10:0", + "src": "2397:10:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_599290589_by_1", @@ -2168,12 +2742,12 @@ }, { "argumentTypes": null, - "id": 131, + "id": 170, "name": "_from", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 115, - "src": "2047:5:0", + "referencedDeclaration": 154, + "src": "2428:5:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2181,12 +2755,12 @@ }, { "argumentTypes": null, - "id": 132, + "id": 171, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 117, - "src": "2054:3:0", + "referencedDeclaration": 156, + "src": "2435:3:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2194,12 +2768,12 @@ }, { "argumentTypes": null, - "id": 133, + "id": 172, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 119, - "src": "2059:7:0", + "referencedDeclaration": 158, + "src": "2440:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2227,18 +2801,18 @@ ], "expression": { "argumentTypes": null, - "id": 128, + "id": 167, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3247, - "src": "1993:3:0", + "referencedDeclaration": 1002, + "src": "2374:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 129, + "id": 168, "isConstant": false, "isLValue": false, "isPure": true, @@ -2246,13 +2820,13 @@ "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1993:22:0", + "src": "2374:22:0", "typeDescriptions": { "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)" } }, - "id": 134, + "id": 173, "isConstant": false, "isLValue": false, "isPure": false, @@ -2260,7 +2834,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1993:74:0", + "src": "2374:74:0", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -2276,18 +2850,18 @@ ], "expression": { "argumentTypes": null, - "id": 126, + "id": 165, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6, - "src": "1982:5:0", + "src": "2363:5:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 127, + "id": 166, "isConstant": false, "isLValue": false, "isPure": false, @@ -2295,13 +2869,13 @@ "memberName": "call", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1982:10:0", + "src": "2363:10:0", "typeDescriptions": { "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory) payable returns (bool,bytes memory)" } }, - "id": 135, + "id": 174, "isConstant": false, "isLValue": false, "isPure": false, @@ -2309,14 +2883,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1982:86:0", + "src": "2363:86:0", "typeDescriptions": { "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "tuple(bool,bytes memory)" } }, "nodeType": "VariableDeclarationStatement", - "src": "1946:122:0" + "src": "2327:122:0" }, { "expression": { @@ -2324,12 +2898,12 @@ "arguments": [ { "argumentTypes": null, - "id": 138, + "id": 177, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2082:7:0", + "referencedDeclaration": 162, + "src": "2463:7:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2338,14 +2912,14 @@ { "argumentTypes": null, "hexValue": "6e6f7420656e6f75676820616c6c6f77656420746f6b656e73", - "id": 139, + "id": 178, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2091:27:0", + "src": "2472:27:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_b31c8a8545ea674c554dd2f6bad7d7bd1dfe923a25150b76350dc6970bf3ff5c", @@ -2365,21 +2939,21 @@ "typeString": "literal_string \"not enough allowed tokens\"" } ], - "id": 137, + "id": 176, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 3263, - 3264 + 1018, + 1019 ], - "referencedDeclaration": 3264, - "src": "2074:7:0", + "referencedDeclaration": 1019, + "src": "2455:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 140, + "id": 179, "isConstant": false, "isLValue": false, "isPure": false, @@ -2387,15 +2961,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2074:45:0", + "src": "2455:45:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 141, + "id": 180, "nodeType": "ExpressionStatement", - "src": "2074:45:0" + "src": "2455:45:0" }, { "condition": { @@ -2404,7 +2978,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 145, + "id": 184, "isConstant": false, "isLValue": false, "isPure": false, @@ -2413,18 +2987,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 142, + "id": 181, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 125, - "src": "2219:4:0", + "referencedDeclaration": 164, + "src": "2600:4:0", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 143, + "id": 182, "isConstant": false, "isLValue": false, "isPure": false, @@ -2432,7 +3006,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2219:11:0", + "src": "2600:11:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2443,14 +3017,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 144, + "id": 183, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2233:1:0", + "src": "2614:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2458,20 +3032,20 @@ }, "value": "0" }, - "src": "2219:15:0", + "src": "2600:15:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 169, + "id": 208, "nodeType": "IfStatement", - "src": "2215:225:0", + "src": "2596:225:0", "trueBody": { - "id": 168, + "id": 207, "nodeType": "Block", - "src": "2236:204:0", + "src": "2617:204:0", "statements": [ { "expression": { @@ -2483,7 +3057,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 150, + "id": 189, "isConstant": false, "isLValue": false, "isPure": false, @@ -2492,18 +3066,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 147, + "id": 186, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 125, - "src": "2252:4:0", + "referencedDeclaration": 164, + "src": "2633:4:0", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 148, + "id": 187, "isConstant": false, "isLValue": false, "isPure": false, @@ -2511,7 +3085,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2252:11:0", + "src": "2633:11:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2522,14 +3096,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "3332", - "id": 149, + "id": 188, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2267:2:0", + "src": "2648:2:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_32_by_1", @@ -2537,7 +3111,7 @@ }, "value": "32" }, - "src": "2252:17:0", + "src": "2633:17:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2546,14 +3120,14 @@ { "argumentTypes": null, "hexValue": "64617461206c656e6774682073686f756c64206265206569746865722030206f72203332206279746573", - "id": 151, + "id": 190, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2271:44:0", + "src": "2652:44:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_22b4652a1c8fbdfc6305c7ee289e87caf6a45e5ae327ee8f67eb64ba36d62560", @@ -2573,21 +3147,21 @@ "typeString": "literal_string \"data length should be either 0 or 32 bytes\"" } ], - "id": 146, + "id": 185, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 3263, - 3264 + 1018, + 1019 ], - "referencedDeclaration": 3264, - "src": "2244:7:0", + "referencedDeclaration": 1019, + "src": "2625:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 152, + "id": 191, "isConstant": false, "isLValue": false, "isPure": false, @@ -2595,32 +3169,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2244:72:0", + "src": "2625:72:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 153, + "id": 192, "nodeType": "ExpressionStatement", - "src": "2244:72:0" + "src": "2625:72:0" }, { "expression": { "argumentTypes": null, - "id": 161, + "id": 200, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 154, + "id": 193, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2324:7:0", + "referencedDeclaration": 162, + "src": "2705:7:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2633,12 +3207,12 @@ "arguments": [ { "argumentTypes": null, - "id": 157, + "id": 196, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 125, - "src": "2345:4:0", + "referencedDeclaration": 164, + "src": "2726:4:0", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -2649,13 +3223,13 @@ "components": [ { "argumentTypes": null, - "id": 158, + "id": 197, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2352:4:0", + "src": "2733:4:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_bool_$", "typeString": "type(bool)" @@ -2663,14 +3237,14 @@ "typeName": "bool" } ], - "id": 159, + "id": 198, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "2351:6:0", + "src": "2732:6:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_bool_$", "typeString": "type(bool)" @@ -2690,18 +3264,18 @@ ], "expression": { "argumentTypes": null, - "id": 155, + "id": 194, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3247, - "src": "2334:3:0", + "referencedDeclaration": 1002, + "src": "2715:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 156, + "id": 195, "isConstant": false, "isLValue": false, "isPure": true, @@ -2709,13 +3283,13 @@ "memberName": "decode", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2334:10:0", + "src": "2715:10:0", "typeDescriptions": { "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", "typeString": "function () pure" } }, - "id": 160, + "id": 199, "isConstant": false, "isLValue": false, "isPure": false, @@ -2723,21 +3297,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2334:24:0", + "src": "2715:24:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "2324:34:0", + "src": "2705:34:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 162, + "id": 201, "nodeType": "ExpressionStatement", - "src": "2324:34:0" + "src": "2705:34:0" }, { "expression": { @@ -2745,12 +3319,12 @@ "arguments": [ { "argumentTypes": null, - "id": 164, + "id": 203, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2374:7:0", + "referencedDeclaration": 162, + "src": "2755:7:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2759,14 +3333,14 @@ { "argumentTypes": null, "hexValue": "6e6f7420656e6f75676820616c6c6f77656420746f6b656e732e20546f6b656e2072657475726e732066616c73652e", - "id": 165, + "id": 204, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2383:49:0", + "src": "2764:49:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_6cfae212a217874b58247660ff4d75d72aa825e8f2120480a7da09cf7efa221d", @@ -2786,21 +3360,21 @@ "typeString": "literal_string \"not enough allowed tokens. Token returns false.\"" } ], - "id": 163, + "id": 202, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 3263, - 3264 + 1018, + 1019 ], - "referencedDeclaration": 3264, - "src": "2366:7:0", + "referencedDeclaration": 1019, + "src": "2747:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 166, + "id": 205, "isConstant": false, "isLValue": false, "isPure": false, @@ -2808,15 +3382,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2366:67:0", + "src": "2747:67:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 167, + "id": 206, "nodeType": "ExpressionStatement", - "src": "2366:67:0" + "src": "2747:67:0" } ] } @@ -2824,23 +3398,23 @@ ] }, "documentation": null, - "id": 171, + "id": 210, "implemented": true, "kind": "function", "modifiers": [], "name": "_safeErc20TransferFrom", "nodeType": "FunctionDefinition", "parameters": { - "id": 120, + "id": 159, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 115, + "id": 154, "name": "_from", "nodeType": "VariableDeclaration", - "scope": 171, - "src": "1886:13:0", + "scope": 210, + "src": "2267:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2848,10 +3422,10 @@ "typeString": "address" }, "typeName": { - "id": 114, + "id": 153, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1886:7:0", + "src": "2267:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2863,11 +3437,11 @@ }, { "constant": false, - "id": 117, + "id": 156, "name": "_to", "nodeType": "VariableDeclaration", - "scope": 171, - "src": "1901:11:0", + "scope": 210, + "src": "2282:11:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2875,10 +3449,10 @@ "typeString": "address" }, "typeName": { - "id": 116, + "id": 155, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1901:7:0", + "src": "2282:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2890,11 +3464,11 @@ }, { "constant": false, - "id": 119, + "id": 158, "name": "_amount", "nodeType": "VariableDeclaration", - "scope": 171, - "src": "1914:15:0", + "scope": 210, + "src": "2295:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2902,10 +3476,10 @@ "typeString": "uint256" }, "typeName": { - "id": 118, + "id": 157, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1914:7:0", + "src": "2295:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2915,39 +3489,39 @@ "visibility": "internal" } ], - "src": "1885:45:0" + "src": "2266:45:0" }, "returnParameters": { - "id": 121, + "id": 160, "nodeType": "ParameterList", "parameters": [], - "src": "1940:0:0" + "src": "2321:0:0" }, - "scope": 227, - "src": "1854:590:0", + "scope": 266, + "src": "2235:590:0", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 225, + "id": 264, "nodeType": "Block", - "src": "2515:477:0", + "src": "2896:477:0", "statements": [ { "assignments": [ - 179, - 181 + 218, + 220 ], "declarations": [ { "constant": false, - "id": 179, + "id": 218, "name": "success", "nodeType": "VariableDeclaration", - "scope": 225, - "src": "2522:12:0", + "scope": 264, + "src": "2903:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2955,10 +3529,10 @@ "typeString": "bool" }, "typeName": { - "id": 178, + "id": 217, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "2522:4:0", + "src": "2903:4:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2969,11 +3543,11 @@ }, { "constant": false, - "id": 181, + "id": 220, "name": "data", "nodeType": "VariableDeclaration", - "scope": 225, - "src": "2536:17:0", + "scope": 264, + "src": "2917:17:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -2981,10 +3555,10 @@ "typeString": "bytes" }, "typeName": { - "id": 180, + "id": 219, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2536:5:0", + "src": "2917:5:0", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -2994,7 +3568,7 @@ "visibility": "internal" } ], - "id": 191, + "id": 230, "initialValue": { "argumentTypes": null, "arguments": [ @@ -3004,14 +3578,14 @@ { "argumentTypes": null, "hexValue": "30786139303539636262", - "id": 186, + "id": 225, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2591:10:0", + "src": "2972:10:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2835717307_by_1", @@ -3021,12 +3595,12 @@ }, { "argumentTypes": null, - "id": 187, + "id": 226, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 173, - "src": "2618:3:0", + "referencedDeclaration": 212, + "src": "2999:3:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3034,12 +3608,12 @@ }, { "argumentTypes": null, - "id": 188, + "id": 227, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 175, - "src": "2623:7:0", + "referencedDeclaration": 214, + "src": "3004:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3063,18 +3637,18 @@ ], "expression": { "argumentTypes": null, - "id": 184, + "id": 223, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3247, - "src": "2568:3:0", + "referencedDeclaration": 1002, + "src": "2949:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 185, + "id": 224, "isConstant": false, "isLValue": false, "isPure": true, @@ -3082,13 +3656,13 @@ "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2568:22:0", + "src": "2949:22:0", "typeDescriptions": { "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)" } }, - "id": 189, + "id": 228, "isConstant": false, "isLValue": false, "isPure": false, @@ -3096,7 +3670,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2568:63:0", + "src": "2949:63:0", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -3112,18 +3686,18 @@ ], "expression": { "argumentTypes": null, - "id": 182, + "id": 221, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6, - "src": "2557:5:0", + "src": "2938:5:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 183, + "id": 222, "isConstant": false, "isLValue": false, "isPure": false, @@ -3131,13 +3705,13 @@ "memberName": "call", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2557:10:0", + "src": "2938:10:0", "typeDescriptions": { "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory) payable returns (bool,bytes memory)" } }, - "id": 190, + "id": 229, "isConstant": false, "isLValue": false, "isPure": false, @@ -3145,14 +3719,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2557:75:0", + "src": "2938:75:0", "typeDescriptions": { "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "tuple(bool,bytes memory)" } }, "nodeType": "VariableDeclarationStatement", - "src": "2521:111:0" + "src": "2902:111:0" }, { "expression": { @@ -3160,12 +3734,12 @@ "arguments": [ { "argumentTypes": null, - "id": 193, + "id": 232, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 179, - "src": "2646:7:0", + "referencedDeclaration": 218, + "src": "3027:7:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3174,14 +3748,14 @@ { "argumentTypes": null, "hexValue": "6e6f7420656e6f75676820746f6b656e73", - "id": 194, + "id": 233, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2655:19:0", + "src": "3036:19:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_73949bcdc07934e9395e82489bb22c4742e057960a2c090d38e53d68d3caf52a", @@ -3201,21 +3775,21 @@ "typeString": "literal_string \"not enough tokens\"" } ], - "id": 192, + "id": 231, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 3263, - 3264 + 1018, + 1019 ], - "referencedDeclaration": 3264, - "src": "2638:7:0", + "referencedDeclaration": 1019, + "src": "3019:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 195, + "id": 234, "isConstant": false, "isLValue": false, "isPure": false, @@ -3223,15 +3797,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2638:37:0", + "src": "3019:37:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 196, + "id": 235, "nodeType": "ExpressionStatement", - "src": "2638:37:0" + "src": "3019:37:0" }, { "condition": { @@ -3240,7 +3814,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 200, + "id": 239, "isConstant": false, "isLValue": false, "isPure": false, @@ -3249,18 +3823,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 197, + "id": 236, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 181, - "src": "2775:4:0", + "referencedDeclaration": 220, + "src": "3156:4:0", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 198, + "id": 237, "isConstant": false, "isLValue": false, "isPure": false, @@ -3268,7 +3842,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2775:11:0", + "src": "3156:11:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3279,14 +3853,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 199, + "id": 238, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2789:1:0", + "src": "3170:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3294,20 +3868,20 @@ }, "value": "0" }, - "src": "2775:15:0", + "src": "3156:15:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 224, + "id": 263, "nodeType": "IfStatement", - "src": "2771:217:0", + "src": "3152:217:0", "trueBody": { - "id": 223, + "id": 262, "nodeType": "Block", - "src": "2792:196:0", + "src": "3173:196:0", "statements": [ { "expression": { @@ -3319,7 +3893,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 205, + "id": 244, "isConstant": false, "isLValue": false, "isPure": false, @@ -3328,18 +3902,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 202, + "id": 241, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 181, - "src": "2808:4:0", + "referencedDeclaration": 220, + "src": "3189:4:0", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 203, + "id": 242, "isConstant": false, "isLValue": false, "isPure": false, @@ -3347,7 +3921,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2808:11:0", + "src": "3189:11:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3358,14 +3932,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "3332", - "id": 204, + "id": 243, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2823:2:0", + "src": "3204:2:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_32_by_1", @@ -3373,7 +3947,7 @@ }, "value": "32" }, - "src": "2808:17:0", + "src": "3189:17:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3382,14 +3956,14 @@ { "argumentTypes": null, "hexValue": "64617461206c656e6774682073686f756c64206265206569746865722030206f72203332206279746573", - "id": 206, + "id": 245, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2827:44:0", + "src": "3208:44:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_22b4652a1c8fbdfc6305c7ee289e87caf6a45e5ae327ee8f67eb64ba36d62560", @@ -3409,21 +3983,21 @@ "typeString": "literal_string \"data length should be either 0 or 32 bytes\"" } ], - "id": 201, + "id": 240, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 3263, - 3264 + 1018, + 1019 ], - "referencedDeclaration": 3264, - "src": "2800:7:0", + "referencedDeclaration": 1019, + "src": "3181:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 207, + "id": 246, "isConstant": false, "isLValue": false, "isPure": false, @@ -3431,32 +4005,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2800:72:0", + "src": "3181:72:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 208, + "id": 247, "nodeType": "ExpressionStatement", - "src": "2800:72:0" + "src": "3181:72:0" }, { "expression": { "argumentTypes": null, - "id": 216, + "id": 255, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 209, + "id": 248, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 179, - "src": "2880:7:0", + "referencedDeclaration": 218, + "src": "3261:7:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3469,12 +4043,12 @@ "arguments": [ { "argumentTypes": null, - "id": 212, + "id": 251, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 181, - "src": "2901:4:0", + "referencedDeclaration": 220, + "src": "3282:4:0", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -3485,13 +4059,13 @@ "components": [ { "argumentTypes": null, - "id": 213, + "id": 252, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2908:4:0", + "src": "3289:4:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_bool_$", "typeString": "type(bool)" @@ -3499,14 +4073,14 @@ "typeName": "bool" } ], - "id": 214, + "id": 253, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "2907:6:0", + "src": "3288:6:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_bool_$", "typeString": "type(bool)" @@ -3526,18 +4100,18 @@ ], "expression": { "argumentTypes": null, - "id": 210, + "id": 249, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3247, - "src": "2890:3:0", + "referencedDeclaration": 1002, + "src": "3271:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 211, + "id": 250, "isConstant": false, "isLValue": false, "isPure": true, @@ -3545,13 +4119,13 @@ "memberName": "decode", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2890:10:0", + "src": "3271:10:0", "typeDescriptions": { "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", "typeString": "function () pure" } }, - "id": 215, + "id": 254, "isConstant": false, "isLValue": false, "isPure": false, @@ -3559,21 +4133,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2890:24:0", + "src": "3271:24:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "2880:34:0", + "src": "3261:34:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 217, + "id": 256, "nodeType": "ExpressionStatement", - "src": "2880:34:0" + "src": "3261:34:0" }, { "expression": { @@ -3581,12 +4155,12 @@ "arguments": [ { "argumentTypes": null, - "id": 219, + "id": 258, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 179, - "src": "2930:7:0", + "referencedDeclaration": 218, + "src": "3311:7:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3595,14 +4169,14 @@ { "argumentTypes": null, "hexValue": "6e6f7420656e6f75676820746f6b656e732e20546f6b656e2072657475726e732066616c73652e", - "id": 220, + "id": 259, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2939:41:0", + "src": "3320:41:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_38fa5aabf87e9f42de902eb4d9022484dde7943d80702b79ba468e9fc08f5e5e", @@ -3622,21 +4196,21 @@ "typeString": "literal_string \"not enough tokens. Token returns false.\"" } ], - "id": 218, + "id": 257, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 3263, - 3264 + 1018, + 1019 ], - "referencedDeclaration": 3264, - "src": "2922:7:0", + "referencedDeclaration": 1019, + "src": "3303:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 221, + "id": 260, "isConstant": false, "isLValue": false, "isPure": false, @@ -3644,15 +4218,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2922:59:0", + "src": "3303:59:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 222, + "id": 261, "nodeType": "ExpressionStatement", - "src": "2922:59:0" + "src": "3303:59:0" } ] } @@ -3660,23 +4234,23 @@ ] }, "documentation": null, - "id": 226, + "id": 265, "implemented": true, "kind": "function", "modifiers": [], "name": "_safeErc20Transfer", "nodeType": "FunctionDefinition", "parameters": { - "id": 176, + "id": 215, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 173, + "id": 212, "name": "_to", "nodeType": "VariableDeclaration", - "scope": 226, - "src": "2476:11:0", + "scope": 265, + "src": "2857:11:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3684,10 +4258,10 @@ "typeString": "address" }, "typeName": { - "id": 172, + "id": 211, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2476:7:0", + "src": "2857:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3699,11 +4273,11 @@ }, { "constant": false, - "id": 175, + "id": 214, "name": "_amount", "nodeType": "VariableDeclaration", - "scope": 226, - "src": "2489:15:0", + "scope": 265, + "src": "2870:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3711,10 +4285,10 @@ "typeString": "uint256" }, "typeName": { - "id": 174, + "id": 213, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2489:7:0", + "src": "2870:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3724,33 +4298,33 @@ "visibility": "internal" } ], - "src": "2475:30:0" + "src": "2856:30:0" }, "returnParameters": { - "id": 177, + "id": 216, "nodeType": "ParameterList", "parameters": [], - "src": "2515:0:0" + "src": "2896:0:0" }, - "scope": 227, - "src": "2448:544:0", + "scope": 266, + "src": "2829:544:0", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 228, - "src": "805:2189:0" + "scope": 267, + "src": "805:2570:0" } ], - "src": "755:2240:0" + "src": "755:2621:0" }, "legacyAST": { "attributes": { "absolutePath": "/Users/brianli/dotfiles/tornado-core/contracts/ERC20Tornado.sol", "exportedSymbols": { "ERC20Tornado": [ - 227 + 266 ] } }, @@ -3769,10 +4343,10 @@ }, { "attributes": { - "SourceUnit": 1195, + "SourceUnit": 971, "absolutePath": "/Users/brianli/dotfiles/tornado-core/contracts/Tornado.sol", "file": "./Tornado.sol", - "scope": 228, + "scope": 267, "symbolAliases": [ null ], @@ -3785,21 +4359,21 @@ { "attributes": { "contractDependencies": [ - 694, - 1194, - 3245 + 632, + 970, + 1000 ], "contractKind": "contract", "documentation": null, "fullyImplemented": true, "linearizedBaseContracts": [ - 227, - 1194, - 3245, - 694 + 266, + 970, + 1000, + 632 ], "name": "ERC20Tornado", - "scope": 228 + "scope": 267 }, "children": [ { @@ -3811,7 +4385,7 @@ "attributes": { "contractScope": null, "name": "Tornado", - "referencedDeclaration": 1194, + "referencedDeclaration": 970, "type": "contract Tornado" }, "id": 3, @@ -3827,7 +4401,7 @@ "attributes": { "constant": false, "name": "token", - "scope": 227, + "scope": 266, "stateVariable": true, "storageLocation": "default", "type": "address", @@ -3850,6 +4424,32 @@ "name": "VariableDeclaration", "src": "842:20:0" }, + { + "attributes": { + "constant": false, + "name": "protocolFee", + "scope": 266, + "stateVariable": true, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 7, + "name": "ElementaryTypeName", + "src": "866:7:0" + } + ], + "id": 8, + "name": "VariableDeclaration", + "src": "866:26:0" + }, { "attributes": { "documentation": null, @@ -3857,7 +4457,7 @@ "isConstructor": true, "kind": "constructor", "name": "", - "scope": 227, + "scope": 266, "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -3869,7 +4469,7 @@ "attributes": { "constant": false, "name": "_verifier", - "scope": 30, + "scope": 41, "stateVariable": false, "storageLocation": "default", "type": "contract IVerifier", @@ -3881,23 +4481,51 @@ "attributes": { "contractScope": null, "name": "IVerifier", - "referencedDeclaration": 891, + "referencedDeclaration": 648, "type": "contract IVerifier" }, - "id": 7, + "id": 9, "name": "UserDefinedTypeName", - "src": "884:9:0" + "src": "914:9:0" } ], - "id": 8, + "id": 10, "name": "VariableDeclaration", - "src": "884:19:0" + "src": "914:19:0" + }, + { + "attributes": { + "constant": false, + "name": "_feeManager", + "scope": 41, + "stateVariable": false, + "storageLocation": "default", + "type": "contract IFeeManager", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "IFeeManager", + "referencedDeclaration": 654, + "type": "contract IFeeManager" + }, + "id": 11, + "name": "UserDefinedTypeName", + "src": "939:11:0" + } + ], + "id": 12, + "name": "VariableDeclaration", + "src": "939:23:0" }, { "attributes": { "constant": false, "name": "_denomination", - "scope": 30, + "scope": 41, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -3910,20 +4538,20 @@ "name": "uint256", "type": "uint256" }, - "id": 9, + "id": 13, "name": "ElementaryTypeName", - "src": "909:7:0" + "src": "968:7:0" } ], - "id": 10, + "id": 14, "name": "VariableDeclaration", - "src": "909:21:0" + "src": "968:21:0" }, { "attributes": { "constant": false, "name": "_merkleTreeHeight", - "scope": 30, + "scope": 41, "stateVariable": false, "storageLocation": "default", "type": "uint32", @@ -3936,20 +4564,20 @@ "name": "uint32", "type": "uint32" }, - "id": 11, + "id": 15, "name": "ElementaryTypeName", - "src": "936:6:0" + "src": "995:6:0" } ], - "id": 12, + "id": 16, "name": "VariableDeclaration", - "src": "936:24:0" + "src": "995:24:0" }, { "attributes": { "constant": false, "name": "_operator", - "scope": 30, + "scope": 41, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -3963,20 +4591,20 @@ "stateMutability": "nonpayable", "type": "address" }, - "id": 13, + "id": 17, "name": "ElementaryTypeName", - "src": "966:7:0" + "src": "1025:7:0" } ], - "id": 14, + "id": 18, "name": "VariableDeclaration", - "src": "966:17:0" + "src": "1025:17:0" }, { "attributes": { "constant": false, "name": "_token", - "scope": 30, + "scope": 41, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -3990,19 +4618,19 @@ "stateMutability": "nonpayable", "type": "address" }, - "id": 15, + "id": 19, "name": "ElementaryTypeName", - "src": "989:7:0" + "src": "1048:7:0" } ], - "id": 16, + "id": 20, "name": "VariableDeclaration", - "src": "989:14:0" + "src": "1048:14:0" } ], - "id": 17, + "id": 21, "name": "ParameterList", - "src": "878:129:0" + "src": "908:158:0" }, { "attributes": { @@ -4011,9 +4639,9 @@ ] }, "children": [], - "id": 24, + "id": 29, "name": "ParameterList", - "src": "1079:0:0" + "src": "1151:0:0" }, { "children": [ @@ -4023,27 +4651,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1194, + "referencedDeclaration": 970, "type": "type(contract Tornado)", "value": "Tornado" }, - "id": 18, + "id": 22, "name": "Identifier", - "src": "1008:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 8, - "type": "contract IVerifier", - "value": "_verifier" - }, - "id": 19, - "name": "Identifier", - "src": "1016:9:0" + "src": "1067:7:0" }, { "attributes": { @@ -4052,12 +4666,12 @@ null ], "referencedDeclaration": 10, - "type": "uint256", - "value": "_denomination" + "type": "contract IVerifier", + "value": "_verifier" }, - "id": 20, + "id": 23, "name": "Identifier", - "src": "1027:13:0" + "src": "1075:9:0" }, { "attributes": { @@ -4066,12 +4680,12 @@ null ], "referencedDeclaration": 12, - "type": "uint32", - "value": "_merkleTreeHeight" + "type": "contract IFeeManager", + "value": "_feeManager" }, - "id": 21, + "id": 24, "name": "Identifier", - "src": "1042:17:0" + "src": "1086:11:0" }, { "attributes": { @@ -4080,17 +4694,45 @@ null ], "referencedDeclaration": 14, + "type": "uint256", + "value": "_denomination" + }, + "id": 25, + "name": "Identifier", + "src": "1099:13:0" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 16, + "type": "uint32", + "value": "_merkleTreeHeight" + }, + "id": 26, + "name": "Identifier", + "src": "1114:17:0" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 18, "type": "address", "value": "_operator" }, - "id": 22, + "id": 27, "name": "Identifier", - "src": "1061:9:0" + "src": "1133:9:0" } ], - "id": 23, + "id": 28, "name": "ModifierInvocation", - "src": "1008:63:0" + "src": "1067:76:0" }, { "children": [ @@ -4117,9 +4759,9 @@ "type": "address", "value": "token" }, - "id": 25, + "id": 30, "name": "Identifier", - "src": "1085:5:0" + "src": "1157:5:0" }, { "attributes": { @@ -4127,33 +4769,121 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 16, + "referencedDeclaration": 20, "type": "address", "value": "_token" }, - "id": 26, + "id": 31, "name": "Identifier", - "src": "1093:6:0" + "src": "1165:6:0" } ], - "id": 27, + "id": 32, "name": "Assignment", - "src": "1085:14:0" + "src": "1157:14:0" } ], - "id": 28, + "id": 33, "name": "ExpressionStatement", - "src": "1085:14:0" + "src": "1157:14:0" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 8, + "type": "uint256", + "value": "protocolFee" + }, + "id": 34, + "name": "Identifier", + "src": "1193:11:0" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "/", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 14, + "type": "uint256", + "value": "_denomination" + }, + "id": 35, + "name": "Identifier", + "src": "1207:13:0" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "323030", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 200", + "value": "200" + }, + "id": 36, + "name": "Literal", + "src": "1223:3:0" + } + ], + "id": 37, + "name": "BinaryOperation", + "src": "1207:19:0" + } + ], + "id": 38, + "name": "Assignment", + "src": "1193:33:0" + } + ], + "id": 39, + "name": "ExpressionStatement", + "src": "1193:33:0" } ], - "id": 29, + "id": 40, "name": "Block", - "src": "1079:25:0" + "src": "1151:80:0" } ], - "id": 30, + "id": 41, "name": "FunctionDefinition", - "src": "867:237:0" + "src": "897:334:0" }, { "attributes": { @@ -4165,9 +4895,9 @@ null ], "name": "_processDeposit", - "scope": 227, + "scope": 266, "stateMutability": "nonpayable", - "superFunction": 1014, + "superFunction": 785, "visibility": "internal" }, "children": [ @@ -4178,9 +4908,9 @@ ] }, "children": [], - "id": 31, + "id": 42, "name": "ParameterList", - "src": "1132:2:0" + "src": "1259:2:0" }, { "attributes": { @@ -4189,9 +4919,9 @@ ] }, "children": [], - "id": 32, + "id": 43, "name": "ParameterList", - "src": "1144:0:0" + "src": "1271:0:0" }, { "children": [ @@ -4225,16 +4955,16 @@ } ], "overloadedDeclarations": [ - 3263, - 3264 + 1018, + 1019 ], - "referencedDeclaration": 3264, + "referencedDeclaration": 1019, "type": "function (bool,string memory) pure", "value": "require" }, - "id": 33, + "id": 44, "name": "Identifier", - "src": "1150:7:0" + "src": "1277:7:0" }, { "attributes": { @@ -4269,18 +4999,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 3260, + "referencedDeclaration": 1015, "type": "msg", "value": "msg" }, - "id": 34, + "id": 45, "name": "Identifier", - "src": "1158:3:0" + "src": "1285:3:0" } ], - "id": 35, + "id": 46, "name": "MemberAccess", - "src": "1158:9:0" + "src": "1285:9:0" }, { "attributes": { @@ -4295,14 +5025,14 @@ "type": "int_const 0", "value": "0" }, - "id": 36, + "id": 47, "name": "Literal", - "src": "1171:1:0" + "src": "1298:1:0" } ], - "id": 37, + "id": 48, "name": "BinaryOperation", - "src": "1158:14:0" + "src": "1285:14:0" }, { "attributes": { @@ -4317,19 +5047,19 @@ "type": "literal_string \"ETH value is supposed to be 0 for ERC20 instance\"", "value": "ETH value is supposed to be 0 for ERC20 instance" }, - "id": 38, + "id": 49, "name": "Literal", - "src": "1174:50:0" + "src": "1301:50:0" } ], - "id": 39, + "id": 50, "name": "FunctionCall", - "src": "1150:75:0" + "src": "1277:75:0" } ], - "id": 40, + "id": 51, "name": "ExpressionStatement", - "src": "1150:75:0" + "src": "1277:75:0" }, { "children": [ @@ -4367,13 +5097,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 171, + "referencedDeclaration": 210, "type": "function (address,address,uint256)", "value": "_safeErc20TransferFrom" }, - "id": 41, + "id": 52, "name": "Identifier", - "src": "1231:22:0" + "src": "1358:22:0" }, { "attributes": { @@ -4393,18 +5123,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 3260, + "referencedDeclaration": 1015, "type": "msg", "value": "msg" }, - "id": 42, + "id": 53, "name": "Identifier", - "src": "1254:3:0" + "src": "1381:3:0" } ], - "id": 43, + "id": 54, "name": "MemberAccess", - "src": "1254:10:0" + "src": "1381:10:0" }, { "attributes": { @@ -4425,7 +5155,7 @@ "attributes": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ERC20Tornado_$227", + "typeIdentifier": "t_contract$_ERC20Tornado_$266", "typeString": "contract ERC20Tornado" } ], @@ -4436,9 +5166,9 @@ "type": "type(address)", "value": "address" }, - "id": 44, + "id": 55, "name": "ElementaryTypeNameExpression", - "src": "1266:7:0" + "src": "1393:7:0" }, { "attributes": { @@ -4446,18 +5176,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 3284, + "referencedDeclaration": 1041, "type": "contract ERC20Tornado", "value": "this" }, - "id": 45, + "id": 56, "name": "Identifier", - "src": "1274:4:0" + "src": "1401:4:0" } ], - "id": 46, + "id": 57, "name": "FunctionCall", - "src": "1266:13:0" + "src": "1393:13:0" }, { "attributes": { @@ -4465,33 +5195,33 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 897, + "referencedDeclaration": 660, "type": "uint256", "value": "denomination" }, - "id": 47, + "id": 58, "name": "Identifier", - "src": "1281:12:0" + "src": "1408:12:0" } ], - "id": 48, + "id": 59, "name": "FunctionCall", - "src": "1231:63:0" + "src": "1358:63:0" } ], - "id": 49, + "id": 60, "name": "ExpressionStatement", - "src": "1231:63:0" + "src": "1358:63:0" } ], - "id": 50, + "id": 61, "name": "Block", - "src": "1144:155:0" + "src": "1271:155:0" } ], - "id": 51, + "id": 62, "name": "FunctionDefinition", - "src": "1108:191:0" + "src": "1235:191:0" }, { "attributes": { @@ -4503,9 +5233,9 @@ null ], "name": "_processWithdraw", - "scope": 227, + "scope": 266, "stateMutability": "nonpayable", - "superFunction": 1110, + "superFunction": 886, "visibility": "internal" }, "children": [ @@ -4515,7 +5245,7 @@ "attributes": { "constant": false, "name": "_recipient", - "scope": 113, + "scope": 152, "stateVariable": false, "storageLocation": "default", "type": "address payable", @@ -4529,20 +5259,20 @@ "stateMutability": "payable", "type": "address payable" }, - "id": 52, + "id": 63, "name": "ElementaryTypeName", - "src": "1329:15:0" + "src": "1456:15:0" } ], - "id": 53, + "id": 64, "name": "VariableDeclaration", - "src": "1329:26:0" + "src": "1456:26:0" }, { "attributes": { "constant": false, "name": "_relayer", - "scope": 113, + "scope": 152, "stateVariable": false, "storageLocation": "default", "type": "address payable", @@ -4556,20 +5286,20 @@ "stateMutability": "payable", "type": "address payable" }, - "id": 54, + "id": 65, "name": "ElementaryTypeName", - "src": "1357:15:0" + "src": "1484:15:0" } ], - "id": 55, + "id": 66, "name": "VariableDeclaration", - "src": "1357:24:0" + "src": "1484:24:0" }, { "attributes": { "constant": false, - "name": "_fee", - "scope": 113, + "name": "_relayer_fee", + "scope": 152, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -4582,20 +5312,20 @@ "name": "uint256", "type": "uint256" }, - "id": 56, + "id": 67, "name": "ElementaryTypeName", - "src": "1383:7:0" + "src": "1510:7:0" } ], - "id": 57, + "id": 68, "name": "VariableDeclaration", - "src": "1383:12:0" + "src": "1510:20:0" }, { "attributes": { "constant": false, "name": "_refund", - "scope": 113, + "scope": 152, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -4608,19 +5338,46 @@ "name": "uint256", "type": "uint256" }, - "id": 58, + "id": 69, "name": "ElementaryTypeName", - "src": "1397:7:0" + "src": "1532:7:0" } ], - "id": 59, + "id": 70, "name": "VariableDeclaration", - "src": "1397:15:0" + "src": "1532:15:0" + }, + { + "attributes": { + "constant": false, + "name": "_feeTo", + "scope": 152, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 71, + "name": "ElementaryTypeName", + "src": "1549:7:0" + } + ], + "id": 72, + "name": "VariableDeclaration", + "src": "1549:14:0" } ], - "id": 60, + "id": 73, "name": "ParameterList", - "src": "1328:85:0" + "src": "1455:109:0" }, { "attributes": { @@ -4629,9 +5386,9 @@ ] }, "children": [], - "id": 61, + "id": 74, "name": "ParameterList", - "src": "1423:0:0" + "src": "1574:0:0" }, { "children": [ @@ -4665,16 +5422,16 @@ } ], "overloadedDeclarations": [ - 3263, - 3264 + 1018, + 1019 ], - "referencedDeclaration": 3264, + "referencedDeclaration": 1019, "type": "function (bool,string memory) pure", "value": "require" }, - "id": 62, + "id": 75, "name": "Identifier", - "src": "1429:7:0" + "src": "1580:7:0" }, { "attributes": { @@ -4709,18 +5466,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 3260, + "referencedDeclaration": 1015, "type": "msg", "value": "msg" }, - "id": 63, + "id": 76, "name": "Identifier", - "src": "1437:3:0" + "src": "1588:3:0" } ], - "id": 64, + "id": 77, "name": "MemberAccess", - "src": "1437:9:0" + "src": "1588:9:0" }, { "attributes": { @@ -4728,18 +5485,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 59, + "referencedDeclaration": 70, "type": "uint256", "value": "_refund" }, - "id": 65, + "id": 78, "name": "Identifier", - "src": "1450:7:0" + "src": "1601:7:0" } ], - "id": 66, + "id": 79, "name": "BinaryOperation", - "src": "1437:20:0" + "src": "1588:20:0" }, { "attributes": { @@ -4754,149 +5511,65 @@ "type": "literal_string \"Incorrect refund amount received by the contract\"", "value": "Incorrect refund amount received by the contract" }, - "id": 67, + "id": 80, "name": "Literal", - "src": "1459:50:0" + "src": "1610:50:0" } ], - "id": 68, + "id": 81, "name": "FunctionCall", - "src": "1429:81:0" + "src": "1580:81:0" } ], - "id": 69, + "id": 82, "name": "ExpressionStatement", - "src": "1429:81:0" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 226, - "type": "function (address,uint256)", - "value": "_safeErc20Transfer" - }, - "id": 70, - "name": "Identifier", - "src": "1517:18:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 53, - "type": "address payable", - "value": "_recipient" - }, - "id": 71, - "name": "Identifier", - "src": "1536:10:0" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "-", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 897, - "type": "uint256", - "value": "denomination" - }, - "id": 72, - "name": "Identifier", - "src": "1548:12:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 57, - "type": "uint256", - "value": "_fee" - }, - "id": 73, - "name": "Identifier", - "src": "1563:4:0" - } - ], - "id": 74, - "name": "BinaryOperation", - "src": "1548:19:0" - } - ], - "id": 75, - "name": "FunctionCall", - "src": "1517:51:0" - } - ], - "id": 76, - "name": "ExpressionStatement", - "src": "1517:51:0" + "src": "1580:81:0" }, { "attributes": { - "falseBody": null + "assignments": [ + 84 + ] }, "children": [ + { + "attributes": { + "constant": false, + "name": "feeOn", + "scope": 151, + "stateVariable": false, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 83, + "name": "ElementaryTypeName", + "src": "1668:4:0" + } + ], + "id": 84, + "name": "VariableDeclaration", + "src": "1668:10:0" + }, { "attributes": { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" }, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "operator": ">", + "operator": "!=", "type": "bool" }, "children": [ @@ -4906,35 +5579,95 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 57, - "type": "uint256", - "value": "_fee" + "referencedDeclaration": 72, + "type": "address", + "value": "_feeTo" }, - "id": 77, + "id": 85, "name": "Identifier", - "src": "1578:4:0" + "src": "1681:6:0" }, { "attributes": { "argumentTypes": null, - "hexvalue": "30", "isConstant": false, "isLValue": false, "isPure": true, + "isStructConstructorCall": false, "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" + "names": [ + null + ], + "type": "address payable", + "type_conversion": true }, - "id": 78, - "name": "Literal", - "src": "1585:1:0" + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)", + "value": "address" + }, + "id": 86, + "name": "ElementaryTypeNameExpression", + "src": "1691:7:0" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 87, + "name": "Literal", + "src": "1699:1:0" + } + ], + "id": 88, + "name": "FunctionCall", + "src": "1691:10:0" } ], - "id": 79, + "id": 89, "name": "BinaryOperation", - "src": "1578:8:0" + "src": "1681:20:0" + } + ], + "id": 90, + "name": "VariableDeclarationStatement", + "src": "1668:33:0" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 84, + "type": "bool", + "value": "feeOn" + }, + "id": 91, + "name": "Identifier", + "src": "1711:5:0" }, { "children": [ @@ -4970,13 +5703,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 226, + "referencedDeclaration": 265, "type": "function (address,uint256)", "value": "_safeErc20Transfer" }, - "id": 80, + "id": 92, "name": "Identifier", - "src": "1596:18:0" + "src": "1726:18:0" }, { "attributes": { @@ -4984,47 +5717,312 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 55, + "referencedDeclaration": 64, "type": "address payable", - "value": "_relayer" + "value": "_recipient" }, - "id": 81, + "id": 93, "name": "Identifier", - "src": "1615:8:0" + "src": "1745:10:0" }, { "attributes": { "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 57, - "type": "uint256", - "value": "_fee" + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "-", + "type": "uint256" }, - "id": 82, - "name": "Identifier", - "src": "1625:4:0" + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "-", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 660, + "type": "uint256", + "value": "denomination" + }, + "id": 94, + "name": "Identifier", + "src": "1757:12:0" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 68, + "type": "uint256", + "value": "_relayer_fee" + }, + "id": 95, + "name": "Identifier", + "src": "1772:12:0" + } + ], + "id": 96, + "name": "BinaryOperation", + "src": "1757:27:0" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 8, + "type": "uint256", + "value": "protocolFee" + }, + "id": 97, + "name": "Identifier", + "src": "1787:11:0" + } + ], + "id": 98, + "name": "BinaryOperation", + "src": "1757:41:0" } ], - "id": 83, + "id": 99, "name": "FunctionCall", - "src": "1596:34:0" + "src": "1726:73:0" } ], - "id": 84, + "id": 100, "name": "ExpressionStatement", - "src": "1596:34:0" + "src": "1726:73:0" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 265, + "type": "function (address,uint256)", + "value": "_safeErc20Transfer" + }, + "id": 101, + "name": "Identifier", + "src": "1807:18:0" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 72, + "type": "address", + "value": "_feeTo" + }, + "id": 102, + "name": "Identifier", + "src": "1826:6:0" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 8, + "type": "uint256", + "value": "protocolFee" + }, + "id": 103, + "name": "Identifier", + "src": "1834:11:0" + } + ], + "id": 104, + "name": "FunctionCall", + "src": "1807:39:0" + } + ], + "id": 105, + "name": "ExpressionStatement", + "src": "1807:39:0" } ], - "id": 85, + "id": 106, "name": "Block", - "src": "1588:49:0" + "src": "1718:135:0" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 265, + "type": "function (address,uint256)", + "value": "_safeErc20Transfer" + }, + "id": 107, + "name": "Identifier", + "src": "1867:18:0" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 64, + "type": "address payable", + "value": "_recipient" + }, + "id": 108, + "name": "Identifier", + "src": "1886:10:0" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "-", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 660, + "type": "uint256", + "value": "denomination" + }, + "id": 109, + "name": "Identifier", + "src": "1898:12:0" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 68, + "type": "uint256", + "value": "_relayer_fee" + }, + "id": 110, + "name": "Identifier", + "src": "1913:12:0" + } + ], + "id": 111, + "name": "BinaryOperation", + "src": "1898:27:0" + } + ], + "id": 112, + "name": "FunctionCall", + "src": "1867:59:0" + } + ], + "id": 113, + "name": "ExpressionStatement", + "src": "1867:59:0" + } + ], + "id": 114, + "name": "Block", + "src": "1859:74:0" } ], - "id": 86, + "id": 115, "name": "IfStatement", - "src": "1574:63:0" + "src": "1707:226:0" }, { "attributes": { @@ -5052,13 +6050,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 59, + "referencedDeclaration": 68, "type": "uint256", - "value": "_refund" + "value": "_relayer_fee" }, - "id": 87, + "id": 116, "name": "Identifier", - "src": "1647:7:0" + "src": "1943:12:0" }, { "attributes": { @@ -5073,21 +6071,167 @@ "type": "int_const 0", "value": "0" }, - "id": 88, + "id": 117, "name": "Literal", - "src": "1657:1:0" + "src": "1958:1:0" } ], - "id": 89, + "id": 118, "name": "BinaryOperation", - "src": "1647:11:0" + "src": "1943:16:0" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 265, + "type": "function (address,uint256)", + "value": "_safeErc20Transfer" + }, + "id": 119, + "name": "Identifier", + "src": "1969:18:0" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 66, + "type": "address payable", + "value": "_relayer" + }, + "id": 120, + "name": "Identifier", + "src": "1988:8:0" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 68, + "type": "uint256", + "value": "_relayer_fee" + }, + "id": 121, + "name": "Identifier", + "src": "1998:12:0" + } + ], + "id": 122, + "name": "FunctionCall", + "src": "1969:42:0" + } + ], + "id": 123, + "name": "ExpressionStatement", + "src": "1969:42:0" + } + ], + "id": 124, + "name": "Block", + "src": "1961:57:0" + } + ], + "id": 125, + "name": "IfStatement", + "src": "1939:79:0" + }, + { + "attributes": { + "falseBody": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": ">", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 70, + "type": "uint256", + "value": "_refund" + }, + "id": 126, + "name": "Identifier", + "src": "2028:7:0" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 127, + "name": "Literal", + "src": "2038:1:0" + } + ], + "id": 128, + "name": "BinaryOperation", + "src": "2028:11:0" }, { "children": [ { "attributes": { "assignments": [ - 91, + 130, null ] }, @@ -5096,7 +6240,7 @@ "attributes": { "constant": false, "name": "success", - "scope": 110, + "scope": 149, "stateVariable": false, "storageLocation": "default", "type": "bool", @@ -5109,14 +6253,14 @@ "name": "bool", "type": "bool" }, - "id": 90, + "id": 129, "name": "ElementaryTypeName", - "src": "1669:4:0" + "src": "2050:4:0" } ], - "id": 91, + "id": 130, "name": "VariableDeclaration", - "src": "1669:12:0" + "src": "2050:12:0" }, { "attributes": { @@ -5188,23 +6332,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 53, + "referencedDeclaration": 64, "type": "address payable", "value": "_recipient" }, - "id": 92, + "id": 131, "name": "Identifier", - "src": "1687:10:0" + "src": "2068:10:0" } ], - "id": 93, + "id": 132, "name": "MemberAccess", - "src": "1687:15:0" + "src": "2068:15:0" } ], - "id": 94, + "id": 133, "name": "MemberAccess", - "src": "1687:21:0" + "src": "2068:21:0" }, { "attributes": { @@ -5212,18 +6356,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 59, + "referencedDeclaration": 70, "type": "uint256", "value": "_refund" }, - "id": 95, + "id": 134, "name": "Identifier", - "src": "1709:7:0" + "src": "2090:7:0" } ], - "id": 96, + "id": 135, "name": "FunctionCall", - "src": "1687:30:0" + "src": "2068:30:0" }, { "attributes": { @@ -5238,19 +6382,19 @@ "type": "literal_string \"\"", "value": "" }, - "id": 97, + "id": 136, "name": "Literal", - "src": "1718:2:0" + "src": "2099:2:0" } ], - "id": 98, + "id": 137, "name": "FunctionCall", - "src": "1687:34:0" + "src": "2068:34:0" } ], - "id": 99, + "id": 138, "name": "VariableDeclarationStatement", - "src": "1668:53:0" + "src": "2049:53:0" }, { "attributes": { @@ -5275,18 +6419,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 91, + "referencedDeclaration": 130, "type": "bool", "value": "success" }, - "id": 100, + "id": 139, "name": "Identifier", - "src": "1734:7:0" + "src": "2115:7:0" } ], - "id": 101, + "id": 140, "name": "UnaryOperation", - "src": "1733:8:0" + "src": "2114:8:0" }, { "children": [ @@ -5330,18 +6474,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 55, + "referencedDeclaration": 66, "type": "address payable", "value": "_relayer" }, - "id": 102, + "id": 141, "name": "Identifier", - "src": "1805:8:0" + "src": "2186:8:0" } ], - "id": 104, + "id": 143, "name": "MemberAccess", - "src": "1805:17:0" + "src": "2186:17:0" }, { "attributes": { @@ -5349,53 +6493,53 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 59, + "referencedDeclaration": 70, "type": "uint256", "value": "_refund" }, - "id": 105, + "id": 144, "name": "Identifier", - "src": "1823:7:0" + "src": "2204:7:0" } ], - "id": 106, + "id": 145, "name": "FunctionCall", - "src": "1805:26:0" + "src": "2186:26:0" } ], - "id": 107, + "id": 146, "name": "ExpressionStatement", - "src": "1805:26:0" + "src": "2186:26:0" } ], - "id": 108, + "id": 147, "name": "Block", - "src": "1743:97:0" + "src": "2124:97:0" } ], - "id": 109, + "id": 148, "name": "IfStatement", - "src": "1729:111:0" + "src": "2110:111:0" } ], - "id": 110, + "id": 149, "name": "Block", - "src": "1660:186:0" + "src": "2041:186:0" } ], - "id": 111, + "id": 150, "name": "IfStatement", - "src": "1643:203:0" + "src": "2024:203:0" } ], - "id": 112, + "id": 151, "name": "Block", - "src": "1423:427:0" + "src": "1574:657:0" } ], - "id": 113, + "id": 152, "name": "FunctionDefinition", - "src": "1303:547:0" + "src": "1430:801:0" }, { "attributes": { @@ -5407,7 +6551,7 @@ null ], "name": "_safeErc20TransferFrom", - "scope": 227, + "scope": 266, "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" @@ -5419,7 +6563,7 @@ "attributes": { "constant": false, "name": "_from", - "scope": 171, + "scope": 210, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -5433,20 +6577,20 @@ "stateMutability": "nonpayable", "type": "address" }, - "id": 114, + "id": 153, "name": "ElementaryTypeName", - "src": "1886:7:0" + "src": "2267:7:0" } ], - "id": 115, + "id": 154, "name": "VariableDeclaration", - "src": "1886:13:0" + "src": "2267:13:0" }, { "attributes": { "constant": false, "name": "_to", - "scope": 171, + "scope": 210, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -5460,20 +6604,20 @@ "stateMutability": "nonpayable", "type": "address" }, - "id": 116, + "id": 155, "name": "ElementaryTypeName", - "src": "1901:7:0" + "src": "2282:7:0" } ], - "id": 117, + "id": 156, "name": "VariableDeclaration", - "src": "1901:11:0" + "src": "2282:11:0" }, { "attributes": { "constant": false, "name": "_amount", - "scope": 171, + "scope": 210, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -5486,19 +6630,19 @@ "name": "uint256", "type": "uint256" }, - "id": 118, + "id": 157, "name": "ElementaryTypeName", - "src": "1914:7:0" + "src": "2295:7:0" } ], - "id": 119, + "id": 158, "name": "VariableDeclaration", - "src": "1914:15:0" + "src": "2295:15:0" } ], - "id": 120, + "id": 159, "name": "ParameterList", - "src": "1885:45:0" + "src": "2266:45:0" }, { "attributes": { @@ -5507,17 +6651,17 @@ ] }, "children": [], - "id": 121, + "id": 160, "name": "ParameterList", - "src": "1940:0:0" + "src": "2321:0:0" }, { "children": [ { "attributes": { "assignments": [ - 123, - 125 + 162, + 164 ] }, "children": [ @@ -5525,7 +6669,7 @@ "attributes": { "constant": false, "name": "success", - "scope": 170, + "scope": 209, "stateVariable": false, "storageLocation": "default", "type": "bool", @@ -5538,20 +6682,20 @@ "name": "bool", "type": "bool" }, - "id": 122, + "id": 161, "name": "ElementaryTypeName", - "src": "1947:4:0" + "src": "2328:4:0" } ], - "id": 123, + "id": 162, "name": "VariableDeclaration", - "src": "1947:12:0" + "src": "2328:12:0" }, { "attributes": { "constant": false, "name": "data", - "scope": 170, + "scope": 209, "stateVariable": false, "storageLocation": "memory", "type": "bytes", @@ -5564,14 +6708,14 @@ "name": "bytes", "type": "bytes" }, - "id": 124, + "id": 163, "name": "ElementaryTypeName", - "src": "1961:5:0" + "src": "2342:5:0" } ], - "id": 125, + "id": 164, "name": "VariableDeclaration", - "src": "1961:17:0" + "src": "2342:17:0" }, { "attributes": { @@ -5615,14 +6759,14 @@ "type": "address", "value": "token" }, - "id": 126, + "id": 165, "name": "Identifier", - "src": "1982:5:0" + "src": "2363:5:0" } ], - "id": 127, + "id": 166, "name": "MemberAccess", - "src": "1982:10:0" + "src": "2363:10:0" }, { "attributes": { @@ -5674,18 +6818,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 3247, + "referencedDeclaration": 1002, "type": "abi", "value": "abi" }, - "id": 128, + "id": 167, "name": "Identifier", - "src": "1993:3:0" + "src": "2374:3:0" } ], - "id": 129, + "id": 168, "name": "MemberAccess", - "src": "1993:22:0" + "src": "2374:22:0" }, { "attributes": { @@ -5700,9 +6844,9 @@ "type": "int_const 599290589", "value": "0x23b872dd" }, - "id": 130, + "id": 169, "name": "Literal", - "src": "2016:10:0" + "src": "2397:10:0" }, { "attributes": { @@ -5710,13 +6854,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 115, + "referencedDeclaration": 154, "type": "address", "value": "_from" }, - "id": 131, + "id": 170, "name": "Identifier", - "src": "2047:5:0" + "src": "2428:5:0" }, { "attributes": { @@ -5724,13 +6868,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 117, + "referencedDeclaration": 156, "type": "address", "value": "_to" }, - "id": 132, + "id": 171, "name": "Identifier", - "src": "2054:3:0" + "src": "2435:3:0" }, { "attributes": { @@ -5738,28 +6882,28 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 119, + "referencedDeclaration": 158, "type": "uint256", "value": "_amount" }, - "id": 133, + "id": 172, "name": "Identifier", - "src": "2059:7:0" + "src": "2440:7:0" } ], - "id": 134, + "id": 173, "name": "FunctionCall", - "src": "1993:74:0" + "src": "2374:74:0" } ], - "id": 135, + "id": 174, "name": "FunctionCall", - "src": "1982:86:0" + "src": "2363:86:0" } ], - "id": 136, + "id": 175, "name": "VariableDeclarationStatement", - "src": "1946:122:0" + "src": "2327:122:0" }, { "children": [ @@ -5791,16 +6935,16 @@ } ], "overloadedDeclarations": [ - 3263, - 3264 + 1018, + 1019 ], - "referencedDeclaration": 3264, + "referencedDeclaration": 1019, "type": "function (bool,string memory) pure", "value": "require" }, - "id": 137, + "id": 176, "name": "Identifier", - "src": "2074:7:0" + "src": "2455:7:0" }, { "attributes": { @@ -5808,13 +6952,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 123, + "referencedDeclaration": 162, "type": "bool", "value": "success" }, - "id": 138, + "id": 177, "name": "Identifier", - "src": "2082:7:0" + "src": "2463:7:0" }, { "attributes": { @@ -5829,19 +6973,19 @@ "type": "literal_string \"not enough allowed tokens\"", "value": "not enough allowed tokens" }, - "id": 139, + "id": 178, "name": "Literal", - "src": "2091:27:0" + "src": "2472:27:0" } ], - "id": 140, + "id": 179, "name": "FunctionCall", - "src": "2074:45:0" + "src": "2455:45:0" } ], - "id": 141, + "id": 180, "name": "ExpressionStatement", - "src": "2074:45:0" + "src": "2455:45:0" }, { "attributes": { @@ -5881,18 +7025,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 125, + "referencedDeclaration": 164, "type": "bytes memory", "value": "data" }, - "id": 142, + "id": 181, "name": "Identifier", - "src": "2219:4:0" + "src": "2600:4:0" } ], - "id": 143, + "id": 182, "name": "MemberAccess", - "src": "2219:11:0" + "src": "2600:11:0" }, { "attributes": { @@ -5907,14 +7051,14 @@ "type": "int_const 0", "value": "0" }, - "id": 144, + "id": 183, "name": "Literal", - "src": "2233:1:0" + "src": "2614:1:0" } ], - "id": 145, + "id": 184, "name": "BinaryOperation", - "src": "2219:15:0" + "src": "2600:15:0" }, { "children": [ @@ -5948,16 +7092,16 @@ } ], "overloadedDeclarations": [ - 3263, - 3264 + 1018, + 1019 ], - "referencedDeclaration": 3264, + "referencedDeclaration": 1019, "type": "function (bool,string memory) pure", "value": "require" }, - "id": 146, + "id": 185, "name": "Identifier", - "src": "2244:7:0" + "src": "2625:7:0" }, { "attributes": { @@ -5992,18 +7136,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 125, + "referencedDeclaration": 164, "type": "bytes memory", "value": "data" }, - "id": 147, + "id": 186, "name": "Identifier", - "src": "2252:4:0" + "src": "2633:4:0" } ], - "id": 148, + "id": 187, "name": "MemberAccess", - "src": "2252:11:0" + "src": "2633:11:0" }, { "attributes": { @@ -6018,14 +7162,14 @@ "type": "int_const 32", "value": "32" }, - "id": 149, + "id": 188, "name": "Literal", - "src": "2267:2:0" + "src": "2648:2:0" } ], - "id": 150, + "id": 189, "name": "BinaryOperation", - "src": "2252:17:0" + "src": "2633:17:0" }, { "attributes": { @@ -6040,19 +7184,19 @@ "type": "literal_string \"data length should be either 0 or 32 bytes\"", "value": "data length should be either 0 or 32 bytes" }, - "id": 151, + "id": 190, "name": "Literal", - "src": "2271:44:0" + "src": "2652:44:0" } ], - "id": 152, + "id": 191, "name": "FunctionCall", - "src": "2244:72:0" + "src": "2625:72:0" } ], - "id": 153, + "id": 192, "name": "ExpressionStatement", - "src": "2244:72:0" + "src": "2625:72:0" }, { "children": [ @@ -6073,13 +7217,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 123, + "referencedDeclaration": 162, "type": "bool", "value": "success" }, - "id": 154, + "id": 193, "name": "Identifier", - "src": "2324:7:0" + "src": "2705:7:0" }, { "attributes": { @@ -6123,18 +7267,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 3247, + "referencedDeclaration": 1002, "type": "abi", "value": "abi" }, - "id": 155, + "id": 194, "name": "Identifier", - "src": "2334:3:0" + "src": "2715:3:0" } ], - "id": 156, + "id": 195, "name": "MemberAccess", - "src": "2334:10:0" + "src": "2715:10:0" }, { "attributes": { @@ -6142,13 +7286,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 125, + "referencedDeclaration": 164, "type": "bytes memory", "value": "data" }, - "id": 157, + "id": 196, "name": "Identifier", - "src": "2345:4:0" + "src": "2726:4:0" }, { "attributes": { @@ -6171,29 +7315,29 @@ "type": "type(bool)", "value": "bool" }, - "id": 158, + "id": 197, "name": "ElementaryTypeNameExpression", - "src": "2352:4:0" + "src": "2733:4:0" } ], - "id": 159, + "id": 198, "name": "TupleExpression", - "src": "2351:6:0" + "src": "2732:6:0" } ], - "id": 160, + "id": 199, "name": "FunctionCall", - "src": "2334:24:0" + "src": "2715:24:0" } ], - "id": 161, + "id": 200, "name": "Assignment", - "src": "2324:34:0" + "src": "2705:34:0" } ], - "id": 162, + "id": 201, "name": "ExpressionStatement", - "src": "2324:34:0" + "src": "2705:34:0" }, { "children": [ @@ -6225,16 +7369,16 @@ } ], "overloadedDeclarations": [ - 3263, - 3264 + 1018, + 1019 ], - "referencedDeclaration": 3264, + "referencedDeclaration": 1019, "type": "function (bool,string memory) pure", "value": "require" }, - "id": 163, + "id": 202, "name": "Identifier", - "src": "2366:7:0" + "src": "2747:7:0" }, { "attributes": { @@ -6242,13 +7386,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 123, + "referencedDeclaration": 162, "type": "bool", "value": "success" }, - "id": 164, + "id": 203, "name": "Identifier", - "src": "2374:7:0" + "src": "2755:7:0" }, { "attributes": { @@ -6263,39 +7407,39 @@ "type": "literal_string \"not enough allowed tokens. Token returns false.\"", "value": "not enough allowed tokens. Token returns false." }, - "id": 165, + "id": 204, "name": "Literal", - "src": "2383:49:0" + "src": "2764:49:0" } ], - "id": 166, + "id": 205, "name": "FunctionCall", - "src": "2366:67:0" + "src": "2747:67:0" } ], - "id": 167, + "id": 206, "name": "ExpressionStatement", - "src": "2366:67:0" + "src": "2747:67:0" } ], - "id": 168, + "id": 207, "name": "Block", - "src": "2236:204:0" + "src": "2617:204:0" } ], - "id": 169, + "id": 208, "name": "IfStatement", - "src": "2215:225:0" + "src": "2596:225:0" } ], - "id": 170, + "id": 209, "name": "Block", - "src": "1940:504:0" + "src": "2321:504:0" } ], - "id": 171, + "id": 210, "name": "FunctionDefinition", - "src": "1854:590:0" + "src": "2235:590:0" }, { "attributes": { @@ -6307,7 +7451,7 @@ null ], "name": "_safeErc20Transfer", - "scope": 227, + "scope": 266, "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" @@ -6319,7 +7463,7 @@ "attributes": { "constant": false, "name": "_to", - "scope": 226, + "scope": 265, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -6333,20 +7477,20 @@ "stateMutability": "nonpayable", "type": "address" }, - "id": 172, + "id": 211, "name": "ElementaryTypeName", - "src": "2476:7:0" + "src": "2857:7:0" } ], - "id": 173, + "id": 212, "name": "VariableDeclaration", - "src": "2476:11:0" + "src": "2857:11:0" }, { "attributes": { "constant": false, "name": "_amount", - "scope": 226, + "scope": 265, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -6359,19 +7503,19 @@ "name": "uint256", "type": "uint256" }, - "id": 174, + "id": 213, "name": "ElementaryTypeName", - "src": "2489:7:0" + "src": "2870:7:0" } ], - "id": 175, + "id": 214, "name": "VariableDeclaration", - "src": "2489:15:0" + "src": "2870:15:0" } ], - "id": 176, + "id": 215, "name": "ParameterList", - "src": "2475:30:0" + "src": "2856:30:0" }, { "attributes": { @@ -6380,17 +7524,17 @@ ] }, "children": [], - "id": 177, + "id": 216, "name": "ParameterList", - "src": "2515:0:0" + "src": "2896:0:0" }, { "children": [ { "attributes": { "assignments": [ - 179, - 181 + 218, + 220 ] }, "children": [ @@ -6398,7 +7542,7 @@ "attributes": { "constant": false, "name": "success", - "scope": 225, + "scope": 264, "stateVariable": false, "storageLocation": "default", "type": "bool", @@ -6411,20 +7555,20 @@ "name": "bool", "type": "bool" }, - "id": 178, + "id": 217, "name": "ElementaryTypeName", - "src": "2522:4:0" + "src": "2903:4:0" } ], - "id": 179, + "id": 218, "name": "VariableDeclaration", - "src": "2522:12:0" + "src": "2903:12:0" }, { "attributes": { "constant": false, "name": "data", - "scope": 225, + "scope": 264, "stateVariable": false, "storageLocation": "memory", "type": "bytes", @@ -6437,14 +7581,14 @@ "name": "bytes", "type": "bytes" }, - "id": 180, + "id": 219, "name": "ElementaryTypeName", - "src": "2536:5:0" + "src": "2917:5:0" } ], - "id": 181, + "id": 220, "name": "VariableDeclaration", - "src": "2536:17:0" + "src": "2917:17:0" }, { "attributes": { @@ -6488,14 +7632,14 @@ "type": "address", "value": "token" }, - "id": 182, + "id": 221, "name": "Identifier", - "src": "2557:5:0" + "src": "2938:5:0" } ], - "id": 183, + "id": 222, "name": "MemberAccess", - "src": "2557:10:0" + "src": "2938:10:0" }, { "attributes": { @@ -6543,18 +7687,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 3247, + "referencedDeclaration": 1002, "type": "abi", "value": "abi" }, - "id": 184, + "id": 223, "name": "Identifier", - "src": "2568:3:0" + "src": "2949:3:0" } ], - "id": 185, + "id": 224, "name": "MemberAccess", - "src": "2568:22:0" + "src": "2949:22:0" }, { "attributes": { @@ -6569,9 +7713,9 @@ "type": "int_const 2835717307", "value": "0xa9059cbb" }, - "id": 186, + "id": 225, "name": "Literal", - "src": "2591:10:0" + "src": "2972:10:0" }, { "attributes": { @@ -6579,13 +7723,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 173, + "referencedDeclaration": 212, "type": "address", "value": "_to" }, - "id": 187, + "id": 226, "name": "Identifier", - "src": "2618:3:0" + "src": "2999:3:0" }, { "attributes": { @@ -6593,28 +7737,28 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 175, + "referencedDeclaration": 214, "type": "uint256", "value": "_amount" }, - "id": 188, + "id": 227, "name": "Identifier", - "src": "2623:7:0" + "src": "3004:7:0" } ], - "id": 189, + "id": 228, "name": "FunctionCall", - "src": "2568:63:0" + "src": "2949:63:0" } ], - "id": 190, + "id": 229, "name": "FunctionCall", - "src": "2557:75:0" + "src": "2938:75:0" } ], - "id": 191, + "id": 230, "name": "VariableDeclarationStatement", - "src": "2521:111:0" + "src": "2902:111:0" }, { "children": [ @@ -6646,16 +7790,16 @@ } ], "overloadedDeclarations": [ - 3263, - 3264 + 1018, + 1019 ], - "referencedDeclaration": 3264, + "referencedDeclaration": 1019, "type": "function (bool,string memory) pure", "value": "require" }, - "id": 192, + "id": 231, "name": "Identifier", - "src": "2638:7:0" + "src": "3019:7:0" }, { "attributes": { @@ -6663,13 +7807,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 179, + "referencedDeclaration": 218, "type": "bool", "value": "success" }, - "id": 193, + "id": 232, "name": "Identifier", - "src": "2646:7:0" + "src": "3027:7:0" }, { "attributes": { @@ -6684,19 +7828,19 @@ "type": "literal_string \"not enough tokens\"", "value": "not enough tokens" }, - "id": 194, + "id": 233, "name": "Literal", - "src": "2655:19:0" + "src": "3036:19:0" } ], - "id": 195, + "id": 234, "name": "FunctionCall", - "src": "2638:37:0" + "src": "3019:37:0" } ], - "id": 196, + "id": 235, "name": "ExpressionStatement", - "src": "2638:37:0" + "src": "3019:37:0" }, { "attributes": { @@ -6736,18 +7880,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 181, + "referencedDeclaration": 220, "type": "bytes memory", "value": "data" }, - "id": 197, + "id": 236, "name": "Identifier", - "src": "2775:4:0" + "src": "3156:4:0" } ], - "id": 198, + "id": 237, "name": "MemberAccess", - "src": "2775:11:0" + "src": "3156:11:0" }, { "attributes": { @@ -6762,14 +7906,14 @@ "type": "int_const 0", "value": "0" }, - "id": 199, + "id": 238, "name": "Literal", - "src": "2789:1:0" + "src": "3170:1:0" } ], - "id": 200, + "id": 239, "name": "BinaryOperation", - "src": "2775:15:0" + "src": "3156:15:0" }, { "children": [ @@ -6803,16 +7947,16 @@ } ], "overloadedDeclarations": [ - 3263, - 3264 + 1018, + 1019 ], - "referencedDeclaration": 3264, + "referencedDeclaration": 1019, "type": "function (bool,string memory) pure", "value": "require" }, - "id": 201, + "id": 240, "name": "Identifier", - "src": "2800:7:0" + "src": "3181:7:0" }, { "attributes": { @@ -6847,18 +7991,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 181, + "referencedDeclaration": 220, "type": "bytes memory", "value": "data" }, - "id": 202, + "id": 241, "name": "Identifier", - "src": "2808:4:0" + "src": "3189:4:0" } ], - "id": 203, + "id": 242, "name": "MemberAccess", - "src": "2808:11:0" + "src": "3189:11:0" }, { "attributes": { @@ -6873,14 +8017,14 @@ "type": "int_const 32", "value": "32" }, - "id": 204, + "id": 243, "name": "Literal", - "src": "2823:2:0" + "src": "3204:2:0" } ], - "id": 205, + "id": 244, "name": "BinaryOperation", - "src": "2808:17:0" + "src": "3189:17:0" }, { "attributes": { @@ -6895,19 +8039,19 @@ "type": "literal_string \"data length should be either 0 or 32 bytes\"", "value": "data length should be either 0 or 32 bytes" }, - "id": 206, + "id": 245, "name": "Literal", - "src": "2827:44:0" + "src": "3208:44:0" } ], - "id": 207, + "id": 246, "name": "FunctionCall", - "src": "2800:72:0" + "src": "3181:72:0" } ], - "id": 208, + "id": 247, "name": "ExpressionStatement", - "src": "2800:72:0" + "src": "3181:72:0" }, { "children": [ @@ -6928,13 +8072,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 179, + "referencedDeclaration": 218, "type": "bool", "value": "success" }, - "id": 209, + "id": 248, "name": "Identifier", - "src": "2880:7:0" + "src": "3261:7:0" }, { "attributes": { @@ -6978,18 +8122,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 3247, + "referencedDeclaration": 1002, "type": "abi", "value": "abi" }, - "id": 210, + "id": 249, "name": "Identifier", - "src": "2890:3:0" + "src": "3271:3:0" } ], - "id": 211, + "id": 250, "name": "MemberAccess", - "src": "2890:10:0" + "src": "3271:10:0" }, { "attributes": { @@ -6997,13 +8141,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 181, + "referencedDeclaration": 220, "type": "bytes memory", "value": "data" }, - "id": 212, + "id": 251, "name": "Identifier", - "src": "2901:4:0" + "src": "3282:4:0" }, { "attributes": { @@ -7026,29 +8170,29 @@ "type": "type(bool)", "value": "bool" }, - "id": 213, + "id": 252, "name": "ElementaryTypeNameExpression", - "src": "2908:4:0" + "src": "3289:4:0" } ], - "id": 214, + "id": 253, "name": "TupleExpression", - "src": "2907:6:0" + "src": "3288:6:0" } ], - "id": 215, + "id": 254, "name": "FunctionCall", - "src": "2890:24:0" + "src": "3271:24:0" } ], - "id": 216, + "id": 255, "name": "Assignment", - "src": "2880:34:0" + "src": "3261:34:0" } ], - "id": 217, + "id": 256, "name": "ExpressionStatement", - "src": "2880:34:0" + "src": "3261:34:0" }, { "children": [ @@ -7080,16 +8224,16 @@ } ], "overloadedDeclarations": [ - 3263, - 3264 + 1018, + 1019 ], - "referencedDeclaration": 3264, + "referencedDeclaration": 1019, "type": "function (bool,string memory) pure", "value": "require" }, - "id": 218, + "id": 257, "name": "Identifier", - "src": "2922:7:0" + "src": "3303:7:0" }, { "attributes": { @@ -7097,13 +8241,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 179, + "referencedDeclaration": 218, "type": "bool", "value": "success" }, - "id": 219, + "id": 258, "name": "Identifier", - "src": "2930:7:0" + "src": "3311:7:0" }, { "attributes": { @@ -7118,49 +8262,49 @@ "type": "literal_string \"not enough tokens. Token returns false.\"", "value": "not enough tokens. Token returns false." }, - "id": 220, + "id": 259, "name": "Literal", - "src": "2939:41:0" + "src": "3320:41:0" } ], - "id": 221, + "id": 260, "name": "FunctionCall", - "src": "2922:59:0" + "src": "3303:59:0" } ], - "id": 222, + "id": 261, "name": "ExpressionStatement", - "src": "2922:59:0" + "src": "3303:59:0" } ], - "id": 223, + "id": 262, "name": "Block", - "src": "2792:196:0" + "src": "3173:196:0" } ], - "id": 224, + "id": 263, "name": "IfStatement", - "src": "2771:217:0" + "src": "3152:217:0" } ], - "id": 225, + "id": 264, "name": "Block", - "src": "2515:477:0" + "src": "2896:477:0" } ], - "id": 226, + "id": 265, "name": "FunctionDefinition", - "src": "2448:544:0" + "src": "2829:544:0" } ], - "id": 227, + "id": 266, "name": "ContractDefinition", - "src": "805:2189:0" + "src": "805:2570:0" } ], - "id": 228, + "id": 267, "name": "SourceUnit", - "src": "755:2240:0" + "src": "755:2621:0" }, "compiler": { "name": "solc", @@ -7170,14 +8314,14 @@ "42220": { "events": {}, "links": { - "Hasher": "0xD75035293f552aB5c33483f321DBf0DfA1C7c71d" + "Hasher": "0x5666A6E07d7b991489b1D0f53d37B664B312a1fE" }, - "address": "0xCc5951C9bF5e65a5114Ae759E5B55ad3AB095176", - "transactionHash": "0x482724f33b331886dfb44bc5c6d45b1983e948e486da711d547b7cc2b8899a82" + "address": "0xD39697c01279DfaCad50b27D03EDAEc6Bca03097", + "transactionHash": "0x10232b5c9b26f0f8fee8927b01d45c90bf79b16bc2a8ff59ce20144ea5895556" } }, "schemaVersion": "3.3.4", - "updatedAt": "2021-03-22T02:53:25.861Z", + "updatedAt": "2021-04-02T22:55:05.713Z", "networkType": "ethereum", "devdoc": { "methods": { diff --git a/client/contracts/CELOTornado.1.json b/client/contracts/CELOTornado.1.json index 0498602..7f02a75 100644 --- a/client/contracts/CELOTornado.1.json +++ b/client/contracts/CELOTornado.1.json @@ -8,6 +8,11 @@ "name": "_verifier", "type": "address" }, + { + "internalType": "contract IFeeManager", + "name": "_feeManager", + "type": "address" + }, { "internalType": "uint256", "name": "_denomination", @@ -215,6 +220,21 @@ "stateMutability": "payable", "type": "function" }, + { + "constant": true, + "inputs": [], + "name": "feeManager", + "outputs": [ + { + "internalType": "contract IFeeManager", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, { "constant": true, "inputs": [ @@ -406,6 +426,21 @@ "stateMutability": "view", "type": "function" }, + { + "constant": true, + "inputs": [], + "name": "protocolFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, { "constant": true, "inputs": [ @@ -539,21 +574,21 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVerifier\",\"name\":\"_verifier\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_denomination\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_merkleTreeHeight\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"leafIndex\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"nullifierHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"Withdrawal\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"FIELD_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"ROOT_HISTORY_SIZE\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"ZERO_VALUE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newOperator\",\"type\":\"address\"}],\"name\":\"changeOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"commitments\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"currentRootIndex\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"denomination\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_commitment\",\"type\":\"bytes32\"}],\"name\":\"deposit\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"filledSubtrees\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getLastRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_left\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_right\",\"type\":\"bytes32\"}],\"name\":\"hashLeftRight\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_root\",\"type\":\"bytes32\"}],\"name\":\"isKnownRoot\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_nullifierHash\",\"type\":\"bytes32\"}],\"name\":\"isSpent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"_nullifierHashes\",\"type\":\"bytes32[]\"}],\"name\":\"isSpentArray\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"spent\",\"type\":\"bool[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"levels\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"nextIndex\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"nullifierHashes\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"operator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"roots\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newVerifier\",\"type\":\"address\"}],\"name\":\"updateVerifier\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"verifier\",\"outputs\":[{\"internalType\":\"contract IVerifier\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_proof\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"_root\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_nullifierHash\",\"type\":\"bytes32\"},{\"internalType\":\"address payable\",\"name\":\"_recipient\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"_relayer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_refund\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"zeros\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"changeOperator(address)\":{\"details\":\"operator can change his address \"},\"deposit(bytes32)\":{\"details\":\"Deposit funds into the contract. The caller must send (for ETH) or approve (for ERC20) value equal to or `denomination` of this instance.\",\"params\":{\"_commitment\":\"the note commitment, which is PedersenHash(nullifier + secret)\"}},\"getLastRoot()\":{\"details\":\"Returns the last root\"},\"hashLeftRight(bytes32,bytes32)\":{\"details\":\"Hash 2 tree leaves, returns MiMC(_left, _right)\"},\"isKnownRoot(bytes32)\":{\"details\":\"Whether the root is present in the root history\"},\"isSpent(bytes32)\":{\"details\":\"whether a note is already spent \"},\"isSpentArray(bytes32[])\":{\"details\":\"whether an array of notes is already spent \"},\"updateVerifier(address)\":{\"details\":\"allow operator to update SNARK verification keys. This is needed to update keys after the final trusted setup ceremony is held. After that operator rights are supposed to be transferred to zero address\"},\"withdraw(bytes,bytes32,bytes32,address,address,uint256,uint256)\":{\"details\":\"Withdraw a deposit from the contract. `proof` is a zkSNARK proof data, and input is an array of circuit public inputs `input` array consists of: - merkle root of all deposits in the contract - hash of unique deposit nullifier to prevent double spends - the recipient of funds - optional fee that goes to the transaction sender (usually a relay)\"}}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/Users/brianli/dotfiles/tornado-core/contracts/ERC20Tornado.sol\":\"ERC20Tornado\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/brianli/dotfiles/tornado-core/contracts/ERC20Tornado.sol\":{\"keccak256\":\"0x708938fd083239d2e9cd17e457cf25a2150bb900082fad58af8b689f786aef9c\",\"urls\":[\"bzz-raw://f345afd62002f883c60c032cd0cb051663dc8a3e59a52bf44109633b96cb3685\",\"dweb:/ipfs/QmNwjnH2uyNoq9GPjNUv6Z1mgtiR5rY3K7EHY74RBjXMpw\"]},\"/Users/brianli/dotfiles/tornado-core/contracts/MerkleTreeWithHistory.sol\":{\"keccak256\":\"0x671cc9268dd70c47d18795f7e37fc4df11763fcbcca026edcf163f4239036254\",\"urls\":[\"bzz-raw://9c36a207ed164b60a514eae89bfb15e5b4de4b346c4a89a7a1cb50a940bc699d\",\"dweb:/ipfs/QmbPEqFJAGMpYduLEFsbPazyBsYWcjRtpth8X26wCHALwk\"]},\"/Users/brianli/dotfiles/tornado-core/contracts/Tornado.sol\":{\"keccak256\":\"0x09c70432243629ef44697fd3d0ca89d3578e2b1c9f46d90757371edb163c14da\",\"urls\":[\"bzz-raw://d2a2c9fa85c32cb15793282792cd25c71804a10aa5a911e41f3bcd07f5df117e\",\"dweb:/ipfs/QmeQ1s6ypNnP7fossR4x9svuuLjcSBtQ5spUTmWGZY5Ljr\"]},\"@openzeppelin/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0xb63221b23818d622bfd83d18e0968307e4fcb7a35536bdceded76e1cf8349acd\",\"urls\":[\"bzz-raw://44e1e8c22362c4708a8c3362735f1465f5b05e2f7315e16c7010d694ce019d73\",\"dweb:/ipfs/QmWj9g8X1hxkXRre2kwkEjLBetjuzmSbWHD81bsSojnBkS\"]}},\"version\":1}", - "bytecode": "0x6080604052600380546001600160401b03191690553480156200002157600080fd5b5060405162001d1238038062001d12833981810160405260a08110156200004757600080fd5b50805160208201516040830151606084015160809094015192939192909190848484848163ffffffff8116620000af5760405162461bcd60e51b815260040180806020018281038252602781526020018062001c896027913960400191505060405180910390fd5b60208163ffffffff1610620000f65760405162461bcd60e51b815260040180806020018281038252602281526020018062001cd06022913960400191505060405180910390fd5b6000805463ffffffff191663ffffffff83161781556002805460018181019092557f2fe54c60d3acabf3343a35b6eba15db4821b340f76e741e2249685ed4899af6c60008051602062001c48833981519152909101819055815480830183559282905260008051602062001cf28339815191529092018290555b60005463ffffffff9081169082161015620001e4576200019a82806001600160e01b036200029f16565b60028054600181810190925560008051602062001c488339815191520182905580548082018255600082905260008051602062001cf2833981519152018290559092500162000170565b50620001fa81806001600160e01b036200029f16565b60046000015550506068805460ff19166001179055826200024d5760405162461bcd60e51b815260040180806020018281038252602581526020018062001c236025913960400191505060405180910390fd5b606c80546001600160a01b039586166001600160a01b031991821617909155606d80549286169282169290921790915560699290925550606e8054939092169216919091179055506200048c92505050565b600060008051602062001cb0833981519152831062000305576040805162461bcd60e51b815260206004820181905260248201527f5f6c6566742073686f756c6420626520696e7369646520746865206669656c64604482015290519081900360640190fd5b60008051602062001cb08339815191528210620003545760405162461bcd60e51b815260040180806020018281038252602181526020018062001c686021913960400191505060405180910390fd5b6040805163f47d33b560e01b81526004810185905260006024820181905282518693919273__Hasher________________________________9263f47d33b592604480840193829003018186803b158015620003af57600080fd5b505af4158015620003c4573d6000803e3d6000fd5b505050506040513d6040811015620003db57600080fd5b508051602090910151909250905060008051602062001cb0833981519152848308915073__Hasher________________________________63f47d33b583836040518363ffffffff1660e01b81526004018083815260200182815260200192505050604080518083038186803b1580156200045557600080fd5b505af41580156200046a573d6000803e3d6000fd5b505050506040513d60408110156200048157600080fd5b505195945050505050565b611787806200049c6000396000f3fe60806040526004361061014b5760003560e01c806397fc007c116100b6578063e5285dcc1161006f578063e5285dcc14610514578063e82955881461053e578063ec73295914610568578063f178e47c1461057d578063fc0c546a146105a7578063fc7e9c6f146105bc5761014b565b806397fc007c146103a55780639fa12d0b146103d8578063b214faa5146104a3578063ba70f757146104c0578063c2b40ae4146104d5578063cd87a3b4146104ff5761014b565b80634ecf518b116101085780634ecf518b146102e4578063570ca735146103125780636d9833e314610327578063839df945146103515780638bca6d161461037b57806390eeb02b146103905761014b565b806306394c9b1461015057806317cc915c1461018557806321a0adb6146101c35780632b7ac3f31461025c57806338bf282e1461028d578063414a37ba146102cf575b600080fd5b34801561015c57600080fd5b506101836004803603602081101561017357600080fd5b50356001600160a01b03166105d1565b005b34801561019157600080fd5b506101af600480360360208110156101a857600080fd5b503561063c565b604080519115158252519081900360200190f35b610183600480360360e08110156101d957600080fd5b810190602081018135600160201b8111156101f357600080fd5b82018360208201111561020557600080fd5b803590602001918460018302840111600160201b8311171561022657600080fd5b91935091508035906020810135906001600160a01b03604082013581169160608101359091169060808101359060a00135610651565b34801561026857600080fd5b5061027161099e565b604080516001600160a01b039092168252519081900360200190f35b34801561029957600080fd5b506102bd600480360360408110156102b057600080fd5b50803590602001356109ad565b60408051918252519081900360200190f35b3480156102db57600080fd5b506102bd610b8e565b3480156102f057600080fd5b506102f9610ba0565b6040805163ffffffff9092168252519081900360200190f35b34801561031e57600080fd5b50610271610bac565b34801561033357600080fd5b506101af6004803603602081101561034a57600080fd5b5035610bbb565b34801561035d57600080fd5b506101af6004803603602081101561037457600080fd5b5035610c2e565b34801561038757600080fd5b506102bd610c43565b34801561039c57600080fd5b506102f9610c49565b3480156103b157600080fd5b50610183600480360360208110156103c857600080fd5b50356001600160a01b0316610c55565b3480156103e457600080fd5b50610453600480360360208110156103fb57600080fd5b810190602081018135600160201b81111561041557600080fd5b82018360208201111561042757600080fd5b803590602001918460208302840111600160201b8311171561044857600080fd5b509092509050610cc0565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561048f578181015183820152602001610477565b505050509050019250505060405180910390f35b610183600480360360208110156104b957600080fd5b5035610d48565b3480156104cc57600080fd5b506102bd610e75565b3480156104e157600080fd5b506102bd600480360360208110156104f857600080fd5b5035610e95565b34801561050b57600080fd5b506102f9610ea9565b34801561052057600080fd5b506101af6004803603602081101561053757600080fd5b5035610eae565b34801561054a57600080fd5b506102bd6004803603602081101561056157600080fd5b5035610ec3565b34801561057457600080fd5b506102bd610ee1565b34801561058957600080fd5b506102bd600480360360208110156105a057600080fd5b5035610f05565b3480156105b357600080fd5b50610271610f12565b3480156105c857600080fd5b506102f9610f21565b606d546001600160a01b0316331461061a5760405162461bcd60e51b815260040180806020018281038252602581526020018061172e6025913960400191505060405180910390fd5b606d80546001600160a01b0319166001600160a01b0392909216919091179055565b606a6020526000908152604090205460ff1681565b60685460ff166106a8576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6068805460ff19169055606954821115610709576040805162461bcd60e51b815260206004820152601a60248201527f4665652065786365656473207472616e736665722076616c7565000000000000604482015290519081900360640190fd5b6000858152606a602052604090205460ff161561076d576040805162461bcd60e51b815260206004820152601f60248201527f546865206e6f746520686173206265656e20616c7265616479207370656e7400604482015290519081900360640190fd5b61077686610bbb565b6107c7576040805162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742066696e6420796f7572206d65726b6c6520726f6f7400000000604482015290519081900360640190fd5b606c546040805160c08082018352898252602082018990526001600160a01b038881168385015287811660608401526080830187905260a08301869052925163695ef6f960e01b8152929093169263695ef6f9928c928c9290916004810191829160240190849080838360005b8381101561084c578181015183820152602001610834565b505050509050018281038252858582818152602001925080828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b15801561089e57600080fd5b505af11580156108b2573d6000803e3d6000fd5b505050506040513d60208110156108c857600080fd5b5051610914576040805162461bcd60e51b815260206004820152601660248201527524b73b30b634b2103bb4ba34323930bb90383937b7b360511b604482015290519081900360640190fd5b6000858152606a60205260409020805460ff1916600117905561093984848484610f34565b604080516001600160a01b038681168252602082018890528183018590529151918516917fe9e508bad6d4c3227e881ca19068f099da81b5164dd6d62b2eaf1e8bc6c349319181900360600190a250506068805460ff19166001179055505050505050565b606c546001600160a01b031681565b60006000805160206116bd8339815191528310610a11576040805162461bcd60e51b815260206004820181905260248201527f5f6c6566742073686f756c6420626520696e7369646520746865206669656c64604482015290519081900360640190fd5b6000805160206116bd8339815191528210610a5d5760405162461bcd60e51b815260040180806020018281038252602181526020018061166d6021913960400191505060405180910390fd5b6040805163f47d33b560e01b81526004810185905260006024820181905282518693919273__Hasher________________________________9263f47d33b592604480840193829003018186803b158015610ab757600080fd5b505af4158015610acb573d6000803e3d6000fd5b505050506040513d6040811015610ae157600080fd5b50805160209091015190925090506000805160206116bd833981519152848308915073__Hasher________________________________63f47d33b583836040518363ffffffff1660e01b81526004018083815260200182815260200192505050604080518083038186803b158015610b5957600080fd5b505af4158015610b6d573d6000803e3d6000fd5b505050506040513d6040811015610b8357600080fd5b505195945050505050565b6000805160206116bd83398151915281565b60005463ffffffff1681565b606d546001600160a01b031681565b600081610bca57506000610c29565b60035463ffffffff165b60048163ffffffff1660648110610be757fe5b0154831415610bfa576001915050610c29565b63ffffffff8116610c09575060645b6003546000199091019063ffffffff80831691161415610bd45760009150505b919050565b606b6020526000908152604090205460ff1681565b60695481565b60035463ffffffff1681565b606d546001600160a01b03163314610c9e5760405162461bcd60e51b815260040180806020018281038252602581526020018061172e6025913960400191505060405180910390fd5b606c80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518281526020808402820101909152606090828015610cec578160200160208202803883390190505b50905060005b82811015610d4157610d15848483818110610d0957fe5b90506020020135610eae565b15610d39576001828281518110610d2857fe5b911515602092830291909101909101525b600101610cf2565b5092915050565b60685460ff16610d9f576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6068805460ff191690556000818152606b602052604090205460ff1615610df75760405162461bcd60e51b81526004018080602001828103825260218152602001806116dd6021913960400191505060405180910390fd5b6000610e028261102f565b6000838152606b60205260409020805460ff191660011790559050610e256111c6565b6040805163ffffffff83168152426020820152815184927fa945e51eec50ab98c161376f0db4cf2aeba3ec92755fe2fcd388bdbbb80ff196928290030190a250506068805460ff19166001179055565b60035460009060049063ffffffff1660648110610e8e57fe5b0154905090565b60048160648110610ea257fe5b0154905081565b606481565b6000908152606a602052604090205460ff1690565b60028181548110610ed057fe5b600091825260209091200154905081565b7f2fe54c60d3acabf3343a35b6eba15db4821b340f76e741e2249685ed4899af6c81565b60018181548110610ed057fe5b606e546001600160a01b031681565b600354600160201b900463ffffffff1681565b803414610f725760405162461bcd60e51b81526004018080602001828103825260308152602001806116166030913960400191505060405180910390fd5b610f80848360695403611212565b8115610f9057610f908383611212565b8015611029576040516000906001600160a01b0386169083908381818185875af1925050503d8060008114610fe1576040519150601f19603f3d011682016040523d82523d6000602084013e610fe6565b606091505b5050905080611027576040516001600160a01b0385169083156108fc029084906000818181858888f19350505050158015611025573d6000803e3d6000fd5b505b505b50505050565b60035460008054909163ffffffff600160201b909104811691811660020a1681141561108c5760405162461bcd60e51b815260040180806020018281038252602f8152602001806115bd602f913960400191505060405180910390fd5b6003805463ffffffff600160201b80830482166001019091160267ffffffff000000001990911617905582600080805b60005463ffffffff908116908216101561116457600185166111205783925060028163ffffffff16815481106110ee57fe5b906000526020600020015491508360018263ffffffff168154811061110f57fe5b600091825260209091200155611144565b60018163ffffffff168154811061113357fe5b906000526020600020015492508391505b61114e83836109ad565b9350600263ffffffff86160494506001016110bc565b5060035460649063ffffffff908116600101166003805463ffffffff19169290910663ffffffff9081169290921790819055849160049116606481106111a657fe5b01555050600354600160201b900463ffffffff1660001901949350505050565b34156112035760405162461bcd60e51b81526004018080602001828103825260308152602001806116fe6030913960400191505060405180910390fd5b61121033306069546113dd565b565b606e54604080516001600160a01b038581166024830152604480830186905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000956060959316939282918083835b6020831061128f5780518252601f199092019160209182019101611270565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146112f1576040519150601f19603f3d011682016040523d82523d6000602084013e6112f6565b606091505b509150915081611341576040805162461bcd60e51b81526020600482015260116024820152706e6f7420656e6f75676820746f6b656e7360781b604482015290519081900360640190fd5b8051156110295780516020146113885760405162461bcd60e51b815260040180806020018281038252602a8152602001806115ec602a913960400191505060405180910390fd5b80806020019051602081101561139d57600080fd5b50519150816110295760405162461bcd60e51b81526004018080602001828103825260278152602001806116466027913960400191505060405180910390fd5b606e54604080516001600160a01b0386811660248301528581166044830152606480830186905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b178152925182516000956060959316939282918083835b602083106114625780518252601f199092019160209182019101611443565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146114c4576040519150601f19603f3d011682016040523d82523d6000602084013e6114c9565b606091505b509150915081611520576040805162461bcd60e51b815260206004820152601960248201527f6e6f7420656e6f75676820616c6c6f77656420746f6b656e7300000000000000604482015290519081900360640190fd5b8051156110275780516020146115675760405162461bcd60e51b815260040180806020018281038252602a8152602001806115ec602a913960400191505060405180910390fd5b80806020019051602081101561157c57600080fd5b50519150816110275760405162461bcd60e51b815260040180806020018281038252602f81526020018061168e602f913960400191505060405180910390fdfe4d65726b6c6520747265652069732066756c6c2e204e6f206d6f7265206c656166732063616e20626520616464656464617461206c656e6774682073686f756c64206265206569746865722030206f72203332206279746573496e636f727265637420726566756e6420616d6f756e742072656365697665642062792074686520636f6e74726163746e6f7420656e6f75676820746f6b656e732e20546f6b656e2072657475726e732066616c73652e5f72696768742073686f756c6420626520696e7369646520746865206669656c646e6f7420656e6f75676820616c6c6f77656420746f6b656e732e20546f6b656e2072657475726e732066616c73652e30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000154686520636f6d6d69746d656e7420686173206265656e207375626d69747465644554482076616c756520697320737570706f73656420746f206265203020666f7220455243323020696e7374616e63654f6e6c79206f70657261746f722063616e2063616c6c20746869732066756e6374696f6e2ea265627a7a72315820494b71139a3b0e5b3d4285ff58127e5c54881ed5204c3d740b94c1c4832e681c64736f6c6343000511003264656e6f6d696e6174696f6e2073686f756c642062652067726561746572207468616e2030405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace5f72696768742073686f756c6420626520696e7369646520746865206669656c645f747265654c6576656c732073686f756c642062652067726561746572207468616e207a65726f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000015f747265654c6576656c732073686f756c64206265206c657373207468616e203332b10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6", - "deployedBytecode": "0x60806040526004361061014b5760003560e01c806397fc007c116100b6578063e5285dcc1161006f578063e5285dcc14610514578063e82955881461053e578063ec73295914610568578063f178e47c1461057d578063fc0c546a146105a7578063fc7e9c6f146105bc5761014b565b806397fc007c146103a55780639fa12d0b146103d8578063b214faa5146104a3578063ba70f757146104c0578063c2b40ae4146104d5578063cd87a3b4146104ff5761014b565b80634ecf518b116101085780634ecf518b146102e4578063570ca735146103125780636d9833e314610327578063839df945146103515780638bca6d161461037b57806390eeb02b146103905761014b565b806306394c9b1461015057806317cc915c1461018557806321a0adb6146101c35780632b7ac3f31461025c57806338bf282e1461028d578063414a37ba146102cf575b600080fd5b34801561015c57600080fd5b506101836004803603602081101561017357600080fd5b50356001600160a01b03166105d1565b005b34801561019157600080fd5b506101af600480360360208110156101a857600080fd5b503561063c565b604080519115158252519081900360200190f35b610183600480360360e08110156101d957600080fd5b810190602081018135600160201b8111156101f357600080fd5b82018360208201111561020557600080fd5b803590602001918460018302840111600160201b8311171561022657600080fd5b91935091508035906020810135906001600160a01b03604082013581169160608101359091169060808101359060a00135610651565b34801561026857600080fd5b5061027161099e565b604080516001600160a01b039092168252519081900360200190f35b34801561029957600080fd5b506102bd600480360360408110156102b057600080fd5b50803590602001356109ad565b60408051918252519081900360200190f35b3480156102db57600080fd5b506102bd610b8e565b3480156102f057600080fd5b506102f9610ba0565b6040805163ffffffff9092168252519081900360200190f35b34801561031e57600080fd5b50610271610bac565b34801561033357600080fd5b506101af6004803603602081101561034a57600080fd5b5035610bbb565b34801561035d57600080fd5b506101af6004803603602081101561037457600080fd5b5035610c2e565b34801561038757600080fd5b506102bd610c43565b34801561039c57600080fd5b506102f9610c49565b3480156103b157600080fd5b50610183600480360360208110156103c857600080fd5b50356001600160a01b0316610c55565b3480156103e457600080fd5b50610453600480360360208110156103fb57600080fd5b810190602081018135600160201b81111561041557600080fd5b82018360208201111561042757600080fd5b803590602001918460208302840111600160201b8311171561044857600080fd5b509092509050610cc0565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561048f578181015183820152602001610477565b505050509050019250505060405180910390f35b610183600480360360208110156104b957600080fd5b5035610d48565b3480156104cc57600080fd5b506102bd610e75565b3480156104e157600080fd5b506102bd600480360360208110156104f857600080fd5b5035610e95565b34801561050b57600080fd5b506102f9610ea9565b34801561052057600080fd5b506101af6004803603602081101561053757600080fd5b5035610eae565b34801561054a57600080fd5b506102bd6004803603602081101561056157600080fd5b5035610ec3565b34801561057457600080fd5b506102bd610ee1565b34801561058957600080fd5b506102bd600480360360208110156105a057600080fd5b5035610f05565b3480156105b357600080fd5b50610271610f12565b3480156105c857600080fd5b506102f9610f21565b606d546001600160a01b0316331461061a5760405162461bcd60e51b815260040180806020018281038252602581526020018061172e6025913960400191505060405180910390fd5b606d80546001600160a01b0319166001600160a01b0392909216919091179055565b606a6020526000908152604090205460ff1681565b60685460ff166106a8576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6068805460ff19169055606954821115610709576040805162461bcd60e51b815260206004820152601a60248201527f4665652065786365656473207472616e736665722076616c7565000000000000604482015290519081900360640190fd5b6000858152606a602052604090205460ff161561076d576040805162461bcd60e51b815260206004820152601f60248201527f546865206e6f746520686173206265656e20616c7265616479207370656e7400604482015290519081900360640190fd5b61077686610bbb565b6107c7576040805162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742066696e6420796f7572206d65726b6c6520726f6f7400000000604482015290519081900360640190fd5b606c546040805160c08082018352898252602082018990526001600160a01b038881168385015287811660608401526080830187905260a08301869052925163695ef6f960e01b8152929093169263695ef6f9928c928c9290916004810191829160240190849080838360005b8381101561084c578181015183820152602001610834565b505050509050018281038252858582818152602001925080828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b15801561089e57600080fd5b505af11580156108b2573d6000803e3d6000fd5b505050506040513d60208110156108c857600080fd5b5051610914576040805162461bcd60e51b815260206004820152601660248201527524b73b30b634b2103bb4ba34323930bb90383937b7b360511b604482015290519081900360640190fd5b6000858152606a60205260409020805460ff1916600117905561093984848484610f34565b604080516001600160a01b038681168252602082018890528183018590529151918516917fe9e508bad6d4c3227e881ca19068f099da81b5164dd6d62b2eaf1e8bc6c349319181900360600190a250506068805460ff19166001179055505050505050565b606c546001600160a01b031681565b60006000805160206116bd8339815191528310610a11576040805162461bcd60e51b815260206004820181905260248201527f5f6c6566742073686f756c6420626520696e7369646520746865206669656c64604482015290519081900360640190fd5b6000805160206116bd8339815191528210610a5d5760405162461bcd60e51b815260040180806020018281038252602181526020018061166d6021913960400191505060405180910390fd5b6040805163f47d33b560e01b81526004810185905260006024820181905282518693919273__Hasher________________________________9263f47d33b592604480840193829003018186803b158015610ab757600080fd5b505af4158015610acb573d6000803e3d6000fd5b505050506040513d6040811015610ae157600080fd5b50805160209091015190925090506000805160206116bd833981519152848308915073__Hasher________________________________63f47d33b583836040518363ffffffff1660e01b81526004018083815260200182815260200192505050604080518083038186803b158015610b5957600080fd5b505af4158015610b6d573d6000803e3d6000fd5b505050506040513d6040811015610b8357600080fd5b505195945050505050565b6000805160206116bd83398151915281565b60005463ffffffff1681565b606d546001600160a01b031681565b600081610bca57506000610c29565b60035463ffffffff165b60048163ffffffff1660648110610be757fe5b0154831415610bfa576001915050610c29565b63ffffffff8116610c09575060645b6003546000199091019063ffffffff80831691161415610bd45760009150505b919050565b606b6020526000908152604090205460ff1681565b60695481565b60035463ffffffff1681565b606d546001600160a01b03163314610c9e5760405162461bcd60e51b815260040180806020018281038252602581526020018061172e6025913960400191505060405180910390fd5b606c80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518281526020808402820101909152606090828015610cec578160200160208202803883390190505b50905060005b82811015610d4157610d15848483818110610d0957fe5b90506020020135610eae565b15610d39576001828281518110610d2857fe5b911515602092830291909101909101525b600101610cf2565b5092915050565b60685460ff16610d9f576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6068805460ff191690556000818152606b602052604090205460ff1615610df75760405162461bcd60e51b81526004018080602001828103825260218152602001806116dd6021913960400191505060405180910390fd5b6000610e028261102f565b6000838152606b60205260409020805460ff191660011790559050610e256111c6565b6040805163ffffffff83168152426020820152815184927fa945e51eec50ab98c161376f0db4cf2aeba3ec92755fe2fcd388bdbbb80ff196928290030190a250506068805460ff19166001179055565b60035460009060049063ffffffff1660648110610e8e57fe5b0154905090565b60048160648110610ea257fe5b0154905081565b606481565b6000908152606a602052604090205460ff1690565b60028181548110610ed057fe5b600091825260209091200154905081565b7f2fe54c60d3acabf3343a35b6eba15db4821b340f76e741e2249685ed4899af6c81565b60018181548110610ed057fe5b606e546001600160a01b031681565b600354600160201b900463ffffffff1681565b803414610f725760405162461bcd60e51b81526004018080602001828103825260308152602001806116166030913960400191505060405180910390fd5b610f80848360695403611212565b8115610f9057610f908383611212565b8015611029576040516000906001600160a01b0386169083908381818185875af1925050503d8060008114610fe1576040519150601f19603f3d011682016040523d82523d6000602084013e610fe6565b606091505b5050905080611027576040516001600160a01b0385169083156108fc029084906000818181858888f19350505050158015611025573d6000803e3d6000fd5b505b505b50505050565b60035460008054909163ffffffff600160201b909104811691811660020a1681141561108c5760405162461bcd60e51b815260040180806020018281038252602f8152602001806115bd602f913960400191505060405180910390fd5b6003805463ffffffff600160201b80830482166001019091160267ffffffff000000001990911617905582600080805b60005463ffffffff908116908216101561116457600185166111205783925060028163ffffffff16815481106110ee57fe5b906000526020600020015491508360018263ffffffff168154811061110f57fe5b600091825260209091200155611144565b60018163ffffffff168154811061113357fe5b906000526020600020015492508391505b61114e83836109ad565b9350600263ffffffff86160494506001016110bc565b5060035460649063ffffffff908116600101166003805463ffffffff19169290910663ffffffff9081169290921790819055849160049116606481106111a657fe5b01555050600354600160201b900463ffffffff1660001901949350505050565b34156112035760405162461bcd60e51b81526004018080602001828103825260308152602001806116fe6030913960400191505060405180910390fd5b61121033306069546113dd565b565b606e54604080516001600160a01b038581166024830152604480830186905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000956060959316939282918083835b6020831061128f5780518252601f199092019160209182019101611270565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146112f1576040519150601f19603f3d011682016040523d82523d6000602084013e6112f6565b606091505b509150915081611341576040805162461bcd60e51b81526020600482015260116024820152706e6f7420656e6f75676820746f6b656e7360781b604482015290519081900360640190fd5b8051156110295780516020146113885760405162461bcd60e51b815260040180806020018281038252602a8152602001806115ec602a913960400191505060405180910390fd5b80806020019051602081101561139d57600080fd5b50519150816110295760405162461bcd60e51b81526004018080602001828103825260278152602001806116466027913960400191505060405180910390fd5b606e54604080516001600160a01b0386811660248301528581166044830152606480830186905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b178152925182516000956060959316939282918083835b602083106114625780518252601f199092019160209182019101611443565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146114c4576040519150601f19603f3d011682016040523d82523d6000602084013e6114c9565b606091505b509150915081611520576040805162461bcd60e51b815260206004820152601960248201527f6e6f7420656e6f75676820616c6c6f77656420746f6b656e7300000000000000604482015290519081900360640190fd5b8051156110275780516020146115675760405162461bcd60e51b815260040180806020018281038252602a8152602001806115ec602a913960400191505060405180910390fd5b80806020019051602081101561157c57600080fd5b50519150816110275760405162461bcd60e51b815260040180806020018281038252602f81526020018061168e602f913960400191505060405180910390fdfe4d65726b6c6520747265652069732066756c6c2e204e6f206d6f7265206c656166732063616e20626520616464656464617461206c656e6774682073686f756c64206265206569746865722030206f72203332206279746573496e636f727265637420726566756e6420616d6f756e742072656365697665642062792074686520636f6e74726163746e6f7420656e6f75676820746f6b656e732e20546f6b656e2072657475726e732066616c73652e5f72696768742073686f756c6420626520696e7369646520746865206669656c646e6f7420656e6f75676820616c6c6f77656420746f6b656e732e20546f6b656e2072657475726e732066616c73652e30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000154686520636f6d6d69746d656e7420686173206265656e207375626d69747465644554482076616c756520697320737570706f73656420746f206265203020666f7220455243323020696e7374616e63654f6e6c79206f70657261746f722063616e2063616c6c20746869732066756e6374696f6e2ea265627a7a72315820494b71139a3b0e5b3d4285ff58127e5c54881ed5204c3d740b94c1c4832e681c64736f6c63430005110032", - "sourceMap": "805:2189:0:-;;;1430:34:2;;;-1:-1:-1;;;;;;1468:27:2;;;867:237:0;5:2:-1;;;;30:1;27;20:12;5:2;867:237:0;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;867:237:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1646:15:2;;;1638:67;;;;-1:-1:-1;;;1638:67:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1733:2;1719:11;:16;;;1711:63;;;;-1:-1:-1;;;1711:63:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1780:6;:20;;-1:-1:-1;;1780:20:2;;;;;;;1854:5;27:10:-1;;-1:-1;23:18;;;45:23;;;1088:77:2;-1:-1:-1;;;;;;;;;;;1854:23:2;;;;;;27:10:-1;;23:18;;;45:23;;1883:32:2;;;;-1:-1:-1;;;;;;;;;;;1883:32:2;;;;;;1922:175;1945:6;;;;;;1941:10;;;;1922:175;;;1980:39;1994:11;;-1:-1:-1;;;;;1980:13:2;:39;:::i;:::-;2027:5;27:10:-1;;39:1;23:18;;;45:23;;;-1:-1;;;;;;;;;;;2027:23:2;;;;27:10:-1;;23:18;;;45:23;;-1:-1;2058:32:2;;;-1:-1:-1;;;;;;;;;;;2058:32:2;;;;1966:53;;-1:-1:-1;1953:3:2;1922:175;;;-1:-1:-1;2114:39:2;2128:11;;-1:-1:-1;;;;;2114:13:2;:39;:::i;:::-;2103:5;2109:1;2103:8;:50;-1:-1:-1;;1421:11:18;:18;;-1:-1:-1;;1421:18:18;1435:4;1421:18;;;2260:17:8;2252:67;;;;-1:-1:-1;;;2252:67:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2325:8;:20;;-1:-1:-1;;;;;2325:20:8;;;-1:-1:-1;;;;;;2325:20:8;;;;;;;2351:8;:20;;;;;;;;;;;;;;;2377:12;:28;;;;-1:-1:-1;1085:5:0;:14;;;;;;;;;;;;;;-1:-1:-1;805:2189:0;;-1:-1:-1;;;805:2189:0;2230:445:2;2305:7;-1:-1:-1;;;;;;;;;;;2328:27:2;;2320:72;;;;;-1:-1:-1;;;2320:72:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2406:28:2;;2398:74;;;;-1:-1:-1;;;2398:74:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2538:23;;;-1:-1:-1;;;2538:23:2;;;;;;;;2478:9;2538:23;;;;;;;;2498:5;;2478:9;;2538:6;;:17;;:23;;;;;;;;;;:6;:23;;;5:2:-1;;;;30:1;27;20:12;5:2;2538:23:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2538:23:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2538:23:2;;;;;;;;;-1:-1:-1;2538:23:2;-1:-1:-1;;;;;;;;;;;;2589:6:2;2578:1;2571:38;2567:42;;2624:6;:17;2642:1;2645;2624:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2624:23:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2624:23:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2624:23:2;;2230:445;-1:-1:-1;;;;;2230:445:2:o;805:2189:0:-;;;;;;;", - "deployedSourceMap": "805:2189:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5355:102:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5355:102:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5355:102:8;-1:-1:-1;;;;;5355:102:8;;:::i;:::-;;1089:47;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1089:47:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1089:47:8;;:::i;:::-;;;;;;;;;;;;;;;;;;3478:781;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;3478:781:8;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;3478:781:8;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3478:781:8;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;3478:781:8;;-1:-1:-1;3478:781:8;-1:-1:-1;3478:781:8;;;;;;;;-1:-1:-1;;;;;3478:781:8;;;;;;;;;;;;;;;;;;;;;;;;:::i;1278:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1278:25:8;;;:::i;:::-;;;;-1:-1:-1;;;;;1278:25:8;;;;;;;;;;;;;;2230:445:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2230:445:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2230:445:2;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;933:114;;8:9:-1;5:2;;;30:1;27;20:12;5:2;933:114:2;;;:::i;1209:20::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1209:20:2;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1463:23:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1463:23:8;;;:::i;3553:342:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3553:342:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3553:342:2;;:::i;1231:43:8:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1231:43:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1231:43:8;;:::i;1058:27::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1058:27:8;;;:::i;1430:34:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1430:34:2;;;:::i;5192:113:8:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5192:113:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5192:113:8;-1:-1:-1;;;;;5192:113:8;;:::i;4669:293::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4669:293:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4669:293:8;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;4669:293:8;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4669:293:8;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;4669:293:8;;-1:-1:-1;4669:293:8;-1:-1:-1;4669:293:8;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4669:293:8;;;;;;;;;;;;;;;;;2658:324;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2658:324:8;;:::i;3941:93:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3941:93:2;;;:::i;1549:39::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1549:39:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1549:39:2;;:::i;1499:46::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1499:46:2;;;:::i;4492:116:8:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4492:116:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4492:116:8;;:::i;1404:22:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1404:22:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1404:22:2;;:::i;1051:114::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1051:114:2;;;:::i;1369:31::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1369:31:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1369:31:2;;:::i;842:20:0:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;842:20:0;;;:::i;1468:27:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1468:27:2;;;:::i;5355:102:8:-;1540:8;;-1:-1:-1;;;;;1540:8:8;1526:10;:22;1518:72;;;;-1:-1:-1;;;1518:72:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5429:8;:23;;-1:-1:-1;;;;;;5429:23:8;-1:-1:-1;;;;;5429:23:8;;;;;;;;;;5355:102::o;1089:47::-;;;;;;;;;;;;;;;:::o;3478:781::-;1934:11:18;;;;1926:55;;;;;-1:-1:-1;;;1926:55:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;2056:11;:19;;-1:-1:-1;;2056:19:18;;;3695:12:8;;3687:20;;;3679:59;;;;;-1:-1:-1;;;3679:59:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;3753:31;;;;:15;:31;;;;;;;;3752:32;3744:76;;;;;-1:-1:-1;;;3744:76:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;3834:18;3846:5;3834:11;:18::i;:::-;3826:59;;;;;-1:-1:-1;;;3826:59:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;3932:8;;:126;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4003:19:8;;;3932:126;;;;4024:17;;;3932:126;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3932:126:8;;:8;;;;;:20;;3953:6;;;;3932:126;;;;;;;;;;;;;;;;:8;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3932:126:8;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;3932:126:8;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3932:126:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3932:126:8;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3932:126:8;3924:161;;;;;-1:-1:-1;;;3924:161:8;;;;;;;;;;;;-1:-1:-1;;;3924:161:8;;;;;;;;;;;;;;;4092:31;;;;:15;:31;;;;;:38;;-1:-1:-1;;4092:38:8;4126:4;4092:38;;;4136:53;4153:10;4165:8;4175:4;4181:7;4136:16;:53::i;:::-;4200:54;;;-1:-1:-1;;;;;4200:54:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2230:11:18;:18;;-1:-1:-1;;2230:18:18;2244:4;2230:18;;;-1:-1:-1;;;;;;3478:781:8:o;1278:25::-;;;-1:-1:-1;;;;;1278:25:8;;:::o;2230:445:2:-;2305:7;-1:-1:-1;;;;;;;;;;;2328:27:2;;2320:72;;;;;-1:-1:-1;;;2320:72:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2406:28:2;;2398:74;;;;-1:-1:-1;;;2398:74:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2538:23;;;-1:-1:-1;;;2538:23:2;;;;;;;;2478:9;2538:23;;;;;;;;2498:5;;2478:9;;2538:6;;:17;;:23;;;;;;;;;;:6;:23;;;5:2:-1;;;;30:1;27;20:12;5:2;2538:23:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2538:23:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2538:23:2;;;;;;;;;-1:-1:-1;2538:23:2;-1:-1:-1;;;;;;;;;;;;2589:6:2;2578:1;2571:38;2567:42;;2624:6;:17;2642:1;2645;2624:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2624:23:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2624:23:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2624:23:2;;2230:445;-1:-1:-1;;;;;2230:445:2:o;933:114::-;-1:-1:-1;;;;;;;;;;;933:114:2;:::o;1209:20::-;;;;;;:::o;1463:23:8:-;;;-1:-1:-1;;;;;1463:23:8;;:::o;3553:342:2:-;3609:4;3625:10;3621:43;;-1:-1:-1;3652:5:2;3645:12;;3621:43;3680:16;;;;3702:171;3726:5;3732:1;3726:8;;;;;;;;;;;3717:5;:17;3713:53;;;3753:4;3746:11;;;;;3713:53;3777:6;;;3773:52;;-1:-1:-1;1542:3:2;3773:52;3855:16;;-1:-1:-1;;3832:3:2;;;;3855:16;3850:21;;;3855:16;;3850:21;;3702:171;;3885:5;3878:12;;;3553:342;;;;:::o;1231:43:8:-;;;;;;;;;;;;;;;:::o;1058:27::-;;;;:::o;1430:34:2:-;;;;;;:::o;5192:113:8:-;1540:8;;-1:-1:-1;;;;;1540:8:8;1526:10;:22;1518:72;;;;-1:-1:-1;;;1518:72:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5266:8;:34;;-1:-1:-1;;;;;;5266:34:8;-1:-1:-1;;;;;5266:34:8;;;;;;;;;;5192:113::o;4669:293::-;4785:35;;;;;;;;;;;;;;;;4750:19;;4796:16;4785:35;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;4785:35:8;-1:-1:-1;4777:43:8;-1:-1:-1;4830:6:8;4826:132;4842:27;;;4826:132;;;4888:28;4896:16;;4913:1;4896:19;;;;;;;;;;;;;4888:7;:28::i;:::-;4884:68;;;4939:4;4928:5;4934:1;4928:8;;;;;;;;:15;;;:8;;;;;;;;;;;:15;4884:68;4871:3;;4826:132;;;;4669:293;;;;:::o;2658:324::-;1934:11:18;;;;1926:55;;;;;-1:-1:-1;;;1926:55:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;2056:11;:19;;-1:-1:-1;;2056:19:18;;;2070:5;2741:24:8;;;:11;:24;;;;;;2056:19:18;2741:24:8;2740:25;2732:71;;;;-1:-1:-1;;;2732:71:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2810:20;2833;2841:11;2833:7;:20::i;:::-;2859:24;;;;:11;:24;;;;;:31;;-1:-1:-1;;2859:31:8;2886:4;2859:31;;;2810:43;-1:-1:-1;2896:17:8;:15;:17::i;:::-;2925:52;;;;;;;;2961:15;2925:52;;;;;;2933:11;;2925:52;;;;;;;;-1:-1:-1;;2230:11:18;:18;;-1:-1:-1;;2230:18:18;2244:4;2230:18;;;2658:324:8:o;3941:93:2:-;4012:16;;3984:7;;4006:5;;4012:16;;4006:23;;;;;;;;;3999:30;;3941:93;:::o;1549:39::-;;;;;;;;;;;;;-1:-1:-1;1549:39:2;:::o;1499:46::-;1542:3;1499:46;:::o;4492:116:8:-;4553:4;4572:31;;;:15;:31;;;;;;;;;4492:116::o;1404:22:2:-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1404:22:2;:::o;1051:114::-;1088:77;1051:114;:::o;1369:31::-;;;;;;;;;;842:20:0;;;-1:-1:-1;;;;;842:20:0;;:::o;1468:27:2:-;;;-1:-1:-1;;;1468:27:2;;;;;:::o;1303:547:0:-;1450:7;1437:9;:20;1429:81;;;;-1:-1:-1;;;1429:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1517:51;1536:10;1563:4;1548:12;;:19;1517:18;:51::i;:::-;1578:8;;1574:63;;1596:34;1615:8;1625:4;1596:18;:34::i;:::-;1647:11;;1643:203;;1687:34;;1669:12;;-1:-1:-1;;;;;1687:15:0;;;1709:7;;1669:12;1687:34;1669:12;1687:34;1709:7;1687:15;:34;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;1668:53:0;;;1734:7;1729:111;;1805:26;;-1:-1:-1;;;;;1805:17:0;;;:26;;;;;1823:7;;1805:26;;;;1823:7;1805:17;:26;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1805:26:0;1729:111;1643:203;;1303:547;;;;:::o;2679:802:2:-;2770:9;;2728:12;2820:6;;2728:12;;2770:9;-1:-1:-1;;;2770:9:2;;;;;;2820:6;;2816:1;2809:17;2793:33;;;;2785:93;;;;-1:-1:-1;;;2785:93:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2884:9;:14;;;-1:-1:-1;;;2884:14:2;;;;;2897:1;2884:14;;;;;-1:-1:-1;;2884:14:2;;;;;;2931:5;-1:-1:-1;;;2980:355:2;3003:6;;;;;;2999:10;;;;2980:355;;;3028:16;;;3024:225;;3068:16;3061:23;;3102:5;3108:1;3102:8;;;;;;;;;;;;;;;;;;3094:16;;3141;3121:14;3136:1;3121:17;;;;;;;;;;;;;;;;;;;:36;3024:225;;;3189:14;3204:1;3189:17;;;;;;;;;;;;;;;;;;3182:24;;3224:16;3216:24;;3024:225;3276:26;3290:4;3296:5;3276:13;:26::i;:::-;3257:45;-1:-1:-1;3327:1:2;3311:17;;;;;-1:-1:-1;3011:3:2;;2980:355;;;-1:-1:-1;3361:16:2;;1542:3;;3360:42;3361:16;;;;:20;3360:42;3341:16;:61;;-1:-1:-1;;3341:61:2;3360:42;;;;3341:61;;;;;;;;;;;;3434:16;;3408:5;;3414:16;3408:23;;;;;;;;:42;-1:-1:-1;;3463:9:2;;-1:-1:-1;;;3463:9:2;;;;-1:-1:-1;;3463:13:2;;2679:802;-1:-1:-1;;;;2679:802:2:o;1108:191:0:-;1158:9;:14;1150:75;;;;-1:-1:-1;;;1150:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1231:63;1254:10;1274:4;1281:12;;1231:22;:63::i;:::-;1108:191::o;2448:544::-;2557:5;;2568:63;;;-1:-1:-1;;;;;2568:63:0;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;2568:63:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2557:75:0;;;;2522:12;;2536:17;;2557:5;;;2568:63;2557:75;;;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;2557:75:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2521:111:0;;;;2646:7;2638:37;;;;;-1:-1:-1;;;2638:37:0;;;;;;;;;;;;-1:-1:-1;;;2638:37:0;;;;;;;;;;;;;;;2775:11;;:15;2771:217;;2808:4;:11;2823:2;2808:17;2800:72;;;;-1:-1:-1;;;2800:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2901:4;2890:24;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2890:24:0;;-1:-1:-1;2890:24:0;2922:59;;;;-1:-1:-1;;;2922:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1854:590;1982:5;;1993:74;;;-1:-1:-1;;;;;1993:74:0;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1993:74:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1982:86:0;;;;1947:12;;1961:17;;1982:5;;;1993:74;1982:86;;;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;1982:86:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;1946:122:0;;;;2082:7;2074:45;;;;;-1:-1:-1;;;2074:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;2219:11;;:15;2215:225;;2252:4;:11;2267:2;2252:17;2244:72;;;;-1:-1:-1;;;2244:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2345:4;2334:24;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2334:24:0;;-1:-1:-1;2334:24:0;2366:67;;;;-1:-1:-1;;;2366:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", - "source": "// https://tornado.cash\n/*\n* d888888P dP a88888b. dP\n* 88 88 d8' `88 88\n* 88 .d8888b. 88d888b. 88d888b. .d8888b. .d888b88 .d8888b. 88 .d8888b. .d8888b. 88d888b.\n* 88 88' `88 88' `88 88' `88 88' `88 88' `88 88' `88 88 88' `88 Y8ooooo. 88' `88\n* 88 88. .88 88 88 88 88. .88 88. .88 88. .88 dP Y8. .88 88. .88 88 88 88\n* dP `88888P' dP dP dP `88888P8 `88888P8 `88888P' 88 Y88888P' `88888P8 `88888P' dP dP\n* ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo\n*/\n\npragma solidity 0.5.17;\n\nimport \"./Tornado.sol\";\n\ncontract ERC20Tornado is Tornado {\n address public token;\n\n constructor(\n IVerifier _verifier,\n uint256 _denomination,\n uint32 _merkleTreeHeight,\n address _operator,\n address _token\n ) Tornado(_verifier, _denomination, _merkleTreeHeight, _operator) public {\n token = _token;\n }\n\n function _processDeposit() internal {\n require(msg.value == 0, \"ETH value is supposed to be 0 for ERC20 instance\");\n _safeErc20TransferFrom(msg.sender, address(this), denomination);\n }\n\n function _processWithdraw(address payable _recipient, address payable _relayer, uint256 _fee, uint256 _refund) internal {\n require(msg.value == _refund, \"Incorrect refund amount received by the contract\");\n\n _safeErc20Transfer(_recipient, denomination - _fee);\n if (_fee > 0) {\n _safeErc20Transfer(_relayer, _fee);\n }\n\n if (_refund > 0) {\n (bool success, ) = _recipient.call.value(_refund)(\"\");\n if (!success) {\n // let's return _refund back to the relayer\n _relayer.transfer(_refund);\n }\n }\n }\n\n function _safeErc20TransferFrom(address _from, address _to, uint256 _amount) internal {\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd /* transferFrom */, _from, _to, _amount));\n require(success, \"not enough allowed tokens\");\n\n // if contract returns some data lets make sure that is `true` according to standard\n if (data.length > 0) {\n require(data.length == 32, \"data length should be either 0 or 32 bytes\");\n success = abi.decode(data, (bool));\n require(success, \"not enough allowed tokens. Token returns false.\");\n }\n }\n\n function _safeErc20Transfer(address _to, uint256 _amount) internal {\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb /* transfer */, _to, _amount));\n require(success, \"not enough tokens\");\n\n // if contract returns some data lets make sure that is `true` according to standard\n if (data.length > 0) {\n require(data.length == 32, \"data length should be either 0 or 32 bytes\");\n success = abi.decode(data, (bool));\n require(success, \"not enough tokens. Token returns false.\");\n }\n }\n}\n", + "metadata": "{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVerifier\",\"name\":\"_verifier\",\"type\":\"address\"},{\"internalType\":\"contract IFeeManager\",\"name\":\"_feeManager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_denomination\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_merkleTreeHeight\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"leafIndex\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"nullifierHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"Withdrawal\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"FIELD_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"ROOT_HISTORY_SIZE\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"ZERO_VALUE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newOperator\",\"type\":\"address\"}],\"name\":\"changeOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"commitments\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"currentRootIndex\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"denomination\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_commitment\",\"type\":\"bytes32\"}],\"name\":\"deposit\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeManager\",\"outputs\":[{\"internalType\":\"contract IFeeManager\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"filledSubtrees\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getLastRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_left\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_right\",\"type\":\"bytes32\"}],\"name\":\"hashLeftRight\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_root\",\"type\":\"bytes32\"}],\"name\":\"isKnownRoot\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_nullifierHash\",\"type\":\"bytes32\"}],\"name\":\"isSpent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"_nullifierHashes\",\"type\":\"bytes32[]\"}],\"name\":\"isSpentArray\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"spent\",\"type\":\"bool[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"levels\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"nextIndex\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"nullifierHashes\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"operator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"protocolFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"roots\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newVerifier\",\"type\":\"address\"}],\"name\":\"updateVerifier\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"verifier\",\"outputs\":[{\"internalType\":\"contract IVerifier\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_proof\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"_root\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_nullifierHash\",\"type\":\"bytes32\"},{\"internalType\":\"address payable\",\"name\":\"_recipient\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"_relayer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_refund\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"zeros\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"changeOperator(address)\":{\"details\":\"operator can change his address \"},\"deposit(bytes32)\":{\"details\":\"Deposit funds into the contract. The caller must send (for ETH) or approve (for ERC20) value equal to or `denomination` of this instance.\",\"params\":{\"_commitment\":\"the note commitment, which is PedersenHash(nullifier + secret)\"}},\"getLastRoot()\":{\"details\":\"Returns the last root\"},\"hashLeftRight(bytes32,bytes32)\":{\"details\":\"Hash 2 tree leaves, returns MiMC(_left, _right)\"},\"isKnownRoot(bytes32)\":{\"details\":\"Whether the root is present in the root history\"},\"isSpent(bytes32)\":{\"details\":\"whether a note is already spent \"},\"isSpentArray(bytes32[])\":{\"details\":\"whether an array of notes is already spent \"},\"updateVerifier(address)\":{\"details\":\"allow operator to update SNARK verification keys. This is needed to update keys after the final trusted setup ceremony is held. After that operator rights are supposed to be transferred to zero address\"},\"withdraw(bytes,bytes32,bytes32,address,address,uint256,uint256)\":{\"details\":\"Withdraw a deposit from the contract. `proof` is a zkSNARK proof data, and input is an array of circuit public inputs `input` array consists of: - merkle root of all deposits in the contract - hash of unique deposit nullifier to prevent double spends - the recipient of funds - optional fee that goes to the transaction sender (usually a relay)\"}}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/Users/brianli/dotfiles/tornado-core/contracts/ERC20Tornado.sol\":\"ERC20Tornado\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/brianli/dotfiles/tornado-core/contracts/ERC20Tornado.sol\":{\"keccak256\":\"0x5c57c88351063f1864166162f6f32be5aebae197a18abaef8d08d67b36440a51\",\"urls\":[\"bzz-raw://6da2d6faa828b1cad43428366d273e4aa61fc176d6541fb641028985497caa0f\",\"dweb:/ipfs/QmULz388t88hr999vUk5PidTTJwbEWGUyb3d6QGnDA6qoV\"]},\"/Users/brianli/dotfiles/tornado-core/contracts/MerkleTreeWithHistory.sol\":{\"keccak256\":\"0x671cc9268dd70c47d18795f7e37fc4df11763fcbcca026edcf163f4239036254\",\"urls\":[\"bzz-raw://9c36a207ed164b60a514eae89bfb15e5b4de4b346c4a89a7a1cb50a940bc699d\",\"dweb:/ipfs/QmbPEqFJAGMpYduLEFsbPazyBsYWcjRtpth8X26wCHALwk\"]},\"/Users/brianli/dotfiles/tornado-core/contracts/Tornado.sol\":{\"keccak256\":\"0xe7db8acb3efcecf95c7364f447ed1764c571dbf5090fd4641fe4668a965332eb\",\"urls\":[\"bzz-raw://45e790c247c38ed8ae473e3165c1148ea10a753cf6e9f9c8742394019be2aef6\",\"dweb:/ipfs/QmaGfk1ndvqur2NvCY3TWoKuorfBVShXeykKei18GDY582\"]},\"@openzeppelin/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0xb63221b23818d622bfd83d18e0968307e4fcb7a35536bdceded76e1cf8349acd\",\"urls\":[\"bzz-raw://44e1e8c22362c4708a8c3362735f1465f5b05e2f7315e16c7010d694ce019d73\",\"dweb:/ipfs/QmWj9g8X1hxkXRre2kwkEjLBetjuzmSbWHD81bsSojnBkS\"]}},\"version\":1}", + "bytecode": "0x6080604052600380546001600160401b03191690553480156200002157600080fd5b5060405162001e5838038062001e58833981810160405260c08110156200004757600080fd5b508051602082015160408301516060840151608085015160a090950151939492939192909185858585858163ffffffff8116620000b65760405162461bcd60e51b815260040180806020018281038252602781526020018062001dcf6027913960400191505060405180910390fd5b60208163ffffffff1610620000fd5760405162461bcd60e51b815260040180806020018281038252602281526020018062001e166022913960400191505060405180910390fd5b6000805463ffffffff191663ffffffff83161781556002805460018181019092557f2fe54c60d3acabf3343a35b6eba15db4821b340f76e741e2249685ed4899af6c60008051602062001d8e833981519152909101819055815480830183559282905260008051602062001e388339815191529092018290555b60005463ffffffff9081169082161015620001eb57620001a182806001600160e01b03620002ba16565b60028054600181810190925560008051602062001d8e8339815191520182905580548082018255600082905260008051602062001e38833981519152018290559092500162000177565b506200020181806001600160e01b03620002ba16565b60046000015550506068805460ff1916600117905582620002545760405162461bcd60e51b815260040180806020018281038252602581526020018062001d696025913960400191505060405180910390fd5b606c80546001600160a01b03199081166001600160a01b0397881617909155606d8054821695871695909517909455606e8054851691861691909117905550606955606f805490911691831691909117905560c8840460705550620004a7945050505050565b600060008051602062001df6833981519152831062000320576040805162461bcd60e51b815260206004820181905260248201527f5f6c6566742073686f756c6420626520696e7369646520746865206669656c64604482015290519081900360640190fd5b60008051602062001df683398151915282106200036f5760405162461bcd60e51b815260040180806020018281038252602181526020018062001dae6021913960400191505060405180910390fd5b6040805163f47d33b560e01b81526004810185905260006024820181905282518693919273__Hasher________________________________9263f47d33b592604480840193829003018186803b158015620003ca57600080fd5b505af4158015620003df573d6000803e3d6000fd5b505050506040513d6040811015620003f657600080fd5b508051602090910151909250905060008051602062001df6833981519152848308915073__Hasher________________________________63f47d33b583836040518363ffffffff1660e01b81526004018083815260200182815260200192505050604080518083038186803b1580156200047057600080fd5b505af415801562000485573d6000803e3d6000fd5b505050506040513d60408110156200049c57600080fd5b505195945050505050565b6118b280620004b76000396000f3fe6080604052600436106101815760003560e01c80639fa12d0b116100d1578063d0fb02031161008a578063ec73295911610064578063ec732959146105c8578063f178e47c146105dd578063fc0c546a14610607578063fc7e9c6f1461061c57610181565b8063d0fb02031461055f578063e5285dcc14610574578063e82955881461059e57610181565b80639fa12d0b1461040e578063b0e21e8a146104d9578063b214faa5146104ee578063ba70f7571461050b578063c2b40ae414610520578063cd87a3b41461054a57610181565b80634ecf518b1161013e578063839df94511610118578063839df945146103875780638bca6d16146103b157806390eeb02b146103c657806397fc007c146103db57610181565b80634ecf518b1461031a578063570ca735146103485780636d9833e31461035d57610181565b806306394c9b1461018657806317cc915c146101bb57806321a0adb6146101f95780632b7ac3f31461029257806338bf282e146102c3578063414a37ba14610305575b600080fd5b34801561019257600080fd5b506101b9600480360360208110156101a957600080fd5b50356001600160a01b0316610631565b005b3480156101c757600080fd5b506101e5600480360360208110156101de57600080fd5b503561069c565b604080519115158252519081900360200190f35b6101b9600480360360e081101561020f57600080fd5b810190602081018135600160201b81111561022957600080fd5b82018360208201111561023b57600080fd5b803590602001918460018302840111600160201b8311171561025c57600080fd5b91935091508035906020810135906001600160a01b03604082013581169160608101359091169060808101359060a001356106b1565b34801561029e57600080fd5b506102a7610a70565b604080516001600160a01b039092168252519081900360200190f35b3480156102cf57600080fd5b506102f3600480360360408110156102e657600080fd5b5080359060200135610a7f565b60408051918252519081900360200190f35b34801561031157600080fd5b506102f3610c60565b34801561032657600080fd5b5061032f610c72565b6040805163ffffffff9092168252519081900360200190f35b34801561035457600080fd5b506102a7610c7e565b34801561036957600080fd5b506101e56004803603602081101561038057600080fd5b5035610c8d565b34801561039357600080fd5b506101e5600480360360208110156103aa57600080fd5b5035610d00565b3480156103bd57600080fd5b506102f3610d15565b3480156103d257600080fd5b5061032f610d1b565b3480156103e757600080fd5b506101b9600480360360208110156103fe57600080fd5b50356001600160a01b0316610d27565b34801561041a57600080fd5b506104896004803603602081101561043157600080fd5b810190602081018135600160201b81111561044b57600080fd5b82018360208201111561045d57600080fd5b803590602001918460208302840111600160201b8311171561047e57600080fd5b509092509050610d92565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156104c55781810151838201526020016104ad565b505050509050019250505060405180910390f35b3480156104e557600080fd5b506102f3610e1a565b6101b96004803603602081101561050457600080fd5b5035610e20565b34801561051757600080fd5b506102f3610f4d565b34801561052c57600080fd5b506102f36004803603602081101561054357600080fd5b5035610f6d565b34801561055657600080fd5b5061032f610f81565b34801561056b57600080fd5b506102a7610f86565b34801561058057600080fd5b506101e56004803603602081101561059757600080fd5b5035610f95565b3480156105aa57600080fd5b506102f3600480360360208110156105c157600080fd5b5035610faa565b3480156105d457600080fd5b506102f3610fc8565b3480156105e957600080fd5b506102f36004803603602081101561060057600080fd5b5035610fec565b34801561061357600080fd5b506102a7610ff9565b34801561062857600080fd5b5061032f611008565b606e546001600160a01b0316331461067a5760405162461bcd60e51b81526004018080602001828103825260258152602001806118596025913960400191505060405180910390fd5b606e80546001600160a01b0319166001600160a01b0392909216919091179055565b606a6020526000908152604090205460ff1681565b60685460ff16610708576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6068805460ff19169055606954821115610769576040805162461bcd60e51b815260206004820152601a60248201527f4665652065786365656473207472616e736665722076616c7565000000000000604482015290519081900360640190fd5b6000858152606a602052604090205460ff16156107cd576040805162461bcd60e51b815260206004820152601f60248201527f546865206e6f746520686173206265656e20616c7265616479207370656e7400604482015290519081900360640190fd5b6107d686610c8d565b610827576040805162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742066696e6420796f7572206d65726b6c6520726f6f7400000000604482015290519081900360640190fd5b606c546040805160c08082018352898252602082018990526001600160a01b038881168385015287811660608401526080830187905260a08301869052925163695ef6f960e01b8152929093169263695ef6f9928c928c9290916004810191829160240190849080838360005b838110156108ac578181015183820152602001610894565b505050509050018281038252858582818152602001925080828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b1580156108fe57600080fd5b505af1158015610912573d6000803e3d6000fd5b505050506040513d602081101561092857600080fd5b5051610974576040805162461bcd60e51b815260206004820152601660248201527524b73b30b634b2103bb4ba34323930bb90383937b7b360511b604482015290519081900360640190fd5b6000858152606a6020908152604091829020805460ff19166001179055606d548251622fcfcb60e31b81529251610a0b9388938893889388936001600160a01b039092169263017e7e589260048082019391829003018186803b1580156109da57600080fd5b505afa1580156109ee573d6000803e3d6000fd5b505050506040513d6020811015610a0457600080fd5b505161101b565b604080516001600160a01b038681168252602082018890528183018590529151918516917fe9e508bad6d4c3227e881ca19068f099da81b5164dd6d62b2eaf1e8bc6c349319181900360600190a250506068805460ff19166001179055505050505050565b606c546001600160a01b031681565b60006000805160206117e88339815191528310610ae3576040805162461bcd60e51b815260206004820181905260248201527f5f6c6566742073686f756c6420626520696e7369646520746865206669656c64604482015290519081900360640190fd5b6000805160206117e88339815191528210610b2f5760405162461bcd60e51b81526004018080602001828103825260218152602001806117986021913960400191505060405180910390fd5b6040805163f47d33b560e01b81526004810185905260006024820181905282518693919273__Hasher________________________________9263f47d33b592604480840193829003018186803b158015610b8957600080fd5b505af4158015610b9d573d6000803e3d6000fd5b505050506040513d6040811015610bb357600080fd5b50805160209091015190925090506000805160206117e8833981519152848308915073__Hasher________________________________63f47d33b583836040518363ffffffff1660e01b81526004018083815260200182815260200192505050604080518083038186803b158015610c2b57600080fd5b505af4158015610c3f573d6000803e3d6000fd5b505050506040513d6040811015610c5557600080fd5b505195945050505050565b6000805160206117e883398151915281565b60005463ffffffff1681565b606e546001600160a01b031681565b600081610c9c57506000610cfb565b60035463ffffffff165b60048163ffffffff1660648110610cb957fe5b0154831415610ccc576001915050610cfb565b63ffffffff8116610cdb575060645b6003546000199091019063ffffffff80831691161415610ca65760009150505b919050565b606b6020526000908152604090205460ff1681565b60695481565b60035463ffffffff1681565b606e546001600160a01b03163314610d705760405162461bcd60e51b81526004018080602001828103825260258152602001806118596025913960400191505060405180910390fd5b606c80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518281526020808402820101909152606090828015610dbe578160200160208202803883390190505b50905060005b82811015610e1357610de7848483818110610ddb57fe5b90506020020135610f95565b15610e0b576001828281518110610dfa57fe5b911515602092830291909101909101525b600101610dc4565b5092915050565b60705481565b60685460ff16610e77576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6068805460ff191690556000818152606b602052604090205460ff1615610ecf5760405162461bcd60e51b81526004018080602001828103825260218152602001806118086021913960400191505060405180910390fd5b6000610eda8261114d565b6000838152606b60205260409020805460ff191660011790559050610efd6112e4565b6040805163ffffffff83168152426020820152815184927fa945e51eec50ab98c161376f0db4cf2aeba3ec92755fe2fcd388bdbbb80ff196928290030190a250506068805460ff19166001179055565b60035460009060049063ffffffff1660648110610f6657fe5b0154905090565b60048160648110610f7a57fe5b0154905081565b606481565b606d546001600160a01b031681565b6000908152606a602052604090205460ff1690565b60028181548110610fb757fe5b600091825260209091200154905081565b7f2fe54c60d3acabf3343a35b6eba15db4821b340f76e741e2249685ed4899af6c81565b60018181548110610fb757fe5b606f546001600160a01b031681565b600354600160201b900463ffffffff1681565b8134146110595760405162461bcd60e51b81526004018080602001828103825260308152602001806117416030913960400191505060405180910390fd5b6001600160a01b0381161580159061108e5761107d86607054866069540303611330565b61108982607054611330565b61109c565b61109c868560695403611330565b83156110ac576110ac8585611330565b8215611145576040516000906001600160a01b0388169085908381818185875af1925050503d80600081146110fd576040519150601f19603f3d011682016040523d82523d6000602084013e611102565b606091505b5050905080611143576040516001600160a01b0387169085156108fc029086906000818181858888f19350505050158015611141573d6000803e3d6000fd5b505b505b505050505050565b60035460008054909163ffffffff600160201b909104811691811660020a168114156111aa5760405162461bcd60e51b815260040180806020018281038252602f8152602001806116e8602f913960400191505060405180910390fd5b6003805463ffffffff600160201b80830482166001019091160267ffffffff000000001990911617905582600080805b60005463ffffffff9081169082161015611282576001851661123e5783925060028163ffffffff168154811061120c57fe5b906000526020600020015491508360018263ffffffff168154811061122d57fe5b600091825260209091200155611262565b60018163ffffffff168154811061125157fe5b906000526020600020015492508391505b61126c8383610a7f565b9350600263ffffffff86160494506001016111da565b5060035460649063ffffffff908116600101166003805463ffffffff19169290910663ffffffff9081169290921790819055849160049116606481106112c457fe5b01555050600354600160201b900463ffffffff1660001901949350505050565b34156113215760405162461bcd60e51b81526004018080602001828103825260308152602001806118296030913960400191505060405180910390fd5b61132e3330606954611501565b565b606f54604080516001600160a01b038581166024830152604480830186905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000956060959316939282918083835b602083106113ad5780518252601f19909201916020918201910161138e565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461140f576040519150601f19603f3d011682016040523d82523d6000602084013e611414565b606091505b50915091508161145f576040805162461bcd60e51b81526020600482015260116024820152706e6f7420656e6f75676820746f6b656e7360781b604482015290519081900360640190fd5b8051156114fb5780516020146114a65760405162461bcd60e51b815260040180806020018281038252602a815260200180611717602a913960400191505060405180910390fd5b8080602001905160208110156114bb57600080fd5b50519150816114fb5760405162461bcd60e51b81526004018080602001828103825260278152602001806117716027913960400191505060405180910390fd5b50505050565b606f54604080516001600160a01b0386811660248301528581166044830152606480830186905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b178152925182516000956060959316939282918083835b602083106115865780518252601f199092019160209182019101611567565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146115e8576040519150601f19603f3d011682016040523d82523d6000602084013e6115ed565b606091505b509150915081611644576040805162461bcd60e51b815260206004820152601960248201527f6e6f7420656e6f75676820616c6c6f77656420746f6b656e7300000000000000604482015290519081900360640190fd5b8051156116e057805160201461168b5760405162461bcd60e51b815260040180806020018281038252602a815260200180611717602a913960400191505060405180910390fd5b8080602001905160208110156116a057600080fd5b50519150816116e05760405162461bcd60e51b815260040180806020018281038252602f8152602001806117b9602f913960400191505060405180910390fd5b505050505056fe4d65726b6c6520747265652069732066756c6c2e204e6f206d6f7265206c656166732063616e20626520616464656464617461206c656e6774682073686f756c64206265206569746865722030206f72203332206279746573496e636f727265637420726566756e6420616d6f756e742072656365697665642062792074686520636f6e74726163746e6f7420656e6f75676820746f6b656e732e20546f6b656e2072657475726e732066616c73652e5f72696768742073686f756c6420626520696e7369646520746865206669656c646e6f7420656e6f75676820616c6c6f77656420746f6b656e732e20546f6b656e2072657475726e732066616c73652e30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000154686520636f6d6d69746d656e7420686173206265656e207375626d69747465644554482076616c756520697320737570706f73656420746f206265203020666f7220455243323020696e7374616e63654f6e6c79206f70657261746f722063616e2063616c6c20746869732066756e6374696f6e2ea265627a7a72315820c90af910ddfda5b33dab20c369a888b349922f695f9eee0e2eb3e0273adc895364736f6c6343000511003264656e6f6d696e6174696f6e2073686f756c642062652067726561746572207468616e2030405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace5f72696768742073686f756c6420626520696e7369646520746865206669656c645f747265654c6576656c732073686f756c642062652067726561746572207468616e207a65726f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000015f747265654c6576656c732073686f756c64206265206c657373207468616e203332b10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6", + "deployedBytecode": "0x6080604052600436106101815760003560e01c80639fa12d0b116100d1578063d0fb02031161008a578063ec73295911610064578063ec732959146105c8578063f178e47c146105dd578063fc0c546a14610607578063fc7e9c6f1461061c57610181565b8063d0fb02031461055f578063e5285dcc14610574578063e82955881461059e57610181565b80639fa12d0b1461040e578063b0e21e8a146104d9578063b214faa5146104ee578063ba70f7571461050b578063c2b40ae414610520578063cd87a3b41461054a57610181565b80634ecf518b1161013e578063839df94511610118578063839df945146103875780638bca6d16146103b157806390eeb02b146103c657806397fc007c146103db57610181565b80634ecf518b1461031a578063570ca735146103485780636d9833e31461035d57610181565b806306394c9b1461018657806317cc915c146101bb57806321a0adb6146101f95780632b7ac3f31461029257806338bf282e146102c3578063414a37ba14610305575b600080fd5b34801561019257600080fd5b506101b9600480360360208110156101a957600080fd5b50356001600160a01b0316610631565b005b3480156101c757600080fd5b506101e5600480360360208110156101de57600080fd5b503561069c565b604080519115158252519081900360200190f35b6101b9600480360360e081101561020f57600080fd5b810190602081018135600160201b81111561022957600080fd5b82018360208201111561023b57600080fd5b803590602001918460018302840111600160201b8311171561025c57600080fd5b91935091508035906020810135906001600160a01b03604082013581169160608101359091169060808101359060a001356106b1565b34801561029e57600080fd5b506102a7610a70565b604080516001600160a01b039092168252519081900360200190f35b3480156102cf57600080fd5b506102f3600480360360408110156102e657600080fd5b5080359060200135610a7f565b60408051918252519081900360200190f35b34801561031157600080fd5b506102f3610c60565b34801561032657600080fd5b5061032f610c72565b6040805163ffffffff9092168252519081900360200190f35b34801561035457600080fd5b506102a7610c7e565b34801561036957600080fd5b506101e56004803603602081101561038057600080fd5b5035610c8d565b34801561039357600080fd5b506101e5600480360360208110156103aa57600080fd5b5035610d00565b3480156103bd57600080fd5b506102f3610d15565b3480156103d257600080fd5b5061032f610d1b565b3480156103e757600080fd5b506101b9600480360360208110156103fe57600080fd5b50356001600160a01b0316610d27565b34801561041a57600080fd5b506104896004803603602081101561043157600080fd5b810190602081018135600160201b81111561044b57600080fd5b82018360208201111561045d57600080fd5b803590602001918460208302840111600160201b8311171561047e57600080fd5b509092509050610d92565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156104c55781810151838201526020016104ad565b505050509050019250505060405180910390f35b3480156104e557600080fd5b506102f3610e1a565b6101b96004803603602081101561050457600080fd5b5035610e20565b34801561051757600080fd5b506102f3610f4d565b34801561052c57600080fd5b506102f36004803603602081101561054357600080fd5b5035610f6d565b34801561055657600080fd5b5061032f610f81565b34801561056b57600080fd5b506102a7610f86565b34801561058057600080fd5b506101e56004803603602081101561059757600080fd5b5035610f95565b3480156105aa57600080fd5b506102f3600480360360208110156105c157600080fd5b5035610faa565b3480156105d457600080fd5b506102f3610fc8565b3480156105e957600080fd5b506102f36004803603602081101561060057600080fd5b5035610fec565b34801561061357600080fd5b506102a7610ff9565b34801561062857600080fd5b5061032f611008565b606e546001600160a01b0316331461067a5760405162461bcd60e51b81526004018080602001828103825260258152602001806118596025913960400191505060405180910390fd5b606e80546001600160a01b0319166001600160a01b0392909216919091179055565b606a6020526000908152604090205460ff1681565b60685460ff16610708576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6068805460ff19169055606954821115610769576040805162461bcd60e51b815260206004820152601a60248201527f4665652065786365656473207472616e736665722076616c7565000000000000604482015290519081900360640190fd5b6000858152606a602052604090205460ff16156107cd576040805162461bcd60e51b815260206004820152601f60248201527f546865206e6f746520686173206265656e20616c7265616479207370656e7400604482015290519081900360640190fd5b6107d686610c8d565b610827576040805162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742066696e6420796f7572206d65726b6c6520726f6f7400000000604482015290519081900360640190fd5b606c546040805160c08082018352898252602082018990526001600160a01b038881168385015287811660608401526080830187905260a08301869052925163695ef6f960e01b8152929093169263695ef6f9928c928c9290916004810191829160240190849080838360005b838110156108ac578181015183820152602001610894565b505050509050018281038252858582818152602001925080828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b1580156108fe57600080fd5b505af1158015610912573d6000803e3d6000fd5b505050506040513d602081101561092857600080fd5b5051610974576040805162461bcd60e51b815260206004820152601660248201527524b73b30b634b2103bb4ba34323930bb90383937b7b360511b604482015290519081900360640190fd5b6000858152606a6020908152604091829020805460ff19166001179055606d548251622fcfcb60e31b81529251610a0b9388938893889388936001600160a01b039092169263017e7e589260048082019391829003018186803b1580156109da57600080fd5b505afa1580156109ee573d6000803e3d6000fd5b505050506040513d6020811015610a0457600080fd5b505161101b565b604080516001600160a01b038681168252602082018890528183018590529151918516917fe9e508bad6d4c3227e881ca19068f099da81b5164dd6d62b2eaf1e8bc6c349319181900360600190a250506068805460ff19166001179055505050505050565b606c546001600160a01b031681565b60006000805160206117e88339815191528310610ae3576040805162461bcd60e51b815260206004820181905260248201527f5f6c6566742073686f756c6420626520696e7369646520746865206669656c64604482015290519081900360640190fd5b6000805160206117e88339815191528210610b2f5760405162461bcd60e51b81526004018080602001828103825260218152602001806117986021913960400191505060405180910390fd5b6040805163f47d33b560e01b81526004810185905260006024820181905282518693919273__Hasher________________________________9263f47d33b592604480840193829003018186803b158015610b8957600080fd5b505af4158015610b9d573d6000803e3d6000fd5b505050506040513d6040811015610bb357600080fd5b50805160209091015190925090506000805160206117e8833981519152848308915073__Hasher________________________________63f47d33b583836040518363ffffffff1660e01b81526004018083815260200182815260200192505050604080518083038186803b158015610c2b57600080fd5b505af4158015610c3f573d6000803e3d6000fd5b505050506040513d6040811015610c5557600080fd5b505195945050505050565b6000805160206117e883398151915281565b60005463ffffffff1681565b606e546001600160a01b031681565b600081610c9c57506000610cfb565b60035463ffffffff165b60048163ffffffff1660648110610cb957fe5b0154831415610ccc576001915050610cfb565b63ffffffff8116610cdb575060645b6003546000199091019063ffffffff80831691161415610ca65760009150505b919050565b606b6020526000908152604090205460ff1681565b60695481565b60035463ffffffff1681565b606e546001600160a01b03163314610d705760405162461bcd60e51b81526004018080602001828103825260258152602001806118596025913960400191505060405180910390fd5b606c80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518281526020808402820101909152606090828015610dbe578160200160208202803883390190505b50905060005b82811015610e1357610de7848483818110610ddb57fe5b90506020020135610f95565b15610e0b576001828281518110610dfa57fe5b911515602092830291909101909101525b600101610dc4565b5092915050565b60705481565b60685460ff16610e77576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6068805460ff191690556000818152606b602052604090205460ff1615610ecf5760405162461bcd60e51b81526004018080602001828103825260218152602001806118086021913960400191505060405180910390fd5b6000610eda8261114d565b6000838152606b60205260409020805460ff191660011790559050610efd6112e4565b6040805163ffffffff83168152426020820152815184927fa945e51eec50ab98c161376f0db4cf2aeba3ec92755fe2fcd388bdbbb80ff196928290030190a250506068805460ff19166001179055565b60035460009060049063ffffffff1660648110610f6657fe5b0154905090565b60048160648110610f7a57fe5b0154905081565b606481565b606d546001600160a01b031681565b6000908152606a602052604090205460ff1690565b60028181548110610fb757fe5b600091825260209091200154905081565b7f2fe54c60d3acabf3343a35b6eba15db4821b340f76e741e2249685ed4899af6c81565b60018181548110610fb757fe5b606f546001600160a01b031681565b600354600160201b900463ffffffff1681565b8134146110595760405162461bcd60e51b81526004018080602001828103825260308152602001806117416030913960400191505060405180910390fd5b6001600160a01b0381161580159061108e5761107d86607054866069540303611330565b61108982607054611330565b61109c565b61109c868560695403611330565b83156110ac576110ac8585611330565b8215611145576040516000906001600160a01b0388169085908381818185875af1925050503d80600081146110fd576040519150601f19603f3d011682016040523d82523d6000602084013e611102565b606091505b5050905080611143576040516001600160a01b0387169085156108fc029086906000818181858888f19350505050158015611141573d6000803e3d6000fd5b505b505b505050505050565b60035460008054909163ffffffff600160201b909104811691811660020a168114156111aa5760405162461bcd60e51b815260040180806020018281038252602f8152602001806116e8602f913960400191505060405180910390fd5b6003805463ffffffff600160201b80830482166001019091160267ffffffff000000001990911617905582600080805b60005463ffffffff9081169082161015611282576001851661123e5783925060028163ffffffff168154811061120c57fe5b906000526020600020015491508360018263ffffffff168154811061122d57fe5b600091825260209091200155611262565b60018163ffffffff168154811061125157fe5b906000526020600020015492508391505b61126c8383610a7f565b9350600263ffffffff86160494506001016111da565b5060035460649063ffffffff908116600101166003805463ffffffff19169290910663ffffffff9081169290921790819055849160049116606481106112c457fe5b01555050600354600160201b900463ffffffff1660001901949350505050565b34156113215760405162461bcd60e51b81526004018080602001828103825260308152602001806118296030913960400191505060405180910390fd5b61132e3330606954611501565b565b606f54604080516001600160a01b038581166024830152604480830186905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000956060959316939282918083835b602083106113ad5780518252601f19909201916020918201910161138e565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461140f576040519150601f19603f3d011682016040523d82523d6000602084013e611414565b606091505b50915091508161145f576040805162461bcd60e51b81526020600482015260116024820152706e6f7420656e6f75676820746f6b656e7360781b604482015290519081900360640190fd5b8051156114fb5780516020146114a65760405162461bcd60e51b815260040180806020018281038252602a815260200180611717602a913960400191505060405180910390fd5b8080602001905160208110156114bb57600080fd5b50519150816114fb5760405162461bcd60e51b81526004018080602001828103825260278152602001806117716027913960400191505060405180910390fd5b50505050565b606f54604080516001600160a01b0386811660248301528581166044830152606480830186905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b178152925182516000956060959316939282918083835b602083106115865780518252601f199092019160209182019101611567565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146115e8576040519150601f19603f3d011682016040523d82523d6000602084013e6115ed565b606091505b509150915081611644576040805162461bcd60e51b815260206004820152601960248201527f6e6f7420656e6f75676820616c6c6f77656420746f6b656e7300000000000000604482015290519081900360640190fd5b8051156116e057805160201461168b5760405162461bcd60e51b815260040180806020018281038252602a815260200180611717602a913960400191505060405180910390fd5b8080602001905160208110156116a057600080fd5b50519150816116e05760405162461bcd60e51b815260040180806020018281038252602f8152602001806117b9602f913960400191505060405180910390fd5b505050505056fe4d65726b6c6520747265652069732066756c6c2e204e6f206d6f7265206c656166732063616e20626520616464656464617461206c656e6774682073686f756c64206265206569746865722030206f72203332206279746573496e636f727265637420726566756e6420616d6f756e742072656365697665642062792074686520636f6e74726163746e6f7420656e6f75676820746f6b656e732e20546f6b656e2072657475726e732066616c73652e5f72696768742073686f756c6420626520696e7369646520746865206669656c646e6f7420656e6f75676820616c6c6f77656420746f6b656e732e20546f6b656e2072657475726e732066616c73652e30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000154686520636f6d6d69746d656e7420686173206265656e207375626d69747465644554482076616c756520697320737570706f73656420746f206265203020666f7220455243323020696e7374616e63654f6e6c79206f70657261746f722063616e2063616c6c20746869732066756e6374696f6e2ea265627a7a72315820c90af910ddfda5b33dab20c369a888b349922f695f9eee0e2eb3e0273adc895364736f6c63430005110032", + "sourceMap": "805:2570:0:-;;;1430:34:1;;;-1:-1:-1;;;;;;1468:27:1;;;897:334:0;5:2:-1;;;;30:1;27;20:12;5:2;897:334:0;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;897:334:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1646:15:1;;;1638:67;;;;-1:-1:-1;;;1638:67:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1733:2;1719:11;:16;;;1711:63;;;;-1:-1:-1;;;1711:63:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1780:6;:20;;-1:-1:-1;;1780:20:1;;;;;;;1854:5;27:10:-1;;-1:-1;23:18;;;45:23;;;1088:77:1;-1:-1:-1;;;;;;;;;;;1854:23:1;;;;;;27:10:-1;;23:18;;;45:23;;1883:32:1;;;;-1:-1:-1;;;;;;;;;;;1883:32:1;;;;;;1922:175;1945:6;;;;;;1941:10;;;;1922:175;;;1980:39;1994:11;;-1:-1:-1;;;;;1980:13:1;:39;:::i;:::-;2027:5;27:10:-1;;39:1;23:18;;;45:23;;;-1:-1;;;;;;;;;;;2027:23:1;;;;27:10:-1;;23:18;;;45:23;;-1:-1;2058:32:1;;;-1:-1:-1;;;;;;;;;;;2058:32:1;;;;1966:53;;-1:-1:-1;1953:3:1;1922:175;;;-1:-1:-1;2114:39:1;2128:11;;-1:-1:-1;;;;;2114:13:1;:39;:::i;:::-;2103:5;2109:1;2103:8;:50;-1:-1:-1;;1421:11:3;:18;;-1:-1:-1;;1421:18:3;1435:4;1421:18;;;1645:17:2;1637:67;;;;-1:-1:-1;;;1637:67:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1710:8;:20;;-1:-1:-1;;;;;;1710:20:2;;;-1:-1:-1;;;;;1710:20:2;;;;;;;1736:10;:24;;;;;;;;;;;;;;1766:8;:20;;;;;;;;;;;;;-1:-1:-1;1792:12:2;:28;1157:5:0;:14;;;;;;;;;;;;;;1223:3;1207:13;:19;1193:11;:33;-1:-1:-1;805:2570:0;;-1:-1:-1;;;;;805:2570:0;2230:445:1;2305:7;-1:-1:-1;;;;;;;;;;;2328:27:1;;2320:72;;;;;-1:-1:-1;;;2320:72:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2406:28:1;;2398:74;;;;-1:-1:-1;;;2398:74:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2538:23;;;-1:-1:-1;;;2538:23:1;;;;;;;;2478:9;2538:23;;;;;;;;2498:5;;2478:9;;2538:6;;:17;;:23;;;;;;;;;;:6;:23;;;5:2:-1;;;;30:1;27;20:12;5:2;2538:23:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2538:23:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2538:23:1;;;;;;;;;-1:-1:-1;2538:23:1;-1:-1:-1;;;;;;;;;;;;2589:6:1;2578:1;2571:38;2567:42;;2624:6;:17;2642:1;2645;2624:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2624:23:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2624:23:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2624:23:1;;2230:445;-1:-1:-1;;;;;2230:445:1:o;805:2570:0:-;;;;;;;", + "deployedSourceMap": "805:2570:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4814:102:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4814:102:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4814:102:2;-1:-1:-1;;;;;4814:102:2;;:::i;:::-;;412:47;;8:9:-1;5:2;;;30:1;27;20:12;5:2;412:47:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;412:47:2;;:::i;:::-;;;;;;;;;;;;;;;;;;2893:801;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;2893:801:2;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;2893:801:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2893:801:2;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2893:801:2;;-1:-1:-1;2893:801:2;-1:-1:-1;2893:801:2;;;;;;;;-1:-1:-1;;;;;2893:801:2;;;;;;;;;;;;;;;;;;;;;;;;:::i;601:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;601:25:2;;;:::i;:::-;;;;-1:-1:-1;;;;;601:25:2;;;;;;;;;;;;;;2230:445:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2230:445:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2230:445:1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;933:114;;8:9:-1;5:2;;;30:1;27;20:12;5:2;933:114:1;;;:::i;1209:20::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1209:20:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;819:23:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;819:23:2;;;:::i;3553:342:1:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3553:342:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3553:342:1;;:::i;554:43:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;554:43:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;554:43:2;;:::i;381:27::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;381:27:2;;;:::i;1430:34:1:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1430:34:1;;;:::i;4651:113:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4651:113:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4651:113:2;-1:-1:-1;;;;;4651:113:2;;:::i;4128:293::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4128:293:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4128:293:2;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;4128:293:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4128:293:2;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;4128:293:2;;-1:-1:-1;4128:293:2;-1:-1:-1;4128:293:2;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4128:293:2;;;;;;;;;;;;;;;;;866:26:0;;8:9:-1;5:2;;;30:1;27;20:12;5:2;866:26:0;;;:::i;2073:324:2:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2073:324:2;;:::i;3941:93:1:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3941:93:1;;;:::i;1549:39::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1549:39:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1549:39:1;;:::i;1499:46::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1499:46:1;;;:::i;630:29:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;630:29:2;;;:::i;3951:116::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3951:116:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3951:116:2;;:::i;1404:22:1:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1404:22:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1404:22:1;;:::i;1051:114::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1051:114:1;;;:::i;1369:31::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1369:31:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1369:31:1;;:::i;842:20:0:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;842:20:0;;;:::i;1468:27:1:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1468:27:1;;;:::i;4814:102:2:-;896:8;;-1:-1:-1;;;;;896:8:2;882:10;:22;874:72;;;;-1:-1:-1;;;874:72:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4888:8;:23;;-1:-1:-1;;;;;;4888:23:2;-1:-1:-1;;;;;4888:23:2;;;;;;;;;;4814:102::o;412:47::-;;;;;;;;;;;;;;;:::o;2893:801::-;1934:11:3;;;;1926:55;;;;;-1:-1:-1;;;1926:55:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;2056:11;:19;;-1:-1:-1;;2056:19:3;;;3110:12:2;;3102:20;;;3094:59;;;;;-1:-1:-1;;;3094:59:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;3168:31;;;;:15;:31;;;;;;;;3167:32;3159:76;;;;;-1:-1:-1;;;3159:76:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;3249:18;3261:5;3249:11;:18::i;:::-;3241:59;;;;;-1:-1:-1;;;3241:59:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;3347:8;;:126;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3418:19:2;;;3347:126;;;;3439:17;;;3347:126;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3347:126:2;;:8;;;;;:20;;3368:6;;;;3347:126;;;;;;;;;;;;;;;;:8;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3347:126:2;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;3347:126:2;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3347:126:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3347:126:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3347:126:2;3339:161;;;;;-1:-1:-1;;;3339:161:2;;;;;;;;;;;;-1:-1:-1;;;3339:161:2;;;;;;;;;;;;;;;3507:31;;;;:15;:31;;;;;;;;;:38;;-1:-1:-1;;3507:38:2;3541:4;3507:38;;;3605:10;;:18;;-1:-1:-1;;;3605:18:2;;;;3551:73;;3568:10;;3580:8;;3590:4;;3596:7;;-1:-1:-1;;;;;3605:10:2;;;;:16;;:18;;;;;;;;;;;:10;:18;;;5:2:-1;;;;30:1;27;20:12;5:2;3605:18:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3605:18:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3605:18:2;3551:16;:73::i;:::-;3635:54;;;-1:-1:-1;;;;;3635:54:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2230:11:3;:18;;-1:-1:-1;;2230:18:3;2244:4;2230:18;;;-1:-1:-1;;;;;;2893:801:2:o;601:25::-;;;-1:-1:-1;;;;;601:25:2;;:::o;2230:445:1:-;2305:7;-1:-1:-1;;;;;;;;;;;2328:27:1;;2320:72;;;;;-1:-1:-1;;;2320:72:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2406:28:1;;2398:74;;;;-1:-1:-1;;;2398:74:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2538:23;;;-1:-1:-1;;;2538:23:1;;;;;;;;2478:9;2538:23;;;;;;;;2498:5;;2478:9;;2538:6;;:17;;:23;;;;;;;;;;:6;:23;;;5:2:-1;;;;30:1;27;20:12;5:2;2538:23:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2538:23:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2538:23:1;;;;;;;;;-1:-1:-1;2538:23:1;-1:-1:-1;;;;;;;;;;;;2589:6:1;2578:1;2571:38;2567:42;;2624:6;:17;2642:1;2645;2624:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2624:23:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2624:23:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2624:23:1;;2230:445;-1:-1:-1;;;;;2230:445:1:o;933:114::-;-1:-1:-1;;;;;;;;;;;933:114:1;:::o;1209:20::-;;;;;;:::o;819:23:2:-;;;-1:-1:-1;;;;;819:23:2;;:::o;3553:342:1:-;3609:4;3625:10;3621:43;;-1:-1:-1;3652:5:1;3645:12;;3621:43;3680:16;;;;3702:171;3726:5;3732:1;3726:8;;;;;;;;;;;3717:5;:17;3713:53;;;3753:4;3746:11;;;;;3713:53;3777:6;;;3773:52;;-1:-1:-1;1542:3:1;3773:52;3855:16;;-1:-1:-1;;3832:3:1;;;;3855:16;3850:21;;;3855:16;;3850:21;;3702:171;;3885:5;3878:12;;;3553:342;;;;:::o;554:43:2:-;;;;;;;;;;;;;;;:::o;381:27::-;;;;:::o;1430:34:1:-;;;;;;:::o;4651:113:2:-;896:8;;-1:-1:-1;;;;;896:8:2;882:10;:22;874:72;;;;-1:-1:-1;;;874:72:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4725:8;:34;;-1:-1:-1;;;;;;4725:34:2;-1:-1:-1;;;;;4725:34:2;;;;;;;;;;4651:113::o;4128:293::-;4244:35;;;;;;;;;;;;;;;;4209:19;;4255:16;4244:35;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;4244:35:2;-1:-1:-1;4236:43:2;-1:-1:-1;4289:6:2;4285:132;4301:27;;;4285:132;;;4347:28;4355:16;;4372:1;4355:19;;;;;;;;;;;;;4347:7;:28::i;:::-;4343:68;;;4398:4;4387:5;4393:1;4387:8;;;;;;;;:15;;;:8;;;;;;;;;;;:15;4343:68;4330:3;;4285:132;;;;4128:293;;;;:::o;866:26:0:-;;;;:::o;2073:324:2:-;1934:11:3;;;;1926:55;;;;;-1:-1:-1;;;1926:55:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;2056:11;:19;;-1:-1:-1;;2056:19:3;;;2070:5;2156:24:2;;;:11;:24;;;;;;2056:19:3;2156:24:2;2155:25;2147:71;;;;-1:-1:-1;;;2147:71:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2225:20;2248;2256:11;2248:7;:20::i;:::-;2274:24;;;;:11;:24;;;;;:31;;-1:-1:-1;;2274:31:2;2301:4;2274:31;;;2225:43;-1:-1:-1;2311:17:2;:15;:17::i;:::-;2340:52;;;;;;;;2376:15;2340:52;;;;;;2348:11;;2340:52;;;;;;;;-1:-1:-1;;2230:11:3;:18;;-1:-1:-1;;2230:18:3;2244:4;2230:18;;;2073:324:2:o;3941:93:1:-;4012:16;;3984:7;;4006:5;;4012:16;;4006:23;;;;;;;;;3999:30;;3941:93;:::o;1549:39::-;;;;;;;;;;;;;-1:-1:-1;1549:39:1;:::o;1499:46::-;1542:3;1499:46;:::o;630:29:2:-;;;-1:-1:-1;;;;;630:29:2;;:::o;3951:116::-;4012:4;4031:31;;;:15;:31;;;;;;;;;3951:116::o;1404:22:1:-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1404:22:1;:::o;1051:114::-;1088:77;1051:114;:::o;1369:31::-;;;;;;;;;;842:20:0;;;-1:-1:-1;;;;;842:20:0;;:::o;1468:27:1:-;;;-1:-1:-1;;;1468:27:1;;;;;:::o;1430:801:0:-;1601:7;1588:9;:20;1580:81;;;;-1:-1:-1;;;1580:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1681:20:0;;;;;;1707:226;;1726:73;1745:10;1787:11;;1772:12;1757;;:27;:41;1726:18;:73::i;:::-;1807:39;1826:6;1834:11;;1807:18;:39::i;:::-;1707:226;;;1867:59;1886:10;1913:12;1898;;:27;1867:18;:59::i;:::-;1943:16;;1939:79;;1969:42;1988:8;1998:12;1969:18;:42::i;:::-;2028:11;;2024:203;;2068:34;;2050:12;;-1:-1:-1;;;;;2068:15:0;;;2090:7;;2050:12;2068:34;2050:12;2068:34;2090:7;2068:15;:34;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2049:53:0;;;2115:7;2110:111;;2186:26;;-1:-1:-1;;;;;2186:17:0;;;:26;;;;;2204:7;;2186:26;;;;2204:7;2186:17;:26;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2186:26:0;2110:111;2024:203;;1430:801;;;;;;:::o;2679:802:1:-;2770:9;;2728:12;2820:6;;2728:12;;2770:9;-1:-1:-1;;;2770:9:1;;;;;;2820:6;;2816:1;2809:17;2793:33;;;;2785:93;;;;-1:-1:-1;;;2785:93:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2884:9;:14;;;-1:-1:-1;;;2884:14:1;;;;;2897:1;2884:14;;;;;-1:-1:-1;;2884:14:1;;;;;;2931:5;-1:-1:-1;;;2980:355:1;3003:6;;;;;;2999:10;;;;2980:355;;;3028:16;;;3024:225;;3068:16;3061:23;;3102:5;3108:1;3102:8;;;;;;;;;;;;;;;;;;3094:16;;3141;3121:14;3136:1;3121:17;;;;;;;;;;;;;;;;;;;:36;3024:225;;;3189:14;3204:1;3189:17;;;;;;;;;;;;;;;;;;3182:24;;3224:16;3216:24;;3024:225;3276:26;3290:4;3296:5;3276:13;:26::i;:::-;3257:45;-1:-1:-1;3327:1:1;3311:17;;;;;-1:-1:-1;3011:3:1;;2980:355;;;-1:-1:-1;3361:16:1;;1542:3;;3360:42;3361:16;;;;:20;3360:42;3341:16;:61;;-1:-1:-1;;3341:61:1;3360:42;;;;3341:61;;;;;;;;;;;;3434:16;;3408:5;;3414:16;3408:23;;;;;;;;:42;-1:-1:-1;;3463:9:1;;-1:-1:-1;;;3463:9:1;;;;-1:-1:-1;;3463:13:1;;2679:802;-1:-1:-1;;;;2679:802:1:o;1235:191:0:-;1285:9;:14;1277:75;;;;-1:-1:-1;;;1277:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1358:63;1381:10;1401:4;1408:12;;1358:22;:63::i;:::-;1235:191::o;2829:544::-;2938:5;;2949:63;;;-1:-1:-1;;;;;2949:63:0;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;2949:63:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2938:75:0;;;;2903:12;;2917:17;;2938:5;;;2949:63;2938:75;;;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;2938:75:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2902:111:0;;;;3027:7;3019:37;;;;;-1:-1:-1;;;3019:37:0;;;;;;;;;;;;-1:-1:-1;;;3019:37:0;;;;;;;;;;;;;;;3156:11;;:15;3152:217;;3189:4;:11;3204:2;3189:17;3181:72;;;;-1:-1:-1;;;3181:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3282:4;3271:24;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3271:24:0;;-1:-1:-1;3271:24:0;3303:59;;;;-1:-1:-1;;;3303:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2829:544;;;;:::o;2235:590::-;2363:5;;2374:74;;;-1:-1:-1;;;;;2374:74:0;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;2374:74:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2363:86:0;;;;2328:12;;2342:17;;2363:5;;;2374:74;2363:86;;;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;2363:86:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2327:122:0;;;;2463:7;2455:45;;;;;-1:-1:-1;;;2455:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;2600:11;;:15;2596:225;;2633:4;:11;2648:2;2633:17;2625:72;;;;-1:-1:-1;;;2625:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2726:4;2715:24;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2715:24:0;;-1:-1:-1;2715:24:0;2747:67;;;;-1:-1:-1;;;2747:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2235:590;;;;;:::o", + "source": "// https://tornado.cash\n/*\n* d888888P dP a88888b. dP\n* 88 88 d8' `88 88\n* 88 .d8888b. 88d888b. 88d888b. .d8888b. .d888b88 .d8888b. 88 .d8888b. .d8888b. 88d888b.\n* 88 88' `88 88' `88 88' `88 88' `88 88' `88 88' `88 88 88' `88 Y8ooooo. 88' `88\n* 88 88. .88 88 88 88 88. .88 88. .88 88. .88 dP Y8. .88 88. .88 88 88 88\n* dP `88888P' dP dP dP `88888P8 `88888P8 `88888P' 88 Y88888P' `88888P8 `88888P' dP dP\n* ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo\n*/\n\npragma solidity 0.5.17;\n\nimport \"./Tornado.sol\";\n\ncontract ERC20Tornado is Tornado {\n address public token;\n uint256 public protocolFee;\n\n constructor(\n IVerifier _verifier,\n IFeeManager _feeManager,\n uint256 _denomination,\n uint32 _merkleTreeHeight,\n address _operator,\n address _token\n ) Tornado(_verifier, _feeManager, _denomination, _merkleTreeHeight, _operator) public {\n token = _token;\n // 0.5% fee\n protocolFee = _denomination / 200;\n }\n\n function _processDeposit() internal {\n require(msg.value == 0, \"ETH value is supposed to be 0 for ERC20 instance\");\n _safeErc20TransferFrom(msg.sender, address(this), denomination);\n }\n\n function _processWithdraw(address payable _recipient, address payable _relayer, uint256 _relayer_fee, uint256 _refund, address _feeTo) internal {\n require(msg.value == _refund, \"Incorrect refund amount received by the contract\");\n\n bool feeOn = _feeTo != address(0);\n if (feeOn) {\n _safeErc20Transfer(_recipient, denomination - _relayer_fee - protocolFee);\n _safeErc20Transfer(_feeTo, protocolFee);\n } else {\n _safeErc20Transfer(_recipient, denomination - _relayer_fee);\n }\n\n if (_relayer_fee > 0) {\n _safeErc20Transfer(_relayer, _relayer_fee);\n }\n\n if (_refund > 0) {\n (bool success, ) = _recipient.call.value(_refund)(\"\");\n if (!success) {\n // let's return _refund back to the relayer\n _relayer.transfer(_refund);\n }\n }\n }\n\n function _safeErc20TransferFrom(address _from, address _to, uint256 _amount) internal {\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd /* transferFrom */, _from, _to, _amount));\n require(success, \"not enough allowed tokens\");\n\n // if contract returns some data lets make sure that is `true` according to standard\n if (data.length > 0) {\n require(data.length == 32, \"data length should be either 0 or 32 bytes\");\n success = abi.decode(data, (bool));\n require(success, \"not enough allowed tokens. Token returns false.\");\n }\n }\n\n function _safeErc20Transfer(address _to, uint256 _amount) internal {\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb /* transfer */, _to, _amount));\n require(success, \"not enough tokens\");\n\n // if contract returns some data lets make sure that is `true` according to standard\n if (data.length > 0) {\n require(data.length == 32, \"data length should be either 0 or 32 bytes\");\n success = abi.decode(data, (bool));\n require(success, \"not enough tokens. Token returns false.\");\n }\n }\n}\n", "sourcePath": "/Users/brianli/dotfiles/tornado-core/contracts/ERC20Tornado.sol", "ast": { "absolutePath": "/Users/brianli/dotfiles/tornado-core/contracts/ERC20Tornado.sol", "exportedSymbols": { "ERC20Tornado": [ - 227 + 266 ] }, - "id": 228, + "id": 267, "nodeType": "SourceUnit", "nodes": [ { @@ -571,8 +606,8 @@ "file": "./Tornado.sol", "id": 2, "nodeType": "ImportDirective", - "scope": 228, - "sourceUnit": 1195, + "scope": 267, + "sourceUnit": 971, "src": "780:23:0", "symbolAliases": [], "unitAlias": "" @@ -586,10 +621,10 @@ "id": 3, "name": "Tornado", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1194, + "referencedDeclaration": 970, "src": "830:7:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_Tornado_$1194", + "typeIdentifier": "t_contract$_Tornado_$970", "typeString": "contract Tornado" } }, @@ -599,19 +634,19 @@ } ], "contractDependencies": [ - 694, - 1194, - 3245 + 632, + 970, + 1000 ], "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 227, + "id": 266, "linearizedBaseContracts": [ - 227, - 1194, - 3245, - 694 + 266, + 970, + 1000, + 632 ], "name": "ERC20Tornado", "nodeType": "ContractDefinition", @@ -621,7 +656,7 @@ "id": 6, "name": "token", "nodeType": "VariableDeclaration", - "scope": 227, + "scope": 266, "src": "842:20:0", "stateVariable": true, "storageLocation": "default", @@ -643,28 +678,54 @@ "value": null, "visibility": "public" }, + { + "constant": false, + "id": 8, + "name": "protocolFee", + "nodeType": "VariableDeclaration", + "scope": 266, + "src": "866:26:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "866:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "public" + }, { "body": { - "id": 29, + "id": 40, "nodeType": "Block", - "src": "1079:25:0", + "src": "1151:80:0", "statements": [ { "expression": { "argumentTypes": null, - "id": 27, + "id": 32, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 25, + "id": 30, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6, - "src": "1085:5:0", + "src": "1157:5:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -674,31 +735,114 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 26, + "id": 31, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 16, - "src": "1093:6:0", + "referencedDeclaration": 20, + "src": "1165:6:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1085:14:0", + "src": "1157:14:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 28, + "id": 33, "nodeType": "ExpressionStatement", - "src": "1085:14:0" + "src": "1157:14:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 38, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 34, + "name": "protocolFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8, + "src": "1193:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 37, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 35, + "name": "_denomination", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "1207:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "hexValue": "323030", + "id": 36, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1223:3:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_200_by_1", + "typeString": "int_const 200" + }, + "value": "200" + }, + "src": "1207:19:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1193:33:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 39, + "nodeType": "ExpressionStatement", + "src": "1193:33:0" } ] }, "documentation": null, - "id": 30, + "id": 41, "implemented": true, "kind": "constructor", "modifiers": [ @@ -706,25 +850,38 @@ "arguments": [ { "argumentTypes": null, - "id": 19, + "id": 23, "name": "_verifier", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8, - "src": "1016:9:0", + "referencedDeclaration": 10, + "src": "1075:9:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_IVerifier_$891", + "typeIdentifier": "t_contract$_IVerifier_$648", "typeString": "contract IVerifier" } }, { "argumentTypes": null, - "id": 20, + "id": 24, + "name": "_feeManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12, + "src": "1086:11:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IFeeManager_$654", + "typeString": "contract IFeeManager" + } + }, + { + "argumentTypes": null, + "id": 25, "name": "_denomination", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 10, - "src": "1027:13:0", + "referencedDeclaration": 14, + "src": "1099:13:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -732,12 +889,12 @@ }, { "argumentTypes": null, - "id": 21, + "id": 26, "name": "_merkleTreeHeight", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12, - "src": "1042:17:0", + "referencedDeclaration": 16, + "src": "1114:17:0", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -745,103 +902,131 @@ }, { "argumentTypes": null, - "id": 22, + "id": 27, "name": "_operator", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 14, - "src": "1061:9:0", + "referencedDeclaration": 18, + "src": "1133:9:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], - "id": 23, + "id": 28, "modifierName": { "argumentTypes": null, - "id": 18, + "id": 22, "name": "Tornado", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1194, - "src": "1008:7:0", + "referencedDeclaration": 970, + "src": "1067:7:0", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Tornado_$1194_$", + "typeIdentifier": "t_type$_t_contract$_Tornado_$970_$", "typeString": "type(contract Tornado)" } }, "nodeType": "ModifierInvocation", - "src": "1008:63:0" + "src": "1067:76:0" } ], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 17, + "id": 21, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 8, + "id": 10, "name": "_verifier", "nodeType": "VariableDeclaration", - "scope": 30, - "src": "884:19:0", + "scope": 41, + "src": "914:19:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IVerifier_$891", + "typeIdentifier": "t_contract$_IVerifier_$648", "typeString": "contract IVerifier" }, "typeName": { "contractScope": null, - "id": 7, + "id": 9, "name": "IVerifier", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 891, - "src": "884:9:0", + "referencedDeclaration": 648, + "src": "914:9:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_IVerifier_$891", + "typeIdentifier": "t_contract$_IVerifier_$648", "typeString": "contract IVerifier" } }, "value": null, "visibility": "internal" }, - { - "constant": false, - "id": 10, - "name": "_denomination", - "nodeType": "VariableDeclaration", - "scope": 30, - "src": "909:21:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 9, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "909:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, { "constant": false, "id": 12, + "name": "_feeManager", + "nodeType": "VariableDeclaration", + "scope": 41, + "src": "939:23:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IFeeManager_$654", + "typeString": "contract IFeeManager" + }, + "typeName": { + "contractScope": null, + "id": 11, + "name": "IFeeManager", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 654, + "src": "939:11:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IFeeManager_$654", + "typeString": "contract IFeeManager" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 14, + "name": "_denomination", + "nodeType": "VariableDeclaration", + "scope": 41, + "src": "968:21:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "968:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 16, "name": "_merkleTreeHeight", "nodeType": "VariableDeclaration", - "scope": 30, - "src": "936:24:0", + "scope": 41, + "src": "995:24:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -849,10 +1034,10 @@ "typeString": "uint32" }, "typeName": { - "id": 11, + "id": 15, "name": "uint32", "nodeType": "ElementaryTypeName", - "src": "936:6:0", + "src": "995:6:0", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -863,11 +1048,11 @@ }, { "constant": false, - "id": 14, + "id": 18, "name": "_operator", "nodeType": "VariableDeclaration", - "scope": 30, - "src": "966:17:0", + "scope": 41, + "src": "1025:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -875,10 +1060,10 @@ "typeString": "address" }, "typeName": { - "id": 13, + "id": 17, "name": "address", "nodeType": "ElementaryTypeName", - "src": "966:7:0", + "src": "1025:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -890,11 +1075,11 @@ }, { "constant": false, - "id": 16, + "id": 20, "name": "_token", "nodeType": "VariableDeclaration", - "scope": 30, - "src": "989:14:0", + "scope": 41, + "src": "1048:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -902,10 +1087,10 @@ "typeString": "address" }, "typeName": { - "id": 15, + "id": 19, "name": "address", "nodeType": "ElementaryTypeName", - "src": "989:7:0", + "src": "1048:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -916,25 +1101,25 @@ "visibility": "internal" } ], - "src": "878:129:0" + "src": "908:158:0" }, "returnParameters": { - "id": 24, + "id": 29, "nodeType": "ParameterList", "parameters": [], - "src": "1079:0:0" + "src": "1151:0:0" }, - "scope": 227, - "src": "867:237:0", + "scope": 266, + "src": "897:334:0", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 50, + "id": 61, "nodeType": "Block", - "src": "1144:155:0", + "src": "1271:155:0", "statements": [ { "expression": { @@ -946,7 +1131,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 37, + "id": 48, "isConstant": false, "isLValue": false, "isPure": false, @@ -955,18 +1140,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 34, + "id": 45, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3260, - "src": "1158:3:0", + "referencedDeclaration": 1015, + "src": "1285:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 35, + "id": 46, "isConstant": false, "isLValue": false, "isPure": false, @@ -974,7 +1159,7 @@ "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1158:9:0", + "src": "1285:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -985,14 +1170,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 36, + "id": 47, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1171:1:0", + "src": "1298:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1000,7 +1185,7 @@ }, "value": "0" }, - "src": "1158:14:0", + "src": "1285:14:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1009,14 +1194,14 @@ { "argumentTypes": null, "hexValue": "4554482076616c756520697320737570706f73656420746f206265203020666f7220455243323020696e7374616e6365", - "id": 38, + "id": 49, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1174:50:0", + "src": "1301:50:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_b14b0818f1fdc710b92ba7e1ce725992b43e47a5b220b1b890f352eeac2e1d5e", @@ -1036,21 +1221,21 @@ "typeString": "literal_string \"ETH value is supposed to be 0 for ERC20 instance\"" } ], - "id": 33, + "id": 44, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 3263, - 3264 + 1018, + 1019 ], - "referencedDeclaration": 3264, - "src": "1150:7:0", + "referencedDeclaration": 1019, + "src": "1277:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 39, + "id": 50, "isConstant": false, "isLValue": false, "isPure": false, @@ -1058,15 +1243,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1150:75:0", + "src": "1277:75:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 40, + "id": 51, "nodeType": "ExpressionStatement", - "src": "1150:75:0" + "src": "1277:75:0" }, { "expression": { @@ -1076,18 +1261,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 42, + "id": 53, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3260, - "src": "1254:3:0", + "referencedDeclaration": 1015, + "src": "1381:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 43, + "id": 54, "isConstant": false, "isLValue": false, "isPure": false, @@ -1095,7 +1280,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1254:10:0", + "src": "1381:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -1106,14 +1291,14 @@ "arguments": [ { "argumentTypes": null, - "id": 45, + "id": 56, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3284, - "src": "1274:4:0", + "referencedDeclaration": 1041, + "src": "1401:4:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Tornado_$227", + "typeIdentifier": "t_contract$_ERC20Tornado_$266", "typeString": "contract ERC20Tornado" } } @@ -1121,24 +1306,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ERC20Tornado_$227", + "typeIdentifier": "t_contract$_ERC20Tornado_$266", "typeString": "contract ERC20Tornado" } ], - "id": 44, + "id": 55, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1266:7:0", + "src": "1393:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 46, + "id": 57, "isConstant": false, "isLValue": false, "isPure": false, @@ -1146,7 +1331,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1266:13:0", + "src": "1393:13:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1154,12 +1339,12 @@ }, { "argumentTypes": null, - "id": 47, + "id": 58, "name": "denomination", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 897, - "src": "1281:12:0", + "referencedDeclaration": 660, + "src": "1408:12:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1181,18 +1366,18 @@ "typeString": "uint256" } ], - "id": 41, + "id": 52, "name": "_safeErc20TransferFrom", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 171, - "src": "1231:22:0", + "referencedDeclaration": 210, + "src": "1358:22:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, - "id": 48, + "id": 59, "isConstant": false, "isLValue": false, "isPure": false, @@ -1200,48 +1385,48 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1231:63:0", + "src": "1358:63:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 49, + "id": 60, "nodeType": "ExpressionStatement", - "src": "1231:63:0" + "src": "1358:63:0" } ] }, "documentation": null, - "id": 51, + "id": 62, "implemented": true, "kind": "function", "modifiers": [], "name": "_processDeposit", "nodeType": "FunctionDefinition", "parameters": { - "id": 31, + "id": 42, "nodeType": "ParameterList", "parameters": [], - "src": "1132:2:0" + "src": "1259:2:0" }, "returnParameters": { - "id": 32, + "id": 43, "nodeType": "ParameterList", "parameters": [], - "src": "1144:0:0" + "src": "1271:0:0" }, - "scope": 227, - "src": "1108:191:0", + "scope": 266, + "src": "1235:191:0", "stateMutability": "nonpayable", - "superFunction": 1014, + "superFunction": 785, "visibility": "internal" }, { "body": { - "id": 112, + "id": 151, "nodeType": "Block", - "src": "1423:427:0", + "src": "1574:657:0", "statements": [ { "expression": { @@ -1253,7 +1438,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 66, + "id": 79, "isConstant": false, "isLValue": false, "isPure": false, @@ -1262,18 +1447,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 63, + "id": 76, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3260, - "src": "1437:3:0", + "referencedDeclaration": 1015, + "src": "1588:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 64, + "id": 77, "isConstant": false, "isLValue": false, "isPure": false, @@ -1281,7 +1466,7 @@ "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1437:9:0", + "src": "1588:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1291,18 +1476,18 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 65, + "id": 78, "name": "_refund", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 59, - "src": "1450:7:0", + "referencedDeclaration": 70, + "src": "1601:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1437:20:0", + "src": "1588:20:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1311,14 +1496,14 @@ { "argumentTypes": null, "hexValue": "496e636f727265637420726566756e6420616d6f756e742072656365697665642062792074686520636f6e7472616374", - "id": 67, + "id": 80, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1459:50:0", + "src": "1610:50:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_3189ced290ffd29dc422911cd3b29574f21c524c91f4b41e6abb0646c581cbff", @@ -1338,21 +1523,21 @@ "typeString": "literal_string \"Incorrect refund amount received by the contract\"" } ], - "id": 62, + "id": 75, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 3263, - 3264 + 1018, + 1019 ], - "referencedDeclaration": 3264, - "src": "1429:7:0", + "referencedDeclaration": 1019, + "src": "1580:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 68, + "id": 81, "isConstant": false, "isLValue": false, "isPure": false, @@ -1360,178 +1545,158 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1429:81:0", + "src": "1580:81:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69, + "id": 82, "nodeType": "ExpressionStatement", - "src": "1429:81:0" + "src": "1580:81:0" }, { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 71, - "name": "_recipient", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 53, - "src": "1536:10:0", + "assignments": [ + 84 + ], + "declarations": [ + { + "constant": false, + "id": 84, + "name": "feeOn", + "nodeType": "VariableDeclaration", + "scope": 151, + "src": "1668:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 83, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1668:4:0", "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 74, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 72, - "name": "denomination", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 897, - "src": "1548:12:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 73, - "name": "_fee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 57, - "src": "1563:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1548:19:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 70, - "name": "_safeErc20Transfer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 226, - "src": "1517:18:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,uint256)" - } - }, - "id": 75, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1517:51:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + "value": null, + "visibility": "internal" } - }, - "id": 76, - "nodeType": "ExpressionStatement", - "src": "1517:51:0" - }, - { - "condition": { + ], + "id": 90, + "initialValue": { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" }, - "id": 79, + "id": 89, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 77, - "name": "_fee", + "id": 85, + "name": "_feeTo", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 57, - "src": "1578:4:0", + "referencedDeclaration": 72, + "src": "1681:6:0", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, "nodeType": "BinaryOperation", - "operator": ">", + "operator": "!=", "rightExpression": { "argumentTypes": null, - "hexValue": "30", - "id": 78, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 87, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1699:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 86, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1691:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 88, "isConstant": false, "isLValue": false, "isPure": true, - "kind": "number", + "kind": "typeConversion", "lValueRequested": false, - "nodeType": "Literal", - "src": "1585:1:0", - "subdenomination": null, + "names": [], + "nodeType": "FunctionCall", + "src": "1691:10:0", "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } }, - "src": "1578:8:0", + "src": "1681:20:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "falseBody": null, - "id": 86, - "nodeType": "IfStatement", - "src": "1574:63:0", - "trueBody": { - "id": 85, + "nodeType": "VariableDeclarationStatement", + "src": "1668:33:0" + }, + { + "condition": { + "argumentTypes": null, + "id": 91, + "name": "feeOn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 84, + "src": "1711:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 114, "nodeType": "Block", - "src": "1588:49:0", + "src": "1859:74:0", "statements": [ { "expression": { @@ -1539,12 +1704,12 @@ "arguments": [ { "argumentTypes": null, - "id": 81, - "name": "_relayer", + "id": 108, + "name": "_recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 55, - "src": "1615:8:0", + "referencedDeclaration": 64, + "src": "1886:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -1552,12 +1717,44 @@ }, { "argumentTypes": null, - "id": 82, - "name": "_fee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 57, - "src": "1625:4:0", + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 111, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 109, + "name": "denomination", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 660, + "src": "1898:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 110, + "name": "_relayer_fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 68, + "src": "1913:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1898:27:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1575,18 +1772,18 @@ "typeString": "uint256" } ], - "id": 80, + "id": 107, "name": "_safeErc20Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 226, - "src": "1596:18:0", + "referencedDeclaration": 265, + "src": "1867:18:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, - "id": 83, + "id": 112, "isConstant": false, "isLValue": false, "isPure": false, @@ -1594,15 +1791,231 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1596:34:0", + "src": "1867:59:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 84, + "id": 113, "nodeType": "ExpressionStatement", - "src": "1596:34:0" + "src": "1867:59:0" + } + ] + }, + "id": 115, + "nodeType": "IfStatement", + "src": "1707:226:0", + "trueBody": { + "id": 106, + "nodeType": "Block", + "src": "1718:135:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 93, + "name": "_recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64, + "src": "1745:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 98, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 96, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 94, + "name": "denomination", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 660, + "src": "1757:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 95, + "name": "_relayer_fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 68, + "src": "1772:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1757:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 97, + "name": "protocolFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8, + "src": "1787:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1757:41:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 92, + "name": "_safeErc20Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 265, + "src": "1726:18:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 99, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1726:73:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 100, + "nodeType": "ExpressionStatement", + "src": "1726:73:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 102, + "name": "_feeTo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 72, + "src": "1826:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 103, + "name": "protocolFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8, + "src": "1834:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 101, + "name": "_safeErc20Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 265, + "src": "1807:18:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 104, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1807:39:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 105, + "nodeType": "ExpressionStatement", + "src": "1807:39:0" } ] } @@ -1614,19 +2027,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 89, + "id": 118, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 87, - "name": "_refund", + "id": 116, + "name": "_relayer_fee", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 59, - "src": "1647:7:0", + "referencedDeclaration": 68, + "src": "1943:12:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1637,14 +2050,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 88, + "id": 117, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1657:1:0", + "src": "1958:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1652,34 +2065,168 @@ }, "value": "0" }, - "src": "1647:11:0", + "src": "1943:16:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 111, + "id": 125, "nodeType": "IfStatement", - "src": "1643:203:0", + "src": "1939:79:0", "trueBody": { - "id": 110, + "id": 124, "nodeType": "Block", - "src": "1660:186:0", + "src": "1961:57:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 120, + "name": "_relayer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66, + "src": "1988:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 121, + "name": "_relayer_fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 68, + "src": "1998:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 119, + "name": "_safeErc20Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 265, + "src": "1969:18:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 122, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1969:42:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 123, + "nodeType": "ExpressionStatement", + "src": "1969:42:0" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 128, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 126, + "name": "_refund", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 70, + "src": "2028:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 127, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2038:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2028:11:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 150, + "nodeType": "IfStatement", + "src": "2024:203:0", + "trueBody": { + "id": 149, + "nodeType": "Block", + "src": "2041:186:0", "statements": [ { "assignments": [ - 91, + 130, null ], "declarations": [ { "constant": false, - "id": 91, + "id": 130, "name": "success", "nodeType": "VariableDeclaration", - "scope": 110, - "src": "1669:12:0", + "scope": 149, + "src": "2050:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1687,10 +2234,10 @@ "typeString": "bool" }, "typeName": { - "id": 90, + "id": 129, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "1669:4:0", + "src": "2050:4:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1701,21 +2248,21 @@ }, null ], - "id": 99, + "id": 138, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "", - "id": 97, + "id": 136, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1718:2:0", + "src": "2099:2:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", @@ -1734,12 +2281,12 @@ "arguments": [ { "argumentTypes": null, - "id": 95, + "id": 134, "name": "_refund", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 59, - "src": "1709:7:0", + "referencedDeclaration": 70, + "src": "2090:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1757,18 +2304,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 92, + "id": 131, "name": "_recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 53, - "src": "1687:10:0", + "referencedDeclaration": 64, + "src": "2068:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, - "id": 93, + "id": 132, "isConstant": false, "isLValue": false, "isPure": false, @@ -1776,13 +2323,13 @@ "memberName": "call", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1687:15:0", + "src": "2068:15:0", "typeDescriptions": { "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory) payable returns (bool,bytes memory)" } }, - "id": 94, + "id": 133, "isConstant": false, "isLValue": false, "isPure": false, @@ -1790,13 +2337,13 @@ "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1687:21:0", + "src": "2068:21:0", "typeDescriptions": { "typeIdentifier": "t_function_setvalue_pure$_t_uint256_$returns$_t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value_$", "typeString": "function (uint256) pure returns (function (bytes memory) payable returns (bool,bytes memory))" } }, - "id": 96, + "id": 135, "isConstant": false, "isLValue": false, "isPure": false, @@ -1804,13 +2351,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1687:30:0", + "src": "2068:30:0", "typeDescriptions": { "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value", "typeString": "function (bytes memory) payable returns (bool,bytes memory)" } }, - "id": 98, + "id": 137, "isConstant": false, "isLValue": false, "isPure": false, @@ -1818,19 +2365,19 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1687:34:0", + "src": "2068:34:0", "typeDescriptions": { "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "tuple(bool,bytes memory)" } }, "nodeType": "VariableDeclarationStatement", - "src": "1668:53:0" + "src": "2049:53:0" }, { "condition": { "argumentTypes": null, - "id": 101, + "id": 140, "isConstant": false, "isLValue": false, "isPure": false, @@ -1838,15 +2385,15 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "1733:8:0", + "src": "2114:8:0", "subExpression": { "argumentTypes": null, - "id": 100, + "id": 139, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 91, - "src": "1734:7:0", + "referencedDeclaration": 130, + "src": "2115:7:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1858,13 +2405,13 @@ } }, "falseBody": null, - "id": 109, + "id": 148, "nodeType": "IfStatement", - "src": "1729:111:0", + "src": "2110:111:0", "trueBody": { - "id": 108, + "id": 147, "nodeType": "Block", - "src": "1743:97:0", + "src": "2124:97:0", "statements": [ { "expression": { @@ -1872,12 +2419,12 @@ "arguments": [ { "argumentTypes": null, - "id": 105, + "id": 144, "name": "_refund", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 59, - "src": "1823:7:0", + "referencedDeclaration": 70, + "src": "2204:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1893,18 +2440,18 @@ ], "expression": { "argumentTypes": null, - "id": 102, + "id": 141, "name": "_relayer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 55, - "src": "1805:8:0", + "referencedDeclaration": 66, + "src": "2186:8:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, - "id": 104, + "id": 143, "isConstant": false, "isLValue": false, "isPure": false, @@ -1912,13 +2459,13 @@ "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1805:17:0", + "src": "2186:17:0", "typeDescriptions": { "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)" } }, - "id": 106, + "id": 145, "isConstant": false, "isLValue": false, "isPure": false, @@ -1926,15 +2473,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1805:26:0", + "src": "2186:26:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 107, + "id": 146, "nodeType": "ExpressionStatement", - "src": "1805:26:0" + "src": "2186:26:0" } ] } @@ -1945,23 +2492,23 @@ ] }, "documentation": null, - "id": 113, + "id": 152, "implemented": true, "kind": "function", "modifiers": [], "name": "_processWithdraw", "nodeType": "FunctionDefinition", "parameters": { - "id": 60, + "id": 73, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 53, + "id": 64, "name": "_recipient", "nodeType": "VariableDeclaration", - "scope": 113, - "src": "1329:26:0", + "scope": 152, + "src": "1456:26:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1969,10 +2516,10 @@ "typeString": "address payable" }, "typeName": { - "id": 52, + "id": 63, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1329:15:0", + "src": "1456:15:0", "stateMutability": "payable", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -1984,11 +2531,11 @@ }, { "constant": false, - "id": 55, + "id": 66, "name": "_relayer", "nodeType": "VariableDeclaration", - "scope": 113, - "src": "1357:24:0", + "scope": 152, + "src": "1484:24:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1996,10 +2543,10 @@ "typeString": "address payable" }, "typeName": { - "id": 54, + "id": 65, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1357:15:0", + "src": "1484:15:0", "stateMutability": "payable", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -2011,11 +2558,11 @@ }, { "constant": false, - "id": 57, - "name": "_fee", + "id": 68, + "name": "_relayer_fee", "nodeType": "VariableDeclaration", - "scope": 113, - "src": "1383:12:0", + "scope": 152, + "src": "1510:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2023,10 +2570,10 @@ "typeString": "uint256" }, "typeName": { - "id": 56, + "id": 67, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1383:7:0", + "src": "1510:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2037,11 +2584,11 @@ }, { "constant": false, - "id": 59, + "id": 70, "name": "_refund", "nodeType": "VariableDeclaration", - "scope": 113, - "src": "1397:15:0", + "scope": 152, + "src": "1532:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2049,10 +2596,10 @@ "typeString": "uint256" }, "typeName": { - "id": 58, + "id": 69, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1397:7:0", + "src": "1532:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2060,41 +2607,68 @@ }, "value": null, "visibility": "internal" + }, + { + "constant": false, + "id": 72, + "name": "_feeTo", + "nodeType": "VariableDeclaration", + "scope": 152, + "src": "1549:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 71, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1549:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" } ], - "src": "1328:85:0" + "src": "1455:109:0" }, "returnParameters": { - "id": 61, + "id": 74, "nodeType": "ParameterList", "parameters": [], - "src": "1423:0:0" + "src": "1574:0:0" }, - "scope": 227, - "src": "1303:547:0", + "scope": 266, + "src": "1430:801:0", "stateMutability": "nonpayable", - "superFunction": 1110, + "superFunction": 886, "visibility": "internal" }, { "body": { - "id": 170, + "id": 209, "nodeType": "Block", - "src": "1940:504:0", + "src": "2321:504:0", "statements": [ { "assignments": [ - 123, - 125 + 162, + 164 ], "declarations": [ { "constant": false, - "id": 123, + "id": 162, "name": "success", "nodeType": "VariableDeclaration", - "scope": 170, - "src": "1947:12:0", + "scope": 209, + "src": "2328:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2102,10 +2676,10 @@ "typeString": "bool" }, "typeName": { - "id": 122, + "id": 161, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "1947:4:0", + "src": "2328:4:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2116,11 +2690,11 @@ }, { "constant": false, - "id": 125, + "id": 164, "name": "data", "nodeType": "VariableDeclaration", - "scope": 170, - "src": "1961:17:0", + "scope": 209, + "src": "2342:17:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -2128,10 +2702,10 @@ "typeString": "bytes" }, "typeName": { - "id": 124, + "id": 163, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "1961:5:0", + "src": "2342:5:0", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -2141,7 +2715,7 @@ "visibility": "internal" } ], - "id": 136, + "id": 175, "initialValue": { "argumentTypes": null, "arguments": [ @@ -2151,14 +2725,14 @@ { "argumentTypes": null, "hexValue": "30783233623837326464", - "id": 130, + "id": 169, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2016:10:0", + "src": "2397:10:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_599290589_by_1", @@ -2168,12 +2742,12 @@ }, { "argumentTypes": null, - "id": 131, + "id": 170, "name": "_from", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 115, - "src": "2047:5:0", + "referencedDeclaration": 154, + "src": "2428:5:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2181,12 +2755,12 @@ }, { "argumentTypes": null, - "id": 132, + "id": 171, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 117, - "src": "2054:3:0", + "referencedDeclaration": 156, + "src": "2435:3:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2194,12 +2768,12 @@ }, { "argumentTypes": null, - "id": 133, + "id": 172, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 119, - "src": "2059:7:0", + "referencedDeclaration": 158, + "src": "2440:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2227,18 +2801,18 @@ ], "expression": { "argumentTypes": null, - "id": 128, + "id": 167, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3247, - "src": "1993:3:0", + "referencedDeclaration": 1002, + "src": "2374:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 129, + "id": 168, "isConstant": false, "isLValue": false, "isPure": true, @@ -2246,13 +2820,13 @@ "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1993:22:0", + "src": "2374:22:0", "typeDescriptions": { "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)" } }, - "id": 134, + "id": 173, "isConstant": false, "isLValue": false, "isPure": false, @@ -2260,7 +2834,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1993:74:0", + "src": "2374:74:0", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -2276,18 +2850,18 @@ ], "expression": { "argumentTypes": null, - "id": 126, + "id": 165, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6, - "src": "1982:5:0", + "src": "2363:5:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 127, + "id": 166, "isConstant": false, "isLValue": false, "isPure": false, @@ -2295,13 +2869,13 @@ "memberName": "call", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1982:10:0", + "src": "2363:10:0", "typeDescriptions": { "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory) payable returns (bool,bytes memory)" } }, - "id": 135, + "id": 174, "isConstant": false, "isLValue": false, "isPure": false, @@ -2309,14 +2883,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1982:86:0", + "src": "2363:86:0", "typeDescriptions": { "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "tuple(bool,bytes memory)" } }, "nodeType": "VariableDeclarationStatement", - "src": "1946:122:0" + "src": "2327:122:0" }, { "expression": { @@ -2324,12 +2898,12 @@ "arguments": [ { "argumentTypes": null, - "id": 138, + "id": 177, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2082:7:0", + "referencedDeclaration": 162, + "src": "2463:7:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2338,14 +2912,14 @@ { "argumentTypes": null, "hexValue": "6e6f7420656e6f75676820616c6c6f77656420746f6b656e73", - "id": 139, + "id": 178, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2091:27:0", + "src": "2472:27:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_b31c8a8545ea674c554dd2f6bad7d7bd1dfe923a25150b76350dc6970bf3ff5c", @@ -2365,21 +2939,21 @@ "typeString": "literal_string \"not enough allowed tokens\"" } ], - "id": 137, + "id": 176, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 3263, - 3264 + 1018, + 1019 ], - "referencedDeclaration": 3264, - "src": "2074:7:0", + "referencedDeclaration": 1019, + "src": "2455:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 140, + "id": 179, "isConstant": false, "isLValue": false, "isPure": false, @@ -2387,15 +2961,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2074:45:0", + "src": "2455:45:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 141, + "id": 180, "nodeType": "ExpressionStatement", - "src": "2074:45:0" + "src": "2455:45:0" }, { "condition": { @@ -2404,7 +2978,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 145, + "id": 184, "isConstant": false, "isLValue": false, "isPure": false, @@ -2413,18 +2987,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 142, + "id": 181, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 125, - "src": "2219:4:0", + "referencedDeclaration": 164, + "src": "2600:4:0", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 143, + "id": 182, "isConstant": false, "isLValue": false, "isPure": false, @@ -2432,7 +3006,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2219:11:0", + "src": "2600:11:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2443,14 +3017,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 144, + "id": 183, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2233:1:0", + "src": "2614:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2458,20 +3032,20 @@ }, "value": "0" }, - "src": "2219:15:0", + "src": "2600:15:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 169, + "id": 208, "nodeType": "IfStatement", - "src": "2215:225:0", + "src": "2596:225:0", "trueBody": { - "id": 168, + "id": 207, "nodeType": "Block", - "src": "2236:204:0", + "src": "2617:204:0", "statements": [ { "expression": { @@ -2483,7 +3057,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 150, + "id": 189, "isConstant": false, "isLValue": false, "isPure": false, @@ -2492,18 +3066,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 147, + "id": 186, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 125, - "src": "2252:4:0", + "referencedDeclaration": 164, + "src": "2633:4:0", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 148, + "id": 187, "isConstant": false, "isLValue": false, "isPure": false, @@ -2511,7 +3085,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2252:11:0", + "src": "2633:11:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2522,14 +3096,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "3332", - "id": 149, + "id": 188, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2267:2:0", + "src": "2648:2:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_32_by_1", @@ -2537,7 +3111,7 @@ }, "value": "32" }, - "src": "2252:17:0", + "src": "2633:17:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2546,14 +3120,14 @@ { "argumentTypes": null, "hexValue": "64617461206c656e6774682073686f756c64206265206569746865722030206f72203332206279746573", - "id": 151, + "id": 190, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2271:44:0", + "src": "2652:44:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_22b4652a1c8fbdfc6305c7ee289e87caf6a45e5ae327ee8f67eb64ba36d62560", @@ -2573,21 +3147,21 @@ "typeString": "literal_string \"data length should be either 0 or 32 bytes\"" } ], - "id": 146, + "id": 185, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 3263, - 3264 + 1018, + 1019 ], - "referencedDeclaration": 3264, - "src": "2244:7:0", + "referencedDeclaration": 1019, + "src": "2625:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 152, + "id": 191, "isConstant": false, "isLValue": false, "isPure": false, @@ -2595,32 +3169,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2244:72:0", + "src": "2625:72:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 153, + "id": 192, "nodeType": "ExpressionStatement", - "src": "2244:72:0" + "src": "2625:72:0" }, { "expression": { "argumentTypes": null, - "id": 161, + "id": 200, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 154, + "id": 193, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2324:7:0", + "referencedDeclaration": 162, + "src": "2705:7:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2633,12 +3207,12 @@ "arguments": [ { "argumentTypes": null, - "id": 157, + "id": 196, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 125, - "src": "2345:4:0", + "referencedDeclaration": 164, + "src": "2726:4:0", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -2649,13 +3223,13 @@ "components": [ { "argumentTypes": null, - "id": 158, + "id": 197, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2352:4:0", + "src": "2733:4:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_bool_$", "typeString": "type(bool)" @@ -2663,14 +3237,14 @@ "typeName": "bool" } ], - "id": 159, + "id": 198, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "2351:6:0", + "src": "2732:6:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_bool_$", "typeString": "type(bool)" @@ -2690,18 +3264,18 @@ ], "expression": { "argumentTypes": null, - "id": 155, + "id": 194, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3247, - "src": "2334:3:0", + "referencedDeclaration": 1002, + "src": "2715:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 156, + "id": 195, "isConstant": false, "isLValue": false, "isPure": true, @@ -2709,13 +3283,13 @@ "memberName": "decode", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2334:10:0", + "src": "2715:10:0", "typeDescriptions": { "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", "typeString": "function () pure" } }, - "id": 160, + "id": 199, "isConstant": false, "isLValue": false, "isPure": false, @@ -2723,21 +3297,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2334:24:0", + "src": "2715:24:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "2324:34:0", + "src": "2705:34:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 162, + "id": 201, "nodeType": "ExpressionStatement", - "src": "2324:34:0" + "src": "2705:34:0" }, { "expression": { @@ -2745,12 +3319,12 @@ "arguments": [ { "argumentTypes": null, - "id": 164, + "id": 203, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2374:7:0", + "referencedDeclaration": 162, + "src": "2755:7:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2759,14 +3333,14 @@ { "argumentTypes": null, "hexValue": "6e6f7420656e6f75676820616c6c6f77656420746f6b656e732e20546f6b656e2072657475726e732066616c73652e", - "id": 165, + "id": 204, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2383:49:0", + "src": "2764:49:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_6cfae212a217874b58247660ff4d75d72aa825e8f2120480a7da09cf7efa221d", @@ -2786,21 +3360,21 @@ "typeString": "literal_string \"not enough allowed tokens. Token returns false.\"" } ], - "id": 163, + "id": 202, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 3263, - 3264 + 1018, + 1019 ], - "referencedDeclaration": 3264, - "src": "2366:7:0", + "referencedDeclaration": 1019, + "src": "2747:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 166, + "id": 205, "isConstant": false, "isLValue": false, "isPure": false, @@ -2808,15 +3382,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2366:67:0", + "src": "2747:67:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 167, + "id": 206, "nodeType": "ExpressionStatement", - "src": "2366:67:0" + "src": "2747:67:0" } ] } @@ -2824,23 +3398,23 @@ ] }, "documentation": null, - "id": 171, + "id": 210, "implemented": true, "kind": "function", "modifiers": [], "name": "_safeErc20TransferFrom", "nodeType": "FunctionDefinition", "parameters": { - "id": 120, + "id": 159, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 115, + "id": 154, "name": "_from", "nodeType": "VariableDeclaration", - "scope": 171, - "src": "1886:13:0", + "scope": 210, + "src": "2267:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2848,10 +3422,10 @@ "typeString": "address" }, "typeName": { - "id": 114, + "id": 153, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1886:7:0", + "src": "2267:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2863,11 +3437,11 @@ }, { "constant": false, - "id": 117, + "id": 156, "name": "_to", "nodeType": "VariableDeclaration", - "scope": 171, - "src": "1901:11:0", + "scope": 210, + "src": "2282:11:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2875,10 +3449,10 @@ "typeString": "address" }, "typeName": { - "id": 116, + "id": 155, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1901:7:0", + "src": "2282:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2890,11 +3464,11 @@ }, { "constant": false, - "id": 119, + "id": 158, "name": "_amount", "nodeType": "VariableDeclaration", - "scope": 171, - "src": "1914:15:0", + "scope": 210, + "src": "2295:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2902,10 +3476,10 @@ "typeString": "uint256" }, "typeName": { - "id": 118, + "id": 157, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1914:7:0", + "src": "2295:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2915,39 +3489,39 @@ "visibility": "internal" } ], - "src": "1885:45:0" + "src": "2266:45:0" }, "returnParameters": { - "id": 121, + "id": 160, "nodeType": "ParameterList", "parameters": [], - "src": "1940:0:0" + "src": "2321:0:0" }, - "scope": 227, - "src": "1854:590:0", + "scope": 266, + "src": "2235:590:0", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 225, + "id": 264, "nodeType": "Block", - "src": "2515:477:0", + "src": "2896:477:0", "statements": [ { "assignments": [ - 179, - 181 + 218, + 220 ], "declarations": [ { "constant": false, - "id": 179, + "id": 218, "name": "success", "nodeType": "VariableDeclaration", - "scope": 225, - "src": "2522:12:0", + "scope": 264, + "src": "2903:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2955,10 +3529,10 @@ "typeString": "bool" }, "typeName": { - "id": 178, + "id": 217, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "2522:4:0", + "src": "2903:4:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2969,11 +3543,11 @@ }, { "constant": false, - "id": 181, + "id": 220, "name": "data", "nodeType": "VariableDeclaration", - "scope": 225, - "src": "2536:17:0", + "scope": 264, + "src": "2917:17:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -2981,10 +3555,10 @@ "typeString": "bytes" }, "typeName": { - "id": 180, + "id": 219, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2536:5:0", + "src": "2917:5:0", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -2994,7 +3568,7 @@ "visibility": "internal" } ], - "id": 191, + "id": 230, "initialValue": { "argumentTypes": null, "arguments": [ @@ -3004,14 +3578,14 @@ { "argumentTypes": null, "hexValue": "30786139303539636262", - "id": 186, + "id": 225, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2591:10:0", + "src": "2972:10:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2835717307_by_1", @@ -3021,12 +3595,12 @@ }, { "argumentTypes": null, - "id": 187, + "id": 226, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 173, - "src": "2618:3:0", + "referencedDeclaration": 212, + "src": "2999:3:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3034,12 +3608,12 @@ }, { "argumentTypes": null, - "id": 188, + "id": 227, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 175, - "src": "2623:7:0", + "referencedDeclaration": 214, + "src": "3004:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3063,18 +3637,18 @@ ], "expression": { "argumentTypes": null, - "id": 184, + "id": 223, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3247, - "src": "2568:3:0", + "referencedDeclaration": 1002, + "src": "2949:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 185, + "id": 224, "isConstant": false, "isLValue": false, "isPure": true, @@ -3082,13 +3656,13 @@ "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2568:22:0", + "src": "2949:22:0", "typeDescriptions": { "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)" } }, - "id": 189, + "id": 228, "isConstant": false, "isLValue": false, "isPure": false, @@ -3096,7 +3670,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2568:63:0", + "src": "2949:63:0", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -3112,18 +3686,18 @@ ], "expression": { "argumentTypes": null, - "id": 182, + "id": 221, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6, - "src": "2557:5:0", + "src": "2938:5:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 183, + "id": 222, "isConstant": false, "isLValue": false, "isPure": false, @@ -3131,13 +3705,13 @@ "memberName": "call", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2557:10:0", + "src": "2938:10:0", "typeDescriptions": { "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory) payable returns (bool,bytes memory)" } }, - "id": 190, + "id": 229, "isConstant": false, "isLValue": false, "isPure": false, @@ -3145,14 +3719,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2557:75:0", + "src": "2938:75:0", "typeDescriptions": { "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "tuple(bool,bytes memory)" } }, "nodeType": "VariableDeclarationStatement", - "src": "2521:111:0" + "src": "2902:111:0" }, { "expression": { @@ -3160,12 +3734,12 @@ "arguments": [ { "argumentTypes": null, - "id": 193, + "id": 232, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 179, - "src": "2646:7:0", + "referencedDeclaration": 218, + "src": "3027:7:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3174,14 +3748,14 @@ { "argumentTypes": null, "hexValue": "6e6f7420656e6f75676820746f6b656e73", - "id": 194, + "id": 233, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2655:19:0", + "src": "3036:19:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_73949bcdc07934e9395e82489bb22c4742e057960a2c090d38e53d68d3caf52a", @@ -3201,21 +3775,21 @@ "typeString": "literal_string \"not enough tokens\"" } ], - "id": 192, + "id": 231, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 3263, - 3264 + 1018, + 1019 ], - "referencedDeclaration": 3264, - "src": "2638:7:0", + "referencedDeclaration": 1019, + "src": "3019:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 195, + "id": 234, "isConstant": false, "isLValue": false, "isPure": false, @@ -3223,15 +3797,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2638:37:0", + "src": "3019:37:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 196, + "id": 235, "nodeType": "ExpressionStatement", - "src": "2638:37:0" + "src": "3019:37:0" }, { "condition": { @@ -3240,7 +3814,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 200, + "id": 239, "isConstant": false, "isLValue": false, "isPure": false, @@ -3249,18 +3823,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 197, + "id": 236, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 181, - "src": "2775:4:0", + "referencedDeclaration": 220, + "src": "3156:4:0", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 198, + "id": 237, "isConstant": false, "isLValue": false, "isPure": false, @@ -3268,7 +3842,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2775:11:0", + "src": "3156:11:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3279,14 +3853,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 199, + "id": 238, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2789:1:0", + "src": "3170:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3294,20 +3868,20 @@ }, "value": "0" }, - "src": "2775:15:0", + "src": "3156:15:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 224, + "id": 263, "nodeType": "IfStatement", - "src": "2771:217:0", + "src": "3152:217:0", "trueBody": { - "id": 223, + "id": 262, "nodeType": "Block", - "src": "2792:196:0", + "src": "3173:196:0", "statements": [ { "expression": { @@ -3319,7 +3893,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 205, + "id": 244, "isConstant": false, "isLValue": false, "isPure": false, @@ -3328,18 +3902,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 202, + "id": 241, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 181, - "src": "2808:4:0", + "referencedDeclaration": 220, + "src": "3189:4:0", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 203, + "id": 242, "isConstant": false, "isLValue": false, "isPure": false, @@ -3347,7 +3921,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2808:11:0", + "src": "3189:11:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3358,14 +3932,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "3332", - "id": 204, + "id": 243, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2823:2:0", + "src": "3204:2:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_32_by_1", @@ -3373,7 +3947,7 @@ }, "value": "32" }, - "src": "2808:17:0", + "src": "3189:17:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3382,14 +3956,14 @@ { "argumentTypes": null, "hexValue": "64617461206c656e6774682073686f756c64206265206569746865722030206f72203332206279746573", - "id": 206, + "id": 245, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2827:44:0", + "src": "3208:44:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_22b4652a1c8fbdfc6305c7ee289e87caf6a45e5ae327ee8f67eb64ba36d62560", @@ -3409,21 +3983,21 @@ "typeString": "literal_string \"data length should be either 0 or 32 bytes\"" } ], - "id": 201, + "id": 240, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 3263, - 3264 + 1018, + 1019 ], - "referencedDeclaration": 3264, - "src": "2800:7:0", + "referencedDeclaration": 1019, + "src": "3181:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 207, + "id": 246, "isConstant": false, "isLValue": false, "isPure": false, @@ -3431,32 +4005,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2800:72:0", + "src": "3181:72:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 208, + "id": 247, "nodeType": "ExpressionStatement", - "src": "2800:72:0" + "src": "3181:72:0" }, { "expression": { "argumentTypes": null, - "id": 216, + "id": 255, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 209, + "id": 248, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 179, - "src": "2880:7:0", + "referencedDeclaration": 218, + "src": "3261:7:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3469,12 +4043,12 @@ "arguments": [ { "argumentTypes": null, - "id": 212, + "id": 251, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 181, - "src": "2901:4:0", + "referencedDeclaration": 220, + "src": "3282:4:0", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -3485,13 +4059,13 @@ "components": [ { "argumentTypes": null, - "id": 213, + "id": 252, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2908:4:0", + "src": "3289:4:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_bool_$", "typeString": "type(bool)" @@ -3499,14 +4073,14 @@ "typeName": "bool" } ], - "id": 214, + "id": 253, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "2907:6:0", + "src": "3288:6:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_bool_$", "typeString": "type(bool)" @@ -3526,18 +4100,18 @@ ], "expression": { "argumentTypes": null, - "id": 210, + "id": 249, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3247, - "src": "2890:3:0", + "referencedDeclaration": 1002, + "src": "3271:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 211, + "id": 250, "isConstant": false, "isLValue": false, "isPure": true, @@ -3545,13 +4119,13 @@ "memberName": "decode", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2890:10:0", + "src": "3271:10:0", "typeDescriptions": { "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", "typeString": "function () pure" } }, - "id": 215, + "id": 254, "isConstant": false, "isLValue": false, "isPure": false, @@ -3559,21 +4133,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2890:24:0", + "src": "3271:24:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "2880:34:0", + "src": "3261:34:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 217, + "id": 256, "nodeType": "ExpressionStatement", - "src": "2880:34:0" + "src": "3261:34:0" }, { "expression": { @@ -3581,12 +4155,12 @@ "arguments": [ { "argumentTypes": null, - "id": 219, + "id": 258, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 179, - "src": "2930:7:0", + "referencedDeclaration": 218, + "src": "3311:7:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3595,14 +4169,14 @@ { "argumentTypes": null, "hexValue": "6e6f7420656e6f75676820746f6b656e732e20546f6b656e2072657475726e732066616c73652e", - "id": 220, + "id": 259, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2939:41:0", + "src": "3320:41:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_38fa5aabf87e9f42de902eb4d9022484dde7943d80702b79ba468e9fc08f5e5e", @@ -3622,21 +4196,21 @@ "typeString": "literal_string \"not enough tokens. Token returns false.\"" } ], - "id": 218, + "id": 257, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 3263, - 3264 + 1018, + 1019 ], - "referencedDeclaration": 3264, - "src": "2922:7:0", + "referencedDeclaration": 1019, + "src": "3303:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 221, + "id": 260, "isConstant": false, "isLValue": false, "isPure": false, @@ -3644,15 +4218,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2922:59:0", + "src": "3303:59:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 222, + "id": 261, "nodeType": "ExpressionStatement", - "src": "2922:59:0" + "src": "3303:59:0" } ] } @@ -3660,23 +4234,23 @@ ] }, "documentation": null, - "id": 226, + "id": 265, "implemented": true, "kind": "function", "modifiers": [], "name": "_safeErc20Transfer", "nodeType": "FunctionDefinition", "parameters": { - "id": 176, + "id": 215, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 173, + "id": 212, "name": "_to", "nodeType": "VariableDeclaration", - "scope": 226, - "src": "2476:11:0", + "scope": 265, + "src": "2857:11:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3684,10 +4258,10 @@ "typeString": "address" }, "typeName": { - "id": 172, + "id": 211, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2476:7:0", + "src": "2857:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3699,11 +4273,11 @@ }, { "constant": false, - "id": 175, + "id": 214, "name": "_amount", "nodeType": "VariableDeclaration", - "scope": 226, - "src": "2489:15:0", + "scope": 265, + "src": "2870:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3711,10 +4285,10 @@ "typeString": "uint256" }, "typeName": { - "id": 174, + "id": 213, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2489:7:0", + "src": "2870:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3724,33 +4298,33 @@ "visibility": "internal" } ], - "src": "2475:30:0" + "src": "2856:30:0" }, "returnParameters": { - "id": 177, + "id": 216, "nodeType": "ParameterList", "parameters": [], - "src": "2515:0:0" + "src": "2896:0:0" }, - "scope": 227, - "src": "2448:544:0", + "scope": 266, + "src": "2829:544:0", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 228, - "src": "805:2189:0" + "scope": 267, + "src": "805:2570:0" } ], - "src": "755:2240:0" + "src": "755:2621:0" }, "legacyAST": { "attributes": { "absolutePath": "/Users/brianli/dotfiles/tornado-core/contracts/ERC20Tornado.sol", "exportedSymbols": { "ERC20Tornado": [ - 227 + 266 ] } }, @@ -3769,10 +4343,10 @@ }, { "attributes": { - "SourceUnit": 1195, + "SourceUnit": 971, "absolutePath": "/Users/brianli/dotfiles/tornado-core/contracts/Tornado.sol", "file": "./Tornado.sol", - "scope": 228, + "scope": 267, "symbolAliases": [ null ], @@ -3785,21 +4359,21 @@ { "attributes": { "contractDependencies": [ - 694, - 1194, - 3245 + 632, + 970, + 1000 ], "contractKind": "contract", "documentation": null, "fullyImplemented": true, "linearizedBaseContracts": [ - 227, - 1194, - 3245, - 694 + 266, + 970, + 1000, + 632 ], "name": "ERC20Tornado", - "scope": 228 + "scope": 267 }, "children": [ { @@ -3811,7 +4385,7 @@ "attributes": { "contractScope": null, "name": "Tornado", - "referencedDeclaration": 1194, + "referencedDeclaration": 970, "type": "contract Tornado" }, "id": 3, @@ -3827,7 +4401,7 @@ "attributes": { "constant": false, "name": "token", - "scope": 227, + "scope": 266, "stateVariable": true, "storageLocation": "default", "type": "address", @@ -3850,6 +4424,32 @@ "name": "VariableDeclaration", "src": "842:20:0" }, + { + "attributes": { + "constant": false, + "name": "protocolFee", + "scope": 266, + "stateVariable": true, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 7, + "name": "ElementaryTypeName", + "src": "866:7:0" + } + ], + "id": 8, + "name": "VariableDeclaration", + "src": "866:26:0" + }, { "attributes": { "documentation": null, @@ -3857,7 +4457,7 @@ "isConstructor": true, "kind": "constructor", "name": "", - "scope": 227, + "scope": 266, "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -3869,7 +4469,7 @@ "attributes": { "constant": false, "name": "_verifier", - "scope": 30, + "scope": 41, "stateVariable": false, "storageLocation": "default", "type": "contract IVerifier", @@ -3881,23 +4481,51 @@ "attributes": { "contractScope": null, "name": "IVerifier", - "referencedDeclaration": 891, + "referencedDeclaration": 648, "type": "contract IVerifier" }, - "id": 7, + "id": 9, "name": "UserDefinedTypeName", - "src": "884:9:0" + "src": "914:9:0" } ], - "id": 8, + "id": 10, "name": "VariableDeclaration", - "src": "884:19:0" + "src": "914:19:0" + }, + { + "attributes": { + "constant": false, + "name": "_feeManager", + "scope": 41, + "stateVariable": false, + "storageLocation": "default", + "type": "contract IFeeManager", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "IFeeManager", + "referencedDeclaration": 654, + "type": "contract IFeeManager" + }, + "id": 11, + "name": "UserDefinedTypeName", + "src": "939:11:0" + } + ], + "id": 12, + "name": "VariableDeclaration", + "src": "939:23:0" }, { "attributes": { "constant": false, "name": "_denomination", - "scope": 30, + "scope": 41, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -3910,20 +4538,20 @@ "name": "uint256", "type": "uint256" }, - "id": 9, + "id": 13, "name": "ElementaryTypeName", - "src": "909:7:0" + "src": "968:7:0" } ], - "id": 10, + "id": 14, "name": "VariableDeclaration", - "src": "909:21:0" + "src": "968:21:0" }, { "attributes": { "constant": false, "name": "_merkleTreeHeight", - "scope": 30, + "scope": 41, "stateVariable": false, "storageLocation": "default", "type": "uint32", @@ -3936,20 +4564,20 @@ "name": "uint32", "type": "uint32" }, - "id": 11, + "id": 15, "name": "ElementaryTypeName", - "src": "936:6:0" + "src": "995:6:0" } ], - "id": 12, + "id": 16, "name": "VariableDeclaration", - "src": "936:24:0" + "src": "995:24:0" }, { "attributes": { "constant": false, "name": "_operator", - "scope": 30, + "scope": 41, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -3963,20 +4591,20 @@ "stateMutability": "nonpayable", "type": "address" }, - "id": 13, + "id": 17, "name": "ElementaryTypeName", - "src": "966:7:0" + "src": "1025:7:0" } ], - "id": 14, + "id": 18, "name": "VariableDeclaration", - "src": "966:17:0" + "src": "1025:17:0" }, { "attributes": { "constant": false, "name": "_token", - "scope": 30, + "scope": 41, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -3990,19 +4618,19 @@ "stateMutability": "nonpayable", "type": "address" }, - "id": 15, + "id": 19, "name": "ElementaryTypeName", - "src": "989:7:0" + "src": "1048:7:0" } ], - "id": 16, + "id": 20, "name": "VariableDeclaration", - "src": "989:14:0" + "src": "1048:14:0" } ], - "id": 17, + "id": 21, "name": "ParameterList", - "src": "878:129:0" + "src": "908:158:0" }, { "attributes": { @@ -4011,9 +4639,9 @@ ] }, "children": [], - "id": 24, + "id": 29, "name": "ParameterList", - "src": "1079:0:0" + "src": "1151:0:0" }, { "children": [ @@ -4023,27 +4651,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1194, + "referencedDeclaration": 970, "type": "type(contract Tornado)", "value": "Tornado" }, - "id": 18, + "id": 22, "name": "Identifier", - "src": "1008:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 8, - "type": "contract IVerifier", - "value": "_verifier" - }, - "id": 19, - "name": "Identifier", - "src": "1016:9:0" + "src": "1067:7:0" }, { "attributes": { @@ -4052,12 +4666,12 @@ null ], "referencedDeclaration": 10, - "type": "uint256", - "value": "_denomination" + "type": "contract IVerifier", + "value": "_verifier" }, - "id": 20, + "id": 23, "name": "Identifier", - "src": "1027:13:0" + "src": "1075:9:0" }, { "attributes": { @@ -4066,12 +4680,12 @@ null ], "referencedDeclaration": 12, - "type": "uint32", - "value": "_merkleTreeHeight" + "type": "contract IFeeManager", + "value": "_feeManager" }, - "id": 21, + "id": 24, "name": "Identifier", - "src": "1042:17:0" + "src": "1086:11:0" }, { "attributes": { @@ -4080,17 +4694,45 @@ null ], "referencedDeclaration": 14, + "type": "uint256", + "value": "_denomination" + }, + "id": 25, + "name": "Identifier", + "src": "1099:13:0" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 16, + "type": "uint32", + "value": "_merkleTreeHeight" + }, + "id": 26, + "name": "Identifier", + "src": "1114:17:0" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 18, "type": "address", "value": "_operator" }, - "id": 22, + "id": 27, "name": "Identifier", - "src": "1061:9:0" + "src": "1133:9:0" } ], - "id": 23, + "id": 28, "name": "ModifierInvocation", - "src": "1008:63:0" + "src": "1067:76:0" }, { "children": [ @@ -4117,9 +4759,9 @@ "type": "address", "value": "token" }, - "id": 25, + "id": 30, "name": "Identifier", - "src": "1085:5:0" + "src": "1157:5:0" }, { "attributes": { @@ -4127,33 +4769,121 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 16, + "referencedDeclaration": 20, "type": "address", "value": "_token" }, - "id": 26, + "id": 31, "name": "Identifier", - "src": "1093:6:0" + "src": "1165:6:0" } ], - "id": 27, + "id": 32, "name": "Assignment", - "src": "1085:14:0" + "src": "1157:14:0" } ], - "id": 28, + "id": 33, "name": "ExpressionStatement", - "src": "1085:14:0" + "src": "1157:14:0" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 8, + "type": "uint256", + "value": "protocolFee" + }, + "id": 34, + "name": "Identifier", + "src": "1193:11:0" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "/", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 14, + "type": "uint256", + "value": "_denomination" + }, + "id": 35, + "name": "Identifier", + "src": "1207:13:0" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "323030", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 200", + "value": "200" + }, + "id": 36, + "name": "Literal", + "src": "1223:3:0" + } + ], + "id": 37, + "name": "BinaryOperation", + "src": "1207:19:0" + } + ], + "id": 38, + "name": "Assignment", + "src": "1193:33:0" + } + ], + "id": 39, + "name": "ExpressionStatement", + "src": "1193:33:0" } ], - "id": 29, + "id": 40, "name": "Block", - "src": "1079:25:0" + "src": "1151:80:0" } ], - "id": 30, + "id": 41, "name": "FunctionDefinition", - "src": "867:237:0" + "src": "897:334:0" }, { "attributes": { @@ -4165,9 +4895,9 @@ null ], "name": "_processDeposit", - "scope": 227, + "scope": 266, "stateMutability": "nonpayable", - "superFunction": 1014, + "superFunction": 785, "visibility": "internal" }, "children": [ @@ -4178,9 +4908,9 @@ ] }, "children": [], - "id": 31, + "id": 42, "name": "ParameterList", - "src": "1132:2:0" + "src": "1259:2:0" }, { "attributes": { @@ -4189,9 +4919,9 @@ ] }, "children": [], - "id": 32, + "id": 43, "name": "ParameterList", - "src": "1144:0:0" + "src": "1271:0:0" }, { "children": [ @@ -4225,16 +4955,16 @@ } ], "overloadedDeclarations": [ - 3263, - 3264 + 1018, + 1019 ], - "referencedDeclaration": 3264, + "referencedDeclaration": 1019, "type": "function (bool,string memory) pure", "value": "require" }, - "id": 33, + "id": 44, "name": "Identifier", - "src": "1150:7:0" + "src": "1277:7:0" }, { "attributes": { @@ -4269,18 +4999,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 3260, + "referencedDeclaration": 1015, "type": "msg", "value": "msg" }, - "id": 34, + "id": 45, "name": "Identifier", - "src": "1158:3:0" + "src": "1285:3:0" } ], - "id": 35, + "id": 46, "name": "MemberAccess", - "src": "1158:9:0" + "src": "1285:9:0" }, { "attributes": { @@ -4295,14 +5025,14 @@ "type": "int_const 0", "value": "0" }, - "id": 36, + "id": 47, "name": "Literal", - "src": "1171:1:0" + "src": "1298:1:0" } ], - "id": 37, + "id": 48, "name": "BinaryOperation", - "src": "1158:14:0" + "src": "1285:14:0" }, { "attributes": { @@ -4317,19 +5047,19 @@ "type": "literal_string \"ETH value is supposed to be 0 for ERC20 instance\"", "value": "ETH value is supposed to be 0 for ERC20 instance" }, - "id": 38, + "id": 49, "name": "Literal", - "src": "1174:50:0" + "src": "1301:50:0" } ], - "id": 39, + "id": 50, "name": "FunctionCall", - "src": "1150:75:0" + "src": "1277:75:0" } ], - "id": 40, + "id": 51, "name": "ExpressionStatement", - "src": "1150:75:0" + "src": "1277:75:0" }, { "children": [ @@ -4367,13 +5097,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 171, + "referencedDeclaration": 210, "type": "function (address,address,uint256)", "value": "_safeErc20TransferFrom" }, - "id": 41, + "id": 52, "name": "Identifier", - "src": "1231:22:0" + "src": "1358:22:0" }, { "attributes": { @@ -4393,18 +5123,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 3260, + "referencedDeclaration": 1015, "type": "msg", "value": "msg" }, - "id": 42, + "id": 53, "name": "Identifier", - "src": "1254:3:0" + "src": "1381:3:0" } ], - "id": 43, + "id": 54, "name": "MemberAccess", - "src": "1254:10:0" + "src": "1381:10:0" }, { "attributes": { @@ -4425,7 +5155,7 @@ "attributes": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ERC20Tornado_$227", + "typeIdentifier": "t_contract$_ERC20Tornado_$266", "typeString": "contract ERC20Tornado" } ], @@ -4436,9 +5166,9 @@ "type": "type(address)", "value": "address" }, - "id": 44, + "id": 55, "name": "ElementaryTypeNameExpression", - "src": "1266:7:0" + "src": "1393:7:0" }, { "attributes": { @@ -4446,18 +5176,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 3284, + "referencedDeclaration": 1041, "type": "contract ERC20Tornado", "value": "this" }, - "id": 45, + "id": 56, "name": "Identifier", - "src": "1274:4:0" + "src": "1401:4:0" } ], - "id": 46, + "id": 57, "name": "FunctionCall", - "src": "1266:13:0" + "src": "1393:13:0" }, { "attributes": { @@ -4465,33 +5195,33 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 897, + "referencedDeclaration": 660, "type": "uint256", "value": "denomination" }, - "id": 47, + "id": 58, "name": "Identifier", - "src": "1281:12:0" + "src": "1408:12:0" } ], - "id": 48, + "id": 59, "name": "FunctionCall", - "src": "1231:63:0" + "src": "1358:63:0" } ], - "id": 49, + "id": 60, "name": "ExpressionStatement", - "src": "1231:63:0" + "src": "1358:63:0" } ], - "id": 50, + "id": 61, "name": "Block", - "src": "1144:155:0" + "src": "1271:155:0" } ], - "id": 51, + "id": 62, "name": "FunctionDefinition", - "src": "1108:191:0" + "src": "1235:191:0" }, { "attributes": { @@ -4503,9 +5233,9 @@ null ], "name": "_processWithdraw", - "scope": 227, + "scope": 266, "stateMutability": "nonpayable", - "superFunction": 1110, + "superFunction": 886, "visibility": "internal" }, "children": [ @@ -4515,7 +5245,7 @@ "attributes": { "constant": false, "name": "_recipient", - "scope": 113, + "scope": 152, "stateVariable": false, "storageLocation": "default", "type": "address payable", @@ -4529,20 +5259,20 @@ "stateMutability": "payable", "type": "address payable" }, - "id": 52, + "id": 63, "name": "ElementaryTypeName", - "src": "1329:15:0" + "src": "1456:15:0" } ], - "id": 53, + "id": 64, "name": "VariableDeclaration", - "src": "1329:26:0" + "src": "1456:26:0" }, { "attributes": { "constant": false, "name": "_relayer", - "scope": 113, + "scope": 152, "stateVariable": false, "storageLocation": "default", "type": "address payable", @@ -4556,20 +5286,20 @@ "stateMutability": "payable", "type": "address payable" }, - "id": 54, + "id": 65, "name": "ElementaryTypeName", - "src": "1357:15:0" + "src": "1484:15:0" } ], - "id": 55, + "id": 66, "name": "VariableDeclaration", - "src": "1357:24:0" + "src": "1484:24:0" }, { "attributes": { "constant": false, - "name": "_fee", - "scope": 113, + "name": "_relayer_fee", + "scope": 152, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -4582,20 +5312,20 @@ "name": "uint256", "type": "uint256" }, - "id": 56, + "id": 67, "name": "ElementaryTypeName", - "src": "1383:7:0" + "src": "1510:7:0" } ], - "id": 57, + "id": 68, "name": "VariableDeclaration", - "src": "1383:12:0" + "src": "1510:20:0" }, { "attributes": { "constant": false, "name": "_refund", - "scope": 113, + "scope": 152, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -4608,19 +5338,46 @@ "name": "uint256", "type": "uint256" }, - "id": 58, + "id": 69, "name": "ElementaryTypeName", - "src": "1397:7:0" + "src": "1532:7:0" } ], - "id": 59, + "id": 70, "name": "VariableDeclaration", - "src": "1397:15:0" + "src": "1532:15:0" + }, + { + "attributes": { + "constant": false, + "name": "_feeTo", + "scope": 152, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 71, + "name": "ElementaryTypeName", + "src": "1549:7:0" + } + ], + "id": 72, + "name": "VariableDeclaration", + "src": "1549:14:0" } ], - "id": 60, + "id": 73, "name": "ParameterList", - "src": "1328:85:0" + "src": "1455:109:0" }, { "attributes": { @@ -4629,9 +5386,9 @@ ] }, "children": [], - "id": 61, + "id": 74, "name": "ParameterList", - "src": "1423:0:0" + "src": "1574:0:0" }, { "children": [ @@ -4665,16 +5422,16 @@ } ], "overloadedDeclarations": [ - 3263, - 3264 + 1018, + 1019 ], - "referencedDeclaration": 3264, + "referencedDeclaration": 1019, "type": "function (bool,string memory) pure", "value": "require" }, - "id": 62, + "id": 75, "name": "Identifier", - "src": "1429:7:0" + "src": "1580:7:0" }, { "attributes": { @@ -4709,18 +5466,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 3260, + "referencedDeclaration": 1015, "type": "msg", "value": "msg" }, - "id": 63, + "id": 76, "name": "Identifier", - "src": "1437:3:0" + "src": "1588:3:0" } ], - "id": 64, + "id": 77, "name": "MemberAccess", - "src": "1437:9:0" + "src": "1588:9:0" }, { "attributes": { @@ -4728,18 +5485,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 59, + "referencedDeclaration": 70, "type": "uint256", "value": "_refund" }, - "id": 65, + "id": 78, "name": "Identifier", - "src": "1450:7:0" + "src": "1601:7:0" } ], - "id": 66, + "id": 79, "name": "BinaryOperation", - "src": "1437:20:0" + "src": "1588:20:0" }, { "attributes": { @@ -4754,149 +5511,65 @@ "type": "literal_string \"Incorrect refund amount received by the contract\"", "value": "Incorrect refund amount received by the contract" }, - "id": 67, + "id": 80, "name": "Literal", - "src": "1459:50:0" + "src": "1610:50:0" } ], - "id": 68, + "id": 81, "name": "FunctionCall", - "src": "1429:81:0" + "src": "1580:81:0" } ], - "id": 69, + "id": 82, "name": "ExpressionStatement", - "src": "1429:81:0" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 226, - "type": "function (address,uint256)", - "value": "_safeErc20Transfer" - }, - "id": 70, - "name": "Identifier", - "src": "1517:18:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 53, - "type": "address payable", - "value": "_recipient" - }, - "id": 71, - "name": "Identifier", - "src": "1536:10:0" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "-", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 897, - "type": "uint256", - "value": "denomination" - }, - "id": 72, - "name": "Identifier", - "src": "1548:12:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 57, - "type": "uint256", - "value": "_fee" - }, - "id": 73, - "name": "Identifier", - "src": "1563:4:0" - } - ], - "id": 74, - "name": "BinaryOperation", - "src": "1548:19:0" - } - ], - "id": 75, - "name": "FunctionCall", - "src": "1517:51:0" - } - ], - "id": 76, - "name": "ExpressionStatement", - "src": "1517:51:0" + "src": "1580:81:0" }, { "attributes": { - "falseBody": null + "assignments": [ + 84 + ] }, "children": [ + { + "attributes": { + "constant": false, + "name": "feeOn", + "scope": 151, + "stateVariable": false, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 83, + "name": "ElementaryTypeName", + "src": "1668:4:0" + } + ], + "id": 84, + "name": "VariableDeclaration", + "src": "1668:10:0" + }, { "attributes": { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" }, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "operator": ">", + "operator": "!=", "type": "bool" }, "children": [ @@ -4906,35 +5579,95 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 57, - "type": "uint256", - "value": "_fee" + "referencedDeclaration": 72, + "type": "address", + "value": "_feeTo" }, - "id": 77, + "id": 85, "name": "Identifier", - "src": "1578:4:0" + "src": "1681:6:0" }, { "attributes": { "argumentTypes": null, - "hexvalue": "30", "isConstant": false, "isLValue": false, "isPure": true, + "isStructConstructorCall": false, "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" + "names": [ + null + ], + "type": "address payable", + "type_conversion": true }, - "id": 78, - "name": "Literal", - "src": "1585:1:0" + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)", + "value": "address" + }, + "id": 86, + "name": "ElementaryTypeNameExpression", + "src": "1691:7:0" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 87, + "name": "Literal", + "src": "1699:1:0" + } + ], + "id": 88, + "name": "FunctionCall", + "src": "1691:10:0" } ], - "id": 79, + "id": 89, "name": "BinaryOperation", - "src": "1578:8:0" + "src": "1681:20:0" + } + ], + "id": 90, + "name": "VariableDeclarationStatement", + "src": "1668:33:0" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 84, + "type": "bool", + "value": "feeOn" + }, + "id": 91, + "name": "Identifier", + "src": "1711:5:0" }, { "children": [ @@ -4970,13 +5703,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 226, + "referencedDeclaration": 265, "type": "function (address,uint256)", "value": "_safeErc20Transfer" }, - "id": 80, + "id": 92, "name": "Identifier", - "src": "1596:18:0" + "src": "1726:18:0" }, { "attributes": { @@ -4984,47 +5717,312 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 55, + "referencedDeclaration": 64, "type": "address payable", - "value": "_relayer" + "value": "_recipient" }, - "id": 81, + "id": 93, "name": "Identifier", - "src": "1615:8:0" + "src": "1745:10:0" }, { "attributes": { "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 57, - "type": "uint256", - "value": "_fee" + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "-", + "type": "uint256" }, - "id": 82, - "name": "Identifier", - "src": "1625:4:0" + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "-", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 660, + "type": "uint256", + "value": "denomination" + }, + "id": 94, + "name": "Identifier", + "src": "1757:12:0" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 68, + "type": "uint256", + "value": "_relayer_fee" + }, + "id": 95, + "name": "Identifier", + "src": "1772:12:0" + } + ], + "id": 96, + "name": "BinaryOperation", + "src": "1757:27:0" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 8, + "type": "uint256", + "value": "protocolFee" + }, + "id": 97, + "name": "Identifier", + "src": "1787:11:0" + } + ], + "id": 98, + "name": "BinaryOperation", + "src": "1757:41:0" } ], - "id": 83, + "id": 99, "name": "FunctionCall", - "src": "1596:34:0" + "src": "1726:73:0" } ], - "id": 84, + "id": 100, "name": "ExpressionStatement", - "src": "1596:34:0" + "src": "1726:73:0" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 265, + "type": "function (address,uint256)", + "value": "_safeErc20Transfer" + }, + "id": 101, + "name": "Identifier", + "src": "1807:18:0" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 72, + "type": "address", + "value": "_feeTo" + }, + "id": 102, + "name": "Identifier", + "src": "1826:6:0" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 8, + "type": "uint256", + "value": "protocolFee" + }, + "id": 103, + "name": "Identifier", + "src": "1834:11:0" + } + ], + "id": 104, + "name": "FunctionCall", + "src": "1807:39:0" + } + ], + "id": 105, + "name": "ExpressionStatement", + "src": "1807:39:0" } ], - "id": 85, + "id": 106, "name": "Block", - "src": "1588:49:0" + "src": "1718:135:0" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 265, + "type": "function (address,uint256)", + "value": "_safeErc20Transfer" + }, + "id": 107, + "name": "Identifier", + "src": "1867:18:0" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 64, + "type": "address payable", + "value": "_recipient" + }, + "id": 108, + "name": "Identifier", + "src": "1886:10:0" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "-", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 660, + "type": "uint256", + "value": "denomination" + }, + "id": 109, + "name": "Identifier", + "src": "1898:12:0" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 68, + "type": "uint256", + "value": "_relayer_fee" + }, + "id": 110, + "name": "Identifier", + "src": "1913:12:0" + } + ], + "id": 111, + "name": "BinaryOperation", + "src": "1898:27:0" + } + ], + "id": 112, + "name": "FunctionCall", + "src": "1867:59:0" + } + ], + "id": 113, + "name": "ExpressionStatement", + "src": "1867:59:0" + } + ], + "id": 114, + "name": "Block", + "src": "1859:74:0" } ], - "id": 86, + "id": 115, "name": "IfStatement", - "src": "1574:63:0" + "src": "1707:226:0" }, { "attributes": { @@ -5052,13 +6050,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 59, + "referencedDeclaration": 68, "type": "uint256", - "value": "_refund" + "value": "_relayer_fee" }, - "id": 87, + "id": 116, "name": "Identifier", - "src": "1647:7:0" + "src": "1943:12:0" }, { "attributes": { @@ -5073,21 +6071,167 @@ "type": "int_const 0", "value": "0" }, - "id": 88, + "id": 117, "name": "Literal", - "src": "1657:1:0" + "src": "1958:1:0" } ], - "id": 89, + "id": 118, "name": "BinaryOperation", - "src": "1647:11:0" + "src": "1943:16:0" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 265, + "type": "function (address,uint256)", + "value": "_safeErc20Transfer" + }, + "id": 119, + "name": "Identifier", + "src": "1969:18:0" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 66, + "type": "address payable", + "value": "_relayer" + }, + "id": 120, + "name": "Identifier", + "src": "1988:8:0" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 68, + "type": "uint256", + "value": "_relayer_fee" + }, + "id": 121, + "name": "Identifier", + "src": "1998:12:0" + } + ], + "id": 122, + "name": "FunctionCall", + "src": "1969:42:0" + } + ], + "id": 123, + "name": "ExpressionStatement", + "src": "1969:42:0" + } + ], + "id": 124, + "name": "Block", + "src": "1961:57:0" + } + ], + "id": 125, + "name": "IfStatement", + "src": "1939:79:0" + }, + { + "attributes": { + "falseBody": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": ">", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 70, + "type": "uint256", + "value": "_refund" + }, + "id": 126, + "name": "Identifier", + "src": "2028:7:0" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 127, + "name": "Literal", + "src": "2038:1:0" + } + ], + "id": 128, + "name": "BinaryOperation", + "src": "2028:11:0" }, { "children": [ { "attributes": { "assignments": [ - 91, + 130, null ] }, @@ -5096,7 +6240,7 @@ "attributes": { "constant": false, "name": "success", - "scope": 110, + "scope": 149, "stateVariable": false, "storageLocation": "default", "type": "bool", @@ -5109,14 +6253,14 @@ "name": "bool", "type": "bool" }, - "id": 90, + "id": 129, "name": "ElementaryTypeName", - "src": "1669:4:0" + "src": "2050:4:0" } ], - "id": 91, + "id": 130, "name": "VariableDeclaration", - "src": "1669:12:0" + "src": "2050:12:0" }, { "attributes": { @@ -5188,23 +6332,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 53, + "referencedDeclaration": 64, "type": "address payable", "value": "_recipient" }, - "id": 92, + "id": 131, "name": "Identifier", - "src": "1687:10:0" + "src": "2068:10:0" } ], - "id": 93, + "id": 132, "name": "MemberAccess", - "src": "1687:15:0" + "src": "2068:15:0" } ], - "id": 94, + "id": 133, "name": "MemberAccess", - "src": "1687:21:0" + "src": "2068:21:0" }, { "attributes": { @@ -5212,18 +6356,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 59, + "referencedDeclaration": 70, "type": "uint256", "value": "_refund" }, - "id": 95, + "id": 134, "name": "Identifier", - "src": "1709:7:0" + "src": "2090:7:0" } ], - "id": 96, + "id": 135, "name": "FunctionCall", - "src": "1687:30:0" + "src": "2068:30:0" }, { "attributes": { @@ -5238,19 +6382,19 @@ "type": "literal_string \"\"", "value": "" }, - "id": 97, + "id": 136, "name": "Literal", - "src": "1718:2:0" + "src": "2099:2:0" } ], - "id": 98, + "id": 137, "name": "FunctionCall", - "src": "1687:34:0" + "src": "2068:34:0" } ], - "id": 99, + "id": 138, "name": "VariableDeclarationStatement", - "src": "1668:53:0" + "src": "2049:53:0" }, { "attributes": { @@ -5275,18 +6419,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 91, + "referencedDeclaration": 130, "type": "bool", "value": "success" }, - "id": 100, + "id": 139, "name": "Identifier", - "src": "1734:7:0" + "src": "2115:7:0" } ], - "id": 101, + "id": 140, "name": "UnaryOperation", - "src": "1733:8:0" + "src": "2114:8:0" }, { "children": [ @@ -5330,18 +6474,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 55, + "referencedDeclaration": 66, "type": "address payable", "value": "_relayer" }, - "id": 102, + "id": 141, "name": "Identifier", - "src": "1805:8:0" + "src": "2186:8:0" } ], - "id": 104, + "id": 143, "name": "MemberAccess", - "src": "1805:17:0" + "src": "2186:17:0" }, { "attributes": { @@ -5349,53 +6493,53 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 59, + "referencedDeclaration": 70, "type": "uint256", "value": "_refund" }, - "id": 105, + "id": 144, "name": "Identifier", - "src": "1823:7:0" + "src": "2204:7:0" } ], - "id": 106, + "id": 145, "name": "FunctionCall", - "src": "1805:26:0" + "src": "2186:26:0" } ], - "id": 107, + "id": 146, "name": "ExpressionStatement", - "src": "1805:26:0" + "src": "2186:26:0" } ], - "id": 108, + "id": 147, "name": "Block", - "src": "1743:97:0" + "src": "2124:97:0" } ], - "id": 109, + "id": 148, "name": "IfStatement", - "src": "1729:111:0" + "src": "2110:111:0" } ], - "id": 110, + "id": 149, "name": "Block", - "src": "1660:186:0" + "src": "2041:186:0" } ], - "id": 111, + "id": 150, "name": "IfStatement", - "src": "1643:203:0" + "src": "2024:203:0" } ], - "id": 112, + "id": 151, "name": "Block", - "src": "1423:427:0" + "src": "1574:657:0" } ], - "id": 113, + "id": 152, "name": "FunctionDefinition", - "src": "1303:547:0" + "src": "1430:801:0" }, { "attributes": { @@ -5407,7 +6551,7 @@ null ], "name": "_safeErc20TransferFrom", - "scope": 227, + "scope": 266, "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" @@ -5419,7 +6563,7 @@ "attributes": { "constant": false, "name": "_from", - "scope": 171, + "scope": 210, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -5433,20 +6577,20 @@ "stateMutability": "nonpayable", "type": "address" }, - "id": 114, + "id": 153, "name": "ElementaryTypeName", - "src": "1886:7:0" + "src": "2267:7:0" } ], - "id": 115, + "id": 154, "name": "VariableDeclaration", - "src": "1886:13:0" + "src": "2267:13:0" }, { "attributes": { "constant": false, "name": "_to", - "scope": 171, + "scope": 210, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -5460,20 +6604,20 @@ "stateMutability": "nonpayable", "type": "address" }, - "id": 116, + "id": 155, "name": "ElementaryTypeName", - "src": "1901:7:0" + "src": "2282:7:0" } ], - "id": 117, + "id": 156, "name": "VariableDeclaration", - "src": "1901:11:0" + "src": "2282:11:0" }, { "attributes": { "constant": false, "name": "_amount", - "scope": 171, + "scope": 210, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -5486,19 +6630,19 @@ "name": "uint256", "type": "uint256" }, - "id": 118, + "id": 157, "name": "ElementaryTypeName", - "src": "1914:7:0" + "src": "2295:7:0" } ], - "id": 119, + "id": 158, "name": "VariableDeclaration", - "src": "1914:15:0" + "src": "2295:15:0" } ], - "id": 120, + "id": 159, "name": "ParameterList", - "src": "1885:45:0" + "src": "2266:45:0" }, { "attributes": { @@ -5507,17 +6651,17 @@ ] }, "children": [], - "id": 121, + "id": 160, "name": "ParameterList", - "src": "1940:0:0" + "src": "2321:0:0" }, { "children": [ { "attributes": { "assignments": [ - 123, - 125 + 162, + 164 ] }, "children": [ @@ -5525,7 +6669,7 @@ "attributes": { "constant": false, "name": "success", - "scope": 170, + "scope": 209, "stateVariable": false, "storageLocation": "default", "type": "bool", @@ -5538,20 +6682,20 @@ "name": "bool", "type": "bool" }, - "id": 122, + "id": 161, "name": "ElementaryTypeName", - "src": "1947:4:0" + "src": "2328:4:0" } ], - "id": 123, + "id": 162, "name": "VariableDeclaration", - "src": "1947:12:0" + "src": "2328:12:0" }, { "attributes": { "constant": false, "name": "data", - "scope": 170, + "scope": 209, "stateVariable": false, "storageLocation": "memory", "type": "bytes", @@ -5564,14 +6708,14 @@ "name": "bytes", "type": "bytes" }, - "id": 124, + "id": 163, "name": "ElementaryTypeName", - "src": "1961:5:0" + "src": "2342:5:0" } ], - "id": 125, + "id": 164, "name": "VariableDeclaration", - "src": "1961:17:0" + "src": "2342:17:0" }, { "attributes": { @@ -5615,14 +6759,14 @@ "type": "address", "value": "token" }, - "id": 126, + "id": 165, "name": "Identifier", - "src": "1982:5:0" + "src": "2363:5:0" } ], - "id": 127, + "id": 166, "name": "MemberAccess", - "src": "1982:10:0" + "src": "2363:10:0" }, { "attributes": { @@ -5674,18 +6818,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 3247, + "referencedDeclaration": 1002, "type": "abi", "value": "abi" }, - "id": 128, + "id": 167, "name": "Identifier", - "src": "1993:3:0" + "src": "2374:3:0" } ], - "id": 129, + "id": 168, "name": "MemberAccess", - "src": "1993:22:0" + "src": "2374:22:0" }, { "attributes": { @@ -5700,9 +6844,9 @@ "type": "int_const 599290589", "value": "0x23b872dd" }, - "id": 130, + "id": 169, "name": "Literal", - "src": "2016:10:0" + "src": "2397:10:0" }, { "attributes": { @@ -5710,13 +6854,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 115, + "referencedDeclaration": 154, "type": "address", "value": "_from" }, - "id": 131, + "id": 170, "name": "Identifier", - "src": "2047:5:0" + "src": "2428:5:0" }, { "attributes": { @@ -5724,13 +6868,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 117, + "referencedDeclaration": 156, "type": "address", "value": "_to" }, - "id": 132, + "id": 171, "name": "Identifier", - "src": "2054:3:0" + "src": "2435:3:0" }, { "attributes": { @@ -5738,28 +6882,28 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 119, + "referencedDeclaration": 158, "type": "uint256", "value": "_amount" }, - "id": 133, + "id": 172, "name": "Identifier", - "src": "2059:7:0" + "src": "2440:7:0" } ], - "id": 134, + "id": 173, "name": "FunctionCall", - "src": "1993:74:0" + "src": "2374:74:0" } ], - "id": 135, + "id": 174, "name": "FunctionCall", - "src": "1982:86:0" + "src": "2363:86:0" } ], - "id": 136, + "id": 175, "name": "VariableDeclarationStatement", - "src": "1946:122:0" + "src": "2327:122:0" }, { "children": [ @@ -5791,16 +6935,16 @@ } ], "overloadedDeclarations": [ - 3263, - 3264 + 1018, + 1019 ], - "referencedDeclaration": 3264, + "referencedDeclaration": 1019, "type": "function (bool,string memory) pure", "value": "require" }, - "id": 137, + "id": 176, "name": "Identifier", - "src": "2074:7:0" + "src": "2455:7:0" }, { "attributes": { @@ -5808,13 +6952,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 123, + "referencedDeclaration": 162, "type": "bool", "value": "success" }, - "id": 138, + "id": 177, "name": "Identifier", - "src": "2082:7:0" + "src": "2463:7:0" }, { "attributes": { @@ -5829,19 +6973,19 @@ "type": "literal_string \"not enough allowed tokens\"", "value": "not enough allowed tokens" }, - "id": 139, + "id": 178, "name": "Literal", - "src": "2091:27:0" + "src": "2472:27:0" } ], - "id": 140, + "id": 179, "name": "FunctionCall", - "src": "2074:45:0" + "src": "2455:45:0" } ], - "id": 141, + "id": 180, "name": "ExpressionStatement", - "src": "2074:45:0" + "src": "2455:45:0" }, { "attributes": { @@ -5881,18 +7025,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 125, + "referencedDeclaration": 164, "type": "bytes memory", "value": "data" }, - "id": 142, + "id": 181, "name": "Identifier", - "src": "2219:4:0" + "src": "2600:4:0" } ], - "id": 143, + "id": 182, "name": "MemberAccess", - "src": "2219:11:0" + "src": "2600:11:0" }, { "attributes": { @@ -5907,14 +7051,14 @@ "type": "int_const 0", "value": "0" }, - "id": 144, + "id": 183, "name": "Literal", - "src": "2233:1:0" + "src": "2614:1:0" } ], - "id": 145, + "id": 184, "name": "BinaryOperation", - "src": "2219:15:0" + "src": "2600:15:0" }, { "children": [ @@ -5948,16 +7092,16 @@ } ], "overloadedDeclarations": [ - 3263, - 3264 + 1018, + 1019 ], - "referencedDeclaration": 3264, + "referencedDeclaration": 1019, "type": "function (bool,string memory) pure", "value": "require" }, - "id": 146, + "id": 185, "name": "Identifier", - "src": "2244:7:0" + "src": "2625:7:0" }, { "attributes": { @@ -5992,18 +7136,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 125, + "referencedDeclaration": 164, "type": "bytes memory", "value": "data" }, - "id": 147, + "id": 186, "name": "Identifier", - "src": "2252:4:0" + "src": "2633:4:0" } ], - "id": 148, + "id": 187, "name": "MemberAccess", - "src": "2252:11:0" + "src": "2633:11:0" }, { "attributes": { @@ -6018,14 +7162,14 @@ "type": "int_const 32", "value": "32" }, - "id": 149, + "id": 188, "name": "Literal", - "src": "2267:2:0" + "src": "2648:2:0" } ], - "id": 150, + "id": 189, "name": "BinaryOperation", - "src": "2252:17:0" + "src": "2633:17:0" }, { "attributes": { @@ -6040,19 +7184,19 @@ "type": "literal_string \"data length should be either 0 or 32 bytes\"", "value": "data length should be either 0 or 32 bytes" }, - "id": 151, + "id": 190, "name": "Literal", - "src": "2271:44:0" + "src": "2652:44:0" } ], - "id": 152, + "id": 191, "name": "FunctionCall", - "src": "2244:72:0" + "src": "2625:72:0" } ], - "id": 153, + "id": 192, "name": "ExpressionStatement", - "src": "2244:72:0" + "src": "2625:72:0" }, { "children": [ @@ -6073,13 +7217,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 123, + "referencedDeclaration": 162, "type": "bool", "value": "success" }, - "id": 154, + "id": 193, "name": "Identifier", - "src": "2324:7:0" + "src": "2705:7:0" }, { "attributes": { @@ -6123,18 +7267,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 3247, + "referencedDeclaration": 1002, "type": "abi", "value": "abi" }, - "id": 155, + "id": 194, "name": "Identifier", - "src": "2334:3:0" + "src": "2715:3:0" } ], - "id": 156, + "id": 195, "name": "MemberAccess", - "src": "2334:10:0" + "src": "2715:10:0" }, { "attributes": { @@ -6142,13 +7286,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 125, + "referencedDeclaration": 164, "type": "bytes memory", "value": "data" }, - "id": 157, + "id": 196, "name": "Identifier", - "src": "2345:4:0" + "src": "2726:4:0" }, { "attributes": { @@ -6171,29 +7315,29 @@ "type": "type(bool)", "value": "bool" }, - "id": 158, + "id": 197, "name": "ElementaryTypeNameExpression", - "src": "2352:4:0" + "src": "2733:4:0" } ], - "id": 159, + "id": 198, "name": "TupleExpression", - "src": "2351:6:0" + "src": "2732:6:0" } ], - "id": 160, + "id": 199, "name": "FunctionCall", - "src": "2334:24:0" + "src": "2715:24:0" } ], - "id": 161, + "id": 200, "name": "Assignment", - "src": "2324:34:0" + "src": "2705:34:0" } ], - "id": 162, + "id": 201, "name": "ExpressionStatement", - "src": "2324:34:0" + "src": "2705:34:0" }, { "children": [ @@ -6225,16 +7369,16 @@ } ], "overloadedDeclarations": [ - 3263, - 3264 + 1018, + 1019 ], - "referencedDeclaration": 3264, + "referencedDeclaration": 1019, "type": "function (bool,string memory) pure", "value": "require" }, - "id": 163, + "id": 202, "name": "Identifier", - "src": "2366:7:0" + "src": "2747:7:0" }, { "attributes": { @@ -6242,13 +7386,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 123, + "referencedDeclaration": 162, "type": "bool", "value": "success" }, - "id": 164, + "id": 203, "name": "Identifier", - "src": "2374:7:0" + "src": "2755:7:0" }, { "attributes": { @@ -6263,39 +7407,39 @@ "type": "literal_string \"not enough allowed tokens. Token returns false.\"", "value": "not enough allowed tokens. Token returns false." }, - "id": 165, + "id": 204, "name": "Literal", - "src": "2383:49:0" + "src": "2764:49:0" } ], - "id": 166, + "id": 205, "name": "FunctionCall", - "src": "2366:67:0" + "src": "2747:67:0" } ], - "id": 167, + "id": 206, "name": "ExpressionStatement", - "src": "2366:67:0" + "src": "2747:67:0" } ], - "id": 168, + "id": 207, "name": "Block", - "src": "2236:204:0" + "src": "2617:204:0" } ], - "id": 169, + "id": 208, "name": "IfStatement", - "src": "2215:225:0" + "src": "2596:225:0" } ], - "id": 170, + "id": 209, "name": "Block", - "src": "1940:504:0" + "src": "2321:504:0" } ], - "id": 171, + "id": 210, "name": "FunctionDefinition", - "src": "1854:590:0" + "src": "2235:590:0" }, { "attributes": { @@ -6307,7 +7451,7 @@ null ], "name": "_safeErc20Transfer", - "scope": 227, + "scope": 266, "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" @@ -6319,7 +7463,7 @@ "attributes": { "constant": false, "name": "_to", - "scope": 226, + "scope": 265, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -6333,20 +7477,20 @@ "stateMutability": "nonpayable", "type": "address" }, - "id": 172, + "id": 211, "name": "ElementaryTypeName", - "src": "2476:7:0" + "src": "2857:7:0" } ], - "id": 173, + "id": 212, "name": "VariableDeclaration", - "src": "2476:11:0" + "src": "2857:11:0" }, { "attributes": { "constant": false, "name": "_amount", - "scope": 226, + "scope": 265, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -6359,19 +7503,19 @@ "name": "uint256", "type": "uint256" }, - "id": 174, + "id": 213, "name": "ElementaryTypeName", - "src": "2489:7:0" + "src": "2870:7:0" } ], - "id": 175, + "id": 214, "name": "VariableDeclaration", - "src": "2489:15:0" + "src": "2870:15:0" } ], - "id": 176, + "id": 215, "name": "ParameterList", - "src": "2475:30:0" + "src": "2856:30:0" }, { "attributes": { @@ -6380,17 +7524,17 @@ ] }, "children": [], - "id": 177, + "id": 216, "name": "ParameterList", - "src": "2515:0:0" + "src": "2896:0:0" }, { "children": [ { "attributes": { "assignments": [ - 179, - 181 + 218, + 220 ] }, "children": [ @@ -6398,7 +7542,7 @@ "attributes": { "constant": false, "name": "success", - "scope": 225, + "scope": 264, "stateVariable": false, "storageLocation": "default", "type": "bool", @@ -6411,20 +7555,20 @@ "name": "bool", "type": "bool" }, - "id": 178, + "id": 217, "name": "ElementaryTypeName", - "src": "2522:4:0" + "src": "2903:4:0" } ], - "id": 179, + "id": 218, "name": "VariableDeclaration", - "src": "2522:12:0" + "src": "2903:12:0" }, { "attributes": { "constant": false, "name": "data", - "scope": 225, + "scope": 264, "stateVariable": false, "storageLocation": "memory", "type": "bytes", @@ -6437,14 +7581,14 @@ "name": "bytes", "type": "bytes" }, - "id": 180, + "id": 219, "name": "ElementaryTypeName", - "src": "2536:5:0" + "src": "2917:5:0" } ], - "id": 181, + "id": 220, "name": "VariableDeclaration", - "src": "2536:17:0" + "src": "2917:17:0" }, { "attributes": { @@ -6488,14 +7632,14 @@ "type": "address", "value": "token" }, - "id": 182, + "id": 221, "name": "Identifier", - "src": "2557:5:0" + "src": "2938:5:0" } ], - "id": 183, + "id": 222, "name": "MemberAccess", - "src": "2557:10:0" + "src": "2938:10:0" }, { "attributes": { @@ -6543,18 +7687,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 3247, + "referencedDeclaration": 1002, "type": "abi", "value": "abi" }, - "id": 184, + "id": 223, "name": "Identifier", - "src": "2568:3:0" + "src": "2949:3:0" } ], - "id": 185, + "id": 224, "name": "MemberAccess", - "src": "2568:22:0" + "src": "2949:22:0" }, { "attributes": { @@ -6569,9 +7713,9 @@ "type": "int_const 2835717307", "value": "0xa9059cbb" }, - "id": 186, + "id": 225, "name": "Literal", - "src": "2591:10:0" + "src": "2972:10:0" }, { "attributes": { @@ -6579,13 +7723,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 173, + "referencedDeclaration": 212, "type": "address", "value": "_to" }, - "id": 187, + "id": 226, "name": "Identifier", - "src": "2618:3:0" + "src": "2999:3:0" }, { "attributes": { @@ -6593,28 +7737,28 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 175, + "referencedDeclaration": 214, "type": "uint256", "value": "_amount" }, - "id": 188, + "id": 227, "name": "Identifier", - "src": "2623:7:0" + "src": "3004:7:0" } ], - "id": 189, + "id": 228, "name": "FunctionCall", - "src": "2568:63:0" + "src": "2949:63:0" } ], - "id": 190, + "id": 229, "name": "FunctionCall", - "src": "2557:75:0" + "src": "2938:75:0" } ], - "id": 191, + "id": 230, "name": "VariableDeclarationStatement", - "src": "2521:111:0" + "src": "2902:111:0" }, { "children": [ @@ -6646,16 +7790,16 @@ } ], "overloadedDeclarations": [ - 3263, - 3264 + 1018, + 1019 ], - "referencedDeclaration": 3264, + "referencedDeclaration": 1019, "type": "function (bool,string memory) pure", "value": "require" }, - "id": 192, + "id": 231, "name": "Identifier", - "src": "2638:7:0" + "src": "3019:7:0" }, { "attributes": { @@ -6663,13 +7807,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 179, + "referencedDeclaration": 218, "type": "bool", "value": "success" }, - "id": 193, + "id": 232, "name": "Identifier", - "src": "2646:7:0" + "src": "3027:7:0" }, { "attributes": { @@ -6684,19 +7828,19 @@ "type": "literal_string \"not enough tokens\"", "value": "not enough tokens" }, - "id": 194, + "id": 233, "name": "Literal", - "src": "2655:19:0" + "src": "3036:19:0" } ], - "id": 195, + "id": 234, "name": "FunctionCall", - "src": "2638:37:0" + "src": "3019:37:0" } ], - "id": 196, + "id": 235, "name": "ExpressionStatement", - "src": "2638:37:0" + "src": "3019:37:0" }, { "attributes": { @@ -6736,18 +7880,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 181, + "referencedDeclaration": 220, "type": "bytes memory", "value": "data" }, - "id": 197, + "id": 236, "name": "Identifier", - "src": "2775:4:0" + "src": "3156:4:0" } ], - "id": 198, + "id": 237, "name": "MemberAccess", - "src": "2775:11:0" + "src": "3156:11:0" }, { "attributes": { @@ -6762,14 +7906,14 @@ "type": "int_const 0", "value": "0" }, - "id": 199, + "id": 238, "name": "Literal", - "src": "2789:1:0" + "src": "3170:1:0" } ], - "id": 200, + "id": 239, "name": "BinaryOperation", - "src": "2775:15:0" + "src": "3156:15:0" }, { "children": [ @@ -6803,16 +7947,16 @@ } ], "overloadedDeclarations": [ - 3263, - 3264 + 1018, + 1019 ], - "referencedDeclaration": 3264, + "referencedDeclaration": 1019, "type": "function (bool,string memory) pure", "value": "require" }, - "id": 201, + "id": 240, "name": "Identifier", - "src": "2800:7:0" + "src": "3181:7:0" }, { "attributes": { @@ -6847,18 +7991,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 181, + "referencedDeclaration": 220, "type": "bytes memory", "value": "data" }, - "id": 202, + "id": 241, "name": "Identifier", - "src": "2808:4:0" + "src": "3189:4:0" } ], - "id": 203, + "id": 242, "name": "MemberAccess", - "src": "2808:11:0" + "src": "3189:11:0" }, { "attributes": { @@ -6873,14 +8017,14 @@ "type": "int_const 32", "value": "32" }, - "id": 204, + "id": 243, "name": "Literal", - "src": "2823:2:0" + "src": "3204:2:0" } ], - "id": 205, + "id": 244, "name": "BinaryOperation", - "src": "2808:17:0" + "src": "3189:17:0" }, { "attributes": { @@ -6895,19 +8039,19 @@ "type": "literal_string \"data length should be either 0 or 32 bytes\"", "value": "data length should be either 0 or 32 bytes" }, - "id": 206, + "id": 245, "name": "Literal", - "src": "2827:44:0" + "src": "3208:44:0" } ], - "id": 207, + "id": 246, "name": "FunctionCall", - "src": "2800:72:0" + "src": "3181:72:0" } ], - "id": 208, + "id": 247, "name": "ExpressionStatement", - "src": "2800:72:0" + "src": "3181:72:0" }, { "children": [ @@ -6928,13 +8072,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 179, + "referencedDeclaration": 218, "type": "bool", "value": "success" }, - "id": 209, + "id": 248, "name": "Identifier", - "src": "2880:7:0" + "src": "3261:7:0" }, { "attributes": { @@ -6978,18 +8122,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 3247, + "referencedDeclaration": 1002, "type": "abi", "value": "abi" }, - "id": 210, + "id": 249, "name": "Identifier", - "src": "2890:3:0" + "src": "3271:3:0" } ], - "id": 211, + "id": 250, "name": "MemberAccess", - "src": "2890:10:0" + "src": "3271:10:0" }, { "attributes": { @@ -6997,13 +8141,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 181, + "referencedDeclaration": 220, "type": "bytes memory", "value": "data" }, - "id": 212, + "id": 251, "name": "Identifier", - "src": "2901:4:0" + "src": "3282:4:0" }, { "attributes": { @@ -7026,29 +8170,29 @@ "type": "type(bool)", "value": "bool" }, - "id": 213, + "id": 252, "name": "ElementaryTypeNameExpression", - "src": "2908:4:0" + "src": "3289:4:0" } ], - "id": 214, + "id": 253, "name": "TupleExpression", - "src": "2907:6:0" + "src": "3288:6:0" } ], - "id": 215, + "id": 254, "name": "FunctionCall", - "src": "2890:24:0" + "src": "3271:24:0" } ], - "id": 216, + "id": 255, "name": "Assignment", - "src": "2880:34:0" + "src": "3261:34:0" } ], - "id": 217, + "id": 256, "name": "ExpressionStatement", - "src": "2880:34:0" + "src": "3261:34:0" }, { "children": [ @@ -7080,16 +8224,16 @@ } ], "overloadedDeclarations": [ - 3263, - 3264 + 1018, + 1019 ], - "referencedDeclaration": 3264, + "referencedDeclaration": 1019, "type": "function (bool,string memory) pure", "value": "require" }, - "id": 218, + "id": 257, "name": "Identifier", - "src": "2922:7:0" + "src": "3303:7:0" }, { "attributes": { @@ -7097,13 +8241,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 179, + "referencedDeclaration": 218, "type": "bool", "value": "success" }, - "id": 219, + "id": 258, "name": "Identifier", - "src": "2930:7:0" + "src": "3311:7:0" }, { "attributes": { @@ -7118,49 +8262,49 @@ "type": "literal_string \"not enough tokens. Token returns false.\"", "value": "not enough tokens. Token returns false." }, - "id": 220, + "id": 259, "name": "Literal", - "src": "2939:41:0" + "src": "3320:41:0" } ], - "id": 221, + "id": 260, "name": "FunctionCall", - "src": "2922:59:0" + "src": "3303:59:0" } ], - "id": 222, + "id": 261, "name": "ExpressionStatement", - "src": "2922:59:0" + "src": "3303:59:0" } ], - "id": 223, + "id": 262, "name": "Block", - "src": "2792:196:0" + "src": "3173:196:0" } ], - "id": 224, + "id": 263, "name": "IfStatement", - "src": "2771:217:0" + "src": "3152:217:0" } ], - "id": 225, + "id": 264, "name": "Block", - "src": "2515:477:0" + "src": "2896:477:0" } ], - "id": 226, + "id": 265, "name": "FunctionDefinition", - "src": "2448:544:0" + "src": "2829:544:0" } ], - "id": 227, + "id": 266, "name": "ContractDefinition", - "src": "805:2189:0" + "src": "805:2570:0" } ], - "id": 228, + "id": 267, "name": "SourceUnit", - "src": "755:2240:0" + "src": "755:2621:0" }, "compiler": { "name": "solc", @@ -7170,14 +8314,14 @@ "42220": { "events": {}, "links": { - "Hasher": "0xD75035293f552aB5c33483f321DBf0DfA1C7c71d" + "Hasher": "0x5666A6E07d7b991489b1D0f53d37B664B312a1fE" }, - "address": "0x86FEFc3b3d4e82032A13ce41A2590dd666987780", - "transactionHash": "0xec93349397de563331eaa82256102fe751b05b26dd3ae4b5005d5b2ba941ee7e" + "address": "0xAB0931522889cD50b3519b24a2d74c825b1A3adC", + "transactionHash": "0x708b8ad77da6ce6a7ce2d205c83cc7e4e4aa0dcac9bf6911ee71740263a913cf" } }, "schemaVersion": "3.3.4", - "updatedAt": "2021-03-22T02:51:51.367Z", + "updatedAt": "2021-04-02T22:54:11.029Z", "networkType": "ethereum", "devdoc": { "methods": { diff --git a/client/contracts/CELOTornado.2.json b/client/contracts/CELOTornado.2.json index 4a94674..bd4fb3c 100644 --- a/client/contracts/CELOTornado.2.json +++ b/client/contracts/CELOTornado.2.json @@ -8,6 +8,11 @@ "name": "_verifier", "type": "address" }, + { + "internalType": "contract IFeeManager", + "name": "_feeManager", + "type": "address" + }, { "internalType": "uint256", "name": "_denomination", @@ -215,6 +220,21 @@ "stateMutability": "payable", "type": "function" }, + { + "constant": true, + "inputs": [], + "name": "feeManager", + "outputs": [ + { + "internalType": "contract IFeeManager", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, { "constant": true, "inputs": [ @@ -406,6 +426,21 @@ "stateMutability": "view", "type": "function" }, + { + "constant": true, + "inputs": [], + "name": "protocolFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, { "constant": true, "inputs": [ @@ -539,21 +574,21 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVerifier\",\"name\":\"_verifier\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_denomination\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_merkleTreeHeight\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"leafIndex\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"nullifierHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"Withdrawal\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"FIELD_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"ROOT_HISTORY_SIZE\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"ZERO_VALUE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newOperator\",\"type\":\"address\"}],\"name\":\"changeOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"commitments\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"currentRootIndex\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"denomination\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_commitment\",\"type\":\"bytes32\"}],\"name\":\"deposit\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"filledSubtrees\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getLastRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_left\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_right\",\"type\":\"bytes32\"}],\"name\":\"hashLeftRight\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_root\",\"type\":\"bytes32\"}],\"name\":\"isKnownRoot\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_nullifierHash\",\"type\":\"bytes32\"}],\"name\":\"isSpent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"_nullifierHashes\",\"type\":\"bytes32[]\"}],\"name\":\"isSpentArray\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"spent\",\"type\":\"bool[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"levels\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"nextIndex\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"nullifierHashes\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"operator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"roots\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newVerifier\",\"type\":\"address\"}],\"name\":\"updateVerifier\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"verifier\",\"outputs\":[{\"internalType\":\"contract IVerifier\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_proof\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"_root\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_nullifierHash\",\"type\":\"bytes32\"},{\"internalType\":\"address payable\",\"name\":\"_recipient\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"_relayer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_refund\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"zeros\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"changeOperator(address)\":{\"details\":\"operator can change his address \"},\"deposit(bytes32)\":{\"details\":\"Deposit funds into the contract. The caller must send (for ETH) or approve (for ERC20) value equal to or `denomination` of this instance.\",\"params\":{\"_commitment\":\"the note commitment, which is PedersenHash(nullifier + secret)\"}},\"getLastRoot()\":{\"details\":\"Returns the last root\"},\"hashLeftRight(bytes32,bytes32)\":{\"details\":\"Hash 2 tree leaves, returns MiMC(_left, _right)\"},\"isKnownRoot(bytes32)\":{\"details\":\"Whether the root is present in the root history\"},\"isSpent(bytes32)\":{\"details\":\"whether a note is already spent \"},\"isSpentArray(bytes32[])\":{\"details\":\"whether an array of notes is already spent \"},\"updateVerifier(address)\":{\"details\":\"allow operator to update SNARK verification keys. This is needed to update keys after the final trusted setup ceremony is held. After that operator rights are supposed to be transferred to zero address\"},\"withdraw(bytes,bytes32,bytes32,address,address,uint256,uint256)\":{\"details\":\"Withdraw a deposit from the contract. `proof` is a zkSNARK proof data, and input is an array of circuit public inputs `input` array consists of: - merkle root of all deposits in the contract - hash of unique deposit nullifier to prevent double spends - the recipient of funds - optional fee that goes to the transaction sender (usually a relay)\"}}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/Users/brianli/dotfiles/tornado-core/contracts/ERC20Tornado.sol\":\"ERC20Tornado\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/brianli/dotfiles/tornado-core/contracts/ERC20Tornado.sol\":{\"keccak256\":\"0x708938fd083239d2e9cd17e457cf25a2150bb900082fad58af8b689f786aef9c\",\"urls\":[\"bzz-raw://f345afd62002f883c60c032cd0cb051663dc8a3e59a52bf44109633b96cb3685\",\"dweb:/ipfs/QmNwjnH2uyNoq9GPjNUv6Z1mgtiR5rY3K7EHY74RBjXMpw\"]},\"/Users/brianli/dotfiles/tornado-core/contracts/MerkleTreeWithHistory.sol\":{\"keccak256\":\"0x671cc9268dd70c47d18795f7e37fc4df11763fcbcca026edcf163f4239036254\",\"urls\":[\"bzz-raw://9c36a207ed164b60a514eae89bfb15e5b4de4b346c4a89a7a1cb50a940bc699d\",\"dweb:/ipfs/QmbPEqFJAGMpYduLEFsbPazyBsYWcjRtpth8X26wCHALwk\"]},\"/Users/brianli/dotfiles/tornado-core/contracts/Tornado.sol\":{\"keccak256\":\"0x09c70432243629ef44697fd3d0ca89d3578e2b1c9f46d90757371edb163c14da\",\"urls\":[\"bzz-raw://d2a2c9fa85c32cb15793282792cd25c71804a10aa5a911e41f3bcd07f5df117e\",\"dweb:/ipfs/QmeQ1s6ypNnP7fossR4x9svuuLjcSBtQ5spUTmWGZY5Ljr\"]},\"@openzeppelin/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0xb63221b23818d622bfd83d18e0968307e4fcb7a35536bdceded76e1cf8349acd\",\"urls\":[\"bzz-raw://44e1e8c22362c4708a8c3362735f1465f5b05e2f7315e16c7010d694ce019d73\",\"dweb:/ipfs/QmWj9g8X1hxkXRre2kwkEjLBetjuzmSbWHD81bsSojnBkS\"]}},\"version\":1}", - "bytecode": "0x6080604052600380546001600160401b03191690553480156200002157600080fd5b5060405162001d1238038062001d12833981810160405260a08110156200004757600080fd5b50805160208201516040830151606084015160809094015192939192909190848484848163ffffffff8116620000af5760405162461bcd60e51b815260040180806020018281038252602781526020018062001c896027913960400191505060405180910390fd5b60208163ffffffff1610620000f65760405162461bcd60e51b815260040180806020018281038252602281526020018062001cd06022913960400191505060405180910390fd5b6000805463ffffffff191663ffffffff83161781556002805460018181019092557f2fe54c60d3acabf3343a35b6eba15db4821b340f76e741e2249685ed4899af6c60008051602062001c48833981519152909101819055815480830183559282905260008051602062001cf28339815191529092018290555b60005463ffffffff9081169082161015620001e4576200019a82806001600160e01b036200029f16565b60028054600181810190925560008051602062001c488339815191520182905580548082018255600082905260008051602062001cf2833981519152018290559092500162000170565b50620001fa81806001600160e01b036200029f16565b60046000015550506068805460ff19166001179055826200024d5760405162461bcd60e51b815260040180806020018281038252602581526020018062001c236025913960400191505060405180910390fd5b606c80546001600160a01b039586166001600160a01b031991821617909155606d80549286169282169290921790915560699290925550606e8054939092169216919091179055506200048c92505050565b600060008051602062001cb0833981519152831062000305576040805162461bcd60e51b815260206004820181905260248201527f5f6c6566742073686f756c6420626520696e7369646520746865206669656c64604482015290519081900360640190fd5b60008051602062001cb08339815191528210620003545760405162461bcd60e51b815260040180806020018281038252602181526020018062001c686021913960400191505060405180910390fd5b6040805163f47d33b560e01b81526004810185905260006024820181905282518693919273__Hasher________________________________9263f47d33b592604480840193829003018186803b158015620003af57600080fd5b505af4158015620003c4573d6000803e3d6000fd5b505050506040513d6040811015620003db57600080fd5b508051602090910151909250905060008051602062001cb0833981519152848308915073__Hasher________________________________63f47d33b583836040518363ffffffff1660e01b81526004018083815260200182815260200192505050604080518083038186803b1580156200045557600080fd5b505af41580156200046a573d6000803e3d6000fd5b505050506040513d60408110156200048157600080fd5b505195945050505050565b611787806200049c6000396000f3fe60806040526004361061014b5760003560e01c806397fc007c116100b6578063e5285dcc1161006f578063e5285dcc14610514578063e82955881461053e578063ec73295914610568578063f178e47c1461057d578063fc0c546a146105a7578063fc7e9c6f146105bc5761014b565b806397fc007c146103a55780639fa12d0b146103d8578063b214faa5146104a3578063ba70f757146104c0578063c2b40ae4146104d5578063cd87a3b4146104ff5761014b565b80634ecf518b116101085780634ecf518b146102e4578063570ca735146103125780636d9833e314610327578063839df945146103515780638bca6d161461037b57806390eeb02b146103905761014b565b806306394c9b1461015057806317cc915c1461018557806321a0adb6146101c35780632b7ac3f31461025c57806338bf282e1461028d578063414a37ba146102cf575b600080fd5b34801561015c57600080fd5b506101836004803603602081101561017357600080fd5b50356001600160a01b03166105d1565b005b34801561019157600080fd5b506101af600480360360208110156101a857600080fd5b503561063c565b604080519115158252519081900360200190f35b610183600480360360e08110156101d957600080fd5b810190602081018135600160201b8111156101f357600080fd5b82018360208201111561020557600080fd5b803590602001918460018302840111600160201b8311171561022657600080fd5b91935091508035906020810135906001600160a01b03604082013581169160608101359091169060808101359060a00135610651565b34801561026857600080fd5b5061027161099e565b604080516001600160a01b039092168252519081900360200190f35b34801561029957600080fd5b506102bd600480360360408110156102b057600080fd5b50803590602001356109ad565b60408051918252519081900360200190f35b3480156102db57600080fd5b506102bd610b8e565b3480156102f057600080fd5b506102f9610ba0565b6040805163ffffffff9092168252519081900360200190f35b34801561031e57600080fd5b50610271610bac565b34801561033357600080fd5b506101af6004803603602081101561034a57600080fd5b5035610bbb565b34801561035d57600080fd5b506101af6004803603602081101561037457600080fd5b5035610c2e565b34801561038757600080fd5b506102bd610c43565b34801561039c57600080fd5b506102f9610c49565b3480156103b157600080fd5b50610183600480360360208110156103c857600080fd5b50356001600160a01b0316610c55565b3480156103e457600080fd5b50610453600480360360208110156103fb57600080fd5b810190602081018135600160201b81111561041557600080fd5b82018360208201111561042757600080fd5b803590602001918460208302840111600160201b8311171561044857600080fd5b509092509050610cc0565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561048f578181015183820152602001610477565b505050509050019250505060405180910390f35b610183600480360360208110156104b957600080fd5b5035610d48565b3480156104cc57600080fd5b506102bd610e75565b3480156104e157600080fd5b506102bd600480360360208110156104f857600080fd5b5035610e95565b34801561050b57600080fd5b506102f9610ea9565b34801561052057600080fd5b506101af6004803603602081101561053757600080fd5b5035610eae565b34801561054a57600080fd5b506102bd6004803603602081101561056157600080fd5b5035610ec3565b34801561057457600080fd5b506102bd610ee1565b34801561058957600080fd5b506102bd600480360360208110156105a057600080fd5b5035610f05565b3480156105b357600080fd5b50610271610f12565b3480156105c857600080fd5b506102f9610f21565b606d546001600160a01b0316331461061a5760405162461bcd60e51b815260040180806020018281038252602581526020018061172e6025913960400191505060405180910390fd5b606d80546001600160a01b0319166001600160a01b0392909216919091179055565b606a6020526000908152604090205460ff1681565b60685460ff166106a8576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6068805460ff19169055606954821115610709576040805162461bcd60e51b815260206004820152601a60248201527f4665652065786365656473207472616e736665722076616c7565000000000000604482015290519081900360640190fd5b6000858152606a602052604090205460ff161561076d576040805162461bcd60e51b815260206004820152601f60248201527f546865206e6f746520686173206265656e20616c7265616479207370656e7400604482015290519081900360640190fd5b61077686610bbb565b6107c7576040805162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742066696e6420796f7572206d65726b6c6520726f6f7400000000604482015290519081900360640190fd5b606c546040805160c08082018352898252602082018990526001600160a01b038881168385015287811660608401526080830187905260a08301869052925163695ef6f960e01b8152929093169263695ef6f9928c928c9290916004810191829160240190849080838360005b8381101561084c578181015183820152602001610834565b505050509050018281038252858582818152602001925080828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b15801561089e57600080fd5b505af11580156108b2573d6000803e3d6000fd5b505050506040513d60208110156108c857600080fd5b5051610914576040805162461bcd60e51b815260206004820152601660248201527524b73b30b634b2103bb4ba34323930bb90383937b7b360511b604482015290519081900360640190fd5b6000858152606a60205260409020805460ff1916600117905561093984848484610f34565b604080516001600160a01b038681168252602082018890528183018590529151918516917fe9e508bad6d4c3227e881ca19068f099da81b5164dd6d62b2eaf1e8bc6c349319181900360600190a250506068805460ff19166001179055505050505050565b606c546001600160a01b031681565b60006000805160206116bd8339815191528310610a11576040805162461bcd60e51b815260206004820181905260248201527f5f6c6566742073686f756c6420626520696e7369646520746865206669656c64604482015290519081900360640190fd5b6000805160206116bd8339815191528210610a5d5760405162461bcd60e51b815260040180806020018281038252602181526020018061166d6021913960400191505060405180910390fd5b6040805163f47d33b560e01b81526004810185905260006024820181905282518693919273__Hasher________________________________9263f47d33b592604480840193829003018186803b158015610ab757600080fd5b505af4158015610acb573d6000803e3d6000fd5b505050506040513d6040811015610ae157600080fd5b50805160209091015190925090506000805160206116bd833981519152848308915073__Hasher________________________________63f47d33b583836040518363ffffffff1660e01b81526004018083815260200182815260200192505050604080518083038186803b158015610b5957600080fd5b505af4158015610b6d573d6000803e3d6000fd5b505050506040513d6040811015610b8357600080fd5b505195945050505050565b6000805160206116bd83398151915281565b60005463ffffffff1681565b606d546001600160a01b031681565b600081610bca57506000610c29565b60035463ffffffff165b60048163ffffffff1660648110610be757fe5b0154831415610bfa576001915050610c29565b63ffffffff8116610c09575060645b6003546000199091019063ffffffff80831691161415610bd45760009150505b919050565b606b6020526000908152604090205460ff1681565b60695481565b60035463ffffffff1681565b606d546001600160a01b03163314610c9e5760405162461bcd60e51b815260040180806020018281038252602581526020018061172e6025913960400191505060405180910390fd5b606c80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518281526020808402820101909152606090828015610cec578160200160208202803883390190505b50905060005b82811015610d4157610d15848483818110610d0957fe5b90506020020135610eae565b15610d39576001828281518110610d2857fe5b911515602092830291909101909101525b600101610cf2565b5092915050565b60685460ff16610d9f576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6068805460ff191690556000818152606b602052604090205460ff1615610df75760405162461bcd60e51b81526004018080602001828103825260218152602001806116dd6021913960400191505060405180910390fd5b6000610e028261102f565b6000838152606b60205260409020805460ff191660011790559050610e256111c6565b6040805163ffffffff83168152426020820152815184927fa945e51eec50ab98c161376f0db4cf2aeba3ec92755fe2fcd388bdbbb80ff196928290030190a250506068805460ff19166001179055565b60035460009060049063ffffffff1660648110610e8e57fe5b0154905090565b60048160648110610ea257fe5b0154905081565b606481565b6000908152606a602052604090205460ff1690565b60028181548110610ed057fe5b600091825260209091200154905081565b7f2fe54c60d3acabf3343a35b6eba15db4821b340f76e741e2249685ed4899af6c81565b60018181548110610ed057fe5b606e546001600160a01b031681565b600354600160201b900463ffffffff1681565b803414610f725760405162461bcd60e51b81526004018080602001828103825260308152602001806116166030913960400191505060405180910390fd5b610f80848360695403611212565b8115610f9057610f908383611212565b8015611029576040516000906001600160a01b0386169083908381818185875af1925050503d8060008114610fe1576040519150601f19603f3d011682016040523d82523d6000602084013e610fe6565b606091505b5050905080611027576040516001600160a01b0385169083156108fc029084906000818181858888f19350505050158015611025573d6000803e3d6000fd5b505b505b50505050565b60035460008054909163ffffffff600160201b909104811691811660020a1681141561108c5760405162461bcd60e51b815260040180806020018281038252602f8152602001806115bd602f913960400191505060405180910390fd5b6003805463ffffffff600160201b80830482166001019091160267ffffffff000000001990911617905582600080805b60005463ffffffff908116908216101561116457600185166111205783925060028163ffffffff16815481106110ee57fe5b906000526020600020015491508360018263ffffffff168154811061110f57fe5b600091825260209091200155611144565b60018163ffffffff168154811061113357fe5b906000526020600020015492508391505b61114e83836109ad565b9350600263ffffffff86160494506001016110bc565b5060035460649063ffffffff908116600101166003805463ffffffff19169290910663ffffffff9081169290921790819055849160049116606481106111a657fe5b01555050600354600160201b900463ffffffff1660001901949350505050565b34156112035760405162461bcd60e51b81526004018080602001828103825260308152602001806116fe6030913960400191505060405180910390fd5b61121033306069546113dd565b565b606e54604080516001600160a01b038581166024830152604480830186905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000956060959316939282918083835b6020831061128f5780518252601f199092019160209182019101611270565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146112f1576040519150601f19603f3d011682016040523d82523d6000602084013e6112f6565b606091505b509150915081611341576040805162461bcd60e51b81526020600482015260116024820152706e6f7420656e6f75676820746f6b656e7360781b604482015290519081900360640190fd5b8051156110295780516020146113885760405162461bcd60e51b815260040180806020018281038252602a8152602001806115ec602a913960400191505060405180910390fd5b80806020019051602081101561139d57600080fd5b50519150816110295760405162461bcd60e51b81526004018080602001828103825260278152602001806116466027913960400191505060405180910390fd5b606e54604080516001600160a01b0386811660248301528581166044830152606480830186905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b178152925182516000956060959316939282918083835b602083106114625780518252601f199092019160209182019101611443565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146114c4576040519150601f19603f3d011682016040523d82523d6000602084013e6114c9565b606091505b509150915081611520576040805162461bcd60e51b815260206004820152601960248201527f6e6f7420656e6f75676820616c6c6f77656420746f6b656e7300000000000000604482015290519081900360640190fd5b8051156110275780516020146115675760405162461bcd60e51b815260040180806020018281038252602a8152602001806115ec602a913960400191505060405180910390fd5b80806020019051602081101561157c57600080fd5b50519150816110275760405162461bcd60e51b815260040180806020018281038252602f81526020018061168e602f913960400191505060405180910390fdfe4d65726b6c6520747265652069732066756c6c2e204e6f206d6f7265206c656166732063616e20626520616464656464617461206c656e6774682073686f756c64206265206569746865722030206f72203332206279746573496e636f727265637420726566756e6420616d6f756e742072656365697665642062792074686520636f6e74726163746e6f7420656e6f75676820746f6b656e732e20546f6b656e2072657475726e732066616c73652e5f72696768742073686f756c6420626520696e7369646520746865206669656c646e6f7420656e6f75676820616c6c6f77656420746f6b656e732e20546f6b656e2072657475726e732066616c73652e30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000154686520636f6d6d69746d656e7420686173206265656e207375626d69747465644554482076616c756520697320737570706f73656420746f206265203020666f7220455243323020696e7374616e63654f6e6c79206f70657261746f722063616e2063616c6c20746869732066756e6374696f6e2ea265627a7a72315820494b71139a3b0e5b3d4285ff58127e5c54881ed5204c3d740b94c1c4832e681c64736f6c6343000511003264656e6f6d696e6174696f6e2073686f756c642062652067726561746572207468616e2030405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace5f72696768742073686f756c6420626520696e7369646520746865206669656c645f747265654c6576656c732073686f756c642062652067726561746572207468616e207a65726f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000015f747265654c6576656c732073686f756c64206265206c657373207468616e203332b10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6", - "deployedBytecode": "0x60806040526004361061014b5760003560e01c806397fc007c116100b6578063e5285dcc1161006f578063e5285dcc14610514578063e82955881461053e578063ec73295914610568578063f178e47c1461057d578063fc0c546a146105a7578063fc7e9c6f146105bc5761014b565b806397fc007c146103a55780639fa12d0b146103d8578063b214faa5146104a3578063ba70f757146104c0578063c2b40ae4146104d5578063cd87a3b4146104ff5761014b565b80634ecf518b116101085780634ecf518b146102e4578063570ca735146103125780636d9833e314610327578063839df945146103515780638bca6d161461037b57806390eeb02b146103905761014b565b806306394c9b1461015057806317cc915c1461018557806321a0adb6146101c35780632b7ac3f31461025c57806338bf282e1461028d578063414a37ba146102cf575b600080fd5b34801561015c57600080fd5b506101836004803603602081101561017357600080fd5b50356001600160a01b03166105d1565b005b34801561019157600080fd5b506101af600480360360208110156101a857600080fd5b503561063c565b604080519115158252519081900360200190f35b610183600480360360e08110156101d957600080fd5b810190602081018135600160201b8111156101f357600080fd5b82018360208201111561020557600080fd5b803590602001918460018302840111600160201b8311171561022657600080fd5b91935091508035906020810135906001600160a01b03604082013581169160608101359091169060808101359060a00135610651565b34801561026857600080fd5b5061027161099e565b604080516001600160a01b039092168252519081900360200190f35b34801561029957600080fd5b506102bd600480360360408110156102b057600080fd5b50803590602001356109ad565b60408051918252519081900360200190f35b3480156102db57600080fd5b506102bd610b8e565b3480156102f057600080fd5b506102f9610ba0565b6040805163ffffffff9092168252519081900360200190f35b34801561031e57600080fd5b50610271610bac565b34801561033357600080fd5b506101af6004803603602081101561034a57600080fd5b5035610bbb565b34801561035d57600080fd5b506101af6004803603602081101561037457600080fd5b5035610c2e565b34801561038757600080fd5b506102bd610c43565b34801561039c57600080fd5b506102f9610c49565b3480156103b157600080fd5b50610183600480360360208110156103c857600080fd5b50356001600160a01b0316610c55565b3480156103e457600080fd5b50610453600480360360208110156103fb57600080fd5b810190602081018135600160201b81111561041557600080fd5b82018360208201111561042757600080fd5b803590602001918460208302840111600160201b8311171561044857600080fd5b509092509050610cc0565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561048f578181015183820152602001610477565b505050509050019250505060405180910390f35b610183600480360360208110156104b957600080fd5b5035610d48565b3480156104cc57600080fd5b506102bd610e75565b3480156104e157600080fd5b506102bd600480360360208110156104f857600080fd5b5035610e95565b34801561050b57600080fd5b506102f9610ea9565b34801561052057600080fd5b506101af6004803603602081101561053757600080fd5b5035610eae565b34801561054a57600080fd5b506102bd6004803603602081101561056157600080fd5b5035610ec3565b34801561057457600080fd5b506102bd610ee1565b34801561058957600080fd5b506102bd600480360360208110156105a057600080fd5b5035610f05565b3480156105b357600080fd5b50610271610f12565b3480156105c857600080fd5b506102f9610f21565b606d546001600160a01b0316331461061a5760405162461bcd60e51b815260040180806020018281038252602581526020018061172e6025913960400191505060405180910390fd5b606d80546001600160a01b0319166001600160a01b0392909216919091179055565b606a6020526000908152604090205460ff1681565b60685460ff166106a8576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6068805460ff19169055606954821115610709576040805162461bcd60e51b815260206004820152601a60248201527f4665652065786365656473207472616e736665722076616c7565000000000000604482015290519081900360640190fd5b6000858152606a602052604090205460ff161561076d576040805162461bcd60e51b815260206004820152601f60248201527f546865206e6f746520686173206265656e20616c7265616479207370656e7400604482015290519081900360640190fd5b61077686610bbb565b6107c7576040805162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742066696e6420796f7572206d65726b6c6520726f6f7400000000604482015290519081900360640190fd5b606c546040805160c08082018352898252602082018990526001600160a01b038881168385015287811660608401526080830187905260a08301869052925163695ef6f960e01b8152929093169263695ef6f9928c928c9290916004810191829160240190849080838360005b8381101561084c578181015183820152602001610834565b505050509050018281038252858582818152602001925080828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b15801561089e57600080fd5b505af11580156108b2573d6000803e3d6000fd5b505050506040513d60208110156108c857600080fd5b5051610914576040805162461bcd60e51b815260206004820152601660248201527524b73b30b634b2103bb4ba34323930bb90383937b7b360511b604482015290519081900360640190fd5b6000858152606a60205260409020805460ff1916600117905561093984848484610f34565b604080516001600160a01b038681168252602082018890528183018590529151918516917fe9e508bad6d4c3227e881ca19068f099da81b5164dd6d62b2eaf1e8bc6c349319181900360600190a250506068805460ff19166001179055505050505050565b606c546001600160a01b031681565b60006000805160206116bd8339815191528310610a11576040805162461bcd60e51b815260206004820181905260248201527f5f6c6566742073686f756c6420626520696e7369646520746865206669656c64604482015290519081900360640190fd5b6000805160206116bd8339815191528210610a5d5760405162461bcd60e51b815260040180806020018281038252602181526020018061166d6021913960400191505060405180910390fd5b6040805163f47d33b560e01b81526004810185905260006024820181905282518693919273__Hasher________________________________9263f47d33b592604480840193829003018186803b158015610ab757600080fd5b505af4158015610acb573d6000803e3d6000fd5b505050506040513d6040811015610ae157600080fd5b50805160209091015190925090506000805160206116bd833981519152848308915073__Hasher________________________________63f47d33b583836040518363ffffffff1660e01b81526004018083815260200182815260200192505050604080518083038186803b158015610b5957600080fd5b505af4158015610b6d573d6000803e3d6000fd5b505050506040513d6040811015610b8357600080fd5b505195945050505050565b6000805160206116bd83398151915281565b60005463ffffffff1681565b606d546001600160a01b031681565b600081610bca57506000610c29565b60035463ffffffff165b60048163ffffffff1660648110610be757fe5b0154831415610bfa576001915050610c29565b63ffffffff8116610c09575060645b6003546000199091019063ffffffff80831691161415610bd45760009150505b919050565b606b6020526000908152604090205460ff1681565b60695481565b60035463ffffffff1681565b606d546001600160a01b03163314610c9e5760405162461bcd60e51b815260040180806020018281038252602581526020018061172e6025913960400191505060405180910390fd5b606c80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518281526020808402820101909152606090828015610cec578160200160208202803883390190505b50905060005b82811015610d4157610d15848483818110610d0957fe5b90506020020135610eae565b15610d39576001828281518110610d2857fe5b911515602092830291909101909101525b600101610cf2565b5092915050565b60685460ff16610d9f576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6068805460ff191690556000818152606b602052604090205460ff1615610df75760405162461bcd60e51b81526004018080602001828103825260218152602001806116dd6021913960400191505060405180910390fd5b6000610e028261102f565b6000838152606b60205260409020805460ff191660011790559050610e256111c6565b6040805163ffffffff83168152426020820152815184927fa945e51eec50ab98c161376f0db4cf2aeba3ec92755fe2fcd388bdbbb80ff196928290030190a250506068805460ff19166001179055565b60035460009060049063ffffffff1660648110610e8e57fe5b0154905090565b60048160648110610ea257fe5b0154905081565b606481565b6000908152606a602052604090205460ff1690565b60028181548110610ed057fe5b600091825260209091200154905081565b7f2fe54c60d3acabf3343a35b6eba15db4821b340f76e741e2249685ed4899af6c81565b60018181548110610ed057fe5b606e546001600160a01b031681565b600354600160201b900463ffffffff1681565b803414610f725760405162461bcd60e51b81526004018080602001828103825260308152602001806116166030913960400191505060405180910390fd5b610f80848360695403611212565b8115610f9057610f908383611212565b8015611029576040516000906001600160a01b0386169083908381818185875af1925050503d8060008114610fe1576040519150601f19603f3d011682016040523d82523d6000602084013e610fe6565b606091505b5050905080611027576040516001600160a01b0385169083156108fc029084906000818181858888f19350505050158015611025573d6000803e3d6000fd5b505b505b50505050565b60035460008054909163ffffffff600160201b909104811691811660020a1681141561108c5760405162461bcd60e51b815260040180806020018281038252602f8152602001806115bd602f913960400191505060405180910390fd5b6003805463ffffffff600160201b80830482166001019091160267ffffffff000000001990911617905582600080805b60005463ffffffff908116908216101561116457600185166111205783925060028163ffffffff16815481106110ee57fe5b906000526020600020015491508360018263ffffffff168154811061110f57fe5b600091825260209091200155611144565b60018163ffffffff168154811061113357fe5b906000526020600020015492508391505b61114e83836109ad565b9350600263ffffffff86160494506001016110bc565b5060035460649063ffffffff908116600101166003805463ffffffff19169290910663ffffffff9081169290921790819055849160049116606481106111a657fe5b01555050600354600160201b900463ffffffff1660001901949350505050565b34156112035760405162461bcd60e51b81526004018080602001828103825260308152602001806116fe6030913960400191505060405180910390fd5b61121033306069546113dd565b565b606e54604080516001600160a01b038581166024830152604480830186905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000956060959316939282918083835b6020831061128f5780518252601f199092019160209182019101611270565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146112f1576040519150601f19603f3d011682016040523d82523d6000602084013e6112f6565b606091505b509150915081611341576040805162461bcd60e51b81526020600482015260116024820152706e6f7420656e6f75676820746f6b656e7360781b604482015290519081900360640190fd5b8051156110295780516020146113885760405162461bcd60e51b815260040180806020018281038252602a8152602001806115ec602a913960400191505060405180910390fd5b80806020019051602081101561139d57600080fd5b50519150816110295760405162461bcd60e51b81526004018080602001828103825260278152602001806116466027913960400191505060405180910390fd5b606e54604080516001600160a01b0386811660248301528581166044830152606480830186905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b178152925182516000956060959316939282918083835b602083106114625780518252601f199092019160209182019101611443565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146114c4576040519150601f19603f3d011682016040523d82523d6000602084013e6114c9565b606091505b509150915081611520576040805162461bcd60e51b815260206004820152601960248201527f6e6f7420656e6f75676820616c6c6f77656420746f6b656e7300000000000000604482015290519081900360640190fd5b8051156110275780516020146115675760405162461bcd60e51b815260040180806020018281038252602a8152602001806115ec602a913960400191505060405180910390fd5b80806020019051602081101561157c57600080fd5b50519150816110275760405162461bcd60e51b815260040180806020018281038252602f81526020018061168e602f913960400191505060405180910390fdfe4d65726b6c6520747265652069732066756c6c2e204e6f206d6f7265206c656166732063616e20626520616464656464617461206c656e6774682073686f756c64206265206569746865722030206f72203332206279746573496e636f727265637420726566756e6420616d6f756e742072656365697665642062792074686520636f6e74726163746e6f7420656e6f75676820746f6b656e732e20546f6b656e2072657475726e732066616c73652e5f72696768742073686f756c6420626520696e7369646520746865206669656c646e6f7420656e6f75676820616c6c6f77656420746f6b656e732e20546f6b656e2072657475726e732066616c73652e30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000154686520636f6d6d69746d656e7420686173206265656e207375626d69747465644554482076616c756520697320737570706f73656420746f206265203020666f7220455243323020696e7374616e63654f6e6c79206f70657261746f722063616e2063616c6c20746869732066756e6374696f6e2ea265627a7a72315820494b71139a3b0e5b3d4285ff58127e5c54881ed5204c3d740b94c1c4832e681c64736f6c63430005110032", - "sourceMap": "805:2189:0:-;;;1430:34:2;;;-1:-1:-1;;;;;;1468:27:2;;;867:237:0;5:2:-1;;;;30:1;27;20:12;5:2;867:237:0;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;867:237:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1646:15:2;;;1638:67;;;;-1:-1:-1;;;1638:67:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1733:2;1719:11;:16;;;1711:63;;;;-1:-1:-1;;;1711:63:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1780:6;:20;;-1:-1:-1;;1780:20:2;;;;;;;1854:5;27:10:-1;;-1:-1;23:18;;;45:23;;;1088:77:2;-1:-1:-1;;;;;;;;;;;1854:23:2;;;;;;27:10:-1;;23:18;;;45:23;;1883:32:2;;;;-1:-1:-1;;;;;;;;;;;1883:32:2;;;;;;1922:175;1945:6;;;;;;1941:10;;;;1922:175;;;1980:39;1994:11;;-1:-1:-1;;;;;1980:13:2;:39;:::i;:::-;2027:5;27:10:-1;;39:1;23:18;;;45:23;;;-1:-1;;;;;;;;;;;2027:23:2;;;;27:10:-1;;23:18;;;45:23;;-1:-1;2058:32:2;;;-1:-1:-1;;;;;;;;;;;2058:32:2;;;;1966:53;;-1:-1:-1;1953:3:2;1922:175;;;-1:-1:-1;2114:39:2;2128:11;;-1:-1:-1;;;;;2114:13:2;:39;:::i;:::-;2103:5;2109:1;2103:8;:50;-1:-1:-1;;1421:11:18;:18;;-1:-1:-1;;1421:18:18;1435:4;1421:18;;;2260:17:8;2252:67;;;;-1:-1:-1;;;2252:67:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2325:8;:20;;-1:-1:-1;;;;;2325:20:8;;;-1:-1:-1;;;;;;2325:20:8;;;;;;;2351:8;:20;;;;;;;;;;;;;;;2377:12;:28;;;;-1:-1:-1;1085:5:0;:14;;;;;;;;;;;;;;-1:-1:-1;805:2189:0;;-1:-1:-1;;;805:2189:0;2230:445:2;2305:7;-1:-1:-1;;;;;;;;;;;2328:27:2;;2320:72;;;;;-1:-1:-1;;;2320:72:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2406:28:2;;2398:74;;;;-1:-1:-1;;;2398:74:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2538:23;;;-1:-1:-1;;;2538:23:2;;;;;;;;2478:9;2538:23;;;;;;;;2498:5;;2478:9;;2538:6;;:17;;:23;;;;;;;;;;:6;:23;;;5:2:-1;;;;30:1;27;20:12;5:2;2538:23:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2538:23:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2538:23:2;;;;;;;;;-1:-1:-1;2538:23:2;-1:-1:-1;;;;;;;;;;;;2589:6:2;2578:1;2571:38;2567:42;;2624:6;:17;2642:1;2645;2624:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2624:23:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2624:23:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2624:23:2;;2230:445;-1:-1:-1;;;;;2230:445:2:o;805:2189:0:-;;;;;;;", - "deployedSourceMap": "805:2189:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5355:102:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5355:102:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5355:102:8;-1:-1:-1;;;;;5355:102:8;;:::i;:::-;;1089:47;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1089:47:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1089:47:8;;:::i;:::-;;;;;;;;;;;;;;;;;;3478:781;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;3478:781:8;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;3478:781:8;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3478:781:8;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;3478:781:8;;-1:-1:-1;3478:781:8;-1:-1:-1;3478:781:8;;;;;;;;-1:-1:-1;;;;;3478:781:8;;;;;;;;;;;;;;;;;;;;;;;;:::i;1278:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1278:25:8;;;:::i;:::-;;;;-1:-1:-1;;;;;1278:25:8;;;;;;;;;;;;;;2230:445:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2230:445:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2230:445:2;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;933:114;;8:9:-1;5:2;;;30:1;27;20:12;5:2;933:114:2;;;:::i;1209:20::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1209:20:2;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1463:23:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1463:23:8;;;:::i;3553:342:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3553:342:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3553:342:2;;:::i;1231:43:8:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1231:43:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1231:43:8;;:::i;1058:27::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1058:27:8;;;:::i;1430:34:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1430:34:2;;;:::i;5192:113:8:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5192:113:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5192:113:8;-1:-1:-1;;;;;5192:113:8;;:::i;4669:293::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4669:293:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4669:293:8;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;4669:293:8;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4669:293:8;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;4669:293:8;;-1:-1:-1;4669:293:8;-1:-1:-1;4669:293:8;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4669:293:8;;;;;;;;;;;;;;;;;2658:324;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2658:324:8;;:::i;3941:93:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3941:93:2;;;:::i;1549:39::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1549:39:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1549:39:2;;:::i;1499:46::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1499:46:2;;;:::i;4492:116:8:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4492:116:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4492:116:8;;:::i;1404:22:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1404:22:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1404:22:2;;:::i;1051:114::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1051:114:2;;;:::i;1369:31::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1369:31:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1369:31:2;;:::i;842:20:0:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;842:20:0;;;:::i;1468:27:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1468:27:2;;;:::i;5355:102:8:-;1540:8;;-1:-1:-1;;;;;1540:8:8;1526:10;:22;1518:72;;;;-1:-1:-1;;;1518:72:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5429:8;:23;;-1:-1:-1;;;;;;5429:23:8;-1:-1:-1;;;;;5429:23:8;;;;;;;;;;5355:102::o;1089:47::-;;;;;;;;;;;;;;;:::o;3478:781::-;1934:11:18;;;;1926:55;;;;;-1:-1:-1;;;1926:55:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;2056:11;:19;;-1:-1:-1;;2056:19:18;;;3695:12:8;;3687:20;;;3679:59;;;;;-1:-1:-1;;;3679:59:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;3753:31;;;;:15;:31;;;;;;;;3752:32;3744:76;;;;;-1:-1:-1;;;3744:76:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;3834:18;3846:5;3834:11;:18::i;:::-;3826:59;;;;;-1:-1:-1;;;3826:59:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;3932:8;;:126;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4003:19:8;;;3932:126;;;;4024:17;;;3932:126;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3932:126:8;;:8;;;;;:20;;3953:6;;;;3932:126;;;;;;;;;;;;;;;;:8;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3932:126:8;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;3932:126:8;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3932:126:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3932:126:8;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3932:126:8;3924:161;;;;;-1:-1:-1;;;3924:161:8;;;;;;;;;;;;-1:-1:-1;;;3924:161:8;;;;;;;;;;;;;;;4092:31;;;;:15;:31;;;;;:38;;-1:-1:-1;;4092:38:8;4126:4;4092:38;;;4136:53;4153:10;4165:8;4175:4;4181:7;4136:16;:53::i;:::-;4200:54;;;-1:-1:-1;;;;;4200:54:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2230:11:18;:18;;-1:-1:-1;;2230:18:18;2244:4;2230:18;;;-1:-1:-1;;;;;;3478:781:8:o;1278:25::-;;;-1:-1:-1;;;;;1278:25:8;;:::o;2230:445:2:-;2305:7;-1:-1:-1;;;;;;;;;;;2328:27:2;;2320:72;;;;;-1:-1:-1;;;2320:72:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2406:28:2;;2398:74;;;;-1:-1:-1;;;2398:74:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2538:23;;;-1:-1:-1;;;2538:23:2;;;;;;;;2478:9;2538:23;;;;;;;;2498:5;;2478:9;;2538:6;;:17;;:23;;;;;;;;;;:6;:23;;;5:2:-1;;;;30:1;27;20:12;5:2;2538:23:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2538:23:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2538:23:2;;;;;;;;;-1:-1:-1;2538:23:2;-1:-1:-1;;;;;;;;;;;;2589:6:2;2578:1;2571:38;2567:42;;2624:6;:17;2642:1;2645;2624:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2624:23:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2624:23:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2624:23:2;;2230:445;-1:-1:-1;;;;;2230:445:2:o;933:114::-;-1:-1:-1;;;;;;;;;;;933:114:2;:::o;1209:20::-;;;;;;:::o;1463:23:8:-;;;-1:-1:-1;;;;;1463:23:8;;:::o;3553:342:2:-;3609:4;3625:10;3621:43;;-1:-1:-1;3652:5:2;3645:12;;3621:43;3680:16;;;;3702:171;3726:5;3732:1;3726:8;;;;;;;;;;;3717:5;:17;3713:53;;;3753:4;3746:11;;;;;3713:53;3777:6;;;3773:52;;-1:-1:-1;1542:3:2;3773:52;3855:16;;-1:-1:-1;;3832:3:2;;;;3855:16;3850:21;;;3855:16;;3850:21;;3702:171;;3885:5;3878:12;;;3553:342;;;;:::o;1231:43:8:-;;;;;;;;;;;;;;;:::o;1058:27::-;;;;:::o;1430:34:2:-;;;;;;:::o;5192:113:8:-;1540:8;;-1:-1:-1;;;;;1540:8:8;1526:10;:22;1518:72;;;;-1:-1:-1;;;1518:72:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5266:8;:34;;-1:-1:-1;;;;;;5266:34:8;-1:-1:-1;;;;;5266:34:8;;;;;;;;;;5192:113::o;4669:293::-;4785:35;;;;;;;;;;;;;;;;4750:19;;4796:16;4785:35;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;4785:35:8;-1:-1:-1;4777:43:8;-1:-1:-1;4830:6:8;4826:132;4842:27;;;4826:132;;;4888:28;4896:16;;4913:1;4896:19;;;;;;;;;;;;;4888:7;:28::i;:::-;4884:68;;;4939:4;4928:5;4934:1;4928:8;;;;;;;;:15;;;:8;;;;;;;;;;;:15;4884:68;4871:3;;4826:132;;;;4669:293;;;;:::o;2658:324::-;1934:11:18;;;;1926:55;;;;;-1:-1:-1;;;1926:55:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;2056:11;:19;;-1:-1:-1;;2056:19:18;;;2070:5;2741:24:8;;;:11;:24;;;;;;2056:19:18;2741:24:8;2740:25;2732:71;;;;-1:-1:-1;;;2732:71:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2810:20;2833;2841:11;2833:7;:20::i;:::-;2859:24;;;;:11;:24;;;;;:31;;-1:-1:-1;;2859:31:8;2886:4;2859:31;;;2810:43;-1:-1:-1;2896:17:8;:15;:17::i;:::-;2925:52;;;;;;;;2961:15;2925:52;;;;;;2933:11;;2925:52;;;;;;;;-1:-1:-1;;2230:11:18;:18;;-1:-1:-1;;2230:18:18;2244:4;2230:18;;;2658:324:8:o;3941:93:2:-;4012:16;;3984:7;;4006:5;;4012:16;;4006:23;;;;;;;;;3999:30;;3941:93;:::o;1549:39::-;;;;;;;;;;;;;-1:-1:-1;1549:39:2;:::o;1499:46::-;1542:3;1499:46;:::o;4492:116:8:-;4553:4;4572:31;;;:15;:31;;;;;;;;;4492:116::o;1404:22:2:-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1404:22:2;:::o;1051:114::-;1088:77;1051:114;:::o;1369:31::-;;;;;;;;;;842:20:0;;;-1:-1:-1;;;;;842:20:0;;:::o;1468:27:2:-;;;-1:-1:-1;;;1468:27:2;;;;;:::o;1303:547:0:-;1450:7;1437:9;:20;1429:81;;;;-1:-1:-1;;;1429:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1517:51;1536:10;1563:4;1548:12;;:19;1517:18;:51::i;:::-;1578:8;;1574:63;;1596:34;1615:8;1625:4;1596:18;:34::i;:::-;1647:11;;1643:203;;1687:34;;1669:12;;-1:-1:-1;;;;;1687:15:0;;;1709:7;;1669:12;1687:34;1669:12;1687:34;1709:7;1687:15;:34;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;1668:53:0;;;1734:7;1729:111;;1805:26;;-1:-1:-1;;;;;1805:17:0;;;:26;;;;;1823:7;;1805:26;;;;1823:7;1805:17;:26;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1805:26:0;1729:111;1643:203;;1303:547;;;;:::o;2679:802:2:-;2770:9;;2728:12;2820:6;;2728:12;;2770:9;-1:-1:-1;;;2770:9:2;;;;;;2820:6;;2816:1;2809:17;2793:33;;;;2785:93;;;;-1:-1:-1;;;2785:93:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2884:9;:14;;;-1:-1:-1;;;2884:14:2;;;;;2897:1;2884:14;;;;;-1:-1:-1;;2884:14:2;;;;;;2931:5;-1:-1:-1;;;2980:355:2;3003:6;;;;;;2999:10;;;;2980:355;;;3028:16;;;3024:225;;3068:16;3061:23;;3102:5;3108:1;3102:8;;;;;;;;;;;;;;;;;;3094:16;;3141;3121:14;3136:1;3121:17;;;;;;;;;;;;;;;;;;;:36;3024:225;;;3189:14;3204:1;3189:17;;;;;;;;;;;;;;;;;;3182:24;;3224:16;3216:24;;3024:225;3276:26;3290:4;3296:5;3276:13;:26::i;:::-;3257:45;-1:-1:-1;3327:1:2;3311:17;;;;;-1:-1:-1;3011:3:2;;2980:355;;;-1:-1:-1;3361:16:2;;1542:3;;3360:42;3361:16;;;;:20;3360:42;3341:16;:61;;-1:-1:-1;;3341:61:2;3360:42;;;;3341:61;;;;;;;;;;;;3434:16;;3408:5;;3414:16;3408:23;;;;;;;;:42;-1:-1:-1;;3463:9:2;;-1:-1:-1;;;3463:9:2;;;;-1:-1:-1;;3463:13:2;;2679:802;-1:-1:-1;;;;2679:802:2:o;1108:191:0:-;1158:9;:14;1150:75;;;;-1:-1:-1;;;1150:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1231:63;1254:10;1274:4;1281:12;;1231:22;:63::i;:::-;1108:191::o;2448:544::-;2557:5;;2568:63;;;-1:-1:-1;;;;;2568:63:0;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;2568:63:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2557:75:0;;;;2522:12;;2536:17;;2557:5;;;2568:63;2557:75;;;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;2557:75:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2521:111:0;;;;2646:7;2638:37;;;;;-1:-1:-1;;;2638:37:0;;;;;;;;;;;;-1:-1:-1;;;2638:37:0;;;;;;;;;;;;;;;2775:11;;:15;2771:217;;2808:4;:11;2823:2;2808:17;2800:72;;;;-1:-1:-1;;;2800:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2901:4;2890:24;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2890:24:0;;-1:-1:-1;2890:24:0;2922:59;;;;-1:-1:-1;;;2922:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1854:590;1982:5;;1993:74;;;-1:-1:-1;;;;;1993:74:0;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1993:74:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1982:86:0;;;;1947:12;;1961:17;;1982:5;;;1993:74;1982:86;;;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;1982:86:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;1946:122:0;;;;2082:7;2074:45;;;;;-1:-1:-1;;;2074:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;2219:11;;:15;2215:225;;2252:4;:11;2267:2;2252:17;2244:72;;;;-1:-1:-1;;;2244:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2345:4;2334:24;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2334:24:0;;-1:-1:-1;2334:24:0;2366:67;;;;-1:-1:-1;;;2366:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", - "source": "// https://tornado.cash\n/*\n* d888888P dP a88888b. dP\n* 88 88 d8' `88 88\n* 88 .d8888b. 88d888b. 88d888b. .d8888b. .d888b88 .d8888b. 88 .d8888b. .d8888b. 88d888b.\n* 88 88' `88 88' `88 88' `88 88' `88 88' `88 88' `88 88 88' `88 Y8ooooo. 88' `88\n* 88 88. .88 88 88 88 88. .88 88. .88 88. .88 dP Y8. .88 88. .88 88 88 88\n* dP `88888P' dP dP dP `88888P8 `88888P8 `88888P' 88 Y88888P' `88888P8 `88888P' dP dP\n* ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo\n*/\n\npragma solidity 0.5.17;\n\nimport \"./Tornado.sol\";\n\ncontract ERC20Tornado is Tornado {\n address public token;\n\n constructor(\n IVerifier _verifier,\n uint256 _denomination,\n uint32 _merkleTreeHeight,\n address _operator,\n address _token\n ) Tornado(_verifier, _denomination, _merkleTreeHeight, _operator) public {\n token = _token;\n }\n\n function _processDeposit() internal {\n require(msg.value == 0, \"ETH value is supposed to be 0 for ERC20 instance\");\n _safeErc20TransferFrom(msg.sender, address(this), denomination);\n }\n\n function _processWithdraw(address payable _recipient, address payable _relayer, uint256 _fee, uint256 _refund) internal {\n require(msg.value == _refund, \"Incorrect refund amount received by the contract\");\n\n _safeErc20Transfer(_recipient, denomination - _fee);\n if (_fee > 0) {\n _safeErc20Transfer(_relayer, _fee);\n }\n\n if (_refund > 0) {\n (bool success, ) = _recipient.call.value(_refund)(\"\");\n if (!success) {\n // let's return _refund back to the relayer\n _relayer.transfer(_refund);\n }\n }\n }\n\n function _safeErc20TransferFrom(address _from, address _to, uint256 _amount) internal {\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd /* transferFrom */, _from, _to, _amount));\n require(success, \"not enough allowed tokens\");\n\n // if contract returns some data lets make sure that is `true` according to standard\n if (data.length > 0) {\n require(data.length == 32, \"data length should be either 0 or 32 bytes\");\n success = abi.decode(data, (bool));\n require(success, \"not enough allowed tokens. Token returns false.\");\n }\n }\n\n function _safeErc20Transfer(address _to, uint256 _amount) internal {\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb /* transfer */, _to, _amount));\n require(success, \"not enough tokens\");\n\n // if contract returns some data lets make sure that is `true` according to standard\n if (data.length > 0) {\n require(data.length == 32, \"data length should be either 0 or 32 bytes\");\n success = abi.decode(data, (bool));\n require(success, \"not enough tokens. Token returns false.\");\n }\n }\n}\n", + "metadata": "{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVerifier\",\"name\":\"_verifier\",\"type\":\"address\"},{\"internalType\":\"contract IFeeManager\",\"name\":\"_feeManager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_denomination\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_merkleTreeHeight\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"leafIndex\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"nullifierHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"Withdrawal\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"FIELD_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"ROOT_HISTORY_SIZE\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"ZERO_VALUE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newOperator\",\"type\":\"address\"}],\"name\":\"changeOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"commitments\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"currentRootIndex\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"denomination\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_commitment\",\"type\":\"bytes32\"}],\"name\":\"deposit\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeManager\",\"outputs\":[{\"internalType\":\"contract IFeeManager\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"filledSubtrees\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getLastRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_left\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_right\",\"type\":\"bytes32\"}],\"name\":\"hashLeftRight\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_root\",\"type\":\"bytes32\"}],\"name\":\"isKnownRoot\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_nullifierHash\",\"type\":\"bytes32\"}],\"name\":\"isSpent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"_nullifierHashes\",\"type\":\"bytes32[]\"}],\"name\":\"isSpentArray\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"spent\",\"type\":\"bool[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"levels\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"nextIndex\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"nullifierHashes\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"operator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"protocolFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"roots\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newVerifier\",\"type\":\"address\"}],\"name\":\"updateVerifier\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"verifier\",\"outputs\":[{\"internalType\":\"contract IVerifier\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_proof\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"_root\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_nullifierHash\",\"type\":\"bytes32\"},{\"internalType\":\"address payable\",\"name\":\"_recipient\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"_relayer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_refund\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"zeros\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"changeOperator(address)\":{\"details\":\"operator can change his address \"},\"deposit(bytes32)\":{\"details\":\"Deposit funds into the contract. The caller must send (for ETH) or approve (for ERC20) value equal to or `denomination` of this instance.\",\"params\":{\"_commitment\":\"the note commitment, which is PedersenHash(nullifier + secret)\"}},\"getLastRoot()\":{\"details\":\"Returns the last root\"},\"hashLeftRight(bytes32,bytes32)\":{\"details\":\"Hash 2 tree leaves, returns MiMC(_left, _right)\"},\"isKnownRoot(bytes32)\":{\"details\":\"Whether the root is present in the root history\"},\"isSpent(bytes32)\":{\"details\":\"whether a note is already spent \"},\"isSpentArray(bytes32[])\":{\"details\":\"whether an array of notes is already spent \"},\"updateVerifier(address)\":{\"details\":\"allow operator to update SNARK verification keys. This is needed to update keys after the final trusted setup ceremony is held. After that operator rights are supposed to be transferred to zero address\"},\"withdraw(bytes,bytes32,bytes32,address,address,uint256,uint256)\":{\"details\":\"Withdraw a deposit from the contract. `proof` is a zkSNARK proof data, and input is an array of circuit public inputs `input` array consists of: - merkle root of all deposits in the contract - hash of unique deposit nullifier to prevent double spends - the recipient of funds - optional fee that goes to the transaction sender (usually a relay)\"}}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/Users/brianli/dotfiles/tornado-core/contracts/ERC20Tornado.sol\":\"ERC20Tornado\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/brianli/dotfiles/tornado-core/contracts/ERC20Tornado.sol\":{\"keccak256\":\"0x5c57c88351063f1864166162f6f32be5aebae197a18abaef8d08d67b36440a51\",\"urls\":[\"bzz-raw://6da2d6faa828b1cad43428366d273e4aa61fc176d6541fb641028985497caa0f\",\"dweb:/ipfs/QmULz388t88hr999vUk5PidTTJwbEWGUyb3d6QGnDA6qoV\"]},\"/Users/brianli/dotfiles/tornado-core/contracts/MerkleTreeWithHistory.sol\":{\"keccak256\":\"0x671cc9268dd70c47d18795f7e37fc4df11763fcbcca026edcf163f4239036254\",\"urls\":[\"bzz-raw://9c36a207ed164b60a514eae89bfb15e5b4de4b346c4a89a7a1cb50a940bc699d\",\"dweb:/ipfs/QmbPEqFJAGMpYduLEFsbPazyBsYWcjRtpth8X26wCHALwk\"]},\"/Users/brianli/dotfiles/tornado-core/contracts/Tornado.sol\":{\"keccak256\":\"0xe7db8acb3efcecf95c7364f447ed1764c571dbf5090fd4641fe4668a965332eb\",\"urls\":[\"bzz-raw://45e790c247c38ed8ae473e3165c1148ea10a753cf6e9f9c8742394019be2aef6\",\"dweb:/ipfs/QmaGfk1ndvqur2NvCY3TWoKuorfBVShXeykKei18GDY582\"]},\"@openzeppelin/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0xb63221b23818d622bfd83d18e0968307e4fcb7a35536bdceded76e1cf8349acd\",\"urls\":[\"bzz-raw://44e1e8c22362c4708a8c3362735f1465f5b05e2f7315e16c7010d694ce019d73\",\"dweb:/ipfs/QmWj9g8X1hxkXRre2kwkEjLBetjuzmSbWHD81bsSojnBkS\"]}},\"version\":1}", + "bytecode": "0x6080604052600380546001600160401b03191690553480156200002157600080fd5b5060405162001e5838038062001e58833981810160405260c08110156200004757600080fd5b508051602082015160408301516060840151608085015160a090950151939492939192909185858585858163ffffffff8116620000b65760405162461bcd60e51b815260040180806020018281038252602781526020018062001dcf6027913960400191505060405180910390fd5b60208163ffffffff1610620000fd5760405162461bcd60e51b815260040180806020018281038252602281526020018062001e166022913960400191505060405180910390fd5b6000805463ffffffff191663ffffffff83161781556002805460018181019092557f2fe54c60d3acabf3343a35b6eba15db4821b340f76e741e2249685ed4899af6c60008051602062001d8e833981519152909101819055815480830183559282905260008051602062001e388339815191529092018290555b60005463ffffffff9081169082161015620001eb57620001a182806001600160e01b03620002ba16565b60028054600181810190925560008051602062001d8e8339815191520182905580548082018255600082905260008051602062001e38833981519152018290559092500162000177565b506200020181806001600160e01b03620002ba16565b60046000015550506068805460ff1916600117905582620002545760405162461bcd60e51b815260040180806020018281038252602581526020018062001d696025913960400191505060405180910390fd5b606c80546001600160a01b03199081166001600160a01b0397881617909155606d8054821695871695909517909455606e8054851691861691909117905550606955606f805490911691831691909117905560c8840460705550620004a7945050505050565b600060008051602062001df6833981519152831062000320576040805162461bcd60e51b815260206004820181905260248201527f5f6c6566742073686f756c6420626520696e7369646520746865206669656c64604482015290519081900360640190fd5b60008051602062001df683398151915282106200036f5760405162461bcd60e51b815260040180806020018281038252602181526020018062001dae6021913960400191505060405180910390fd5b6040805163f47d33b560e01b81526004810185905260006024820181905282518693919273__Hasher________________________________9263f47d33b592604480840193829003018186803b158015620003ca57600080fd5b505af4158015620003df573d6000803e3d6000fd5b505050506040513d6040811015620003f657600080fd5b508051602090910151909250905060008051602062001df6833981519152848308915073__Hasher________________________________63f47d33b583836040518363ffffffff1660e01b81526004018083815260200182815260200192505050604080518083038186803b1580156200047057600080fd5b505af415801562000485573d6000803e3d6000fd5b505050506040513d60408110156200049c57600080fd5b505195945050505050565b6118b280620004b76000396000f3fe6080604052600436106101815760003560e01c80639fa12d0b116100d1578063d0fb02031161008a578063ec73295911610064578063ec732959146105c8578063f178e47c146105dd578063fc0c546a14610607578063fc7e9c6f1461061c57610181565b8063d0fb02031461055f578063e5285dcc14610574578063e82955881461059e57610181565b80639fa12d0b1461040e578063b0e21e8a146104d9578063b214faa5146104ee578063ba70f7571461050b578063c2b40ae414610520578063cd87a3b41461054a57610181565b80634ecf518b1161013e578063839df94511610118578063839df945146103875780638bca6d16146103b157806390eeb02b146103c657806397fc007c146103db57610181565b80634ecf518b1461031a578063570ca735146103485780636d9833e31461035d57610181565b806306394c9b1461018657806317cc915c146101bb57806321a0adb6146101f95780632b7ac3f31461029257806338bf282e146102c3578063414a37ba14610305575b600080fd5b34801561019257600080fd5b506101b9600480360360208110156101a957600080fd5b50356001600160a01b0316610631565b005b3480156101c757600080fd5b506101e5600480360360208110156101de57600080fd5b503561069c565b604080519115158252519081900360200190f35b6101b9600480360360e081101561020f57600080fd5b810190602081018135600160201b81111561022957600080fd5b82018360208201111561023b57600080fd5b803590602001918460018302840111600160201b8311171561025c57600080fd5b91935091508035906020810135906001600160a01b03604082013581169160608101359091169060808101359060a001356106b1565b34801561029e57600080fd5b506102a7610a70565b604080516001600160a01b039092168252519081900360200190f35b3480156102cf57600080fd5b506102f3600480360360408110156102e657600080fd5b5080359060200135610a7f565b60408051918252519081900360200190f35b34801561031157600080fd5b506102f3610c60565b34801561032657600080fd5b5061032f610c72565b6040805163ffffffff9092168252519081900360200190f35b34801561035457600080fd5b506102a7610c7e565b34801561036957600080fd5b506101e56004803603602081101561038057600080fd5b5035610c8d565b34801561039357600080fd5b506101e5600480360360208110156103aa57600080fd5b5035610d00565b3480156103bd57600080fd5b506102f3610d15565b3480156103d257600080fd5b5061032f610d1b565b3480156103e757600080fd5b506101b9600480360360208110156103fe57600080fd5b50356001600160a01b0316610d27565b34801561041a57600080fd5b506104896004803603602081101561043157600080fd5b810190602081018135600160201b81111561044b57600080fd5b82018360208201111561045d57600080fd5b803590602001918460208302840111600160201b8311171561047e57600080fd5b509092509050610d92565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156104c55781810151838201526020016104ad565b505050509050019250505060405180910390f35b3480156104e557600080fd5b506102f3610e1a565b6101b96004803603602081101561050457600080fd5b5035610e20565b34801561051757600080fd5b506102f3610f4d565b34801561052c57600080fd5b506102f36004803603602081101561054357600080fd5b5035610f6d565b34801561055657600080fd5b5061032f610f81565b34801561056b57600080fd5b506102a7610f86565b34801561058057600080fd5b506101e56004803603602081101561059757600080fd5b5035610f95565b3480156105aa57600080fd5b506102f3600480360360208110156105c157600080fd5b5035610faa565b3480156105d457600080fd5b506102f3610fc8565b3480156105e957600080fd5b506102f36004803603602081101561060057600080fd5b5035610fec565b34801561061357600080fd5b506102a7610ff9565b34801561062857600080fd5b5061032f611008565b606e546001600160a01b0316331461067a5760405162461bcd60e51b81526004018080602001828103825260258152602001806118596025913960400191505060405180910390fd5b606e80546001600160a01b0319166001600160a01b0392909216919091179055565b606a6020526000908152604090205460ff1681565b60685460ff16610708576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6068805460ff19169055606954821115610769576040805162461bcd60e51b815260206004820152601a60248201527f4665652065786365656473207472616e736665722076616c7565000000000000604482015290519081900360640190fd5b6000858152606a602052604090205460ff16156107cd576040805162461bcd60e51b815260206004820152601f60248201527f546865206e6f746520686173206265656e20616c7265616479207370656e7400604482015290519081900360640190fd5b6107d686610c8d565b610827576040805162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742066696e6420796f7572206d65726b6c6520726f6f7400000000604482015290519081900360640190fd5b606c546040805160c08082018352898252602082018990526001600160a01b038881168385015287811660608401526080830187905260a08301869052925163695ef6f960e01b8152929093169263695ef6f9928c928c9290916004810191829160240190849080838360005b838110156108ac578181015183820152602001610894565b505050509050018281038252858582818152602001925080828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b1580156108fe57600080fd5b505af1158015610912573d6000803e3d6000fd5b505050506040513d602081101561092857600080fd5b5051610974576040805162461bcd60e51b815260206004820152601660248201527524b73b30b634b2103bb4ba34323930bb90383937b7b360511b604482015290519081900360640190fd5b6000858152606a6020908152604091829020805460ff19166001179055606d548251622fcfcb60e31b81529251610a0b9388938893889388936001600160a01b039092169263017e7e589260048082019391829003018186803b1580156109da57600080fd5b505afa1580156109ee573d6000803e3d6000fd5b505050506040513d6020811015610a0457600080fd5b505161101b565b604080516001600160a01b038681168252602082018890528183018590529151918516917fe9e508bad6d4c3227e881ca19068f099da81b5164dd6d62b2eaf1e8bc6c349319181900360600190a250506068805460ff19166001179055505050505050565b606c546001600160a01b031681565b60006000805160206117e88339815191528310610ae3576040805162461bcd60e51b815260206004820181905260248201527f5f6c6566742073686f756c6420626520696e7369646520746865206669656c64604482015290519081900360640190fd5b6000805160206117e88339815191528210610b2f5760405162461bcd60e51b81526004018080602001828103825260218152602001806117986021913960400191505060405180910390fd5b6040805163f47d33b560e01b81526004810185905260006024820181905282518693919273__Hasher________________________________9263f47d33b592604480840193829003018186803b158015610b8957600080fd5b505af4158015610b9d573d6000803e3d6000fd5b505050506040513d6040811015610bb357600080fd5b50805160209091015190925090506000805160206117e8833981519152848308915073__Hasher________________________________63f47d33b583836040518363ffffffff1660e01b81526004018083815260200182815260200192505050604080518083038186803b158015610c2b57600080fd5b505af4158015610c3f573d6000803e3d6000fd5b505050506040513d6040811015610c5557600080fd5b505195945050505050565b6000805160206117e883398151915281565b60005463ffffffff1681565b606e546001600160a01b031681565b600081610c9c57506000610cfb565b60035463ffffffff165b60048163ffffffff1660648110610cb957fe5b0154831415610ccc576001915050610cfb565b63ffffffff8116610cdb575060645b6003546000199091019063ffffffff80831691161415610ca65760009150505b919050565b606b6020526000908152604090205460ff1681565b60695481565b60035463ffffffff1681565b606e546001600160a01b03163314610d705760405162461bcd60e51b81526004018080602001828103825260258152602001806118596025913960400191505060405180910390fd5b606c80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518281526020808402820101909152606090828015610dbe578160200160208202803883390190505b50905060005b82811015610e1357610de7848483818110610ddb57fe5b90506020020135610f95565b15610e0b576001828281518110610dfa57fe5b911515602092830291909101909101525b600101610dc4565b5092915050565b60705481565b60685460ff16610e77576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6068805460ff191690556000818152606b602052604090205460ff1615610ecf5760405162461bcd60e51b81526004018080602001828103825260218152602001806118086021913960400191505060405180910390fd5b6000610eda8261114d565b6000838152606b60205260409020805460ff191660011790559050610efd6112e4565b6040805163ffffffff83168152426020820152815184927fa945e51eec50ab98c161376f0db4cf2aeba3ec92755fe2fcd388bdbbb80ff196928290030190a250506068805460ff19166001179055565b60035460009060049063ffffffff1660648110610f6657fe5b0154905090565b60048160648110610f7a57fe5b0154905081565b606481565b606d546001600160a01b031681565b6000908152606a602052604090205460ff1690565b60028181548110610fb757fe5b600091825260209091200154905081565b7f2fe54c60d3acabf3343a35b6eba15db4821b340f76e741e2249685ed4899af6c81565b60018181548110610fb757fe5b606f546001600160a01b031681565b600354600160201b900463ffffffff1681565b8134146110595760405162461bcd60e51b81526004018080602001828103825260308152602001806117416030913960400191505060405180910390fd5b6001600160a01b0381161580159061108e5761107d86607054866069540303611330565b61108982607054611330565b61109c565b61109c868560695403611330565b83156110ac576110ac8585611330565b8215611145576040516000906001600160a01b0388169085908381818185875af1925050503d80600081146110fd576040519150601f19603f3d011682016040523d82523d6000602084013e611102565b606091505b5050905080611143576040516001600160a01b0387169085156108fc029086906000818181858888f19350505050158015611141573d6000803e3d6000fd5b505b505b505050505050565b60035460008054909163ffffffff600160201b909104811691811660020a168114156111aa5760405162461bcd60e51b815260040180806020018281038252602f8152602001806116e8602f913960400191505060405180910390fd5b6003805463ffffffff600160201b80830482166001019091160267ffffffff000000001990911617905582600080805b60005463ffffffff9081169082161015611282576001851661123e5783925060028163ffffffff168154811061120c57fe5b906000526020600020015491508360018263ffffffff168154811061122d57fe5b600091825260209091200155611262565b60018163ffffffff168154811061125157fe5b906000526020600020015492508391505b61126c8383610a7f565b9350600263ffffffff86160494506001016111da565b5060035460649063ffffffff908116600101166003805463ffffffff19169290910663ffffffff9081169290921790819055849160049116606481106112c457fe5b01555050600354600160201b900463ffffffff1660001901949350505050565b34156113215760405162461bcd60e51b81526004018080602001828103825260308152602001806118296030913960400191505060405180910390fd5b61132e3330606954611501565b565b606f54604080516001600160a01b038581166024830152604480830186905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000956060959316939282918083835b602083106113ad5780518252601f19909201916020918201910161138e565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461140f576040519150601f19603f3d011682016040523d82523d6000602084013e611414565b606091505b50915091508161145f576040805162461bcd60e51b81526020600482015260116024820152706e6f7420656e6f75676820746f6b656e7360781b604482015290519081900360640190fd5b8051156114fb5780516020146114a65760405162461bcd60e51b815260040180806020018281038252602a815260200180611717602a913960400191505060405180910390fd5b8080602001905160208110156114bb57600080fd5b50519150816114fb5760405162461bcd60e51b81526004018080602001828103825260278152602001806117716027913960400191505060405180910390fd5b50505050565b606f54604080516001600160a01b0386811660248301528581166044830152606480830186905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b178152925182516000956060959316939282918083835b602083106115865780518252601f199092019160209182019101611567565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146115e8576040519150601f19603f3d011682016040523d82523d6000602084013e6115ed565b606091505b509150915081611644576040805162461bcd60e51b815260206004820152601960248201527f6e6f7420656e6f75676820616c6c6f77656420746f6b656e7300000000000000604482015290519081900360640190fd5b8051156116e057805160201461168b5760405162461bcd60e51b815260040180806020018281038252602a815260200180611717602a913960400191505060405180910390fd5b8080602001905160208110156116a057600080fd5b50519150816116e05760405162461bcd60e51b815260040180806020018281038252602f8152602001806117b9602f913960400191505060405180910390fd5b505050505056fe4d65726b6c6520747265652069732066756c6c2e204e6f206d6f7265206c656166732063616e20626520616464656464617461206c656e6774682073686f756c64206265206569746865722030206f72203332206279746573496e636f727265637420726566756e6420616d6f756e742072656365697665642062792074686520636f6e74726163746e6f7420656e6f75676820746f6b656e732e20546f6b656e2072657475726e732066616c73652e5f72696768742073686f756c6420626520696e7369646520746865206669656c646e6f7420656e6f75676820616c6c6f77656420746f6b656e732e20546f6b656e2072657475726e732066616c73652e30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000154686520636f6d6d69746d656e7420686173206265656e207375626d69747465644554482076616c756520697320737570706f73656420746f206265203020666f7220455243323020696e7374616e63654f6e6c79206f70657261746f722063616e2063616c6c20746869732066756e6374696f6e2ea265627a7a72315820c90af910ddfda5b33dab20c369a888b349922f695f9eee0e2eb3e0273adc895364736f6c6343000511003264656e6f6d696e6174696f6e2073686f756c642062652067726561746572207468616e2030405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace5f72696768742073686f756c6420626520696e7369646520746865206669656c645f747265654c6576656c732073686f756c642062652067726561746572207468616e207a65726f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000015f747265654c6576656c732073686f756c64206265206c657373207468616e203332b10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6", + "deployedBytecode": "0x6080604052600436106101815760003560e01c80639fa12d0b116100d1578063d0fb02031161008a578063ec73295911610064578063ec732959146105c8578063f178e47c146105dd578063fc0c546a14610607578063fc7e9c6f1461061c57610181565b8063d0fb02031461055f578063e5285dcc14610574578063e82955881461059e57610181565b80639fa12d0b1461040e578063b0e21e8a146104d9578063b214faa5146104ee578063ba70f7571461050b578063c2b40ae414610520578063cd87a3b41461054a57610181565b80634ecf518b1161013e578063839df94511610118578063839df945146103875780638bca6d16146103b157806390eeb02b146103c657806397fc007c146103db57610181565b80634ecf518b1461031a578063570ca735146103485780636d9833e31461035d57610181565b806306394c9b1461018657806317cc915c146101bb57806321a0adb6146101f95780632b7ac3f31461029257806338bf282e146102c3578063414a37ba14610305575b600080fd5b34801561019257600080fd5b506101b9600480360360208110156101a957600080fd5b50356001600160a01b0316610631565b005b3480156101c757600080fd5b506101e5600480360360208110156101de57600080fd5b503561069c565b604080519115158252519081900360200190f35b6101b9600480360360e081101561020f57600080fd5b810190602081018135600160201b81111561022957600080fd5b82018360208201111561023b57600080fd5b803590602001918460018302840111600160201b8311171561025c57600080fd5b91935091508035906020810135906001600160a01b03604082013581169160608101359091169060808101359060a001356106b1565b34801561029e57600080fd5b506102a7610a70565b604080516001600160a01b039092168252519081900360200190f35b3480156102cf57600080fd5b506102f3600480360360408110156102e657600080fd5b5080359060200135610a7f565b60408051918252519081900360200190f35b34801561031157600080fd5b506102f3610c60565b34801561032657600080fd5b5061032f610c72565b6040805163ffffffff9092168252519081900360200190f35b34801561035457600080fd5b506102a7610c7e565b34801561036957600080fd5b506101e56004803603602081101561038057600080fd5b5035610c8d565b34801561039357600080fd5b506101e5600480360360208110156103aa57600080fd5b5035610d00565b3480156103bd57600080fd5b506102f3610d15565b3480156103d257600080fd5b5061032f610d1b565b3480156103e757600080fd5b506101b9600480360360208110156103fe57600080fd5b50356001600160a01b0316610d27565b34801561041a57600080fd5b506104896004803603602081101561043157600080fd5b810190602081018135600160201b81111561044b57600080fd5b82018360208201111561045d57600080fd5b803590602001918460208302840111600160201b8311171561047e57600080fd5b509092509050610d92565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156104c55781810151838201526020016104ad565b505050509050019250505060405180910390f35b3480156104e557600080fd5b506102f3610e1a565b6101b96004803603602081101561050457600080fd5b5035610e20565b34801561051757600080fd5b506102f3610f4d565b34801561052c57600080fd5b506102f36004803603602081101561054357600080fd5b5035610f6d565b34801561055657600080fd5b5061032f610f81565b34801561056b57600080fd5b506102a7610f86565b34801561058057600080fd5b506101e56004803603602081101561059757600080fd5b5035610f95565b3480156105aa57600080fd5b506102f3600480360360208110156105c157600080fd5b5035610faa565b3480156105d457600080fd5b506102f3610fc8565b3480156105e957600080fd5b506102f36004803603602081101561060057600080fd5b5035610fec565b34801561061357600080fd5b506102a7610ff9565b34801561062857600080fd5b5061032f611008565b606e546001600160a01b0316331461067a5760405162461bcd60e51b81526004018080602001828103825260258152602001806118596025913960400191505060405180910390fd5b606e80546001600160a01b0319166001600160a01b0392909216919091179055565b606a6020526000908152604090205460ff1681565b60685460ff16610708576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6068805460ff19169055606954821115610769576040805162461bcd60e51b815260206004820152601a60248201527f4665652065786365656473207472616e736665722076616c7565000000000000604482015290519081900360640190fd5b6000858152606a602052604090205460ff16156107cd576040805162461bcd60e51b815260206004820152601f60248201527f546865206e6f746520686173206265656e20616c7265616479207370656e7400604482015290519081900360640190fd5b6107d686610c8d565b610827576040805162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742066696e6420796f7572206d65726b6c6520726f6f7400000000604482015290519081900360640190fd5b606c546040805160c08082018352898252602082018990526001600160a01b038881168385015287811660608401526080830187905260a08301869052925163695ef6f960e01b8152929093169263695ef6f9928c928c9290916004810191829160240190849080838360005b838110156108ac578181015183820152602001610894565b505050509050018281038252858582818152602001925080828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b1580156108fe57600080fd5b505af1158015610912573d6000803e3d6000fd5b505050506040513d602081101561092857600080fd5b5051610974576040805162461bcd60e51b815260206004820152601660248201527524b73b30b634b2103bb4ba34323930bb90383937b7b360511b604482015290519081900360640190fd5b6000858152606a6020908152604091829020805460ff19166001179055606d548251622fcfcb60e31b81529251610a0b9388938893889388936001600160a01b039092169263017e7e589260048082019391829003018186803b1580156109da57600080fd5b505afa1580156109ee573d6000803e3d6000fd5b505050506040513d6020811015610a0457600080fd5b505161101b565b604080516001600160a01b038681168252602082018890528183018590529151918516917fe9e508bad6d4c3227e881ca19068f099da81b5164dd6d62b2eaf1e8bc6c349319181900360600190a250506068805460ff19166001179055505050505050565b606c546001600160a01b031681565b60006000805160206117e88339815191528310610ae3576040805162461bcd60e51b815260206004820181905260248201527f5f6c6566742073686f756c6420626520696e7369646520746865206669656c64604482015290519081900360640190fd5b6000805160206117e88339815191528210610b2f5760405162461bcd60e51b81526004018080602001828103825260218152602001806117986021913960400191505060405180910390fd5b6040805163f47d33b560e01b81526004810185905260006024820181905282518693919273__Hasher________________________________9263f47d33b592604480840193829003018186803b158015610b8957600080fd5b505af4158015610b9d573d6000803e3d6000fd5b505050506040513d6040811015610bb357600080fd5b50805160209091015190925090506000805160206117e8833981519152848308915073__Hasher________________________________63f47d33b583836040518363ffffffff1660e01b81526004018083815260200182815260200192505050604080518083038186803b158015610c2b57600080fd5b505af4158015610c3f573d6000803e3d6000fd5b505050506040513d6040811015610c5557600080fd5b505195945050505050565b6000805160206117e883398151915281565b60005463ffffffff1681565b606e546001600160a01b031681565b600081610c9c57506000610cfb565b60035463ffffffff165b60048163ffffffff1660648110610cb957fe5b0154831415610ccc576001915050610cfb565b63ffffffff8116610cdb575060645b6003546000199091019063ffffffff80831691161415610ca65760009150505b919050565b606b6020526000908152604090205460ff1681565b60695481565b60035463ffffffff1681565b606e546001600160a01b03163314610d705760405162461bcd60e51b81526004018080602001828103825260258152602001806118596025913960400191505060405180910390fd5b606c80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518281526020808402820101909152606090828015610dbe578160200160208202803883390190505b50905060005b82811015610e1357610de7848483818110610ddb57fe5b90506020020135610f95565b15610e0b576001828281518110610dfa57fe5b911515602092830291909101909101525b600101610dc4565b5092915050565b60705481565b60685460ff16610e77576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6068805460ff191690556000818152606b602052604090205460ff1615610ecf5760405162461bcd60e51b81526004018080602001828103825260218152602001806118086021913960400191505060405180910390fd5b6000610eda8261114d565b6000838152606b60205260409020805460ff191660011790559050610efd6112e4565b6040805163ffffffff83168152426020820152815184927fa945e51eec50ab98c161376f0db4cf2aeba3ec92755fe2fcd388bdbbb80ff196928290030190a250506068805460ff19166001179055565b60035460009060049063ffffffff1660648110610f6657fe5b0154905090565b60048160648110610f7a57fe5b0154905081565b606481565b606d546001600160a01b031681565b6000908152606a602052604090205460ff1690565b60028181548110610fb757fe5b600091825260209091200154905081565b7f2fe54c60d3acabf3343a35b6eba15db4821b340f76e741e2249685ed4899af6c81565b60018181548110610fb757fe5b606f546001600160a01b031681565b600354600160201b900463ffffffff1681565b8134146110595760405162461bcd60e51b81526004018080602001828103825260308152602001806117416030913960400191505060405180910390fd5b6001600160a01b0381161580159061108e5761107d86607054866069540303611330565b61108982607054611330565b61109c565b61109c868560695403611330565b83156110ac576110ac8585611330565b8215611145576040516000906001600160a01b0388169085908381818185875af1925050503d80600081146110fd576040519150601f19603f3d011682016040523d82523d6000602084013e611102565b606091505b5050905080611143576040516001600160a01b0387169085156108fc029086906000818181858888f19350505050158015611141573d6000803e3d6000fd5b505b505b505050505050565b60035460008054909163ffffffff600160201b909104811691811660020a168114156111aa5760405162461bcd60e51b815260040180806020018281038252602f8152602001806116e8602f913960400191505060405180910390fd5b6003805463ffffffff600160201b80830482166001019091160267ffffffff000000001990911617905582600080805b60005463ffffffff9081169082161015611282576001851661123e5783925060028163ffffffff168154811061120c57fe5b906000526020600020015491508360018263ffffffff168154811061122d57fe5b600091825260209091200155611262565b60018163ffffffff168154811061125157fe5b906000526020600020015492508391505b61126c8383610a7f565b9350600263ffffffff86160494506001016111da565b5060035460649063ffffffff908116600101166003805463ffffffff19169290910663ffffffff9081169290921790819055849160049116606481106112c457fe5b01555050600354600160201b900463ffffffff1660001901949350505050565b34156113215760405162461bcd60e51b81526004018080602001828103825260308152602001806118296030913960400191505060405180910390fd5b61132e3330606954611501565b565b606f54604080516001600160a01b038581166024830152604480830186905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000956060959316939282918083835b602083106113ad5780518252601f19909201916020918201910161138e565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461140f576040519150601f19603f3d011682016040523d82523d6000602084013e611414565b606091505b50915091508161145f576040805162461bcd60e51b81526020600482015260116024820152706e6f7420656e6f75676820746f6b656e7360781b604482015290519081900360640190fd5b8051156114fb5780516020146114a65760405162461bcd60e51b815260040180806020018281038252602a815260200180611717602a913960400191505060405180910390fd5b8080602001905160208110156114bb57600080fd5b50519150816114fb5760405162461bcd60e51b81526004018080602001828103825260278152602001806117716027913960400191505060405180910390fd5b50505050565b606f54604080516001600160a01b0386811660248301528581166044830152606480830186905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b178152925182516000956060959316939282918083835b602083106115865780518252601f199092019160209182019101611567565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146115e8576040519150601f19603f3d011682016040523d82523d6000602084013e6115ed565b606091505b509150915081611644576040805162461bcd60e51b815260206004820152601960248201527f6e6f7420656e6f75676820616c6c6f77656420746f6b656e7300000000000000604482015290519081900360640190fd5b8051156116e057805160201461168b5760405162461bcd60e51b815260040180806020018281038252602a815260200180611717602a913960400191505060405180910390fd5b8080602001905160208110156116a057600080fd5b50519150816116e05760405162461bcd60e51b815260040180806020018281038252602f8152602001806117b9602f913960400191505060405180910390fd5b505050505056fe4d65726b6c6520747265652069732066756c6c2e204e6f206d6f7265206c656166732063616e20626520616464656464617461206c656e6774682073686f756c64206265206569746865722030206f72203332206279746573496e636f727265637420726566756e6420616d6f756e742072656365697665642062792074686520636f6e74726163746e6f7420656e6f75676820746f6b656e732e20546f6b656e2072657475726e732066616c73652e5f72696768742073686f756c6420626520696e7369646520746865206669656c646e6f7420656e6f75676820616c6c6f77656420746f6b656e732e20546f6b656e2072657475726e732066616c73652e30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000154686520636f6d6d69746d656e7420686173206265656e207375626d69747465644554482076616c756520697320737570706f73656420746f206265203020666f7220455243323020696e7374616e63654f6e6c79206f70657261746f722063616e2063616c6c20746869732066756e6374696f6e2ea265627a7a72315820c90af910ddfda5b33dab20c369a888b349922f695f9eee0e2eb3e0273adc895364736f6c63430005110032", + "sourceMap": "805:2570:0:-;;;1430:34:2;;;-1:-1:-1;;;;;;1468:27:2;;;897:334:0;5:2:-1;;;;30:1;27;20:12;5:2;897:334:0;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;897:334:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1646:15:2;;;1638:67;;;;-1:-1:-1;;;1638:67:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1733:2;1719:11;:16;;;1711:63;;;;-1:-1:-1;;;1711:63:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1780:6;:20;;-1:-1:-1;;1780:20:2;;;;;;;1854:5;27:10:-1;;-1:-1;23:18;;;45:23;;;1088:77:2;-1:-1:-1;;;;;;;;;;;1854:23:2;;;;;;27:10:-1;;23:18;;;45:23;;1883:32:2;;;;-1:-1:-1;;;;;;;;;;;1883:32:2;;;;;;1922:175;1945:6;;;;;;1941:10;;;;1922:175;;;1980:39;1994:11;;-1:-1:-1;;;;;1980:13:2;:39;:::i;:::-;2027:5;27:10:-1;;39:1;23:18;;;45:23;;;-1:-1;;;;;;;;;;;2027:23:2;;;;27:10:-1;;23:18;;;45:23;;-1:-1;2058:32:2;;;-1:-1:-1;;;;;;;;;;;2058:32:2;;;;1966:53;;-1:-1:-1;1953:3:2;1922:175;;;-1:-1:-1;2114:39:2;2128:11;;-1:-1:-1;;;;;2114:13:2;:39;:::i;:::-;2103:5;2109:1;2103:8;:50;-1:-1:-1;;1421:11:4;:18;;-1:-1:-1;;1421:18:4;1435:4;1421:18;;;1645:17:3;1637:67;;;;-1:-1:-1;;;1637:67:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1710:8;:20;;-1:-1:-1;;;;;;1710:20:3;;;-1:-1:-1;;;;;1710:20:3;;;;;;;1736:10;:24;;;;;;;;;;;;;;1766:8;:20;;;;;;;;;;;;;-1:-1:-1;1792:12:3;:28;1157:5:0;:14;;;;;;;;;;;;;;1223:3;1207:13;:19;1193:11;:33;-1:-1:-1;805:2570:0;;-1:-1:-1;;;;;805:2570:0;2230:445:2;2305:7;-1:-1:-1;;;;;;;;;;;2328:27:2;;2320:72;;;;;-1:-1:-1;;;2320:72:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2406:28:2;;2398:74;;;;-1:-1:-1;;;2398:74:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2538:23;;;-1:-1:-1;;;2538:23:2;;;;;;;;2478:9;2538:23;;;;;;;;2498:5;;2478:9;;2538:6;;:17;;:23;;;;;;;;;;:6;:23;;;5:2:-1;;;;30:1;27;20:12;5:2;2538:23:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2538:23:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2538:23:2;;;;;;;;;-1:-1:-1;2538:23:2;-1:-1:-1;;;;;;;;;;;;2589:6:2;2578:1;2571:38;2567:42;;2624:6;:17;2642:1;2645;2624:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2624:23:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2624:23:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2624:23:2;;2230:445;-1:-1:-1;;;;;2230:445:2:o;805:2570:0:-;;;;;;;", + "deployedSourceMap": "805:2570:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4814:102:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4814:102:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4814:102:3;-1:-1:-1;;;;;4814:102:3;;:::i;:::-;;412:47;;8:9:-1;5:2;;;30:1;27;20:12;5:2;412:47:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;412:47:3;;:::i;:::-;;;;;;;;;;;;;;;;;;2893:801;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;2893:801:3;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;2893:801:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2893:801:3;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2893:801:3;;-1:-1:-1;2893:801:3;-1:-1:-1;2893:801:3;;;;;;;;-1:-1:-1;;;;;2893:801:3;;;;;;;;;;;;;;;;;;;;;;;;:::i;601:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;601:25:3;;;:::i;:::-;;;;-1:-1:-1;;;;;601:25:3;;;;;;;;;;;;;;2230:445:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2230:445:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2230:445:2;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;933:114;;8:9:-1;5:2;;;30:1;27;20:12;5:2;933:114:2;;;:::i;1209:20::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1209:20:2;;;:::i;:::-;;;;;;;;;;;;;;;;;;;819:23:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;819:23:3;;;:::i;3553:342:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3553:342:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3553:342:2;;:::i;554:43:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;554:43:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;554:43:3;;:::i;381:27::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;381:27:3;;;:::i;1430:34:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1430:34:2;;;:::i;4651:113:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4651:113:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4651:113:3;-1:-1:-1;;;;;4651:113:3;;:::i;4128:293::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4128:293:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4128:293:3;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;4128:293:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4128:293:3;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;4128:293:3;;-1:-1:-1;4128:293:3;-1:-1:-1;4128:293:3;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4128:293:3;;;;;;;;;;;;;;;;;866:26:0;;8:9:-1;5:2;;;30:1;27;20:12;5:2;866:26:0;;;:::i;2073:324:3:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2073:324:3;;:::i;3941:93:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3941:93:2;;;:::i;1549:39::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1549:39:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1549:39:2;;:::i;1499:46::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1499:46:2;;;:::i;630:29:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;630:29:3;;;:::i;3951:116::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3951:116:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3951:116:3;;:::i;1404:22:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1404:22:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1404:22:2;;:::i;1051:114::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1051:114:2;;;:::i;1369:31::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1369:31:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1369:31:2;;:::i;842:20:0:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;842:20:0;;;:::i;1468:27:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1468:27:2;;;:::i;4814:102:3:-;896:8;;-1:-1:-1;;;;;896:8:3;882:10;:22;874:72;;;;-1:-1:-1;;;874:72:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4888:8;:23;;-1:-1:-1;;;;;;4888:23:3;-1:-1:-1;;;;;4888:23:3;;;;;;;;;;4814:102::o;412:47::-;;;;;;;;;;;;;;;:::o;2893:801::-;1934:11:4;;;;1926:55;;;;;-1:-1:-1;;;1926:55:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;2056:11;:19;;-1:-1:-1;;2056:19:4;;;3110:12:3;;3102:20;;;3094:59;;;;;-1:-1:-1;;;3094:59:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;3168:31;;;;:15;:31;;;;;;;;3167:32;3159:76;;;;;-1:-1:-1;;;3159:76:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;3249:18;3261:5;3249:11;:18::i;:::-;3241:59;;;;;-1:-1:-1;;;3241:59:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;3347:8;;:126;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3418:19:3;;;3347:126;;;;3439:17;;;3347:126;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3347:126:3;;:8;;;;;:20;;3368:6;;;;3347:126;;;;;;;;;;;;;;;;:8;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3347:126:3;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;3347:126:3;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3347:126:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3347:126:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3347:126:3;3339:161;;;;;-1:-1:-1;;;3339:161:3;;;;;;;;;;;;-1:-1:-1;;;3339:161:3;;;;;;;;;;;;;;;3507:31;;;;:15;:31;;;;;;;;;:38;;-1:-1:-1;;3507:38:3;3541:4;3507:38;;;3605:10;;:18;;-1:-1:-1;;;3605:18:3;;;;3551:73;;3568:10;;3580:8;;3590:4;;3596:7;;-1:-1:-1;;;;;3605:10:3;;;;:16;;:18;;;;;;;;;;;:10;:18;;;5:2:-1;;;;30:1;27;20:12;5:2;3605:18:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3605:18:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3605:18:3;3551:16;:73::i;:::-;3635:54;;;-1:-1:-1;;;;;3635:54:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2230:11:4;:18;;-1:-1:-1;;2230:18:4;2244:4;2230:18;;;-1:-1:-1;;;;;;2893:801:3:o;601:25::-;;;-1:-1:-1;;;;;601:25:3;;:::o;2230:445:2:-;2305:7;-1:-1:-1;;;;;;;;;;;2328:27:2;;2320:72;;;;;-1:-1:-1;;;2320:72:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2406:28:2;;2398:74;;;;-1:-1:-1;;;2398:74:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2538:23;;;-1:-1:-1;;;2538:23:2;;;;;;;;2478:9;2538:23;;;;;;;;2498:5;;2478:9;;2538:6;;:17;;:23;;;;;;;;;;:6;:23;;;5:2:-1;;;;30:1;27;20:12;5:2;2538:23:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2538:23:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2538:23:2;;;;;;;;;-1:-1:-1;2538:23:2;-1:-1:-1;;;;;;;;;;;;2589:6:2;2578:1;2571:38;2567:42;;2624:6;:17;2642:1;2645;2624:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2624:23:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2624:23:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2624:23:2;;2230:445;-1:-1:-1;;;;;2230:445:2:o;933:114::-;-1:-1:-1;;;;;;;;;;;933:114:2;:::o;1209:20::-;;;;;;:::o;819:23:3:-;;;-1:-1:-1;;;;;819:23:3;;:::o;3553:342:2:-;3609:4;3625:10;3621:43;;-1:-1:-1;3652:5:2;3645:12;;3621:43;3680:16;;;;3702:171;3726:5;3732:1;3726:8;;;;;;;;;;;3717:5;:17;3713:53;;;3753:4;3746:11;;;;;3713:53;3777:6;;;3773:52;;-1:-1:-1;1542:3:2;3773:52;3855:16;;-1:-1:-1;;3832:3:2;;;;3855:16;3850:21;;;3855:16;;3850:21;;3702:171;;3885:5;3878:12;;;3553:342;;;;:::o;554:43:3:-;;;;;;;;;;;;;;;:::o;381:27::-;;;;:::o;1430:34:2:-;;;;;;:::o;4651:113:3:-;896:8;;-1:-1:-1;;;;;896:8:3;882:10;:22;874:72;;;;-1:-1:-1;;;874:72:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4725:8;:34;;-1:-1:-1;;;;;;4725:34:3;-1:-1:-1;;;;;4725:34:3;;;;;;;;;;4651:113::o;4128:293::-;4244:35;;;;;;;;;;;;;;;;4209:19;;4255:16;4244:35;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;4244:35:3;-1:-1:-1;4236:43:3;-1:-1:-1;4289:6:3;4285:132;4301:27;;;4285:132;;;4347:28;4355:16;;4372:1;4355:19;;;;;;;;;;;;;4347:7;:28::i;:::-;4343:68;;;4398:4;4387:5;4393:1;4387:8;;;;;;;;:15;;;:8;;;;;;;;;;;:15;4343:68;4330:3;;4285:132;;;;4128:293;;;;:::o;866:26:0:-;;;;:::o;2073:324:3:-;1934:11:4;;;;1926:55;;;;;-1:-1:-1;;;1926:55:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;2056:11;:19;;-1:-1:-1;;2056:19:4;;;2070:5;2156:24:3;;;:11;:24;;;;;;2056:19:4;2156:24:3;2155:25;2147:71;;;;-1:-1:-1;;;2147:71:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2225:20;2248;2256:11;2248:7;:20::i;:::-;2274:24;;;;:11;:24;;;;;:31;;-1:-1:-1;;2274:31:3;2301:4;2274:31;;;2225:43;-1:-1:-1;2311:17:3;:15;:17::i;:::-;2340:52;;;;;;;;2376:15;2340:52;;;;;;2348:11;;2340:52;;;;;;;;-1:-1:-1;;2230:11:4;:18;;-1:-1:-1;;2230:18:4;2244:4;2230:18;;;2073:324:3:o;3941:93:2:-;4012:16;;3984:7;;4006:5;;4012:16;;4006:23;;;;;;;;;3999:30;;3941:93;:::o;1549:39::-;;;;;;;;;;;;;-1:-1:-1;1549:39:2;:::o;1499:46::-;1542:3;1499:46;:::o;630:29:3:-;;;-1:-1:-1;;;;;630:29:3;;:::o;3951:116::-;4012:4;4031:31;;;:15;:31;;;;;;;;;3951:116::o;1404:22:2:-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1404:22:2;:::o;1051:114::-;1088:77;1051:114;:::o;1369:31::-;;;;;;;;;;842:20:0;;;-1:-1:-1;;;;;842:20:0;;:::o;1468:27:2:-;;;-1:-1:-1;;;1468:27:2;;;;;:::o;1430:801:0:-;1601:7;1588:9;:20;1580:81;;;;-1:-1:-1;;;1580:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1681:20:0;;;;;;1707:226;;1726:73;1745:10;1787:11;;1772:12;1757;;:27;:41;1726:18;:73::i;:::-;1807:39;1826:6;1834:11;;1807:18;:39::i;:::-;1707:226;;;1867:59;1886:10;1913:12;1898;;:27;1867:18;:59::i;:::-;1943:16;;1939:79;;1969:42;1988:8;1998:12;1969:18;:42::i;:::-;2028:11;;2024:203;;2068:34;;2050:12;;-1:-1:-1;;;;;2068:15:0;;;2090:7;;2050:12;2068:34;2050:12;2068:34;2090:7;2068:15;:34;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2049:53:0;;;2115:7;2110:111;;2186:26;;-1:-1:-1;;;;;2186:17:0;;;:26;;;;;2204:7;;2186:26;;;;2204:7;2186:17;:26;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2186:26:0;2110:111;2024:203;;1430:801;;;;;;:::o;2679:802:2:-;2770:9;;2728:12;2820:6;;2728:12;;2770:9;-1:-1:-1;;;2770:9:2;;;;;;2820:6;;2816:1;2809:17;2793:33;;;;2785:93;;;;-1:-1:-1;;;2785:93:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2884:9;:14;;;-1:-1:-1;;;2884:14:2;;;;;2897:1;2884:14;;;;;-1:-1:-1;;2884:14:2;;;;;;2931:5;-1:-1:-1;;;2980:355:2;3003:6;;;;;;2999:10;;;;2980:355;;;3028:16;;;3024:225;;3068:16;3061:23;;3102:5;3108:1;3102:8;;;;;;;;;;;;;;;;;;3094:16;;3141;3121:14;3136:1;3121:17;;;;;;;;;;;;;;;;;;;:36;3024:225;;;3189:14;3204:1;3189:17;;;;;;;;;;;;;;;;;;3182:24;;3224:16;3216:24;;3024:225;3276:26;3290:4;3296:5;3276:13;:26::i;:::-;3257:45;-1:-1:-1;3327:1:2;3311:17;;;;;-1:-1:-1;3011:3:2;;2980:355;;;-1:-1:-1;3361:16:2;;1542:3;;3360:42;3361:16;;;;:20;3360:42;3341:16;:61;;-1:-1:-1;;3341:61:2;3360:42;;;;3341:61;;;;;;;;;;;;3434:16;;3408:5;;3414:16;3408:23;;;;;;;;:42;-1:-1:-1;;3463:9:2;;-1:-1:-1;;;3463:9:2;;;;-1:-1:-1;;3463:13:2;;2679:802;-1:-1:-1;;;;2679:802:2:o;1235:191:0:-;1285:9;:14;1277:75;;;;-1:-1:-1;;;1277:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1358:63;1381:10;1401:4;1408:12;;1358:22;:63::i;:::-;1235:191::o;2829:544::-;2938:5;;2949:63;;;-1:-1:-1;;;;;2949:63:0;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;2949:63:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2938:75:0;;;;2903:12;;2917:17;;2938:5;;;2949:63;2938:75;;;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;2938:75:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2902:111:0;;;;3027:7;3019:37;;;;;-1:-1:-1;;;3019:37:0;;;;;;;;;;;;-1:-1:-1;;;3019:37:0;;;;;;;;;;;;;;;3156:11;;:15;3152:217;;3189:4;:11;3204:2;3189:17;3181:72;;;;-1:-1:-1;;;3181:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3282:4;3271:24;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3271:24:0;;-1:-1:-1;3271:24:0;3303:59;;;;-1:-1:-1;;;3303:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2829:544;;;;:::o;2235:590::-;2363:5;;2374:74;;;-1:-1:-1;;;;;2374:74:0;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;2374:74:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2363:86:0;;;;2328:12;;2342:17;;2363:5;;;2374:74;2363:86;;;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;2363:86:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2327:122:0;;;;2463:7;2455:45;;;;;-1:-1:-1;;;2455:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;2600:11;;:15;2596:225;;2633:4;:11;2648:2;2633:17;2625:72;;;;-1:-1:-1;;;2625:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2726:4;2715:24;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2715:24:0;;-1:-1:-1;2715:24:0;2747:67;;;;-1:-1:-1;;;2747:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2235:590;;;;;:::o", + "source": "// https://tornado.cash\n/*\n* d888888P dP a88888b. dP\n* 88 88 d8' `88 88\n* 88 .d8888b. 88d888b. 88d888b. .d8888b. .d888b88 .d8888b. 88 .d8888b. .d8888b. 88d888b.\n* 88 88' `88 88' `88 88' `88 88' `88 88' `88 88' `88 88 88' `88 Y8ooooo. 88' `88\n* 88 88. .88 88 88 88 88. .88 88. .88 88. .88 dP Y8. .88 88. .88 88 88 88\n* dP `88888P' dP dP dP `88888P8 `88888P8 `88888P' 88 Y88888P' `88888P8 `88888P' dP dP\n* ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo\n*/\n\npragma solidity 0.5.17;\n\nimport \"./Tornado.sol\";\n\ncontract ERC20Tornado is Tornado {\n address public token;\n uint256 public protocolFee;\n\n constructor(\n IVerifier _verifier,\n IFeeManager _feeManager,\n uint256 _denomination,\n uint32 _merkleTreeHeight,\n address _operator,\n address _token\n ) Tornado(_verifier, _feeManager, _denomination, _merkleTreeHeight, _operator) public {\n token = _token;\n // 0.5% fee\n protocolFee = _denomination / 200;\n }\n\n function _processDeposit() internal {\n require(msg.value == 0, \"ETH value is supposed to be 0 for ERC20 instance\");\n _safeErc20TransferFrom(msg.sender, address(this), denomination);\n }\n\n function _processWithdraw(address payable _recipient, address payable _relayer, uint256 _relayer_fee, uint256 _refund, address _feeTo) internal {\n require(msg.value == _refund, \"Incorrect refund amount received by the contract\");\n\n bool feeOn = _feeTo != address(0);\n if (feeOn) {\n _safeErc20Transfer(_recipient, denomination - _relayer_fee - protocolFee);\n _safeErc20Transfer(_feeTo, protocolFee);\n } else {\n _safeErc20Transfer(_recipient, denomination - _relayer_fee);\n }\n\n if (_relayer_fee > 0) {\n _safeErc20Transfer(_relayer, _relayer_fee);\n }\n\n if (_refund > 0) {\n (bool success, ) = _recipient.call.value(_refund)(\"\");\n if (!success) {\n // let's return _refund back to the relayer\n _relayer.transfer(_refund);\n }\n }\n }\n\n function _safeErc20TransferFrom(address _from, address _to, uint256 _amount) internal {\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd /* transferFrom */, _from, _to, _amount));\n require(success, \"not enough allowed tokens\");\n\n // if contract returns some data lets make sure that is `true` according to standard\n if (data.length > 0) {\n require(data.length == 32, \"data length should be either 0 or 32 bytes\");\n success = abi.decode(data, (bool));\n require(success, \"not enough allowed tokens. Token returns false.\");\n }\n }\n\n function _safeErc20Transfer(address _to, uint256 _amount) internal {\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb /* transfer */, _to, _amount));\n require(success, \"not enough tokens\");\n\n // if contract returns some data lets make sure that is `true` according to standard\n if (data.length > 0) {\n require(data.length == 32, \"data length should be either 0 or 32 bytes\");\n success = abi.decode(data, (bool));\n require(success, \"not enough tokens. Token returns false.\");\n }\n }\n}\n", "sourcePath": "/Users/brianli/dotfiles/tornado-core/contracts/ERC20Tornado.sol", "ast": { "absolutePath": "/Users/brianli/dotfiles/tornado-core/contracts/ERC20Tornado.sol", "exportedSymbols": { "ERC20Tornado": [ - 227 + 266 ] }, - "id": 228, + "id": 267, "nodeType": "SourceUnit", "nodes": [ { @@ -571,8 +606,8 @@ "file": "./Tornado.sol", "id": 2, "nodeType": "ImportDirective", - "scope": 228, - "sourceUnit": 1195, + "scope": 267, + "sourceUnit": 1024, "src": "780:23:0", "symbolAliases": [], "unitAlias": "" @@ -586,10 +621,10 @@ "id": 3, "name": "Tornado", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1194, + "referencedDeclaration": 1023, "src": "830:7:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_Tornado_$1194", + "typeIdentifier": "t_contract$_Tornado_$1023", "typeString": "contract Tornado" } }, @@ -599,19 +634,19 @@ } ], "contractDependencies": [ - 694, - 1194, - 3245 + 685, + 1023, + 1053 ], "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 227, + "id": 266, "linearizedBaseContracts": [ - 227, - 1194, - 3245, - 694 + 266, + 1023, + 1053, + 685 ], "name": "ERC20Tornado", "nodeType": "ContractDefinition", @@ -621,7 +656,7 @@ "id": 6, "name": "token", "nodeType": "VariableDeclaration", - "scope": 227, + "scope": 266, "src": "842:20:0", "stateVariable": true, "storageLocation": "default", @@ -643,28 +678,54 @@ "value": null, "visibility": "public" }, + { + "constant": false, + "id": 8, + "name": "protocolFee", + "nodeType": "VariableDeclaration", + "scope": 266, + "src": "866:26:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "866:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "public" + }, { "body": { - "id": 29, + "id": 40, "nodeType": "Block", - "src": "1079:25:0", + "src": "1151:80:0", "statements": [ { "expression": { "argumentTypes": null, - "id": 27, + "id": 32, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 25, + "id": 30, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6, - "src": "1085:5:0", + "src": "1157:5:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -674,31 +735,114 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 26, + "id": 31, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 16, - "src": "1093:6:0", + "referencedDeclaration": 20, + "src": "1165:6:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1085:14:0", + "src": "1157:14:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 28, + "id": 33, "nodeType": "ExpressionStatement", - "src": "1085:14:0" + "src": "1157:14:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 38, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 34, + "name": "protocolFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8, + "src": "1193:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 37, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 35, + "name": "_denomination", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "1207:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "hexValue": "323030", + "id": 36, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1223:3:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_200_by_1", + "typeString": "int_const 200" + }, + "value": "200" + }, + "src": "1207:19:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1193:33:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 39, + "nodeType": "ExpressionStatement", + "src": "1193:33:0" } ] }, "documentation": null, - "id": 30, + "id": 41, "implemented": true, "kind": "constructor", "modifiers": [ @@ -706,25 +850,38 @@ "arguments": [ { "argumentTypes": null, - "id": 19, + "id": 23, "name": "_verifier", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 8, - "src": "1016:9:0", + "referencedDeclaration": 10, + "src": "1075:9:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_IVerifier_$891", + "typeIdentifier": "t_contract$_IVerifier_$701", "typeString": "contract IVerifier" } }, { "argumentTypes": null, - "id": 20, + "id": 24, + "name": "_feeManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12, + "src": "1086:11:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IFeeManager_$707", + "typeString": "contract IFeeManager" + } + }, + { + "argumentTypes": null, + "id": 25, "name": "_denomination", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 10, - "src": "1027:13:0", + "referencedDeclaration": 14, + "src": "1099:13:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -732,12 +889,12 @@ }, { "argumentTypes": null, - "id": 21, + "id": 26, "name": "_merkleTreeHeight", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 12, - "src": "1042:17:0", + "referencedDeclaration": 16, + "src": "1114:17:0", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -745,103 +902,131 @@ }, { "argumentTypes": null, - "id": 22, + "id": 27, "name": "_operator", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 14, - "src": "1061:9:0", + "referencedDeclaration": 18, + "src": "1133:9:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], - "id": 23, + "id": 28, "modifierName": { "argumentTypes": null, - "id": 18, + "id": 22, "name": "Tornado", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1194, - "src": "1008:7:0", + "referencedDeclaration": 1023, + "src": "1067:7:0", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Tornado_$1194_$", + "typeIdentifier": "t_type$_t_contract$_Tornado_$1023_$", "typeString": "type(contract Tornado)" } }, "nodeType": "ModifierInvocation", - "src": "1008:63:0" + "src": "1067:76:0" } ], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 17, + "id": 21, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 8, + "id": 10, "name": "_verifier", "nodeType": "VariableDeclaration", - "scope": 30, - "src": "884:19:0", + "scope": 41, + "src": "914:19:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IVerifier_$891", + "typeIdentifier": "t_contract$_IVerifier_$701", "typeString": "contract IVerifier" }, "typeName": { "contractScope": null, - "id": 7, + "id": 9, "name": "IVerifier", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 891, - "src": "884:9:0", + "referencedDeclaration": 701, + "src": "914:9:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_IVerifier_$891", + "typeIdentifier": "t_contract$_IVerifier_$701", "typeString": "contract IVerifier" } }, "value": null, "visibility": "internal" }, - { - "constant": false, - "id": 10, - "name": "_denomination", - "nodeType": "VariableDeclaration", - "scope": 30, - "src": "909:21:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 9, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "909:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, { "constant": false, "id": 12, + "name": "_feeManager", + "nodeType": "VariableDeclaration", + "scope": 41, + "src": "939:23:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IFeeManager_$707", + "typeString": "contract IFeeManager" + }, + "typeName": { + "contractScope": null, + "id": 11, + "name": "IFeeManager", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 707, + "src": "939:11:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IFeeManager_$707", + "typeString": "contract IFeeManager" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 14, + "name": "_denomination", + "nodeType": "VariableDeclaration", + "scope": 41, + "src": "968:21:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "968:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 16, "name": "_merkleTreeHeight", "nodeType": "VariableDeclaration", - "scope": 30, - "src": "936:24:0", + "scope": 41, + "src": "995:24:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -849,10 +1034,10 @@ "typeString": "uint32" }, "typeName": { - "id": 11, + "id": 15, "name": "uint32", "nodeType": "ElementaryTypeName", - "src": "936:6:0", + "src": "995:6:0", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -863,11 +1048,11 @@ }, { "constant": false, - "id": 14, + "id": 18, "name": "_operator", "nodeType": "VariableDeclaration", - "scope": 30, - "src": "966:17:0", + "scope": 41, + "src": "1025:17:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -875,10 +1060,10 @@ "typeString": "address" }, "typeName": { - "id": 13, + "id": 17, "name": "address", "nodeType": "ElementaryTypeName", - "src": "966:7:0", + "src": "1025:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -890,11 +1075,11 @@ }, { "constant": false, - "id": 16, + "id": 20, "name": "_token", "nodeType": "VariableDeclaration", - "scope": 30, - "src": "989:14:0", + "scope": 41, + "src": "1048:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -902,10 +1087,10 @@ "typeString": "address" }, "typeName": { - "id": 15, + "id": 19, "name": "address", "nodeType": "ElementaryTypeName", - "src": "989:7:0", + "src": "1048:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -916,25 +1101,25 @@ "visibility": "internal" } ], - "src": "878:129:0" + "src": "908:158:0" }, "returnParameters": { - "id": 24, + "id": 29, "nodeType": "ParameterList", "parameters": [], - "src": "1079:0:0" + "src": "1151:0:0" }, - "scope": 227, - "src": "867:237:0", + "scope": 266, + "src": "897:334:0", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 50, + "id": 61, "nodeType": "Block", - "src": "1144:155:0", + "src": "1271:155:0", "statements": [ { "expression": { @@ -946,7 +1131,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 37, + "id": 48, "isConstant": false, "isLValue": false, "isPure": false, @@ -955,18 +1140,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 34, + "id": 45, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3260, - "src": "1158:3:0", + "referencedDeclaration": 1068, + "src": "1285:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 35, + "id": 46, "isConstant": false, "isLValue": false, "isPure": false, @@ -974,7 +1159,7 @@ "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1158:9:0", + "src": "1285:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -985,14 +1170,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 36, + "id": 47, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1171:1:0", + "src": "1298:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1000,7 +1185,7 @@ }, "value": "0" }, - "src": "1158:14:0", + "src": "1285:14:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1009,14 +1194,14 @@ { "argumentTypes": null, "hexValue": "4554482076616c756520697320737570706f73656420746f206265203020666f7220455243323020696e7374616e6365", - "id": 38, + "id": 49, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1174:50:0", + "src": "1301:50:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_b14b0818f1fdc710b92ba7e1ce725992b43e47a5b220b1b890f352eeac2e1d5e", @@ -1036,21 +1221,21 @@ "typeString": "literal_string \"ETH value is supposed to be 0 for ERC20 instance\"" } ], - "id": 33, + "id": 44, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 3263, - 3264 + 1071, + 1072 ], - "referencedDeclaration": 3264, - "src": "1150:7:0", + "referencedDeclaration": 1072, + "src": "1277:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 39, + "id": 50, "isConstant": false, "isLValue": false, "isPure": false, @@ -1058,15 +1243,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1150:75:0", + "src": "1277:75:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 40, + "id": 51, "nodeType": "ExpressionStatement", - "src": "1150:75:0" + "src": "1277:75:0" }, { "expression": { @@ -1076,18 +1261,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 42, + "id": 53, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3260, - "src": "1254:3:0", + "referencedDeclaration": 1068, + "src": "1381:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 43, + "id": 54, "isConstant": false, "isLValue": false, "isPure": false, @@ -1095,7 +1280,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1254:10:0", + "src": "1381:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -1106,14 +1291,14 @@ "arguments": [ { "argumentTypes": null, - "id": 45, + "id": 56, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3284, - "src": "1274:4:0", + "referencedDeclaration": 1094, + "src": "1401:4:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Tornado_$227", + "typeIdentifier": "t_contract$_ERC20Tornado_$266", "typeString": "contract ERC20Tornado" } } @@ -1121,24 +1306,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ERC20Tornado_$227", + "typeIdentifier": "t_contract$_ERC20Tornado_$266", "typeString": "contract ERC20Tornado" } ], - "id": 44, + "id": 55, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1266:7:0", + "src": "1393:7:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 46, + "id": 57, "isConstant": false, "isLValue": false, "isPure": false, @@ -1146,7 +1331,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1266:13:0", + "src": "1393:13:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1154,12 +1339,12 @@ }, { "argumentTypes": null, - "id": 47, + "id": 58, "name": "denomination", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 897, - "src": "1281:12:0", + "referencedDeclaration": 713, + "src": "1408:12:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1181,18 +1366,18 @@ "typeString": "uint256" } ], - "id": 41, + "id": 52, "name": "_safeErc20TransferFrom", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 171, - "src": "1231:22:0", + "referencedDeclaration": 210, + "src": "1358:22:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, - "id": 48, + "id": 59, "isConstant": false, "isLValue": false, "isPure": false, @@ -1200,48 +1385,48 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1231:63:0", + "src": "1358:63:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 49, + "id": 60, "nodeType": "ExpressionStatement", - "src": "1231:63:0" + "src": "1358:63:0" } ] }, "documentation": null, - "id": 51, + "id": 62, "implemented": true, "kind": "function", "modifiers": [], "name": "_processDeposit", "nodeType": "FunctionDefinition", "parameters": { - "id": 31, + "id": 42, "nodeType": "ParameterList", "parameters": [], - "src": "1132:2:0" + "src": "1259:2:0" }, "returnParameters": { - "id": 32, + "id": 43, "nodeType": "ParameterList", "parameters": [], - "src": "1144:0:0" + "src": "1271:0:0" }, - "scope": 227, - "src": "1108:191:0", + "scope": 266, + "src": "1235:191:0", "stateMutability": "nonpayable", - "superFunction": 1014, + "superFunction": 838, "visibility": "internal" }, { "body": { - "id": 112, + "id": 151, "nodeType": "Block", - "src": "1423:427:0", + "src": "1574:657:0", "statements": [ { "expression": { @@ -1253,7 +1438,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 66, + "id": 79, "isConstant": false, "isLValue": false, "isPure": false, @@ -1262,18 +1447,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 63, + "id": 76, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3260, - "src": "1437:3:0", + "referencedDeclaration": 1068, + "src": "1588:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 64, + "id": 77, "isConstant": false, "isLValue": false, "isPure": false, @@ -1281,7 +1466,7 @@ "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1437:9:0", + "src": "1588:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1291,18 +1476,18 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 65, + "id": 78, "name": "_refund", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 59, - "src": "1450:7:0", + "referencedDeclaration": 70, + "src": "1601:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1437:20:0", + "src": "1588:20:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1311,14 +1496,14 @@ { "argumentTypes": null, "hexValue": "496e636f727265637420726566756e6420616d6f756e742072656365697665642062792074686520636f6e7472616374", - "id": 67, + "id": 80, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1459:50:0", + "src": "1610:50:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_3189ced290ffd29dc422911cd3b29574f21c524c91f4b41e6abb0646c581cbff", @@ -1338,21 +1523,21 @@ "typeString": "literal_string \"Incorrect refund amount received by the contract\"" } ], - "id": 62, + "id": 75, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 3263, - 3264 + 1071, + 1072 ], - "referencedDeclaration": 3264, - "src": "1429:7:0", + "referencedDeclaration": 1072, + "src": "1580:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 68, + "id": 81, "isConstant": false, "isLValue": false, "isPure": false, @@ -1360,178 +1545,158 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1429:81:0", + "src": "1580:81:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 69, + "id": 82, "nodeType": "ExpressionStatement", - "src": "1429:81:0" + "src": "1580:81:0" }, { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 71, - "name": "_recipient", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 53, - "src": "1536:10:0", + "assignments": [ + 84 + ], + "declarations": [ + { + "constant": false, + "id": 84, + "name": "feeOn", + "nodeType": "VariableDeclaration", + "scope": 151, + "src": "1668:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 83, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1668:4:0", "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 74, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 72, - "name": "denomination", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 897, - "src": "1548:12:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 73, - "name": "_fee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 57, - "src": "1563:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1548:19:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 70, - "name": "_safeErc20Transfer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 226, - "src": "1517:18:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,uint256)" - } - }, - "id": 75, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1517:51:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + "value": null, + "visibility": "internal" } - }, - "id": 76, - "nodeType": "ExpressionStatement", - "src": "1517:51:0" - }, - { - "condition": { + ], + "id": 90, + "initialValue": { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" }, - "id": 79, + "id": 89, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 77, - "name": "_fee", + "id": 85, + "name": "_feeTo", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 57, - "src": "1578:4:0", + "referencedDeclaration": 72, + "src": "1681:6:0", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, "nodeType": "BinaryOperation", - "operator": ">", + "operator": "!=", "rightExpression": { "argumentTypes": null, - "hexValue": "30", - "id": 78, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 87, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1699:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 86, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1691:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 88, "isConstant": false, "isLValue": false, "isPure": true, - "kind": "number", + "kind": "typeConversion", "lValueRequested": false, - "nodeType": "Literal", - "src": "1585:1:0", - "subdenomination": null, + "names": [], + "nodeType": "FunctionCall", + "src": "1691:10:0", "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } }, - "src": "1578:8:0", + "src": "1681:20:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "falseBody": null, - "id": 86, - "nodeType": "IfStatement", - "src": "1574:63:0", - "trueBody": { - "id": 85, + "nodeType": "VariableDeclarationStatement", + "src": "1668:33:0" + }, + { + "condition": { + "argumentTypes": null, + "id": 91, + "name": "feeOn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 84, + "src": "1711:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 114, "nodeType": "Block", - "src": "1588:49:0", + "src": "1859:74:0", "statements": [ { "expression": { @@ -1539,12 +1704,12 @@ "arguments": [ { "argumentTypes": null, - "id": 81, - "name": "_relayer", + "id": 108, + "name": "_recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 55, - "src": "1615:8:0", + "referencedDeclaration": 64, + "src": "1886:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -1552,12 +1717,44 @@ }, { "argumentTypes": null, - "id": 82, - "name": "_fee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 57, - "src": "1625:4:0", + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 111, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 109, + "name": "denomination", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 713, + "src": "1898:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 110, + "name": "_relayer_fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 68, + "src": "1913:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1898:27:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1575,18 +1772,18 @@ "typeString": "uint256" } ], - "id": 80, + "id": 107, "name": "_safeErc20Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 226, - "src": "1596:18:0", + "referencedDeclaration": 265, + "src": "1867:18:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, - "id": 83, + "id": 112, "isConstant": false, "isLValue": false, "isPure": false, @@ -1594,15 +1791,231 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1596:34:0", + "src": "1867:59:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 84, + "id": 113, "nodeType": "ExpressionStatement", - "src": "1596:34:0" + "src": "1867:59:0" + } + ] + }, + "id": 115, + "nodeType": "IfStatement", + "src": "1707:226:0", + "trueBody": { + "id": 106, + "nodeType": "Block", + "src": "1718:135:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 93, + "name": "_recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64, + "src": "1745:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 98, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 96, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 94, + "name": "denomination", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 713, + "src": "1757:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 95, + "name": "_relayer_fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 68, + "src": "1772:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1757:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 97, + "name": "protocolFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8, + "src": "1787:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1757:41:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 92, + "name": "_safeErc20Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 265, + "src": "1726:18:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 99, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1726:73:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 100, + "nodeType": "ExpressionStatement", + "src": "1726:73:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 102, + "name": "_feeTo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 72, + "src": "1826:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 103, + "name": "protocolFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8, + "src": "1834:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 101, + "name": "_safeErc20Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 265, + "src": "1807:18:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 104, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1807:39:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 105, + "nodeType": "ExpressionStatement", + "src": "1807:39:0" } ] } @@ -1614,19 +2027,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 89, + "id": 118, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 87, - "name": "_refund", + "id": 116, + "name": "_relayer_fee", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 59, - "src": "1647:7:0", + "referencedDeclaration": 68, + "src": "1943:12:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1637,14 +2050,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 88, + "id": 117, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1657:1:0", + "src": "1958:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1652,34 +2065,168 @@ }, "value": "0" }, - "src": "1647:11:0", + "src": "1943:16:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 111, + "id": 125, "nodeType": "IfStatement", - "src": "1643:203:0", + "src": "1939:79:0", "trueBody": { - "id": 110, + "id": 124, "nodeType": "Block", - "src": "1660:186:0", + "src": "1961:57:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 120, + "name": "_relayer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66, + "src": "1988:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 121, + "name": "_relayer_fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 68, + "src": "1998:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 119, + "name": "_safeErc20Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 265, + "src": "1969:18:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 122, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1969:42:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 123, + "nodeType": "ExpressionStatement", + "src": "1969:42:0" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 128, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 126, + "name": "_refund", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 70, + "src": "2028:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 127, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2038:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2028:11:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 150, + "nodeType": "IfStatement", + "src": "2024:203:0", + "trueBody": { + "id": 149, + "nodeType": "Block", + "src": "2041:186:0", "statements": [ { "assignments": [ - 91, + 130, null ], "declarations": [ { "constant": false, - "id": 91, + "id": 130, "name": "success", "nodeType": "VariableDeclaration", - "scope": 110, - "src": "1669:12:0", + "scope": 149, + "src": "2050:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1687,10 +2234,10 @@ "typeString": "bool" }, "typeName": { - "id": 90, + "id": 129, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "1669:4:0", + "src": "2050:4:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1701,21 +2248,21 @@ }, null ], - "id": 99, + "id": 138, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "", - "id": 97, + "id": 136, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1718:2:0", + "src": "2099:2:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", @@ -1734,12 +2281,12 @@ "arguments": [ { "argumentTypes": null, - "id": 95, + "id": 134, "name": "_refund", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 59, - "src": "1709:7:0", + "referencedDeclaration": 70, + "src": "2090:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1757,18 +2304,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 92, + "id": 131, "name": "_recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 53, - "src": "1687:10:0", + "referencedDeclaration": 64, + "src": "2068:10:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, - "id": 93, + "id": 132, "isConstant": false, "isLValue": false, "isPure": false, @@ -1776,13 +2323,13 @@ "memberName": "call", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1687:15:0", + "src": "2068:15:0", "typeDescriptions": { "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory) payable returns (bool,bytes memory)" } }, - "id": 94, + "id": 133, "isConstant": false, "isLValue": false, "isPure": false, @@ -1790,13 +2337,13 @@ "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1687:21:0", + "src": "2068:21:0", "typeDescriptions": { "typeIdentifier": "t_function_setvalue_pure$_t_uint256_$returns$_t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value_$", "typeString": "function (uint256) pure returns (function (bytes memory) payable returns (bool,bytes memory))" } }, - "id": 96, + "id": 135, "isConstant": false, "isLValue": false, "isPure": false, @@ -1804,13 +2351,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1687:30:0", + "src": "2068:30:0", "typeDescriptions": { "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value", "typeString": "function (bytes memory) payable returns (bool,bytes memory)" } }, - "id": 98, + "id": 137, "isConstant": false, "isLValue": false, "isPure": false, @@ -1818,19 +2365,19 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1687:34:0", + "src": "2068:34:0", "typeDescriptions": { "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "tuple(bool,bytes memory)" } }, "nodeType": "VariableDeclarationStatement", - "src": "1668:53:0" + "src": "2049:53:0" }, { "condition": { "argumentTypes": null, - "id": 101, + "id": 140, "isConstant": false, "isLValue": false, "isPure": false, @@ -1838,15 +2385,15 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "1733:8:0", + "src": "2114:8:0", "subExpression": { "argumentTypes": null, - "id": 100, + "id": 139, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 91, - "src": "1734:7:0", + "referencedDeclaration": 130, + "src": "2115:7:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1858,13 +2405,13 @@ } }, "falseBody": null, - "id": 109, + "id": 148, "nodeType": "IfStatement", - "src": "1729:111:0", + "src": "2110:111:0", "trueBody": { - "id": 108, + "id": 147, "nodeType": "Block", - "src": "1743:97:0", + "src": "2124:97:0", "statements": [ { "expression": { @@ -1872,12 +2419,12 @@ "arguments": [ { "argumentTypes": null, - "id": 105, + "id": 144, "name": "_refund", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 59, - "src": "1823:7:0", + "referencedDeclaration": 70, + "src": "2204:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1893,18 +2440,18 @@ ], "expression": { "argumentTypes": null, - "id": 102, + "id": 141, "name": "_relayer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 55, - "src": "1805:8:0", + "referencedDeclaration": 66, + "src": "2186:8:0", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, - "id": 104, + "id": 143, "isConstant": false, "isLValue": false, "isPure": false, @@ -1912,13 +2459,13 @@ "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1805:17:0", + "src": "2186:17:0", "typeDescriptions": { "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)" } }, - "id": 106, + "id": 145, "isConstant": false, "isLValue": false, "isPure": false, @@ -1926,15 +2473,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1805:26:0", + "src": "2186:26:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 107, + "id": 146, "nodeType": "ExpressionStatement", - "src": "1805:26:0" + "src": "2186:26:0" } ] } @@ -1945,23 +2492,23 @@ ] }, "documentation": null, - "id": 113, + "id": 152, "implemented": true, "kind": "function", "modifiers": [], "name": "_processWithdraw", "nodeType": "FunctionDefinition", "parameters": { - "id": 60, + "id": 73, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 53, + "id": 64, "name": "_recipient", "nodeType": "VariableDeclaration", - "scope": 113, - "src": "1329:26:0", + "scope": 152, + "src": "1456:26:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1969,10 +2516,10 @@ "typeString": "address payable" }, "typeName": { - "id": 52, + "id": 63, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1329:15:0", + "src": "1456:15:0", "stateMutability": "payable", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -1984,11 +2531,11 @@ }, { "constant": false, - "id": 55, + "id": 66, "name": "_relayer", "nodeType": "VariableDeclaration", - "scope": 113, - "src": "1357:24:0", + "scope": 152, + "src": "1484:24:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1996,10 +2543,10 @@ "typeString": "address payable" }, "typeName": { - "id": 54, + "id": 65, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1357:15:0", + "src": "1484:15:0", "stateMutability": "payable", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -2011,11 +2558,11 @@ }, { "constant": false, - "id": 57, - "name": "_fee", + "id": 68, + "name": "_relayer_fee", "nodeType": "VariableDeclaration", - "scope": 113, - "src": "1383:12:0", + "scope": 152, + "src": "1510:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2023,10 +2570,10 @@ "typeString": "uint256" }, "typeName": { - "id": 56, + "id": 67, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1383:7:0", + "src": "1510:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2037,11 +2584,11 @@ }, { "constant": false, - "id": 59, + "id": 70, "name": "_refund", "nodeType": "VariableDeclaration", - "scope": 113, - "src": "1397:15:0", + "scope": 152, + "src": "1532:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2049,10 +2596,10 @@ "typeString": "uint256" }, "typeName": { - "id": 58, + "id": 69, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1397:7:0", + "src": "1532:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2060,41 +2607,68 @@ }, "value": null, "visibility": "internal" + }, + { + "constant": false, + "id": 72, + "name": "_feeTo", + "nodeType": "VariableDeclaration", + "scope": 152, + "src": "1549:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 71, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1549:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" } ], - "src": "1328:85:0" + "src": "1455:109:0" }, "returnParameters": { - "id": 61, + "id": 74, "nodeType": "ParameterList", "parameters": [], - "src": "1423:0:0" + "src": "1574:0:0" }, - "scope": 227, - "src": "1303:547:0", + "scope": 266, + "src": "1430:801:0", "stateMutability": "nonpayable", - "superFunction": 1110, + "superFunction": 939, "visibility": "internal" }, { "body": { - "id": 170, + "id": 209, "nodeType": "Block", - "src": "1940:504:0", + "src": "2321:504:0", "statements": [ { "assignments": [ - 123, - 125 + 162, + 164 ], "declarations": [ { "constant": false, - "id": 123, + "id": 162, "name": "success", "nodeType": "VariableDeclaration", - "scope": 170, - "src": "1947:12:0", + "scope": 209, + "src": "2328:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2102,10 +2676,10 @@ "typeString": "bool" }, "typeName": { - "id": 122, + "id": 161, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "1947:4:0", + "src": "2328:4:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2116,11 +2690,11 @@ }, { "constant": false, - "id": 125, + "id": 164, "name": "data", "nodeType": "VariableDeclaration", - "scope": 170, - "src": "1961:17:0", + "scope": 209, + "src": "2342:17:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -2128,10 +2702,10 @@ "typeString": "bytes" }, "typeName": { - "id": 124, + "id": 163, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "1961:5:0", + "src": "2342:5:0", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -2141,7 +2715,7 @@ "visibility": "internal" } ], - "id": 136, + "id": 175, "initialValue": { "argumentTypes": null, "arguments": [ @@ -2151,14 +2725,14 @@ { "argumentTypes": null, "hexValue": "30783233623837326464", - "id": 130, + "id": 169, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2016:10:0", + "src": "2397:10:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_599290589_by_1", @@ -2168,12 +2742,12 @@ }, { "argumentTypes": null, - "id": 131, + "id": 170, "name": "_from", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 115, - "src": "2047:5:0", + "referencedDeclaration": 154, + "src": "2428:5:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2181,12 +2755,12 @@ }, { "argumentTypes": null, - "id": 132, + "id": 171, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 117, - "src": "2054:3:0", + "referencedDeclaration": 156, + "src": "2435:3:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2194,12 +2768,12 @@ }, { "argumentTypes": null, - "id": 133, + "id": 172, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 119, - "src": "2059:7:0", + "referencedDeclaration": 158, + "src": "2440:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2227,18 +2801,18 @@ ], "expression": { "argumentTypes": null, - "id": 128, + "id": 167, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3247, - "src": "1993:3:0", + "referencedDeclaration": 1055, + "src": "2374:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 129, + "id": 168, "isConstant": false, "isLValue": false, "isPure": true, @@ -2246,13 +2820,13 @@ "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1993:22:0", + "src": "2374:22:0", "typeDescriptions": { "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)" } }, - "id": 134, + "id": 173, "isConstant": false, "isLValue": false, "isPure": false, @@ -2260,7 +2834,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1993:74:0", + "src": "2374:74:0", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -2276,18 +2850,18 @@ ], "expression": { "argumentTypes": null, - "id": 126, + "id": 165, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6, - "src": "1982:5:0", + "src": "2363:5:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 127, + "id": 166, "isConstant": false, "isLValue": false, "isPure": false, @@ -2295,13 +2869,13 @@ "memberName": "call", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1982:10:0", + "src": "2363:10:0", "typeDescriptions": { "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory) payable returns (bool,bytes memory)" } }, - "id": 135, + "id": 174, "isConstant": false, "isLValue": false, "isPure": false, @@ -2309,14 +2883,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1982:86:0", + "src": "2363:86:0", "typeDescriptions": { "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "tuple(bool,bytes memory)" } }, "nodeType": "VariableDeclarationStatement", - "src": "1946:122:0" + "src": "2327:122:0" }, { "expression": { @@ -2324,12 +2898,12 @@ "arguments": [ { "argumentTypes": null, - "id": 138, + "id": 177, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2082:7:0", + "referencedDeclaration": 162, + "src": "2463:7:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2338,14 +2912,14 @@ { "argumentTypes": null, "hexValue": "6e6f7420656e6f75676820616c6c6f77656420746f6b656e73", - "id": 139, + "id": 178, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2091:27:0", + "src": "2472:27:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_b31c8a8545ea674c554dd2f6bad7d7bd1dfe923a25150b76350dc6970bf3ff5c", @@ -2365,21 +2939,21 @@ "typeString": "literal_string \"not enough allowed tokens\"" } ], - "id": 137, + "id": 176, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 3263, - 3264 + 1071, + 1072 ], - "referencedDeclaration": 3264, - "src": "2074:7:0", + "referencedDeclaration": 1072, + "src": "2455:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 140, + "id": 179, "isConstant": false, "isLValue": false, "isPure": false, @@ -2387,15 +2961,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2074:45:0", + "src": "2455:45:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 141, + "id": 180, "nodeType": "ExpressionStatement", - "src": "2074:45:0" + "src": "2455:45:0" }, { "condition": { @@ -2404,7 +2978,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 145, + "id": 184, "isConstant": false, "isLValue": false, "isPure": false, @@ -2413,18 +2987,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 142, + "id": 181, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 125, - "src": "2219:4:0", + "referencedDeclaration": 164, + "src": "2600:4:0", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 143, + "id": 182, "isConstant": false, "isLValue": false, "isPure": false, @@ -2432,7 +3006,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2219:11:0", + "src": "2600:11:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2443,14 +3017,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 144, + "id": 183, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2233:1:0", + "src": "2614:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2458,20 +3032,20 @@ }, "value": "0" }, - "src": "2219:15:0", + "src": "2600:15:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 169, + "id": 208, "nodeType": "IfStatement", - "src": "2215:225:0", + "src": "2596:225:0", "trueBody": { - "id": 168, + "id": 207, "nodeType": "Block", - "src": "2236:204:0", + "src": "2617:204:0", "statements": [ { "expression": { @@ -2483,7 +3057,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 150, + "id": 189, "isConstant": false, "isLValue": false, "isPure": false, @@ -2492,18 +3066,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 147, + "id": 186, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 125, - "src": "2252:4:0", + "referencedDeclaration": 164, + "src": "2633:4:0", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 148, + "id": 187, "isConstant": false, "isLValue": false, "isPure": false, @@ -2511,7 +3085,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2252:11:0", + "src": "2633:11:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2522,14 +3096,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "3332", - "id": 149, + "id": 188, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2267:2:0", + "src": "2648:2:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_32_by_1", @@ -2537,7 +3111,7 @@ }, "value": "32" }, - "src": "2252:17:0", + "src": "2633:17:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2546,14 +3120,14 @@ { "argumentTypes": null, "hexValue": "64617461206c656e6774682073686f756c64206265206569746865722030206f72203332206279746573", - "id": 151, + "id": 190, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2271:44:0", + "src": "2652:44:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_22b4652a1c8fbdfc6305c7ee289e87caf6a45e5ae327ee8f67eb64ba36d62560", @@ -2573,21 +3147,21 @@ "typeString": "literal_string \"data length should be either 0 or 32 bytes\"" } ], - "id": 146, + "id": 185, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 3263, - 3264 + 1071, + 1072 ], - "referencedDeclaration": 3264, - "src": "2244:7:0", + "referencedDeclaration": 1072, + "src": "2625:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 152, + "id": 191, "isConstant": false, "isLValue": false, "isPure": false, @@ -2595,32 +3169,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2244:72:0", + "src": "2625:72:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 153, + "id": 192, "nodeType": "ExpressionStatement", - "src": "2244:72:0" + "src": "2625:72:0" }, { "expression": { "argumentTypes": null, - "id": 161, + "id": 200, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 154, + "id": 193, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2324:7:0", + "referencedDeclaration": 162, + "src": "2705:7:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2633,12 +3207,12 @@ "arguments": [ { "argumentTypes": null, - "id": 157, + "id": 196, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 125, - "src": "2345:4:0", + "referencedDeclaration": 164, + "src": "2726:4:0", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -2649,13 +3223,13 @@ "components": [ { "argumentTypes": null, - "id": 158, + "id": 197, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2352:4:0", + "src": "2733:4:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_bool_$", "typeString": "type(bool)" @@ -2663,14 +3237,14 @@ "typeName": "bool" } ], - "id": 159, + "id": 198, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "2351:6:0", + "src": "2732:6:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_bool_$", "typeString": "type(bool)" @@ -2690,18 +3264,18 @@ ], "expression": { "argumentTypes": null, - "id": 155, + "id": 194, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3247, - "src": "2334:3:0", + "referencedDeclaration": 1055, + "src": "2715:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 156, + "id": 195, "isConstant": false, "isLValue": false, "isPure": true, @@ -2709,13 +3283,13 @@ "memberName": "decode", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2334:10:0", + "src": "2715:10:0", "typeDescriptions": { "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", "typeString": "function () pure" } }, - "id": 160, + "id": 199, "isConstant": false, "isLValue": false, "isPure": false, @@ -2723,21 +3297,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2334:24:0", + "src": "2715:24:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "2324:34:0", + "src": "2705:34:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 162, + "id": 201, "nodeType": "ExpressionStatement", - "src": "2324:34:0" + "src": "2705:34:0" }, { "expression": { @@ -2745,12 +3319,12 @@ "arguments": [ { "argumentTypes": null, - "id": 164, + "id": 203, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2374:7:0", + "referencedDeclaration": 162, + "src": "2755:7:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2759,14 +3333,14 @@ { "argumentTypes": null, "hexValue": "6e6f7420656e6f75676820616c6c6f77656420746f6b656e732e20546f6b656e2072657475726e732066616c73652e", - "id": 165, + "id": 204, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2383:49:0", + "src": "2764:49:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_6cfae212a217874b58247660ff4d75d72aa825e8f2120480a7da09cf7efa221d", @@ -2786,21 +3360,21 @@ "typeString": "literal_string \"not enough allowed tokens. Token returns false.\"" } ], - "id": 163, + "id": 202, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 3263, - 3264 + 1071, + 1072 ], - "referencedDeclaration": 3264, - "src": "2366:7:0", + "referencedDeclaration": 1072, + "src": "2747:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 166, + "id": 205, "isConstant": false, "isLValue": false, "isPure": false, @@ -2808,15 +3382,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2366:67:0", + "src": "2747:67:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 167, + "id": 206, "nodeType": "ExpressionStatement", - "src": "2366:67:0" + "src": "2747:67:0" } ] } @@ -2824,23 +3398,23 @@ ] }, "documentation": null, - "id": 171, + "id": 210, "implemented": true, "kind": "function", "modifiers": [], "name": "_safeErc20TransferFrom", "nodeType": "FunctionDefinition", "parameters": { - "id": 120, + "id": 159, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 115, + "id": 154, "name": "_from", "nodeType": "VariableDeclaration", - "scope": 171, - "src": "1886:13:0", + "scope": 210, + "src": "2267:13:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2848,10 +3422,10 @@ "typeString": "address" }, "typeName": { - "id": 114, + "id": 153, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1886:7:0", + "src": "2267:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2863,11 +3437,11 @@ }, { "constant": false, - "id": 117, + "id": 156, "name": "_to", "nodeType": "VariableDeclaration", - "scope": 171, - "src": "1901:11:0", + "scope": 210, + "src": "2282:11:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2875,10 +3449,10 @@ "typeString": "address" }, "typeName": { - "id": 116, + "id": 155, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1901:7:0", + "src": "2282:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2890,11 +3464,11 @@ }, { "constant": false, - "id": 119, + "id": 158, "name": "_amount", "nodeType": "VariableDeclaration", - "scope": 171, - "src": "1914:15:0", + "scope": 210, + "src": "2295:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2902,10 +3476,10 @@ "typeString": "uint256" }, "typeName": { - "id": 118, + "id": 157, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1914:7:0", + "src": "2295:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2915,39 +3489,39 @@ "visibility": "internal" } ], - "src": "1885:45:0" + "src": "2266:45:0" }, "returnParameters": { - "id": 121, + "id": 160, "nodeType": "ParameterList", "parameters": [], - "src": "1940:0:0" + "src": "2321:0:0" }, - "scope": 227, - "src": "1854:590:0", + "scope": 266, + "src": "2235:590:0", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 225, + "id": 264, "nodeType": "Block", - "src": "2515:477:0", + "src": "2896:477:0", "statements": [ { "assignments": [ - 179, - 181 + 218, + 220 ], "declarations": [ { "constant": false, - "id": 179, + "id": 218, "name": "success", "nodeType": "VariableDeclaration", - "scope": 225, - "src": "2522:12:0", + "scope": 264, + "src": "2903:12:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2955,10 +3529,10 @@ "typeString": "bool" }, "typeName": { - "id": 178, + "id": 217, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "2522:4:0", + "src": "2903:4:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2969,11 +3543,11 @@ }, { "constant": false, - "id": 181, + "id": 220, "name": "data", "nodeType": "VariableDeclaration", - "scope": 225, - "src": "2536:17:0", + "scope": 264, + "src": "2917:17:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -2981,10 +3555,10 @@ "typeString": "bytes" }, "typeName": { - "id": 180, + "id": 219, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2536:5:0", + "src": "2917:5:0", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -2994,7 +3568,7 @@ "visibility": "internal" } ], - "id": 191, + "id": 230, "initialValue": { "argumentTypes": null, "arguments": [ @@ -3004,14 +3578,14 @@ { "argumentTypes": null, "hexValue": "30786139303539636262", - "id": 186, + "id": 225, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2591:10:0", + "src": "2972:10:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2835717307_by_1", @@ -3021,12 +3595,12 @@ }, { "argumentTypes": null, - "id": 187, + "id": 226, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 173, - "src": "2618:3:0", + "referencedDeclaration": 212, + "src": "2999:3:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3034,12 +3608,12 @@ }, { "argumentTypes": null, - "id": 188, + "id": 227, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 175, - "src": "2623:7:0", + "referencedDeclaration": 214, + "src": "3004:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3063,18 +3637,18 @@ ], "expression": { "argumentTypes": null, - "id": 184, + "id": 223, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3247, - "src": "2568:3:0", + "referencedDeclaration": 1055, + "src": "2949:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 185, + "id": 224, "isConstant": false, "isLValue": false, "isPure": true, @@ -3082,13 +3656,13 @@ "memberName": "encodeWithSelector", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2568:22:0", + "src": "2949:22:0", "typeDescriptions": { "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", "typeString": "function (bytes4) pure returns (bytes memory)" } }, - "id": 189, + "id": 228, "isConstant": false, "isLValue": false, "isPure": false, @@ -3096,7 +3670,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2568:63:0", + "src": "2949:63:0", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -3112,18 +3686,18 @@ ], "expression": { "argumentTypes": null, - "id": 182, + "id": 221, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 6, - "src": "2557:5:0", + "src": "2938:5:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 183, + "id": 222, "isConstant": false, "isLValue": false, "isPure": false, @@ -3131,13 +3705,13 @@ "memberName": "call", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2557:10:0", + "src": "2938:10:0", "typeDescriptions": { "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory) payable returns (bool,bytes memory)" } }, - "id": 190, + "id": 229, "isConstant": false, "isLValue": false, "isPure": false, @@ -3145,14 +3719,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2557:75:0", + "src": "2938:75:0", "typeDescriptions": { "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "tuple(bool,bytes memory)" } }, "nodeType": "VariableDeclarationStatement", - "src": "2521:111:0" + "src": "2902:111:0" }, { "expression": { @@ -3160,12 +3734,12 @@ "arguments": [ { "argumentTypes": null, - "id": 193, + "id": 232, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 179, - "src": "2646:7:0", + "referencedDeclaration": 218, + "src": "3027:7:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3174,14 +3748,14 @@ { "argumentTypes": null, "hexValue": "6e6f7420656e6f75676820746f6b656e73", - "id": 194, + "id": 233, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2655:19:0", + "src": "3036:19:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_73949bcdc07934e9395e82489bb22c4742e057960a2c090d38e53d68d3caf52a", @@ -3201,21 +3775,21 @@ "typeString": "literal_string \"not enough tokens\"" } ], - "id": 192, + "id": 231, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 3263, - 3264 + 1071, + 1072 ], - "referencedDeclaration": 3264, - "src": "2638:7:0", + "referencedDeclaration": 1072, + "src": "3019:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 195, + "id": 234, "isConstant": false, "isLValue": false, "isPure": false, @@ -3223,15 +3797,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2638:37:0", + "src": "3019:37:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 196, + "id": 235, "nodeType": "ExpressionStatement", - "src": "2638:37:0" + "src": "3019:37:0" }, { "condition": { @@ -3240,7 +3814,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 200, + "id": 239, "isConstant": false, "isLValue": false, "isPure": false, @@ -3249,18 +3823,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 197, + "id": 236, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 181, - "src": "2775:4:0", + "referencedDeclaration": 220, + "src": "3156:4:0", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 198, + "id": 237, "isConstant": false, "isLValue": false, "isPure": false, @@ -3268,7 +3842,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2775:11:0", + "src": "3156:11:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3279,14 +3853,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 199, + "id": 238, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2789:1:0", + "src": "3170:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3294,20 +3868,20 @@ }, "value": "0" }, - "src": "2775:15:0", + "src": "3156:15:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 224, + "id": 263, "nodeType": "IfStatement", - "src": "2771:217:0", + "src": "3152:217:0", "trueBody": { - "id": 223, + "id": 262, "nodeType": "Block", - "src": "2792:196:0", + "src": "3173:196:0", "statements": [ { "expression": { @@ -3319,7 +3893,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 205, + "id": 244, "isConstant": false, "isLValue": false, "isPure": false, @@ -3328,18 +3902,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 202, + "id": 241, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 181, - "src": "2808:4:0", + "referencedDeclaration": 220, + "src": "3189:4:0", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 203, + "id": 242, "isConstant": false, "isLValue": false, "isPure": false, @@ -3347,7 +3921,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2808:11:0", + "src": "3189:11:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3358,14 +3932,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "3332", - "id": 204, + "id": 243, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2823:2:0", + "src": "3204:2:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_32_by_1", @@ -3373,7 +3947,7 @@ }, "value": "32" }, - "src": "2808:17:0", + "src": "3189:17:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3382,14 +3956,14 @@ { "argumentTypes": null, "hexValue": "64617461206c656e6774682073686f756c64206265206569746865722030206f72203332206279746573", - "id": 206, + "id": 245, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2827:44:0", + "src": "3208:44:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_22b4652a1c8fbdfc6305c7ee289e87caf6a45e5ae327ee8f67eb64ba36d62560", @@ -3409,21 +3983,21 @@ "typeString": "literal_string \"data length should be either 0 or 32 bytes\"" } ], - "id": 201, + "id": 240, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 3263, - 3264 + 1071, + 1072 ], - "referencedDeclaration": 3264, - "src": "2800:7:0", + "referencedDeclaration": 1072, + "src": "3181:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 207, + "id": 246, "isConstant": false, "isLValue": false, "isPure": false, @@ -3431,32 +4005,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2800:72:0", + "src": "3181:72:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 208, + "id": 247, "nodeType": "ExpressionStatement", - "src": "2800:72:0" + "src": "3181:72:0" }, { "expression": { "argumentTypes": null, - "id": 216, + "id": 255, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 209, + "id": 248, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 179, - "src": "2880:7:0", + "referencedDeclaration": 218, + "src": "3261:7:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3469,12 +4043,12 @@ "arguments": [ { "argumentTypes": null, - "id": 212, + "id": 251, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 181, - "src": "2901:4:0", + "referencedDeclaration": 220, + "src": "3282:4:0", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -3485,13 +4059,13 @@ "components": [ { "argumentTypes": null, - "id": 213, + "id": 252, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2908:4:0", + "src": "3289:4:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_bool_$", "typeString": "type(bool)" @@ -3499,14 +4073,14 @@ "typeName": "bool" } ], - "id": 214, + "id": 253, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "2907:6:0", + "src": "3288:6:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_bool_$", "typeString": "type(bool)" @@ -3526,18 +4100,18 @@ ], "expression": { "argumentTypes": null, - "id": 210, + "id": 249, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3247, - "src": "2890:3:0", + "referencedDeclaration": 1055, + "src": "3271:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 211, + "id": 250, "isConstant": false, "isLValue": false, "isPure": true, @@ -3545,13 +4119,13 @@ "memberName": "decode", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2890:10:0", + "src": "3271:10:0", "typeDescriptions": { "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", "typeString": "function () pure" } }, - "id": 215, + "id": 254, "isConstant": false, "isLValue": false, "isPure": false, @@ -3559,21 +4133,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2890:24:0", + "src": "3271:24:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "2880:34:0", + "src": "3261:34:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 217, + "id": 256, "nodeType": "ExpressionStatement", - "src": "2880:34:0" + "src": "3261:34:0" }, { "expression": { @@ -3581,12 +4155,12 @@ "arguments": [ { "argumentTypes": null, - "id": 219, + "id": 258, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 179, - "src": "2930:7:0", + "referencedDeclaration": 218, + "src": "3311:7:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3595,14 +4169,14 @@ { "argumentTypes": null, "hexValue": "6e6f7420656e6f75676820746f6b656e732e20546f6b656e2072657475726e732066616c73652e", - "id": 220, + "id": 259, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2939:41:0", + "src": "3320:41:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_38fa5aabf87e9f42de902eb4d9022484dde7943d80702b79ba468e9fc08f5e5e", @@ -3622,21 +4196,21 @@ "typeString": "literal_string \"not enough tokens. Token returns false.\"" } ], - "id": 218, + "id": 257, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 3263, - 3264 + 1071, + 1072 ], - "referencedDeclaration": 3264, - "src": "2922:7:0", + "referencedDeclaration": 1072, + "src": "3303:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 221, + "id": 260, "isConstant": false, "isLValue": false, "isPure": false, @@ -3644,15 +4218,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2922:59:0", + "src": "3303:59:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 222, + "id": 261, "nodeType": "ExpressionStatement", - "src": "2922:59:0" + "src": "3303:59:0" } ] } @@ -3660,23 +4234,23 @@ ] }, "documentation": null, - "id": 226, + "id": 265, "implemented": true, "kind": "function", "modifiers": [], "name": "_safeErc20Transfer", "nodeType": "FunctionDefinition", "parameters": { - "id": 176, + "id": 215, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 173, + "id": 212, "name": "_to", "nodeType": "VariableDeclaration", - "scope": 226, - "src": "2476:11:0", + "scope": 265, + "src": "2857:11:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3684,10 +4258,10 @@ "typeString": "address" }, "typeName": { - "id": 172, + "id": 211, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2476:7:0", + "src": "2857:7:0", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3699,11 +4273,11 @@ }, { "constant": false, - "id": 175, + "id": 214, "name": "_amount", "nodeType": "VariableDeclaration", - "scope": 226, - "src": "2489:15:0", + "scope": 265, + "src": "2870:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3711,10 +4285,10 @@ "typeString": "uint256" }, "typeName": { - "id": 174, + "id": 213, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2489:7:0", + "src": "2870:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3724,33 +4298,33 @@ "visibility": "internal" } ], - "src": "2475:30:0" + "src": "2856:30:0" }, "returnParameters": { - "id": 177, + "id": 216, "nodeType": "ParameterList", "parameters": [], - "src": "2515:0:0" + "src": "2896:0:0" }, - "scope": 227, - "src": "2448:544:0", + "scope": 266, + "src": "2829:544:0", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 228, - "src": "805:2189:0" + "scope": 267, + "src": "805:2570:0" } ], - "src": "755:2240:0" + "src": "755:2621:0" }, "legacyAST": { "attributes": { "absolutePath": "/Users/brianli/dotfiles/tornado-core/contracts/ERC20Tornado.sol", "exportedSymbols": { "ERC20Tornado": [ - 227 + 266 ] } }, @@ -3769,10 +4343,10 @@ }, { "attributes": { - "SourceUnit": 1195, + "SourceUnit": 1024, "absolutePath": "/Users/brianli/dotfiles/tornado-core/contracts/Tornado.sol", "file": "./Tornado.sol", - "scope": 228, + "scope": 267, "symbolAliases": [ null ], @@ -3785,21 +4359,21 @@ { "attributes": { "contractDependencies": [ - 694, - 1194, - 3245 + 685, + 1023, + 1053 ], "contractKind": "contract", "documentation": null, "fullyImplemented": true, "linearizedBaseContracts": [ - 227, - 1194, - 3245, - 694 + 266, + 1023, + 1053, + 685 ], "name": "ERC20Tornado", - "scope": 228 + "scope": 267 }, "children": [ { @@ -3811,7 +4385,7 @@ "attributes": { "contractScope": null, "name": "Tornado", - "referencedDeclaration": 1194, + "referencedDeclaration": 1023, "type": "contract Tornado" }, "id": 3, @@ -3827,7 +4401,7 @@ "attributes": { "constant": false, "name": "token", - "scope": 227, + "scope": 266, "stateVariable": true, "storageLocation": "default", "type": "address", @@ -3850,6 +4424,32 @@ "name": "VariableDeclaration", "src": "842:20:0" }, + { + "attributes": { + "constant": false, + "name": "protocolFee", + "scope": 266, + "stateVariable": true, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "name": "uint256", + "type": "uint256" + }, + "id": 7, + "name": "ElementaryTypeName", + "src": "866:7:0" + } + ], + "id": 8, + "name": "VariableDeclaration", + "src": "866:26:0" + }, { "attributes": { "documentation": null, @@ -3857,7 +4457,7 @@ "isConstructor": true, "kind": "constructor", "name": "", - "scope": 227, + "scope": 266, "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -3869,7 +4469,7 @@ "attributes": { "constant": false, "name": "_verifier", - "scope": 30, + "scope": 41, "stateVariable": false, "storageLocation": "default", "type": "contract IVerifier", @@ -3881,23 +4481,51 @@ "attributes": { "contractScope": null, "name": "IVerifier", - "referencedDeclaration": 891, + "referencedDeclaration": 701, "type": "contract IVerifier" }, - "id": 7, + "id": 9, "name": "UserDefinedTypeName", - "src": "884:9:0" + "src": "914:9:0" } ], - "id": 8, + "id": 10, "name": "VariableDeclaration", - "src": "884:19:0" + "src": "914:19:0" + }, + { + "attributes": { + "constant": false, + "name": "_feeManager", + "scope": 41, + "stateVariable": false, + "storageLocation": "default", + "type": "contract IFeeManager", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "IFeeManager", + "referencedDeclaration": 707, + "type": "contract IFeeManager" + }, + "id": 11, + "name": "UserDefinedTypeName", + "src": "939:11:0" + } + ], + "id": 12, + "name": "VariableDeclaration", + "src": "939:23:0" }, { "attributes": { "constant": false, "name": "_denomination", - "scope": 30, + "scope": 41, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -3910,20 +4538,20 @@ "name": "uint256", "type": "uint256" }, - "id": 9, + "id": 13, "name": "ElementaryTypeName", - "src": "909:7:0" + "src": "968:7:0" } ], - "id": 10, + "id": 14, "name": "VariableDeclaration", - "src": "909:21:0" + "src": "968:21:0" }, { "attributes": { "constant": false, "name": "_merkleTreeHeight", - "scope": 30, + "scope": 41, "stateVariable": false, "storageLocation": "default", "type": "uint32", @@ -3936,20 +4564,20 @@ "name": "uint32", "type": "uint32" }, - "id": 11, + "id": 15, "name": "ElementaryTypeName", - "src": "936:6:0" + "src": "995:6:0" } ], - "id": 12, + "id": 16, "name": "VariableDeclaration", - "src": "936:24:0" + "src": "995:24:0" }, { "attributes": { "constant": false, "name": "_operator", - "scope": 30, + "scope": 41, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -3963,20 +4591,20 @@ "stateMutability": "nonpayable", "type": "address" }, - "id": 13, + "id": 17, "name": "ElementaryTypeName", - "src": "966:7:0" + "src": "1025:7:0" } ], - "id": 14, + "id": 18, "name": "VariableDeclaration", - "src": "966:17:0" + "src": "1025:17:0" }, { "attributes": { "constant": false, "name": "_token", - "scope": 30, + "scope": 41, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -3990,19 +4618,19 @@ "stateMutability": "nonpayable", "type": "address" }, - "id": 15, + "id": 19, "name": "ElementaryTypeName", - "src": "989:7:0" + "src": "1048:7:0" } ], - "id": 16, + "id": 20, "name": "VariableDeclaration", - "src": "989:14:0" + "src": "1048:14:0" } ], - "id": 17, + "id": 21, "name": "ParameterList", - "src": "878:129:0" + "src": "908:158:0" }, { "attributes": { @@ -4011,9 +4639,9 @@ ] }, "children": [], - "id": 24, + "id": 29, "name": "ParameterList", - "src": "1079:0:0" + "src": "1151:0:0" }, { "children": [ @@ -4023,27 +4651,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1194, + "referencedDeclaration": 1023, "type": "type(contract Tornado)", "value": "Tornado" }, - "id": 18, + "id": 22, "name": "Identifier", - "src": "1008:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 8, - "type": "contract IVerifier", - "value": "_verifier" - }, - "id": 19, - "name": "Identifier", - "src": "1016:9:0" + "src": "1067:7:0" }, { "attributes": { @@ -4052,12 +4666,12 @@ null ], "referencedDeclaration": 10, - "type": "uint256", - "value": "_denomination" + "type": "contract IVerifier", + "value": "_verifier" }, - "id": 20, + "id": 23, "name": "Identifier", - "src": "1027:13:0" + "src": "1075:9:0" }, { "attributes": { @@ -4066,12 +4680,12 @@ null ], "referencedDeclaration": 12, - "type": "uint32", - "value": "_merkleTreeHeight" + "type": "contract IFeeManager", + "value": "_feeManager" }, - "id": 21, + "id": 24, "name": "Identifier", - "src": "1042:17:0" + "src": "1086:11:0" }, { "attributes": { @@ -4080,17 +4694,45 @@ null ], "referencedDeclaration": 14, + "type": "uint256", + "value": "_denomination" + }, + "id": 25, + "name": "Identifier", + "src": "1099:13:0" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 16, + "type": "uint32", + "value": "_merkleTreeHeight" + }, + "id": 26, + "name": "Identifier", + "src": "1114:17:0" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 18, "type": "address", "value": "_operator" }, - "id": 22, + "id": 27, "name": "Identifier", - "src": "1061:9:0" + "src": "1133:9:0" } ], - "id": 23, + "id": 28, "name": "ModifierInvocation", - "src": "1008:63:0" + "src": "1067:76:0" }, { "children": [ @@ -4117,9 +4759,9 @@ "type": "address", "value": "token" }, - "id": 25, + "id": 30, "name": "Identifier", - "src": "1085:5:0" + "src": "1157:5:0" }, { "attributes": { @@ -4127,33 +4769,121 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 16, + "referencedDeclaration": 20, "type": "address", "value": "_token" }, - "id": 26, + "id": 31, "name": "Identifier", - "src": "1093:6:0" + "src": "1165:6:0" } ], - "id": 27, + "id": 32, "name": "Assignment", - "src": "1085:14:0" + "src": "1157:14:0" } ], - "id": 28, + "id": 33, "name": "ExpressionStatement", - "src": "1085:14:0" + "src": "1157:14:0" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 8, + "type": "uint256", + "value": "protocolFee" + }, + "id": 34, + "name": "Identifier", + "src": "1193:11:0" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "/", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 14, + "type": "uint256", + "value": "_denomination" + }, + "id": 35, + "name": "Identifier", + "src": "1207:13:0" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "323030", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 200", + "value": "200" + }, + "id": 36, + "name": "Literal", + "src": "1223:3:0" + } + ], + "id": 37, + "name": "BinaryOperation", + "src": "1207:19:0" + } + ], + "id": 38, + "name": "Assignment", + "src": "1193:33:0" + } + ], + "id": 39, + "name": "ExpressionStatement", + "src": "1193:33:0" } ], - "id": 29, + "id": 40, "name": "Block", - "src": "1079:25:0" + "src": "1151:80:0" } ], - "id": 30, + "id": 41, "name": "FunctionDefinition", - "src": "867:237:0" + "src": "897:334:0" }, { "attributes": { @@ -4165,9 +4895,9 @@ null ], "name": "_processDeposit", - "scope": 227, + "scope": 266, "stateMutability": "nonpayable", - "superFunction": 1014, + "superFunction": 838, "visibility": "internal" }, "children": [ @@ -4178,9 +4908,9 @@ ] }, "children": [], - "id": 31, + "id": 42, "name": "ParameterList", - "src": "1132:2:0" + "src": "1259:2:0" }, { "attributes": { @@ -4189,9 +4919,9 @@ ] }, "children": [], - "id": 32, + "id": 43, "name": "ParameterList", - "src": "1144:0:0" + "src": "1271:0:0" }, { "children": [ @@ -4225,16 +4955,16 @@ } ], "overloadedDeclarations": [ - 3263, - 3264 + 1071, + 1072 ], - "referencedDeclaration": 3264, + "referencedDeclaration": 1072, "type": "function (bool,string memory) pure", "value": "require" }, - "id": 33, + "id": 44, "name": "Identifier", - "src": "1150:7:0" + "src": "1277:7:0" }, { "attributes": { @@ -4269,18 +4999,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 3260, + "referencedDeclaration": 1068, "type": "msg", "value": "msg" }, - "id": 34, + "id": 45, "name": "Identifier", - "src": "1158:3:0" + "src": "1285:3:0" } ], - "id": 35, + "id": 46, "name": "MemberAccess", - "src": "1158:9:0" + "src": "1285:9:0" }, { "attributes": { @@ -4295,14 +5025,14 @@ "type": "int_const 0", "value": "0" }, - "id": 36, + "id": 47, "name": "Literal", - "src": "1171:1:0" + "src": "1298:1:0" } ], - "id": 37, + "id": 48, "name": "BinaryOperation", - "src": "1158:14:0" + "src": "1285:14:0" }, { "attributes": { @@ -4317,19 +5047,19 @@ "type": "literal_string \"ETH value is supposed to be 0 for ERC20 instance\"", "value": "ETH value is supposed to be 0 for ERC20 instance" }, - "id": 38, + "id": 49, "name": "Literal", - "src": "1174:50:0" + "src": "1301:50:0" } ], - "id": 39, + "id": 50, "name": "FunctionCall", - "src": "1150:75:0" + "src": "1277:75:0" } ], - "id": 40, + "id": 51, "name": "ExpressionStatement", - "src": "1150:75:0" + "src": "1277:75:0" }, { "children": [ @@ -4367,13 +5097,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 171, + "referencedDeclaration": 210, "type": "function (address,address,uint256)", "value": "_safeErc20TransferFrom" }, - "id": 41, + "id": 52, "name": "Identifier", - "src": "1231:22:0" + "src": "1358:22:0" }, { "attributes": { @@ -4393,18 +5123,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 3260, + "referencedDeclaration": 1068, "type": "msg", "value": "msg" }, - "id": 42, + "id": 53, "name": "Identifier", - "src": "1254:3:0" + "src": "1381:3:0" } ], - "id": 43, + "id": 54, "name": "MemberAccess", - "src": "1254:10:0" + "src": "1381:10:0" }, { "attributes": { @@ -4425,7 +5155,7 @@ "attributes": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ERC20Tornado_$227", + "typeIdentifier": "t_contract$_ERC20Tornado_$266", "typeString": "contract ERC20Tornado" } ], @@ -4436,9 +5166,9 @@ "type": "type(address)", "value": "address" }, - "id": 44, + "id": 55, "name": "ElementaryTypeNameExpression", - "src": "1266:7:0" + "src": "1393:7:0" }, { "attributes": { @@ -4446,18 +5176,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 3284, + "referencedDeclaration": 1094, "type": "contract ERC20Tornado", "value": "this" }, - "id": 45, + "id": 56, "name": "Identifier", - "src": "1274:4:0" + "src": "1401:4:0" } ], - "id": 46, + "id": 57, "name": "FunctionCall", - "src": "1266:13:0" + "src": "1393:13:0" }, { "attributes": { @@ -4465,33 +5195,33 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 897, + "referencedDeclaration": 713, "type": "uint256", "value": "denomination" }, - "id": 47, + "id": 58, "name": "Identifier", - "src": "1281:12:0" + "src": "1408:12:0" } ], - "id": 48, + "id": 59, "name": "FunctionCall", - "src": "1231:63:0" + "src": "1358:63:0" } ], - "id": 49, + "id": 60, "name": "ExpressionStatement", - "src": "1231:63:0" + "src": "1358:63:0" } ], - "id": 50, + "id": 61, "name": "Block", - "src": "1144:155:0" + "src": "1271:155:0" } ], - "id": 51, + "id": 62, "name": "FunctionDefinition", - "src": "1108:191:0" + "src": "1235:191:0" }, { "attributes": { @@ -4503,9 +5233,9 @@ null ], "name": "_processWithdraw", - "scope": 227, + "scope": 266, "stateMutability": "nonpayable", - "superFunction": 1110, + "superFunction": 939, "visibility": "internal" }, "children": [ @@ -4515,7 +5245,7 @@ "attributes": { "constant": false, "name": "_recipient", - "scope": 113, + "scope": 152, "stateVariable": false, "storageLocation": "default", "type": "address payable", @@ -4529,20 +5259,20 @@ "stateMutability": "payable", "type": "address payable" }, - "id": 52, + "id": 63, "name": "ElementaryTypeName", - "src": "1329:15:0" + "src": "1456:15:0" } ], - "id": 53, + "id": 64, "name": "VariableDeclaration", - "src": "1329:26:0" + "src": "1456:26:0" }, { "attributes": { "constant": false, "name": "_relayer", - "scope": 113, + "scope": 152, "stateVariable": false, "storageLocation": "default", "type": "address payable", @@ -4556,20 +5286,20 @@ "stateMutability": "payable", "type": "address payable" }, - "id": 54, + "id": 65, "name": "ElementaryTypeName", - "src": "1357:15:0" + "src": "1484:15:0" } ], - "id": 55, + "id": 66, "name": "VariableDeclaration", - "src": "1357:24:0" + "src": "1484:24:0" }, { "attributes": { "constant": false, - "name": "_fee", - "scope": 113, + "name": "_relayer_fee", + "scope": 152, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -4582,20 +5312,20 @@ "name": "uint256", "type": "uint256" }, - "id": 56, + "id": 67, "name": "ElementaryTypeName", - "src": "1383:7:0" + "src": "1510:7:0" } ], - "id": 57, + "id": 68, "name": "VariableDeclaration", - "src": "1383:12:0" + "src": "1510:20:0" }, { "attributes": { "constant": false, "name": "_refund", - "scope": 113, + "scope": 152, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -4608,19 +5338,46 @@ "name": "uint256", "type": "uint256" }, - "id": 58, + "id": 69, "name": "ElementaryTypeName", - "src": "1397:7:0" + "src": "1532:7:0" } ], - "id": 59, + "id": 70, "name": "VariableDeclaration", - "src": "1397:15:0" + "src": "1532:15:0" + }, + { + "attributes": { + "constant": false, + "name": "_feeTo", + "scope": 152, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 71, + "name": "ElementaryTypeName", + "src": "1549:7:0" + } + ], + "id": 72, + "name": "VariableDeclaration", + "src": "1549:14:0" } ], - "id": 60, + "id": 73, "name": "ParameterList", - "src": "1328:85:0" + "src": "1455:109:0" }, { "attributes": { @@ -4629,9 +5386,9 @@ ] }, "children": [], - "id": 61, + "id": 74, "name": "ParameterList", - "src": "1423:0:0" + "src": "1574:0:0" }, { "children": [ @@ -4665,16 +5422,16 @@ } ], "overloadedDeclarations": [ - 3263, - 3264 + 1071, + 1072 ], - "referencedDeclaration": 3264, + "referencedDeclaration": 1072, "type": "function (bool,string memory) pure", "value": "require" }, - "id": 62, + "id": 75, "name": "Identifier", - "src": "1429:7:0" + "src": "1580:7:0" }, { "attributes": { @@ -4709,18 +5466,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 3260, + "referencedDeclaration": 1068, "type": "msg", "value": "msg" }, - "id": 63, + "id": 76, "name": "Identifier", - "src": "1437:3:0" + "src": "1588:3:0" } ], - "id": 64, + "id": 77, "name": "MemberAccess", - "src": "1437:9:0" + "src": "1588:9:0" }, { "attributes": { @@ -4728,18 +5485,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 59, + "referencedDeclaration": 70, "type": "uint256", "value": "_refund" }, - "id": 65, + "id": 78, "name": "Identifier", - "src": "1450:7:0" + "src": "1601:7:0" } ], - "id": 66, + "id": 79, "name": "BinaryOperation", - "src": "1437:20:0" + "src": "1588:20:0" }, { "attributes": { @@ -4754,149 +5511,65 @@ "type": "literal_string \"Incorrect refund amount received by the contract\"", "value": "Incorrect refund amount received by the contract" }, - "id": 67, + "id": 80, "name": "Literal", - "src": "1459:50:0" + "src": "1610:50:0" } ], - "id": 68, + "id": 81, "name": "FunctionCall", - "src": "1429:81:0" + "src": "1580:81:0" } ], - "id": 69, + "id": 82, "name": "ExpressionStatement", - "src": "1429:81:0" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 226, - "type": "function (address,uint256)", - "value": "_safeErc20Transfer" - }, - "id": 70, - "name": "Identifier", - "src": "1517:18:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 53, - "type": "address payable", - "value": "_recipient" - }, - "id": 71, - "name": "Identifier", - "src": "1536:10:0" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "-", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 897, - "type": "uint256", - "value": "denomination" - }, - "id": 72, - "name": "Identifier", - "src": "1548:12:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 57, - "type": "uint256", - "value": "_fee" - }, - "id": 73, - "name": "Identifier", - "src": "1563:4:0" - } - ], - "id": 74, - "name": "BinaryOperation", - "src": "1548:19:0" - } - ], - "id": 75, - "name": "FunctionCall", - "src": "1517:51:0" - } - ], - "id": 76, - "name": "ExpressionStatement", - "src": "1517:51:0" + "src": "1580:81:0" }, { "attributes": { - "falseBody": null + "assignments": [ + 84 + ] }, "children": [ + { + "attributes": { + "constant": false, + "name": "feeOn", + "scope": 151, + "stateVariable": false, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 83, + "name": "ElementaryTypeName", + "src": "1668:4:0" + } + ], + "id": 84, + "name": "VariableDeclaration", + "src": "1668:10:0" + }, { "attributes": { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" }, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "operator": ">", + "operator": "!=", "type": "bool" }, "children": [ @@ -4906,35 +5579,95 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 57, - "type": "uint256", - "value": "_fee" + "referencedDeclaration": 72, + "type": "address", + "value": "_feeTo" }, - "id": 77, + "id": 85, "name": "Identifier", - "src": "1578:4:0" + "src": "1681:6:0" }, { "attributes": { "argumentTypes": null, - "hexvalue": "30", "isConstant": false, "isLValue": false, "isPure": true, + "isStructConstructorCall": false, "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" + "names": [ + null + ], + "type": "address payable", + "type_conversion": true }, - "id": 78, - "name": "Literal", - "src": "1585:1:0" + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)", + "value": "address" + }, + "id": 86, + "name": "ElementaryTypeNameExpression", + "src": "1691:7:0" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 87, + "name": "Literal", + "src": "1699:1:0" + } + ], + "id": 88, + "name": "FunctionCall", + "src": "1691:10:0" } ], - "id": 79, + "id": 89, "name": "BinaryOperation", - "src": "1578:8:0" + "src": "1681:20:0" + } + ], + "id": 90, + "name": "VariableDeclarationStatement", + "src": "1668:33:0" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 84, + "type": "bool", + "value": "feeOn" + }, + "id": 91, + "name": "Identifier", + "src": "1711:5:0" }, { "children": [ @@ -4970,13 +5703,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 226, + "referencedDeclaration": 265, "type": "function (address,uint256)", "value": "_safeErc20Transfer" }, - "id": 80, + "id": 92, "name": "Identifier", - "src": "1596:18:0" + "src": "1726:18:0" }, { "attributes": { @@ -4984,47 +5717,312 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 55, + "referencedDeclaration": 64, "type": "address payable", - "value": "_relayer" + "value": "_recipient" }, - "id": 81, + "id": 93, "name": "Identifier", - "src": "1615:8:0" + "src": "1745:10:0" }, { "attributes": { "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 57, - "type": "uint256", - "value": "_fee" + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "-", + "type": "uint256" }, - "id": 82, - "name": "Identifier", - "src": "1625:4:0" + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "-", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 713, + "type": "uint256", + "value": "denomination" + }, + "id": 94, + "name": "Identifier", + "src": "1757:12:0" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 68, + "type": "uint256", + "value": "_relayer_fee" + }, + "id": 95, + "name": "Identifier", + "src": "1772:12:0" + } + ], + "id": 96, + "name": "BinaryOperation", + "src": "1757:27:0" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 8, + "type": "uint256", + "value": "protocolFee" + }, + "id": 97, + "name": "Identifier", + "src": "1787:11:0" + } + ], + "id": 98, + "name": "BinaryOperation", + "src": "1757:41:0" } ], - "id": 83, + "id": 99, "name": "FunctionCall", - "src": "1596:34:0" + "src": "1726:73:0" } ], - "id": 84, + "id": 100, "name": "ExpressionStatement", - "src": "1596:34:0" + "src": "1726:73:0" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 265, + "type": "function (address,uint256)", + "value": "_safeErc20Transfer" + }, + "id": 101, + "name": "Identifier", + "src": "1807:18:0" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 72, + "type": "address", + "value": "_feeTo" + }, + "id": 102, + "name": "Identifier", + "src": "1826:6:0" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 8, + "type": "uint256", + "value": "protocolFee" + }, + "id": 103, + "name": "Identifier", + "src": "1834:11:0" + } + ], + "id": 104, + "name": "FunctionCall", + "src": "1807:39:0" + } + ], + "id": 105, + "name": "ExpressionStatement", + "src": "1807:39:0" } ], - "id": 85, + "id": 106, "name": "Block", - "src": "1588:49:0" + "src": "1718:135:0" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 265, + "type": "function (address,uint256)", + "value": "_safeErc20Transfer" + }, + "id": 107, + "name": "Identifier", + "src": "1867:18:0" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 64, + "type": "address payable", + "value": "_recipient" + }, + "id": 108, + "name": "Identifier", + "src": "1886:10:0" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "-", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 713, + "type": "uint256", + "value": "denomination" + }, + "id": 109, + "name": "Identifier", + "src": "1898:12:0" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 68, + "type": "uint256", + "value": "_relayer_fee" + }, + "id": 110, + "name": "Identifier", + "src": "1913:12:0" + } + ], + "id": 111, + "name": "BinaryOperation", + "src": "1898:27:0" + } + ], + "id": 112, + "name": "FunctionCall", + "src": "1867:59:0" + } + ], + "id": 113, + "name": "ExpressionStatement", + "src": "1867:59:0" + } + ], + "id": 114, + "name": "Block", + "src": "1859:74:0" } ], - "id": 86, + "id": 115, "name": "IfStatement", - "src": "1574:63:0" + "src": "1707:226:0" }, { "attributes": { @@ -5052,13 +6050,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 59, + "referencedDeclaration": 68, "type": "uint256", - "value": "_refund" + "value": "_relayer_fee" }, - "id": 87, + "id": 116, "name": "Identifier", - "src": "1647:7:0" + "src": "1943:12:0" }, { "attributes": { @@ -5073,21 +6071,167 @@ "type": "int_const 0", "value": "0" }, - "id": 88, + "id": 117, "name": "Literal", - "src": "1657:1:0" + "src": "1958:1:0" } ], - "id": 89, + "id": 118, "name": "BinaryOperation", - "src": "1647:11:0" + "src": "1943:16:0" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 265, + "type": "function (address,uint256)", + "value": "_safeErc20Transfer" + }, + "id": 119, + "name": "Identifier", + "src": "1969:18:0" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 66, + "type": "address payable", + "value": "_relayer" + }, + "id": 120, + "name": "Identifier", + "src": "1988:8:0" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 68, + "type": "uint256", + "value": "_relayer_fee" + }, + "id": 121, + "name": "Identifier", + "src": "1998:12:0" + } + ], + "id": 122, + "name": "FunctionCall", + "src": "1969:42:0" + } + ], + "id": 123, + "name": "ExpressionStatement", + "src": "1969:42:0" + } + ], + "id": 124, + "name": "Block", + "src": "1961:57:0" + } + ], + "id": 125, + "name": "IfStatement", + "src": "1939:79:0" + }, + { + "attributes": { + "falseBody": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": ">", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 70, + "type": "uint256", + "value": "_refund" + }, + "id": 126, + "name": "Identifier", + "src": "2028:7:0" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 127, + "name": "Literal", + "src": "2038:1:0" + } + ], + "id": 128, + "name": "BinaryOperation", + "src": "2028:11:0" }, { "children": [ { "attributes": { "assignments": [ - 91, + 130, null ] }, @@ -5096,7 +6240,7 @@ "attributes": { "constant": false, "name": "success", - "scope": 110, + "scope": 149, "stateVariable": false, "storageLocation": "default", "type": "bool", @@ -5109,14 +6253,14 @@ "name": "bool", "type": "bool" }, - "id": 90, + "id": 129, "name": "ElementaryTypeName", - "src": "1669:4:0" + "src": "2050:4:0" } ], - "id": 91, + "id": 130, "name": "VariableDeclaration", - "src": "1669:12:0" + "src": "2050:12:0" }, { "attributes": { @@ -5188,23 +6332,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 53, + "referencedDeclaration": 64, "type": "address payable", "value": "_recipient" }, - "id": 92, + "id": 131, "name": "Identifier", - "src": "1687:10:0" + "src": "2068:10:0" } ], - "id": 93, + "id": 132, "name": "MemberAccess", - "src": "1687:15:0" + "src": "2068:15:0" } ], - "id": 94, + "id": 133, "name": "MemberAccess", - "src": "1687:21:0" + "src": "2068:21:0" }, { "attributes": { @@ -5212,18 +6356,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 59, + "referencedDeclaration": 70, "type": "uint256", "value": "_refund" }, - "id": 95, + "id": 134, "name": "Identifier", - "src": "1709:7:0" + "src": "2090:7:0" } ], - "id": 96, + "id": 135, "name": "FunctionCall", - "src": "1687:30:0" + "src": "2068:30:0" }, { "attributes": { @@ -5238,19 +6382,19 @@ "type": "literal_string \"\"", "value": "" }, - "id": 97, + "id": 136, "name": "Literal", - "src": "1718:2:0" + "src": "2099:2:0" } ], - "id": 98, + "id": 137, "name": "FunctionCall", - "src": "1687:34:0" + "src": "2068:34:0" } ], - "id": 99, + "id": 138, "name": "VariableDeclarationStatement", - "src": "1668:53:0" + "src": "2049:53:0" }, { "attributes": { @@ -5275,18 +6419,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 91, + "referencedDeclaration": 130, "type": "bool", "value": "success" }, - "id": 100, + "id": 139, "name": "Identifier", - "src": "1734:7:0" + "src": "2115:7:0" } ], - "id": 101, + "id": 140, "name": "UnaryOperation", - "src": "1733:8:0" + "src": "2114:8:0" }, { "children": [ @@ -5330,18 +6474,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 55, + "referencedDeclaration": 66, "type": "address payable", "value": "_relayer" }, - "id": 102, + "id": 141, "name": "Identifier", - "src": "1805:8:0" + "src": "2186:8:0" } ], - "id": 104, + "id": 143, "name": "MemberAccess", - "src": "1805:17:0" + "src": "2186:17:0" }, { "attributes": { @@ -5349,53 +6493,53 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 59, + "referencedDeclaration": 70, "type": "uint256", "value": "_refund" }, - "id": 105, + "id": 144, "name": "Identifier", - "src": "1823:7:0" + "src": "2204:7:0" } ], - "id": 106, + "id": 145, "name": "FunctionCall", - "src": "1805:26:0" + "src": "2186:26:0" } ], - "id": 107, + "id": 146, "name": "ExpressionStatement", - "src": "1805:26:0" + "src": "2186:26:0" } ], - "id": 108, + "id": 147, "name": "Block", - "src": "1743:97:0" + "src": "2124:97:0" } ], - "id": 109, + "id": 148, "name": "IfStatement", - "src": "1729:111:0" + "src": "2110:111:0" } ], - "id": 110, + "id": 149, "name": "Block", - "src": "1660:186:0" + "src": "2041:186:0" } ], - "id": 111, + "id": 150, "name": "IfStatement", - "src": "1643:203:0" + "src": "2024:203:0" } ], - "id": 112, + "id": 151, "name": "Block", - "src": "1423:427:0" + "src": "1574:657:0" } ], - "id": 113, + "id": 152, "name": "FunctionDefinition", - "src": "1303:547:0" + "src": "1430:801:0" }, { "attributes": { @@ -5407,7 +6551,7 @@ null ], "name": "_safeErc20TransferFrom", - "scope": 227, + "scope": 266, "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" @@ -5419,7 +6563,7 @@ "attributes": { "constant": false, "name": "_from", - "scope": 171, + "scope": 210, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -5433,20 +6577,20 @@ "stateMutability": "nonpayable", "type": "address" }, - "id": 114, + "id": 153, "name": "ElementaryTypeName", - "src": "1886:7:0" + "src": "2267:7:0" } ], - "id": 115, + "id": 154, "name": "VariableDeclaration", - "src": "1886:13:0" + "src": "2267:13:0" }, { "attributes": { "constant": false, "name": "_to", - "scope": 171, + "scope": 210, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -5460,20 +6604,20 @@ "stateMutability": "nonpayable", "type": "address" }, - "id": 116, + "id": 155, "name": "ElementaryTypeName", - "src": "1901:7:0" + "src": "2282:7:0" } ], - "id": 117, + "id": 156, "name": "VariableDeclaration", - "src": "1901:11:0" + "src": "2282:11:0" }, { "attributes": { "constant": false, "name": "_amount", - "scope": 171, + "scope": 210, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -5486,19 +6630,19 @@ "name": "uint256", "type": "uint256" }, - "id": 118, + "id": 157, "name": "ElementaryTypeName", - "src": "1914:7:0" + "src": "2295:7:0" } ], - "id": 119, + "id": 158, "name": "VariableDeclaration", - "src": "1914:15:0" + "src": "2295:15:0" } ], - "id": 120, + "id": 159, "name": "ParameterList", - "src": "1885:45:0" + "src": "2266:45:0" }, { "attributes": { @@ -5507,17 +6651,17 @@ ] }, "children": [], - "id": 121, + "id": 160, "name": "ParameterList", - "src": "1940:0:0" + "src": "2321:0:0" }, { "children": [ { "attributes": { "assignments": [ - 123, - 125 + 162, + 164 ] }, "children": [ @@ -5525,7 +6669,7 @@ "attributes": { "constant": false, "name": "success", - "scope": 170, + "scope": 209, "stateVariable": false, "storageLocation": "default", "type": "bool", @@ -5538,20 +6682,20 @@ "name": "bool", "type": "bool" }, - "id": 122, + "id": 161, "name": "ElementaryTypeName", - "src": "1947:4:0" + "src": "2328:4:0" } ], - "id": 123, + "id": 162, "name": "VariableDeclaration", - "src": "1947:12:0" + "src": "2328:12:0" }, { "attributes": { "constant": false, "name": "data", - "scope": 170, + "scope": 209, "stateVariable": false, "storageLocation": "memory", "type": "bytes", @@ -5564,14 +6708,14 @@ "name": "bytes", "type": "bytes" }, - "id": 124, + "id": 163, "name": "ElementaryTypeName", - "src": "1961:5:0" + "src": "2342:5:0" } ], - "id": 125, + "id": 164, "name": "VariableDeclaration", - "src": "1961:17:0" + "src": "2342:17:0" }, { "attributes": { @@ -5615,14 +6759,14 @@ "type": "address", "value": "token" }, - "id": 126, + "id": 165, "name": "Identifier", - "src": "1982:5:0" + "src": "2363:5:0" } ], - "id": 127, + "id": 166, "name": "MemberAccess", - "src": "1982:10:0" + "src": "2363:10:0" }, { "attributes": { @@ -5674,18 +6818,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 3247, + "referencedDeclaration": 1055, "type": "abi", "value": "abi" }, - "id": 128, + "id": 167, "name": "Identifier", - "src": "1993:3:0" + "src": "2374:3:0" } ], - "id": 129, + "id": 168, "name": "MemberAccess", - "src": "1993:22:0" + "src": "2374:22:0" }, { "attributes": { @@ -5700,9 +6844,9 @@ "type": "int_const 599290589", "value": "0x23b872dd" }, - "id": 130, + "id": 169, "name": "Literal", - "src": "2016:10:0" + "src": "2397:10:0" }, { "attributes": { @@ -5710,13 +6854,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 115, + "referencedDeclaration": 154, "type": "address", "value": "_from" }, - "id": 131, + "id": 170, "name": "Identifier", - "src": "2047:5:0" + "src": "2428:5:0" }, { "attributes": { @@ -5724,13 +6868,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 117, + "referencedDeclaration": 156, "type": "address", "value": "_to" }, - "id": 132, + "id": 171, "name": "Identifier", - "src": "2054:3:0" + "src": "2435:3:0" }, { "attributes": { @@ -5738,28 +6882,28 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 119, + "referencedDeclaration": 158, "type": "uint256", "value": "_amount" }, - "id": 133, + "id": 172, "name": "Identifier", - "src": "2059:7:0" + "src": "2440:7:0" } ], - "id": 134, + "id": 173, "name": "FunctionCall", - "src": "1993:74:0" + "src": "2374:74:0" } ], - "id": 135, + "id": 174, "name": "FunctionCall", - "src": "1982:86:0" + "src": "2363:86:0" } ], - "id": 136, + "id": 175, "name": "VariableDeclarationStatement", - "src": "1946:122:0" + "src": "2327:122:0" }, { "children": [ @@ -5791,16 +6935,16 @@ } ], "overloadedDeclarations": [ - 3263, - 3264 + 1071, + 1072 ], - "referencedDeclaration": 3264, + "referencedDeclaration": 1072, "type": "function (bool,string memory) pure", "value": "require" }, - "id": 137, + "id": 176, "name": "Identifier", - "src": "2074:7:0" + "src": "2455:7:0" }, { "attributes": { @@ -5808,13 +6952,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 123, + "referencedDeclaration": 162, "type": "bool", "value": "success" }, - "id": 138, + "id": 177, "name": "Identifier", - "src": "2082:7:0" + "src": "2463:7:0" }, { "attributes": { @@ -5829,19 +6973,19 @@ "type": "literal_string \"not enough allowed tokens\"", "value": "not enough allowed tokens" }, - "id": 139, + "id": 178, "name": "Literal", - "src": "2091:27:0" + "src": "2472:27:0" } ], - "id": 140, + "id": 179, "name": "FunctionCall", - "src": "2074:45:0" + "src": "2455:45:0" } ], - "id": 141, + "id": 180, "name": "ExpressionStatement", - "src": "2074:45:0" + "src": "2455:45:0" }, { "attributes": { @@ -5881,18 +7025,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 125, + "referencedDeclaration": 164, "type": "bytes memory", "value": "data" }, - "id": 142, + "id": 181, "name": "Identifier", - "src": "2219:4:0" + "src": "2600:4:0" } ], - "id": 143, + "id": 182, "name": "MemberAccess", - "src": "2219:11:0" + "src": "2600:11:0" }, { "attributes": { @@ -5907,14 +7051,14 @@ "type": "int_const 0", "value": "0" }, - "id": 144, + "id": 183, "name": "Literal", - "src": "2233:1:0" + "src": "2614:1:0" } ], - "id": 145, + "id": 184, "name": "BinaryOperation", - "src": "2219:15:0" + "src": "2600:15:0" }, { "children": [ @@ -5948,16 +7092,16 @@ } ], "overloadedDeclarations": [ - 3263, - 3264 + 1071, + 1072 ], - "referencedDeclaration": 3264, + "referencedDeclaration": 1072, "type": "function (bool,string memory) pure", "value": "require" }, - "id": 146, + "id": 185, "name": "Identifier", - "src": "2244:7:0" + "src": "2625:7:0" }, { "attributes": { @@ -5992,18 +7136,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 125, + "referencedDeclaration": 164, "type": "bytes memory", "value": "data" }, - "id": 147, + "id": 186, "name": "Identifier", - "src": "2252:4:0" + "src": "2633:4:0" } ], - "id": 148, + "id": 187, "name": "MemberAccess", - "src": "2252:11:0" + "src": "2633:11:0" }, { "attributes": { @@ -6018,14 +7162,14 @@ "type": "int_const 32", "value": "32" }, - "id": 149, + "id": 188, "name": "Literal", - "src": "2267:2:0" + "src": "2648:2:0" } ], - "id": 150, + "id": 189, "name": "BinaryOperation", - "src": "2252:17:0" + "src": "2633:17:0" }, { "attributes": { @@ -6040,19 +7184,19 @@ "type": "literal_string \"data length should be either 0 or 32 bytes\"", "value": "data length should be either 0 or 32 bytes" }, - "id": 151, + "id": 190, "name": "Literal", - "src": "2271:44:0" + "src": "2652:44:0" } ], - "id": 152, + "id": 191, "name": "FunctionCall", - "src": "2244:72:0" + "src": "2625:72:0" } ], - "id": 153, + "id": 192, "name": "ExpressionStatement", - "src": "2244:72:0" + "src": "2625:72:0" }, { "children": [ @@ -6073,13 +7217,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 123, + "referencedDeclaration": 162, "type": "bool", "value": "success" }, - "id": 154, + "id": 193, "name": "Identifier", - "src": "2324:7:0" + "src": "2705:7:0" }, { "attributes": { @@ -6123,18 +7267,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 3247, + "referencedDeclaration": 1055, "type": "abi", "value": "abi" }, - "id": 155, + "id": 194, "name": "Identifier", - "src": "2334:3:0" + "src": "2715:3:0" } ], - "id": 156, + "id": 195, "name": "MemberAccess", - "src": "2334:10:0" + "src": "2715:10:0" }, { "attributes": { @@ -6142,13 +7286,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 125, + "referencedDeclaration": 164, "type": "bytes memory", "value": "data" }, - "id": 157, + "id": 196, "name": "Identifier", - "src": "2345:4:0" + "src": "2726:4:0" }, { "attributes": { @@ -6171,29 +7315,29 @@ "type": "type(bool)", "value": "bool" }, - "id": 158, + "id": 197, "name": "ElementaryTypeNameExpression", - "src": "2352:4:0" + "src": "2733:4:0" } ], - "id": 159, + "id": 198, "name": "TupleExpression", - "src": "2351:6:0" + "src": "2732:6:0" } ], - "id": 160, + "id": 199, "name": "FunctionCall", - "src": "2334:24:0" + "src": "2715:24:0" } ], - "id": 161, + "id": 200, "name": "Assignment", - "src": "2324:34:0" + "src": "2705:34:0" } ], - "id": 162, + "id": 201, "name": "ExpressionStatement", - "src": "2324:34:0" + "src": "2705:34:0" }, { "children": [ @@ -6225,16 +7369,16 @@ } ], "overloadedDeclarations": [ - 3263, - 3264 + 1071, + 1072 ], - "referencedDeclaration": 3264, + "referencedDeclaration": 1072, "type": "function (bool,string memory) pure", "value": "require" }, - "id": 163, + "id": 202, "name": "Identifier", - "src": "2366:7:0" + "src": "2747:7:0" }, { "attributes": { @@ -6242,13 +7386,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 123, + "referencedDeclaration": 162, "type": "bool", "value": "success" }, - "id": 164, + "id": 203, "name": "Identifier", - "src": "2374:7:0" + "src": "2755:7:0" }, { "attributes": { @@ -6263,39 +7407,39 @@ "type": "literal_string \"not enough allowed tokens. Token returns false.\"", "value": "not enough allowed tokens. Token returns false." }, - "id": 165, + "id": 204, "name": "Literal", - "src": "2383:49:0" + "src": "2764:49:0" } ], - "id": 166, + "id": 205, "name": "FunctionCall", - "src": "2366:67:0" + "src": "2747:67:0" } ], - "id": 167, + "id": 206, "name": "ExpressionStatement", - "src": "2366:67:0" + "src": "2747:67:0" } ], - "id": 168, + "id": 207, "name": "Block", - "src": "2236:204:0" + "src": "2617:204:0" } ], - "id": 169, + "id": 208, "name": "IfStatement", - "src": "2215:225:0" + "src": "2596:225:0" } ], - "id": 170, + "id": 209, "name": "Block", - "src": "1940:504:0" + "src": "2321:504:0" } ], - "id": 171, + "id": 210, "name": "FunctionDefinition", - "src": "1854:590:0" + "src": "2235:590:0" }, { "attributes": { @@ -6307,7 +7451,7 @@ null ], "name": "_safeErc20Transfer", - "scope": 227, + "scope": 266, "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" @@ -6319,7 +7463,7 @@ "attributes": { "constant": false, "name": "_to", - "scope": 226, + "scope": 265, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -6333,20 +7477,20 @@ "stateMutability": "nonpayable", "type": "address" }, - "id": 172, + "id": 211, "name": "ElementaryTypeName", - "src": "2476:7:0" + "src": "2857:7:0" } ], - "id": 173, + "id": 212, "name": "VariableDeclaration", - "src": "2476:11:0" + "src": "2857:11:0" }, { "attributes": { "constant": false, "name": "_amount", - "scope": 226, + "scope": 265, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -6359,19 +7503,19 @@ "name": "uint256", "type": "uint256" }, - "id": 174, + "id": 213, "name": "ElementaryTypeName", - "src": "2489:7:0" + "src": "2870:7:0" } ], - "id": 175, + "id": 214, "name": "VariableDeclaration", - "src": "2489:15:0" + "src": "2870:15:0" } ], - "id": 176, + "id": 215, "name": "ParameterList", - "src": "2475:30:0" + "src": "2856:30:0" }, { "attributes": { @@ -6380,17 +7524,17 @@ ] }, "children": [], - "id": 177, + "id": 216, "name": "ParameterList", - "src": "2515:0:0" + "src": "2896:0:0" }, { "children": [ { "attributes": { "assignments": [ - 179, - 181 + 218, + 220 ] }, "children": [ @@ -6398,7 +7542,7 @@ "attributes": { "constant": false, "name": "success", - "scope": 225, + "scope": 264, "stateVariable": false, "storageLocation": "default", "type": "bool", @@ -6411,20 +7555,20 @@ "name": "bool", "type": "bool" }, - "id": 178, + "id": 217, "name": "ElementaryTypeName", - "src": "2522:4:0" + "src": "2903:4:0" } ], - "id": 179, + "id": 218, "name": "VariableDeclaration", - "src": "2522:12:0" + "src": "2903:12:0" }, { "attributes": { "constant": false, "name": "data", - "scope": 225, + "scope": 264, "stateVariable": false, "storageLocation": "memory", "type": "bytes", @@ -6437,14 +7581,14 @@ "name": "bytes", "type": "bytes" }, - "id": 180, + "id": 219, "name": "ElementaryTypeName", - "src": "2536:5:0" + "src": "2917:5:0" } ], - "id": 181, + "id": 220, "name": "VariableDeclaration", - "src": "2536:17:0" + "src": "2917:17:0" }, { "attributes": { @@ -6488,14 +7632,14 @@ "type": "address", "value": "token" }, - "id": 182, + "id": 221, "name": "Identifier", - "src": "2557:5:0" + "src": "2938:5:0" } ], - "id": 183, + "id": 222, "name": "MemberAccess", - "src": "2557:10:0" + "src": "2938:10:0" }, { "attributes": { @@ -6543,18 +7687,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 3247, + "referencedDeclaration": 1055, "type": "abi", "value": "abi" }, - "id": 184, + "id": 223, "name": "Identifier", - "src": "2568:3:0" + "src": "2949:3:0" } ], - "id": 185, + "id": 224, "name": "MemberAccess", - "src": "2568:22:0" + "src": "2949:22:0" }, { "attributes": { @@ -6569,9 +7713,9 @@ "type": "int_const 2835717307", "value": "0xa9059cbb" }, - "id": 186, + "id": 225, "name": "Literal", - "src": "2591:10:0" + "src": "2972:10:0" }, { "attributes": { @@ -6579,13 +7723,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 173, + "referencedDeclaration": 212, "type": "address", "value": "_to" }, - "id": 187, + "id": 226, "name": "Identifier", - "src": "2618:3:0" + "src": "2999:3:0" }, { "attributes": { @@ -6593,28 +7737,28 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 175, + "referencedDeclaration": 214, "type": "uint256", "value": "_amount" }, - "id": 188, + "id": 227, "name": "Identifier", - "src": "2623:7:0" + "src": "3004:7:0" } ], - "id": 189, + "id": 228, "name": "FunctionCall", - "src": "2568:63:0" + "src": "2949:63:0" } ], - "id": 190, + "id": 229, "name": "FunctionCall", - "src": "2557:75:0" + "src": "2938:75:0" } ], - "id": 191, + "id": 230, "name": "VariableDeclarationStatement", - "src": "2521:111:0" + "src": "2902:111:0" }, { "children": [ @@ -6646,16 +7790,16 @@ } ], "overloadedDeclarations": [ - 3263, - 3264 + 1071, + 1072 ], - "referencedDeclaration": 3264, + "referencedDeclaration": 1072, "type": "function (bool,string memory) pure", "value": "require" }, - "id": 192, + "id": 231, "name": "Identifier", - "src": "2638:7:0" + "src": "3019:7:0" }, { "attributes": { @@ -6663,13 +7807,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 179, + "referencedDeclaration": 218, "type": "bool", "value": "success" }, - "id": 193, + "id": 232, "name": "Identifier", - "src": "2646:7:0" + "src": "3027:7:0" }, { "attributes": { @@ -6684,19 +7828,19 @@ "type": "literal_string \"not enough tokens\"", "value": "not enough tokens" }, - "id": 194, + "id": 233, "name": "Literal", - "src": "2655:19:0" + "src": "3036:19:0" } ], - "id": 195, + "id": 234, "name": "FunctionCall", - "src": "2638:37:0" + "src": "3019:37:0" } ], - "id": 196, + "id": 235, "name": "ExpressionStatement", - "src": "2638:37:0" + "src": "3019:37:0" }, { "attributes": { @@ -6736,18 +7880,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 181, + "referencedDeclaration": 220, "type": "bytes memory", "value": "data" }, - "id": 197, + "id": 236, "name": "Identifier", - "src": "2775:4:0" + "src": "3156:4:0" } ], - "id": 198, + "id": 237, "name": "MemberAccess", - "src": "2775:11:0" + "src": "3156:11:0" }, { "attributes": { @@ -6762,14 +7906,14 @@ "type": "int_const 0", "value": "0" }, - "id": 199, + "id": 238, "name": "Literal", - "src": "2789:1:0" + "src": "3170:1:0" } ], - "id": 200, + "id": 239, "name": "BinaryOperation", - "src": "2775:15:0" + "src": "3156:15:0" }, { "children": [ @@ -6803,16 +7947,16 @@ } ], "overloadedDeclarations": [ - 3263, - 3264 + 1071, + 1072 ], - "referencedDeclaration": 3264, + "referencedDeclaration": 1072, "type": "function (bool,string memory) pure", "value": "require" }, - "id": 201, + "id": 240, "name": "Identifier", - "src": "2800:7:0" + "src": "3181:7:0" }, { "attributes": { @@ -6847,18 +7991,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 181, + "referencedDeclaration": 220, "type": "bytes memory", "value": "data" }, - "id": 202, + "id": 241, "name": "Identifier", - "src": "2808:4:0" + "src": "3189:4:0" } ], - "id": 203, + "id": 242, "name": "MemberAccess", - "src": "2808:11:0" + "src": "3189:11:0" }, { "attributes": { @@ -6873,14 +8017,14 @@ "type": "int_const 32", "value": "32" }, - "id": 204, + "id": 243, "name": "Literal", - "src": "2823:2:0" + "src": "3204:2:0" } ], - "id": 205, + "id": 244, "name": "BinaryOperation", - "src": "2808:17:0" + "src": "3189:17:0" }, { "attributes": { @@ -6895,19 +8039,19 @@ "type": "literal_string \"data length should be either 0 or 32 bytes\"", "value": "data length should be either 0 or 32 bytes" }, - "id": 206, + "id": 245, "name": "Literal", - "src": "2827:44:0" + "src": "3208:44:0" } ], - "id": 207, + "id": 246, "name": "FunctionCall", - "src": "2800:72:0" + "src": "3181:72:0" } ], - "id": 208, + "id": 247, "name": "ExpressionStatement", - "src": "2800:72:0" + "src": "3181:72:0" }, { "children": [ @@ -6928,13 +8072,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 179, + "referencedDeclaration": 218, "type": "bool", "value": "success" }, - "id": 209, + "id": 248, "name": "Identifier", - "src": "2880:7:0" + "src": "3261:7:0" }, { "attributes": { @@ -6978,18 +8122,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 3247, + "referencedDeclaration": 1055, "type": "abi", "value": "abi" }, - "id": 210, + "id": 249, "name": "Identifier", - "src": "2890:3:0" + "src": "3271:3:0" } ], - "id": 211, + "id": 250, "name": "MemberAccess", - "src": "2890:10:0" + "src": "3271:10:0" }, { "attributes": { @@ -6997,13 +8141,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 181, + "referencedDeclaration": 220, "type": "bytes memory", "value": "data" }, - "id": 212, + "id": 251, "name": "Identifier", - "src": "2901:4:0" + "src": "3282:4:0" }, { "attributes": { @@ -7026,29 +8170,29 @@ "type": "type(bool)", "value": "bool" }, - "id": 213, + "id": 252, "name": "ElementaryTypeNameExpression", - "src": "2908:4:0" + "src": "3289:4:0" } ], - "id": 214, + "id": 253, "name": "TupleExpression", - "src": "2907:6:0" + "src": "3288:6:0" } ], - "id": 215, + "id": 254, "name": "FunctionCall", - "src": "2890:24:0" + "src": "3271:24:0" } ], - "id": 216, + "id": 255, "name": "Assignment", - "src": "2880:34:0" + "src": "3261:34:0" } ], - "id": 217, + "id": 256, "name": "ExpressionStatement", - "src": "2880:34:0" + "src": "3261:34:0" }, { "children": [ @@ -7080,16 +8224,16 @@ } ], "overloadedDeclarations": [ - 3263, - 3264 + 1071, + 1072 ], - "referencedDeclaration": 3264, + "referencedDeclaration": 1072, "type": "function (bool,string memory) pure", "value": "require" }, - "id": 218, + "id": 257, "name": "Identifier", - "src": "2922:7:0" + "src": "3303:7:0" }, { "attributes": { @@ -7097,13 +8241,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 179, + "referencedDeclaration": 218, "type": "bool", "value": "success" }, - "id": 219, + "id": 258, "name": "Identifier", - "src": "2930:7:0" + "src": "3311:7:0" }, { "attributes": { @@ -7118,49 +8262,49 @@ "type": "literal_string \"not enough tokens. Token returns false.\"", "value": "not enough tokens. Token returns false." }, - "id": 220, + "id": 259, "name": "Literal", - "src": "2939:41:0" + "src": "3320:41:0" } ], - "id": 221, + "id": 260, "name": "FunctionCall", - "src": "2922:59:0" + "src": "3303:59:0" } ], - "id": 222, + "id": 261, "name": "ExpressionStatement", - "src": "2922:59:0" + "src": "3303:59:0" } ], - "id": 223, + "id": 262, "name": "Block", - "src": "2792:196:0" + "src": "3173:196:0" } ], - "id": 224, + "id": 263, "name": "IfStatement", - "src": "2771:217:0" + "src": "3152:217:0" } ], - "id": 225, + "id": 264, "name": "Block", - "src": "2515:477:0" + "src": "2896:477:0" } ], - "id": 226, + "id": 265, "name": "FunctionDefinition", - "src": "2448:544:0" + "src": "2829:544:0" } ], - "id": 227, + "id": 266, "name": "ContractDefinition", - "src": "805:2189:0" + "src": "805:2570:0" } ], - "id": 228, + "id": 267, "name": "SourceUnit", - "src": "755:2240:0" + "src": "755:2621:0" }, "compiler": { "name": "solc", @@ -7170,14 +8314,14 @@ "42220": { "events": {}, "links": { - "Hasher": "0xD75035293f552aB5c33483f321DBf0DfA1C7c71d" + "Hasher": "0x5666A6E07d7b991489b1D0f53d37B664B312a1fE" }, - "address": "0x8A281116D0EFCc36cd038AbD4f7b117489D62AA7", - "transactionHash": "0x610b669c6d27b8033b966558fbc9662743eebbf5a9702779efd47ced680fc677" + "address": "0xB6b10B5f276AF5c0eE5dC46e4083c3DE3bF017c7", + "transactionHash": "0x16171dd7781eb5dcdd099b447591ee863059ed6c034770e4bf2377201a1b9d94" } }, "schemaVersion": "3.3.4", - "updatedAt": "2021-03-22T02:51:06.230Z", + "updatedAt": "2021-04-02T22:52:25.952Z", "networkType": "ethereum", "devdoc": { "methods": { diff --git a/client/contracts/CELOTornado.3.json b/client/contracts/CELOTornado.3.json deleted file mode 100644 index 6af1f4a..0000000 --- a/client/contracts/CELOTornado.3.json +++ /dev/null @@ -1,7219 +0,0 @@ -{ - "contractName": "ERC20Tornado", - "abi": [ - { - "inputs": [ - { - "internalType": "contract IVerifier", - "name": "_verifier", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_denomination", - "type": "uint256" - }, - { - "internalType": "uint32", - "name": "_merkleTreeHeight", - "type": "uint32" - }, - { - "internalType": "address", - "name": "_operator", - "type": "address" - }, - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "commitment", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "uint32", - "name": "leafIndex", - "type": "uint32" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - } - ], - "name": "Deposit", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "nullifierHash", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "relayer", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "fee", - "type": "uint256" - } - ], - "name": "Withdrawal", - "type": "event" - }, - { - "constant": true, - "inputs": [], - "name": "FIELD_SIZE", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "ROOT_HISTORY_SIZE", - "outputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "ZERO_VALUE", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_newOperator", - "type": "address" - } - ], - "name": "changeOperator", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "name": "commitments", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "currentRootIndex", - "outputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "denomination", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "bytes32", - "name": "_commitment", - "type": "bytes32" - } - ], - "name": "deposit", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "filledSubtrees", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getLastRoot", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "bytes32", - "name": "_left", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "_right", - "type": "bytes32" - } - ], - "name": "hashLeftRight", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "payable": false, - "stateMutability": "pure", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "bytes32", - "name": "_root", - "type": "bytes32" - } - ], - "name": "isKnownRoot", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "bytes32", - "name": "_nullifierHash", - "type": "bytes32" - } - ], - "name": "isSpent", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "bytes32[]", - "name": "_nullifierHashes", - "type": "bytes32[]" - } - ], - "name": "isSpentArray", - "outputs": [ - { - "internalType": "bool[]", - "name": "spent", - "type": "bool[]" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "levels", - "outputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "nextIndex", - "outputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "name": "nullifierHashes", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "operator", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "roots", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "token", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_newVerifier", - "type": "address" - } - ], - "name": "updateVerifier", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "verifier", - "outputs": [ - { - "internalType": "contract IVerifier", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "bytes", - "name": "_proof", - "type": "bytes" - }, - { - "internalType": "bytes32", - "name": "_root", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "_nullifierHash", - "type": "bytes32" - }, - { - "internalType": "address payable", - "name": "_recipient", - "type": "address" - }, - { - "internalType": "address payable", - "name": "_relayer", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_fee", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_refund", - "type": "uint256" - } - ], - "name": "withdraw", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "zeros", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - } - ], - "metadata": "{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVerifier\",\"name\":\"_verifier\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_denomination\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_merkleTreeHeight\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"leafIndex\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"nullifierHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"Withdrawal\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"FIELD_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"ROOT_HISTORY_SIZE\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"ZERO_VALUE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newOperator\",\"type\":\"address\"}],\"name\":\"changeOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"commitments\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"currentRootIndex\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"denomination\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_commitment\",\"type\":\"bytes32\"}],\"name\":\"deposit\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"filledSubtrees\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getLastRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_left\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_right\",\"type\":\"bytes32\"}],\"name\":\"hashLeftRight\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_root\",\"type\":\"bytes32\"}],\"name\":\"isKnownRoot\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_nullifierHash\",\"type\":\"bytes32\"}],\"name\":\"isSpent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"_nullifierHashes\",\"type\":\"bytes32[]\"}],\"name\":\"isSpentArray\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"spent\",\"type\":\"bool[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"levels\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"nextIndex\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"nullifierHashes\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"operator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"roots\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newVerifier\",\"type\":\"address\"}],\"name\":\"updateVerifier\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"verifier\",\"outputs\":[{\"internalType\":\"contract IVerifier\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_proof\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"_root\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_nullifierHash\",\"type\":\"bytes32\"},{\"internalType\":\"address payable\",\"name\":\"_recipient\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"_relayer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_refund\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"zeros\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"changeOperator(address)\":{\"details\":\"operator can change his address \"},\"deposit(bytes32)\":{\"details\":\"Deposit funds into the contract. The caller must send (for ETH) or approve (for ERC20) value equal to or `denomination` of this instance.\",\"params\":{\"_commitment\":\"the note commitment, which is PedersenHash(nullifier + secret)\"}},\"getLastRoot()\":{\"details\":\"Returns the last root\"},\"hashLeftRight(bytes32,bytes32)\":{\"details\":\"Hash 2 tree leaves, returns MiMC(_left, _right)\"},\"isKnownRoot(bytes32)\":{\"details\":\"Whether the root is present in the root history\"},\"isSpent(bytes32)\":{\"details\":\"whether a note is already spent \"},\"isSpentArray(bytes32[])\":{\"details\":\"whether an array of notes is already spent \"},\"updateVerifier(address)\":{\"details\":\"allow operator to update SNARK verification keys. This is needed to update keys after the final trusted setup ceremony is held. After that operator rights are supposed to be transferred to zero address\"},\"withdraw(bytes,bytes32,bytes32,address,address,uint256,uint256)\":{\"details\":\"Withdraw a deposit from the contract. `proof` is a zkSNARK proof data, and input is an array of circuit public inputs `input` array consists of: - merkle root of all deposits in the contract - hash of unique deposit nullifier to prevent double spends - the recipient of funds - optional fee that goes to the transaction sender (usually a relay)\"}}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/Users/brianli/dotfiles/tornado-core/contracts/ERC20Tornado.sol\":\"ERC20Tornado\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/brianli/dotfiles/tornado-core/contracts/ERC20Tornado.sol\":{\"keccak256\":\"0x708938fd083239d2e9cd17e457cf25a2150bb900082fad58af8b689f786aef9c\",\"urls\":[\"bzz-raw://f345afd62002f883c60c032cd0cb051663dc8a3e59a52bf44109633b96cb3685\",\"dweb:/ipfs/QmNwjnH2uyNoq9GPjNUv6Z1mgtiR5rY3K7EHY74RBjXMpw\"]},\"/Users/brianli/dotfiles/tornado-core/contracts/MerkleTreeWithHistory.sol\":{\"keccak256\":\"0x671cc9268dd70c47d18795f7e37fc4df11763fcbcca026edcf163f4239036254\",\"urls\":[\"bzz-raw://9c36a207ed164b60a514eae89bfb15e5b4de4b346c4a89a7a1cb50a940bc699d\",\"dweb:/ipfs/QmbPEqFJAGMpYduLEFsbPazyBsYWcjRtpth8X26wCHALwk\"]},\"/Users/brianli/dotfiles/tornado-core/contracts/Tornado.sol\":{\"keccak256\":\"0x09c70432243629ef44697fd3d0ca89d3578e2b1c9f46d90757371edb163c14da\",\"urls\":[\"bzz-raw://d2a2c9fa85c32cb15793282792cd25c71804a10aa5a911e41f3bcd07f5df117e\",\"dweb:/ipfs/QmeQ1s6ypNnP7fossR4x9svuuLjcSBtQ5spUTmWGZY5Ljr\"]},\"@openzeppelin/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0xb63221b23818d622bfd83d18e0968307e4fcb7a35536bdceded76e1cf8349acd\",\"urls\":[\"bzz-raw://44e1e8c22362c4708a8c3362735f1465f5b05e2f7315e16c7010d694ce019d73\",\"dweb:/ipfs/QmWj9g8X1hxkXRre2kwkEjLBetjuzmSbWHD81bsSojnBkS\"]}},\"version\":1}", - "bytecode": "0x6080604052600380546001600160401b03191690553480156200002157600080fd5b5060405162001d1238038062001d12833981810160405260a08110156200004757600080fd5b50805160208201516040830151606084015160809094015192939192909190848484848163ffffffff8116620000af5760405162461bcd60e51b815260040180806020018281038252602781526020018062001c896027913960400191505060405180910390fd5b60208163ffffffff1610620000f65760405162461bcd60e51b815260040180806020018281038252602281526020018062001cd06022913960400191505060405180910390fd5b6000805463ffffffff191663ffffffff83161781556002805460018181019092557f2fe54c60d3acabf3343a35b6eba15db4821b340f76e741e2249685ed4899af6c60008051602062001c48833981519152909101819055815480830183559282905260008051602062001cf28339815191529092018290555b60005463ffffffff9081169082161015620001e4576200019a82806001600160e01b036200029f16565b60028054600181810190925560008051602062001c488339815191520182905580548082018255600082905260008051602062001cf2833981519152018290559092500162000170565b50620001fa81806001600160e01b036200029f16565b60046000015550506068805460ff19166001179055826200024d5760405162461bcd60e51b815260040180806020018281038252602581526020018062001c236025913960400191505060405180910390fd5b606c80546001600160a01b039586166001600160a01b031991821617909155606d80549286169282169290921790915560699290925550606e8054939092169216919091179055506200048c92505050565b600060008051602062001cb0833981519152831062000305576040805162461bcd60e51b815260206004820181905260248201527f5f6c6566742073686f756c6420626520696e7369646520746865206669656c64604482015290519081900360640190fd5b60008051602062001cb08339815191528210620003545760405162461bcd60e51b815260040180806020018281038252602181526020018062001c686021913960400191505060405180910390fd5b6040805163f47d33b560e01b81526004810185905260006024820181905282518693919273__Hasher________________________________9263f47d33b592604480840193829003018186803b158015620003af57600080fd5b505af4158015620003c4573d6000803e3d6000fd5b505050506040513d6040811015620003db57600080fd5b508051602090910151909250905060008051602062001cb0833981519152848308915073__Hasher________________________________63f47d33b583836040518363ffffffff1660e01b81526004018083815260200182815260200192505050604080518083038186803b1580156200045557600080fd5b505af41580156200046a573d6000803e3d6000fd5b505050506040513d60408110156200048157600080fd5b505195945050505050565b611787806200049c6000396000f3fe60806040526004361061014b5760003560e01c806397fc007c116100b6578063e5285dcc1161006f578063e5285dcc14610514578063e82955881461053e578063ec73295914610568578063f178e47c1461057d578063fc0c546a146105a7578063fc7e9c6f146105bc5761014b565b806397fc007c146103a55780639fa12d0b146103d8578063b214faa5146104a3578063ba70f757146104c0578063c2b40ae4146104d5578063cd87a3b4146104ff5761014b565b80634ecf518b116101085780634ecf518b146102e4578063570ca735146103125780636d9833e314610327578063839df945146103515780638bca6d161461037b57806390eeb02b146103905761014b565b806306394c9b1461015057806317cc915c1461018557806321a0adb6146101c35780632b7ac3f31461025c57806338bf282e1461028d578063414a37ba146102cf575b600080fd5b34801561015c57600080fd5b506101836004803603602081101561017357600080fd5b50356001600160a01b03166105d1565b005b34801561019157600080fd5b506101af600480360360208110156101a857600080fd5b503561063c565b604080519115158252519081900360200190f35b610183600480360360e08110156101d957600080fd5b810190602081018135600160201b8111156101f357600080fd5b82018360208201111561020557600080fd5b803590602001918460018302840111600160201b8311171561022657600080fd5b91935091508035906020810135906001600160a01b03604082013581169160608101359091169060808101359060a00135610651565b34801561026857600080fd5b5061027161099e565b604080516001600160a01b039092168252519081900360200190f35b34801561029957600080fd5b506102bd600480360360408110156102b057600080fd5b50803590602001356109ad565b60408051918252519081900360200190f35b3480156102db57600080fd5b506102bd610b8e565b3480156102f057600080fd5b506102f9610ba0565b6040805163ffffffff9092168252519081900360200190f35b34801561031e57600080fd5b50610271610bac565b34801561033357600080fd5b506101af6004803603602081101561034a57600080fd5b5035610bbb565b34801561035d57600080fd5b506101af6004803603602081101561037457600080fd5b5035610c2e565b34801561038757600080fd5b506102bd610c43565b34801561039c57600080fd5b506102f9610c49565b3480156103b157600080fd5b50610183600480360360208110156103c857600080fd5b50356001600160a01b0316610c55565b3480156103e457600080fd5b50610453600480360360208110156103fb57600080fd5b810190602081018135600160201b81111561041557600080fd5b82018360208201111561042757600080fd5b803590602001918460208302840111600160201b8311171561044857600080fd5b509092509050610cc0565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561048f578181015183820152602001610477565b505050509050019250505060405180910390f35b610183600480360360208110156104b957600080fd5b5035610d48565b3480156104cc57600080fd5b506102bd610e75565b3480156104e157600080fd5b506102bd600480360360208110156104f857600080fd5b5035610e95565b34801561050b57600080fd5b506102f9610ea9565b34801561052057600080fd5b506101af6004803603602081101561053757600080fd5b5035610eae565b34801561054a57600080fd5b506102bd6004803603602081101561056157600080fd5b5035610ec3565b34801561057457600080fd5b506102bd610ee1565b34801561058957600080fd5b506102bd600480360360208110156105a057600080fd5b5035610f05565b3480156105b357600080fd5b50610271610f12565b3480156105c857600080fd5b506102f9610f21565b606d546001600160a01b0316331461061a5760405162461bcd60e51b815260040180806020018281038252602581526020018061172e6025913960400191505060405180910390fd5b606d80546001600160a01b0319166001600160a01b0392909216919091179055565b606a6020526000908152604090205460ff1681565b60685460ff166106a8576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6068805460ff19169055606954821115610709576040805162461bcd60e51b815260206004820152601a60248201527f4665652065786365656473207472616e736665722076616c7565000000000000604482015290519081900360640190fd5b6000858152606a602052604090205460ff161561076d576040805162461bcd60e51b815260206004820152601f60248201527f546865206e6f746520686173206265656e20616c7265616479207370656e7400604482015290519081900360640190fd5b61077686610bbb565b6107c7576040805162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742066696e6420796f7572206d65726b6c6520726f6f7400000000604482015290519081900360640190fd5b606c546040805160c08082018352898252602082018990526001600160a01b038881168385015287811660608401526080830187905260a08301869052925163695ef6f960e01b8152929093169263695ef6f9928c928c9290916004810191829160240190849080838360005b8381101561084c578181015183820152602001610834565b505050509050018281038252858582818152602001925080828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b15801561089e57600080fd5b505af11580156108b2573d6000803e3d6000fd5b505050506040513d60208110156108c857600080fd5b5051610914576040805162461bcd60e51b815260206004820152601660248201527524b73b30b634b2103bb4ba34323930bb90383937b7b360511b604482015290519081900360640190fd5b6000858152606a60205260409020805460ff1916600117905561093984848484610f34565b604080516001600160a01b038681168252602082018890528183018590529151918516917fe9e508bad6d4c3227e881ca19068f099da81b5164dd6d62b2eaf1e8bc6c349319181900360600190a250506068805460ff19166001179055505050505050565b606c546001600160a01b031681565b60006000805160206116bd8339815191528310610a11576040805162461bcd60e51b815260206004820181905260248201527f5f6c6566742073686f756c6420626520696e7369646520746865206669656c64604482015290519081900360640190fd5b6000805160206116bd8339815191528210610a5d5760405162461bcd60e51b815260040180806020018281038252602181526020018061166d6021913960400191505060405180910390fd5b6040805163f47d33b560e01b81526004810185905260006024820181905282518693919273__Hasher________________________________9263f47d33b592604480840193829003018186803b158015610ab757600080fd5b505af4158015610acb573d6000803e3d6000fd5b505050506040513d6040811015610ae157600080fd5b50805160209091015190925090506000805160206116bd833981519152848308915073__Hasher________________________________63f47d33b583836040518363ffffffff1660e01b81526004018083815260200182815260200192505050604080518083038186803b158015610b5957600080fd5b505af4158015610b6d573d6000803e3d6000fd5b505050506040513d6040811015610b8357600080fd5b505195945050505050565b6000805160206116bd83398151915281565b60005463ffffffff1681565b606d546001600160a01b031681565b600081610bca57506000610c29565b60035463ffffffff165b60048163ffffffff1660648110610be757fe5b0154831415610bfa576001915050610c29565b63ffffffff8116610c09575060645b6003546000199091019063ffffffff80831691161415610bd45760009150505b919050565b606b6020526000908152604090205460ff1681565b60695481565b60035463ffffffff1681565b606d546001600160a01b03163314610c9e5760405162461bcd60e51b815260040180806020018281038252602581526020018061172e6025913960400191505060405180910390fd5b606c80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518281526020808402820101909152606090828015610cec578160200160208202803883390190505b50905060005b82811015610d4157610d15848483818110610d0957fe5b90506020020135610eae565b15610d39576001828281518110610d2857fe5b911515602092830291909101909101525b600101610cf2565b5092915050565b60685460ff16610d9f576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6068805460ff191690556000818152606b602052604090205460ff1615610df75760405162461bcd60e51b81526004018080602001828103825260218152602001806116dd6021913960400191505060405180910390fd5b6000610e028261102f565b6000838152606b60205260409020805460ff191660011790559050610e256111c6565b6040805163ffffffff83168152426020820152815184927fa945e51eec50ab98c161376f0db4cf2aeba3ec92755fe2fcd388bdbbb80ff196928290030190a250506068805460ff19166001179055565b60035460009060049063ffffffff1660648110610e8e57fe5b0154905090565b60048160648110610ea257fe5b0154905081565b606481565b6000908152606a602052604090205460ff1690565b60028181548110610ed057fe5b600091825260209091200154905081565b7f2fe54c60d3acabf3343a35b6eba15db4821b340f76e741e2249685ed4899af6c81565b60018181548110610ed057fe5b606e546001600160a01b031681565b600354600160201b900463ffffffff1681565b803414610f725760405162461bcd60e51b81526004018080602001828103825260308152602001806116166030913960400191505060405180910390fd5b610f80848360695403611212565b8115610f9057610f908383611212565b8015611029576040516000906001600160a01b0386169083908381818185875af1925050503d8060008114610fe1576040519150601f19603f3d011682016040523d82523d6000602084013e610fe6565b606091505b5050905080611027576040516001600160a01b0385169083156108fc029084906000818181858888f19350505050158015611025573d6000803e3d6000fd5b505b505b50505050565b60035460008054909163ffffffff600160201b909104811691811660020a1681141561108c5760405162461bcd60e51b815260040180806020018281038252602f8152602001806115bd602f913960400191505060405180910390fd5b6003805463ffffffff600160201b80830482166001019091160267ffffffff000000001990911617905582600080805b60005463ffffffff908116908216101561116457600185166111205783925060028163ffffffff16815481106110ee57fe5b906000526020600020015491508360018263ffffffff168154811061110f57fe5b600091825260209091200155611144565b60018163ffffffff168154811061113357fe5b906000526020600020015492508391505b61114e83836109ad565b9350600263ffffffff86160494506001016110bc565b5060035460649063ffffffff908116600101166003805463ffffffff19169290910663ffffffff9081169290921790819055849160049116606481106111a657fe5b01555050600354600160201b900463ffffffff1660001901949350505050565b34156112035760405162461bcd60e51b81526004018080602001828103825260308152602001806116fe6030913960400191505060405180910390fd5b61121033306069546113dd565b565b606e54604080516001600160a01b038581166024830152604480830186905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000956060959316939282918083835b6020831061128f5780518252601f199092019160209182019101611270565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146112f1576040519150601f19603f3d011682016040523d82523d6000602084013e6112f6565b606091505b509150915081611341576040805162461bcd60e51b81526020600482015260116024820152706e6f7420656e6f75676820746f6b656e7360781b604482015290519081900360640190fd5b8051156110295780516020146113885760405162461bcd60e51b815260040180806020018281038252602a8152602001806115ec602a913960400191505060405180910390fd5b80806020019051602081101561139d57600080fd5b50519150816110295760405162461bcd60e51b81526004018080602001828103825260278152602001806116466027913960400191505060405180910390fd5b606e54604080516001600160a01b0386811660248301528581166044830152606480830186905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b178152925182516000956060959316939282918083835b602083106114625780518252601f199092019160209182019101611443565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146114c4576040519150601f19603f3d011682016040523d82523d6000602084013e6114c9565b606091505b509150915081611520576040805162461bcd60e51b815260206004820152601960248201527f6e6f7420656e6f75676820616c6c6f77656420746f6b656e7300000000000000604482015290519081900360640190fd5b8051156110275780516020146115675760405162461bcd60e51b815260040180806020018281038252602a8152602001806115ec602a913960400191505060405180910390fd5b80806020019051602081101561157c57600080fd5b50519150816110275760405162461bcd60e51b815260040180806020018281038252602f81526020018061168e602f913960400191505060405180910390fdfe4d65726b6c6520747265652069732066756c6c2e204e6f206d6f7265206c656166732063616e20626520616464656464617461206c656e6774682073686f756c64206265206569746865722030206f72203332206279746573496e636f727265637420726566756e6420616d6f756e742072656365697665642062792074686520636f6e74726163746e6f7420656e6f75676820746f6b656e732e20546f6b656e2072657475726e732066616c73652e5f72696768742073686f756c6420626520696e7369646520746865206669656c646e6f7420656e6f75676820616c6c6f77656420746f6b656e732e20546f6b656e2072657475726e732066616c73652e30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000154686520636f6d6d69746d656e7420686173206265656e207375626d69747465644554482076616c756520697320737570706f73656420746f206265203020666f7220455243323020696e7374616e63654f6e6c79206f70657261746f722063616e2063616c6c20746869732066756e6374696f6e2ea265627a7a72315820494b71139a3b0e5b3d4285ff58127e5c54881ed5204c3d740b94c1c4832e681c64736f6c6343000511003264656e6f6d696e6174696f6e2073686f756c642062652067726561746572207468616e2030405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace5f72696768742073686f756c6420626520696e7369646520746865206669656c645f747265654c6576656c732073686f756c642062652067726561746572207468616e207a65726f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000015f747265654c6576656c732073686f756c64206265206c657373207468616e203332b10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6", - "deployedBytecode": "0x60806040526004361061014b5760003560e01c806397fc007c116100b6578063e5285dcc1161006f578063e5285dcc14610514578063e82955881461053e578063ec73295914610568578063f178e47c1461057d578063fc0c546a146105a7578063fc7e9c6f146105bc5761014b565b806397fc007c146103a55780639fa12d0b146103d8578063b214faa5146104a3578063ba70f757146104c0578063c2b40ae4146104d5578063cd87a3b4146104ff5761014b565b80634ecf518b116101085780634ecf518b146102e4578063570ca735146103125780636d9833e314610327578063839df945146103515780638bca6d161461037b57806390eeb02b146103905761014b565b806306394c9b1461015057806317cc915c1461018557806321a0adb6146101c35780632b7ac3f31461025c57806338bf282e1461028d578063414a37ba146102cf575b600080fd5b34801561015c57600080fd5b506101836004803603602081101561017357600080fd5b50356001600160a01b03166105d1565b005b34801561019157600080fd5b506101af600480360360208110156101a857600080fd5b503561063c565b604080519115158252519081900360200190f35b610183600480360360e08110156101d957600080fd5b810190602081018135600160201b8111156101f357600080fd5b82018360208201111561020557600080fd5b803590602001918460018302840111600160201b8311171561022657600080fd5b91935091508035906020810135906001600160a01b03604082013581169160608101359091169060808101359060a00135610651565b34801561026857600080fd5b5061027161099e565b604080516001600160a01b039092168252519081900360200190f35b34801561029957600080fd5b506102bd600480360360408110156102b057600080fd5b50803590602001356109ad565b60408051918252519081900360200190f35b3480156102db57600080fd5b506102bd610b8e565b3480156102f057600080fd5b506102f9610ba0565b6040805163ffffffff9092168252519081900360200190f35b34801561031e57600080fd5b50610271610bac565b34801561033357600080fd5b506101af6004803603602081101561034a57600080fd5b5035610bbb565b34801561035d57600080fd5b506101af6004803603602081101561037457600080fd5b5035610c2e565b34801561038757600080fd5b506102bd610c43565b34801561039c57600080fd5b506102f9610c49565b3480156103b157600080fd5b50610183600480360360208110156103c857600080fd5b50356001600160a01b0316610c55565b3480156103e457600080fd5b50610453600480360360208110156103fb57600080fd5b810190602081018135600160201b81111561041557600080fd5b82018360208201111561042757600080fd5b803590602001918460208302840111600160201b8311171561044857600080fd5b509092509050610cc0565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561048f578181015183820152602001610477565b505050509050019250505060405180910390f35b610183600480360360208110156104b957600080fd5b5035610d48565b3480156104cc57600080fd5b506102bd610e75565b3480156104e157600080fd5b506102bd600480360360208110156104f857600080fd5b5035610e95565b34801561050b57600080fd5b506102f9610ea9565b34801561052057600080fd5b506101af6004803603602081101561053757600080fd5b5035610eae565b34801561054a57600080fd5b506102bd6004803603602081101561056157600080fd5b5035610ec3565b34801561057457600080fd5b506102bd610ee1565b34801561058957600080fd5b506102bd600480360360208110156105a057600080fd5b5035610f05565b3480156105b357600080fd5b50610271610f12565b3480156105c857600080fd5b506102f9610f21565b606d546001600160a01b0316331461061a5760405162461bcd60e51b815260040180806020018281038252602581526020018061172e6025913960400191505060405180910390fd5b606d80546001600160a01b0319166001600160a01b0392909216919091179055565b606a6020526000908152604090205460ff1681565b60685460ff166106a8576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6068805460ff19169055606954821115610709576040805162461bcd60e51b815260206004820152601a60248201527f4665652065786365656473207472616e736665722076616c7565000000000000604482015290519081900360640190fd5b6000858152606a602052604090205460ff161561076d576040805162461bcd60e51b815260206004820152601f60248201527f546865206e6f746520686173206265656e20616c7265616479207370656e7400604482015290519081900360640190fd5b61077686610bbb565b6107c7576040805162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742066696e6420796f7572206d65726b6c6520726f6f7400000000604482015290519081900360640190fd5b606c546040805160c08082018352898252602082018990526001600160a01b038881168385015287811660608401526080830187905260a08301869052925163695ef6f960e01b8152929093169263695ef6f9928c928c9290916004810191829160240190849080838360005b8381101561084c578181015183820152602001610834565b505050509050018281038252858582818152602001925080828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b15801561089e57600080fd5b505af11580156108b2573d6000803e3d6000fd5b505050506040513d60208110156108c857600080fd5b5051610914576040805162461bcd60e51b815260206004820152601660248201527524b73b30b634b2103bb4ba34323930bb90383937b7b360511b604482015290519081900360640190fd5b6000858152606a60205260409020805460ff1916600117905561093984848484610f34565b604080516001600160a01b038681168252602082018890528183018590529151918516917fe9e508bad6d4c3227e881ca19068f099da81b5164dd6d62b2eaf1e8bc6c349319181900360600190a250506068805460ff19166001179055505050505050565b606c546001600160a01b031681565b60006000805160206116bd8339815191528310610a11576040805162461bcd60e51b815260206004820181905260248201527f5f6c6566742073686f756c6420626520696e7369646520746865206669656c64604482015290519081900360640190fd5b6000805160206116bd8339815191528210610a5d5760405162461bcd60e51b815260040180806020018281038252602181526020018061166d6021913960400191505060405180910390fd5b6040805163f47d33b560e01b81526004810185905260006024820181905282518693919273__Hasher________________________________9263f47d33b592604480840193829003018186803b158015610ab757600080fd5b505af4158015610acb573d6000803e3d6000fd5b505050506040513d6040811015610ae157600080fd5b50805160209091015190925090506000805160206116bd833981519152848308915073__Hasher________________________________63f47d33b583836040518363ffffffff1660e01b81526004018083815260200182815260200192505050604080518083038186803b158015610b5957600080fd5b505af4158015610b6d573d6000803e3d6000fd5b505050506040513d6040811015610b8357600080fd5b505195945050505050565b6000805160206116bd83398151915281565b60005463ffffffff1681565b606d546001600160a01b031681565b600081610bca57506000610c29565b60035463ffffffff165b60048163ffffffff1660648110610be757fe5b0154831415610bfa576001915050610c29565b63ffffffff8116610c09575060645b6003546000199091019063ffffffff80831691161415610bd45760009150505b919050565b606b6020526000908152604090205460ff1681565b60695481565b60035463ffffffff1681565b606d546001600160a01b03163314610c9e5760405162461bcd60e51b815260040180806020018281038252602581526020018061172e6025913960400191505060405180910390fd5b606c80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518281526020808402820101909152606090828015610cec578160200160208202803883390190505b50905060005b82811015610d4157610d15848483818110610d0957fe5b90506020020135610eae565b15610d39576001828281518110610d2857fe5b911515602092830291909101909101525b600101610cf2565b5092915050565b60685460ff16610d9f576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6068805460ff191690556000818152606b602052604090205460ff1615610df75760405162461bcd60e51b81526004018080602001828103825260218152602001806116dd6021913960400191505060405180910390fd5b6000610e028261102f565b6000838152606b60205260409020805460ff191660011790559050610e256111c6565b6040805163ffffffff83168152426020820152815184927fa945e51eec50ab98c161376f0db4cf2aeba3ec92755fe2fcd388bdbbb80ff196928290030190a250506068805460ff19166001179055565b60035460009060049063ffffffff1660648110610e8e57fe5b0154905090565b60048160648110610ea257fe5b0154905081565b606481565b6000908152606a602052604090205460ff1690565b60028181548110610ed057fe5b600091825260209091200154905081565b7f2fe54c60d3acabf3343a35b6eba15db4821b340f76e741e2249685ed4899af6c81565b60018181548110610ed057fe5b606e546001600160a01b031681565b600354600160201b900463ffffffff1681565b803414610f725760405162461bcd60e51b81526004018080602001828103825260308152602001806116166030913960400191505060405180910390fd5b610f80848360695403611212565b8115610f9057610f908383611212565b8015611029576040516000906001600160a01b0386169083908381818185875af1925050503d8060008114610fe1576040519150601f19603f3d011682016040523d82523d6000602084013e610fe6565b606091505b5050905080611027576040516001600160a01b0385169083156108fc029084906000818181858888f19350505050158015611025573d6000803e3d6000fd5b505b505b50505050565b60035460008054909163ffffffff600160201b909104811691811660020a1681141561108c5760405162461bcd60e51b815260040180806020018281038252602f8152602001806115bd602f913960400191505060405180910390fd5b6003805463ffffffff600160201b80830482166001019091160267ffffffff000000001990911617905582600080805b60005463ffffffff908116908216101561116457600185166111205783925060028163ffffffff16815481106110ee57fe5b906000526020600020015491508360018263ffffffff168154811061110f57fe5b600091825260209091200155611144565b60018163ffffffff168154811061113357fe5b906000526020600020015492508391505b61114e83836109ad565b9350600263ffffffff86160494506001016110bc565b5060035460649063ffffffff908116600101166003805463ffffffff19169290910663ffffffff9081169290921790819055849160049116606481106111a657fe5b01555050600354600160201b900463ffffffff1660001901949350505050565b34156112035760405162461bcd60e51b81526004018080602001828103825260308152602001806116fe6030913960400191505060405180910390fd5b61121033306069546113dd565b565b606e54604080516001600160a01b038581166024830152604480830186905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000956060959316939282918083835b6020831061128f5780518252601f199092019160209182019101611270565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146112f1576040519150601f19603f3d011682016040523d82523d6000602084013e6112f6565b606091505b509150915081611341576040805162461bcd60e51b81526020600482015260116024820152706e6f7420656e6f75676820746f6b656e7360781b604482015290519081900360640190fd5b8051156110295780516020146113885760405162461bcd60e51b815260040180806020018281038252602a8152602001806115ec602a913960400191505060405180910390fd5b80806020019051602081101561139d57600080fd5b50519150816110295760405162461bcd60e51b81526004018080602001828103825260278152602001806116466027913960400191505060405180910390fd5b606e54604080516001600160a01b0386811660248301528581166044830152606480830186905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b178152925182516000956060959316939282918083835b602083106114625780518252601f199092019160209182019101611443565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146114c4576040519150601f19603f3d011682016040523d82523d6000602084013e6114c9565b606091505b509150915081611520576040805162461bcd60e51b815260206004820152601960248201527f6e6f7420656e6f75676820616c6c6f77656420746f6b656e7300000000000000604482015290519081900360640190fd5b8051156110275780516020146115675760405162461bcd60e51b815260040180806020018281038252602a8152602001806115ec602a913960400191505060405180910390fd5b80806020019051602081101561157c57600080fd5b50519150816110275760405162461bcd60e51b815260040180806020018281038252602f81526020018061168e602f913960400191505060405180910390fdfe4d65726b6c6520747265652069732066756c6c2e204e6f206d6f7265206c656166732063616e20626520616464656464617461206c656e6774682073686f756c64206265206569746865722030206f72203332206279746573496e636f727265637420726566756e6420616d6f756e742072656365697665642062792074686520636f6e74726163746e6f7420656e6f75676820746f6b656e732e20546f6b656e2072657475726e732066616c73652e5f72696768742073686f756c6420626520696e7369646520746865206669656c646e6f7420656e6f75676820616c6c6f77656420746f6b656e732e20546f6b656e2072657475726e732066616c73652e30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000154686520636f6d6d69746d656e7420686173206265656e207375626d69747465644554482076616c756520697320737570706f73656420746f206265203020666f7220455243323020696e7374616e63654f6e6c79206f70657261746f722063616e2063616c6c20746869732066756e6374696f6e2ea265627a7a72315820494b71139a3b0e5b3d4285ff58127e5c54881ed5204c3d740b94c1c4832e681c64736f6c63430005110032", - "sourceMap": "805:2189:0:-;;;1430:34:2;;;-1:-1:-1;;;;;;1468:27:2;;;867:237:0;5:2:-1;;;;30:1;27;20:12;5:2;867:237:0;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;867:237:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1646:15:2;;;1638:67;;;;-1:-1:-1;;;1638:67:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1733:2;1719:11;:16;;;1711:63;;;;-1:-1:-1;;;1711:63:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1780:6;:20;;-1:-1:-1;;1780:20:2;;;;;;;1854:5;27:10:-1;;-1:-1;23:18;;;45:23;;;1088:77:2;-1:-1:-1;;;;;;;;;;;1854:23:2;;;;;;27:10:-1;;23:18;;;45:23;;1883:32:2;;;;-1:-1:-1;;;;;;;;;;;1883:32:2;;;;;;1922:175;1945:6;;;;;;1941:10;;;;1922:175;;;1980:39;1994:11;;-1:-1:-1;;;;;1980:13:2;:39;:::i;:::-;2027:5;27:10:-1;;39:1;23:18;;;45:23;;;-1:-1;;;;;;;;;;;2027:23:2;;;;27:10:-1;;23:18;;;45:23;;-1:-1;2058:32:2;;;-1:-1:-1;;;;;;;;;;;2058:32:2;;;;1966:53;;-1:-1:-1;1953:3:2;1922:175;;;-1:-1:-1;2114:39:2;2128:11;;-1:-1:-1;;;;;2114:13:2;:39;:::i;:::-;2103:5;2109:1;2103:8;:50;-1:-1:-1;;1421:11:18;:18;;-1:-1:-1;;1421:18:18;1435:4;1421:18;;;2260:17:8;2252:67;;;;-1:-1:-1;;;2252:67:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2325:8;:20;;-1:-1:-1;;;;;2325:20:8;;;-1:-1:-1;;;;;;2325:20:8;;;;;;;2351:8;:20;;;;;;;;;;;;;;;2377:12;:28;;;;-1:-1:-1;1085:5:0;:14;;;;;;;;;;;;;;-1:-1:-1;805:2189:0;;-1:-1:-1;;;805:2189:0;2230:445:2;2305:7;-1:-1:-1;;;;;;;;;;;2328:27:2;;2320:72;;;;;-1:-1:-1;;;2320:72:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2406:28:2;;2398:74;;;;-1:-1:-1;;;2398:74:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2538:23;;;-1:-1:-1;;;2538:23:2;;;;;;;;2478:9;2538:23;;;;;;;;2498:5;;2478:9;;2538:6;;:17;;:23;;;;;;;;;;:6;:23;;;5:2:-1;;;;30:1;27;20:12;5:2;2538:23:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2538:23:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2538:23:2;;;;;;;;;-1:-1:-1;2538:23:2;-1:-1:-1;;;;;;;;;;;;2589:6:2;2578:1;2571:38;2567:42;;2624:6;:17;2642:1;2645;2624:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2624:23:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2624:23:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2624:23:2;;2230:445;-1:-1:-1;;;;;2230:445:2:o;805:2189:0:-;;;;;;;", - "deployedSourceMap": "805:2189:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5355:102:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5355:102:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5355:102:8;-1:-1:-1;;;;;5355:102:8;;:::i;:::-;;1089:47;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1089:47:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1089:47:8;;:::i;:::-;;;;;;;;;;;;;;;;;;3478:781;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;3478:781:8;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;3478:781:8;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3478:781:8;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;3478:781:8;;-1:-1:-1;3478:781:8;-1:-1:-1;3478:781:8;;;;;;;;-1:-1:-1;;;;;3478:781:8;;;;;;;;;;;;;;;;;;;;;;;;:::i;1278:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1278:25:8;;;:::i;:::-;;;;-1:-1:-1;;;;;1278:25:8;;;;;;;;;;;;;;2230:445:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2230:445:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2230:445:2;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;933:114;;8:9:-1;5:2;;;30:1;27;20:12;5:2;933:114:2;;;:::i;1209:20::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1209:20:2;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1463:23:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1463:23:8;;;:::i;3553:342:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3553:342:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3553:342:2;;:::i;1231:43:8:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1231:43:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1231:43:8;;:::i;1058:27::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1058:27:8;;;:::i;1430:34:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1430:34:2;;;:::i;5192:113:8:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5192:113:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5192:113:8;-1:-1:-1;;;;;5192:113:8;;:::i;4669:293::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4669:293:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4669:293:8;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;4669:293:8;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4669:293:8;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;4669:293:8;;-1:-1:-1;4669:293:8;-1:-1:-1;4669:293:8;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4669:293:8;;;;;;;;;;;;;;;;;2658:324;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2658:324:8;;:::i;3941:93:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3941:93:2;;;:::i;1549:39::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1549:39:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1549:39:2;;:::i;1499:46::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1499:46:2;;;:::i;4492:116:8:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4492:116:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4492:116:8;;:::i;1404:22:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1404:22:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1404:22:2;;:::i;1051:114::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1051:114:2;;;:::i;1369:31::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1369:31:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1369:31:2;;:::i;842:20:0:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;842:20:0;;;:::i;1468:27:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1468:27:2;;;:::i;5355:102:8:-;1540:8;;-1:-1:-1;;;;;1540:8:8;1526:10;:22;1518:72;;;;-1:-1:-1;;;1518:72:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5429:8;:23;;-1:-1:-1;;;;;;5429:23:8;-1:-1:-1;;;;;5429:23:8;;;;;;;;;;5355:102::o;1089:47::-;;;;;;;;;;;;;;;:::o;3478:781::-;1934:11:18;;;;1926:55;;;;;-1:-1:-1;;;1926:55:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;2056:11;:19;;-1:-1:-1;;2056:19:18;;;3695:12:8;;3687:20;;;3679:59;;;;;-1:-1:-1;;;3679:59:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;3753:31;;;;:15;:31;;;;;;;;3752:32;3744:76;;;;;-1:-1:-1;;;3744:76:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;3834:18;3846:5;3834:11;:18::i;:::-;3826:59;;;;;-1:-1:-1;;;3826:59:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;3932:8;;:126;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4003:19:8;;;3932:126;;;;4024:17;;;3932:126;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3932:126:8;;:8;;;;;:20;;3953:6;;;;3932:126;;;;;;;;;;;;;;;;:8;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3932:126:8;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;3932:126:8;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3932:126:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3932:126:8;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3932:126:8;3924:161;;;;;-1:-1:-1;;;3924:161:8;;;;;;;;;;;;-1:-1:-1;;;3924:161:8;;;;;;;;;;;;;;;4092:31;;;;:15;:31;;;;;:38;;-1:-1:-1;;4092:38:8;4126:4;4092:38;;;4136:53;4153:10;4165:8;4175:4;4181:7;4136:16;:53::i;:::-;4200:54;;;-1:-1:-1;;;;;4200:54:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2230:11:18;:18;;-1:-1:-1;;2230:18:18;2244:4;2230:18;;;-1:-1:-1;;;;;;3478:781:8:o;1278:25::-;;;-1:-1:-1;;;;;1278:25:8;;:::o;2230:445:2:-;2305:7;-1:-1:-1;;;;;;;;;;;2328:27:2;;2320:72;;;;;-1:-1:-1;;;2320:72:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2406:28:2;;2398:74;;;;-1:-1:-1;;;2398:74:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2538:23;;;-1:-1:-1;;;2538:23:2;;;;;;;;2478:9;2538:23;;;;;;;;2498:5;;2478:9;;2538:6;;:17;;:23;;;;;;;;;;:6;:23;;;5:2:-1;;;;30:1;27;20:12;5:2;2538:23:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2538:23:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2538:23:2;;;;;;;;;-1:-1:-1;2538:23:2;-1:-1:-1;;;;;;;;;;;;2589:6:2;2578:1;2571:38;2567:42;;2624:6;:17;2642:1;2645;2624:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2624:23:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2624:23:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2624:23:2;;2230:445;-1:-1:-1;;;;;2230:445:2:o;933:114::-;-1:-1:-1;;;;;;;;;;;933:114:2;:::o;1209:20::-;;;;;;:::o;1463:23:8:-;;;-1:-1:-1;;;;;1463:23:8;;:::o;3553:342:2:-;3609:4;3625:10;3621:43;;-1:-1:-1;3652:5:2;3645:12;;3621:43;3680:16;;;;3702:171;3726:5;3732:1;3726:8;;;;;;;;;;;3717:5;:17;3713:53;;;3753:4;3746:11;;;;;3713:53;3777:6;;;3773:52;;-1:-1:-1;1542:3:2;3773:52;3855:16;;-1:-1:-1;;3832:3:2;;;;3855:16;3850:21;;;3855:16;;3850:21;;3702:171;;3885:5;3878:12;;;3553:342;;;;:::o;1231:43:8:-;;;;;;;;;;;;;;;:::o;1058:27::-;;;;:::o;1430:34:2:-;;;;;;:::o;5192:113:8:-;1540:8;;-1:-1:-1;;;;;1540:8:8;1526:10;:22;1518:72;;;;-1:-1:-1;;;1518:72:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5266:8;:34;;-1:-1:-1;;;;;;5266:34:8;-1:-1:-1;;;;;5266:34:8;;;;;;;;;;5192:113::o;4669:293::-;4785:35;;;;;;;;;;;;;;;;4750:19;;4796:16;4785:35;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;4785:35:8;-1:-1:-1;4777:43:8;-1:-1:-1;4830:6:8;4826:132;4842:27;;;4826:132;;;4888:28;4896:16;;4913:1;4896:19;;;;;;;;;;;;;4888:7;:28::i;:::-;4884:68;;;4939:4;4928:5;4934:1;4928:8;;;;;;;;:15;;;:8;;;;;;;;;;;:15;4884:68;4871:3;;4826:132;;;;4669:293;;;;:::o;2658:324::-;1934:11:18;;;;1926:55;;;;;-1:-1:-1;;;1926:55:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;2056:11;:19;;-1:-1:-1;;2056:19:18;;;2070:5;2741:24:8;;;:11;:24;;;;;;2056:19:18;2741:24:8;2740:25;2732:71;;;;-1:-1:-1;;;2732:71:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2810:20;2833;2841:11;2833:7;:20::i;:::-;2859:24;;;;:11;:24;;;;;:31;;-1:-1:-1;;2859:31:8;2886:4;2859:31;;;2810:43;-1:-1:-1;2896:17:8;:15;:17::i;:::-;2925:52;;;;;;;;2961:15;2925:52;;;;;;2933:11;;2925:52;;;;;;;;-1:-1:-1;;2230:11:18;:18;;-1:-1:-1;;2230:18:18;2244:4;2230:18;;;2658:324:8:o;3941:93:2:-;4012:16;;3984:7;;4006:5;;4012:16;;4006:23;;;;;;;;;3999:30;;3941:93;:::o;1549:39::-;;;;;;;;;;;;;-1:-1:-1;1549:39:2;:::o;1499:46::-;1542:3;1499:46;:::o;4492:116:8:-;4553:4;4572:31;;;:15;:31;;;;;;;;;4492:116::o;1404:22:2:-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1404:22:2;:::o;1051:114::-;1088:77;1051:114;:::o;1369:31::-;;;;;;;;;;842:20:0;;;-1:-1:-1;;;;;842:20:0;;:::o;1468:27:2:-;;;-1:-1:-1;;;1468:27:2;;;;;:::o;1303:547:0:-;1450:7;1437:9;:20;1429:81;;;;-1:-1:-1;;;1429:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1517:51;1536:10;1563:4;1548:12;;:19;1517:18;:51::i;:::-;1578:8;;1574:63;;1596:34;1615:8;1625:4;1596:18;:34::i;:::-;1647:11;;1643:203;;1687:34;;1669:12;;-1:-1:-1;;;;;1687:15:0;;;1709:7;;1669:12;1687:34;1669:12;1687:34;1709:7;1687:15;:34;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;1668:53:0;;;1734:7;1729:111;;1805:26;;-1:-1:-1;;;;;1805:17:0;;;:26;;;;;1823:7;;1805:26;;;;1823:7;1805:17;:26;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1805:26:0;1729:111;1643:203;;1303:547;;;;:::o;2679:802:2:-;2770:9;;2728:12;2820:6;;2728:12;;2770:9;-1:-1:-1;;;2770:9:2;;;;;;2820:6;;2816:1;2809:17;2793:33;;;;2785:93;;;;-1:-1:-1;;;2785:93:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2884:9;:14;;;-1:-1:-1;;;2884:14:2;;;;;2897:1;2884:14;;;;;-1:-1:-1;;2884:14:2;;;;;;2931:5;-1:-1:-1;;;2980:355:2;3003:6;;;;;;2999:10;;;;2980:355;;;3028:16;;;3024:225;;3068:16;3061:23;;3102:5;3108:1;3102:8;;;;;;;;;;;;;;;;;;3094:16;;3141;3121:14;3136:1;3121:17;;;;;;;;;;;;;;;;;;;:36;3024:225;;;3189:14;3204:1;3189:17;;;;;;;;;;;;;;;;;;3182:24;;3224:16;3216:24;;3024:225;3276:26;3290:4;3296:5;3276:13;:26::i;:::-;3257:45;-1:-1:-1;3327:1:2;3311:17;;;;;-1:-1:-1;3011:3:2;;2980:355;;;-1:-1:-1;3361:16:2;;1542:3;;3360:42;3361:16;;;;:20;3360:42;3341:16;:61;;-1:-1:-1;;3341:61:2;3360:42;;;;3341:61;;;;;;;;;;;;3434:16;;3408:5;;3414:16;3408:23;;;;;;;;:42;-1:-1:-1;;3463:9:2;;-1:-1:-1;;;3463:9:2;;;;-1:-1:-1;;3463:13:2;;2679:802;-1:-1:-1;;;;2679:802:2:o;1108:191:0:-;1158:9;:14;1150:75;;;;-1:-1:-1;;;1150:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1231:63;1254:10;1274:4;1281:12;;1231:22;:63::i;:::-;1108:191::o;2448:544::-;2557:5;;2568:63;;;-1:-1:-1;;;;;2568:63:0;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;2568:63:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2557:75:0;;;;2522:12;;2536:17;;2557:5;;;2568:63;2557:75;;;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;2557:75:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2521:111:0;;;;2646:7;2638:37;;;;;-1:-1:-1;;;2638:37:0;;;;;;;;;;;;-1:-1:-1;;;2638:37:0;;;;;;;;;;;;;;;2775:11;;:15;2771:217;;2808:4;:11;2823:2;2808:17;2800:72;;;;-1:-1:-1;;;2800:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2901:4;2890:24;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2890:24:0;;-1:-1:-1;2890:24:0;2922:59;;;;-1:-1:-1;;;2922:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1854:590;1982:5;;1993:74;;;-1:-1:-1;;;;;1993:74:0;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1993:74:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1982:86:0;;;;1947:12;;1961:17;;1982:5;;;1993:74;1982:86;;;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;1982:86:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;1946:122:0;;;;2082:7;2074:45;;;;;-1:-1:-1;;;2074:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;2219:11;;:15;2215:225;;2252:4;:11;2267:2;2252:17;2244:72;;;;-1:-1:-1;;;2244:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2345:4;2334:24;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2334:24:0;;-1:-1:-1;2334:24:0;2366:67;;;;-1:-1:-1;;;2366:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", - "source": "// https://tornado.cash\n/*\n* d888888P dP a88888b. dP\n* 88 88 d8' `88 88\n* 88 .d8888b. 88d888b. 88d888b. .d8888b. .d888b88 .d8888b. 88 .d8888b. .d8888b. 88d888b.\n* 88 88' `88 88' `88 88' `88 88' `88 88' `88 88' `88 88 88' `88 Y8ooooo. 88' `88\n* 88 88. .88 88 88 88 88. .88 88. .88 88. .88 dP Y8. .88 88. .88 88 88 88\n* dP `88888P' dP dP dP `88888P8 `88888P8 `88888P' 88 Y88888P' `88888P8 `88888P' dP dP\n* ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo\n*/\n\npragma solidity 0.5.17;\n\nimport \"./Tornado.sol\";\n\ncontract ERC20Tornado is Tornado {\n address public token;\n\n constructor(\n IVerifier _verifier,\n uint256 _denomination,\n uint32 _merkleTreeHeight,\n address _operator,\n address _token\n ) Tornado(_verifier, _denomination, _merkleTreeHeight, _operator) public {\n token = _token;\n }\n\n function _processDeposit() internal {\n require(msg.value == 0, \"ETH value is supposed to be 0 for ERC20 instance\");\n _safeErc20TransferFrom(msg.sender, address(this), denomination);\n }\n\n function _processWithdraw(address payable _recipient, address payable _relayer, uint256 _fee, uint256 _refund) internal {\n require(msg.value == _refund, \"Incorrect refund amount received by the contract\");\n\n _safeErc20Transfer(_recipient, denomination - _fee);\n if (_fee > 0) {\n _safeErc20Transfer(_relayer, _fee);\n }\n\n if (_refund > 0) {\n (bool success, ) = _recipient.call.value(_refund)(\"\");\n if (!success) {\n // let's return _refund back to the relayer\n _relayer.transfer(_refund);\n }\n }\n }\n\n function _safeErc20TransferFrom(address _from, address _to, uint256 _amount) internal {\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd /* transferFrom */, _from, _to, _amount));\n require(success, \"not enough allowed tokens\");\n\n // if contract returns some data lets make sure that is `true` according to standard\n if (data.length > 0) {\n require(data.length == 32, \"data length should be either 0 or 32 bytes\");\n success = abi.decode(data, (bool));\n require(success, \"not enough allowed tokens. Token returns false.\");\n }\n }\n\n function _safeErc20Transfer(address _to, uint256 _amount) internal {\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb /* transfer */, _to, _amount));\n require(success, \"not enough tokens\");\n\n // if contract returns some data lets make sure that is `true` according to standard\n if (data.length > 0) {\n require(data.length == 32, \"data length should be either 0 or 32 bytes\");\n success = abi.decode(data, (bool));\n require(success, \"not enough tokens. Token returns false.\");\n }\n }\n}\n", - "sourcePath": "/Users/brianli/dotfiles/tornado-core/contracts/ERC20Tornado.sol", - "ast": { - "absolutePath": "/Users/brianli/dotfiles/tornado-core/contracts/ERC20Tornado.sol", - "exportedSymbols": { - "ERC20Tornado": [ - 227 - ] - }, - "id": 228, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1, - "literals": [ - "solidity", - "0.5", - ".17" - ], - "nodeType": "PragmaDirective", - "src": "755:23:0" - }, - { - "absolutePath": "/Users/brianli/dotfiles/tornado-core/contracts/Tornado.sol", - "file": "./Tornado.sol", - "id": 2, - "nodeType": "ImportDirective", - "scope": 228, - "sourceUnit": 1195, - "src": "780:23:0", - "symbolAliases": [], - "unitAlias": "" - }, - { - "baseContracts": [ - { - "arguments": null, - "baseName": { - "contractScope": null, - "id": 3, - "name": "Tornado", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1194, - "src": "830:7:0", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Tornado_$1194", - "typeString": "contract Tornado" - } - }, - "id": 4, - "nodeType": "InheritanceSpecifier", - "src": "830:7:0" - } - ], - "contractDependencies": [ - 694, - 1194, - 3245 - ], - "contractKind": "contract", - "documentation": null, - "fullyImplemented": true, - "id": 227, - "linearizedBaseContracts": [ - 227, - 1194, - 3245, - 694 - ], - "name": "ERC20Tornado", - "nodeType": "ContractDefinition", - "nodes": [ - { - "constant": false, - "id": 6, - "name": "token", - "nodeType": "VariableDeclaration", - "scope": 227, - "src": "842:20:0", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 5, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "842:7:0", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "public" - }, - { - "body": { - "id": 29, - "nodeType": "Block", - "src": "1079:25:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 27, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 25, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6, - "src": "1085:5:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 26, - "name": "_token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 16, - "src": "1093:6:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "1085:14:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 28, - "nodeType": "ExpressionStatement", - "src": "1085:14:0" - } - ] - }, - "documentation": null, - "id": 30, - "implemented": true, - "kind": "constructor", - "modifiers": [ - { - "arguments": [ - { - "argumentTypes": null, - "id": 19, - "name": "_verifier", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8, - "src": "1016:9:0", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IVerifier_$891", - "typeString": "contract IVerifier" - } - }, - { - "argumentTypes": null, - "id": 20, - "name": "_denomination", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 10, - "src": "1027:13:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 21, - "name": "_merkleTreeHeight", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12, - "src": "1042:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - { - "argumentTypes": null, - "id": 22, - "name": "_operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 14, - "src": "1061:9:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "id": 23, - "modifierName": { - "argumentTypes": null, - "id": 18, - "name": "Tornado", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1194, - "src": "1008:7:0", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Tornado_$1194_$", - "typeString": "type(contract Tornado)" - } - }, - "nodeType": "ModifierInvocation", - "src": "1008:63:0" - } - ], - "name": "", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 17, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 8, - "name": "_verifier", - "nodeType": "VariableDeclaration", - "scope": 30, - "src": "884:19:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IVerifier_$891", - "typeString": "contract IVerifier" - }, - "typeName": { - "contractScope": null, - "id": 7, - "name": "IVerifier", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 891, - "src": "884:9:0", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IVerifier_$891", - "typeString": "contract IVerifier" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 10, - "name": "_denomination", - "nodeType": "VariableDeclaration", - "scope": 30, - "src": "909:21:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 9, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "909:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 12, - "name": "_merkleTreeHeight", - "nodeType": "VariableDeclaration", - "scope": 30, - "src": "936:24:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 11, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "936:6:0", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 14, - "name": "_operator", - "nodeType": "VariableDeclaration", - "scope": 30, - "src": "966:17:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 13, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "966:7:0", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 16, - "name": "_token", - "nodeType": "VariableDeclaration", - "scope": 30, - "src": "989:14:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 15, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "989:7:0", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "878:129:0" - }, - "returnParameters": { - "id": 24, - "nodeType": "ParameterList", - "parameters": [], - "src": "1079:0:0" - }, - "scope": 227, - "src": "867:237:0", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 50, - "nodeType": "Block", - "src": "1144:155:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 37, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 34, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3260, - "src": "1158:3:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 35, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "value", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1158:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 36, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1171:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1158:14:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "4554482076616c756520697320737570706f73656420746f206265203020666f7220455243323020696e7374616e6365", - "id": 38, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1174:50:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_b14b0818f1fdc710b92ba7e1ce725992b43e47a5b220b1b890f352eeac2e1d5e", - "typeString": "literal_string \"ETH value is supposed to be 0 for ERC20 instance\"" - }, - "value": "ETH value is supposed to be 0 for ERC20 instance" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_b14b0818f1fdc710b92ba7e1ce725992b43e47a5b220b1b890f352eeac2e1d5e", - "typeString": "literal_string \"ETH value is supposed to be 0 for ERC20 instance\"" - } - ], - "id": 33, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 3263, - 3264 - ], - "referencedDeclaration": 3264, - "src": "1150:7:0", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 39, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1150:75:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 40, - "nodeType": "ExpressionStatement", - "src": "1150:75:0" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 42, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3260, - "src": "1254:3:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 43, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1254:10:0", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 45, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3284, - "src": "1274:4:0", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Tornado_$227", - "typeString": "contract ERC20Tornado" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_ERC20Tornado_$227", - "typeString": "contract ERC20Tornado" - } - ], - "id": 44, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1266:7:0", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 46, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1266:13:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 47, - "name": "denomination", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 897, - "src": "1281:12:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 41, - "name": "_safeErc20TransferFrom", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 171, - "src": "1231:22:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,address,uint256)" - } - }, - "id": 48, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1231:63:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 49, - "nodeType": "ExpressionStatement", - "src": "1231:63:0" - } - ] - }, - "documentation": null, - "id": 51, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_processDeposit", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 31, - "nodeType": "ParameterList", - "parameters": [], - "src": "1132:2:0" - }, - "returnParameters": { - "id": 32, - "nodeType": "ParameterList", - "parameters": [], - "src": "1144:0:0" - }, - "scope": 227, - "src": "1108:191:0", - "stateMutability": "nonpayable", - "superFunction": 1014, - "visibility": "internal" - }, - { - "body": { - "id": 112, - "nodeType": "Block", - "src": "1423:427:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 66, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 63, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3260, - "src": "1437:3:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 64, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "value", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1437:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 65, - "name": "_refund", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 59, - "src": "1450:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1437:20:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "496e636f727265637420726566756e6420616d6f756e742072656365697665642062792074686520636f6e7472616374", - "id": 67, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1459:50:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_3189ced290ffd29dc422911cd3b29574f21c524c91f4b41e6abb0646c581cbff", - "typeString": "literal_string \"Incorrect refund amount received by the contract\"" - }, - "value": "Incorrect refund amount received by the contract" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_3189ced290ffd29dc422911cd3b29574f21c524c91f4b41e6abb0646c581cbff", - "typeString": "literal_string \"Incorrect refund amount received by the contract\"" - } - ], - "id": 62, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 3263, - 3264 - ], - "referencedDeclaration": 3264, - "src": "1429:7:0", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 68, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1429:81:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 69, - "nodeType": "ExpressionStatement", - "src": "1429:81:0" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 71, - "name": "_recipient", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 53, - "src": "1536:10:0", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 74, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 72, - "name": "denomination", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 897, - "src": "1548:12:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 73, - "name": "_fee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 57, - "src": "1563:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1548:19:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 70, - "name": "_safeErc20Transfer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 226, - "src": "1517:18:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,uint256)" - } - }, - "id": 75, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1517:51:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 76, - "nodeType": "ExpressionStatement", - "src": "1517:51:0" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 79, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 77, - "name": "_fee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 57, - "src": "1578:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 78, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1585:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1578:8:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 86, - "nodeType": "IfStatement", - "src": "1574:63:0", - "trueBody": { - "id": 85, - "nodeType": "Block", - "src": "1588:49:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 81, - "name": "_relayer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 55, - "src": "1615:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - { - "argumentTypes": null, - "id": 82, - "name": "_fee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 57, - "src": "1625:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 80, - "name": "_safeErc20Transfer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 226, - "src": "1596:18:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,uint256)" - } - }, - "id": 83, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1596:34:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 84, - "nodeType": "ExpressionStatement", - "src": "1596:34:0" - } - ] - } - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 89, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 87, - "name": "_refund", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 59, - "src": "1647:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 88, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1657:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1647:11:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 111, - "nodeType": "IfStatement", - "src": "1643:203:0", - "trueBody": { - "id": 110, - "nodeType": "Block", - "src": "1660:186:0", - "statements": [ - { - "assignments": [ - 91, - null - ], - "declarations": [ - { - "constant": false, - "id": 91, - "name": "success", - "nodeType": "VariableDeclaration", - "scope": 110, - "src": "1669:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 90, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "1669:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - }, - null - ], - "id": 99, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "", - "id": 97, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1718:2:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "typeString": "literal_string \"\"" - }, - "value": "" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "typeString": "literal_string \"\"" - } - ], - "arguments": [ - { - "argumentTypes": null, - "id": 95, - "name": "_refund", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 59, - "src": "1709:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 92, - "name": "_recipient", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 53, - "src": "1687:10:0", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "id": 93, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "call", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1687:15:0", - "typeDescriptions": { - "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory) payable returns (bool,bytes memory)" - } - }, - "id": 94, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "value", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1687:21:0", - "typeDescriptions": { - "typeIdentifier": "t_function_setvalue_pure$_t_uint256_$returns$_t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value_$", - "typeString": "function (uint256) pure returns (function (bytes memory) payable returns (bool,bytes memory))" - } - }, - "id": 96, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1687:30:0", - "typeDescriptions": { - "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value", - "typeString": "function (bytes memory) payable returns (bool,bytes memory)" - } - }, - "id": 98, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1687:34:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", - "typeString": "tuple(bool,bytes memory)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1668:53:0" - }, - { - "condition": { - "argumentTypes": null, - "id": 101, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "1733:8:0", - "subExpression": { - "argumentTypes": null, - "id": 100, - "name": "success", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 91, - "src": "1734:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 109, - "nodeType": "IfStatement", - "src": "1729:111:0", - "trueBody": { - "id": 108, - "nodeType": "Block", - "src": "1743:97:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 105, - "name": "_refund", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 59, - "src": "1823:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 102, - "name": "_relayer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 55, - "src": "1805:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "id": 104, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "transfer", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1805:17:0", - "typeDescriptions": { - "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", - "typeString": "function (uint256)" - } - }, - "id": 106, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1805:26:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 107, - "nodeType": "ExpressionStatement", - "src": "1805:26:0" - } - ] - } - } - ] - } - } - ] - }, - "documentation": null, - "id": 113, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_processWithdraw", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 60, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 53, - "name": "_recipient", - "nodeType": "VariableDeclaration", - "scope": 113, - "src": "1329:26:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - "typeName": { - "id": 52, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1329:15:0", - "stateMutability": "payable", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 55, - "name": "_relayer", - "nodeType": "VariableDeclaration", - "scope": 113, - "src": "1357:24:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - "typeName": { - "id": 54, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1357:15:0", - "stateMutability": "payable", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 57, - "name": "_fee", - "nodeType": "VariableDeclaration", - "scope": 113, - "src": "1383:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 56, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1383:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 59, - "name": "_refund", - "nodeType": "VariableDeclaration", - "scope": 113, - "src": "1397:15:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 58, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1397:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1328:85:0" - }, - "returnParameters": { - "id": 61, - "nodeType": "ParameterList", - "parameters": [], - "src": "1423:0:0" - }, - "scope": 227, - "src": "1303:547:0", - "stateMutability": "nonpayable", - "superFunction": 1110, - "visibility": "internal" - }, - { - "body": { - "id": 170, - "nodeType": "Block", - "src": "1940:504:0", - "statements": [ - { - "assignments": [ - 123, - 125 - ], - "declarations": [ - { - "constant": false, - "id": 123, - "name": "success", - "nodeType": "VariableDeclaration", - "scope": 170, - "src": "1947:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 122, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "1947:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 125, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 170, - "src": "1961:17:0", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 124, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "1961:5:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 136, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30783233623837326464", - "id": 130, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2016:10:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_599290589_by_1", - "typeString": "int_const 599290589" - }, - "value": "0x23b872dd" - }, - { - "argumentTypes": null, - "id": 131, - "name": "_from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 115, - "src": "2047:5:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 132, - "name": "_to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 117, - "src": "2054:3:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 133, - "name": "_amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119, - "src": "2059:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_599290589_by_1", - "typeString": "int_const 599290589" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 128, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3247, - "src": "1993:3:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 129, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "encodeWithSelector", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1993:22:0", - "typeDescriptions": { - "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", - "typeString": "function (bytes4) pure returns (bytes memory)" - } - }, - "id": 134, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1993:74:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "expression": { - "argumentTypes": null, - "id": 126, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6, - "src": "1982:5:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 127, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "call", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1982:10:0", - "typeDescriptions": { - "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory) payable returns (bool,bytes memory)" - } - }, - "id": 135, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1982:86:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", - "typeString": "tuple(bool,bytes memory)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1946:122:0" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 138, - "name": "success", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2082:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "6e6f7420656e6f75676820616c6c6f77656420746f6b656e73", - "id": 139, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2091:27:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_b31c8a8545ea674c554dd2f6bad7d7bd1dfe923a25150b76350dc6970bf3ff5c", - "typeString": "literal_string \"not enough allowed tokens\"" - }, - "value": "not enough allowed tokens" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_b31c8a8545ea674c554dd2f6bad7d7bd1dfe923a25150b76350dc6970bf3ff5c", - "typeString": "literal_string \"not enough allowed tokens\"" - } - ], - "id": 137, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 3263, - 3264 - ], - "referencedDeclaration": 3264, - "src": "2074:7:0", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 140, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2074:45:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 141, - "nodeType": "ExpressionStatement", - "src": "2074:45:0" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 145, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 142, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 125, - "src": "2219:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 143, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2219:11:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 144, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2233:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2219:15:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 169, - "nodeType": "IfStatement", - "src": "2215:225:0", - "trueBody": { - "id": 168, - "nodeType": "Block", - "src": "2236:204:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 150, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 147, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 125, - "src": "2252:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 148, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2252:11:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "3332", - "id": 149, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2267:2:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_32_by_1", - "typeString": "int_const 32" - }, - "value": "32" - }, - "src": "2252:17:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "64617461206c656e6774682073686f756c64206265206569746865722030206f72203332206279746573", - "id": 151, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2271:44:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_22b4652a1c8fbdfc6305c7ee289e87caf6a45e5ae327ee8f67eb64ba36d62560", - "typeString": "literal_string \"data length should be either 0 or 32 bytes\"" - }, - "value": "data length should be either 0 or 32 bytes" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_22b4652a1c8fbdfc6305c7ee289e87caf6a45e5ae327ee8f67eb64ba36d62560", - "typeString": "literal_string \"data length should be either 0 or 32 bytes\"" - } - ], - "id": 146, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 3263, - 3264 - ], - "referencedDeclaration": 3264, - "src": "2244:7:0", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 152, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2244:72:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 153, - "nodeType": "ExpressionStatement", - "src": "2244:72:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 161, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 154, - "name": "success", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2324:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 157, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 125, - "src": "2345:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "id": 158, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2352:4:0", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bool_$", - "typeString": "type(bool)" - }, - "typeName": "bool" - } - ], - "id": 159, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2351:6:0", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bool_$", - "typeString": "type(bool)" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_type$_t_bool_$", - "typeString": "type(bool)" - } - ], - "expression": { - "argumentTypes": null, - "id": 155, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3247, - "src": "2334:3:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 156, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "decode", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2334:10:0", - "typeDescriptions": { - "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 160, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2334:24:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "2324:34:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 162, - "nodeType": "ExpressionStatement", - "src": "2324:34:0" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 164, - "name": "success", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2374:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "6e6f7420656e6f75676820616c6c6f77656420746f6b656e732e20546f6b656e2072657475726e732066616c73652e", - "id": 165, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2383:49:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_6cfae212a217874b58247660ff4d75d72aa825e8f2120480a7da09cf7efa221d", - "typeString": "literal_string \"not enough allowed tokens. Token returns false.\"" - }, - "value": "not enough allowed tokens. Token returns false." - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_6cfae212a217874b58247660ff4d75d72aa825e8f2120480a7da09cf7efa221d", - "typeString": "literal_string \"not enough allowed tokens. Token returns false.\"" - } - ], - "id": 163, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 3263, - 3264 - ], - "referencedDeclaration": 3264, - "src": "2366:7:0", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 166, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2366:67:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 167, - "nodeType": "ExpressionStatement", - "src": "2366:67:0" - } - ] - } - } - ] - }, - "documentation": null, - "id": 171, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_safeErc20TransferFrom", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 120, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 115, - "name": "_from", - "nodeType": "VariableDeclaration", - "scope": 171, - "src": "1886:13:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 114, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1886:7:0", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 117, - "name": "_to", - "nodeType": "VariableDeclaration", - "scope": 171, - "src": "1901:11:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 116, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1901:7:0", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 119, - "name": "_amount", - "nodeType": "VariableDeclaration", - "scope": 171, - "src": "1914:15:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 118, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1914:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1885:45:0" - }, - "returnParameters": { - "id": 121, - "nodeType": "ParameterList", - "parameters": [], - "src": "1940:0:0" - }, - "scope": 227, - "src": "1854:590:0", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 225, - "nodeType": "Block", - "src": "2515:477:0", - "statements": [ - { - "assignments": [ - 179, - 181 - ], - "declarations": [ - { - "constant": false, - "id": 179, - "name": "success", - "nodeType": "VariableDeclaration", - "scope": 225, - "src": "2522:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 178, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "2522:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 181, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 225, - "src": "2536:17:0", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 180, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "2536:5:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 191, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30786139303539636262", - "id": 186, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2591:10:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2835717307_by_1", - "typeString": "int_const 2835717307" - }, - "value": "0xa9059cbb" - }, - { - "argumentTypes": null, - "id": 187, - "name": "_to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 173, - "src": "2618:3:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 188, - "name": "_amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 175, - "src": "2623:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_2835717307_by_1", - "typeString": "int_const 2835717307" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 184, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3247, - "src": "2568:3:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 185, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "encodeWithSelector", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2568:22:0", - "typeDescriptions": { - "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", - "typeString": "function (bytes4) pure returns (bytes memory)" - } - }, - "id": 189, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2568:63:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "expression": { - "argumentTypes": null, - "id": 182, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6, - "src": "2557:5:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 183, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "call", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2557:10:0", - "typeDescriptions": { - "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory) payable returns (bool,bytes memory)" - } - }, - "id": 190, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2557:75:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", - "typeString": "tuple(bool,bytes memory)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2521:111:0" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 193, - "name": "success", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 179, - "src": "2646:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "6e6f7420656e6f75676820746f6b656e73", - "id": 194, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2655:19:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_73949bcdc07934e9395e82489bb22c4742e057960a2c090d38e53d68d3caf52a", - "typeString": "literal_string \"not enough tokens\"" - }, - "value": "not enough tokens" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_73949bcdc07934e9395e82489bb22c4742e057960a2c090d38e53d68d3caf52a", - "typeString": "literal_string \"not enough tokens\"" - } - ], - "id": 192, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 3263, - 3264 - ], - "referencedDeclaration": 3264, - "src": "2638:7:0", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 195, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2638:37:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 196, - "nodeType": "ExpressionStatement", - "src": "2638:37:0" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 200, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 197, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 181, - "src": "2775:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 198, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2775:11:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 199, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2789:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2775:15:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 224, - "nodeType": "IfStatement", - "src": "2771:217:0", - "trueBody": { - "id": 223, - "nodeType": "Block", - "src": "2792:196:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 205, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 202, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 181, - "src": "2808:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 203, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2808:11:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "3332", - "id": 204, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2823:2:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_32_by_1", - "typeString": "int_const 32" - }, - "value": "32" - }, - "src": "2808:17:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "64617461206c656e6774682073686f756c64206265206569746865722030206f72203332206279746573", - "id": 206, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2827:44:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_22b4652a1c8fbdfc6305c7ee289e87caf6a45e5ae327ee8f67eb64ba36d62560", - "typeString": "literal_string \"data length should be either 0 or 32 bytes\"" - }, - "value": "data length should be either 0 or 32 bytes" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_22b4652a1c8fbdfc6305c7ee289e87caf6a45e5ae327ee8f67eb64ba36d62560", - "typeString": "literal_string \"data length should be either 0 or 32 bytes\"" - } - ], - "id": 201, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 3263, - 3264 - ], - "referencedDeclaration": 3264, - "src": "2800:7:0", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 207, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2800:72:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 208, - "nodeType": "ExpressionStatement", - "src": "2800:72:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 216, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 209, - "name": "success", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 179, - "src": "2880:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 212, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 181, - "src": "2901:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "id": 213, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2908:4:0", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bool_$", - "typeString": "type(bool)" - }, - "typeName": "bool" - } - ], - "id": 214, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2907:6:0", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bool_$", - "typeString": "type(bool)" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_type$_t_bool_$", - "typeString": "type(bool)" - } - ], - "expression": { - "argumentTypes": null, - "id": 210, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3247, - "src": "2890:3:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 211, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "decode", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2890:10:0", - "typeDescriptions": { - "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 215, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2890:24:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "2880:34:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 217, - "nodeType": "ExpressionStatement", - "src": "2880:34:0" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 219, - "name": "success", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 179, - "src": "2930:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "6e6f7420656e6f75676820746f6b656e732e20546f6b656e2072657475726e732066616c73652e", - "id": 220, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2939:41:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_38fa5aabf87e9f42de902eb4d9022484dde7943d80702b79ba468e9fc08f5e5e", - "typeString": "literal_string \"not enough tokens. Token returns false.\"" - }, - "value": "not enough tokens. Token returns false." - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_38fa5aabf87e9f42de902eb4d9022484dde7943d80702b79ba468e9fc08f5e5e", - "typeString": "literal_string \"not enough tokens. Token returns false.\"" - } - ], - "id": 218, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 3263, - 3264 - ], - "referencedDeclaration": 3264, - "src": "2922:7:0", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 221, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2922:59:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 222, - "nodeType": "ExpressionStatement", - "src": "2922:59:0" - } - ] - } - } - ] - }, - "documentation": null, - "id": 226, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_safeErc20Transfer", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 176, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 173, - "name": "_to", - "nodeType": "VariableDeclaration", - "scope": 226, - "src": "2476:11:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 172, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2476:7:0", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 175, - "name": "_amount", - "nodeType": "VariableDeclaration", - "scope": 226, - "src": "2489:15:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 174, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2489:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2475:30:0" - }, - "returnParameters": { - "id": 177, - "nodeType": "ParameterList", - "parameters": [], - "src": "2515:0:0" - }, - "scope": 227, - "src": "2448:544:0", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - } - ], - "scope": 228, - "src": "805:2189:0" - } - ], - "src": "755:2240:0" - }, - "legacyAST": { - "attributes": { - "absolutePath": "/Users/brianli/dotfiles/tornado-core/contracts/ERC20Tornado.sol", - "exportedSymbols": { - "ERC20Tornado": [ - 227 - ] - } - }, - "children": [ - { - "attributes": { - "literals": [ - "solidity", - "0.5", - ".17" - ] - }, - "id": 1, - "name": "PragmaDirective", - "src": "755:23:0" - }, - { - "attributes": { - "SourceUnit": 1195, - "absolutePath": "/Users/brianli/dotfiles/tornado-core/contracts/Tornado.sol", - "file": "./Tornado.sol", - "scope": 228, - "symbolAliases": [ - null - ], - "unitAlias": "" - }, - "id": 2, - "name": "ImportDirective", - "src": "780:23:0" - }, - { - "attributes": { - "contractDependencies": [ - 694, - 1194, - 3245 - ], - "contractKind": "contract", - "documentation": null, - "fullyImplemented": true, - "linearizedBaseContracts": [ - 227, - 1194, - 3245, - 694 - ], - "name": "ERC20Tornado", - "scope": 228 - }, - "children": [ - { - "attributes": { - "arguments": null - }, - "children": [ - { - "attributes": { - "contractScope": null, - "name": "Tornado", - "referencedDeclaration": 1194, - "type": "contract Tornado" - }, - "id": 3, - "name": "UserDefinedTypeName", - "src": "830:7:0" - } - ], - "id": 4, - "name": "InheritanceSpecifier", - "src": "830:7:0" - }, - { - "attributes": { - "constant": false, - "name": "token", - "scope": 227, - "stateVariable": true, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "public" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 5, - "name": "ElementaryTypeName", - "src": "842:7:0" - } - ], - "id": 6, - "name": "VariableDeclaration", - "src": "842:20:0" - }, - { - "attributes": { - "documentation": null, - "implemented": true, - "isConstructor": true, - "kind": "constructor", - "name": "", - "scope": 227, - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "_verifier", - "scope": 30, - "stateVariable": false, - "storageLocation": "default", - "type": "contract IVerifier", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "contractScope": null, - "name": "IVerifier", - "referencedDeclaration": 891, - "type": "contract IVerifier" - }, - "id": 7, - "name": "UserDefinedTypeName", - "src": "884:9:0" - } - ], - "id": 8, - "name": "VariableDeclaration", - "src": "884:19:0" - }, - { - "attributes": { - "constant": false, - "name": "_denomination", - "scope": 30, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 9, - "name": "ElementaryTypeName", - "src": "909:7:0" - } - ], - "id": 10, - "name": "VariableDeclaration", - "src": "909:21:0" - }, - { - "attributes": { - "constant": false, - "name": "_merkleTreeHeight", - "scope": 30, - "stateVariable": false, - "storageLocation": "default", - "type": "uint32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint32", - "type": "uint32" - }, - "id": 11, - "name": "ElementaryTypeName", - "src": "936:6:0" - } - ], - "id": 12, - "name": "VariableDeclaration", - "src": "936:24:0" - }, - { - "attributes": { - "constant": false, - "name": "_operator", - "scope": 30, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 13, - "name": "ElementaryTypeName", - "src": "966:7:0" - } - ], - "id": 14, - "name": "VariableDeclaration", - "src": "966:17:0" - }, - { - "attributes": { - "constant": false, - "name": "_token", - "scope": 30, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 15, - "name": "ElementaryTypeName", - "src": "989:7:0" - } - ], - "id": 16, - "name": "VariableDeclaration", - "src": "989:14:0" - } - ], - "id": 17, - "name": "ParameterList", - "src": "878:129:0" - }, - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 24, - "name": "ParameterList", - "src": "1079:0:0" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1194, - "type": "type(contract Tornado)", - "value": "Tornado" - }, - "id": 18, - "name": "Identifier", - "src": "1008:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 8, - "type": "contract IVerifier", - "value": "_verifier" - }, - "id": 19, - "name": "Identifier", - "src": "1016:9:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 10, - "type": "uint256", - "value": "_denomination" - }, - "id": 20, - "name": "Identifier", - "src": "1027:13:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 12, - "type": "uint32", - "value": "_merkleTreeHeight" - }, - "id": 21, - "name": "Identifier", - "src": "1042:17:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 14, - "type": "address", - "value": "_operator" - }, - "id": 22, - "name": "Identifier", - "src": "1061:9:0" - } - ], - "id": 23, - "name": "ModifierInvocation", - "src": "1008:63:0" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 6, - "type": "address", - "value": "token" - }, - "id": 25, - "name": "Identifier", - "src": "1085:5:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 16, - "type": "address", - "value": "_token" - }, - "id": 26, - "name": "Identifier", - "src": "1093:6:0" - } - ], - "id": 27, - "name": "Assignment", - "src": "1085:14:0" - } - ], - "id": 28, - "name": "ExpressionStatement", - "src": "1085:14:0" - } - ], - "id": 29, - "name": "Block", - "src": "1079:25:0" - } - ], - "id": 30, - "name": "FunctionDefinition", - "src": "867:237:0" - }, - { - "attributes": { - "documentation": null, - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "_processDeposit", - "scope": 227, - "stateMutability": "nonpayable", - "superFunction": 1014, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 31, - "name": "ParameterList", - "src": "1132:2:0" - }, - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 32, - "name": "ParameterList", - "src": "1144:0:0" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_b14b0818f1fdc710b92ba7e1ce725992b43e47a5b220b1b890f352eeac2e1d5e", - "typeString": "literal_string \"ETH value is supposed to be 0 for ERC20 instance\"" - } - ], - "overloadedDeclarations": [ - 3263, - 3264 - ], - "referencedDeclaration": 3264, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 33, - "name": "Identifier", - "src": "1150:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "value", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 3260, - "type": "msg", - "value": "msg" - }, - "id": 34, - "name": "Identifier", - "src": "1158:3:0" - } - ], - "id": 35, - "name": "MemberAccess", - "src": "1158:9:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 36, - "name": "Literal", - "src": "1171:1:0" - } - ], - "id": 37, - "name": "BinaryOperation", - "src": "1158:14:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "4554482076616c756520697320737570706f73656420746f206265203020666f7220455243323020696e7374616e6365", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"ETH value is supposed to be 0 for ERC20 instance\"", - "value": "ETH value is supposed to be 0 for ERC20 instance" - }, - "id": 38, - "name": "Literal", - "src": "1174:50:0" - } - ], - "id": 39, - "name": "FunctionCall", - "src": "1150:75:0" - } - ], - "id": 40, - "name": "ExpressionStatement", - "src": "1150:75:0" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 171, - "type": "function (address,address,uint256)", - "value": "_safeErc20TransferFrom" - }, - "id": 41, - "name": "Identifier", - "src": "1231:22:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sender", - "referencedDeclaration": null, - "type": "address payable" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 3260, - "type": "msg", - "value": "msg" - }, - "id": 42, - "name": "Identifier", - "src": "1254:3:0" - } - ], - "id": 43, - "name": "MemberAccess", - "src": "1254:10:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "address", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_ERC20Tornado_$227", - "typeString": "contract ERC20Tornado" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(address)", - "value": "address" - }, - "id": 44, - "name": "ElementaryTypeNameExpression", - "src": "1266:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 3284, - "type": "contract ERC20Tornado", - "value": "this" - }, - "id": 45, - "name": "Identifier", - "src": "1274:4:0" - } - ], - "id": 46, - "name": "FunctionCall", - "src": "1266:13:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 897, - "type": "uint256", - "value": "denomination" - }, - "id": 47, - "name": "Identifier", - "src": "1281:12:0" - } - ], - "id": 48, - "name": "FunctionCall", - "src": "1231:63:0" - } - ], - "id": 49, - "name": "ExpressionStatement", - "src": "1231:63:0" - } - ], - "id": 50, - "name": "Block", - "src": "1144:155:0" - } - ], - "id": 51, - "name": "FunctionDefinition", - "src": "1108:191:0" - }, - { - "attributes": { - "documentation": null, - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "_processWithdraw", - "scope": 227, - "stateMutability": "nonpayable", - "superFunction": 1110, - "visibility": "internal" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "_recipient", - "scope": 113, - "stateVariable": false, - "storageLocation": "default", - "type": "address payable", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "payable", - "type": "address payable" - }, - "id": 52, - "name": "ElementaryTypeName", - "src": "1329:15:0" - } - ], - "id": 53, - "name": "VariableDeclaration", - "src": "1329:26:0" - }, - { - "attributes": { - "constant": false, - "name": "_relayer", - "scope": 113, - "stateVariable": false, - "storageLocation": "default", - "type": "address payable", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "payable", - "type": "address payable" - }, - "id": 54, - "name": "ElementaryTypeName", - "src": "1357:15:0" - } - ], - "id": 55, - "name": "VariableDeclaration", - "src": "1357:24:0" - }, - { - "attributes": { - "constant": false, - "name": "_fee", - "scope": 113, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 56, - "name": "ElementaryTypeName", - "src": "1383:7:0" - } - ], - "id": 57, - "name": "VariableDeclaration", - "src": "1383:12:0" - }, - { - "attributes": { - "constant": false, - "name": "_refund", - "scope": 113, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 58, - "name": "ElementaryTypeName", - "src": "1397:7:0" - } - ], - "id": 59, - "name": "VariableDeclaration", - "src": "1397:15:0" - } - ], - "id": 60, - "name": "ParameterList", - "src": "1328:85:0" - }, - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 61, - "name": "ParameterList", - "src": "1423:0:0" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_3189ced290ffd29dc422911cd3b29574f21c524c91f4b41e6abb0646c581cbff", - "typeString": "literal_string \"Incorrect refund amount received by the contract\"" - } - ], - "overloadedDeclarations": [ - 3263, - 3264 - ], - "referencedDeclaration": 3264, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 62, - "name": "Identifier", - "src": "1429:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "value", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 3260, - "type": "msg", - "value": "msg" - }, - "id": 63, - "name": "Identifier", - "src": "1437:3:0" - } - ], - "id": 64, - "name": "MemberAccess", - "src": "1437:9:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 59, - "type": "uint256", - "value": "_refund" - }, - "id": 65, - "name": "Identifier", - "src": "1450:7:0" - } - ], - "id": 66, - "name": "BinaryOperation", - "src": "1437:20:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "496e636f727265637420726566756e6420616d6f756e742072656365697665642062792074686520636f6e7472616374", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"Incorrect refund amount received by the contract\"", - "value": "Incorrect refund amount received by the contract" - }, - "id": 67, - "name": "Literal", - "src": "1459:50:0" - } - ], - "id": 68, - "name": "FunctionCall", - "src": "1429:81:0" - } - ], - "id": 69, - "name": "ExpressionStatement", - "src": "1429:81:0" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 226, - "type": "function (address,uint256)", - "value": "_safeErc20Transfer" - }, - "id": 70, - "name": "Identifier", - "src": "1517:18:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 53, - "type": "address payable", - "value": "_recipient" - }, - "id": 71, - "name": "Identifier", - "src": "1536:10:0" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "-", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 897, - "type": "uint256", - "value": "denomination" - }, - "id": 72, - "name": "Identifier", - "src": "1548:12:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 57, - "type": "uint256", - "value": "_fee" - }, - "id": 73, - "name": "Identifier", - "src": "1563:4:0" - } - ], - "id": 74, - "name": "BinaryOperation", - "src": "1548:19:0" - } - ], - "id": 75, - "name": "FunctionCall", - "src": "1517:51:0" - } - ], - "id": 76, - "name": "ExpressionStatement", - "src": "1517:51:0" - }, - { - "attributes": { - "falseBody": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": ">", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 57, - "type": "uint256", - "value": "_fee" - }, - "id": 77, - "name": "Identifier", - "src": "1578:4:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 78, - "name": "Literal", - "src": "1585:1:0" - } - ], - "id": 79, - "name": "BinaryOperation", - "src": "1578:8:0" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 226, - "type": "function (address,uint256)", - "value": "_safeErc20Transfer" - }, - "id": 80, - "name": "Identifier", - "src": "1596:18:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 55, - "type": "address payable", - "value": "_relayer" - }, - "id": 81, - "name": "Identifier", - "src": "1615:8:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 57, - "type": "uint256", - "value": "_fee" - }, - "id": 82, - "name": "Identifier", - "src": "1625:4:0" - } - ], - "id": 83, - "name": "FunctionCall", - "src": "1596:34:0" - } - ], - "id": 84, - "name": "ExpressionStatement", - "src": "1596:34:0" - } - ], - "id": 85, - "name": "Block", - "src": "1588:49:0" - } - ], - "id": 86, - "name": "IfStatement", - "src": "1574:63:0" - }, - { - "attributes": { - "falseBody": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": ">", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 59, - "type": "uint256", - "value": "_refund" - }, - "id": 87, - "name": "Identifier", - "src": "1647:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 88, - "name": "Literal", - "src": "1657:1:0" - } - ], - "id": 89, - "name": "BinaryOperation", - "src": "1647:11:0" - }, - { - "children": [ - { - "attributes": { - "assignments": [ - 91, - null - ] - }, - "children": [ - { - "attributes": { - "constant": false, - "name": "success", - "scope": 110, - "stateVariable": false, - "storageLocation": "default", - "type": "bool", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bool", - "type": "bool" - }, - "id": 90, - "name": "ElementaryTypeName", - "src": "1669:4:0" - } - ], - "id": 91, - "name": "VariableDeclaration", - "src": "1669:12:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "tuple(bool,bytes memory)", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "typeString": "literal_string \"\"" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "function (bytes memory) payable returns (bool,bytes memory)", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "value", - "referencedDeclaration": null, - "type": "function (uint256) pure returns (function (bytes memory) payable returns (bool,bytes memory))" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "call", - "referencedDeclaration": null, - "type": "function (bytes memory) payable returns (bool,bytes memory)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 53, - "type": "address payable", - "value": "_recipient" - }, - "id": 92, - "name": "Identifier", - "src": "1687:10:0" - } - ], - "id": 93, - "name": "MemberAccess", - "src": "1687:15:0" - } - ], - "id": 94, - "name": "MemberAccess", - "src": "1687:21:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 59, - "type": "uint256", - "value": "_refund" - }, - "id": 95, - "name": "Identifier", - "src": "1709:7:0" - } - ], - "id": 96, - "name": "FunctionCall", - "src": "1687:30:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"\"", - "value": "" - }, - "id": 97, - "name": "Literal", - "src": "1718:2:0" - } - ], - "id": 98, - "name": "FunctionCall", - "src": "1687:34:0" - } - ], - "id": 99, - "name": "VariableDeclarationStatement", - "src": "1668:53:0" - }, - { - "attributes": { - "falseBody": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!", - "prefix": true, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 91, - "type": "bool", - "value": "success" - }, - "id": 100, - "name": "Identifier", - "src": "1734:7:0" - } - ], - "id": 101, - "name": "UnaryOperation", - "src": "1733:8:0" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "transfer", - "referencedDeclaration": null, - "type": "function (uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 55, - "type": "address payable", - "value": "_relayer" - }, - "id": 102, - "name": "Identifier", - "src": "1805:8:0" - } - ], - "id": 104, - "name": "MemberAccess", - "src": "1805:17:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 59, - "type": "uint256", - "value": "_refund" - }, - "id": 105, - "name": "Identifier", - "src": "1823:7:0" - } - ], - "id": 106, - "name": "FunctionCall", - "src": "1805:26:0" - } - ], - "id": 107, - "name": "ExpressionStatement", - "src": "1805:26:0" - } - ], - "id": 108, - "name": "Block", - "src": "1743:97:0" - } - ], - "id": 109, - "name": "IfStatement", - "src": "1729:111:0" - } - ], - "id": 110, - "name": "Block", - "src": "1660:186:0" - } - ], - "id": 111, - "name": "IfStatement", - "src": "1643:203:0" - } - ], - "id": 112, - "name": "Block", - "src": "1423:427:0" - } - ], - "id": 113, - "name": "FunctionDefinition", - "src": "1303:547:0" - }, - { - "attributes": { - "documentation": null, - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "_safeErc20TransferFrom", - "scope": 227, - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "_from", - "scope": 171, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 114, - "name": "ElementaryTypeName", - "src": "1886:7:0" - } - ], - "id": 115, - "name": "VariableDeclaration", - "src": "1886:13:0" - }, - { - "attributes": { - "constant": false, - "name": "_to", - "scope": 171, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 116, - "name": "ElementaryTypeName", - "src": "1901:7:0" - } - ], - "id": 117, - "name": "VariableDeclaration", - "src": "1901:11:0" - }, - { - "attributes": { - "constant": false, - "name": "_amount", - "scope": 171, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 118, - "name": "ElementaryTypeName", - "src": "1914:7:0" - } - ], - "id": 119, - "name": "VariableDeclaration", - "src": "1914:15:0" - } - ], - "id": 120, - "name": "ParameterList", - "src": "1885:45:0" - }, - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 121, - "name": "ParameterList", - "src": "1940:0:0" - }, - { - "children": [ - { - "attributes": { - "assignments": [ - 123, - 125 - ] - }, - "children": [ - { - "attributes": { - "constant": false, - "name": "success", - "scope": 170, - "stateVariable": false, - "storageLocation": "default", - "type": "bool", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bool", - "type": "bool" - }, - "id": 122, - "name": "ElementaryTypeName", - "src": "1947:4:0" - } - ], - "id": 123, - "name": "VariableDeclaration", - "src": "1947:12:0" - }, - { - "attributes": { - "constant": false, - "name": "data", - "scope": 170, - "stateVariable": false, - "storageLocation": "memory", - "type": "bytes", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes", - "type": "bytes" - }, - "id": 124, - "name": "ElementaryTypeName", - "src": "1961:5:0" - } - ], - "id": 125, - "name": "VariableDeclaration", - "src": "1961:17:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "tuple(bool,bytes memory)", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "call", - "referencedDeclaration": null, - "type": "function (bytes memory) payable returns (bool,bytes memory)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 6, - "type": "address", - "value": "token" - }, - "id": 126, - "name": "Identifier", - "src": "1982:5:0" - } - ], - "id": 127, - "name": "MemberAccess", - "src": "1982:10:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "bytes memory", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_599290589_by_1", - "typeString": "int_const 599290589" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "member_name": "encodeWithSelector", - "referencedDeclaration": null, - "type": "function (bytes4) pure returns (bytes memory)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 3247, - "type": "abi", - "value": "abi" - }, - "id": 128, - "name": "Identifier", - "src": "1993:3:0" - } - ], - "id": 129, - "name": "MemberAccess", - "src": "1993:22:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30783233623837326464", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 599290589", - "value": "0x23b872dd" - }, - "id": 130, - "name": "Literal", - "src": "2016:10:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 115, - "type": "address", - "value": "_from" - }, - "id": 131, - "name": "Identifier", - "src": "2047:5:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 117, - "type": "address", - "value": "_to" - }, - "id": 132, - "name": "Identifier", - "src": "2054:3:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 119, - "type": "uint256", - "value": "_amount" - }, - "id": 133, - "name": "Identifier", - "src": "2059:7:0" - } - ], - "id": 134, - "name": "FunctionCall", - "src": "1993:74:0" - } - ], - "id": 135, - "name": "FunctionCall", - "src": "1982:86:0" - } - ], - "id": 136, - "name": "VariableDeclarationStatement", - "src": "1946:122:0" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_b31c8a8545ea674c554dd2f6bad7d7bd1dfe923a25150b76350dc6970bf3ff5c", - "typeString": "literal_string \"not enough allowed tokens\"" - } - ], - "overloadedDeclarations": [ - 3263, - 3264 - ], - "referencedDeclaration": 3264, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 137, - "name": "Identifier", - "src": "2074:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 123, - "type": "bool", - "value": "success" - }, - "id": 138, - "name": "Identifier", - "src": "2082:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "6e6f7420656e6f75676820616c6c6f77656420746f6b656e73", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"not enough allowed tokens\"", - "value": "not enough allowed tokens" - }, - "id": 139, - "name": "Literal", - "src": "2091:27:0" - } - ], - "id": 140, - "name": "FunctionCall", - "src": "2074:45:0" - } - ], - "id": 141, - "name": "ExpressionStatement", - "src": "2074:45:0" - }, - { - "attributes": { - "falseBody": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": ">", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "length", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 125, - "type": "bytes memory", - "value": "data" - }, - "id": 142, - "name": "Identifier", - "src": "2219:4:0" - } - ], - "id": 143, - "name": "MemberAccess", - "src": "2219:11:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 144, - "name": "Literal", - "src": "2233:1:0" - } - ], - "id": 145, - "name": "BinaryOperation", - "src": "2219:15:0" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_22b4652a1c8fbdfc6305c7ee289e87caf6a45e5ae327ee8f67eb64ba36d62560", - "typeString": "literal_string \"data length should be either 0 or 32 bytes\"" - } - ], - "overloadedDeclarations": [ - 3263, - 3264 - ], - "referencedDeclaration": 3264, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 146, - "name": "Identifier", - "src": "2244:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "length", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 125, - "type": "bytes memory", - "value": "data" - }, - "id": 147, - "name": "Identifier", - "src": "2252:4:0" - } - ], - "id": 148, - "name": "MemberAccess", - "src": "2252:11:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "3332", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 32", - "value": "32" - }, - "id": 149, - "name": "Literal", - "src": "2267:2:0" - } - ], - "id": 150, - "name": "BinaryOperation", - "src": "2252:17:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "64617461206c656e6774682073686f756c64206265206569746865722030206f72203332206279746573", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"data length should be either 0 or 32 bytes\"", - "value": "data length should be either 0 or 32 bytes" - }, - "id": 151, - "name": "Literal", - "src": "2271:44:0" - } - ], - "id": 152, - "name": "FunctionCall", - "src": "2244:72:0" - } - ], - "id": 153, - "name": "ExpressionStatement", - "src": "2244:72:0" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 123, - "type": "bool", - "value": "success" - }, - "id": 154, - "name": "Identifier", - "src": "2324:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "bool", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_type$_t_bool_$", - "typeString": "type(bool)" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "member_name": "decode", - "referencedDeclaration": null, - "type": "function () pure" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 3247, - "type": "abi", - "value": "abi" - }, - "id": 155, - "name": "Identifier", - "src": "2334:3:0" - } - ], - "id": 156, - "name": "MemberAccess", - "src": "2334:10:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 125, - "type": "bytes memory", - "value": "data" - }, - "id": 157, - "name": "Identifier", - "src": "2345:4:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(bool)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(bool)", - "value": "bool" - }, - "id": 158, - "name": "ElementaryTypeNameExpression", - "src": "2352:4:0" - } - ], - "id": 159, - "name": "TupleExpression", - "src": "2351:6:0" - } - ], - "id": 160, - "name": "FunctionCall", - "src": "2334:24:0" - } - ], - "id": 161, - "name": "Assignment", - "src": "2324:34:0" - } - ], - "id": 162, - "name": "ExpressionStatement", - "src": "2324:34:0" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_6cfae212a217874b58247660ff4d75d72aa825e8f2120480a7da09cf7efa221d", - "typeString": "literal_string \"not enough allowed tokens. Token returns false.\"" - } - ], - "overloadedDeclarations": [ - 3263, - 3264 - ], - "referencedDeclaration": 3264, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 163, - "name": "Identifier", - "src": "2366:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 123, - "type": "bool", - "value": "success" - }, - "id": 164, - "name": "Identifier", - "src": "2374:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "6e6f7420656e6f75676820616c6c6f77656420746f6b656e732e20546f6b656e2072657475726e732066616c73652e", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"not enough allowed tokens. Token returns false.\"", - "value": "not enough allowed tokens. Token returns false." - }, - "id": 165, - "name": "Literal", - "src": "2383:49:0" - } - ], - "id": 166, - "name": "FunctionCall", - "src": "2366:67:0" - } - ], - "id": 167, - "name": "ExpressionStatement", - "src": "2366:67:0" - } - ], - "id": 168, - "name": "Block", - "src": "2236:204:0" - } - ], - "id": 169, - "name": "IfStatement", - "src": "2215:225:0" - } - ], - "id": 170, - "name": "Block", - "src": "1940:504:0" - } - ], - "id": 171, - "name": "FunctionDefinition", - "src": "1854:590:0" - }, - { - "attributes": { - "documentation": null, - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "_safeErc20Transfer", - "scope": 227, - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "_to", - "scope": 226, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 172, - "name": "ElementaryTypeName", - "src": "2476:7:0" - } - ], - "id": 173, - "name": "VariableDeclaration", - "src": "2476:11:0" - }, - { - "attributes": { - "constant": false, - "name": "_amount", - "scope": 226, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 174, - "name": "ElementaryTypeName", - "src": "2489:7:0" - } - ], - "id": 175, - "name": "VariableDeclaration", - "src": "2489:15:0" - } - ], - "id": 176, - "name": "ParameterList", - "src": "2475:30:0" - }, - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 177, - "name": "ParameterList", - "src": "2515:0:0" - }, - { - "children": [ - { - "attributes": { - "assignments": [ - 179, - 181 - ] - }, - "children": [ - { - "attributes": { - "constant": false, - "name": "success", - "scope": 225, - "stateVariable": false, - "storageLocation": "default", - "type": "bool", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bool", - "type": "bool" - }, - "id": 178, - "name": "ElementaryTypeName", - "src": "2522:4:0" - } - ], - "id": 179, - "name": "VariableDeclaration", - "src": "2522:12:0" - }, - { - "attributes": { - "constant": false, - "name": "data", - "scope": 225, - "stateVariable": false, - "storageLocation": "memory", - "type": "bytes", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes", - "type": "bytes" - }, - "id": 180, - "name": "ElementaryTypeName", - "src": "2536:5:0" - } - ], - "id": 181, - "name": "VariableDeclaration", - "src": "2536:17:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "tuple(bool,bytes memory)", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "call", - "referencedDeclaration": null, - "type": "function (bytes memory) payable returns (bool,bytes memory)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 6, - "type": "address", - "value": "token" - }, - "id": 182, - "name": "Identifier", - "src": "2557:5:0" - } - ], - "id": 183, - "name": "MemberAccess", - "src": "2557:10:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "bytes memory", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_2835717307_by_1", - "typeString": "int_const 2835717307" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "member_name": "encodeWithSelector", - "referencedDeclaration": null, - "type": "function (bytes4) pure returns (bytes memory)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 3247, - "type": "abi", - "value": "abi" - }, - "id": 184, - "name": "Identifier", - "src": "2568:3:0" - } - ], - "id": 185, - "name": "MemberAccess", - "src": "2568:22:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30786139303539636262", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 2835717307", - "value": "0xa9059cbb" - }, - "id": 186, - "name": "Literal", - "src": "2591:10:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 173, - "type": "address", - "value": "_to" - }, - "id": 187, - "name": "Identifier", - "src": "2618:3:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 175, - "type": "uint256", - "value": "_amount" - }, - "id": 188, - "name": "Identifier", - "src": "2623:7:0" - } - ], - "id": 189, - "name": "FunctionCall", - "src": "2568:63:0" - } - ], - "id": 190, - "name": "FunctionCall", - "src": "2557:75:0" - } - ], - "id": 191, - "name": "VariableDeclarationStatement", - "src": "2521:111:0" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_73949bcdc07934e9395e82489bb22c4742e057960a2c090d38e53d68d3caf52a", - "typeString": "literal_string \"not enough tokens\"" - } - ], - "overloadedDeclarations": [ - 3263, - 3264 - ], - "referencedDeclaration": 3264, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 192, - "name": "Identifier", - "src": "2638:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 179, - "type": "bool", - "value": "success" - }, - "id": 193, - "name": "Identifier", - "src": "2646:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "6e6f7420656e6f75676820746f6b656e73", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"not enough tokens\"", - "value": "not enough tokens" - }, - "id": 194, - "name": "Literal", - "src": "2655:19:0" - } - ], - "id": 195, - "name": "FunctionCall", - "src": "2638:37:0" - } - ], - "id": 196, - "name": "ExpressionStatement", - "src": "2638:37:0" - }, - { - "attributes": { - "falseBody": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": ">", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "length", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 181, - "type": "bytes memory", - "value": "data" - }, - "id": 197, - "name": "Identifier", - "src": "2775:4:0" - } - ], - "id": 198, - "name": "MemberAccess", - "src": "2775:11:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 199, - "name": "Literal", - "src": "2789:1:0" - } - ], - "id": 200, - "name": "BinaryOperation", - "src": "2775:15:0" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_22b4652a1c8fbdfc6305c7ee289e87caf6a45e5ae327ee8f67eb64ba36d62560", - "typeString": "literal_string \"data length should be either 0 or 32 bytes\"" - } - ], - "overloadedDeclarations": [ - 3263, - 3264 - ], - "referencedDeclaration": 3264, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 201, - "name": "Identifier", - "src": "2800:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "length", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 181, - "type": "bytes memory", - "value": "data" - }, - "id": 202, - "name": "Identifier", - "src": "2808:4:0" - } - ], - "id": 203, - "name": "MemberAccess", - "src": "2808:11:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "3332", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 32", - "value": "32" - }, - "id": 204, - "name": "Literal", - "src": "2823:2:0" - } - ], - "id": 205, - "name": "BinaryOperation", - "src": "2808:17:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "64617461206c656e6774682073686f756c64206265206569746865722030206f72203332206279746573", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"data length should be either 0 or 32 bytes\"", - "value": "data length should be either 0 or 32 bytes" - }, - "id": 206, - "name": "Literal", - "src": "2827:44:0" - } - ], - "id": 207, - "name": "FunctionCall", - "src": "2800:72:0" - } - ], - "id": 208, - "name": "ExpressionStatement", - "src": "2800:72:0" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 179, - "type": "bool", - "value": "success" - }, - "id": 209, - "name": "Identifier", - "src": "2880:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "bool", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_type$_t_bool_$", - "typeString": "type(bool)" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "member_name": "decode", - "referencedDeclaration": null, - "type": "function () pure" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 3247, - "type": "abi", - "value": "abi" - }, - "id": 210, - "name": "Identifier", - "src": "2890:3:0" - } - ], - "id": 211, - "name": "MemberAccess", - "src": "2890:10:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 181, - "type": "bytes memory", - "value": "data" - }, - "id": 212, - "name": "Identifier", - "src": "2901:4:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(bool)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(bool)", - "value": "bool" - }, - "id": 213, - "name": "ElementaryTypeNameExpression", - "src": "2908:4:0" - } - ], - "id": 214, - "name": "TupleExpression", - "src": "2907:6:0" - } - ], - "id": 215, - "name": "FunctionCall", - "src": "2890:24:0" - } - ], - "id": 216, - "name": "Assignment", - "src": "2880:34:0" - } - ], - "id": 217, - "name": "ExpressionStatement", - "src": "2880:34:0" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_38fa5aabf87e9f42de902eb4d9022484dde7943d80702b79ba468e9fc08f5e5e", - "typeString": "literal_string \"not enough tokens. Token returns false.\"" - } - ], - "overloadedDeclarations": [ - 3263, - 3264 - ], - "referencedDeclaration": 3264, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 218, - "name": "Identifier", - "src": "2922:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 179, - "type": "bool", - "value": "success" - }, - "id": 219, - "name": "Identifier", - "src": "2930:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "6e6f7420656e6f75676820746f6b656e732e20546f6b656e2072657475726e732066616c73652e", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"not enough tokens. Token returns false.\"", - "value": "not enough tokens. Token returns false." - }, - "id": 220, - "name": "Literal", - "src": "2939:41:0" - } - ], - "id": 221, - "name": "FunctionCall", - "src": "2922:59:0" - } - ], - "id": 222, - "name": "ExpressionStatement", - "src": "2922:59:0" - } - ], - "id": 223, - "name": "Block", - "src": "2792:196:0" - } - ], - "id": 224, - "name": "IfStatement", - "src": "2771:217:0" - } - ], - "id": 225, - "name": "Block", - "src": "2515:477:0" - } - ], - "id": 226, - "name": "FunctionDefinition", - "src": "2448:544:0" - } - ], - "id": 227, - "name": "ContractDefinition", - "src": "805:2189:0" - } - ], - "id": 228, - "name": "SourceUnit", - "src": "755:2240:0" - }, - "compiler": { - "name": "solc", - "version": "0.5.17+commit.d19bba13.Emscripten.clang" - }, - "networks": { - "42220": { - "events": {}, - "links": { - "Hasher": "0xD75035293f552aB5c33483f321DBf0DfA1C7c71d" - }, - "address": "0x40DDBB4C0a0d3BD0835CA510cC941549cE2B7485", - "transactionHash": "0xb38b7b057d4e4c9576c8c4bd13856b870b2bc89d51b12464c0576f7888bc44d2" - } - }, - "schemaVersion": "3.3.4", - "updatedAt": "2021-03-22T02:50:16.065Z", - "networkType": "ethereum", - "devdoc": { - "methods": { - "changeOperator(address)": { - "details": "operator can change his address " - }, - "deposit(bytes32)": { - "details": "Deposit funds into the contract. The caller must send (for ETH) or approve (for ERC20) value equal to or `denomination` of this instance.", - "params": { - "_commitment": "the note commitment, which is PedersenHash(nullifier + secret)" - } - }, - "getLastRoot()": { - "details": "Returns the last root" - }, - "hashLeftRight(bytes32,bytes32)": { - "details": "Hash 2 tree leaves, returns MiMC(_left, _right)" - }, - "isKnownRoot(bytes32)": { - "details": "Whether the root is present in the root history" - }, - "isSpent(bytes32)": { - "details": "whether a note is already spent " - }, - "isSpentArray(bytes32[])": { - "details": "whether an array of notes is already spent " - }, - "updateVerifier(address)": { - "details": "allow operator to update SNARK verification keys. This is needed to update keys after the final trusted setup ceremony is held. After that operator rights are supposed to be transferred to zero address" - }, - "withdraw(bytes,bytes32,bytes32,address,address,uint256,uint256)": { - "details": "Withdraw a deposit from the contract. `proof` is a zkSNARK proof data, and input is an array of circuit public inputs `input` array consists of: - merkle root of all deposits in the contract - hash of unique deposit nullifier to prevent double spends - the recipient of funds - optional fee that goes to the transaction sender (usually a relay)" - } - } - }, - "userdoc": { - "methods": {} - } -} \ No newline at end of file diff --git a/client/contracts/CELOTornado.4.json b/client/contracts/CELOTornado.4.json deleted file mode 100644 index 34572e9..0000000 --- a/client/contracts/CELOTornado.4.json +++ /dev/null @@ -1,7219 +0,0 @@ -{ - "contractName": "ERC20Tornado", - "abi": [ - { - "inputs": [ - { - "internalType": "contract IVerifier", - "name": "_verifier", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_denomination", - "type": "uint256" - }, - { - "internalType": "uint32", - "name": "_merkleTreeHeight", - "type": "uint32" - }, - { - "internalType": "address", - "name": "_operator", - "type": "address" - }, - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "commitment", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "uint32", - "name": "leafIndex", - "type": "uint32" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - } - ], - "name": "Deposit", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "nullifierHash", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "relayer", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "fee", - "type": "uint256" - } - ], - "name": "Withdrawal", - "type": "event" - }, - { - "constant": true, - "inputs": [], - "name": "FIELD_SIZE", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "ROOT_HISTORY_SIZE", - "outputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "ZERO_VALUE", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_newOperator", - "type": "address" - } - ], - "name": "changeOperator", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "name": "commitments", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "currentRootIndex", - "outputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "denomination", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "bytes32", - "name": "_commitment", - "type": "bytes32" - } - ], - "name": "deposit", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "filledSubtrees", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getLastRoot", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "bytes32", - "name": "_left", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "_right", - "type": "bytes32" - } - ], - "name": "hashLeftRight", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "payable": false, - "stateMutability": "pure", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "bytes32", - "name": "_root", - "type": "bytes32" - } - ], - "name": "isKnownRoot", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "bytes32", - "name": "_nullifierHash", - "type": "bytes32" - } - ], - "name": "isSpent", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "bytes32[]", - "name": "_nullifierHashes", - "type": "bytes32[]" - } - ], - "name": "isSpentArray", - "outputs": [ - { - "internalType": "bool[]", - "name": "spent", - "type": "bool[]" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "levels", - "outputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "nextIndex", - "outputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "name": "nullifierHashes", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "operator", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "roots", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "token", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_newVerifier", - "type": "address" - } - ], - "name": "updateVerifier", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "verifier", - "outputs": [ - { - "internalType": "contract IVerifier", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "bytes", - "name": "_proof", - "type": "bytes" - }, - { - "internalType": "bytes32", - "name": "_root", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "_nullifierHash", - "type": "bytes32" - }, - { - "internalType": "address payable", - "name": "_recipient", - "type": "address" - }, - { - "internalType": "address payable", - "name": "_relayer", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_fee", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_refund", - "type": "uint256" - } - ], - "name": "withdraw", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "zeros", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - } - ], - "metadata": "{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVerifier\",\"name\":\"_verifier\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_denomination\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_merkleTreeHeight\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"leafIndex\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"nullifierHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"Withdrawal\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"FIELD_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"ROOT_HISTORY_SIZE\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"ZERO_VALUE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newOperator\",\"type\":\"address\"}],\"name\":\"changeOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"commitments\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"currentRootIndex\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"denomination\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_commitment\",\"type\":\"bytes32\"}],\"name\":\"deposit\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"filledSubtrees\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getLastRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_left\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_right\",\"type\":\"bytes32\"}],\"name\":\"hashLeftRight\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_root\",\"type\":\"bytes32\"}],\"name\":\"isKnownRoot\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_nullifierHash\",\"type\":\"bytes32\"}],\"name\":\"isSpent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"_nullifierHashes\",\"type\":\"bytes32[]\"}],\"name\":\"isSpentArray\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"spent\",\"type\":\"bool[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"levels\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"nextIndex\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"nullifierHashes\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"operator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"roots\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newVerifier\",\"type\":\"address\"}],\"name\":\"updateVerifier\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"verifier\",\"outputs\":[{\"internalType\":\"contract IVerifier\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_proof\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"_root\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_nullifierHash\",\"type\":\"bytes32\"},{\"internalType\":\"address payable\",\"name\":\"_recipient\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"_relayer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_refund\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"zeros\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"changeOperator(address)\":{\"details\":\"operator can change his address \"},\"deposit(bytes32)\":{\"details\":\"Deposit funds into the contract. The caller must send (for ETH) or approve (for ERC20) value equal to or `denomination` of this instance.\",\"params\":{\"_commitment\":\"the note commitment, which is PedersenHash(nullifier + secret)\"}},\"getLastRoot()\":{\"details\":\"Returns the last root\"},\"hashLeftRight(bytes32,bytes32)\":{\"details\":\"Hash 2 tree leaves, returns MiMC(_left, _right)\"},\"isKnownRoot(bytes32)\":{\"details\":\"Whether the root is present in the root history\"},\"isSpent(bytes32)\":{\"details\":\"whether a note is already spent \"},\"isSpentArray(bytes32[])\":{\"details\":\"whether an array of notes is already spent \"},\"updateVerifier(address)\":{\"details\":\"allow operator to update SNARK verification keys. This is needed to update keys after the final trusted setup ceremony is held. After that operator rights are supposed to be transferred to zero address\"},\"withdraw(bytes,bytes32,bytes32,address,address,uint256,uint256)\":{\"details\":\"Withdraw a deposit from the contract. `proof` is a zkSNARK proof data, and input is an array of circuit public inputs `input` array consists of: - merkle root of all deposits in the contract - hash of unique deposit nullifier to prevent double spends - the recipient of funds - optional fee that goes to the transaction sender (usually a relay)\"}}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/Users/brianli/dotfiles/tornado-core/contracts/ERC20Tornado.sol\":\"ERC20Tornado\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/brianli/dotfiles/tornado-core/contracts/ERC20Tornado.sol\":{\"keccak256\":\"0x708938fd083239d2e9cd17e457cf25a2150bb900082fad58af8b689f786aef9c\",\"urls\":[\"bzz-raw://f345afd62002f883c60c032cd0cb051663dc8a3e59a52bf44109633b96cb3685\",\"dweb:/ipfs/QmNwjnH2uyNoq9GPjNUv6Z1mgtiR5rY3K7EHY74RBjXMpw\"]},\"/Users/brianli/dotfiles/tornado-core/contracts/MerkleTreeWithHistory.sol\":{\"keccak256\":\"0x671cc9268dd70c47d18795f7e37fc4df11763fcbcca026edcf163f4239036254\",\"urls\":[\"bzz-raw://9c36a207ed164b60a514eae89bfb15e5b4de4b346c4a89a7a1cb50a940bc699d\",\"dweb:/ipfs/QmbPEqFJAGMpYduLEFsbPazyBsYWcjRtpth8X26wCHALwk\"]},\"/Users/brianli/dotfiles/tornado-core/contracts/Tornado.sol\":{\"keccak256\":\"0x09c70432243629ef44697fd3d0ca89d3578e2b1c9f46d90757371edb163c14da\",\"urls\":[\"bzz-raw://d2a2c9fa85c32cb15793282792cd25c71804a10aa5a911e41f3bcd07f5df117e\",\"dweb:/ipfs/QmeQ1s6ypNnP7fossR4x9svuuLjcSBtQ5spUTmWGZY5Ljr\"]},\"@openzeppelin/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0xb63221b23818d622bfd83d18e0968307e4fcb7a35536bdceded76e1cf8349acd\",\"urls\":[\"bzz-raw://44e1e8c22362c4708a8c3362735f1465f5b05e2f7315e16c7010d694ce019d73\",\"dweb:/ipfs/QmWj9g8X1hxkXRre2kwkEjLBetjuzmSbWHD81bsSojnBkS\"]}},\"version\":1}", - "bytecode": "0x6080604052600380546001600160401b03191690553480156200002157600080fd5b5060405162001d1238038062001d12833981810160405260a08110156200004757600080fd5b50805160208201516040830151606084015160809094015192939192909190848484848163ffffffff8116620000af5760405162461bcd60e51b815260040180806020018281038252602781526020018062001c896027913960400191505060405180910390fd5b60208163ffffffff1610620000f65760405162461bcd60e51b815260040180806020018281038252602281526020018062001cd06022913960400191505060405180910390fd5b6000805463ffffffff191663ffffffff83161781556002805460018181019092557f2fe54c60d3acabf3343a35b6eba15db4821b340f76e741e2249685ed4899af6c60008051602062001c48833981519152909101819055815480830183559282905260008051602062001cf28339815191529092018290555b60005463ffffffff9081169082161015620001e4576200019a82806001600160e01b036200029f16565b60028054600181810190925560008051602062001c488339815191520182905580548082018255600082905260008051602062001cf2833981519152018290559092500162000170565b50620001fa81806001600160e01b036200029f16565b60046000015550506068805460ff19166001179055826200024d5760405162461bcd60e51b815260040180806020018281038252602581526020018062001c236025913960400191505060405180910390fd5b606c80546001600160a01b039586166001600160a01b031991821617909155606d80549286169282169290921790915560699290925550606e8054939092169216919091179055506200048c92505050565b600060008051602062001cb0833981519152831062000305576040805162461bcd60e51b815260206004820181905260248201527f5f6c6566742073686f756c6420626520696e7369646520746865206669656c64604482015290519081900360640190fd5b60008051602062001cb08339815191528210620003545760405162461bcd60e51b815260040180806020018281038252602181526020018062001c686021913960400191505060405180910390fd5b6040805163f47d33b560e01b81526004810185905260006024820181905282518693919273__Hasher________________________________9263f47d33b592604480840193829003018186803b158015620003af57600080fd5b505af4158015620003c4573d6000803e3d6000fd5b505050506040513d6040811015620003db57600080fd5b508051602090910151909250905060008051602062001cb0833981519152848308915073__Hasher________________________________63f47d33b583836040518363ffffffff1660e01b81526004018083815260200182815260200192505050604080518083038186803b1580156200045557600080fd5b505af41580156200046a573d6000803e3d6000fd5b505050506040513d60408110156200048157600080fd5b505195945050505050565b611787806200049c6000396000f3fe60806040526004361061014b5760003560e01c806397fc007c116100b6578063e5285dcc1161006f578063e5285dcc14610514578063e82955881461053e578063ec73295914610568578063f178e47c1461057d578063fc0c546a146105a7578063fc7e9c6f146105bc5761014b565b806397fc007c146103a55780639fa12d0b146103d8578063b214faa5146104a3578063ba70f757146104c0578063c2b40ae4146104d5578063cd87a3b4146104ff5761014b565b80634ecf518b116101085780634ecf518b146102e4578063570ca735146103125780636d9833e314610327578063839df945146103515780638bca6d161461037b57806390eeb02b146103905761014b565b806306394c9b1461015057806317cc915c1461018557806321a0adb6146101c35780632b7ac3f31461025c57806338bf282e1461028d578063414a37ba146102cf575b600080fd5b34801561015c57600080fd5b506101836004803603602081101561017357600080fd5b50356001600160a01b03166105d1565b005b34801561019157600080fd5b506101af600480360360208110156101a857600080fd5b503561063c565b604080519115158252519081900360200190f35b610183600480360360e08110156101d957600080fd5b810190602081018135600160201b8111156101f357600080fd5b82018360208201111561020557600080fd5b803590602001918460018302840111600160201b8311171561022657600080fd5b91935091508035906020810135906001600160a01b03604082013581169160608101359091169060808101359060a00135610651565b34801561026857600080fd5b5061027161099e565b604080516001600160a01b039092168252519081900360200190f35b34801561029957600080fd5b506102bd600480360360408110156102b057600080fd5b50803590602001356109ad565b60408051918252519081900360200190f35b3480156102db57600080fd5b506102bd610b8e565b3480156102f057600080fd5b506102f9610ba0565b6040805163ffffffff9092168252519081900360200190f35b34801561031e57600080fd5b50610271610bac565b34801561033357600080fd5b506101af6004803603602081101561034a57600080fd5b5035610bbb565b34801561035d57600080fd5b506101af6004803603602081101561037457600080fd5b5035610c2e565b34801561038757600080fd5b506102bd610c43565b34801561039c57600080fd5b506102f9610c49565b3480156103b157600080fd5b50610183600480360360208110156103c857600080fd5b50356001600160a01b0316610c55565b3480156103e457600080fd5b50610453600480360360208110156103fb57600080fd5b810190602081018135600160201b81111561041557600080fd5b82018360208201111561042757600080fd5b803590602001918460208302840111600160201b8311171561044857600080fd5b509092509050610cc0565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561048f578181015183820152602001610477565b505050509050019250505060405180910390f35b610183600480360360208110156104b957600080fd5b5035610d48565b3480156104cc57600080fd5b506102bd610e75565b3480156104e157600080fd5b506102bd600480360360208110156104f857600080fd5b5035610e95565b34801561050b57600080fd5b506102f9610ea9565b34801561052057600080fd5b506101af6004803603602081101561053757600080fd5b5035610eae565b34801561054a57600080fd5b506102bd6004803603602081101561056157600080fd5b5035610ec3565b34801561057457600080fd5b506102bd610ee1565b34801561058957600080fd5b506102bd600480360360208110156105a057600080fd5b5035610f05565b3480156105b357600080fd5b50610271610f12565b3480156105c857600080fd5b506102f9610f21565b606d546001600160a01b0316331461061a5760405162461bcd60e51b815260040180806020018281038252602581526020018061172e6025913960400191505060405180910390fd5b606d80546001600160a01b0319166001600160a01b0392909216919091179055565b606a6020526000908152604090205460ff1681565b60685460ff166106a8576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6068805460ff19169055606954821115610709576040805162461bcd60e51b815260206004820152601a60248201527f4665652065786365656473207472616e736665722076616c7565000000000000604482015290519081900360640190fd5b6000858152606a602052604090205460ff161561076d576040805162461bcd60e51b815260206004820152601f60248201527f546865206e6f746520686173206265656e20616c7265616479207370656e7400604482015290519081900360640190fd5b61077686610bbb565b6107c7576040805162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742066696e6420796f7572206d65726b6c6520726f6f7400000000604482015290519081900360640190fd5b606c546040805160c08082018352898252602082018990526001600160a01b038881168385015287811660608401526080830187905260a08301869052925163695ef6f960e01b8152929093169263695ef6f9928c928c9290916004810191829160240190849080838360005b8381101561084c578181015183820152602001610834565b505050509050018281038252858582818152602001925080828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b15801561089e57600080fd5b505af11580156108b2573d6000803e3d6000fd5b505050506040513d60208110156108c857600080fd5b5051610914576040805162461bcd60e51b815260206004820152601660248201527524b73b30b634b2103bb4ba34323930bb90383937b7b360511b604482015290519081900360640190fd5b6000858152606a60205260409020805460ff1916600117905561093984848484610f34565b604080516001600160a01b038681168252602082018890528183018590529151918516917fe9e508bad6d4c3227e881ca19068f099da81b5164dd6d62b2eaf1e8bc6c349319181900360600190a250506068805460ff19166001179055505050505050565b606c546001600160a01b031681565b60006000805160206116bd8339815191528310610a11576040805162461bcd60e51b815260206004820181905260248201527f5f6c6566742073686f756c6420626520696e7369646520746865206669656c64604482015290519081900360640190fd5b6000805160206116bd8339815191528210610a5d5760405162461bcd60e51b815260040180806020018281038252602181526020018061166d6021913960400191505060405180910390fd5b6040805163f47d33b560e01b81526004810185905260006024820181905282518693919273__Hasher________________________________9263f47d33b592604480840193829003018186803b158015610ab757600080fd5b505af4158015610acb573d6000803e3d6000fd5b505050506040513d6040811015610ae157600080fd5b50805160209091015190925090506000805160206116bd833981519152848308915073__Hasher________________________________63f47d33b583836040518363ffffffff1660e01b81526004018083815260200182815260200192505050604080518083038186803b158015610b5957600080fd5b505af4158015610b6d573d6000803e3d6000fd5b505050506040513d6040811015610b8357600080fd5b505195945050505050565b6000805160206116bd83398151915281565b60005463ffffffff1681565b606d546001600160a01b031681565b600081610bca57506000610c29565b60035463ffffffff165b60048163ffffffff1660648110610be757fe5b0154831415610bfa576001915050610c29565b63ffffffff8116610c09575060645b6003546000199091019063ffffffff80831691161415610bd45760009150505b919050565b606b6020526000908152604090205460ff1681565b60695481565b60035463ffffffff1681565b606d546001600160a01b03163314610c9e5760405162461bcd60e51b815260040180806020018281038252602581526020018061172e6025913960400191505060405180910390fd5b606c80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518281526020808402820101909152606090828015610cec578160200160208202803883390190505b50905060005b82811015610d4157610d15848483818110610d0957fe5b90506020020135610eae565b15610d39576001828281518110610d2857fe5b911515602092830291909101909101525b600101610cf2565b5092915050565b60685460ff16610d9f576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6068805460ff191690556000818152606b602052604090205460ff1615610df75760405162461bcd60e51b81526004018080602001828103825260218152602001806116dd6021913960400191505060405180910390fd5b6000610e028261102f565b6000838152606b60205260409020805460ff191660011790559050610e256111c6565b6040805163ffffffff83168152426020820152815184927fa945e51eec50ab98c161376f0db4cf2aeba3ec92755fe2fcd388bdbbb80ff196928290030190a250506068805460ff19166001179055565b60035460009060049063ffffffff1660648110610e8e57fe5b0154905090565b60048160648110610ea257fe5b0154905081565b606481565b6000908152606a602052604090205460ff1690565b60028181548110610ed057fe5b600091825260209091200154905081565b7f2fe54c60d3acabf3343a35b6eba15db4821b340f76e741e2249685ed4899af6c81565b60018181548110610ed057fe5b606e546001600160a01b031681565b600354600160201b900463ffffffff1681565b803414610f725760405162461bcd60e51b81526004018080602001828103825260308152602001806116166030913960400191505060405180910390fd5b610f80848360695403611212565b8115610f9057610f908383611212565b8015611029576040516000906001600160a01b0386169083908381818185875af1925050503d8060008114610fe1576040519150601f19603f3d011682016040523d82523d6000602084013e610fe6565b606091505b5050905080611027576040516001600160a01b0385169083156108fc029084906000818181858888f19350505050158015611025573d6000803e3d6000fd5b505b505b50505050565b60035460008054909163ffffffff600160201b909104811691811660020a1681141561108c5760405162461bcd60e51b815260040180806020018281038252602f8152602001806115bd602f913960400191505060405180910390fd5b6003805463ffffffff600160201b80830482166001019091160267ffffffff000000001990911617905582600080805b60005463ffffffff908116908216101561116457600185166111205783925060028163ffffffff16815481106110ee57fe5b906000526020600020015491508360018263ffffffff168154811061110f57fe5b600091825260209091200155611144565b60018163ffffffff168154811061113357fe5b906000526020600020015492508391505b61114e83836109ad565b9350600263ffffffff86160494506001016110bc565b5060035460649063ffffffff908116600101166003805463ffffffff19169290910663ffffffff9081169290921790819055849160049116606481106111a657fe5b01555050600354600160201b900463ffffffff1660001901949350505050565b34156112035760405162461bcd60e51b81526004018080602001828103825260308152602001806116fe6030913960400191505060405180910390fd5b61121033306069546113dd565b565b606e54604080516001600160a01b038581166024830152604480830186905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000956060959316939282918083835b6020831061128f5780518252601f199092019160209182019101611270565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146112f1576040519150601f19603f3d011682016040523d82523d6000602084013e6112f6565b606091505b509150915081611341576040805162461bcd60e51b81526020600482015260116024820152706e6f7420656e6f75676820746f6b656e7360781b604482015290519081900360640190fd5b8051156110295780516020146113885760405162461bcd60e51b815260040180806020018281038252602a8152602001806115ec602a913960400191505060405180910390fd5b80806020019051602081101561139d57600080fd5b50519150816110295760405162461bcd60e51b81526004018080602001828103825260278152602001806116466027913960400191505060405180910390fd5b606e54604080516001600160a01b0386811660248301528581166044830152606480830186905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b178152925182516000956060959316939282918083835b602083106114625780518252601f199092019160209182019101611443565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146114c4576040519150601f19603f3d011682016040523d82523d6000602084013e6114c9565b606091505b509150915081611520576040805162461bcd60e51b815260206004820152601960248201527f6e6f7420656e6f75676820616c6c6f77656420746f6b656e7300000000000000604482015290519081900360640190fd5b8051156110275780516020146115675760405162461bcd60e51b815260040180806020018281038252602a8152602001806115ec602a913960400191505060405180910390fd5b80806020019051602081101561157c57600080fd5b50519150816110275760405162461bcd60e51b815260040180806020018281038252602f81526020018061168e602f913960400191505060405180910390fdfe4d65726b6c6520747265652069732066756c6c2e204e6f206d6f7265206c656166732063616e20626520616464656464617461206c656e6774682073686f756c64206265206569746865722030206f72203332206279746573496e636f727265637420726566756e6420616d6f756e742072656365697665642062792074686520636f6e74726163746e6f7420656e6f75676820746f6b656e732e20546f6b656e2072657475726e732066616c73652e5f72696768742073686f756c6420626520696e7369646520746865206669656c646e6f7420656e6f75676820616c6c6f77656420746f6b656e732e20546f6b656e2072657475726e732066616c73652e30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000154686520636f6d6d69746d656e7420686173206265656e207375626d69747465644554482076616c756520697320737570706f73656420746f206265203020666f7220455243323020696e7374616e63654f6e6c79206f70657261746f722063616e2063616c6c20746869732066756e6374696f6e2ea265627a7a72315820494b71139a3b0e5b3d4285ff58127e5c54881ed5204c3d740b94c1c4832e681c64736f6c6343000511003264656e6f6d696e6174696f6e2073686f756c642062652067726561746572207468616e2030405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace5f72696768742073686f756c6420626520696e7369646520746865206669656c645f747265654c6576656c732073686f756c642062652067726561746572207468616e207a65726f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000015f747265654c6576656c732073686f756c64206265206c657373207468616e203332b10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6", - "deployedBytecode": "0x60806040526004361061014b5760003560e01c806397fc007c116100b6578063e5285dcc1161006f578063e5285dcc14610514578063e82955881461053e578063ec73295914610568578063f178e47c1461057d578063fc0c546a146105a7578063fc7e9c6f146105bc5761014b565b806397fc007c146103a55780639fa12d0b146103d8578063b214faa5146104a3578063ba70f757146104c0578063c2b40ae4146104d5578063cd87a3b4146104ff5761014b565b80634ecf518b116101085780634ecf518b146102e4578063570ca735146103125780636d9833e314610327578063839df945146103515780638bca6d161461037b57806390eeb02b146103905761014b565b806306394c9b1461015057806317cc915c1461018557806321a0adb6146101c35780632b7ac3f31461025c57806338bf282e1461028d578063414a37ba146102cf575b600080fd5b34801561015c57600080fd5b506101836004803603602081101561017357600080fd5b50356001600160a01b03166105d1565b005b34801561019157600080fd5b506101af600480360360208110156101a857600080fd5b503561063c565b604080519115158252519081900360200190f35b610183600480360360e08110156101d957600080fd5b810190602081018135600160201b8111156101f357600080fd5b82018360208201111561020557600080fd5b803590602001918460018302840111600160201b8311171561022657600080fd5b91935091508035906020810135906001600160a01b03604082013581169160608101359091169060808101359060a00135610651565b34801561026857600080fd5b5061027161099e565b604080516001600160a01b039092168252519081900360200190f35b34801561029957600080fd5b506102bd600480360360408110156102b057600080fd5b50803590602001356109ad565b60408051918252519081900360200190f35b3480156102db57600080fd5b506102bd610b8e565b3480156102f057600080fd5b506102f9610ba0565b6040805163ffffffff9092168252519081900360200190f35b34801561031e57600080fd5b50610271610bac565b34801561033357600080fd5b506101af6004803603602081101561034a57600080fd5b5035610bbb565b34801561035d57600080fd5b506101af6004803603602081101561037457600080fd5b5035610c2e565b34801561038757600080fd5b506102bd610c43565b34801561039c57600080fd5b506102f9610c49565b3480156103b157600080fd5b50610183600480360360208110156103c857600080fd5b50356001600160a01b0316610c55565b3480156103e457600080fd5b50610453600480360360208110156103fb57600080fd5b810190602081018135600160201b81111561041557600080fd5b82018360208201111561042757600080fd5b803590602001918460208302840111600160201b8311171561044857600080fd5b509092509050610cc0565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561048f578181015183820152602001610477565b505050509050019250505060405180910390f35b610183600480360360208110156104b957600080fd5b5035610d48565b3480156104cc57600080fd5b506102bd610e75565b3480156104e157600080fd5b506102bd600480360360208110156104f857600080fd5b5035610e95565b34801561050b57600080fd5b506102f9610ea9565b34801561052057600080fd5b506101af6004803603602081101561053757600080fd5b5035610eae565b34801561054a57600080fd5b506102bd6004803603602081101561056157600080fd5b5035610ec3565b34801561057457600080fd5b506102bd610ee1565b34801561058957600080fd5b506102bd600480360360208110156105a057600080fd5b5035610f05565b3480156105b357600080fd5b50610271610f12565b3480156105c857600080fd5b506102f9610f21565b606d546001600160a01b0316331461061a5760405162461bcd60e51b815260040180806020018281038252602581526020018061172e6025913960400191505060405180910390fd5b606d80546001600160a01b0319166001600160a01b0392909216919091179055565b606a6020526000908152604090205460ff1681565b60685460ff166106a8576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6068805460ff19169055606954821115610709576040805162461bcd60e51b815260206004820152601a60248201527f4665652065786365656473207472616e736665722076616c7565000000000000604482015290519081900360640190fd5b6000858152606a602052604090205460ff161561076d576040805162461bcd60e51b815260206004820152601f60248201527f546865206e6f746520686173206265656e20616c7265616479207370656e7400604482015290519081900360640190fd5b61077686610bbb565b6107c7576040805162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742066696e6420796f7572206d65726b6c6520726f6f7400000000604482015290519081900360640190fd5b606c546040805160c08082018352898252602082018990526001600160a01b038881168385015287811660608401526080830187905260a08301869052925163695ef6f960e01b8152929093169263695ef6f9928c928c9290916004810191829160240190849080838360005b8381101561084c578181015183820152602001610834565b505050509050018281038252858582818152602001925080828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b15801561089e57600080fd5b505af11580156108b2573d6000803e3d6000fd5b505050506040513d60208110156108c857600080fd5b5051610914576040805162461bcd60e51b815260206004820152601660248201527524b73b30b634b2103bb4ba34323930bb90383937b7b360511b604482015290519081900360640190fd5b6000858152606a60205260409020805460ff1916600117905561093984848484610f34565b604080516001600160a01b038681168252602082018890528183018590529151918516917fe9e508bad6d4c3227e881ca19068f099da81b5164dd6d62b2eaf1e8bc6c349319181900360600190a250506068805460ff19166001179055505050505050565b606c546001600160a01b031681565b60006000805160206116bd8339815191528310610a11576040805162461bcd60e51b815260206004820181905260248201527f5f6c6566742073686f756c6420626520696e7369646520746865206669656c64604482015290519081900360640190fd5b6000805160206116bd8339815191528210610a5d5760405162461bcd60e51b815260040180806020018281038252602181526020018061166d6021913960400191505060405180910390fd5b6040805163f47d33b560e01b81526004810185905260006024820181905282518693919273__Hasher________________________________9263f47d33b592604480840193829003018186803b158015610ab757600080fd5b505af4158015610acb573d6000803e3d6000fd5b505050506040513d6040811015610ae157600080fd5b50805160209091015190925090506000805160206116bd833981519152848308915073__Hasher________________________________63f47d33b583836040518363ffffffff1660e01b81526004018083815260200182815260200192505050604080518083038186803b158015610b5957600080fd5b505af4158015610b6d573d6000803e3d6000fd5b505050506040513d6040811015610b8357600080fd5b505195945050505050565b6000805160206116bd83398151915281565b60005463ffffffff1681565b606d546001600160a01b031681565b600081610bca57506000610c29565b60035463ffffffff165b60048163ffffffff1660648110610be757fe5b0154831415610bfa576001915050610c29565b63ffffffff8116610c09575060645b6003546000199091019063ffffffff80831691161415610bd45760009150505b919050565b606b6020526000908152604090205460ff1681565b60695481565b60035463ffffffff1681565b606d546001600160a01b03163314610c9e5760405162461bcd60e51b815260040180806020018281038252602581526020018061172e6025913960400191505060405180910390fd5b606c80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518281526020808402820101909152606090828015610cec578160200160208202803883390190505b50905060005b82811015610d4157610d15848483818110610d0957fe5b90506020020135610eae565b15610d39576001828281518110610d2857fe5b911515602092830291909101909101525b600101610cf2565b5092915050565b60685460ff16610d9f576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6068805460ff191690556000818152606b602052604090205460ff1615610df75760405162461bcd60e51b81526004018080602001828103825260218152602001806116dd6021913960400191505060405180910390fd5b6000610e028261102f565b6000838152606b60205260409020805460ff191660011790559050610e256111c6565b6040805163ffffffff83168152426020820152815184927fa945e51eec50ab98c161376f0db4cf2aeba3ec92755fe2fcd388bdbbb80ff196928290030190a250506068805460ff19166001179055565b60035460009060049063ffffffff1660648110610e8e57fe5b0154905090565b60048160648110610ea257fe5b0154905081565b606481565b6000908152606a602052604090205460ff1690565b60028181548110610ed057fe5b600091825260209091200154905081565b7f2fe54c60d3acabf3343a35b6eba15db4821b340f76e741e2249685ed4899af6c81565b60018181548110610ed057fe5b606e546001600160a01b031681565b600354600160201b900463ffffffff1681565b803414610f725760405162461bcd60e51b81526004018080602001828103825260308152602001806116166030913960400191505060405180910390fd5b610f80848360695403611212565b8115610f9057610f908383611212565b8015611029576040516000906001600160a01b0386169083908381818185875af1925050503d8060008114610fe1576040519150601f19603f3d011682016040523d82523d6000602084013e610fe6565b606091505b5050905080611027576040516001600160a01b0385169083156108fc029084906000818181858888f19350505050158015611025573d6000803e3d6000fd5b505b505b50505050565b60035460008054909163ffffffff600160201b909104811691811660020a1681141561108c5760405162461bcd60e51b815260040180806020018281038252602f8152602001806115bd602f913960400191505060405180910390fd5b6003805463ffffffff600160201b80830482166001019091160267ffffffff000000001990911617905582600080805b60005463ffffffff908116908216101561116457600185166111205783925060028163ffffffff16815481106110ee57fe5b906000526020600020015491508360018263ffffffff168154811061110f57fe5b600091825260209091200155611144565b60018163ffffffff168154811061113357fe5b906000526020600020015492508391505b61114e83836109ad565b9350600263ffffffff86160494506001016110bc565b5060035460649063ffffffff908116600101166003805463ffffffff19169290910663ffffffff9081169290921790819055849160049116606481106111a657fe5b01555050600354600160201b900463ffffffff1660001901949350505050565b34156112035760405162461bcd60e51b81526004018080602001828103825260308152602001806116fe6030913960400191505060405180910390fd5b61121033306069546113dd565b565b606e54604080516001600160a01b038581166024830152604480830186905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000956060959316939282918083835b6020831061128f5780518252601f199092019160209182019101611270565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146112f1576040519150601f19603f3d011682016040523d82523d6000602084013e6112f6565b606091505b509150915081611341576040805162461bcd60e51b81526020600482015260116024820152706e6f7420656e6f75676820746f6b656e7360781b604482015290519081900360640190fd5b8051156110295780516020146113885760405162461bcd60e51b815260040180806020018281038252602a8152602001806115ec602a913960400191505060405180910390fd5b80806020019051602081101561139d57600080fd5b50519150816110295760405162461bcd60e51b81526004018080602001828103825260278152602001806116466027913960400191505060405180910390fd5b606e54604080516001600160a01b0386811660248301528581166044830152606480830186905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b178152925182516000956060959316939282918083835b602083106114625780518252601f199092019160209182019101611443565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146114c4576040519150601f19603f3d011682016040523d82523d6000602084013e6114c9565b606091505b509150915081611520576040805162461bcd60e51b815260206004820152601960248201527f6e6f7420656e6f75676820616c6c6f77656420746f6b656e7300000000000000604482015290519081900360640190fd5b8051156110275780516020146115675760405162461bcd60e51b815260040180806020018281038252602a8152602001806115ec602a913960400191505060405180910390fd5b80806020019051602081101561157c57600080fd5b50519150816110275760405162461bcd60e51b815260040180806020018281038252602f81526020018061168e602f913960400191505060405180910390fdfe4d65726b6c6520747265652069732066756c6c2e204e6f206d6f7265206c656166732063616e20626520616464656464617461206c656e6774682073686f756c64206265206569746865722030206f72203332206279746573496e636f727265637420726566756e6420616d6f756e742072656365697665642062792074686520636f6e74726163746e6f7420656e6f75676820746f6b656e732e20546f6b656e2072657475726e732066616c73652e5f72696768742073686f756c6420626520696e7369646520746865206669656c646e6f7420656e6f75676820616c6c6f77656420746f6b656e732e20546f6b656e2072657475726e732066616c73652e30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000154686520636f6d6d69746d656e7420686173206265656e207375626d69747465644554482076616c756520697320737570706f73656420746f206265203020666f7220455243323020696e7374616e63654f6e6c79206f70657261746f722063616e2063616c6c20746869732066756e6374696f6e2ea265627a7a72315820494b71139a3b0e5b3d4285ff58127e5c54881ed5204c3d740b94c1c4832e681c64736f6c63430005110032", - "sourceMap": "805:2189:0:-;;;1430:34:2;;;-1:-1:-1;;;;;;1468:27:2;;;867:237:0;5:2:-1;;;;30:1;27;20:12;5:2;867:237:0;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;867:237:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1646:15:2;;;1638:67;;;;-1:-1:-1;;;1638:67:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1733:2;1719:11;:16;;;1711:63;;;;-1:-1:-1;;;1711:63:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1780:6;:20;;-1:-1:-1;;1780:20:2;;;;;;;1854:5;27:10:-1;;-1:-1;23:18;;;45:23;;;1088:77:2;-1:-1:-1;;;;;;;;;;;1854:23:2;;;;;;27:10:-1;;23:18;;;45:23;;1883:32:2;;;;-1:-1:-1;;;;;;;;;;;1883:32:2;;;;;;1922:175;1945:6;;;;;;1941:10;;;;1922:175;;;1980:39;1994:11;;-1:-1:-1;;;;;1980:13:2;:39;:::i;:::-;2027:5;27:10:-1;;39:1;23:18;;;45:23;;;-1:-1;;;;;;;;;;;2027:23:2;;;;27:10:-1;;23:18;;;45:23;;-1:-1;2058:32:2;;;-1:-1:-1;;;;;;;;;;;2058:32:2;;;;1966:53;;-1:-1:-1;1953:3:2;1922:175;;;-1:-1:-1;2114:39:2;2128:11;;-1:-1:-1;;;;;2114:13:2;:39;:::i;:::-;2103:5;2109:1;2103:8;:50;-1:-1:-1;;1421:11:18;:18;;-1:-1:-1;;1421:18:18;1435:4;1421:18;;;2260:17:8;2252:67;;;;-1:-1:-1;;;2252:67:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2325:8;:20;;-1:-1:-1;;;;;2325:20:8;;;-1:-1:-1;;;;;;2325:20:8;;;;;;;2351:8;:20;;;;;;;;;;;;;;;2377:12;:28;;;;-1:-1:-1;1085:5:0;:14;;;;;;;;;;;;;;-1:-1:-1;805:2189:0;;-1:-1:-1;;;805:2189:0;2230:445:2;2305:7;-1:-1:-1;;;;;;;;;;;2328:27:2;;2320:72;;;;;-1:-1:-1;;;2320:72:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2406:28:2;;2398:74;;;;-1:-1:-1;;;2398:74:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2538:23;;;-1:-1:-1;;;2538:23:2;;;;;;;;2478:9;2538:23;;;;;;;;2498:5;;2478:9;;2538:6;;:17;;:23;;;;;;;;;;:6;:23;;;5:2:-1;;;;30:1;27;20:12;5:2;2538:23:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2538:23:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2538:23:2;;;;;;;;;-1:-1:-1;2538:23:2;-1:-1:-1;;;;;;;;;;;;2589:6:2;2578:1;2571:38;2567:42;;2624:6;:17;2642:1;2645;2624:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2624:23:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2624:23:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2624:23:2;;2230:445;-1:-1:-1;;;;;2230:445:2:o;805:2189:0:-;;;;;;;", - "deployedSourceMap": "805:2189:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5355:102:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5355:102:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5355:102:8;-1:-1:-1;;;;;5355:102:8;;:::i;:::-;;1089:47;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1089:47:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1089:47:8;;:::i;:::-;;;;;;;;;;;;;;;;;;3478:781;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;3478:781:8;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;3478:781:8;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3478:781:8;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;3478:781:8;;-1:-1:-1;3478:781:8;-1:-1:-1;3478:781:8;;;;;;;;-1:-1:-1;;;;;3478:781:8;;;;;;;;;;;;;;;;;;;;;;;;:::i;1278:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1278:25:8;;;:::i;:::-;;;;-1:-1:-1;;;;;1278:25:8;;;;;;;;;;;;;;2230:445:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2230:445:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2230:445:2;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;933:114;;8:9:-1;5:2;;;30:1;27;20:12;5:2;933:114:2;;;:::i;1209:20::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1209:20:2;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1463:23:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1463:23:8;;;:::i;3553:342:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3553:342:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3553:342:2;;:::i;1231:43:8:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1231:43:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1231:43:8;;:::i;1058:27::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1058:27:8;;;:::i;1430:34:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1430:34:2;;;:::i;5192:113:8:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5192:113:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5192:113:8;-1:-1:-1;;;;;5192:113:8;;:::i;4669:293::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4669:293:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4669:293:8;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;4669:293:8;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4669:293:8;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;4669:293:8;;-1:-1:-1;4669:293:8;-1:-1:-1;4669:293:8;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4669:293:8;;;;;;;;;;;;;;;;;2658:324;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2658:324:8;;:::i;3941:93:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3941:93:2;;;:::i;1549:39::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1549:39:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1549:39:2;;:::i;1499:46::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1499:46:2;;;:::i;4492:116:8:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4492:116:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4492:116:8;;:::i;1404:22:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1404:22:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1404:22:2;;:::i;1051:114::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1051:114:2;;;:::i;1369:31::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1369:31:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1369:31:2;;:::i;842:20:0:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;842:20:0;;;:::i;1468:27:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1468:27:2;;;:::i;5355:102:8:-;1540:8;;-1:-1:-1;;;;;1540:8:8;1526:10;:22;1518:72;;;;-1:-1:-1;;;1518:72:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5429:8;:23;;-1:-1:-1;;;;;;5429:23:8;-1:-1:-1;;;;;5429:23:8;;;;;;;;;;5355:102::o;1089:47::-;;;;;;;;;;;;;;;:::o;3478:781::-;1934:11:18;;;;1926:55;;;;;-1:-1:-1;;;1926:55:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;2056:11;:19;;-1:-1:-1;;2056:19:18;;;3695:12:8;;3687:20;;;3679:59;;;;;-1:-1:-1;;;3679:59:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;3753:31;;;;:15;:31;;;;;;;;3752:32;3744:76;;;;;-1:-1:-1;;;3744:76:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;3834:18;3846:5;3834:11;:18::i;:::-;3826:59;;;;;-1:-1:-1;;;3826:59:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;3932:8;;:126;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4003:19:8;;;3932:126;;;;4024:17;;;3932:126;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3932:126:8;;:8;;;;;:20;;3953:6;;;;3932:126;;;;;;;;;;;;;;;;:8;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3932:126:8;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;3932:126:8;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3932:126:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3932:126:8;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3932:126:8;3924:161;;;;;-1:-1:-1;;;3924:161:8;;;;;;;;;;;;-1:-1:-1;;;3924:161:8;;;;;;;;;;;;;;;4092:31;;;;:15;:31;;;;;:38;;-1:-1:-1;;4092:38:8;4126:4;4092:38;;;4136:53;4153:10;4165:8;4175:4;4181:7;4136:16;:53::i;:::-;4200:54;;;-1:-1:-1;;;;;4200:54:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2230:11:18;:18;;-1:-1:-1;;2230:18:18;2244:4;2230:18;;;-1:-1:-1;;;;;;3478:781:8:o;1278:25::-;;;-1:-1:-1;;;;;1278:25:8;;:::o;2230:445:2:-;2305:7;-1:-1:-1;;;;;;;;;;;2328:27:2;;2320:72;;;;;-1:-1:-1;;;2320:72:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2406:28:2;;2398:74;;;;-1:-1:-1;;;2398:74:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2538:23;;;-1:-1:-1;;;2538:23:2;;;;;;;;2478:9;2538:23;;;;;;;;2498:5;;2478:9;;2538:6;;:17;;:23;;;;;;;;;;:6;:23;;;5:2:-1;;;;30:1;27;20:12;5:2;2538:23:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2538:23:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2538:23:2;;;;;;;;;-1:-1:-1;2538:23:2;-1:-1:-1;;;;;;;;;;;;2589:6:2;2578:1;2571:38;2567:42;;2624:6;:17;2642:1;2645;2624:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2624:23:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2624:23:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2624:23:2;;2230:445;-1:-1:-1;;;;;2230:445:2:o;933:114::-;-1:-1:-1;;;;;;;;;;;933:114:2;:::o;1209:20::-;;;;;;:::o;1463:23:8:-;;;-1:-1:-1;;;;;1463:23:8;;:::o;3553:342:2:-;3609:4;3625:10;3621:43;;-1:-1:-1;3652:5:2;3645:12;;3621:43;3680:16;;;;3702:171;3726:5;3732:1;3726:8;;;;;;;;;;;3717:5;:17;3713:53;;;3753:4;3746:11;;;;;3713:53;3777:6;;;3773:52;;-1:-1:-1;1542:3:2;3773:52;3855:16;;-1:-1:-1;;3832:3:2;;;;3855:16;3850:21;;;3855:16;;3850:21;;3702:171;;3885:5;3878:12;;;3553:342;;;;:::o;1231:43:8:-;;;;;;;;;;;;;;;:::o;1058:27::-;;;;:::o;1430:34:2:-;;;;;;:::o;5192:113:8:-;1540:8;;-1:-1:-1;;;;;1540:8:8;1526:10;:22;1518:72;;;;-1:-1:-1;;;1518:72:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5266:8;:34;;-1:-1:-1;;;;;;5266:34:8;-1:-1:-1;;;;;5266:34:8;;;;;;;;;;5192:113::o;4669:293::-;4785:35;;;;;;;;;;;;;;;;4750:19;;4796:16;4785:35;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;4785:35:8;-1:-1:-1;4777:43:8;-1:-1:-1;4830:6:8;4826:132;4842:27;;;4826:132;;;4888:28;4896:16;;4913:1;4896:19;;;;;;;;;;;;;4888:7;:28::i;:::-;4884:68;;;4939:4;4928:5;4934:1;4928:8;;;;;;;;:15;;;:8;;;;;;;;;;;:15;4884:68;4871:3;;4826:132;;;;4669:293;;;;:::o;2658:324::-;1934:11:18;;;;1926:55;;;;;-1:-1:-1;;;1926:55:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;2056:11;:19;;-1:-1:-1;;2056:19:18;;;2070:5;2741:24:8;;;:11;:24;;;;;;2056:19:18;2741:24:8;2740:25;2732:71;;;;-1:-1:-1;;;2732:71:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2810:20;2833;2841:11;2833:7;:20::i;:::-;2859:24;;;;:11;:24;;;;;:31;;-1:-1:-1;;2859:31:8;2886:4;2859:31;;;2810:43;-1:-1:-1;2896:17:8;:15;:17::i;:::-;2925:52;;;;;;;;2961:15;2925:52;;;;;;2933:11;;2925:52;;;;;;;;-1:-1:-1;;2230:11:18;:18;;-1:-1:-1;;2230:18:18;2244:4;2230:18;;;2658:324:8:o;3941:93:2:-;4012:16;;3984:7;;4006:5;;4012:16;;4006:23;;;;;;;;;3999:30;;3941:93;:::o;1549:39::-;;;;;;;;;;;;;-1:-1:-1;1549:39:2;:::o;1499:46::-;1542:3;1499:46;:::o;4492:116:8:-;4553:4;4572:31;;;:15;:31;;;;;;;;;4492:116::o;1404:22:2:-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1404:22:2;:::o;1051:114::-;1088:77;1051:114;:::o;1369:31::-;;;;;;;;;;842:20:0;;;-1:-1:-1;;;;;842:20:0;;:::o;1468:27:2:-;;;-1:-1:-1;;;1468:27:2;;;;;:::o;1303:547:0:-;1450:7;1437:9;:20;1429:81;;;;-1:-1:-1;;;1429:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1517:51;1536:10;1563:4;1548:12;;:19;1517:18;:51::i;:::-;1578:8;;1574:63;;1596:34;1615:8;1625:4;1596:18;:34::i;:::-;1647:11;;1643:203;;1687:34;;1669:12;;-1:-1:-1;;;;;1687:15:0;;;1709:7;;1669:12;1687:34;1669:12;1687:34;1709:7;1687:15;:34;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;1668:53:0;;;1734:7;1729:111;;1805:26;;-1:-1:-1;;;;;1805:17:0;;;:26;;;;;1823:7;;1805:26;;;;1823:7;1805:17;:26;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1805:26:0;1729:111;1643:203;;1303:547;;;;:::o;2679:802:2:-;2770:9;;2728:12;2820:6;;2728:12;;2770:9;-1:-1:-1;;;2770:9:2;;;;;;2820:6;;2816:1;2809:17;2793:33;;;;2785:93;;;;-1:-1:-1;;;2785:93:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2884:9;:14;;;-1:-1:-1;;;2884:14:2;;;;;2897:1;2884:14;;;;;-1:-1:-1;;2884:14:2;;;;;;2931:5;-1:-1:-1;;;2980:355:2;3003:6;;;;;;2999:10;;;;2980:355;;;3028:16;;;3024:225;;3068:16;3061:23;;3102:5;3108:1;3102:8;;;;;;;;;;;;;;;;;;3094:16;;3141;3121:14;3136:1;3121:17;;;;;;;;;;;;;;;;;;;:36;3024:225;;;3189:14;3204:1;3189:17;;;;;;;;;;;;;;;;;;3182:24;;3224:16;3216:24;;3024:225;3276:26;3290:4;3296:5;3276:13;:26::i;:::-;3257:45;-1:-1:-1;3327:1:2;3311:17;;;;;-1:-1:-1;3011:3:2;;2980:355;;;-1:-1:-1;3361:16:2;;1542:3;;3360:42;3361:16;;;;:20;3360:42;3341:16;:61;;-1:-1:-1;;3341:61:2;3360:42;;;;3341:61;;;;;;;;;;;;3434:16;;3408:5;;3414:16;3408:23;;;;;;;;:42;-1:-1:-1;;3463:9:2;;-1:-1:-1;;;3463:9:2;;;;-1:-1:-1;;3463:13:2;;2679:802;-1:-1:-1;;;;2679:802:2:o;1108:191:0:-;1158:9;:14;1150:75;;;;-1:-1:-1;;;1150:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1231:63;1254:10;1274:4;1281:12;;1231:22;:63::i;:::-;1108:191::o;2448:544::-;2557:5;;2568:63;;;-1:-1:-1;;;;;2568:63:0;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;2568:63:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2557:75:0;;;;2522:12;;2536:17;;2557:5;;;2568:63;2557:75;;;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;2557:75:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2521:111:0;;;;2646:7;2638:37;;;;;-1:-1:-1;;;2638:37:0;;;;;;;;;;;;-1:-1:-1;;;2638:37:0;;;;;;;;;;;;;;;2775:11;;:15;2771:217;;2808:4;:11;2823:2;2808:17;2800:72;;;;-1:-1:-1;;;2800:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2901:4;2890:24;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2890:24:0;;-1:-1:-1;2890:24:0;2922:59;;;;-1:-1:-1;;;2922:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1854:590;1982:5;;1993:74;;;-1:-1:-1;;;;;1993:74:0;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1993:74:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1982:86:0;;;;1947:12;;1961:17;;1982:5;;;1993:74;1982:86;;;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;1982:86:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;1946:122:0;;;;2082:7;2074:45;;;;;-1:-1:-1;;;2074:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;2219:11;;:15;2215:225;;2252:4;:11;2267:2;2252:17;2244:72;;;;-1:-1:-1;;;2244:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2345:4;2334:24;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2334:24:0;;-1:-1:-1;2334:24:0;2366:67;;;;-1:-1:-1;;;2366:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", - "source": "// https://tornado.cash\n/*\n* d888888P dP a88888b. dP\n* 88 88 d8' `88 88\n* 88 .d8888b. 88d888b. 88d888b. .d8888b. .d888b88 .d8888b. 88 .d8888b. .d8888b. 88d888b.\n* 88 88' `88 88' `88 88' `88 88' `88 88' `88 88' `88 88 88' `88 Y8ooooo. 88' `88\n* 88 88. .88 88 88 88 88. .88 88. .88 88. .88 dP Y8. .88 88. .88 88 88 88\n* dP `88888P' dP dP dP `88888P8 `88888P8 `88888P' 88 Y88888P' `88888P8 `88888P' dP dP\n* ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo\n*/\n\npragma solidity 0.5.17;\n\nimport \"./Tornado.sol\";\n\ncontract ERC20Tornado is Tornado {\n address public token;\n\n constructor(\n IVerifier _verifier,\n uint256 _denomination,\n uint32 _merkleTreeHeight,\n address _operator,\n address _token\n ) Tornado(_verifier, _denomination, _merkleTreeHeight, _operator) public {\n token = _token;\n }\n\n function _processDeposit() internal {\n require(msg.value == 0, \"ETH value is supposed to be 0 for ERC20 instance\");\n _safeErc20TransferFrom(msg.sender, address(this), denomination);\n }\n\n function _processWithdraw(address payable _recipient, address payable _relayer, uint256 _fee, uint256 _refund) internal {\n require(msg.value == _refund, \"Incorrect refund amount received by the contract\");\n\n _safeErc20Transfer(_recipient, denomination - _fee);\n if (_fee > 0) {\n _safeErc20Transfer(_relayer, _fee);\n }\n\n if (_refund > 0) {\n (bool success, ) = _recipient.call.value(_refund)(\"\");\n if (!success) {\n // let's return _refund back to the relayer\n _relayer.transfer(_refund);\n }\n }\n }\n\n function _safeErc20TransferFrom(address _from, address _to, uint256 _amount) internal {\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd /* transferFrom */, _from, _to, _amount));\n require(success, \"not enough allowed tokens\");\n\n // if contract returns some data lets make sure that is `true` according to standard\n if (data.length > 0) {\n require(data.length == 32, \"data length should be either 0 or 32 bytes\");\n success = abi.decode(data, (bool));\n require(success, \"not enough allowed tokens. Token returns false.\");\n }\n }\n\n function _safeErc20Transfer(address _to, uint256 _amount) internal {\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb /* transfer */, _to, _amount));\n require(success, \"not enough tokens\");\n\n // if contract returns some data lets make sure that is `true` according to standard\n if (data.length > 0) {\n require(data.length == 32, \"data length should be either 0 or 32 bytes\");\n success = abi.decode(data, (bool));\n require(success, \"not enough tokens. Token returns false.\");\n }\n }\n}\n", - "sourcePath": "/Users/brianli/dotfiles/tornado-core/contracts/ERC20Tornado.sol", - "ast": { - "absolutePath": "/Users/brianli/dotfiles/tornado-core/contracts/ERC20Tornado.sol", - "exportedSymbols": { - "ERC20Tornado": [ - 227 - ] - }, - "id": 228, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1, - "literals": [ - "solidity", - "0.5", - ".17" - ], - "nodeType": "PragmaDirective", - "src": "755:23:0" - }, - { - "absolutePath": "/Users/brianli/dotfiles/tornado-core/contracts/Tornado.sol", - "file": "./Tornado.sol", - "id": 2, - "nodeType": "ImportDirective", - "scope": 228, - "sourceUnit": 1195, - "src": "780:23:0", - "symbolAliases": [], - "unitAlias": "" - }, - { - "baseContracts": [ - { - "arguments": null, - "baseName": { - "contractScope": null, - "id": 3, - "name": "Tornado", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1194, - "src": "830:7:0", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Tornado_$1194", - "typeString": "contract Tornado" - } - }, - "id": 4, - "nodeType": "InheritanceSpecifier", - "src": "830:7:0" - } - ], - "contractDependencies": [ - 694, - 1194, - 3245 - ], - "contractKind": "contract", - "documentation": null, - "fullyImplemented": true, - "id": 227, - "linearizedBaseContracts": [ - 227, - 1194, - 3245, - 694 - ], - "name": "ERC20Tornado", - "nodeType": "ContractDefinition", - "nodes": [ - { - "constant": false, - "id": 6, - "name": "token", - "nodeType": "VariableDeclaration", - "scope": 227, - "src": "842:20:0", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 5, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "842:7:0", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "public" - }, - { - "body": { - "id": 29, - "nodeType": "Block", - "src": "1079:25:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 27, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 25, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6, - "src": "1085:5:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 26, - "name": "_token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 16, - "src": "1093:6:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "1085:14:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 28, - "nodeType": "ExpressionStatement", - "src": "1085:14:0" - } - ] - }, - "documentation": null, - "id": 30, - "implemented": true, - "kind": "constructor", - "modifiers": [ - { - "arguments": [ - { - "argumentTypes": null, - "id": 19, - "name": "_verifier", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8, - "src": "1016:9:0", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IVerifier_$891", - "typeString": "contract IVerifier" - } - }, - { - "argumentTypes": null, - "id": 20, - "name": "_denomination", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 10, - "src": "1027:13:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 21, - "name": "_merkleTreeHeight", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12, - "src": "1042:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - { - "argumentTypes": null, - "id": 22, - "name": "_operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 14, - "src": "1061:9:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "id": 23, - "modifierName": { - "argumentTypes": null, - "id": 18, - "name": "Tornado", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1194, - "src": "1008:7:0", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Tornado_$1194_$", - "typeString": "type(contract Tornado)" - } - }, - "nodeType": "ModifierInvocation", - "src": "1008:63:0" - } - ], - "name": "", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 17, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 8, - "name": "_verifier", - "nodeType": "VariableDeclaration", - "scope": 30, - "src": "884:19:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IVerifier_$891", - "typeString": "contract IVerifier" - }, - "typeName": { - "contractScope": null, - "id": 7, - "name": "IVerifier", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 891, - "src": "884:9:0", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IVerifier_$891", - "typeString": "contract IVerifier" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 10, - "name": "_denomination", - "nodeType": "VariableDeclaration", - "scope": 30, - "src": "909:21:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 9, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "909:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 12, - "name": "_merkleTreeHeight", - "nodeType": "VariableDeclaration", - "scope": 30, - "src": "936:24:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 11, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "936:6:0", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 14, - "name": "_operator", - "nodeType": "VariableDeclaration", - "scope": 30, - "src": "966:17:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 13, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "966:7:0", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 16, - "name": "_token", - "nodeType": "VariableDeclaration", - "scope": 30, - "src": "989:14:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 15, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "989:7:0", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "878:129:0" - }, - "returnParameters": { - "id": 24, - "nodeType": "ParameterList", - "parameters": [], - "src": "1079:0:0" - }, - "scope": 227, - "src": "867:237:0", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 50, - "nodeType": "Block", - "src": "1144:155:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 37, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 34, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3260, - "src": "1158:3:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 35, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "value", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1158:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 36, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1171:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1158:14:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "4554482076616c756520697320737570706f73656420746f206265203020666f7220455243323020696e7374616e6365", - "id": 38, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1174:50:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_b14b0818f1fdc710b92ba7e1ce725992b43e47a5b220b1b890f352eeac2e1d5e", - "typeString": "literal_string \"ETH value is supposed to be 0 for ERC20 instance\"" - }, - "value": "ETH value is supposed to be 0 for ERC20 instance" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_b14b0818f1fdc710b92ba7e1ce725992b43e47a5b220b1b890f352eeac2e1d5e", - "typeString": "literal_string \"ETH value is supposed to be 0 for ERC20 instance\"" - } - ], - "id": 33, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 3263, - 3264 - ], - "referencedDeclaration": 3264, - "src": "1150:7:0", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 39, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1150:75:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 40, - "nodeType": "ExpressionStatement", - "src": "1150:75:0" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 42, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3260, - "src": "1254:3:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 43, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1254:10:0", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 45, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3284, - "src": "1274:4:0", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Tornado_$227", - "typeString": "contract ERC20Tornado" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_ERC20Tornado_$227", - "typeString": "contract ERC20Tornado" - } - ], - "id": 44, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1266:7:0", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 46, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1266:13:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 47, - "name": "denomination", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 897, - "src": "1281:12:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 41, - "name": "_safeErc20TransferFrom", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 171, - "src": "1231:22:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,address,uint256)" - } - }, - "id": 48, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1231:63:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 49, - "nodeType": "ExpressionStatement", - "src": "1231:63:0" - } - ] - }, - "documentation": null, - "id": 51, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_processDeposit", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 31, - "nodeType": "ParameterList", - "parameters": [], - "src": "1132:2:0" - }, - "returnParameters": { - "id": 32, - "nodeType": "ParameterList", - "parameters": [], - "src": "1144:0:0" - }, - "scope": 227, - "src": "1108:191:0", - "stateMutability": "nonpayable", - "superFunction": 1014, - "visibility": "internal" - }, - { - "body": { - "id": 112, - "nodeType": "Block", - "src": "1423:427:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 66, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 63, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3260, - "src": "1437:3:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 64, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "value", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1437:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 65, - "name": "_refund", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 59, - "src": "1450:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1437:20:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "496e636f727265637420726566756e6420616d6f756e742072656365697665642062792074686520636f6e7472616374", - "id": 67, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1459:50:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_3189ced290ffd29dc422911cd3b29574f21c524c91f4b41e6abb0646c581cbff", - "typeString": "literal_string \"Incorrect refund amount received by the contract\"" - }, - "value": "Incorrect refund amount received by the contract" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_3189ced290ffd29dc422911cd3b29574f21c524c91f4b41e6abb0646c581cbff", - "typeString": "literal_string \"Incorrect refund amount received by the contract\"" - } - ], - "id": 62, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 3263, - 3264 - ], - "referencedDeclaration": 3264, - "src": "1429:7:0", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 68, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1429:81:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 69, - "nodeType": "ExpressionStatement", - "src": "1429:81:0" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 71, - "name": "_recipient", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 53, - "src": "1536:10:0", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 74, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 72, - "name": "denomination", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 897, - "src": "1548:12:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 73, - "name": "_fee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 57, - "src": "1563:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1548:19:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 70, - "name": "_safeErc20Transfer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 226, - "src": "1517:18:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,uint256)" - } - }, - "id": 75, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1517:51:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 76, - "nodeType": "ExpressionStatement", - "src": "1517:51:0" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 79, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 77, - "name": "_fee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 57, - "src": "1578:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 78, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1585:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1578:8:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 86, - "nodeType": "IfStatement", - "src": "1574:63:0", - "trueBody": { - "id": 85, - "nodeType": "Block", - "src": "1588:49:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 81, - "name": "_relayer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 55, - "src": "1615:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - { - "argumentTypes": null, - "id": 82, - "name": "_fee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 57, - "src": "1625:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 80, - "name": "_safeErc20Transfer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 226, - "src": "1596:18:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,uint256)" - } - }, - "id": 83, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1596:34:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 84, - "nodeType": "ExpressionStatement", - "src": "1596:34:0" - } - ] - } - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 89, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 87, - "name": "_refund", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 59, - "src": "1647:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 88, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1657:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1647:11:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 111, - "nodeType": "IfStatement", - "src": "1643:203:0", - "trueBody": { - "id": 110, - "nodeType": "Block", - "src": "1660:186:0", - "statements": [ - { - "assignments": [ - 91, - null - ], - "declarations": [ - { - "constant": false, - "id": 91, - "name": "success", - "nodeType": "VariableDeclaration", - "scope": 110, - "src": "1669:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 90, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "1669:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - }, - null - ], - "id": 99, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "", - "id": 97, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1718:2:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "typeString": "literal_string \"\"" - }, - "value": "" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "typeString": "literal_string \"\"" - } - ], - "arguments": [ - { - "argumentTypes": null, - "id": 95, - "name": "_refund", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 59, - "src": "1709:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 92, - "name": "_recipient", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 53, - "src": "1687:10:0", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "id": 93, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "call", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1687:15:0", - "typeDescriptions": { - "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory) payable returns (bool,bytes memory)" - } - }, - "id": 94, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "value", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1687:21:0", - "typeDescriptions": { - "typeIdentifier": "t_function_setvalue_pure$_t_uint256_$returns$_t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value_$", - "typeString": "function (uint256) pure returns (function (bytes memory) payable returns (bool,bytes memory))" - } - }, - "id": 96, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1687:30:0", - "typeDescriptions": { - "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value", - "typeString": "function (bytes memory) payable returns (bool,bytes memory)" - } - }, - "id": 98, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1687:34:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", - "typeString": "tuple(bool,bytes memory)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1668:53:0" - }, - { - "condition": { - "argumentTypes": null, - "id": 101, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "1733:8:0", - "subExpression": { - "argumentTypes": null, - "id": 100, - "name": "success", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 91, - "src": "1734:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 109, - "nodeType": "IfStatement", - "src": "1729:111:0", - "trueBody": { - "id": 108, - "nodeType": "Block", - "src": "1743:97:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 105, - "name": "_refund", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 59, - "src": "1823:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 102, - "name": "_relayer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 55, - "src": "1805:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "id": 104, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "transfer", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1805:17:0", - "typeDescriptions": { - "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", - "typeString": "function (uint256)" - } - }, - "id": 106, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1805:26:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 107, - "nodeType": "ExpressionStatement", - "src": "1805:26:0" - } - ] - } - } - ] - } - } - ] - }, - "documentation": null, - "id": 113, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_processWithdraw", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 60, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 53, - "name": "_recipient", - "nodeType": "VariableDeclaration", - "scope": 113, - "src": "1329:26:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - "typeName": { - "id": 52, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1329:15:0", - "stateMutability": "payable", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 55, - "name": "_relayer", - "nodeType": "VariableDeclaration", - "scope": 113, - "src": "1357:24:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - "typeName": { - "id": 54, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1357:15:0", - "stateMutability": "payable", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 57, - "name": "_fee", - "nodeType": "VariableDeclaration", - "scope": 113, - "src": "1383:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 56, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1383:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 59, - "name": "_refund", - "nodeType": "VariableDeclaration", - "scope": 113, - "src": "1397:15:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 58, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1397:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1328:85:0" - }, - "returnParameters": { - "id": 61, - "nodeType": "ParameterList", - "parameters": [], - "src": "1423:0:0" - }, - "scope": 227, - "src": "1303:547:0", - "stateMutability": "nonpayable", - "superFunction": 1110, - "visibility": "internal" - }, - { - "body": { - "id": 170, - "nodeType": "Block", - "src": "1940:504:0", - "statements": [ - { - "assignments": [ - 123, - 125 - ], - "declarations": [ - { - "constant": false, - "id": 123, - "name": "success", - "nodeType": "VariableDeclaration", - "scope": 170, - "src": "1947:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 122, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "1947:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 125, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 170, - "src": "1961:17:0", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 124, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "1961:5:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 136, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30783233623837326464", - "id": 130, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2016:10:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_599290589_by_1", - "typeString": "int_const 599290589" - }, - "value": "0x23b872dd" - }, - { - "argumentTypes": null, - "id": 131, - "name": "_from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 115, - "src": "2047:5:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 132, - "name": "_to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 117, - "src": "2054:3:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 133, - "name": "_amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119, - "src": "2059:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_599290589_by_1", - "typeString": "int_const 599290589" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 128, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3247, - "src": "1993:3:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 129, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "encodeWithSelector", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1993:22:0", - "typeDescriptions": { - "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", - "typeString": "function (bytes4) pure returns (bytes memory)" - } - }, - "id": 134, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1993:74:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "expression": { - "argumentTypes": null, - "id": 126, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6, - "src": "1982:5:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 127, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "call", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1982:10:0", - "typeDescriptions": { - "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory) payable returns (bool,bytes memory)" - } - }, - "id": 135, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1982:86:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", - "typeString": "tuple(bool,bytes memory)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1946:122:0" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 138, - "name": "success", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2082:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "6e6f7420656e6f75676820616c6c6f77656420746f6b656e73", - "id": 139, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2091:27:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_b31c8a8545ea674c554dd2f6bad7d7bd1dfe923a25150b76350dc6970bf3ff5c", - "typeString": "literal_string \"not enough allowed tokens\"" - }, - "value": "not enough allowed tokens" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_b31c8a8545ea674c554dd2f6bad7d7bd1dfe923a25150b76350dc6970bf3ff5c", - "typeString": "literal_string \"not enough allowed tokens\"" - } - ], - "id": 137, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 3263, - 3264 - ], - "referencedDeclaration": 3264, - "src": "2074:7:0", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 140, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2074:45:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 141, - "nodeType": "ExpressionStatement", - "src": "2074:45:0" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 145, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 142, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 125, - "src": "2219:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 143, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2219:11:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 144, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2233:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2219:15:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 169, - "nodeType": "IfStatement", - "src": "2215:225:0", - "trueBody": { - "id": 168, - "nodeType": "Block", - "src": "2236:204:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 150, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 147, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 125, - "src": "2252:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 148, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2252:11:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "3332", - "id": 149, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2267:2:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_32_by_1", - "typeString": "int_const 32" - }, - "value": "32" - }, - "src": "2252:17:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "64617461206c656e6774682073686f756c64206265206569746865722030206f72203332206279746573", - "id": 151, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2271:44:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_22b4652a1c8fbdfc6305c7ee289e87caf6a45e5ae327ee8f67eb64ba36d62560", - "typeString": "literal_string \"data length should be either 0 or 32 bytes\"" - }, - "value": "data length should be either 0 or 32 bytes" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_22b4652a1c8fbdfc6305c7ee289e87caf6a45e5ae327ee8f67eb64ba36d62560", - "typeString": "literal_string \"data length should be either 0 or 32 bytes\"" - } - ], - "id": 146, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 3263, - 3264 - ], - "referencedDeclaration": 3264, - "src": "2244:7:0", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 152, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2244:72:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 153, - "nodeType": "ExpressionStatement", - "src": "2244:72:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 161, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 154, - "name": "success", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2324:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 157, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 125, - "src": "2345:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "id": 158, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2352:4:0", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bool_$", - "typeString": "type(bool)" - }, - "typeName": "bool" - } - ], - "id": 159, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2351:6:0", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bool_$", - "typeString": "type(bool)" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_type$_t_bool_$", - "typeString": "type(bool)" - } - ], - "expression": { - "argumentTypes": null, - "id": 155, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3247, - "src": "2334:3:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 156, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "decode", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2334:10:0", - "typeDescriptions": { - "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 160, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2334:24:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "2324:34:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 162, - "nodeType": "ExpressionStatement", - "src": "2324:34:0" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 164, - "name": "success", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2374:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "6e6f7420656e6f75676820616c6c6f77656420746f6b656e732e20546f6b656e2072657475726e732066616c73652e", - "id": 165, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2383:49:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_6cfae212a217874b58247660ff4d75d72aa825e8f2120480a7da09cf7efa221d", - "typeString": "literal_string \"not enough allowed tokens. Token returns false.\"" - }, - "value": "not enough allowed tokens. Token returns false." - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_6cfae212a217874b58247660ff4d75d72aa825e8f2120480a7da09cf7efa221d", - "typeString": "literal_string \"not enough allowed tokens. Token returns false.\"" - } - ], - "id": 163, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 3263, - 3264 - ], - "referencedDeclaration": 3264, - "src": "2366:7:0", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 166, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2366:67:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 167, - "nodeType": "ExpressionStatement", - "src": "2366:67:0" - } - ] - } - } - ] - }, - "documentation": null, - "id": 171, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_safeErc20TransferFrom", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 120, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 115, - "name": "_from", - "nodeType": "VariableDeclaration", - "scope": 171, - "src": "1886:13:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 114, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1886:7:0", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 117, - "name": "_to", - "nodeType": "VariableDeclaration", - "scope": 171, - "src": "1901:11:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 116, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1901:7:0", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 119, - "name": "_amount", - "nodeType": "VariableDeclaration", - "scope": 171, - "src": "1914:15:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 118, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1914:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1885:45:0" - }, - "returnParameters": { - "id": 121, - "nodeType": "ParameterList", - "parameters": [], - "src": "1940:0:0" - }, - "scope": 227, - "src": "1854:590:0", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 225, - "nodeType": "Block", - "src": "2515:477:0", - "statements": [ - { - "assignments": [ - 179, - 181 - ], - "declarations": [ - { - "constant": false, - "id": 179, - "name": "success", - "nodeType": "VariableDeclaration", - "scope": 225, - "src": "2522:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 178, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "2522:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 181, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 225, - "src": "2536:17:0", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 180, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "2536:5:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 191, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30786139303539636262", - "id": 186, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2591:10:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2835717307_by_1", - "typeString": "int_const 2835717307" - }, - "value": "0xa9059cbb" - }, - { - "argumentTypes": null, - "id": 187, - "name": "_to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 173, - "src": "2618:3:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 188, - "name": "_amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 175, - "src": "2623:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_2835717307_by_1", - "typeString": "int_const 2835717307" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 184, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3247, - "src": "2568:3:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 185, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "encodeWithSelector", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2568:22:0", - "typeDescriptions": { - "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", - "typeString": "function (bytes4) pure returns (bytes memory)" - } - }, - "id": 189, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2568:63:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "expression": { - "argumentTypes": null, - "id": 182, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6, - "src": "2557:5:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 183, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "call", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2557:10:0", - "typeDescriptions": { - "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory) payable returns (bool,bytes memory)" - } - }, - "id": 190, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2557:75:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", - "typeString": "tuple(bool,bytes memory)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2521:111:0" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 193, - "name": "success", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 179, - "src": "2646:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "6e6f7420656e6f75676820746f6b656e73", - "id": 194, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2655:19:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_73949bcdc07934e9395e82489bb22c4742e057960a2c090d38e53d68d3caf52a", - "typeString": "literal_string \"not enough tokens\"" - }, - "value": "not enough tokens" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_73949bcdc07934e9395e82489bb22c4742e057960a2c090d38e53d68d3caf52a", - "typeString": "literal_string \"not enough tokens\"" - } - ], - "id": 192, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 3263, - 3264 - ], - "referencedDeclaration": 3264, - "src": "2638:7:0", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 195, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2638:37:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 196, - "nodeType": "ExpressionStatement", - "src": "2638:37:0" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 200, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 197, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 181, - "src": "2775:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 198, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2775:11:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 199, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2789:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2775:15:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 224, - "nodeType": "IfStatement", - "src": "2771:217:0", - "trueBody": { - "id": 223, - "nodeType": "Block", - "src": "2792:196:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 205, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 202, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 181, - "src": "2808:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 203, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2808:11:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "3332", - "id": 204, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2823:2:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_32_by_1", - "typeString": "int_const 32" - }, - "value": "32" - }, - "src": "2808:17:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "64617461206c656e6774682073686f756c64206265206569746865722030206f72203332206279746573", - "id": 206, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2827:44:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_22b4652a1c8fbdfc6305c7ee289e87caf6a45e5ae327ee8f67eb64ba36d62560", - "typeString": "literal_string \"data length should be either 0 or 32 bytes\"" - }, - "value": "data length should be either 0 or 32 bytes" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_22b4652a1c8fbdfc6305c7ee289e87caf6a45e5ae327ee8f67eb64ba36d62560", - "typeString": "literal_string \"data length should be either 0 or 32 bytes\"" - } - ], - "id": 201, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 3263, - 3264 - ], - "referencedDeclaration": 3264, - "src": "2800:7:0", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 207, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2800:72:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 208, - "nodeType": "ExpressionStatement", - "src": "2800:72:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 216, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 209, - "name": "success", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 179, - "src": "2880:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 212, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 181, - "src": "2901:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "id": 213, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2908:4:0", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bool_$", - "typeString": "type(bool)" - }, - "typeName": "bool" - } - ], - "id": 214, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2907:6:0", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bool_$", - "typeString": "type(bool)" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_type$_t_bool_$", - "typeString": "type(bool)" - } - ], - "expression": { - "argumentTypes": null, - "id": 210, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3247, - "src": "2890:3:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 211, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "decode", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2890:10:0", - "typeDescriptions": { - "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 215, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2890:24:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "2880:34:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 217, - "nodeType": "ExpressionStatement", - "src": "2880:34:0" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 219, - "name": "success", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 179, - "src": "2930:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "6e6f7420656e6f75676820746f6b656e732e20546f6b656e2072657475726e732066616c73652e", - "id": 220, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2939:41:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_38fa5aabf87e9f42de902eb4d9022484dde7943d80702b79ba468e9fc08f5e5e", - "typeString": "literal_string \"not enough tokens. Token returns false.\"" - }, - "value": "not enough tokens. Token returns false." - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_38fa5aabf87e9f42de902eb4d9022484dde7943d80702b79ba468e9fc08f5e5e", - "typeString": "literal_string \"not enough tokens. Token returns false.\"" - } - ], - "id": 218, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 3263, - 3264 - ], - "referencedDeclaration": 3264, - "src": "2922:7:0", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 221, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2922:59:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 222, - "nodeType": "ExpressionStatement", - "src": "2922:59:0" - } - ] - } - } - ] - }, - "documentation": null, - "id": 226, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_safeErc20Transfer", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 176, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 173, - "name": "_to", - "nodeType": "VariableDeclaration", - "scope": 226, - "src": "2476:11:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 172, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2476:7:0", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 175, - "name": "_amount", - "nodeType": "VariableDeclaration", - "scope": 226, - "src": "2489:15:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 174, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2489:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2475:30:0" - }, - "returnParameters": { - "id": 177, - "nodeType": "ParameterList", - "parameters": [], - "src": "2515:0:0" - }, - "scope": 227, - "src": "2448:544:0", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - } - ], - "scope": 228, - "src": "805:2189:0" - } - ], - "src": "755:2240:0" - }, - "legacyAST": { - "attributes": { - "absolutePath": "/Users/brianli/dotfiles/tornado-core/contracts/ERC20Tornado.sol", - "exportedSymbols": { - "ERC20Tornado": [ - 227 - ] - } - }, - "children": [ - { - "attributes": { - "literals": [ - "solidity", - "0.5", - ".17" - ] - }, - "id": 1, - "name": "PragmaDirective", - "src": "755:23:0" - }, - { - "attributes": { - "SourceUnit": 1195, - "absolutePath": "/Users/brianli/dotfiles/tornado-core/contracts/Tornado.sol", - "file": "./Tornado.sol", - "scope": 228, - "symbolAliases": [ - null - ], - "unitAlias": "" - }, - "id": 2, - "name": "ImportDirective", - "src": "780:23:0" - }, - { - "attributes": { - "contractDependencies": [ - 694, - 1194, - 3245 - ], - "contractKind": "contract", - "documentation": null, - "fullyImplemented": true, - "linearizedBaseContracts": [ - 227, - 1194, - 3245, - 694 - ], - "name": "ERC20Tornado", - "scope": 228 - }, - "children": [ - { - "attributes": { - "arguments": null - }, - "children": [ - { - "attributes": { - "contractScope": null, - "name": "Tornado", - "referencedDeclaration": 1194, - "type": "contract Tornado" - }, - "id": 3, - "name": "UserDefinedTypeName", - "src": "830:7:0" - } - ], - "id": 4, - "name": "InheritanceSpecifier", - "src": "830:7:0" - }, - { - "attributes": { - "constant": false, - "name": "token", - "scope": 227, - "stateVariable": true, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "public" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 5, - "name": "ElementaryTypeName", - "src": "842:7:0" - } - ], - "id": 6, - "name": "VariableDeclaration", - "src": "842:20:0" - }, - { - "attributes": { - "documentation": null, - "implemented": true, - "isConstructor": true, - "kind": "constructor", - "name": "", - "scope": 227, - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "_verifier", - "scope": 30, - "stateVariable": false, - "storageLocation": "default", - "type": "contract IVerifier", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "contractScope": null, - "name": "IVerifier", - "referencedDeclaration": 891, - "type": "contract IVerifier" - }, - "id": 7, - "name": "UserDefinedTypeName", - "src": "884:9:0" - } - ], - "id": 8, - "name": "VariableDeclaration", - "src": "884:19:0" - }, - { - "attributes": { - "constant": false, - "name": "_denomination", - "scope": 30, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 9, - "name": "ElementaryTypeName", - "src": "909:7:0" - } - ], - "id": 10, - "name": "VariableDeclaration", - "src": "909:21:0" - }, - { - "attributes": { - "constant": false, - "name": "_merkleTreeHeight", - "scope": 30, - "stateVariable": false, - "storageLocation": "default", - "type": "uint32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint32", - "type": "uint32" - }, - "id": 11, - "name": "ElementaryTypeName", - "src": "936:6:0" - } - ], - "id": 12, - "name": "VariableDeclaration", - "src": "936:24:0" - }, - { - "attributes": { - "constant": false, - "name": "_operator", - "scope": 30, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 13, - "name": "ElementaryTypeName", - "src": "966:7:0" - } - ], - "id": 14, - "name": "VariableDeclaration", - "src": "966:17:0" - }, - { - "attributes": { - "constant": false, - "name": "_token", - "scope": 30, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 15, - "name": "ElementaryTypeName", - "src": "989:7:0" - } - ], - "id": 16, - "name": "VariableDeclaration", - "src": "989:14:0" - } - ], - "id": 17, - "name": "ParameterList", - "src": "878:129:0" - }, - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 24, - "name": "ParameterList", - "src": "1079:0:0" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1194, - "type": "type(contract Tornado)", - "value": "Tornado" - }, - "id": 18, - "name": "Identifier", - "src": "1008:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 8, - "type": "contract IVerifier", - "value": "_verifier" - }, - "id": 19, - "name": "Identifier", - "src": "1016:9:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 10, - "type": "uint256", - "value": "_denomination" - }, - "id": 20, - "name": "Identifier", - "src": "1027:13:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 12, - "type": "uint32", - "value": "_merkleTreeHeight" - }, - "id": 21, - "name": "Identifier", - "src": "1042:17:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 14, - "type": "address", - "value": "_operator" - }, - "id": 22, - "name": "Identifier", - "src": "1061:9:0" - } - ], - "id": 23, - "name": "ModifierInvocation", - "src": "1008:63:0" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 6, - "type": "address", - "value": "token" - }, - "id": 25, - "name": "Identifier", - "src": "1085:5:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 16, - "type": "address", - "value": "_token" - }, - "id": 26, - "name": "Identifier", - "src": "1093:6:0" - } - ], - "id": 27, - "name": "Assignment", - "src": "1085:14:0" - } - ], - "id": 28, - "name": "ExpressionStatement", - "src": "1085:14:0" - } - ], - "id": 29, - "name": "Block", - "src": "1079:25:0" - } - ], - "id": 30, - "name": "FunctionDefinition", - "src": "867:237:0" - }, - { - "attributes": { - "documentation": null, - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "_processDeposit", - "scope": 227, - "stateMutability": "nonpayable", - "superFunction": 1014, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 31, - "name": "ParameterList", - "src": "1132:2:0" - }, - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 32, - "name": "ParameterList", - "src": "1144:0:0" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_b14b0818f1fdc710b92ba7e1ce725992b43e47a5b220b1b890f352eeac2e1d5e", - "typeString": "literal_string \"ETH value is supposed to be 0 for ERC20 instance\"" - } - ], - "overloadedDeclarations": [ - 3263, - 3264 - ], - "referencedDeclaration": 3264, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 33, - "name": "Identifier", - "src": "1150:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "value", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 3260, - "type": "msg", - "value": "msg" - }, - "id": 34, - "name": "Identifier", - "src": "1158:3:0" - } - ], - "id": 35, - "name": "MemberAccess", - "src": "1158:9:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 36, - "name": "Literal", - "src": "1171:1:0" - } - ], - "id": 37, - "name": "BinaryOperation", - "src": "1158:14:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "4554482076616c756520697320737570706f73656420746f206265203020666f7220455243323020696e7374616e6365", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"ETH value is supposed to be 0 for ERC20 instance\"", - "value": "ETH value is supposed to be 0 for ERC20 instance" - }, - "id": 38, - "name": "Literal", - "src": "1174:50:0" - } - ], - "id": 39, - "name": "FunctionCall", - "src": "1150:75:0" - } - ], - "id": 40, - "name": "ExpressionStatement", - "src": "1150:75:0" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 171, - "type": "function (address,address,uint256)", - "value": "_safeErc20TransferFrom" - }, - "id": 41, - "name": "Identifier", - "src": "1231:22:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sender", - "referencedDeclaration": null, - "type": "address payable" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 3260, - "type": "msg", - "value": "msg" - }, - "id": 42, - "name": "Identifier", - "src": "1254:3:0" - } - ], - "id": 43, - "name": "MemberAccess", - "src": "1254:10:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "address", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_ERC20Tornado_$227", - "typeString": "contract ERC20Tornado" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(address)", - "value": "address" - }, - "id": 44, - "name": "ElementaryTypeNameExpression", - "src": "1266:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 3284, - "type": "contract ERC20Tornado", - "value": "this" - }, - "id": 45, - "name": "Identifier", - "src": "1274:4:0" - } - ], - "id": 46, - "name": "FunctionCall", - "src": "1266:13:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 897, - "type": "uint256", - "value": "denomination" - }, - "id": 47, - "name": "Identifier", - "src": "1281:12:0" - } - ], - "id": 48, - "name": "FunctionCall", - "src": "1231:63:0" - } - ], - "id": 49, - "name": "ExpressionStatement", - "src": "1231:63:0" - } - ], - "id": 50, - "name": "Block", - "src": "1144:155:0" - } - ], - "id": 51, - "name": "FunctionDefinition", - "src": "1108:191:0" - }, - { - "attributes": { - "documentation": null, - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "_processWithdraw", - "scope": 227, - "stateMutability": "nonpayable", - "superFunction": 1110, - "visibility": "internal" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "_recipient", - "scope": 113, - "stateVariable": false, - "storageLocation": "default", - "type": "address payable", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "payable", - "type": "address payable" - }, - "id": 52, - "name": "ElementaryTypeName", - "src": "1329:15:0" - } - ], - "id": 53, - "name": "VariableDeclaration", - "src": "1329:26:0" - }, - { - "attributes": { - "constant": false, - "name": "_relayer", - "scope": 113, - "stateVariable": false, - "storageLocation": "default", - "type": "address payable", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "payable", - "type": "address payable" - }, - "id": 54, - "name": "ElementaryTypeName", - "src": "1357:15:0" - } - ], - "id": 55, - "name": "VariableDeclaration", - "src": "1357:24:0" - }, - { - "attributes": { - "constant": false, - "name": "_fee", - "scope": 113, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 56, - "name": "ElementaryTypeName", - "src": "1383:7:0" - } - ], - "id": 57, - "name": "VariableDeclaration", - "src": "1383:12:0" - }, - { - "attributes": { - "constant": false, - "name": "_refund", - "scope": 113, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 58, - "name": "ElementaryTypeName", - "src": "1397:7:0" - } - ], - "id": 59, - "name": "VariableDeclaration", - "src": "1397:15:0" - } - ], - "id": 60, - "name": "ParameterList", - "src": "1328:85:0" - }, - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 61, - "name": "ParameterList", - "src": "1423:0:0" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_3189ced290ffd29dc422911cd3b29574f21c524c91f4b41e6abb0646c581cbff", - "typeString": "literal_string \"Incorrect refund amount received by the contract\"" - } - ], - "overloadedDeclarations": [ - 3263, - 3264 - ], - "referencedDeclaration": 3264, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 62, - "name": "Identifier", - "src": "1429:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "value", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 3260, - "type": "msg", - "value": "msg" - }, - "id": 63, - "name": "Identifier", - "src": "1437:3:0" - } - ], - "id": 64, - "name": "MemberAccess", - "src": "1437:9:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 59, - "type": "uint256", - "value": "_refund" - }, - "id": 65, - "name": "Identifier", - "src": "1450:7:0" - } - ], - "id": 66, - "name": "BinaryOperation", - "src": "1437:20:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "496e636f727265637420726566756e6420616d6f756e742072656365697665642062792074686520636f6e7472616374", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"Incorrect refund amount received by the contract\"", - "value": "Incorrect refund amount received by the contract" - }, - "id": 67, - "name": "Literal", - "src": "1459:50:0" - } - ], - "id": 68, - "name": "FunctionCall", - "src": "1429:81:0" - } - ], - "id": 69, - "name": "ExpressionStatement", - "src": "1429:81:0" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 226, - "type": "function (address,uint256)", - "value": "_safeErc20Transfer" - }, - "id": 70, - "name": "Identifier", - "src": "1517:18:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 53, - "type": "address payable", - "value": "_recipient" - }, - "id": 71, - "name": "Identifier", - "src": "1536:10:0" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "-", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 897, - "type": "uint256", - "value": "denomination" - }, - "id": 72, - "name": "Identifier", - "src": "1548:12:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 57, - "type": "uint256", - "value": "_fee" - }, - "id": 73, - "name": "Identifier", - "src": "1563:4:0" - } - ], - "id": 74, - "name": "BinaryOperation", - "src": "1548:19:0" - } - ], - "id": 75, - "name": "FunctionCall", - "src": "1517:51:0" - } - ], - "id": 76, - "name": "ExpressionStatement", - "src": "1517:51:0" - }, - { - "attributes": { - "falseBody": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": ">", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 57, - "type": "uint256", - "value": "_fee" - }, - "id": 77, - "name": "Identifier", - "src": "1578:4:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 78, - "name": "Literal", - "src": "1585:1:0" - } - ], - "id": 79, - "name": "BinaryOperation", - "src": "1578:8:0" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 226, - "type": "function (address,uint256)", - "value": "_safeErc20Transfer" - }, - "id": 80, - "name": "Identifier", - "src": "1596:18:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 55, - "type": "address payable", - "value": "_relayer" - }, - "id": 81, - "name": "Identifier", - "src": "1615:8:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 57, - "type": "uint256", - "value": "_fee" - }, - "id": 82, - "name": "Identifier", - "src": "1625:4:0" - } - ], - "id": 83, - "name": "FunctionCall", - "src": "1596:34:0" - } - ], - "id": 84, - "name": "ExpressionStatement", - "src": "1596:34:0" - } - ], - "id": 85, - "name": "Block", - "src": "1588:49:0" - } - ], - "id": 86, - "name": "IfStatement", - "src": "1574:63:0" - }, - { - "attributes": { - "falseBody": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": ">", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 59, - "type": "uint256", - "value": "_refund" - }, - "id": 87, - "name": "Identifier", - "src": "1647:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 88, - "name": "Literal", - "src": "1657:1:0" - } - ], - "id": 89, - "name": "BinaryOperation", - "src": "1647:11:0" - }, - { - "children": [ - { - "attributes": { - "assignments": [ - 91, - null - ] - }, - "children": [ - { - "attributes": { - "constant": false, - "name": "success", - "scope": 110, - "stateVariable": false, - "storageLocation": "default", - "type": "bool", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bool", - "type": "bool" - }, - "id": 90, - "name": "ElementaryTypeName", - "src": "1669:4:0" - } - ], - "id": 91, - "name": "VariableDeclaration", - "src": "1669:12:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "tuple(bool,bytes memory)", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "typeString": "literal_string \"\"" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "function (bytes memory) payable returns (bool,bytes memory)", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "value", - "referencedDeclaration": null, - "type": "function (uint256) pure returns (function (bytes memory) payable returns (bool,bytes memory))" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "call", - "referencedDeclaration": null, - "type": "function (bytes memory) payable returns (bool,bytes memory)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 53, - "type": "address payable", - "value": "_recipient" - }, - "id": 92, - "name": "Identifier", - "src": "1687:10:0" - } - ], - "id": 93, - "name": "MemberAccess", - "src": "1687:15:0" - } - ], - "id": 94, - "name": "MemberAccess", - "src": "1687:21:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 59, - "type": "uint256", - "value": "_refund" - }, - "id": 95, - "name": "Identifier", - "src": "1709:7:0" - } - ], - "id": 96, - "name": "FunctionCall", - "src": "1687:30:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"\"", - "value": "" - }, - "id": 97, - "name": "Literal", - "src": "1718:2:0" - } - ], - "id": 98, - "name": "FunctionCall", - "src": "1687:34:0" - } - ], - "id": 99, - "name": "VariableDeclarationStatement", - "src": "1668:53:0" - }, - { - "attributes": { - "falseBody": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!", - "prefix": true, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 91, - "type": "bool", - "value": "success" - }, - "id": 100, - "name": "Identifier", - "src": "1734:7:0" - } - ], - "id": 101, - "name": "UnaryOperation", - "src": "1733:8:0" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "transfer", - "referencedDeclaration": null, - "type": "function (uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 55, - "type": "address payable", - "value": "_relayer" - }, - "id": 102, - "name": "Identifier", - "src": "1805:8:0" - } - ], - "id": 104, - "name": "MemberAccess", - "src": "1805:17:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 59, - "type": "uint256", - "value": "_refund" - }, - "id": 105, - "name": "Identifier", - "src": "1823:7:0" - } - ], - "id": 106, - "name": "FunctionCall", - "src": "1805:26:0" - } - ], - "id": 107, - "name": "ExpressionStatement", - "src": "1805:26:0" - } - ], - "id": 108, - "name": "Block", - "src": "1743:97:0" - } - ], - "id": 109, - "name": "IfStatement", - "src": "1729:111:0" - } - ], - "id": 110, - "name": "Block", - "src": "1660:186:0" - } - ], - "id": 111, - "name": "IfStatement", - "src": "1643:203:0" - } - ], - "id": 112, - "name": "Block", - "src": "1423:427:0" - } - ], - "id": 113, - "name": "FunctionDefinition", - "src": "1303:547:0" - }, - { - "attributes": { - "documentation": null, - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "_safeErc20TransferFrom", - "scope": 227, - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "_from", - "scope": 171, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 114, - "name": "ElementaryTypeName", - "src": "1886:7:0" - } - ], - "id": 115, - "name": "VariableDeclaration", - "src": "1886:13:0" - }, - { - "attributes": { - "constant": false, - "name": "_to", - "scope": 171, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 116, - "name": "ElementaryTypeName", - "src": "1901:7:0" - } - ], - "id": 117, - "name": "VariableDeclaration", - "src": "1901:11:0" - }, - { - "attributes": { - "constant": false, - "name": "_amount", - "scope": 171, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 118, - "name": "ElementaryTypeName", - "src": "1914:7:0" - } - ], - "id": 119, - "name": "VariableDeclaration", - "src": "1914:15:0" - } - ], - "id": 120, - "name": "ParameterList", - "src": "1885:45:0" - }, - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 121, - "name": "ParameterList", - "src": "1940:0:0" - }, - { - "children": [ - { - "attributes": { - "assignments": [ - 123, - 125 - ] - }, - "children": [ - { - "attributes": { - "constant": false, - "name": "success", - "scope": 170, - "stateVariable": false, - "storageLocation": "default", - "type": "bool", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bool", - "type": "bool" - }, - "id": 122, - "name": "ElementaryTypeName", - "src": "1947:4:0" - } - ], - "id": 123, - "name": "VariableDeclaration", - "src": "1947:12:0" - }, - { - "attributes": { - "constant": false, - "name": "data", - "scope": 170, - "stateVariable": false, - "storageLocation": "memory", - "type": "bytes", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes", - "type": "bytes" - }, - "id": 124, - "name": "ElementaryTypeName", - "src": "1961:5:0" - } - ], - "id": 125, - "name": "VariableDeclaration", - "src": "1961:17:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "tuple(bool,bytes memory)", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "call", - "referencedDeclaration": null, - "type": "function (bytes memory) payable returns (bool,bytes memory)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 6, - "type": "address", - "value": "token" - }, - "id": 126, - "name": "Identifier", - "src": "1982:5:0" - } - ], - "id": 127, - "name": "MemberAccess", - "src": "1982:10:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "bytes memory", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_599290589_by_1", - "typeString": "int_const 599290589" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "member_name": "encodeWithSelector", - "referencedDeclaration": null, - "type": "function (bytes4) pure returns (bytes memory)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 3247, - "type": "abi", - "value": "abi" - }, - "id": 128, - "name": "Identifier", - "src": "1993:3:0" - } - ], - "id": 129, - "name": "MemberAccess", - "src": "1993:22:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30783233623837326464", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 599290589", - "value": "0x23b872dd" - }, - "id": 130, - "name": "Literal", - "src": "2016:10:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 115, - "type": "address", - "value": "_from" - }, - "id": 131, - "name": "Identifier", - "src": "2047:5:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 117, - "type": "address", - "value": "_to" - }, - "id": 132, - "name": "Identifier", - "src": "2054:3:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 119, - "type": "uint256", - "value": "_amount" - }, - "id": 133, - "name": "Identifier", - "src": "2059:7:0" - } - ], - "id": 134, - "name": "FunctionCall", - "src": "1993:74:0" - } - ], - "id": 135, - "name": "FunctionCall", - "src": "1982:86:0" - } - ], - "id": 136, - "name": "VariableDeclarationStatement", - "src": "1946:122:0" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_b31c8a8545ea674c554dd2f6bad7d7bd1dfe923a25150b76350dc6970bf3ff5c", - "typeString": "literal_string \"not enough allowed tokens\"" - } - ], - "overloadedDeclarations": [ - 3263, - 3264 - ], - "referencedDeclaration": 3264, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 137, - "name": "Identifier", - "src": "2074:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 123, - "type": "bool", - "value": "success" - }, - "id": 138, - "name": "Identifier", - "src": "2082:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "6e6f7420656e6f75676820616c6c6f77656420746f6b656e73", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"not enough allowed tokens\"", - "value": "not enough allowed tokens" - }, - "id": 139, - "name": "Literal", - "src": "2091:27:0" - } - ], - "id": 140, - "name": "FunctionCall", - "src": "2074:45:0" - } - ], - "id": 141, - "name": "ExpressionStatement", - "src": "2074:45:0" - }, - { - "attributes": { - "falseBody": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": ">", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "length", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 125, - "type": "bytes memory", - "value": "data" - }, - "id": 142, - "name": "Identifier", - "src": "2219:4:0" - } - ], - "id": 143, - "name": "MemberAccess", - "src": "2219:11:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 144, - "name": "Literal", - "src": "2233:1:0" - } - ], - "id": 145, - "name": "BinaryOperation", - "src": "2219:15:0" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_22b4652a1c8fbdfc6305c7ee289e87caf6a45e5ae327ee8f67eb64ba36d62560", - "typeString": "literal_string \"data length should be either 0 or 32 bytes\"" - } - ], - "overloadedDeclarations": [ - 3263, - 3264 - ], - "referencedDeclaration": 3264, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 146, - "name": "Identifier", - "src": "2244:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "length", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 125, - "type": "bytes memory", - "value": "data" - }, - "id": 147, - "name": "Identifier", - "src": "2252:4:0" - } - ], - "id": 148, - "name": "MemberAccess", - "src": "2252:11:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "3332", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 32", - "value": "32" - }, - "id": 149, - "name": "Literal", - "src": "2267:2:0" - } - ], - "id": 150, - "name": "BinaryOperation", - "src": "2252:17:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "64617461206c656e6774682073686f756c64206265206569746865722030206f72203332206279746573", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"data length should be either 0 or 32 bytes\"", - "value": "data length should be either 0 or 32 bytes" - }, - "id": 151, - "name": "Literal", - "src": "2271:44:0" - } - ], - "id": 152, - "name": "FunctionCall", - "src": "2244:72:0" - } - ], - "id": 153, - "name": "ExpressionStatement", - "src": "2244:72:0" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 123, - "type": "bool", - "value": "success" - }, - "id": 154, - "name": "Identifier", - "src": "2324:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "bool", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_type$_t_bool_$", - "typeString": "type(bool)" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "member_name": "decode", - "referencedDeclaration": null, - "type": "function () pure" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 3247, - "type": "abi", - "value": "abi" - }, - "id": 155, - "name": "Identifier", - "src": "2334:3:0" - } - ], - "id": 156, - "name": "MemberAccess", - "src": "2334:10:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 125, - "type": "bytes memory", - "value": "data" - }, - "id": 157, - "name": "Identifier", - "src": "2345:4:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(bool)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(bool)", - "value": "bool" - }, - "id": 158, - "name": "ElementaryTypeNameExpression", - "src": "2352:4:0" - } - ], - "id": 159, - "name": "TupleExpression", - "src": "2351:6:0" - } - ], - "id": 160, - "name": "FunctionCall", - "src": "2334:24:0" - } - ], - "id": 161, - "name": "Assignment", - "src": "2324:34:0" - } - ], - "id": 162, - "name": "ExpressionStatement", - "src": "2324:34:0" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_6cfae212a217874b58247660ff4d75d72aa825e8f2120480a7da09cf7efa221d", - "typeString": "literal_string \"not enough allowed tokens. Token returns false.\"" - } - ], - "overloadedDeclarations": [ - 3263, - 3264 - ], - "referencedDeclaration": 3264, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 163, - "name": "Identifier", - "src": "2366:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 123, - "type": "bool", - "value": "success" - }, - "id": 164, - "name": "Identifier", - "src": "2374:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "6e6f7420656e6f75676820616c6c6f77656420746f6b656e732e20546f6b656e2072657475726e732066616c73652e", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"not enough allowed tokens. Token returns false.\"", - "value": "not enough allowed tokens. Token returns false." - }, - "id": 165, - "name": "Literal", - "src": "2383:49:0" - } - ], - "id": 166, - "name": "FunctionCall", - "src": "2366:67:0" - } - ], - "id": 167, - "name": "ExpressionStatement", - "src": "2366:67:0" - } - ], - "id": 168, - "name": "Block", - "src": "2236:204:0" - } - ], - "id": 169, - "name": "IfStatement", - "src": "2215:225:0" - } - ], - "id": 170, - "name": "Block", - "src": "1940:504:0" - } - ], - "id": 171, - "name": "FunctionDefinition", - "src": "1854:590:0" - }, - { - "attributes": { - "documentation": null, - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "_safeErc20Transfer", - "scope": 227, - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "_to", - "scope": 226, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 172, - "name": "ElementaryTypeName", - "src": "2476:7:0" - } - ], - "id": 173, - "name": "VariableDeclaration", - "src": "2476:11:0" - }, - { - "attributes": { - "constant": false, - "name": "_amount", - "scope": 226, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 174, - "name": "ElementaryTypeName", - "src": "2489:7:0" - } - ], - "id": 175, - "name": "VariableDeclaration", - "src": "2489:15:0" - } - ], - "id": 176, - "name": "ParameterList", - "src": "2475:30:0" - }, - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 177, - "name": "ParameterList", - "src": "2515:0:0" - }, - { - "children": [ - { - "attributes": { - "assignments": [ - 179, - 181 - ] - }, - "children": [ - { - "attributes": { - "constant": false, - "name": "success", - "scope": 225, - "stateVariable": false, - "storageLocation": "default", - "type": "bool", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bool", - "type": "bool" - }, - "id": 178, - "name": "ElementaryTypeName", - "src": "2522:4:0" - } - ], - "id": 179, - "name": "VariableDeclaration", - "src": "2522:12:0" - }, - { - "attributes": { - "constant": false, - "name": "data", - "scope": 225, - "stateVariable": false, - "storageLocation": "memory", - "type": "bytes", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes", - "type": "bytes" - }, - "id": 180, - "name": "ElementaryTypeName", - "src": "2536:5:0" - } - ], - "id": 181, - "name": "VariableDeclaration", - "src": "2536:17:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "tuple(bool,bytes memory)", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "call", - "referencedDeclaration": null, - "type": "function (bytes memory) payable returns (bool,bytes memory)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 6, - "type": "address", - "value": "token" - }, - "id": 182, - "name": "Identifier", - "src": "2557:5:0" - } - ], - "id": 183, - "name": "MemberAccess", - "src": "2557:10:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "bytes memory", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_2835717307_by_1", - "typeString": "int_const 2835717307" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "member_name": "encodeWithSelector", - "referencedDeclaration": null, - "type": "function (bytes4) pure returns (bytes memory)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 3247, - "type": "abi", - "value": "abi" - }, - "id": 184, - "name": "Identifier", - "src": "2568:3:0" - } - ], - "id": 185, - "name": "MemberAccess", - "src": "2568:22:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30786139303539636262", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 2835717307", - "value": "0xa9059cbb" - }, - "id": 186, - "name": "Literal", - "src": "2591:10:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 173, - "type": "address", - "value": "_to" - }, - "id": 187, - "name": "Identifier", - "src": "2618:3:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 175, - "type": "uint256", - "value": "_amount" - }, - "id": 188, - "name": "Identifier", - "src": "2623:7:0" - } - ], - "id": 189, - "name": "FunctionCall", - "src": "2568:63:0" - } - ], - "id": 190, - "name": "FunctionCall", - "src": "2557:75:0" - } - ], - "id": 191, - "name": "VariableDeclarationStatement", - "src": "2521:111:0" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_73949bcdc07934e9395e82489bb22c4742e057960a2c090d38e53d68d3caf52a", - "typeString": "literal_string \"not enough tokens\"" - } - ], - "overloadedDeclarations": [ - 3263, - 3264 - ], - "referencedDeclaration": 3264, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 192, - "name": "Identifier", - "src": "2638:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 179, - "type": "bool", - "value": "success" - }, - "id": 193, - "name": "Identifier", - "src": "2646:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "6e6f7420656e6f75676820746f6b656e73", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"not enough tokens\"", - "value": "not enough tokens" - }, - "id": 194, - "name": "Literal", - "src": "2655:19:0" - } - ], - "id": 195, - "name": "FunctionCall", - "src": "2638:37:0" - } - ], - "id": 196, - "name": "ExpressionStatement", - "src": "2638:37:0" - }, - { - "attributes": { - "falseBody": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": ">", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "length", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 181, - "type": "bytes memory", - "value": "data" - }, - "id": 197, - "name": "Identifier", - "src": "2775:4:0" - } - ], - "id": 198, - "name": "MemberAccess", - "src": "2775:11:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 199, - "name": "Literal", - "src": "2789:1:0" - } - ], - "id": 200, - "name": "BinaryOperation", - "src": "2775:15:0" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_22b4652a1c8fbdfc6305c7ee289e87caf6a45e5ae327ee8f67eb64ba36d62560", - "typeString": "literal_string \"data length should be either 0 or 32 bytes\"" - } - ], - "overloadedDeclarations": [ - 3263, - 3264 - ], - "referencedDeclaration": 3264, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 201, - "name": "Identifier", - "src": "2800:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "length", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 181, - "type": "bytes memory", - "value": "data" - }, - "id": 202, - "name": "Identifier", - "src": "2808:4:0" - } - ], - "id": 203, - "name": "MemberAccess", - "src": "2808:11:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "3332", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 32", - "value": "32" - }, - "id": 204, - "name": "Literal", - "src": "2823:2:0" - } - ], - "id": 205, - "name": "BinaryOperation", - "src": "2808:17:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "64617461206c656e6774682073686f756c64206265206569746865722030206f72203332206279746573", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"data length should be either 0 or 32 bytes\"", - "value": "data length should be either 0 or 32 bytes" - }, - "id": 206, - "name": "Literal", - "src": "2827:44:0" - } - ], - "id": 207, - "name": "FunctionCall", - "src": "2800:72:0" - } - ], - "id": 208, - "name": "ExpressionStatement", - "src": "2800:72:0" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 179, - "type": "bool", - "value": "success" - }, - "id": 209, - "name": "Identifier", - "src": "2880:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "bool", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_type$_t_bool_$", - "typeString": "type(bool)" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "member_name": "decode", - "referencedDeclaration": null, - "type": "function () pure" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 3247, - "type": "abi", - "value": "abi" - }, - "id": 210, - "name": "Identifier", - "src": "2890:3:0" - } - ], - "id": 211, - "name": "MemberAccess", - "src": "2890:10:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 181, - "type": "bytes memory", - "value": "data" - }, - "id": 212, - "name": "Identifier", - "src": "2901:4:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(bool)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(bool)", - "value": "bool" - }, - "id": 213, - "name": "ElementaryTypeNameExpression", - "src": "2908:4:0" - } - ], - "id": 214, - "name": "TupleExpression", - "src": "2907:6:0" - } - ], - "id": 215, - "name": "FunctionCall", - "src": "2890:24:0" - } - ], - "id": 216, - "name": "Assignment", - "src": "2880:34:0" - } - ], - "id": 217, - "name": "ExpressionStatement", - "src": "2880:34:0" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_38fa5aabf87e9f42de902eb4d9022484dde7943d80702b79ba468e9fc08f5e5e", - "typeString": "literal_string \"not enough tokens. Token returns false.\"" - } - ], - "overloadedDeclarations": [ - 3263, - 3264 - ], - "referencedDeclaration": 3264, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 218, - "name": "Identifier", - "src": "2922:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 179, - "type": "bool", - "value": "success" - }, - "id": 219, - "name": "Identifier", - "src": "2930:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "6e6f7420656e6f75676820746f6b656e732e20546f6b656e2072657475726e732066616c73652e", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"not enough tokens. Token returns false.\"", - "value": "not enough tokens. Token returns false." - }, - "id": 220, - "name": "Literal", - "src": "2939:41:0" - } - ], - "id": 221, - "name": "FunctionCall", - "src": "2922:59:0" - } - ], - "id": 222, - "name": "ExpressionStatement", - "src": "2922:59:0" - } - ], - "id": 223, - "name": "Block", - "src": "2792:196:0" - } - ], - "id": 224, - "name": "IfStatement", - "src": "2771:217:0" - } - ], - "id": 225, - "name": "Block", - "src": "2515:477:0" - } - ], - "id": 226, - "name": "FunctionDefinition", - "src": "2448:544:0" - } - ], - "id": 227, - "name": "ContractDefinition", - "src": "805:2189:0" - } - ], - "id": 228, - "name": "SourceUnit", - "src": "755:2240:0" - }, - "compiler": { - "name": "solc", - "version": "0.5.17+commit.d19bba13.Emscripten.clang" - }, - "networks": { - "42220": { - "events": {}, - "links": { - "Hasher": "0xD75035293f552aB5c33483f321DBf0DfA1C7c71d" - }, - "address": "0xf1aA668d21Fe0560Af8d2B25047711FE70790B9d", - "transactionHash": "0xcb70e996a89f6d9ade8e386155644d4083444a9e240e9fb937f82e773117e55f" - } - }, - "schemaVersion": "3.3.4", - "updatedAt": "2021-03-22T02:49:02.007Z", - "networkType": "ethereum", - "devdoc": { - "methods": { - "changeOperator(address)": { - "details": "operator can change his address " - }, - "deposit(bytes32)": { - "details": "Deposit funds into the contract. The caller must send (for ETH) or approve (for ERC20) value equal to or `denomination` of this instance.", - "params": { - "_commitment": "the note commitment, which is PedersenHash(nullifier + secret)" - } - }, - "getLastRoot()": { - "details": "Returns the last root" - }, - "hashLeftRight(bytes32,bytes32)": { - "details": "Hash 2 tree leaves, returns MiMC(_left, _right)" - }, - "isKnownRoot(bytes32)": { - "details": "Whether the root is present in the root history" - }, - "isSpent(bytes32)": { - "details": "whether a note is already spent " - }, - "isSpentArray(bytes32[])": { - "details": "whether an array of notes is already spent " - }, - "updateVerifier(address)": { - "details": "allow operator to update SNARK verification keys. This is needed to update keys after the final trusted setup ceremony is held. After that operator rights are supposed to be transferred to zero address" - }, - "withdraw(bytes,bytes32,bytes32,address,address,uint256,uint256)": { - "details": "Withdraw a deposit from the contract. `proof` is a zkSNARK proof data, and input is an array of circuit public inputs `input` array consists of: - merkle root of all deposits in the contract - hash of unique deposit nullifier to prevent double spends - the recipient of funds - optional fee that goes to the transaction sender (usually a relay)" - } - } - }, - "userdoc": { - "methods": {} - } -} \ No newline at end of file diff --git a/client/contracts/CELOTornado.5.json b/client/contracts/CELOTornado.5.json deleted file mode 100644 index e5cac11..0000000 --- a/client/contracts/CELOTornado.5.json +++ /dev/null @@ -1,7219 +0,0 @@ -{ - "contractName": "ERC20Tornado", - "abi": [ - { - "inputs": [ - { - "internalType": "contract IVerifier", - "name": "_verifier", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_denomination", - "type": "uint256" - }, - { - "internalType": "uint32", - "name": "_merkleTreeHeight", - "type": "uint32" - }, - { - "internalType": "address", - "name": "_operator", - "type": "address" - }, - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "commitment", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "uint32", - "name": "leafIndex", - "type": "uint32" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - } - ], - "name": "Deposit", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "nullifierHash", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "relayer", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "fee", - "type": "uint256" - } - ], - "name": "Withdrawal", - "type": "event" - }, - { - "constant": true, - "inputs": [], - "name": "FIELD_SIZE", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "ROOT_HISTORY_SIZE", - "outputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "ZERO_VALUE", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_newOperator", - "type": "address" - } - ], - "name": "changeOperator", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "name": "commitments", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "currentRootIndex", - "outputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "denomination", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "bytes32", - "name": "_commitment", - "type": "bytes32" - } - ], - "name": "deposit", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "filledSubtrees", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getLastRoot", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "bytes32", - "name": "_left", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "_right", - "type": "bytes32" - } - ], - "name": "hashLeftRight", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "payable": false, - "stateMutability": "pure", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "bytes32", - "name": "_root", - "type": "bytes32" - } - ], - "name": "isKnownRoot", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "bytes32", - "name": "_nullifierHash", - "type": "bytes32" - } - ], - "name": "isSpent", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "bytes32[]", - "name": "_nullifierHashes", - "type": "bytes32[]" - } - ], - "name": "isSpentArray", - "outputs": [ - { - "internalType": "bool[]", - "name": "spent", - "type": "bool[]" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "levels", - "outputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "nextIndex", - "outputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "name": "nullifierHashes", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "operator", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "roots", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "token", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_newVerifier", - "type": "address" - } - ], - "name": "updateVerifier", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "verifier", - "outputs": [ - { - "internalType": "contract IVerifier", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "bytes", - "name": "_proof", - "type": "bytes" - }, - { - "internalType": "bytes32", - "name": "_root", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "_nullifierHash", - "type": "bytes32" - }, - { - "internalType": "address payable", - "name": "_recipient", - "type": "address" - }, - { - "internalType": "address payable", - "name": "_relayer", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_fee", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_refund", - "type": "uint256" - } - ], - "name": "withdraw", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "zeros", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - } - ], - "metadata": "{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVerifier\",\"name\":\"_verifier\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_denomination\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_merkleTreeHeight\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"leafIndex\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"nullifierHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"Withdrawal\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"FIELD_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"ROOT_HISTORY_SIZE\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"ZERO_VALUE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newOperator\",\"type\":\"address\"}],\"name\":\"changeOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"commitments\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"currentRootIndex\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"denomination\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_commitment\",\"type\":\"bytes32\"}],\"name\":\"deposit\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"filledSubtrees\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getLastRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_left\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_right\",\"type\":\"bytes32\"}],\"name\":\"hashLeftRight\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_root\",\"type\":\"bytes32\"}],\"name\":\"isKnownRoot\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_nullifierHash\",\"type\":\"bytes32\"}],\"name\":\"isSpent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"_nullifierHashes\",\"type\":\"bytes32[]\"}],\"name\":\"isSpentArray\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"spent\",\"type\":\"bool[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"levels\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"nextIndex\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"nullifierHashes\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"operator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"roots\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newVerifier\",\"type\":\"address\"}],\"name\":\"updateVerifier\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"verifier\",\"outputs\":[{\"internalType\":\"contract IVerifier\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_proof\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"_root\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_nullifierHash\",\"type\":\"bytes32\"},{\"internalType\":\"address payable\",\"name\":\"_recipient\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"_relayer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_refund\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"zeros\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"changeOperator(address)\":{\"details\":\"operator can change his address \"},\"deposit(bytes32)\":{\"details\":\"Deposit funds into the contract. The caller must send (for ETH) or approve (for ERC20) value equal to or `denomination` of this instance.\",\"params\":{\"_commitment\":\"the note commitment, which is PedersenHash(nullifier + secret)\"}},\"getLastRoot()\":{\"details\":\"Returns the last root\"},\"hashLeftRight(bytes32,bytes32)\":{\"details\":\"Hash 2 tree leaves, returns MiMC(_left, _right)\"},\"isKnownRoot(bytes32)\":{\"details\":\"Whether the root is present in the root history\"},\"isSpent(bytes32)\":{\"details\":\"whether a note is already spent \"},\"isSpentArray(bytes32[])\":{\"details\":\"whether an array of notes is already spent \"},\"updateVerifier(address)\":{\"details\":\"allow operator to update SNARK verification keys. This is needed to update keys after the final trusted setup ceremony is held. After that operator rights are supposed to be transferred to zero address\"},\"withdraw(bytes,bytes32,bytes32,address,address,uint256,uint256)\":{\"details\":\"Withdraw a deposit from the contract. `proof` is a zkSNARK proof data, and input is an array of circuit public inputs `input` array consists of: - merkle root of all deposits in the contract - hash of unique deposit nullifier to prevent double spends - the recipient of funds - optional fee that goes to the transaction sender (usually a relay)\"}}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/Users/brianli/dotfiles/tornado-core/contracts/ERC20Tornado.sol\":\"ERC20Tornado\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/brianli/dotfiles/tornado-core/contracts/ERC20Tornado.sol\":{\"keccak256\":\"0x708938fd083239d2e9cd17e457cf25a2150bb900082fad58af8b689f786aef9c\",\"urls\":[\"bzz-raw://f345afd62002f883c60c032cd0cb051663dc8a3e59a52bf44109633b96cb3685\",\"dweb:/ipfs/QmNwjnH2uyNoq9GPjNUv6Z1mgtiR5rY3K7EHY74RBjXMpw\"]},\"/Users/brianli/dotfiles/tornado-core/contracts/MerkleTreeWithHistory.sol\":{\"keccak256\":\"0x671cc9268dd70c47d18795f7e37fc4df11763fcbcca026edcf163f4239036254\",\"urls\":[\"bzz-raw://9c36a207ed164b60a514eae89bfb15e5b4de4b346c4a89a7a1cb50a940bc699d\",\"dweb:/ipfs/QmbPEqFJAGMpYduLEFsbPazyBsYWcjRtpth8X26wCHALwk\"]},\"/Users/brianli/dotfiles/tornado-core/contracts/Tornado.sol\":{\"keccak256\":\"0x09c70432243629ef44697fd3d0ca89d3578e2b1c9f46d90757371edb163c14da\",\"urls\":[\"bzz-raw://d2a2c9fa85c32cb15793282792cd25c71804a10aa5a911e41f3bcd07f5df117e\",\"dweb:/ipfs/QmeQ1s6ypNnP7fossR4x9svuuLjcSBtQ5spUTmWGZY5Ljr\"]},\"@openzeppelin/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0xb63221b23818d622bfd83d18e0968307e4fcb7a35536bdceded76e1cf8349acd\",\"urls\":[\"bzz-raw://44e1e8c22362c4708a8c3362735f1465f5b05e2f7315e16c7010d694ce019d73\",\"dweb:/ipfs/QmWj9g8X1hxkXRre2kwkEjLBetjuzmSbWHD81bsSojnBkS\"]}},\"version\":1}", - "bytecode": "0x6080604052600380546001600160401b03191690553480156200002157600080fd5b5060405162001d1238038062001d12833981810160405260a08110156200004757600080fd5b50805160208201516040830151606084015160809094015192939192909190848484848163ffffffff8116620000af5760405162461bcd60e51b815260040180806020018281038252602781526020018062001c896027913960400191505060405180910390fd5b60208163ffffffff1610620000f65760405162461bcd60e51b815260040180806020018281038252602281526020018062001cd06022913960400191505060405180910390fd5b6000805463ffffffff191663ffffffff83161781556002805460018181019092557f2fe54c60d3acabf3343a35b6eba15db4821b340f76e741e2249685ed4899af6c60008051602062001c48833981519152909101819055815480830183559282905260008051602062001cf28339815191529092018290555b60005463ffffffff9081169082161015620001e4576200019a82806001600160e01b036200029f16565b60028054600181810190925560008051602062001c488339815191520182905580548082018255600082905260008051602062001cf2833981519152018290559092500162000170565b50620001fa81806001600160e01b036200029f16565b60046000015550506068805460ff19166001179055826200024d5760405162461bcd60e51b815260040180806020018281038252602581526020018062001c236025913960400191505060405180910390fd5b606c80546001600160a01b039586166001600160a01b031991821617909155606d80549286169282169290921790915560699290925550606e8054939092169216919091179055506200048c92505050565b600060008051602062001cb0833981519152831062000305576040805162461bcd60e51b815260206004820181905260248201527f5f6c6566742073686f756c6420626520696e7369646520746865206669656c64604482015290519081900360640190fd5b60008051602062001cb08339815191528210620003545760405162461bcd60e51b815260040180806020018281038252602181526020018062001c686021913960400191505060405180910390fd5b6040805163f47d33b560e01b81526004810185905260006024820181905282518693919273__Hasher________________________________9263f47d33b592604480840193829003018186803b158015620003af57600080fd5b505af4158015620003c4573d6000803e3d6000fd5b505050506040513d6040811015620003db57600080fd5b508051602090910151909250905060008051602062001cb0833981519152848308915073__Hasher________________________________63f47d33b583836040518363ffffffff1660e01b81526004018083815260200182815260200192505050604080518083038186803b1580156200045557600080fd5b505af41580156200046a573d6000803e3d6000fd5b505050506040513d60408110156200048157600080fd5b505195945050505050565b611787806200049c6000396000f3fe60806040526004361061014b5760003560e01c806397fc007c116100b6578063e5285dcc1161006f578063e5285dcc14610514578063e82955881461053e578063ec73295914610568578063f178e47c1461057d578063fc0c546a146105a7578063fc7e9c6f146105bc5761014b565b806397fc007c146103a55780639fa12d0b146103d8578063b214faa5146104a3578063ba70f757146104c0578063c2b40ae4146104d5578063cd87a3b4146104ff5761014b565b80634ecf518b116101085780634ecf518b146102e4578063570ca735146103125780636d9833e314610327578063839df945146103515780638bca6d161461037b57806390eeb02b146103905761014b565b806306394c9b1461015057806317cc915c1461018557806321a0adb6146101c35780632b7ac3f31461025c57806338bf282e1461028d578063414a37ba146102cf575b600080fd5b34801561015c57600080fd5b506101836004803603602081101561017357600080fd5b50356001600160a01b03166105d1565b005b34801561019157600080fd5b506101af600480360360208110156101a857600080fd5b503561063c565b604080519115158252519081900360200190f35b610183600480360360e08110156101d957600080fd5b810190602081018135600160201b8111156101f357600080fd5b82018360208201111561020557600080fd5b803590602001918460018302840111600160201b8311171561022657600080fd5b91935091508035906020810135906001600160a01b03604082013581169160608101359091169060808101359060a00135610651565b34801561026857600080fd5b5061027161099e565b604080516001600160a01b039092168252519081900360200190f35b34801561029957600080fd5b506102bd600480360360408110156102b057600080fd5b50803590602001356109ad565b60408051918252519081900360200190f35b3480156102db57600080fd5b506102bd610b8e565b3480156102f057600080fd5b506102f9610ba0565b6040805163ffffffff9092168252519081900360200190f35b34801561031e57600080fd5b50610271610bac565b34801561033357600080fd5b506101af6004803603602081101561034a57600080fd5b5035610bbb565b34801561035d57600080fd5b506101af6004803603602081101561037457600080fd5b5035610c2e565b34801561038757600080fd5b506102bd610c43565b34801561039c57600080fd5b506102f9610c49565b3480156103b157600080fd5b50610183600480360360208110156103c857600080fd5b50356001600160a01b0316610c55565b3480156103e457600080fd5b50610453600480360360208110156103fb57600080fd5b810190602081018135600160201b81111561041557600080fd5b82018360208201111561042757600080fd5b803590602001918460208302840111600160201b8311171561044857600080fd5b509092509050610cc0565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561048f578181015183820152602001610477565b505050509050019250505060405180910390f35b610183600480360360208110156104b957600080fd5b5035610d48565b3480156104cc57600080fd5b506102bd610e75565b3480156104e157600080fd5b506102bd600480360360208110156104f857600080fd5b5035610e95565b34801561050b57600080fd5b506102f9610ea9565b34801561052057600080fd5b506101af6004803603602081101561053757600080fd5b5035610eae565b34801561054a57600080fd5b506102bd6004803603602081101561056157600080fd5b5035610ec3565b34801561057457600080fd5b506102bd610ee1565b34801561058957600080fd5b506102bd600480360360208110156105a057600080fd5b5035610f05565b3480156105b357600080fd5b50610271610f12565b3480156105c857600080fd5b506102f9610f21565b606d546001600160a01b0316331461061a5760405162461bcd60e51b815260040180806020018281038252602581526020018061172e6025913960400191505060405180910390fd5b606d80546001600160a01b0319166001600160a01b0392909216919091179055565b606a6020526000908152604090205460ff1681565b60685460ff166106a8576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6068805460ff19169055606954821115610709576040805162461bcd60e51b815260206004820152601a60248201527f4665652065786365656473207472616e736665722076616c7565000000000000604482015290519081900360640190fd5b6000858152606a602052604090205460ff161561076d576040805162461bcd60e51b815260206004820152601f60248201527f546865206e6f746520686173206265656e20616c7265616479207370656e7400604482015290519081900360640190fd5b61077686610bbb565b6107c7576040805162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742066696e6420796f7572206d65726b6c6520726f6f7400000000604482015290519081900360640190fd5b606c546040805160c08082018352898252602082018990526001600160a01b038881168385015287811660608401526080830187905260a08301869052925163695ef6f960e01b8152929093169263695ef6f9928c928c9290916004810191829160240190849080838360005b8381101561084c578181015183820152602001610834565b505050509050018281038252858582818152602001925080828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b15801561089e57600080fd5b505af11580156108b2573d6000803e3d6000fd5b505050506040513d60208110156108c857600080fd5b5051610914576040805162461bcd60e51b815260206004820152601660248201527524b73b30b634b2103bb4ba34323930bb90383937b7b360511b604482015290519081900360640190fd5b6000858152606a60205260409020805460ff1916600117905561093984848484610f34565b604080516001600160a01b038681168252602082018890528183018590529151918516917fe9e508bad6d4c3227e881ca19068f099da81b5164dd6d62b2eaf1e8bc6c349319181900360600190a250506068805460ff19166001179055505050505050565b606c546001600160a01b031681565b60006000805160206116bd8339815191528310610a11576040805162461bcd60e51b815260206004820181905260248201527f5f6c6566742073686f756c6420626520696e7369646520746865206669656c64604482015290519081900360640190fd5b6000805160206116bd8339815191528210610a5d5760405162461bcd60e51b815260040180806020018281038252602181526020018061166d6021913960400191505060405180910390fd5b6040805163f47d33b560e01b81526004810185905260006024820181905282518693919273__Hasher________________________________9263f47d33b592604480840193829003018186803b158015610ab757600080fd5b505af4158015610acb573d6000803e3d6000fd5b505050506040513d6040811015610ae157600080fd5b50805160209091015190925090506000805160206116bd833981519152848308915073__Hasher________________________________63f47d33b583836040518363ffffffff1660e01b81526004018083815260200182815260200192505050604080518083038186803b158015610b5957600080fd5b505af4158015610b6d573d6000803e3d6000fd5b505050506040513d6040811015610b8357600080fd5b505195945050505050565b6000805160206116bd83398151915281565b60005463ffffffff1681565b606d546001600160a01b031681565b600081610bca57506000610c29565b60035463ffffffff165b60048163ffffffff1660648110610be757fe5b0154831415610bfa576001915050610c29565b63ffffffff8116610c09575060645b6003546000199091019063ffffffff80831691161415610bd45760009150505b919050565b606b6020526000908152604090205460ff1681565b60695481565b60035463ffffffff1681565b606d546001600160a01b03163314610c9e5760405162461bcd60e51b815260040180806020018281038252602581526020018061172e6025913960400191505060405180910390fd5b606c80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518281526020808402820101909152606090828015610cec578160200160208202803883390190505b50905060005b82811015610d4157610d15848483818110610d0957fe5b90506020020135610eae565b15610d39576001828281518110610d2857fe5b911515602092830291909101909101525b600101610cf2565b5092915050565b60685460ff16610d9f576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6068805460ff191690556000818152606b602052604090205460ff1615610df75760405162461bcd60e51b81526004018080602001828103825260218152602001806116dd6021913960400191505060405180910390fd5b6000610e028261102f565b6000838152606b60205260409020805460ff191660011790559050610e256111c6565b6040805163ffffffff83168152426020820152815184927fa945e51eec50ab98c161376f0db4cf2aeba3ec92755fe2fcd388bdbbb80ff196928290030190a250506068805460ff19166001179055565b60035460009060049063ffffffff1660648110610e8e57fe5b0154905090565b60048160648110610ea257fe5b0154905081565b606481565b6000908152606a602052604090205460ff1690565b60028181548110610ed057fe5b600091825260209091200154905081565b7f2fe54c60d3acabf3343a35b6eba15db4821b340f76e741e2249685ed4899af6c81565b60018181548110610ed057fe5b606e546001600160a01b031681565b600354600160201b900463ffffffff1681565b803414610f725760405162461bcd60e51b81526004018080602001828103825260308152602001806116166030913960400191505060405180910390fd5b610f80848360695403611212565b8115610f9057610f908383611212565b8015611029576040516000906001600160a01b0386169083908381818185875af1925050503d8060008114610fe1576040519150601f19603f3d011682016040523d82523d6000602084013e610fe6565b606091505b5050905080611027576040516001600160a01b0385169083156108fc029084906000818181858888f19350505050158015611025573d6000803e3d6000fd5b505b505b50505050565b60035460008054909163ffffffff600160201b909104811691811660020a1681141561108c5760405162461bcd60e51b815260040180806020018281038252602f8152602001806115bd602f913960400191505060405180910390fd5b6003805463ffffffff600160201b80830482166001019091160267ffffffff000000001990911617905582600080805b60005463ffffffff908116908216101561116457600185166111205783925060028163ffffffff16815481106110ee57fe5b906000526020600020015491508360018263ffffffff168154811061110f57fe5b600091825260209091200155611144565b60018163ffffffff168154811061113357fe5b906000526020600020015492508391505b61114e83836109ad565b9350600263ffffffff86160494506001016110bc565b5060035460649063ffffffff908116600101166003805463ffffffff19169290910663ffffffff9081169290921790819055849160049116606481106111a657fe5b01555050600354600160201b900463ffffffff1660001901949350505050565b34156112035760405162461bcd60e51b81526004018080602001828103825260308152602001806116fe6030913960400191505060405180910390fd5b61121033306069546113dd565b565b606e54604080516001600160a01b038581166024830152604480830186905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000956060959316939282918083835b6020831061128f5780518252601f199092019160209182019101611270565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146112f1576040519150601f19603f3d011682016040523d82523d6000602084013e6112f6565b606091505b509150915081611341576040805162461bcd60e51b81526020600482015260116024820152706e6f7420656e6f75676820746f6b656e7360781b604482015290519081900360640190fd5b8051156110295780516020146113885760405162461bcd60e51b815260040180806020018281038252602a8152602001806115ec602a913960400191505060405180910390fd5b80806020019051602081101561139d57600080fd5b50519150816110295760405162461bcd60e51b81526004018080602001828103825260278152602001806116466027913960400191505060405180910390fd5b606e54604080516001600160a01b0386811660248301528581166044830152606480830186905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b178152925182516000956060959316939282918083835b602083106114625780518252601f199092019160209182019101611443565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146114c4576040519150601f19603f3d011682016040523d82523d6000602084013e6114c9565b606091505b509150915081611520576040805162461bcd60e51b815260206004820152601960248201527f6e6f7420656e6f75676820616c6c6f77656420746f6b656e7300000000000000604482015290519081900360640190fd5b8051156110275780516020146115675760405162461bcd60e51b815260040180806020018281038252602a8152602001806115ec602a913960400191505060405180910390fd5b80806020019051602081101561157c57600080fd5b50519150816110275760405162461bcd60e51b815260040180806020018281038252602f81526020018061168e602f913960400191505060405180910390fdfe4d65726b6c6520747265652069732066756c6c2e204e6f206d6f7265206c656166732063616e20626520616464656464617461206c656e6774682073686f756c64206265206569746865722030206f72203332206279746573496e636f727265637420726566756e6420616d6f756e742072656365697665642062792074686520636f6e74726163746e6f7420656e6f75676820746f6b656e732e20546f6b656e2072657475726e732066616c73652e5f72696768742073686f756c6420626520696e7369646520746865206669656c646e6f7420656e6f75676820616c6c6f77656420746f6b656e732e20546f6b656e2072657475726e732066616c73652e30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000154686520636f6d6d69746d656e7420686173206265656e207375626d69747465644554482076616c756520697320737570706f73656420746f206265203020666f7220455243323020696e7374616e63654f6e6c79206f70657261746f722063616e2063616c6c20746869732066756e6374696f6e2ea265627a7a72315820494b71139a3b0e5b3d4285ff58127e5c54881ed5204c3d740b94c1c4832e681c64736f6c6343000511003264656e6f6d696e6174696f6e2073686f756c642062652067726561746572207468616e2030405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace5f72696768742073686f756c6420626520696e7369646520746865206669656c645f747265654c6576656c732073686f756c642062652067726561746572207468616e207a65726f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000015f747265654c6576656c732073686f756c64206265206c657373207468616e203332b10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6", - "deployedBytecode": "0x60806040526004361061014b5760003560e01c806397fc007c116100b6578063e5285dcc1161006f578063e5285dcc14610514578063e82955881461053e578063ec73295914610568578063f178e47c1461057d578063fc0c546a146105a7578063fc7e9c6f146105bc5761014b565b806397fc007c146103a55780639fa12d0b146103d8578063b214faa5146104a3578063ba70f757146104c0578063c2b40ae4146104d5578063cd87a3b4146104ff5761014b565b80634ecf518b116101085780634ecf518b146102e4578063570ca735146103125780636d9833e314610327578063839df945146103515780638bca6d161461037b57806390eeb02b146103905761014b565b806306394c9b1461015057806317cc915c1461018557806321a0adb6146101c35780632b7ac3f31461025c57806338bf282e1461028d578063414a37ba146102cf575b600080fd5b34801561015c57600080fd5b506101836004803603602081101561017357600080fd5b50356001600160a01b03166105d1565b005b34801561019157600080fd5b506101af600480360360208110156101a857600080fd5b503561063c565b604080519115158252519081900360200190f35b610183600480360360e08110156101d957600080fd5b810190602081018135600160201b8111156101f357600080fd5b82018360208201111561020557600080fd5b803590602001918460018302840111600160201b8311171561022657600080fd5b91935091508035906020810135906001600160a01b03604082013581169160608101359091169060808101359060a00135610651565b34801561026857600080fd5b5061027161099e565b604080516001600160a01b039092168252519081900360200190f35b34801561029957600080fd5b506102bd600480360360408110156102b057600080fd5b50803590602001356109ad565b60408051918252519081900360200190f35b3480156102db57600080fd5b506102bd610b8e565b3480156102f057600080fd5b506102f9610ba0565b6040805163ffffffff9092168252519081900360200190f35b34801561031e57600080fd5b50610271610bac565b34801561033357600080fd5b506101af6004803603602081101561034a57600080fd5b5035610bbb565b34801561035d57600080fd5b506101af6004803603602081101561037457600080fd5b5035610c2e565b34801561038757600080fd5b506102bd610c43565b34801561039c57600080fd5b506102f9610c49565b3480156103b157600080fd5b50610183600480360360208110156103c857600080fd5b50356001600160a01b0316610c55565b3480156103e457600080fd5b50610453600480360360208110156103fb57600080fd5b810190602081018135600160201b81111561041557600080fd5b82018360208201111561042757600080fd5b803590602001918460208302840111600160201b8311171561044857600080fd5b509092509050610cc0565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561048f578181015183820152602001610477565b505050509050019250505060405180910390f35b610183600480360360208110156104b957600080fd5b5035610d48565b3480156104cc57600080fd5b506102bd610e75565b3480156104e157600080fd5b506102bd600480360360208110156104f857600080fd5b5035610e95565b34801561050b57600080fd5b506102f9610ea9565b34801561052057600080fd5b506101af6004803603602081101561053757600080fd5b5035610eae565b34801561054a57600080fd5b506102bd6004803603602081101561056157600080fd5b5035610ec3565b34801561057457600080fd5b506102bd610ee1565b34801561058957600080fd5b506102bd600480360360208110156105a057600080fd5b5035610f05565b3480156105b357600080fd5b50610271610f12565b3480156105c857600080fd5b506102f9610f21565b606d546001600160a01b0316331461061a5760405162461bcd60e51b815260040180806020018281038252602581526020018061172e6025913960400191505060405180910390fd5b606d80546001600160a01b0319166001600160a01b0392909216919091179055565b606a6020526000908152604090205460ff1681565b60685460ff166106a8576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6068805460ff19169055606954821115610709576040805162461bcd60e51b815260206004820152601a60248201527f4665652065786365656473207472616e736665722076616c7565000000000000604482015290519081900360640190fd5b6000858152606a602052604090205460ff161561076d576040805162461bcd60e51b815260206004820152601f60248201527f546865206e6f746520686173206265656e20616c7265616479207370656e7400604482015290519081900360640190fd5b61077686610bbb565b6107c7576040805162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742066696e6420796f7572206d65726b6c6520726f6f7400000000604482015290519081900360640190fd5b606c546040805160c08082018352898252602082018990526001600160a01b038881168385015287811660608401526080830187905260a08301869052925163695ef6f960e01b8152929093169263695ef6f9928c928c9290916004810191829160240190849080838360005b8381101561084c578181015183820152602001610834565b505050509050018281038252858582818152602001925080828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b15801561089e57600080fd5b505af11580156108b2573d6000803e3d6000fd5b505050506040513d60208110156108c857600080fd5b5051610914576040805162461bcd60e51b815260206004820152601660248201527524b73b30b634b2103bb4ba34323930bb90383937b7b360511b604482015290519081900360640190fd5b6000858152606a60205260409020805460ff1916600117905561093984848484610f34565b604080516001600160a01b038681168252602082018890528183018590529151918516917fe9e508bad6d4c3227e881ca19068f099da81b5164dd6d62b2eaf1e8bc6c349319181900360600190a250506068805460ff19166001179055505050505050565b606c546001600160a01b031681565b60006000805160206116bd8339815191528310610a11576040805162461bcd60e51b815260206004820181905260248201527f5f6c6566742073686f756c6420626520696e7369646520746865206669656c64604482015290519081900360640190fd5b6000805160206116bd8339815191528210610a5d5760405162461bcd60e51b815260040180806020018281038252602181526020018061166d6021913960400191505060405180910390fd5b6040805163f47d33b560e01b81526004810185905260006024820181905282518693919273__Hasher________________________________9263f47d33b592604480840193829003018186803b158015610ab757600080fd5b505af4158015610acb573d6000803e3d6000fd5b505050506040513d6040811015610ae157600080fd5b50805160209091015190925090506000805160206116bd833981519152848308915073__Hasher________________________________63f47d33b583836040518363ffffffff1660e01b81526004018083815260200182815260200192505050604080518083038186803b158015610b5957600080fd5b505af4158015610b6d573d6000803e3d6000fd5b505050506040513d6040811015610b8357600080fd5b505195945050505050565b6000805160206116bd83398151915281565b60005463ffffffff1681565b606d546001600160a01b031681565b600081610bca57506000610c29565b60035463ffffffff165b60048163ffffffff1660648110610be757fe5b0154831415610bfa576001915050610c29565b63ffffffff8116610c09575060645b6003546000199091019063ffffffff80831691161415610bd45760009150505b919050565b606b6020526000908152604090205460ff1681565b60695481565b60035463ffffffff1681565b606d546001600160a01b03163314610c9e5760405162461bcd60e51b815260040180806020018281038252602581526020018061172e6025913960400191505060405180910390fd5b606c80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518281526020808402820101909152606090828015610cec578160200160208202803883390190505b50905060005b82811015610d4157610d15848483818110610d0957fe5b90506020020135610eae565b15610d39576001828281518110610d2857fe5b911515602092830291909101909101525b600101610cf2565b5092915050565b60685460ff16610d9f576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6068805460ff191690556000818152606b602052604090205460ff1615610df75760405162461bcd60e51b81526004018080602001828103825260218152602001806116dd6021913960400191505060405180910390fd5b6000610e028261102f565b6000838152606b60205260409020805460ff191660011790559050610e256111c6565b6040805163ffffffff83168152426020820152815184927fa945e51eec50ab98c161376f0db4cf2aeba3ec92755fe2fcd388bdbbb80ff196928290030190a250506068805460ff19166001179055565b60035460009060049063ffffffff1660648110610e8e57fe5b0154905090565b60048160648110610ea257fe5b0154905081565b606481565b6000908152606a602052604090205460ff1690565b60028181548110610ed057fe5b600091825260209091200154905081565b7f2fe54c60d3acabf3343a35b6eba15db4821b340f76e741e2249685ed4899af6c81565b60018181548110610ed057fe5b606e546001600160a01b031681565b600354600160201b900463ffffffff1681565b803414610f725760405162461bcd60e51b81526004018080602001828103825260308152602001806116166030913960400191505060405180910390fd5b610f80848360695403611212565b8115610f9057610f908383611212565b8015611029576040516000906001600160a01b0386169083908381818185875af1925050503d8060008114610fe1576040519150601f19603f3d011682016040523d82523d6000602084013e610fe6565b606091505b5050905080611027576040516001600160a01b0385169083156108fc029084906000818181858888f19350505050158015611025573d6000803e3d6000fd5b505b505b50505050565b60035460008054909163ffffffff600160201b909104811691811660020a1681141561108c5760405162461bcd60e51b815260040180806020018281038252602f8152602001806115bd602f913960400191505060405180910390fd5b6003805463ffffffff600160201b80830482166001019091160267ffffffff000000001990911617905582600080805b60005463ffffffff908116908216101561116457600185166111205783925060028163ffffffff16815481106110ee57fe5b906000526020600020015491508360018263ffffffff168154811061110f57fe5b600091825260209091200155611144565b60018163ffffffff168154811061113357fe5b906000526020600020015492508391505b61114e83836109ad565b9350600263ffffffff86160494506001016110bc565b5060035460649063ffffffff908116600101166003805463ffffffff19169290910663ffffffff9081169290921790819055849160049116606481106111a657fe5b01555050600354600160201b900463ffffffff1660001901949350505050565b34156112035760405162461bcd60e51b81526004018080602001828103825260308152602001806116fe6030913960400191505060405180910390fd5b61121033306069546113dd565b565b606e54604080516001600160a01b038581166024830152604480830186905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000956060959316939282918083835b6020831061128f5780518252601f199092019160209182019101611270565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146112f1576040519150601f19603f3d011682016040523d82523d6000602084013e6112f6565b606091505b509150915081611341576040805162461bcd60e51b81526020600482015260116024820152706e6f7420656e6f75676820746f6b656e7360781b604482015290519081900360640190fd5b8051156110295780516020146113885760405162461bcd60e51b815260040180806020018281038252602a8152602001806115ec602a913960400191505060405180910390fd5b80806020019051602081101561139d57600080fd5b50519150816110295760405162461bcd60e51b81526004018080602001828103825260278152602001806116466027913960400191505060405180910390fd5b606e54604080516001600160a01b0386811660248301528581166044830152606480830186905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b178152925182516000956060959316939282918083835b602083106114625780518252601f199092019160209182019101611443565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146114c4576040519150601f19603f3d011682016040523d82523d6000602084013e6114c9565b606091505b509150915081611520576040805162461bcd60e51b815260206004820152601960248201527f6e6f7420656e6f75676820616c6c6f77656420746f6b656e7300000000000000604482015290519081900360640190fd5b8051156110275780516020146115675760405162461bcd60e51b815260040180806020018281038252602a8152602001806115ec602a913960400191505060405180910390fd5b80806020019051602081101561157c57600080fd5b50519150816110275760405162461bcd60e51b815260040180806020018281038252602f81526020018061168e602f913960400191505060405180910390fdfe4d65726b6c6520747265652069732066756c6c2e204e6f206d6f7265206c656166732063616e20626520616464656464617461206c656e6774682073686f756c64206265206569746865722030206f72203332206279746573496e636f727265637420726566756e6420616d6f756e742072656365697665642062792074686520636f6e74726163746e6f7420656e6f75676820746f6b656e732e20546f6b656e2072657475726e732066616c73652e5f72696768742073686f756c6420626520696e7369646520746865206669656c646e6f7420656e6f75676820616c6c6f77656420746f6b656e732e20546f6b656e2072657475726e732066616c73652e30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000154686520636f6d6d69746d656e7420686173206265656e207375626d69747465644554482076616c756520697320737570706f73656420746f206265203020666f7220455243323020696e7374616e63654f6e6c79206f70657261746f722063616e2063616c6c20746869732066756e6374696f6e2ea265627a7a72315820494b71139a3b0e5b3d4285ff58127e5c54881ed5204c3d740b94c1c4832e681c64736f6c63430005110032", - "sourceMap": "805:2189:0:-;;;1430:34:2;;;-1:-1:-1;;;;;;1468:27:2;;;867:237:0;5:2:-1;;;;30:1;27;20:12;5:2;867:237:0;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;867:237:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1646:15:2;;;1638:67;;;;-1:-1:-1;;;1638:67:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1733:2;1719:11;:16;;;1711:63;;;;-1:-1:-1;;;1711:63:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1780:6;:20;;-1:-1:-1;;1780:20:2;;;;;;;1854:5;27:10:-1;;-1:-1;23:18;;;45:23;;;1088:77:2;-1:-1:-1;;;;;;;;;;;1854:23:2;;;;;;27:10:-1;;23:18;;;45:23;;1883:32:2;;;;-1:-1:-1;;;;;;;;;;;1883:32:2;;;;;;1922:175;1945:6;;;;;;1941:10;;;;1922:175;;;1980:39;1994:11;;-1:-1:-1;;;;;1980:13:2;:39;:::i;:::-;2027:5;27:10:-1;;39:1;23:18;;;45:23;;;-1:-1;;;;;;;;;;;2027:23:2;;;;27:10:-1;;23:18;;;45:23;;-1:-1;2058:32:2;;;-1:-1:-1;;;;;;;;;;;2058:32:2;;;;1966:53;;-1:-1:-1;1953:3:2;1922:175;;;-1:-1:-1;2114:39:2;2128:11;;-1:-1:-1;;;;;2114:13:2;:39;:::i;:::-;2103:5;2109:1;2103:8;:50;-1:-1:-1;;1421:11:18;:18;;-1:-1:-1;;1421:18:18;1435:4;1421:18;;;2260:17:8;2252:67;;;;-1:-1:-1;;;2252:67:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2325:8;:20;;-1:-1:-1;;;;;2325:20:8;;;-1:-1:-1;;;;;;2325:20:8;;;;;;;2351:8;:20;;;;;;;;;;;;;;;2377:12;:28;;;;-1:-1:-1;1085:5:0;:14;;;;;;;;;;;;;;-1:-1:-1;805:2189:0;;-1:-1:-1;;;805:2189:0;2230:445:2;2305:7;-1:-1:-1;;;;;;;;;;;2328:27:2;;2320:72;;;;;-1:-1:-1;;;2320:72:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2406:28:2;;2398:74;;;;-1:-1:-1;;;2398:74:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2538:23;;;-1:-1:-1;;;2538:23:2;;;;;;;;2478:9;2538:23;;;;;;;;2498:5;;2478:9;;2538:6;;:17;;:23;;;;;;;;;;:6;:23;;;5:2:-1;;;;30:1;27;20:12;5:2;2538:23:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2538:23:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2538:23:2;;;;;;;;;-1:-1:-1;2538:23:2;-1:-1:-1;;;;;;;;;;;;2589:6:2;2578:1;2571:38;2567:42;;2624:6;:17;2642:1;2645;2624:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2624:23:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2624:23:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2624:23:2;;2230:445;-1:-1:-1;;;;;2230:445:2:o;805:2189:0:-;;;;;;;", - "deployedSourceMap": "805:2189:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5355:102:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5355:102:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5355:102:8;-1:-1:-1;;;;;5355:102:8;;:::i;:::-;;1089:47;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1089:47:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1089:47:8;;:::i;:::-;;;;;;;;;;;;;;;;;;3478:781;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;3478:781:8;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;3478:781:8;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3478:781:8;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;3478:781:8;;-1:-1:-1;3478:781:8;-1:-1:-1;3478:781:8;;;;;;;;-1:-1:-1;;;;;3478:781:8;;;;;;;;;;;;;;;;;;;;;;;;:::i;1278:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1278:25:8;;;:::i;:::-;;;;-1:-1:-1;;;;;1278:25:8;;;;;;;;;;;;;;2230:445:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2230:445:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2230:445:2;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;933:114;;8:9:-1;5:2;;;30:1;27;20:12;5:2;933:114:2;;;:::i;1209:20::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1209:20:2;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1463:23:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1463:23:8;;;:::i;3553:342:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3553:342:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3553:342:2;;:::i;1231:43:8:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1231:43:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1231:43:8;;:::i;1058:27::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1058:27:8;;;:::i;1430:34:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1430:34:2;;;:::i;5192:113:8:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5192:113:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5192:113:8;-1:-1:-1;;;;;5192:113:8;;:::i;4669:293::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4669:293:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4669:293:8;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;4669:293:8;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4669:293:8;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;4669:293:8;;-1:-1:-1;4669:293:8;-1:-1:-1;4669:293:8;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4669:293:8;;;;;;;;;;;;;;;;;2658:324;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2658:324:8;;:::i;3941:93:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3941:93:2;;;:::i;1549:39::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1549:39:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1549:39:2;;:::i;1499:46::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1499:46:2;;;:::i;4492:116:8:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4492:116:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4492:116:8;;:::i;1404:22:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1404:22:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1404:22:2;;:::i;1051:114::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1051:114:2;;;:::i;1369:31::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1369:31:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1369:31:2;;:::i;842:20:0:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;842:20:0;;;:::i;1468:27:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1468:27:2;;;:::i;5355:102:8:-;1540:8;;-1:-1:-1;;;;;1540:8:8;1526:10;:22;1518:72;;;;-1:-1:-1;;;1518:72:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5429:8;:23;;-1:-1:-1;;;;;;5429:23:8;-1:-1:-1;;;;;5429:23:8;;;;;;;;;;5355:102::o;1089:47::-;;;;;;;;;;;;;;;:::o;3478:781::-;1934:11:18;;;;1926:55;;;;;-1:-1:-1;;;1926:55:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;2056:11;:19;;-1:-1:-1;;2056:19:18;;;3695:12:8;;3687:20;;;3679:59;;;;;-1:-1:-1;;;3679:59:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;3753:31;;;;:15;:31;;;;;;;;3752:32;3744:76;;;;;-1:-1:-1;;;3744:76:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;3834:18;3846:5;3834:11;:18::i;:::-;3826:59;;;;;-1:-1:-1;;;3826:59:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;3932:8;;:126;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4003:19:8;;;3932:126;;;;4024:17;;;3932:126;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3932:126:8;;:8;;;;;:20;;3953:6;;;;3932:126;;;;;;;;;;;;;;;;:8;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3932:126:8;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;3932:126:8;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3932:126:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3932:126:8;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3932:126:8;3924:161;;;;;-1:-1:-1;;;3924:161:8;;;;;;;;;;;;-1:-1:-1;;;3924:161:8;;;;;;;;;;;;;;;4092:31;;;;:15;:31;;;;;:38;;-1:-1:-1;;4092:38:8;4126:4;4092:38;;;4136:53;4153:10;4165:8;4175:4;4181:7;4136:16;:53::i;:::-;4200:54;;;-1:-1:-1;;;;;4200:54:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2230:11:18;:18;;-1:-1:-1;;2230:18:18;2244:4;2230:18;;;-1:-1:-1;;;;;;3478:781:8:o;1278:25::-;;;-1:-1:-1;;;;;1278:25:8;;:::o;2230:445:2:-;2305:7;-1:-1:-1;;;;;;;;;;;2328:27:2;;2320:72;;;;;-1:-1:-1;;;2320:72:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2406:28:2;;2398:74;;;;-1:-1:-1;;;2398:74:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2538:23;;;-1:-1:-1;;;2538:23:2;;;;;;;;2478:9;2538:23;;;;;;;;2498:5;;2478:9;;2538:6;;:17;;:23;;;;;;;;;;:6;:23;;;5:2:-1;;;;30:1;27;20:12;5:2;2538:23:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2538:23:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2538:23:2;;;;;;;;;-1:-1:-1;2538:23:2;-1:-1:-1;;;;;;;;;;;;2589:6:2;2578:1;2571:38;2567:42;;2624:6;:17;2642:1;2645;2624:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2624:23:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2624:23:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2624:23:2;;2230:445;-1:-1:-1;;;;;2230:445:2:o;933:114::-;-1:-1:-1;;;;;;;;;;;933:114:2;:::o;1209:20::-;;;;;;:::o;1463:23:8:-;;;-1:-1:-1;;;;;1463:23:8;;:::o;3553:342:2:-;3609:4;3625:10;3621:43;;-1:-1:-1;3652:5:2;3645:12;;3621:43;3680:16;;;;3702:171;3726:5;3732:1;3726:8;;;;;;;;;;;3717:5;:17;3713:53;;;3753:4;3746:11;;;;;3713:53;3777:6;;;3773:52;;-1:-1:-1;1542:3:2;3773:52;3855:16;;-1:-1:-1;;3832:3:2;;;;3855:16;3850:21;;;3855:16;;3850:21;;3702:171;;3885:5;3878:12;;;3553:342;;;;:::o;1231:43:8:-;;;;;;;;;;;;;;;:::o;1058:27::-;;;;:::o;1430:34:2:-;;;;;;:::o;5192:113:8:-;1540:8;;-1:-1:-1;;;;;1540:8:8;1526:10;:22;1518:72;;;;-1:-1:-1;;;1518:72:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5266:8;:34;;-1:-1:-1;;;;;;5266:34:8;-1:-1:-1;;;;;5266:34:8;;;;;;;;;;5192:113::o;4669:293::-;4785:35;;;;;;;;;;;;;;;;4750:19;;4796:16;4785:35;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;4785:35:8;-1:-1:-1;4777:43:8;-1:-1:-1;4830:6:8;4826:132;4842:27;;;4826:132;;;4888:28;4896:16;;4913:1;4896:19;;;;;;;;;;;;;4888:7;:28::i;:::-;4884:68;;;4939:4;4928:5;4934:1;4928:8;;;;;;;;:15;;;:8;;;;;;;;;;;:15;4884:68;4871:3;;4826:132;;;;4669:293;;;;:::o;2658:324::-;1934:11:18;;;;1926:55;;;;;-1:-1:-1;;;1926:55:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;2056:11;:19;;-1:-1:-1;;2056:19:18;;;2070:5;2741:24:8;;;:11;:24;;;;;;2056:19:18;2741:24:8;2740:25;2732:71;;;;-1:-1:-1;;;2732:71:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2810:20;2833;2841:11;2833:7;:20::i;:::-;2859:24;;;;:11;:24;;;;;:31;;-1:-1:-1;;2859:31:8;2886:4;2859:31;;;2810:43;-1:-1:-1;2896:17:8;:15;:17::i;:::-;2925:52;;;;;;;;2961:15;2925:52;;;;;;2933:11;;2925:52;;;;;;;;-1:-1:-1;;2230:11:18;:18;;-1:-1:-1;;2230:18:18;2244:4;2230:18;;;2658:324:8:o;3941:93:2:-;4012:16;;3984:7;;4006:5;;4012:16;;4006:23;;;;;;;;;3999:30;;3941:93;:::o;1549:39::-;;;;;;;;;;;;;-1:-1:-1;1549:39:2;:::o;1499:46::-;1542:3;1499:46;:::o;4492:116:8:-;4553:4;4572:31;;;:15;:31;;;;;;;;;4492:116::o;1404:22:2:-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1404:22:2;:::o;1051:114::-;1088:77;1051:114;:::o;1369:31::-;;;;;;;;;;842:20:0;;;-1:-1:-1;;;;;842:20:0;;:::o;1468:27:2:-;;;-1:-1:-1;;;1468:27:2;;;;;:::o;1303:547:0:-;1450:7;1437:9;:20;1429:81;;;;-1:-1:-1;;;1429:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1517:51;1536:10;1563:4;1548:12;;:19;1517:18;:51::i;:::-;1578:8;;1574:63;;1596:34;1615:8;1625:4;1596:18;:34::i;:::-;1647:11;;1643:203;;1687:34;;1669:12;;-1:-1:-1;;;;;1687:15:0;;;1709:7;;1669:12;1687:34;1669:12;1687:34;1709:7;1687:15;:34;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;1668:53:0;;;1734:7;1729:111;;1805:26;;-1:-1:-1;;;;;1805:17:0;;;:26;;;;;1823:7;;1805:26;;;;1823:7;1805:17;:26;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1805:26:0;1729:111;1643:203;;1303:547;;;;:::o;2679:802:2:-;2770:9;;2728:12;2820:6;;2728:12;;2770:9;-1:-1:-1;;;2770:9:2;;;;;;2820:6;;2816:1;2809:17;2793:33;;;;2785:93;;;;-1:-1:-1;;;2785:93:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2884:9;:14;;;-1:-1:-1;;;2884:14:2;;;;;2897:1;2884:14;;;;;-1:-1:-1;;2884:14:2;;;;;;2931:5;-1:-1:-1;;;2980:355:2;3003:6;;;;;;2999:10;;;;2980:355;;;3028:16;;;3024:225;;3068:16;3061:23;;3102:5;3108:1;3102:8;;;;;;;;;;;;;;;;;;3094:16;;3141;3121:14;3136:1;3121:17;;;;;;;;;;;;;;;;;;;:36;3024:225;;;3189:14;3204:1;3189:17;;;;;;;;;;;;;;;;;;3182:24;;3224:16;3216:24;;3024:225;3276:26;3290:4;3296:5;3276:13;:26::i;:::-;3257:45;-1:-1:-1;3327:1:2;3311:17;;;;;-1:-1:-1;3011:3:2;;2980:355;;;-1:-1:-1;3361:16:2;;1542:3;;3360:42;3361:16;;;;:20;3360:42;3341:16;:61;;-1:-1:-1;;3341:61:2;3360:42;;;;3341:61;;;;;;;;;;;;3434:16;;3408:5;;3414:16;3408:23;;;;;;;;:42;-1:-1:-1;;3463:9:2;;-1:-1:-1;;;3463:9:2;;;;-1:-1:-1;;3463:13:2;;2679:802;-1:-1:-1;;;;2679:802:2:o;1108:191:0:-;1158:9;:14;1150:75;;;;-1:-1:-1;;;1150:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1231:63;1254:10;1274:4;1281:12;;1231:22;:63::i;:::-;1108:191::o;2448:544::-;2557:5;;2568:63;;;-1:-1:-1;;;;;2568:63:0;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;2568:63:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2557:75:0;;;;2522:12;;2536:17;;2557:5;;;2568:63;2557:75;;;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;2557:75:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2521:111:0;;;;2646:7;2638:37;;;;;-1:-1:-1;;;2638:37:0;;;;;;;;;;;;-1:-1:-1;;;2638:37:0;;;;;;;;;;;;;;;2775:11;;:15;2771:217;;2808:4;:11;2823:2;2808:17;2800:72;;;;-1:-1:-1;;;2800:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2901:4;2890:24;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2890:24:0;;-1:-1:-1;2890:24:0;2922:59;;;;-1:-1:-1;;;2922:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1854:590;1982:5;;1993:74;;;-1:-1:-1;;;;;1993:74:0;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1993:74:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1982:86:0;;;;1947:12;;1961:17;;1982:5;;;1993:74;1982:86;;;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;1982:86:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;1946:122:0;;;;2082:7;2074:45;;;;;-1:-1:-1;;;2074:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;2219:11;;:15;2215:225;;2252:4;:11;2267:2;2252:17;2244:72;;;;-1:-1:-1;;;2244:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2345:4;2334:24;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2334:24:0;;-1:-1:-1;2334:24:0;2366:67;;;;-1:-1:-1;;;2366:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", - "source": "// https://tornado.cash\n/*\n* d888888P dP a88888b. dP\n* 88 88 d8' `88 88\n* 88 .d8888b. 88d888b. 88d888b. .d8888b. .d888b88 .d8888b. 88 .d8888b. .d8888b. 88d888b.\n* 88 88' `88 88' `88 88' `88 88' `88 88' `88 88' `88 88 88' `88 Y8ooooo. 88' `88\n* 88 88. .88 88 88 88 88. .88 88. .88 88. .88 dP Y8. .88 88. .88 88 88 88\n* dP `88888P' dP dP dP `88888P8 `88888P8 `88888P' 88 Y88888P' `88888P8 `88888P' dP dP\n* ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo\n*/\n\npragma solidity 0.5.17;\n\nimport \"./Tornado.sol\";\n\ncontract ERC20Tornado is Tornado {\n address public token;\n\n constructor(\n IVerifier _verifier,\n uint256 _denomination,\n uint32 _merkleTreeHeight,\n address _operator,\n address _token\n ) Tornado(_verifier, _denomination, _merkleTreeHeight, _operator) public {\n token = _token;\n }\n\n function _processDeposit() internal {\n require(msg.value == 0, \"ETH value is supposed to be 0 for ERC20 instance\");\n _safeErc20TransferFrom(msg.sender, address(this), denomination);\n }\n\n function _processWithdraw(address payable _recipient, address payable _relayer, uint256 _fee, uint256 _refund) internal {\n require(msg.value == _refund, \"Incorrect refund amount received by the contract\");\n\n _safeErc20Transfer(_recipient, denomination - _fee);\n if (_fee > 0) {\n _safeErc20Transfer(_relayer, _fee);\n }\n\n if (_refund > 0) {\n (bool success, ) = _recipient.call.value(_refund)(\"\");\n if (!success) {\n // let's return _refund back to the relayer\n _relayer.transfer(_refund);\n }\n }\n }\n\n function _safeErc20TransferFrom(address _from, address _to, uint256 _amount) internal {\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd /* transferFrom */, _from, _to, _amount));\n require(success, \"not enough allowed tokens\");\n\n // if contract returns some data lets make sure that is `true` according to standard\n if (data.length > 0) {\n require(data.length == 32, \"data length should be either 0 or 32 bytes\");\n success = abi.decode(data, (bool));\n require(success, \"not enough allowed tokens. Token returns false.\");\n }\n }\n\n function _safeErc20Transfer(address _to, uint256 _amount) internal {\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb /* transfer */, _to, _amount));\n require(success, \"not enough tokens\");\n\n // if contract returns some data lets make sure that is `true` according to standard\n if (data.length > 0) {\n require(data.length == 32, \"data length should be either 0 or 32 bytes\");\n success = abi.decode(data, (bool));\n require(success, \"not enough tokens. Token returns false.\");\n }\n }\n}\n", - "sourcePath": "/Users/brianli/dotfiles/tornado-core/contracts/ERC20Tornado.sol", - "ast": { - "absolutePath": "/Users/brianli/dotfiles/tornado-core/contracts/ERC20Tornado.sol", - "exportedSymbols": { - "ERC20Tornado": [ - 227 - ] - }, - "id": 228, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1, - "literals": [ - "solidity", - "0.5", - ".17" - ], - "nodeType": "PragmaDirective", - "src": "755:23:0" - }, - { - "absolutePath": "/Users/brianli/dotfiles/tornado-core/contracts/Tornado.sol", - "file": "./Tornado.sol", - "id": 2, - "nodeType": "ImportDirective", - "scope": 228, - "sourceUnit": 1195, - "src": "780:23:0", - "symbolAliases": [], - "unitAlias": "" - }, - { - "baseContracts": [ - { - "arguments": null, - "baseName": { - "contractScope": null, - "id": 3, - "name": "Tornado", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1194, - "src": "830:7:0", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Tornado_$1194", - "typeString": "contract Tornado" - } - }, - "id": 4, - "nodeType": "InheritanceSpecifier", - "src": "830:7:0" - } - ], - "contractDependencies": [ - 694, - 1194, - 3245 - ], - "contractKind": "contract", - "documentation": null, - "fullyImplemented": true, - "id": 227, - "linearizedBaseContracts": [ - 227, - 1194, - 3245, - 694 - ], - "name": "ERC20Tornado", - "nodeType": "ContractDefinition", - "nodes": [ - { - "constant": false, - "id": 6, - "name": "token", - "nodeType": "VariableDeclaration", - "scope": 227, - "src": "842:20:0", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 5, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "842:7:0", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "public" - }, - { - "body": { - "id": 29, - "nodeType": "Block", - "src": "1079:25:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 27, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 25, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6, - "src": "1085:5:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 26, - "name": "_token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 16, - "src": "1093:6:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "1085:14:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 28, - "nodeType": "ExpressionStatement", - "src": "1085:14:0" - } - ] - }, - "documentation": null, - "id": 30, - "implemented": true, - "kind": "constructor", - "modifiers": [ - { - "arguments": [ - { - "argumentTypes": null, - "id": 19, - "name": "_verifier", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8, - "src": "1016:9:0", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IVerifier_$891", - "typeString": "contract IVerifier" - } - }, - { - "argumentTypes": null, - "id": 20, - "name": "_denomination", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 10, - "src": "1027:13:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 21, - "name": "_merkleTreeHeight", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12, - "src": "1042:17:0", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - { - "argumentTypes": null, - "id": 22, - "name": "_operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 14, - "src": "1061:9:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "id": 23, - "modifierName": { - "argumentTypes": null, - "id": 18, - "name": "Tornado", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1194, - "src": "1008:7:0", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Tornado_$1194_$", - "typeString": "type(contract Tornado)" - } - }, - "nodeType": "ModifierInvocation", - "src": "1008:63:0" - } - ], - "name": "", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 17, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 8, - "name": "_verifier", - "nodeType": "VariableDeclaration", - "scope": 30, - "src": "884:19:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IVerifier_$891", - "typeString": "contract IVerifier" - }, - "typeName": { - "contractScope": null, - "id": 7, - "name": "IVerifier", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 891, - "src": "884:9:0", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IVerifier_$891", - "typeString": "contract IVerifier" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 10, - "name": "_denomination", - "nodeType": "VariableDeclaration", - "scope": 30, - "src": "909:21:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 9, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "909:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 12, - "name": "_merkleTreeHeight", - "nodeType": "VariableDeclaration", - "scope": 30, - "src": "936:24:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 11, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "936:6:0", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 14, - "name": "_operator", - "nodeType": "VariableDeclaration", - "scope": 30, - "src": "966:17:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 13, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "966:7:0", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 16, - "name": "_token", - "nodeType": "VariableDeclaration", - "scope": 30, - "src": "989:14:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 15, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "989:7:0", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "878:129:0" - }, - "returnParameters": { - "id": 24, - "nodeType": "ParameterList", - "parameters": [], - "src": "1079:0:0" - }, - "scope": 227, - "src": "867:237:0", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 50, - "nodeType": "Block", - "src": "1144:155:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 37, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 34, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3260, - "src": "1158:3:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 35, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "value", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1158:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 36, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1171:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1158:14:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "4554482076616c756520697320737570706f73656420746f206265203020666f7220455243323020696e7374616e6365", - "id": 38, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1174:50:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_b14b0818f1fdc710b92ba7e1ce725992b43e47a5b220b1b890f352eeac2e1d5e", - "typeString": "literal_string \"ETH value is supposed to be 0 for ERC20 instance\"" - }, - "value": "ETH value is supposed to be 0 for ERC20 instance" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_b14b0818f1fdc710b92ba7e1ce725992b43e47a5b220b1b890f352eeac2e1d5e", - "typeString": "literal_string \"ETH value is supposed to be 0 for ERC20 instance\"" - } - ], - "id": 33, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 3263, - 3264 - ], - "referencedDeclaration": 3264, - "src": "1150:7:0", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 39, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1150:75:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 40, - "nodeType": "ExpressionStatement", - "src": "1150:75:0" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 42, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3260, - "src": "1254:3:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 43, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1254:10:0", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 45, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3284, - "src": "1274:4:0", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Tornado_$227", - "typeString": "contract ERC20Tornado" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_ERC20Tornado_$227", - "typeString": "contract ERC20Tornado" - } - ], - "id": 44, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1266:7:0", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 46, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1266:13:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 47, - "name": "denomination", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 897, - "src": "1281:12:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 41, - "name": "_safeErc20TransferFrom", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 171, - "src": "1231:22:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,address,uint256)" - } - }, - "id": 48, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1231:63:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 49, - "nodeType": "ExpressionStatement", - "src": "1231:63:0" - } - ] - }, - "documentation": null, - "id": 51, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_processDeposit", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 31, - "nodeType": "ParameterList", - "parameters": [], - "src": "1132:2:0" - }, - "returnParameters": { - "id": 32, - "nodeType": "ParameterList", - "parameters": [], - "src": "1144:0:0" - }, - "scope": 227, - "src": "1108:191:0", - "stateMutability": "nonpayable", - "superFunction": 1014, - "visibility": "internal" - }, - { - "body": { - "id": 112, - "nodeType": "Block", - "src": "1423:427:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 66, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 63, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3260, - "src": "1437:3:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 64, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "value", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1437:9:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 65, - "name": "_refund", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 59, - "src": "1450:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1437:20:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "496e636f727265637420726566756e6420616d6f756e742072656365697665642062792074686520636f6e7472616374", - "id": 67, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1459:50:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_3189ced290ffd29dc422911cd3b29574f21c524c91f4b41e6abb0646c581cbff", - "typeString": "literal_string \"Incorrect refund amount received by the contract\"" - }, - "value": "Incorrect refund amount received by the contract" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_3189ced290ffd29dc422911cd3b29574f21c524c91f4b41e6abb0646c581cbff", - "typeString": "literal_string \"Incorrect refund amount received by the contract\"" - } - ], - "id": 62, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 3263, - 3264 - ], - "referencedDeclaration": 3264, - "src": "1429:7:0", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 68, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1429:81:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 69, - "nodeType": "ExpressionStatement", - "src": "1429:81:0" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 71, - "name": "_recipient", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 53, - "src": "1536:10:0", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 74, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 72, - "name": "denomination", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 897, - "src": "1548:12:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 73, - "name": "_fee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 57, - "src": "1563:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1548:19:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 70, - "name": "_safeErc20Transfer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 226, - "src": "1517:18:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,uint256)" - } - }, - "id": 75, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1517:51:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 76, - "nodeType": "ExpressionStatement", - "src": "1517:51:0" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 79, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 77, - "name": "_fee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 57, - "src": "1578:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 78, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1585:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1578:8:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 86, - "nodeType": "IfStatement", - "src": "1574:63:0", - "trueBody": { - "id": 85, - "nodeType": "Block", - "src": "1588:49:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 81, - "name": "_relayer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 55, - "src": "1615:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - { - "argumentTypes": null, - "id": 82, - "name": "_fee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 57, - "src": "1625:4:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 80, - "name": "_safeErc20Transfer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 226, - "src": "1596:18:0", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,uint256)" - } - }, - "id": 83, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1596:34:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 84, - "nodeType": "ExpressionStatement", - "src": "1596:34:0" - } - ] - } - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 89, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 87, - "name": "_refund", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 59, - "src": "1647:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 88, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1657:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1647:11:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 111, - "nodeType": "IfStatement", - "src": "1643:203:0", - "trueBody": { - "id": 110, - "nodeType": "Block", - "src": "1660:186:0", - "statements": [ - { - "assignments": [ - 91, - null - ], - "declarations": [ - { - "constant": false, - "id": 91, - "name": "success", - "nodeType": "VariableDeclaration", - "scope": 110, - "src": "1669:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 90, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "1669:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - }, - null - ], - "id": 99, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "", - "id": 97, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1718:2:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "typeString": "literal_string \"\"" - }, - "value": "" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "typeString": "literal_string \"\"" - } - ], - "arguments": [ - { - "argumentTypes": null, - "id": 95, - "name": "_refund", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 59, - "src": "1709:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 92, - "name": "_recipient", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 53, - "src": "1687:10:0", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "id": 93, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "call", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1687:15:0", - "typeDescriptions": { - "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory) payable returns (bool,bytes memory)" - } - }, - "id": 94, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "value", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1687:21:0", - "typeDescriptions": { - "typeIdentifier": "t_function_setvalue_pure$_t_uint256_$returns$_t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value_$", - "typeString": "function (uint256) pure returns (function (bytes memory) payable returns (bool,bytes memory))" - } - }, - "id": 96, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1687:30:0", - "typeDescriptions": { - "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value", - "typeString": "function (bytes memory) payable returns (bool,bytes memory)" - } - }, - "id": 98, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1687:34:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", - "typeString": "tuple(bool,bytes memory)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1668:53:0" - }, - { - "condition": { - "argumentTypes": null, - "id": 101, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "1733:8:0", - "subExpression": { - "argumentTypes": null, - "id": 100, - "name": "success", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 91, - "src": "1734:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 109, - "nodeType": "IfStatement", - "src": "1729:111:0", - "trueBody": { - "id": 108, - "nodeType": "Block", - "src": "1743:97:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 105, - "name": "_refund", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 59, - "src": "1823:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 102, - "name": "_relayer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 55, - "src": "1805:8:0", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "id": 104, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "transfer", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1805:17:0", - "typeDescriptions": { - "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", - "typeString": "function (uint256)" - } - }, - "id": 106, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1805:26:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 107, - "nodeType": "ExpressionStatement", - "src": "1805:26:0" - } - ] - } - } - ] - } - } - ] - }, - "documentation": null, - "id": 113, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_processWithdraw", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 60, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 53, - "name": "_recipient", - "nodeType": "VariableDeclaration", - "scope": 113, - "src": "1329:26:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - "typeName": { - "id": 52, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1329:15:0", - "stateMutability": "payable", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 55, - "name": "_relayer", - "nodeType": "VariableDeclaration", - "scope": 113, - "src": "1357:24:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - "typeName": { - "id": 54, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1357:15:0", - "stateMutability": "payable", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 57, - "name": "_fee", - "nodeType": "VariableDeclaration", - "scope": 113, - "src": "1383:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 56, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1383:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 59, - "name": "_refund", - "nodeType": "VariableDeclaration", - "scope": 113, - "src": "1397:15:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 58, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1397:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1328:85:0" - }, - "returnParameters": { - "id": 61, - "nodeType": "ParameterList", - "parameters": [], - "src": "1423:0:0" - }, - "scope": 227, - "src": "1303:547:0", - "stateMutability": "nonpayable", - "superFunction": 1110, - "visibility": "internal" - }, - { - "body": { - "id": 170, - "nodeType": "Block", - "src": "1940:504:0", - "statements": [ - { - "assignments": [ - 123, - 125 - ], - "declarations": [ - { - "constant": false, - "id": 123, - "name": "success", - "nodeType": "VariableDeclaration", - "scope": 170, - "src": "1947:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 122, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "1947:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 125, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 170, - "src": "1961:17:0", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 124, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "1961:5:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 136, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30783233623837326464", - "id": 130, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2016:10:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_599290589_by_1", - "typeString": "int_const 599290589" - }, - "value": "0x23b872dd" - }, - { - "argumentTypes": null, - "id": 131, - "name": "_from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 115, - "src": "2047:5:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 132, - "name": "_to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 117, - "src": "2054:3:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 133, - "name": "_amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119, - "src": "2059:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_599290589_by_1", - "typeString": "int_const 599290589" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 128, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3247, - "src": "1993:3:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 129, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "encodeWithSelector", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1993:22:0", - "typeDescriptions": { - "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", - "typeString": "function (bytes4) pure returns (bytes memory)" - } - }, - "id": 134, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1993:74:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "expression": { - "argumentTypes": null, - "id": 126, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6, - "src": "1982:5:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 127, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "call", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1982:10:0", - "typeDescriptions": { - "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory) payable returns (bool,bytes memory)" - } - }, - "id": 135, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1982:86:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", - "typeString": "tuple(bool,bytes memory)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1946:122:0" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 138, - "name": "success", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2082:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "6e6f7420656e6f75676820616c6c6f77656420746f6b656e73", - "id": 139, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2091:27:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_b31c8a8545ea674c554dd2f6bad7d7bd1dfe923a25150b76350dc6970bf3ff5c", - "typeString": "literal_string \"not enough allowed tokens\"" - }, - "value": "not enough allowed tokens" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_b31c8a8545ea674c554dd2f6bad7d7bd1dfe923a25150b76350dc6970bf3ff5c", - "typeString": "literal_string \"not enough allowed tokens\"" - } - ], - "id": 137, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 3263, - 3264 - ], - "referencedDeclaration": 3264, - "src": "2074:7:0", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 140, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2074:45:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 141, - "nodeType": "ExpressionStatement", - "src": "2074:45:0" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 145, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 142, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 125, - "src": "2219:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 143, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2219:11:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 144, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2233:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2219:15:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 169, - "nodeType": "IfStatement", - "src": "2215:225:0", - "trueBody": { - "id": 168, - "nodeType": "Block", - "src": "2236:204:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 150, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 147, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 125, - "src": "2252:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 148, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2252:11:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "3332", - "id": 149, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2267:2:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_32_by_1", - "typeString": "int_const 32" - }, - "value": "32" - }, - "src": "2252:17:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "64617461206c656e6774682073686f756c64206265206569746865722030206f72203332206279746573", - "id": 151, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2271:44:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_22b4652a1c8fbdfc6305c7ee289e87caf6a45e5ae327ee8f67eb64ba36d62560", - "typeString": "literal_string \"data length should be either 0 or 32 bytes\"" - }, - "value": "data length should be either 0 or 32 bytes" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_22b4652a1c8fbdfc6305c7ee289e87caf6a45e5ae327ee8f67eb64ba36d62560", - "typeString": "literal_string \"data length should be either 0 or 32 bytes\"" - } - ], - "id": 146, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 3263, - 3264 - ], - "referencedDeclaration": 3264, - "src": "2244:7:0", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 152, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2244:72:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 153, - "nodeType": "ExpressionStatement", - "src": "2244:72:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 161, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 154, - "name": "success", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2324:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 157, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 125, - "src": "2345:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "id": 158, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2352:4:0", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bool_$", - "typeString": "type(bool)" - }, - "typeName": "bool" - } - ], - "id": 159, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2351:6:0", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bool_$", - "typeString": "type(bool)" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_type$_t_bool_$", - "typeString": "type(bool)" - } - ], - "expression": { - "argumentTypes": null, - "id": 155, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3247, - "src": "2334:3:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 156, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "decode", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2334:10:0", - "typeDescriptions": { - "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 160, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2334:24:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "2324:34:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 162, - "nodeType": "ExpressionStatement", - "src": "2324:34:0" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 164, - "name": "success", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "2374:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "6e6f7420656e6f75676820616c6c6f77656420746f6b656e732e20546f6b656e2072657475726e732066616c73652e", - "id": 165, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2383:49:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_6cfae212a217874b58247660ff4d75d72aa825e8f2120480a7da09cf7efa221d", - "typeString": "literal_string \"not enough allowed tokens. Token returns false.\"" - }, - "value": "not enough allowed tokens. Token returns false." - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_6cfae212a217874b58247660ff4d75d72aa825e8f2120480a7da09cf7efa221d", - "typeString": "literal_string \"not enough allowed tokens. Token returns false.\"" - } - ], - "id": 163, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 3263, - 3264 - ], - "referencedDeclaration": 3264, - "src": "2366:7:0", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 166, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2366:67:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 167, - "nodeType": "ExpressionStatement", - "src": "2366:67:0" - } - ] - } - } - ] - }, - "documentation": null, - "id": 171, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_safeErc20TransferFrom", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 120, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 115, - "name": "_from", - "nodeType": "VariableDeclaration", - "scope": 171, - "src": "1886:13:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 114, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1886:7:0", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 117, - "name": "_to", - "nodeType": "VariableDeclaration", - "scope": 171, - "src": "1901:11:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 116, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1901:7:0", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 119, - "name": "_amount", - "nodeType": "VariableDeclaration", - "scope": 171, - "src": "1914:15:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 118, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1914:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1885:45:0" - }, - "returnParameters": { - "id": 121, - "nodeType": "ParameterList", - "parameters": [], - "src": "1940:0:0" - }, - "scope": 227, - "src": "1854:590:0", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 225, - "nodeType": "Block", - "src": "2515:477:0", - "statements": [ - { - "assignments": [ - 179, - 181 - ], - "declarations": [ - { - "constant": false, - "id": 179, - "name": "success", - "nodeType": "VariableDeclaration", - "scope": 225, - "src": "2522:12:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 178, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "2522:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 181, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 225, - "src": "2536:17:0", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 180, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "2536:5:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 191, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30786139303539636262", - "id": 186, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2591:10:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2835717307_by_1", - "typeString": "int_const 2835717307" - }, - "value": "0xa9059cbb" - }, - { - "argumentTypes": null, - "id": 187, - "name": "_to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 173, - "src": "2618:3:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 188, - "name": "_amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 175, - "src": "2623:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_2835717307_by_1", - "typeString": "int_const 2835717307" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 184, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3247, - "src": "2568:3:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 185, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "encodeWithSelector", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2568:22:0", - "typeDescriptions": { - "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", - "typeString": "function (bytes4) pure returns (bytes memory)" - } - }, - "id": 189, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2568:63:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "expression": { - "argumentTypes": null, - "id": 182, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6, - "src": "2557:5:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 183, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "call", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2557:10:0", - "typeDescriptions": { - "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory) payable returns (bool,bytes memory)" - } - }, - "id": 190, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2557:75:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", - "typeString": "tuple(bool,bytes memory)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2521:111:0" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 193, - "name": "success", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 179, - "src": "2646:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "6e6f7420656e6f75676820746f6b656e73", - "id": 194, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2655:19:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_73949bcdc07934e9395e82489bb22c4742e057960a2c090d38e53d68d3caf52a", - "typeString": "literal_string \"not enough tokens\"" - }, - "value": "not enough tokens" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_73949bcdc07934e9395e82489bb22c4742e057960a2c090d38e53d68d3caf52a", - "typeString": "literal_string \"not enough tokens\"" - } - ], - "id": 192, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 3263, - 3264 - ], - "referencedDeclaration": 3264, - "src": "2638:7:0", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 195, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2638:37:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 196, - "nodeType": "ExpressionStatement", - "src": "2638:37:0" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 200, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 197, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 181, - "src": "2775:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 198, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2775:11:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 199, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2789:1:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2775:15:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 224, - "nodeType": "IfStatement", - "src": "2771:217:0", - "trueBody": { - "id": 223, - "nodeType": "Block", - "src": "2792:196:0", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 205, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 202, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 181, - "src": "2808:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 203, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2808:11:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "3332", - "id": 204, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2823:2:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_32_by_1", - "typeString": "int_const 32" - }, - "value": "32" - }, - "src": "2808:17:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "64617461206c656e6774682073686f756c64206265206569746865722030206f72203332206279746573", - "id": 206, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2827:44:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_22b4652a1c8fbdfc6305c7ee289e87caf6a45e5ae327ee8f67eb64ba36d62560", - "typeString": "literal_string \"data length should be either 0 or 32 bytes\"" - }, - "value": "data length should be either 0 or 32 bytes" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_22b4652a1c8fbdfc6305c7ee289e87caf6a45e5ae327ee8f67eb64ba36d62560", - "typeString": "literal_string \"data length should be either 0 or 32 bytes\"" - } - ], - "id": 201, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 3263, - 3264 - ], - "referencedDeclaration": 3264, - "src": "2800:7:0", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 207, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2800:72:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 208, - "nodeType": "ExpressionStatement", - "src": "2800:72:0" - }, - { - "expression": { - "argumentTypes": null, - "id": 216, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 209, - "name": "success", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 179, - "src": "2880:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 212, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 181, - "src": "2901:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "id": 213, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2908:4:0", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bool_$", - "typeString": "type(bool)" - }, - "typeName": "bool" - } - ], - "id": 214, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2907:6:0", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bool_$", - "typeString": "type(bool)" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_type$_t_bool_$", - "typeString": "type(bool)" - } - ], - "expression": { - "argumentTypes": null, - "id": 210, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3247, - "src": "2890:3:0", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 211, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "decode", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2890:10:0", - "typeDescriptions": { - "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 215, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2890:24:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "2880:34:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 217, - "nodeType": "ExpressionStatement", - "src": "2880:34:0" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 219, - "name": "success", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 179, - "src": "2930:7:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "6e6f7420656e6f75676820746f6b656e732e20546f6b656e2072657475726e732066616c73652e", - "id": 220, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2939:41:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_38fa5aabf87e9f42de902eb4d9022484dde7943d80702b79ba468e9fc08f5e5e", - "typeString": "literal_string \"not enough tokens. Token returns false.\"" - }, - "value": "not enough tokens. Token returns false." - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_38fa5aabf87e9f42de902eb4d9022484dde7943d80702b79ba468e9fc08f5e5e", - "typeString": "literal_string \"not enough tokens. Token returns false.\"" - } - ], - "id": 218, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 3263, - 3264 - ], - "referencedDeclaration": 3264, - "src": "2922:7:0", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 221, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2922:59:0", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 222, - "nodeType": "ExpressionStatement", - "src": "2922:59:0" - } - ] - } - } - ] - }, - "documentation": null, - "id": 226, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_safeErc20Transfer", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 176, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 173, - "name": "_to", - "nodeType": "VariableDeclaration", - "scope": 226, - "src": "2476:11:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 172, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2476:7:0", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 175, - "name": "_amount", - "nodeType": "VariableDeclaration", - "scope": 226, - "src": "2489:15:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 174, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2489:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2475:30:0" - }, - "returnParameters": { - "id": 177, - "nodeType": "ParameterList", - "parameters": [], - "src": "2515:0:0" - }, - "scope": 227, - "src": "2448:544:0", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - } - ], - "scope": 228, - "src": "805:2189:0" - } - ], - "src": "755:2240:0" - }, - "legacyAST": { - "attributes": { - "absolutePath": "/Users/brianli/dotfiles/tornado-core/contracts/ERC20Tornado.sol", - "exportedSymbols": { - "ERC20Tornado": [ - 227 - ] - } - }, - "children": [ - { - "attributes": { - "literals": [ - "solidity", - "0.5", - ".17" - ] - }, - "id": 1, - "name": "PragmaDirective", - "src": "755:23:0" - }, - { - "attributes": { - "SourceUnit": 1195, - "absolutePath": "/Users/brianli/dotfiles/tornado-core/contracts/Tornado.sol", - "file": "./Tornado.sol", - "scope": 228, - "symbolAliases": [ - null - ], - "unitAlias": "" - }, - "id": 2, - "name": "ImportDirective", - "src": "780:23:0" - }, - { - "attributes": { - "contractDependencies": [ - 694, - 1194, - 3245 - ], - "contractKind": "contract", - "documentation": null, - "fullyImplemented": true, - "linearizedBaseContracts": [ - 227, - 1194, - 3245, - 694 - ], - "name": "ERC20Tornado", - "scope": 228 - }, - "children": [ - { - "attributes": { - "arguments": null - }, - "children": [ - { - "attributes": { - "contractScope": null, - "name": "Tornado", - "referencedDeclaration": 1194, - "type": "contract Tornado" - }, - "id": 3, - "name": "UserDefinedTypeName", - "src": "830:7:0" - } - ], - "id": 4, - "name": "InheritanceSpecifier", - "src": "830:7:0" - }, - { - "attributes": { - "constant": false, - "name": "token", - "scope": 227, - "stateVariable": true, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "public" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 5, - "name": "ElementaryTypeName", - "src": "842:7:0" - } - ], - "id": 6, - "name": "VariableDeclaration", - "src": "842:20:0" - }, - { - "attributes": { - "documentation": null, - "implemented": true, - "isConstructor": true, - "kind": "constructor", - "name": "", - "scope": 227, - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "_verifier", - "scope": 30, - "stateVariable": false, - "storageLocation": "default", - "type": "contract IVerifier", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "contractScope": null, - "name": "IVerifier", - "referencedDeclaration": 891, - "type": "contract IVerifier" - }, - "id": 7, - "name": "UserDefinedTypeName", - "src": "884:9:0" - } - ], - "id": 8, - "name": "VariableDeclaration", - "src": "884:19:0" - }, - { - "attributes": { - "constant": false, - "name": "_denomination", - "scope": 30, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 9, - "name": "ElementaryTypeName", - "src": "909:7:0" - } - ], - "id": 10, - "name": "VariableDeclaration", - "src": "909:21:0" - }, - { - "attributes": { - "constant": false, - "name": "_merkleTreeHeight", - "scope": 30, - "stateVariable": false, - "storageLocation": "default", - "type": "uint32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint32", - "type": "uint32" - }, - "id": 11, - "name": "ElementaryTypeName", - "src": "936:6:0" - } - ], - "id": 12, - "name": "VariableDeclaration", - "src": "936:24:0" - }, - { - "attributes": { - "constant": false, - "name": "_operator", - "scope": 30, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 13, - "name": "ElementaryTypeName", - "src": "966:7:0" - } - ], - "id": 14, - "name": "VariableDeclaration", - "src": "966:17:0" - }, - { - "attributes": { - "constant": false, - "name": "_token", - "scope": 30, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 15, - "name": "ElementaryTypeName", - "src": "989:7:0" - } - ], - "id": 16, - "name": "VariableDeclaration", - "src": "989:14:0" - } - ], - "id": 17, - "name": "ParameterList", - "src": "878:129:0" - }, - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 24, - "name": "ParameterList", - "src": "1079:0:0" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1194, - "type": "type(contract Tornado)", - "value": "Tornado" - }, - "id": 18, - "name": "Identifier", - "src": "1008:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 8, - "type": "contract IVerifier", - "value": "_verifier" - }, - "id": 19, - "name": "Identifier", - "src": "1016:9:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 10, - "type": "uint256", - "value": "_denomination" - }, - "id": 20, - "name": "Identifier", - "src": "1027:13:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 12, - "type": "uint32", - "value": "_merkleTreeHeight" - }, - "id": 21, - "name": "Identifier", - "src": "1042:17:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 14, - "type": "address", - "value": "_operator" - }, - "id": 22, - "name": "Identifier", - "src": "1061:9:0" - } - ], - "id": 23, - "name": "ModifierInvocation", - "src": "1008:63:0" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 6, - "type": "address", - "value": "token" - }, - "id": 25, - "name": "Identifier", - "src": "1085:5:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 16, - "type": "address", - "value": "_token" - }, - "id": 26, - "name": "Identifier", - "src": "1093:6:0" - } - ], - "id": 27, - "name": "Assignment", - "src": "1085:14:0" - } - ], - "id": 28, - "name": "ExpressionStatement", - "src": "1085:14:0" - } - ], - "id": 29, - "name": "Block", - "src": "1079:25:0" - } - ], - "id": 30, - "name": "FunctionDefinition", - "src": "867:237:0" - }, - { - "attributes": { - "documentation": null, - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "_processDeposit", - "scope": 227, - "stateMutability": "nonpayable", - "superFunction": 1014, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 31, - "name": "ParameterList", - "src": "1132:2:0" - }, - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 32, - "name": "ParameterList", - "src": "1144:0:0" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_b14b0818f1fdc710b92ba7e1ce725992b43e47a5b220b1b890f352eeac2e1d5e", - "typeString": "literal_string \"ETH value is supposed to be 0 for ERC20 instance\"" - } - ], - "overloadedDeclarations": [ - 3263, - 3264 - ], - "referencedDeclaration": 3264, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 33, - "name": "Identifier", - "src": "1150:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "value", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 3260, - "type": "msg", - "value": "msg" - }, - "id": 34, - "name": "Identifier", - "src": "1158:3:0" - } - ], - "id": 35, - "name": "MemberAccess", - "src": "1158:9:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 36, - "name": "Literal", - "src": "1171:1:0" - } - ], - "id": 37, - "name": "BinaryOperation", - "src": "1158:14:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "4554482076616c756520697320737570706f73656420746f206265203020666f7220455243323020696e7374616e6365", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"ETH value is supposed to be 0 for ERC20 instance\"", - "value": "ETH value is supposed to be 0 for ERC20 instance" - }, - "id": 38, - "name": "Literal", - "src": "1174:50:0" - } - ], - "id": 39, - "name": "FunctionCall", - "src": "1150:75:0" - } - ], - "id": 40, - "name": "ExpressionStatement", - "src": "1150:75:0" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 171, - "type": "function (address,address,uint256)", - "value": "_safeErc20TransferFrom" - }, - "id": 41, - "name": "Identifier", - "src": "1231:22:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sender", - "referencedDeclaration": null, - "type": "address payable" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 3260, - "type": "msg", - "value": "msg" - }, - "id": 42, - "name": "Identifier", - "src": "1254:3:0" - } - ], - "id": 43, - "name": "MemberAccess", - "src": "1254:10:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "address", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_ERC20Tornado_$227", - "typeString": "contract ERC20Tornado" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(address)", - "value": "address" - }, - "id": 44, - "name": "ElementaryTypeNameExpression", - "src": "1266:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 3284, - "type": "contract ERC20Tornado", - "value": "this" - }, - "id": 45, - "name": "Identifier", - "src": "1274:4:0" - } - ], - "id": 46, - "name": "FunctionCall", - "src": "1266:13:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 897, - "type": "uint256", - "value": "denomination" - }, - "id": 47, - "name": "Identifier", - "src": "1281:12:0" - } - ], - "id": 48, - "name": "FunctionCall", - "src": "1231:63:0" - } - ], - "id": 49, - "name": "ExpressionStatement", - "src": "1231:63:0" - } - ], - "id": 50, - "name": "Block", - "src": "1144:155:0" - } - ], - "id": 51, - "name": "FunctionDefinition", - "src": "1108:191:0" - }, - { - "attributes": { - "documentation": null, - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "_processWithdraw", - "scope": 227, - "stateMutability": "nonpayable", - "superFunction": 1110, - "visibility": "internal" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "_recipient", - "scope": 113, - "stateVariable": false, - "storageLocation": "default", - "type": "address payable", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "payable", - "type": "address payable" - }, - "id": 52, - "name": "ElementaryTypeName", - "src": "1329:15:0" - } - ], - "id": 53, - "name": "VariableDeclaration", - "src": "1329:26:0" - }, - { - "attributes": { - "constant": false, - "name": "_relayer", - "scope": 113, - "stateVariable": false, - "storageLocation": "default", - "type": "address payable", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "payable", - "type": "address payable" - }, - "id": 54, - "name": "ElementaryTypeName", - "src": "1357:15:0" - } - ], - "id": 55, - "name": "VariableDeclaration", - "src": "1357:24:0" - }, - { - "attributes": { - "constant": false, - "name": "_fee", - "scope": 113, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 56, - "name": "ElementaryTypeName", - "src": "1383:7:0" - } - ], - "id": 57, - "name": "VariableDeclaration", - "src": "1383:12:0" - }, - { - "attributes": { - "constant": false, - "name": "_refund", - "scope": 113, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 58, - "name": "ElementaryTypeName", - "src": "1397:7:0" - } - ], - "id": 59, - "name": "VariableDeclaration", - "src": "1397:15:0" - } - ], - "id": 60, - "name": "ParameterList", - "src": "1328:85:0" - }, - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 61, - "name": "ParameterList", - "src": "1423:0:0" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_3189ced290ffd29dc422911cd3b29574f21c524c91f4b41e6abb0646c581cbff", - "typeString": "literal_string \"Incorrect refund amount received by the contract\"" - } - ], - "overloadedDeclarations": [ - 3263, - 3264 - ], - "referencedDeclaration": 3264, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 62, - "name": "Identifier", - "src": "1429:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "value", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 3260, - "type": "msg", - "value": "msg" - }, - "id": 63, - "name": "Identifier", - "src": "1437:3:0" - } - ], - "id": 64, - "name": "MemberAccess", - "src": "1437:9:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 59, - "type": "uint256", - "value": "_refund" - }, - "id": 65, - "name": "Identifier", - "src": "1450:7:0" - } - ], - "id": 66, - "name": "BinaryOperation", - "src": "1437:20:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "496e636f727265637420726566756e6420616d6f756e742072656365697665642062792074686520636f6e7472616374", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"Incorrect refund amount received by the contract\"", - "value": "Incorrect refund amount received by the contract" - }, - "id": 67, - "name": "Literal", - "src": "1459:50:0" - } - ], - "id": 68, - "name": "FunctionCall", - "src": "1429:81:0" - } - ], - "id": 69, - "name": "ExpressionStatement", - "src": "1429:81:0" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 226, - "type": "function (address,uint256)", - "value": "_safeErc20Transfer" - }, - "id": 70, - "name": "Identifier", - "src": "1517:18:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 53, - "type": "address payable", - "value": "_recipient" - }, - "id": 71, - "name": "Identifier", - "src": "1536:10:0" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "-", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 897, - "type": "uint256", - "value": "denomination" - }, - "id": 72, - "name": "Identifier", - "src": "1548:12:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 57, - "type": "uint256", - "value": "_fee" - }, - "id": 73, - "name": "Identifier", - "src": "1563:4:0" - } - ], - "id": 74, - "name": "BinaryOperation", - "src": "1548:19:0" - } - ], - "id": 75, - "name": "FunctionCall", - "src": "1517:51:0" - } - ], - "id": 76, - "name": "ExpressionStatement", - "src": "1517:51:0" - }, - { - "attributes": { - "falseBody": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": ">", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 57, - "type": "uint256", - "value": "_fee" - }, - "id": 77, - "name": "Identifier", - "src": "1578:4:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 78, - "name": "Literal", - "src": "1585:1:0" - } - ], - "id": 79, - "name": "BinaryOperation", - "src": "1578:8:0" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 226, - "type": "function (address,uint256)", - "value": "_safeErc20Transfer" - }, - "id": 80, - "name": "Identifier", - "src": "1596:18:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 55, - "type": "address payable", - "value": "_relayer" - }, - "id": 81, - "name": "Identifier", - "src": "1615:8:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 57, - "type": "uint256", - "value": "_fee" - }, - "id": 82, - "name": "Identifier", - "src": "1625:4:0" - } - ], - "id": 83, - "name": "FunctionCall", - "src": "1596:34:0" - } - ], - "id": 84, - "name": "ExpressionStatement", - "src": "1596:34:0" - } - ], - "id": 85, - "name": "Block", - "src": "1588:49:0" - } - ], - "id": 86, - "name": "IfStatement", - "src": "1574:63:0" - }, - { - "attributes": { - "falseBody": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": ">", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 59, - "type": "uint256", - "value": "_refund" - }, - "id": 87, - "name": "Identifier", - "src": "1647:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 88, - "name": "Literal", - "src": "1657:1:0" - } - ], - "id": 89, - "name": "BinaryOperation", - "src": "1647:11:0" - }, - { - "children": [ - { - "attributes": { - "assignments": [ - 91, - null - ] - }, - "children": [ - { - "attributes": { - "constant": false, - "name": "success", - "scope": 110, - "stateVariable": false, - "storageLocation": "default", - "type": "bool", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bool", - "type": "bool" - }, - "id": 90, - "name": "ElementaryTypeName", - "src": "1669:4:0" - } - ], - "id": 91, - "name": "VariableDeclaration", - "src": "1669:12:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "tuple(bool,bytes memory)", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "typeString": "literal_string \"\"" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "function (bytes memory) payable returns (bool,bytes memory)", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "value", - "referencedDeclaration": null, - "type": "function (uint256) pure returns (function (bytes memory) payable returns (bool,bytes memory))" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "call", - "referencedDeclaration": null, - "type": "function (bytes memory) payable returns (bool,bytes memory)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 53, - "type": "address payable", - "value": "_recipient" - }, - "id": 92, - "name": "Identifier", - "src": "1687:10:0" - } - ], - "id": 93, - "name": "MemberAccess", - "src": "1687:15:0" - } - ], - "id": 94, - "name": "MemberAccess", - "src": "1687:21:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 59, - "type": "uint256", - "value": "_refund" - }, - "id": 95, - "name": "Identifier", - "src": "1709:7:0" - } - ], - "id": 96, - "name": "FunctionCall", - "src": "1687:30:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"\"", - "value": "" - }, - "id": 97, - "name": "Literal", - "src": "1718:2:0" - } - ], - "id": 98, - "name": "FunctionCall", - "src": "1687:34:0" - } - ], - "id": 99, - "name": "VariableDeclarationStatement", - "src": "1668:53:0" - }, - { - "attributes": { - "falseBody": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!", - "prefix": true, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 91, - "type": "bool", - "value": "success" - }, - "id": 100, - "name": "Identifier", - "src": "1734:7:0" - } - ], - "id": 101, - "name": "UnaryOperation", - "src": "1733:8:0" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "transfer", - "referencedDeclaration": null, - "type": "function (uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 55, - "type": "address payable", - "value": "_relayer" - }, - "id": 102, - "name": "Identifier", - "src": "1805:8:0" - } - ], - "id": 104, - "name": "MemberAccess", - "src": "1805:17:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 59, - "type": "uint256", - "value": "_refund" - }, - "id": 105, - "name": "Identifier", - "src": "1823:7:0" - } - ], - "id": 106, - "name": "FunctionCall", - "src": "1805:26:0" - } - ], - "id": 107, - "name": "ExpressionStatement", - "src": "1805:26:0" - } - ], - "id": 108, - "name": "Block", - "src": "1743:97:0" - } - ], - "id": 109, - "name": "IfStatement", - "src": "1729:111:0" - } - ], - "id": 110, - "name": "Block", - "src": "1660:186:0" - } - ], - "id": 111, - "name": "IfStatement", - "src": "1643:203:0" - } - ], - "id": 112, - "name": "Block", - "src": "1423:427:0" - } - ], - "id": 113, - "name": "FunctionDefinition", - "src": "1303:547:0" - }, - { - "attributes": { - "documentation": null, - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "_safeErc20TransferFrom", - "scope": 227, - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "_from", - "scope": 171, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 114, - "name": "ElementaryTypeName", - "src": "1886:7:0" - } - ], - "id": 115, - "name": "VariableDeclaration", - "src": "1886:13:0" - }, - { - "attributes": { - "constant": false, - "name": "_to", - "scope": 171, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 116, - "name": "ElementaryTypeName", - "src": "1901:7:0" - } - ], - "id": 117, - "name": "VariableDeclaration", - "src": "1901:11:0" - }, - { - "attributes": { - "constant": false, - "name": "_amount", - "scope": 171, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 118, - "name": "ElementaryTypeName", - "src": "1914:7:0" - } - ], - "id": 119, - "name": "VariableDeclaration", - "src": "1914:15:0" - } - ], - "id": 120, - "name": "ParameterList", - "src": "1885:45:0" - }, - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 121, - "name": "ParameterList", - "src": "1940:0:0" - }, - { - "children": [ - { - "attributes": { - "assignments": [ - 123, - 125 - ] - }, - "children": [ - { - "attributes": { - "constant": false, - "name": "success", - "scope": 170, - "stateVariable": false, - "storageLocation": "default", - "type": "bool", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bool", - "type": "bool" - }, - "id": 122, - "name": "ElementaryTypeName", - "src": "1947:4:0" - } - ], - "id": 123, - "name": "VariableDeclaration", - "src": "1947:12:0" - }, - { - "attributes": { - "constant": false, - "name": "data", - "scope": 170, - "stateVariable": false, - "storageLocation": "memory", - "type": "bytes", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes", - "type": "bytes" - }, - "id": 124, - "name": "ElementaryTypeName", - "src": "1961:5:0" - } - ], - "id": 125, - "name": "VariableDeclaration", - "src": "1961:17:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "tuple(bool,bytes memory)", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "call", - "referencedDeclaration": null, - "type": "function (bytes memory) payable returns (bool,bytes memory)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 6, - "type": "address", - "value": "token" - }, - "id": 126, - "name": "Identifier", - "src": "1982:5:0" - } - ], - "id": 127, - "name": "MemberAccess", - "src": "1982:10:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "bytes memory", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_599290589_by_1", - "typeString": "int_const 599290589" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "member_name": "encodeWithSelector", - "referencedDeclaration": null, - "type": "function (bytes4) pure returns (bytes memory)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 3247, - "type": "abi", - "value": "abi" - }, - "id": 128, - "name": "Identifier", - "src": "1993:3:0" - } - ], - "id": 129, - "name": "MemberAccess", - "src": "1993:22:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30783233623837326464", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 599290589", - "value": "0x23b872dd" - }, - "id": 130, - "name": "Literal", - "src": "2016:10:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 115, - "type": "address", - "value": "_from" - }, - "id": 131, - "name": "Identifier", - "src": "2047:5:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 117, - "type": "address", - "value": "_to" - }, - "id": 132, - "name": "Identifier", - "src": "2054:3:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 119, - "type": "uint256", - "value": "_amount" - }, - "id": 133, - "name": "Identifier", - "src": "2059:7:0" - } - ], - "id": 134, - "name": "FunctionCall", - "src": "1993:74:0" - } - ], - "id": 135, - "name": "FunctionCall", - "src": "1982:86:0" - } - ], - "id": 136, - "name": "VariableDeclarationStatement", - "src": "1946:122:0" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_b31c8a8545ea674c554dd2f6bad7d7bd1dfe923a25150b76350dc6970bf3ff5c", - "typeString": "literal_string \"not enough allowed tokens\"" - } - ], - "overloadedDeclarations": [ - 3263, - 3264 - ], - "referencedDeclaration": 3264, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 137, - "name": "Identifier", - "src": "2074:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 123, - "type": "bool", - "value": "success" - }, - "id": 138, - "name": "Identifier", - "src": "2082:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "6e6f7420656e6f75676820616c6c6f77656420746f6b656e73", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"not enough allowed tokens\"", - "value": "not enough allowed tokens" - }, - "id": 139, - "name": "Literal", - "src": "2091:27:0" - } - ], - "id": 140, - "name": "FunctionCall", - "src": "2074:45:0" - } - ], - "id": 141, - "name": "ExpressionStatement", - "src": "2074:45:0" - }, - { - "attributes": { - "falseBody": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": ">", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "length", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 125, - "type": "bytes memory", - "value": "data" - }, - "id": 142, - "name": "Identifier", - "src": "2219:4:0" - } - ], - "id": 143, - "name": "MemberAccess", - "src": "2219:11:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 144, - "name": "Literal", - "src": "2233:1:0" - } - ], - "id": 145, - "name": "BinaryOperation", - "src": "2219:15:0" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_22b4652a1c8fbdfc6305c7ee289e87caf6a45e5ae327ee8f67eb64ba36d62560", - "typeString": "literal_string \"data length should be either 0 or 32 bytes\"" - } - ], - "overloadedDeclarations": [ - 3263, - 3264 - ], - "referencedDeclaration": 3264, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 146, - "name": "Identifier", - "src": "2244:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "length", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 125, - "type": "bytes memory", - "value": "data" - }, - "id": 147, - "name": "Identifier", - "src": "2252:4:0" - } - ], - "id": 148, - "name": "MemberAccess", - "src": "2252:11:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "3332", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 32", - "value": "32" - }, - "id": 149, - "name": "Literal", - "src": "2267:2:0" - } - ], - "id": 150, - "name": "BinaryOperation", - "src": "2252:17:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "64617461206c656e6774682073686f756c64206265206569746865722030206f72203332206279746573", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"data length should be either 0 or 32 bytes\"", - "value": "data length should be either 0 or 32 bytes" - }, - "id": 151, - "name": "Literal", - "src": "2271:44:0" - } - ], - "id": 152, - "name": "FunctionCall", - "src": "2244:72:0" - } - ], - "id": 153, - "name": "ExpressionStatement", - "src": "2244:72:0" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 123, - "type": "bool", - "value": "success" - }, - "id": 154, - "name": "Identifier", - "src": "2324:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "bool", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_type$_t_bool_$", - "typeString": "type(bool)" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "member_name": "decode", - "referencedDeclaration": null, - "type": "function () pure" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 3247, - "type": "abi", - "value": "abi" - }, - "id": 155, - "name": "Identifier", - "src": "2334:3:0" - } - ], - "id": 156, - "name": "MemberAccess", - "src": "2334:10:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 125, - "type": "bytes memory", - "value": "data" - }, - "id": 157, - "name": "Identifier", - "src": "2345:4:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(bool)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(bool)", - "value": "bool" - }, - "id": 158, - "name": "ElementaryTypeNameExpression", - "src": "2352:4:0" - } - ], - "id": 159, - "name": "TupleExpression", - "src": "2351:6:0" - } - ], - "id": 160, - "name": "FunctionCall", - "src": "2334:24:0" - } - ], - "id": 161, - "name": "Assignment", - "src": "2324:34:0" - } - ], - "id": 162, - "name": "ExpressionStatement", - "src": "2324:34:0" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_6cfae212a217874b58247660ff4d75d72aa825e8f2120480a7da09cf7efa221d", - "typeString": "literal_string \"not enough allowed tokens. Token returns false.\"" - } - ], - "overloadedDeclarations": [ - 3263, - 3264 - ], - "referencedDeclaration": 3264, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 163, - "name": "Identifier", - "src": "2366:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 123, - "type": "bool", - "value": "success" - }, - "id": 164, - "name": "Identifier", - "src": "2374:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "6e6f7420656e6f75676820616c6c6f77656420746f6b656e732e20546f6b656e2072657475726e732066616c73652e", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"not enough allowed tokens. Token returns false.\"", - "value": "not enough allowed tokens. Token returns false." - }, - "id": 165, - "name": "Literal", - "src": "2383:49:0" - } - ], - "id": 166, - "name": "FunctionCall", - "src": "2366:67:0" - } - ], - "id": 167, - "name": "ExpressionStatement", - "src": "2366:67:0" - } - ], - "id": 168, - "name": "Block", - "src": "2236:204:0" - } - ], - "id": 169, - "name": "IfStatement", - "src": "2215:225:0" - } - ], - "id": 170, - "name": "Block", - "src": "1940:504:0" - } - ], - "id": 171, - "name": "FunctionDefinition", - "src": "1854:590:0" - }, - { - "attributes": { - "documentation": null, - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [ - null - ], - "name": "_safeErc20Transfer", - "scope": 227, - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "_to", - "scope": 226, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 172, - "name": "ElementaryTypeName", - "src": "2476:7:0" - } - ], - "id": 173, - "name": "VariableDeclaration", - "src": "2476:11:0" - }, - { - "attributes": { - "constant": false, - "name": "_amount", - "scope": 226, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 174, - "name": "ElementaryTypeName", - "src": "2489:7:0" - } - ], - "id": 175, - "name": "VariableDeclaration", - "src": "2489:15:0" - } - ], - "id": 176, - "name": "ParameterList", - "src": "2475:30:0" - }, - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 177, - "name": "ParameterList", - "src": "2515:0:0" - }, - { - "children": [ - { - "attributes": { - "assignments": [ - 179, - 181 - ] - }, - "children": [ - { - "attributes": { - "constant": false, - "name": "success", - "scope": 225, - "stateVariable": false, - "storageLocation": "default", - "type": "bool", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bool", - "type": "bool" - }, - "id": 178, - "name": "ElementaryTypeName", - "src": "2522:4:0" - } - ], - "id": 179, - "name": "VariableDeclaration", - "src": "2522:12:0" - }, - { - "attributes": { - "constant": false, - "name": "data", - "scope": 225, - "stateVariable": false, - "storageLocation": "memory", - "type": "bytes", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes", - "type": "bytes" - }, - "id": 180, - "name": "ElementaryTypeName", - "src": "2536:5:0" - } - ], - "id": 181, - "name": "VariableDeclaration", - "src": "2536:17:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "tuple(bool,bytes memory)", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "call", - "referencedDeclaration": null, - "type": "function (bytes memory) payable returns (bool,bytes memory)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 6, - "type": "address", - "value": "token" - }, - "id": 182, - "name": "Identifier", - "src": "2557:5:0" - } - ], - "id": 183, - "name": "MemberAccess", - "src": "2557:10:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "bytes memory", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_2835717307_by_1", - "typeString": "int_const 2835717307" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "member_name": "encodeWithSelector", - "referencedDeclaration": null, - "type": "function (bytes4) pure returns (bytes memory)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 3247, - "type": "abi", - "value": "abi" - }, - "id": 184, - "name": "Identifier", - "src": "2568:3:0" - } - ], - "id": 185, - "name": "MemberAccess", - "src": "2568:22:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30786139303539636262", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 2835717307", - "value": "0xa9059cbb" - }, - "id": 186, - "name": "Literal", - "src": "2591:10:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 173, - "type": "address", - "value": "_to" - }, - "id": 187, - "name": "Identifier", - "src": "2618:3:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 175, - "type": "uint256", - "value": "_amount" - }, - "id": 188, - "name": "Identifier", - "src": "2623:7:0" - } - ], - "id": 189, - "name": "FunctionCall", - "src": "2568:63:0" - } - ], - "id": 190, - "name": "FunctionCall", - "src": "2557:75:0" - } - ], - "id": 191, - "name": "VariableDeclarationStatement", - "src": "2521:111:0" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_73949bcdc07934e9395e82489bb22c4742e057960a2c090d38e53d68d3caf52a", - "typeString": "literal_string \"not enough tokens\"" - } - ], - "overloadedDeclarations": [ - 3263, - 3264 - ], - "referencedDeclaration": 3264, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 192, - "name": "Identifier", - "src": "2638:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 179, - "type": "bool", - "value": "success" - }, - "id": 193, - "name": "Identifier", - "src": "2646:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "6e6f7420656e6f75676820746f6b656e73", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"not enough tokens\"", - "value": "not enough tokens" - }, - "id": 194, - "name": "Literal", - "src": "2655:19:0" - } - ], - "id": 195, - "name": "FunctionCall", - "src": "2638:37:0" - } - ], - "id": 196, - "name": "ExpressionStatement", - "src": "2638:37:0" - }, - { - "attributes": { - "falseBody": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": ">", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "length", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 181, - "type": "bytes memory", - "value": "data" - }, - "id": 197, - "name": "Identifier", - "src": "2775:4:0" - } - ], - "id": 198, - "name": "MemberAccess", - "src": "2775:11:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 199, - "name": "Literal", - "src": "2789:1:0" - } - ], - "id": 200, - "name": "BinaryOperation", - "src": "2775:15:0" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_22b4652a1c8fbdfc6305c7ee289e87caf6a45e5ae327ee8f67eb64ba36d62560", - "typeString": "literal_string \"data length should be either 0 or 32 bytes\"" - } - ], - "overloadedDeclarations": [ - 3263, - 3264 - ], - "referencedDeclaration": 3264, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 201, - "name": "Identifier", - "src": "2800:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "length", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 181, - "type": "bytes memory", - "value": "data" - }, - "id": 202, - "name": "Identifier", - "src": "2808:4:0" - } - ], - "id": 203, - "name": "MemberAccess", - "src": "2808:11:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "3332", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 32", - "value": "32" - }, - "id": 204, - "name": "Literal", - "src": "2823:2:0" - } - ], - "id": 205, - "name": "BinaryOperation", - "src": "2808:17:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "64617461206c656e6774682073686f756c64206265206569746865722030206f72203332206279746573", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"data length should be either 0 or 32 bytes\"", - "value": "data length should be either 0 or 32 bytes" - }, - "id": 206, - "name": "Literal", - "src": "2827:44:0" - } - ], - "id": 207, - "name": "FunctionCall", - "src": "2800:72:0" - } - ], - "id": 208, - "name": "ExpressionStatement", - "src": "2800:72:0" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 179, - "type": "bool", - "value": "success" - }, - "id": 209, - "name": "Identifier", - "src": "2880:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "bool", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_type$_t_bool_$", - "typeString": "type(bool)" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "member_name": "decode", - "referencedDeclaration": null, - "type": "function () pure" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 3247, - "type": "abi", - "value": "abi" - }, - "id": 210, - "name": "Identifier", - "src": "2890:3:0" - } - ], - "id": 211, - "name": "MemberAccess", - "src": "2890:10:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 181, - "type": "bytes memory", - "value": "data" - }, - "id": 212, - "name": "Identifier", - "src": "2901:4:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(bool)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(bool)", - "value": "bool" - }, - "id": 213, - "name": "ElementaryTypeNameExpression", - "src": "2908:4:0" - } - ], - "id": 214, - "name": "TupleExpression", - "src": "2907:6:0" - } - ], - "id": 215, - "name": "FunctionCall", - "src": "2890:24:0" - } - ], - "id": 216, - "name": "Assignment", - "src": "2880:34:0" - } - ], - "id": 217, - "name": "ExpressionStatement", - "src": "2880:34:0" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_38fa5aabf87e9f42de902eb4d9022484dde7943d80702b79ba468e9fc08f5e5e", - "typeString": "literal_string \"not enough tokens. Token returns false.\"" - } - ], - "overloadedDeclarations": [ - 3263, - 3264 - ], - "referencedDeclaration": 3264, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 218, - "name": "Identifier", - "src": "2922:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 179, - "type": "bool", - "value": "success" - }, - "id": 219, - "name": "Identifier", - "src": "2930:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "6e6f7420656e6f75676820746f6b656e732e20546f6b656e2072657475726e732066616c73652e", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"not enough tokens. Token returns false.\"", - "value": "not enough tokens. Token returns false." - }, - "id": 220, - "name": "Literal", - "src": "2939:41:0" - } - ], - "id": 221, - "name": "FunctionCall", - "src": "2922:59:0" - } - ], - "id": 222, - "name": "ExpressionStatement", - "src": "2922:59:0" - } - ], - "id": 223, - "name": "Block", - "src": "2792:196:0" - } - ], - "id": 224, - "name": "IfStatement", - "src": "2771:217:0" - } - ], - "id": 225, - "name": "Block", - "src": "2515:477:0" - } - ], - "id": 226, - "name": "FunctionDefinition", - "src": "2448:544:0" - } - ], - "id": 227, - "name": "ContractDefinition", - "src": "805:2189:0" - } - ], - "id": 228, - "name": "SourceUnit", - "src": "755:2240:0" - }, - "compiler": { - "name": "solc", - "version": "0.5.17+commit.d19bba13.Emscripten.clang" - }, - "networks": { - "42220": { - "events": {}, - "links": { - "Hasher": "0xD75035293f552aB5c33483f321DBf0DfA1C7c71d" - }, - "address": "0x0824C3Ed3bF48E5A0dB14c36a1fa44D68f0D79AC", - "transactionHash": "0xba304f60ab6893d7e817560415b664f3fc974570c685426bbae19c1e1a34b420" - } - }, - "schemaVersion": "3.3.4", - "updatedAt": "2021-03-22T02:45:46.951Z", - "networkType": "ethereum", - "devdoc": { - "methods": { - "changeOperator(address)": { - "details": "operator can change his address " - }, - "deposit(bytes32)": { - "details": "Deposit funds into the contract. The caller must send (for ETH) or approve (for ERC20) value equal to or `denomination` of this instance.", - "params": { - "_commitment": "the note commitment, which is PedersenHash(nullifier + secret)" - } - }, - "getLastRoot()": { - "details": "Returns the last root" - }, - "hashLeftRight(bytes32,bytes32)": { - "details": "Hash 2 tree leaves, returns MiMC(_left, _right)" - }, - "isKnownRoot(bytes32)": { - "details": "Whether the root is present in the root history" - }, - "isSpent(bytes32)": { - "details": "whether a note is already spent " - }, - "isSpentArray(bytes32[])": { - "details": "whether an array of notes is already spent " - }, - "updateVerifier(address)": { - "details": "allow operator to update SNARK verification keys. This is needed to update keys after the final trusted setup ceremony is held. After that operator rights are supposed to be transferred to zero address" - }, - "withdraw(bytes,bytes32,bytes32,address,address,uint256,uint256)": { - "details": "Withdraw a deposit from the contract. `proof` is a zkSNARK proof data, and input is an array of circuit public inputs `input` array consists of: - merkle root of all deposits in the contract - hash of unique deposit nullifier to prevent double spends - the recipient of funds - optional fee that goes to the transaction sender (usually a relay)" - } - } - }, - "userdoc": { - "methods": {} - } -} \ No newline at end of file diff --git a/client/contracts/ERC20Mock.json b/client/contracts/ERC20Mock.json index 004db22..cc5f0aa 100644 --- a/client/contracts/ERC20Mock.json +++ b/client/contracts/ERC20Mock.json @@ -917,7 +917,7 @@ } }, "schemaVersion": "3.3.4", - "updatedAt": "2021-03-22T02:54:26.426Z", + "updatedAt": "2021-04-02T22:56:11.659Z", "networkType": "ethereum", "devdoc": { "methods": { diff --git a/client/contracts/ERC20Tornado.json b/client/contracts/ERC20Tornado.json index 0b07c2d..6696fd1 100644 --- a/client/contracts/ERC20Tornado.json +++ b/client/contracts/ERC20Tornado.json @@ -8314,14 +8314,15 @@ "42220": { "events": {}, "links": { - "Hasher": "0xD75035293f552aB5c33483f321DBf0DfA1C7c71d" + "Hasher": "0x5666A6E07d7b991489b1D0f53d37B664B312a1fE" }, - "address": "0x89c8BB50BBa5B15B5044bdA870d1c34322B66171", - "transactionHash": "0xa26063a78dbf50e366559e0eaefd298963a7176b318d163a926d199dc9a1268e" + "address": "0xC8980dcBc56F5CEdd5356D190cB42125e16486eb", + "transactionHash": "0xbbd8007eb57eeeb98a12b9807e7d23d46e64b834d929967a9abf6cd0984d34bd" } }, "schemaVersion": "3.3.4", - "updatedAt": "2021-04-02T22:30:43.183Z", + "updatedAt": "2021-04-02T22:56:11.626Z", + "networkType": "ethereum", "devdoc": { "methods": { "changeOperator(address)": { diff --git a/client/contracts/FeeManager.json b/client/contracts/FeeManager.json index 2b27f9b..aafc6bd 100644 --- a/client/contracts/FeeManager.json +++ b/client/contracts/FeeManager.json @@ -304,7 +304,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2131, + "referencedDeclaration": 1068, "src": "245:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -380,10 +380,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2134, - 2135 + 1071, + 1072 ], - "referencedDeclaration": 2135, + "referencedDeclaration": 1072, "src": "237:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -538,7 +538,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2131, + "referencedDeclaration": 1068, "src": "392:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -614,10 +614,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2134, - 2135 + 1071, + 1072 ], - "referencedDeclaration": 2135, + "referencedDeclaration": 1072, "src": "384:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -1061,10 +1061,10 @@ } ], "overloadedDeclarations": [ - 2134, - 2135 + 1071, + 1072 ], - "referencedDeclaration": 2135, + "referencedDeclaration": 1072, "type": "function (bool,string memory) pure", "value": "require" }, @@ -1105,7 +1105,7 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2131, + "referencedDeclaration": 1068, "type": "msg", "value": "msg" }, @@ -1318,10 +1318,10 @@ } ], "overloadedDeclarations": [ - 2134, - 2135 + 1071, + 1072 ], - "referencedDeclaration": 2135, + "referencedDeclaration": 1072, "type": "function (bool,string memory) pure", "value": "require" }, @@ -1362,7 +1362,7 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2131, + "referencedDeclaration": 1068, "type": "msg", "value": "msg" }, @@ -1496,9 +1496,17 @@ "name": "solc", "version": "0.5.17+commit.d19bba13.Emscripten.clang" }, - "networks": {}, + "networks": { + "42220": { + "events": {}, + "links": {}, + "address": "0x7d21531Adf9d029Acc8C5b225d77Ce2a819887B6", + "transactionHash": "0x1e7d99d96bbf8bce1e1fb870088e2cd6cbdc27a87e8274d3cdb72042686b285d" + } + }, "schemaVersion": "3.3.4", - "updatedAt": "2021-04-02T20:48:07.401Z", + "updatedAt": "2021-04-02T22:56:11.656Z", + "networkType": "ethereum", "devdoc": { "methods": {} }, diff --git a/client/contracts/Hasher.json b/client/contracts/Hasher.json index 906ee4a..53cb6ef 100644 --- a/client/contracts/Hasher.json +++ b/client/contracts/Hasher.json @@ -40,8 +40,8 @@ "42220": { "events": {}, "links": {}, - "address": "0xD75035293f552aB5c33483f321DBf0DfA1C7c71d", - "transactionHash": "0x0f9102eb1cfa4f83630e72d2b0dcb9dec9285859895f39ca224e7500f6282689" + "address": "0x5666A6E07d7b991489b1D0f53d37B664B312a1fE", + "transactionHash": "0x70b1d0c40688aed10a6281b09f1159e9a5d44b5654cd18f6ef7d56ee14d68bcf" }, "44787": { "events": {}, @@ -51,5 +51,6 @@ } }, "schemaVersion": "3.3.4", - "updatedAt": "2021-04-02T22:30:43.196Z" + "updatedAt": "2021-04-02T22:56:11.658Z", + "networkType": "ethereum" } \ No newline at end of file diff --git a/client/contracts/IFeeManager.json b/client/contracts/IFeeManager.json index e182102..66f16da 100644 --- a/client/contracts/IFeeManager.json +++ b/client/contracts/IFeeManager.json @@ -28,47 +28,47 @@ "absolutePath": "/Users/brianli/dotfiles/tornado-core/contracts/Tornado.sol", "exportedSymbols": { "IFeeManager": [ - 654 + 707 ], "IVerifier": [ - 648 + 701 ], "Tornado": [ - 970 + 1023 ] }, - "id": 971, + "id": 1024, "nodeType": "SourceUnit", "nodes": [ { - "id": 634, + "id": 687, "literals": [ "solidity", "0.5", ".17" ], "nodeType": "PragmaDirective", - "src": "0:23:2" + "src": "0:23:3" }, { "absolutePath": "/Users/brianli/dotfiles/tornado-core/contracts/MerkleTreeWithHistory.sol", "file": "./MerkleTreeWithHistory.sol", - "id": 635, + "id": 688, "nodeType": "ImportDirective", - "scope": 971, - "sourceUnit": 633, - "src": "25:37:2", + "scope": 1024, + "sourceUnit": 686, + "src": "25:37:3", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "@openzeppelin/contracts/utils/ReentrancyGuard.sol", "file": "@openzeppelin/contracts/utils/ReentrancyGuard.sol", - "id": 636, + "id": 689, "nodeType": "ImportDirective", - "scope": 971, - "sourceUnit": 1001, - "src": "63:59:2", + "scope": 1024, + "sourceUnit": 1054, + "src": "63:59:3", "symbolAliases": [], "unitAlias": "" }, @@ -78,9 +78,9 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": false, - "id": 648, + "id": 701, "linearizedBaseContracts": [ - 648 + 701 ], "name": "IVerifier", "nodeType": "ContractDefinition", @@ -88,23 +88,23 @@ { "body": null, "documentation": null, - "id": 647, + "id": 700, "implemented": false, "kind": "function", "modifiers": [], "name": "verifyProof", "nodeType": "FunctionDefinition", "parameters": { - "id": 643, + "id": 696, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 638, + "id": 691, "name": "_proof", "nodeType": "VariableDeclaration", - "scope": 647, - "src": "168:19:2", + "scope": 700, + "src": "168:19:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -112,10 +112,10 @@ "typeString": "bytes" }, "typeName": { - "id": 637, + "id": 690, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "168:5:2", + "src": "168:5:3", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -126,11 +126,11 @@ }, { "constant": false, - "id": 642, + "id": 695, "name": "_input", "nodeType": "VariableDeclaration", - "scope": 647, - "src": "189:24:2", + "scope": 700, + "src": "189:24:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -139,27 +139,27 @@ }, "typeName": { "baseType": { - "id": 639, + "id": 692, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "189:7:2", + "src": "189:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 641, + "id": 694, "length": { "argumentTypes": null, "hexValue": "36", - "id": 640, + "id": 693, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "197:1:2", + "src": "197:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_6_by_1", @@ -168,7 +168,7 @@ "value": "6" }, "nodeType": "ArrayTypeName", - "src": "189:10:2", + "src": "189:10:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_storage_ptr", "typeString": "uint256[6]" @@ -178,19 +178,19 @@ "visibility": "internal" } ], - "src": "167:47:2" + "src": "167:47:3" }, "returnParameters": { - "id": 646, + "id": 699, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 645, + "id": 698, "name": "", "nodeType": "VariableDeclaration", - "scope": 647, - "src": "230:4:2", + "scope": 700, + "src": "230:4:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -198,10 +198,10 @@ "typeString": "bool" }, "typeName": { - "id": 644, + "id": 697, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "230:4:2", + "src": "230:4:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -211,17 +211,17 @@ "visibility": "internal" } ], - "src": "229:6:2" + "src": "229:6:3" }, - "scope": 648, - "src": "147:89:2", + "scope": 701, + "src": "147:89:3", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 971, - "src": "124:114:2" + "scope": 1024, + "src": "124:114:3" }, { "baseContracts": [], @@ -229,9 +229,9 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": false, - "id": 654, + "id": 707, "linearizedBaseContracts": [ - 654 + 707 ], "name": "IFeeManager", "nodeType": "ContractDefinition", @@ -239,29 +239,29 @@ { "body": null, "documentation": null, - "id": 653, + "id": 706, "implemented": false, "kind": "function", "modifiers": [], "name": "feeTo", "nodeType": "FunctionDefinition", "parameters": { - "id": 649, + "id": 702, "nodeType": "ParameterList", "parameters": [], - "src": "279:2:2" + "src": "279:2:3" }, "returnParameters": { - "id": 652, + "id": 705, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 651, + "id": 704, "name": "", "nodeType": "VariableDeclaration", - "scope": 653, - "src": "305:7:2", + "scope": 706, + "src": "305:7:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -269,10 +269,10 @@ "typeString": "address" }, "typeName": { - "id": 650, + "id": 703, "name": "address", "nodeType": "ElementaryTypeName", - "src": "305:7:2", + "src": "305:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -283,17 +283,17 @@ "visibility": "internal" } ], - "src": "304:9:2" + "src": "304:9:3" }, - "scope": 654, - "src": "265:49:2", + "scope": 707, + "src": "265:49:3", "stateMutability": "view", "superFunction": null, "visibility": "external" } ], - "scope": 971, - "src": "240:76:2" + "scope": 1024, + "src": "240:76:3" }, { "baseContracts": [ @@ -301,62 +301,62 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 655, + "id": 708, "name": "MerkleTreeWithHistory", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 632, - "src": "338:21:2", + "referencedDeclaration": 685, + "src": "338:21:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_MerkleTreeWithHistory_$632", + "typeIdentifier": "t_contract$_MerkleTreeWithHistory_$685", "typeString": "contract MerkleTreeWithHistory" } }, - "id": 656, + "id": 709, "nodeType": "InheritanceSpecifier", - "src": "338:21:2" + "src": "338:21:3" }, { "arguments": null, "baseName": { "contractScope": null, - "id": 657, + "id": 710, "name": "ReentrancyGuard", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1000, - "src": "361:15:2", + "referencedDeclaration": 1053, + "src": "361:15:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_ReentrancyGuard_$1000", + "typeIdentifier": "t_contract$_ReentrancyGuard_$1053", "typeString": "contract ReentrancyGuard" } }, - "id": 658, + "id": 711, "nodeType": "InheritanceSpecifier", - "src": "361:15:2" + "src": "361:15:3" } ], "contractDependencies": [ - 632, - 1000 + 685, + 1053 ], "contractKind": "contract", "documentation": null, "fullyImplemented": false, - "id": 970, + "id": 1023, "linearizedBaseContracts": [ - 970, - 1000, - 632 + 1023, + 1053, + 685 ], "name": "Tornado", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 660, + "id": 713, "name": "denomination", "nodeType": "VariableDeclaration", - "scope": 970, - "src": "381:27:2", + "scope": 1023, + "src": "381:27:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -364,10 +364,10 @@ "typeString": "uint256" }, "typeName": { - "id": 659, + "id": 712, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "381:7:2", + "src": "381:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -378,11 +378,11 @@ }, { "constant": false, - "id": 664, + "id": 717, "name": "nullifierHashes", "nodeType": "VariableDeclaration", - "scope": 970, - "src": "412:47:2", + "scope": 1023, + "src": "412:47:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -390,28 +390,28 @@ "typeString": "mapping(bytes32 => bool)" }, "typeName": { - "id": 663, + "id": 716, "keyType": { - "id": 661, + "id": 714, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "420:7:2", + "src": "420:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", - "src": "412:24:2", + "src": "412:24:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" }, "valueType": { - "id": 662, + "id": 715, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "431:4:2", + "src": "431:4:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -423,11 +423,11 @@ }, { "constant": false, - "id": 668, + "id": 721, "name": "commitments", "nodeType": "VariableDeclaration", - "scope": 970, - "src": "554:43:2", + "scope": 1023, + "src": "554:43:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -435,28 +435,28 @@ "typeString": "mapping(bytes32 => bool)" }, "typeName": { - "id": 667, + "id": 720, "keyType": { - "id": 665, + "id": 718, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "562:7:2", + "src": "562:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", - "src": "554:24:2", + "src": "554:24:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" }, "valueType": { - "id": 666, + "id": 719, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "573:4:2", + "src": "573:4:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -468,26 +468,26 @@ }, { "constant": false, - "id": 670, + "id": 723, "name": "verifier", "nodeType": "VariableDeclaration", - "scope": 970, - "src": "601:25:2", + "scope": 1023, + "src": "601:25:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IVerifier_$648", + "typeIdentifier": "t_contract$_IVerifier_$701", "typeString": "contract IVerifier" }, "typeName": { "contractScope": null, - "id": 669, + "id": 722, "name": "IVerifier", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 648, - "src": "601:9:2", + "referencedDeclaration": 701, + "src": "601:9:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IVerifier_$648", + "typeIdentifier": "t_contract$_IVerifier_$701", "typeString": "contract IVerifier" } }, @@ -496,26 +496,26 @@ }, { "constant": false, - "id": 672, + "id": 725, "name": "feeManager", "nodeType": "VariableDeclaration", - "scope": 970, - "src": "630:29:2", + "scope": 1023, + "src": "630:29:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IFeeManager_$654", + "typeIdentifier": "t_contract$_IFeeManager_$707", "typeString": "contract IFeeManager" }, "typeName": { "contractScope": null, - "id": 671, + "id": 724, "name": "IFeeManager", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 654, - "src": "630:11:2", + "referencedDeclaration": 707, + "src": "630:11:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IFeeManager_$654", + "typeIdentifier": "t_contract$_IFeeManager_$707", "typeString": "contract IFeeManager" } }, @@ -524,11 +524,11 @@ }, { "constant": false, - "id": 674, + "id": 727, "name": "operator", "nodeType": "VariableDeclaration", - "scope": 970, - "src": "819:23:2", + "scope": 1023, + "src": "819:23:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -536,10 +536,10 @@ "typeString": "address" }, "typeName": { - "id": 673, + "id": 726, "name": "address", "nodeType": "ElementaryTypeName", - "src": "819:7:2", + "src": "819:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -551,9 +551,9 @@ }, { "body": { - "id": 685, + "id": 738, "nodeType": "Block", - "src": "868:90:2", + "src": "868:90:3", "statements": [ { "expression": { @@ -565,7 +565,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 680, + "id": 733, "isConstant": false, "isLValue": false, "isPure": false, @@ -574,18 +574,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 677, + "id": 730, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1015, - "src": "882:3:2", + "referencedDeclaration": 1068, + "src": "882:3:3", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 678, + "id": 731, "isConstant": false, "isLValue": false, "isPure": false, @@ -593,7 +593,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "882:10:2", + "src": "882:10:3", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -603,18 +603,18 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 679, + "id": 732, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 674, - "src": "896:8:2", + "referencedDeclaration": 727, + "src": "896:8:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "882:22:2", + "src": "882:22:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -623,14 +623,14 @@ { "argumentTypes": null, "hexValue": "4f6e6c79206f70657261746f722063616e2063616c6c20746869732066756e6374696f6e2e", - "id": 681, + "id": 734, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "906:39:2", + "src": "906:39:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_e8393660073679be7a6133571fe2ca8983a31a683c72e9055f401ac33a2efffc", @@ -650,21 +650,21 @@ "typeString": "literal_string \"Only operator can call this function.\"" } ], - "id": 676, + "id": 729, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1018, - 1019 + 1071, + 1072 ], - "referencedDeclaration": 1019, - "src": "874:7:2", + "referencedDeclaration": 1072, + "src": "874:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 682, + "id": 735, "isConstant": false, "isLValue": false, "isPure": false, @@ -672,54 +672,54 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "874:72:2", + "src": "874:72:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 683, + "id": 736, "nodeType": "ExpressionStatement", - "src": "874:72:2" + "src": "874:72:3" }, { - "id": 684, + "id": 737, "nodeType": "PlaceholderStatement", - "src": "952:1:2" + "src": "952:1:3" } ] }, "documentation": null, - "id": 686, + "id": 739, "name": "onlyOperator", "nodeType": "ModifierDefinition", "parameters": { - "id": 675, + "id": 728, "nodeType": "ParameterList", "parameters": [], - "src": "868:0:2" + "src": "868:0:3" }, - "src": "846:112:2", + "src": "846:112:3", "visibility": "internal" }, { "anonymous": false, "documentation": null, - "id": 694, + "id": 747, "name": "Deposit", "nodeType": "EventDefinition", "parameters": { - "id": 693, + "id": 746, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 688, + "id": 741, "indexed": true, "name": "commitment", "nodeType": "VariableDeclaration", - "scope": 694, - "src": "976:26:2", + "scope": 747, + "src": "976:26:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -727,10 +727,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 687, + "id": 740, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "976:7:2", + "src": "976:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -741,12 +741,12 @@ }, { "constant": false, - "id": 690, + "id": 743, "indexed": false, "name": "leafIndex", "nodeType": "VariableDeclaration", - "scope": 694, - "src": "1004:16:2", + "scope": 747, + "src": "1004:16:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -754,10 +754,10 @@ "typeString": "uint32" }, "typeName": { - "id": 689, + "id": 742, "name": "uint32", "nodeType": "ElementaryTypeName", - "src": "1004:6:2", + "src": "1004:6:3", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -768,12 +768,12 @@ }, { "constant": false, - "id": 692, + "id": 745, "indexed": false, "name": "timestamp", "nodeType": "VariableDeclaration", - "scope": 694, - "src": "1022:17:2", + "scope": 747, + "src": "1022:17:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -781,10 +781,10 @@ "typeString": "uint256" }, "typeName": { - "id": 691, + "id": 744, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1022:7:2", + "src": "1022:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -794,28 +794,28 @@ "visibility": "internal" } ], - "src": "975:65:2" + "src": "975:65:3" }, - "src": "962:79:2" + "src": "962:79:3" }, { "anonymous": false, "documentation": null, - "id": 704, + "id": 757, "name": "Withdrawal", "nodeType": "EventDefinition", "parameters": { - "id": 703, + "id": 756, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 696, + "id": 749, "indexed": false, "name": "to", "nodeType": "VariableDeclaration", - "scope": 704, - "src": "1061:10:2", + "scope": 757, + "src": "1061:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -823,10 +823,10 @@ "typeString": "address" }, "typeName": { - "id": 695, + "id": 748, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1061:7:2", + "src": "1061:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -838,12 +838,12 @@ }, { "constant": false, - "id": 698, + "id": 751, "indexed": false, "name": "nullifierHash", "nodeType": "VariableDeclaration", - "scope": 704, - "src": "1073:21:2", + "scope": 757, + "src": "1073:21:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -851,10 +851,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 697, + "id": 750, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1073:7:2", + "src": "1073:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -865,12 +865,12 @@ }, { "constant": false, - "id": 700, + "id": 753, "indexed": true, "name": "relayer", "nodeType": "VariableDeclaration", - "scope": 704, - "src": "1096:23:2", + "scope": 757, + "src": "1096:23:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -878,10 +878,10 @@ "typeString": "address" }, "typeName": { - "id": 699, + "id": 752, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1096:7:2", + "src": "1096:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -893,12 +893,12 @@ }, { "constant": false, - "id": 702, + "id": 755, "indexed": false, "name": "fee", "nodeType": "VariableDeclaration", - "scope": 704, - "src": "1121:11:2", + "scope": 757, + "src": "1121:11:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -906,10 +906,10 @@ "typeString": "uint256" }, "typeName": { - "id": 701, + "id": 754, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1121:7:2", + "src": "1121:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -919,15 +919,15 @@ "visibility": "internal" } ], - "src": "1060:73:2" + "src": "1060:73:3" }, - "src": "1044:90:2" + "src": "1044:90:3" }, { "body": { - "id": 743, + "id": 796, "nodeType": "Block", - "src": "1631:194:2", + "src": "1631:194:3", "statements": [ { "expression": { @@ -939,19 +939,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 723, + "id": 776, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 721, + "id": 774, "name": "_denomination", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 710, - "src": "1645:13:2", + "referencedDeclaration": 763, + "src": "1645:13:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -962,14 +962,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 722, + "id": 775, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1661:1:2", + "src": "1661:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -977,7 +977,7 @@ }, "value": "0" }, - "src": "1645:17:2", + "src": "1645:17:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -986,14 +986,14 @@ { "argumentTypes": null, "hexValue": "64656e6f6d696e6174696f6e2073686f756c642062652067726561746572207468616e2030", - "id": 724, + "id": 777, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1664:39:2", + "src": "1664:39:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_04818fb803bf7e7ff6c9059d97eae335b77b108931ead0a529924d35ccaf3fc8", @@ -1013,21 +1013,21 @@ "typeString": "literal_string \"denomination should be greater than 0\"" } ], - "id": 720, + "id": 773, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1018, - 1019 + 1071, + 1072 ], - "referencedDeclaration": 1019, - "src": "1637:7:2", + "referencedDeclaration": 1072, + "src": "1637:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 725, + "id": 778, "isConstant": false, "isLValue": false, "isPure": false, @@ -1035,34 +1035,34 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1637:67:2", + "src": "1637:67:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 726, + "id": 779, "nodeType": "ExpressionStatement", - "src": "1637:67:2" + "src": "1637:67:3" }, { "expression": { "argumentTypes": null, - "id": 729, + "id": 782, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 727, + "id": 780, "name": "verifier", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 670, - "src": "1710:8:2", + "referencedDeclaration": 723, + "src": "1710:8:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IVerifier_$648", + "typeIdentifier": "t_contract$_IVerifier_$701", "typeString": "contract IVerifier" } }, @@ -1070,45 +1070,45 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 728, + "id": 781, "name": "_verifier", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 706, - "src": "1721:9:2", + "referencedDeclaration": 759, + "src": "1721:9:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IVerifier_$648", + "typeIdentifier": "t_contract$_IVerifier_$701", "typeString": "contract IVerifier" } }, - "src": "1710:20:2", + "src": "1710:20:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IVerifier_$648", + "typeIdentifier": "t_contract$_IVerifier_$701", "typeString": "contract IVerifier" } }, - "id": 730, + "id": 783, "nodeType": "ExpressionStatement", - "src": "1710:20:2" + "src": "1710:20:3" }, { "expression": { "argumentTypes": null, - "id": 733, + "id": 786, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 731, + "id": 784, "name": "feeManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 672, - "src": "1736:10:2", + "referencedDeclaration": 725, + "src": "1736:10:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IFeeManager_$654", + "typeIdentifier": "t_contract$_IFeeManager_$707", "typeString": "contract IFeeManager" } }, @@ -1116,43 +1116,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 732, + "id": 785, "name": "_feeManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 708, - "src": "1749:11:2", + "referencedDeclaration": 761, + "src": "1749:11:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IFeeManager_$654", + "typeIdentifier": "t_contract$_IFeeManager_$707", "typeString": "contract IFeeManager" } }, - "src": "1736:24:2", + "src": "1736:24:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IFeeManager_$654", + "typeIdentifier": "t_contract$_IFeeManager_$707", "typeString": "contract IFeeManager" } }, - "id": 734, + "id": 787, "nodeType": "ExpressionStatement", - "src": "1736:24:2" + "src": "1736:24:3" }, { "expression": { "argumentTypes": null, - "id": 737, + "id": 790, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 735, + "id": 788, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 674, - "src": "1766:8:2", + "referencedDeclaration": 727, + "src": "1766:8:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1162,43 +1162,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 736, + "id": 789, "name": "_operator", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 714, - "src": "1777:9:2", + "referencedDeclaration": 767, + "src": "1777:9:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1766:20:2", + "src": "1766:20:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 738, + "id": 791, "nodeType": "ExpressionStatement", - "src": "1766:20:2" + "src": "1766:20:3" }, { "expression": { "argumentTypes": null, - "id": 741, + "id": 794, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 739, + "id": 792, "name": "denomination", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 660, - "src": "1792:12:2", + "referencedDeclaration": 713, + "src": "1792:12:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1208,31 +1208,31 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 740, + "id": 793, "name": "_denomination", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 710, - "src": "1807:13:2", + "referencedDeclaration": 763, + "src": "1807:13:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1792:28:2", + "src": "1792:28:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 742, + "id": 795, "nodeType": "ExpressionStatement", - "src": "1792:28:2" + "src": "1792:28:3" } ] }, "documentation": "@dev The constructor\n@param _verifier the address of SNARK verifier for this contract\n@param _denomination transfer amount for each deposit\n@param _merkleTreeHeight the height of deposits' Merkle Tree\n@param _operator operator address (see operator comment above)", - "id": 744, + "id": 797, "implemented": true, "kind": "constructor", "modifiers": [ @@ -1240,64 +1240,64 @@ "arguments": [ { "argumentTypes": null, - "id": 717, + "id": 770, "name": "_merkleTreeHeight", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 712, - "src": "1605:17:2", + "referencedDeclaration": 765, + "src": "1605:17:3", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } } ], - "id": 718, + "id": 771, "modifierName": { "argumentTypes": null, - "id": 716, + "id": 769, "name": "MerkleTreeWithHistory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 632, - "src": "1583:21:2", + "referencedDeclaration": 685, + "src": "1583:21:3", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_MerkleTreeWithHistory_$632_$", + "typeIdentifier": "t_type$_t_contract$_MerkleTreeWithHistory_$685_$", "typeString": "type(contract MerkleTreeWithHistory)" } }, "nodeType": "ModifierInvocation", - "src": "1583:40:2" + "src": "1583:40:3" } ], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 715, + "id": 768, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 706, + "id": 759, "name": "_verifier", "nodeType": "VariableDeclaration", - "scope": 744, - "src": "1450:19:2", + "scope": 797, + "src": "1450:19:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IVerifier_$648", + "typeIdentifier": "t_contract$_IVerifier_$701", "typeString": "contract IVerifier" }, "typeName": { "contractScope": null, - "id": 705, + "id": 758, "name": "IVerifier", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 648, - "src": "1450:9:2", + "referencedDeclaration": 701, + "src": "1450:9:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IVerifier_$648", + "typeIdentifier": "t_contract$_IVerifier_$701", "typeString": "contract IVerifier" } }, @@ -1306,26 +1306,26 @@ }, { "constant": false, - "id": 708, + "id": 761, "name": "_feeManager", "nodeType": "VariableDeclaration", - "scope": 744, - "src": "1475:23:2", + "scope": 797, + "src": "1475:23:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IFeeManager_$654", + "typeIdentifier": "t_contract$_IFeeManager_$707", "typeString": "contract IFeeManager" }, "typeName": { "contractScope": null, - "id": 707, + "id": 760, "name": "IFeeManager", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 654, - "src": "1475:11:2", + "referencedDeclaration": 707, + "src": "1475:11:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IFeeManager_$654", + "typeIdentifier": "t_contract$_IFeeManager_$707", "typeString": "contract IFeeManager" } }, @@ -1334,11 +1334,11 @@ }, { "constant": false, - "id": 710, + "id": 763, "name": "_denomination", "nodeType": "VariableDeclaration", - "scope": 744, - "src": "1504:21:2", + "scope": 797, + "src": "1504:21:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1346,10 +1346,10 @@ "typeString": "uint256" }, "typeName": { - "id": 709, + "id": 762, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1504:7:2", + "src": "1504:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1360,11 +1360,11 @@ }, { "constant": false, - "id": 712, + "id": 765, "name": "_merkleTreeHeight", "nodeType": "VariableDeclaration", - "scope": 744, - "src": "1531:24:2", + "scope": 797, + "src": "1531:24:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1372,10 +1372,10 @@ "typeString": "uint32" }, "typeName": { - "id": 711, + "id": 764, "name": "uint32", "nodeType": "ElementaryTypeName", - "src": "1531:6:2", + "src": "1531:6:3", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -1386,11 +1386,11 @@ }, { "constant": false, - "id": 714, + "id": 767, "name": "_operator", "nodeType": "VariableDeclaration", - "scope": 744, - "src": "1561:17:2", + "scope": 797, + "src": "1561:17:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1398,10 +1398,10 @@ "typeString": "address" }, "typeName": { - "id": 713, + "id": 766, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1561:7:2", + "src": "1561:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1412,25 +1412,25 @@ "visibility": "internal" } ], - "src": "1444:138:2" + "src": "1444:138:3" }, "returnParameters": { - "id": 719, + "id": 772, "nodeType": "ParameterList", "parameters": [], - "src": "1631:0:2" + "src": "1631:0:3" }, - "scope": 970, - "src": "1433:392:2", + "scope": 1023, + "src": "1433:392:3", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 781, + "id": 834, "nodeType": "Block", - "src": "2141:256:2", + "src": "2141:256:3", "statements": [ { "expression": { @@ -1438,7 +1438,7 @@ "arguments": [ { "argumentTypes": null, - "id": 755, + "id": 808, "isConstant": false, "isLValue": false, "isPure": false, @@ -1446,31 +1446,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "2155:25:2", + "src": "2155:25:3", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 752, + "id": 805, "name": "commitments", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 668, - "src": "2156:11:2", + "referencedDeclaration": 721, + "src": "2156:11:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 754, + "id": 807, "indexExpression": { "argumentTypes": null, - "id": 753, + "id": 806, "name": "_commitment", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 746, - "src": "2168:11:2", + "referencedDeclaration": 799, + "src": "2168:11:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1481,7 +1481,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2156:24:2", + "src": "2156:24:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1495,14 +1495,14 @@ { "argumentTypes": null, "hexValue": "54686520636f6d6d69746d656e7420686173206265656e207375626d6974746564", - "id": 756, + "id": 809, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2182:35:2", + "src": "2182:35:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae5f231636554c1cb3bf839359e4dfbb338ccb221c7c5dbdf2da91ddc6e2ee6b", @@ -1522,21 +1522,21 @@ "typeString": "literal_string \"The commitment has been submitted\"" } ], - "id": 751, + "id": 804, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1018, - 1019 + 1071, + 1072 ], - "referencedDeclaration": 1019, - "src": "2147:7:2", + "referencedDeclaration": 1072, + "src": "2147:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 757, + "id": 810, "isConstant": false, "isLValue": false, "isPure": false, @@ -1544,28 +1544,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2147:71:2", + "src": "2147:71:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 758, + "id": 811, "nodeType": "ExpressionStatement", - "src": "2147:71:2" + "src": "2147:71:3" }, { "assignments": [ - 760 + 813 ], "declarations": [ { "constant": false, - "id": 760, + "id": 813, "name": "insertedIndex", "nodeType": "VariableDeclaration", - "scope": 781, - "src": "2225:20:2", + "scope": 834, + "src": "2225:20:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1573,10 +1573,10 @@ "typeString": "uint32" }, "typeName": { - "id": 759, + "id": 812, "name": "uint32", "nodeType": "ElementaryTypeName", - "src": "2225:6:2", + "src": "2225:6:3", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -1586,18 +1586,18 @@ "visibility": "internal" } ], - "id": 764, + "id": 817, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 762, + "id": 815, "name": "_commitment", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 746, - "src": "2256:11:2", + "referencedDeclaration": 799, + "src": "2256:11:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1611,18 +1611,18 @@ "typeString": "bytes32" } ], - "id": 761, + "id": 814, "name": "_insert", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 574, - "src": "2248:7:2", + "referencedDeclaration": 627, + "src": "2248:7:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$_t_uint32_$", "typeString": "function (bytes32) returns (uint32)" } }, - "id": 763, + "id": 816, "isConstant": false, "isLValue": false, "isPure": false, @@ -1630,19 +1630,19 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2248:20:2", + "src": "2248:20:3", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "VariableDeclarationStatement", - "src": "2225:43:2" + "src": "2225:43:3" }, { "expression": { "argumentTypes": null, - "id": 769, + "id": 822, "isConstant": false, "isLValue": false, "isPure": false, @@ -1651,26 +1651,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 765, + "id": 818, "name": "commitments", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 668, - "src": "2274:11:2", + "referencedDeclaration": 721, + "src": "2274:11:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 767, + "id": 820, "indexExpression": { "argumentTypes": null, - "id": 766, + "id": 819, "name": "_commitment", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 746, - "src": "2286:11:2", + "referencedDeclaration": 799, + "src": "2286:11:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1681,7 +1681,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2274:24:2", + "src": "2274:24:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1692,14 +1692,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 768, + "id": 821, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "2301:4:2", + "src": "2301:4:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -1707,15 +1707,15 @@ }, "value": "true" }, - "src": "2274:31:2", + "src": "2274:31:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 770, + "id": 823, "nodeType": "ExpressionStatement", - "src": "2274:31:2" + "src": "2274:31:3" }, { "expression": { @@ -1723,18 +1723,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 771, + "id": 824, "name": "_processDeposit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 785, - "src": "2311:15:2", + "referencedDeclaration": 838, + "src": "2311:15:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 772, + "id": 825, "isConstant": false, "isLValue": false, "isPure": false, @@ -1742,15 +1742,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2311:17:2", + "src": "2311:17:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 773, + "id": 826, "nodeType": "ExpressionStatement", - "src": "2311:17:2" + "src": "2311:17:3" }, { "eventCall": { @@ -1758,12 +1758,12 @@ "arguments": [ { "argumentTypes": null, - "id": 775, + "id": 828, "name": "_commitment", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 746, - "src": "2348:11:2", + "referencedDeclaration": 799, + "src": "2348:11:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1771,12 +1771,12 @@ }, { "argumentTypes": null, - "id": 776, + "id": 829, "name": "insertedIndex", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 760, - "src": "2361:13:2", + "referencedDeclaration": 813, + "src": "2361:13:3", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -1786,18 +1786,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 777, + "id": 830, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1005, - "src": "2376:5:2", + "referencedDeclaration": 1058, + "src": "2376:5:3", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, - "id": 778, + "id": 831, "isConstant": false, "isLValue": false, "isPure": false, @@ -1805,7 +1805,7 @@ "memberName": "timestamp", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2376:15:2", + "src": "2376:15:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1827,18 +1827,18 @@ "typeString": "uint256" } ], - "id": 774, + "id": 827, "name": "Deposit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 694, - "src": "2340:7:2", + "referencedDeclaration": 747, + "src": "2340:7:3", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint32_$_t_uint256_$returns$__$", "typeString": "function (bytes32,uint32,uint256)" } }, - "id": 779, + "id": 832, "isConstant": false, "isLValue": false, "isPure": false, @@ -1846,56 +1846,56 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2340:52:2", + "src": "2340:52:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 780, + "id": 833, "nodeType": "EmitStatement", - "src": "2335:57:2" + "src": "2335:57:3" } ] }, "documentation": "@dev Deposit funds into the contract. The caller must send (for ETH) or approve (for ERC20) value equal to or `denomination` of this instance.\n@param _commitment the note commitment, which is PedersenHash(nullifier + secret)", - "id": 782, + "id": 835, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, - "id": 749, + "id": 802, "modifierName": { "argumentTypes": null, - "id": 748, + "id": 801, "name": "nonReentrant", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 999, - "src": "2128:12:2", + "referencedDeclaration": 1052, + "src": "2128:12:3", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2128:12:2" + "src": "2128:12:3" } ], "name": "deposit", "nodeType": "FunctionDefinition", "parameters": { - "id": 747, + "id": 800, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 746, + "id": 799, "name": "_commitment", "nodeType": "VariableDeclaration", - "scope": 782, - "src": "2090:19:2", + "scope": 835, + "src": "2090:19:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1903,10 +1903,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 745, + "id": 798, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2090:7:2", + "src": "2090:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1916,16 +1916,16 @@ "visibility": "internal" } ], - "src": "2089:21:2" + "src": "2089:21:3" }, "returnParameters": { - "id": 750, + "id": 803, "nodeType": "ParameterList", "parameters": [], - "src": "2141:0:2" + "src": "2141:0:3" }, - "scope": 970, - "src": "2073:324:2", + "scope": 1023, + "src": "2073:324:3", "stateMutability": "payable", "superFunction": null, "visibility": "external" @@ -1933,35 +1933,35 @@ { "body": null, "documentation": "@dev this function is defined in a child contract ", - "id": 785, + "id": 838, "implemented": false, "kind": "function", "modifiers": [], "name": "_processDeposit", "nodeType": "FunctionDefinition", "parameters": { - "id": 783, + "id": 836, "nodeType": "ParameterList", "parameters": [], - "src": "2484:2:2" + "src": "2484:2:3" }, "returnParameters": { - "id": 784, + "id": 837, "nodeType": "ParameterList", "parameters": [], - "src": "2495:0:2" + "src": "2495:0:3" }, - "scope": 970, - "src": "2460:36:2", + "scope": 1023, + "src": "2460:36:3", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 872, + "id": 925, "nodeType": "Block", - "src": "3088:606:2", + "src": "3088:606:3", "statements": [ { "expression": { @@ -1973,19 +1973,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 807, + "id": 860, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 805, + "id": 858, "name": "_fee", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 797, - "src": "3102:4:2", + "referencedDeclaration": 850, + "src": "3102:4:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1995,18 +1995,18 @@ "operator": "<=", "rightExpression": { "argumentTypes": null, - "id": 806, + "id": 859, "name": "denomination", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 660, - "src": "3110:12:2", + "referencedDeclaration": 713, + "src": "3110:12:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3102:20:2", + "src": "3102:20:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2015,14 +2015,14 @@ { "argumentTypes": null, "hexValue": "4665652065786365656473207472616e736665722076616c7565", - "id": 808, + "id": 861, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3124:28:2", + "src": "3124:28:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_2ce218df547d416f80ea8a5deadaf9453d23523ffa5f2e880a48adfdb4053a9c", @@ -2042,21 +2042,21 @@ "typeString": "literal_string \"Fee exceeds transfer value\"" } ], - "id": 804, + "id": 857, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1018, - 1019 + 1071, + 1072 ], - "referencedDeclaration": 1019, - "src": "3094:7:2", + "referencedDeclaration": 1072, + "src": "3094:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 809, + "id": 862, "isConstant": false, "isLValue": false, "isPure": false, @@ -2064,15 +2064,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3094:59:2", + "src": "3094:59:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 810, + "id": 863, "nodeType": "ExpressionStatement", - "src": "3094:59:2" + "src": "3094:59:3" }, { "expression": { @@ -2080,7 +2080,7 @@ "arguments": [ { "argumentTypes": null, - "id": 815, + "id": 868, "isConstant": false, "isLValue": false, "isPure": false, @@ -2088,31 +2088,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "3167:32:2", + "src": "3167:32:3", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 812, + "id": 865, "name": "nullifierHashes", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 664, - "src": "3168:15:2", + "referencedDeclaration": 717, + "src": "3168:15:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 814, + "id": 867, "indexExpression": { "argumentTypes": null, - "id": 813, + "id": 866, "name": "_nullifierHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 791, - "src": "3184:14:2", + "referencedDeclaration": 844, + "src": "3184:14:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2123,7 +2123,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3168:31:2", + "src": "3168:31:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2137,14 +2137,14 @@ { "argumentTypes": null, "hexValue": "546865206e6f746520686173206265656e20616c7265616479207370656e74", - "id": 816, + "id": 869, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3201:33:2", + "src": "3201:33:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_a1bef92d7a18b1c6975dc8de68df6140a52afea05a2c6c91da2b1562c617e896", @@ -2164,21 +2164,21 @@ "typeString": "literal_string \"The note has been already spent\"" } ], - "id": 811, + "id": 864, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1018, - 1019 + 1071, + 1072 ], - "referencedDeclaration": 1019, - "src": "3159:7:2", + "referencedDeclaration": 1072, + "src": "3159:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 817, + "id": 870, "isConstant": false, "isLValue": false, "isPure": false, @@ -2186,15 +2186,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3159:76:2", + "src": "3159:76:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 818, + "id": 871, "nodeType": "ExpressionStatement", - "src": "3159:76:2" + "src": "3159:76:3" }, { "expression": { @@ -2205,12 +2205,12 @@ "arguments": [ { "argumentTypes": null, - "id": 821, + "id": 874, "name": "_root", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 789, - "src": "3261:5:2", + "referencedDeclaration": 842, + "src": "3261:5:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2224,18 +2224,18 @@ "typeString": "bytes32" } ], - "id": 820, + "id": 873, "name": "isKnownRoot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 621, - "src": "3249:11:2", + "referencedDeclaration": 674, + "src": "3249:11:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$", "typeString": "function (bytes32) view returns (bool)" } }, - "id": 822, + "id": 875, "isConstant": false, "isLValue": false, "isPure": false, @@ -2243,7 +2243,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3249:18:2", + "src": "3249:18:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2252,14 +2252,14 @@ { "argumentTypes": null, "hexValue": "43616e6e6f742066696e6420796f7572206d65726b6c6520726f6f74", - "id": 823, + "id": 876, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3269:30:2", + "src": "3269:30:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_2a69086763073955418d2fd7dfee3d2f1fbc5b21047a216b7855d3f313d8e204", @@ -2279,21 +2279,21 @@ "typeString": "literal_string \"Cannot find your merkle root\"" } ], - "id": 819, + "id": 872, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1018, - 1019 + 1071, + 1072 ], - "referencedDeclaration": 1019, - "src": "3241:7:2", + "referencedDeclaration": 1072, + "src": "3241:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 824, + "id": 877, "isConstant": false, "isLValue": false, "isPure": false, @@ -2301,15 +2301,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3241:59:2", + "src": "3241:59:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 825, + "id": 878, "nodeType": "ExpressionStatement", - "src": "3241:59:2" + "src": "3241:59:3" }, { "expression": { @@ -2320,12 +2320,12 @@ "arguments": [ { "argumentTypes": null, - "id": 829, + "id": 882, "name": "_proof", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 787, - "src": "3368:6:2", + "referencedDeclaration": 840, + "src": "3368:6:3", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" @@ -2339,12 +2339,12 @@ "arguments": [ { "argumentTypes": null, - "id": 831, + "id": 884, "name": "_root", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 789, - "src": "3385:5:2", + "referencedDeclaration": 842, + "src": "3385:5:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2358,20 +2358,20 @@ "typeString": "bytes32" } ], - "id": 830, + "id": 883, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3377:7:2", + "src": "3377:7:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": "uint256" }, - "id": 832, + "id": 885, "isConstant": false, "isLValue": false, "isPure": false, @@ -2379,7 +2379,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3377:14:2", + "src": "3377:14:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2390,12 +2390,12 @@ "arguments": [ { "argumentTypes": null, - "id": 834, + "id": 887, "name": "_nullifierHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 791, - "src": "3401:14:2", + "referencedDeclaration": 844, + "src": "3401:14:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2409,20 +2409,20 @@ "typeString": "bytes32" } ], - "id": 833, + "id": 886, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3393:7:2", + "src": "3393:7:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": "uint256" }, - "id": 835, + "id": 888, "isConstant": false, "isLValue": false, "isPure": false, @@ -2430,7 +2430,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3393:23:2", + "src": "3393:23:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2441,12 +2441,12 @@ "arguments": [ { "argumentTypes": null, - "id": 837, + "id": 890, "name": "_recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 793, - "src": "3426:10:2", + "referencedDeclaration": 846, + "src": "3426:10:3", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -2460,20 +2460,20 @@ "typeString": "address payable" } ], - "id": 836, + "id": 889, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3418:7:2", + "src": "3418:7:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": "uint256" }, - "id": 838, + "id": 891, "isConstant": false, "isLValue": false, "isPure": false, @@ -2481,7 +2481,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3418:19:2", + "src": "3418:19:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2492,12 +2492,12 @@ "arguments": [ { "argumentTypes": null, - "id": 840, + "id": 893, "name": "_relayer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 795, - "src": "3447:8:2", + "referencedDeclaration": 848, + "src": "3447:8:3", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -2511,20 +2511,20 @@ "typeString": "address payable" } ], - "id": 839, + "id": 892, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3439:7:2", + "src": "3439:7:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": "uint256" }, - "id": 841, + "id": 894, "isConstant": false, "isLValue": false, "isPure": false, @@ -2532,7 +2532,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3439:17:2", + "src": "3439:17:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2540,12 +2540,12 @@ }, { "argumentTypes": null, - "id": 842, + "id": 895, "name": "_fee", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 797, - "src": "3458:4:2", + "referencedDeclaration": 850, + "src": "3458:4:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2553,26 +2553,26 @@ }, { "argumentTypes": null, - "id": 843, + "id": 896, "name": "_refund", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 799, - "src": "3464:7:2", + "referencedDeclaration": 852, + "src": "3464:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 844, + "id": 897, "isConstant": false, "isInlineArray": true, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "3376:96:2", + "src": "3376:96:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" @@ -2592,32 +2592,32 @@ ], "expression": { "argumentTypes": null, - "id": 827, + "id": 880, "name": "verifier", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 670, - "src": "3347:8:2", + "referencedDeclaration": 723, + "src": "3347:8:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IVerifier_$648", + "typeIdentifier": "t_contract$_IVerifier_$701", "typeString": "contract IVerifier" } }, - "id": 828, + "id": 881, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "verifyProof", "nodeType": "MemberAccess", - "referencedDeclaration": 647, - "src": "3347:20:2", + "referencedDeclaration": 700, + "src": "3347:20:3", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$_t_array$_t_uint256_$6_memory_ptr_$returns$_t_bool_$", "typeString": "function (bytes memory,uint256[6] memory) external returns (bool)" } }, - "id": 845, + "id": 898, "isConstant": false, "isLValue": false, "isPure": false, @@ -2625,7 +2625,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3347:126:2", + "src": "3347:126:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2634,14 +2634,14 @@ { "argumentTypes": null, "hexValue": "496e76616c69642077697468647261772070726f6f66", - "id": 846, + "id": 899, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3475:24:2", + "src": "3475:24:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_7021ea58137dba96e572e94936410b0b0e4cbc344e1ab2ee7f47660768b81ff4", @@ -2661,21 +2661,21 @@ "typeString": "literal_string \"Invalid withdraw proof\"" } ], - "id": 826, + "id": 879, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1018, - 1019 + 1071, + 1072 ], - "referencedDeclaration": 1019, - "src": "3339:7:2", + "referencedDeclaration": 1072, + "src": "3339:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 847, + "id": 900, "isConstant": false, "isLValue": false, "isPure": false, @@ -2683,20 +2683,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3339:161:2", + "src": "3339:161:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 848, + "id": 901, "nodeType": "ExpressionStatement", - "src": "3339:161:2" + "src": "3339:161:3" }, { "expression": { "argumentTypes": null, - "id": 853, + "id": 906, "isConstant": false, "isLValue": false, "isPure": false, @@ -2705,26 +2705,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 849, + "id": 902, "name": "nullifierHashes", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 664, - "src": "3507:15:2", + "referencedDeclaration": 717, + "src": "3507:15:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 851, + "id": 904, "indexExpression": { "argumentTypes": null, - "id": 850, + "id": 903, "name": "_nullifierHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 791, - "src": "3523:14:2", + "referencedDeclaration": 844, + "src": "3523:14:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2735,7 +2735,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3507:31:2", + "src": "3507:31:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2746,14 +2746,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 852, + "id": 905, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3541:4:2", + "src": "3541:4:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -2761,15 +2761,15 @@ }, "value": "true" }, - "src": "3507:38:2", + "src": "3507:38:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 854, + "id": 907, "nodeType": "ExpressionStatement", - "src": "3507:38:2" + "src": "3507:38:3" }, { "expression": { @@ -2777,12 +2777,12 @@ "arguments": [ { "argumentTypes": null, - "id": 856, + "id": 909, "name": "_recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 793, - "src": "3568:10:2", + "referencedDeclaration": 846, + "src": "3568:10:3", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -2790,12 +2790,12 @@ }, { "argumentTypes": null, - "id": 857, + "id": 910, "name": "_relayer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 795, - "src": "3580:8:2", + "referencedDeclaration": 848, + "src": "3580:8:3", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -2803,12 +2803,12 @@ }, { "argumentTypes": null, - "id": 858, + "id": 911, "name": "_fee", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 797, - "src": "3590:4:2", + "referencedDeclaration": 850, + "src": "3590:4:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2816,12 +2816,12 @@ }, { "argumentTypes": null, - "id": 859, + "id": 912, "name": "_refund", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 799, - "src": "3596:7:2", + "referencedDeclaration": 852, + "src": "3596:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2834,32 +2834,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 860, + "id": 913, "name": "feeManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 672, - "src": "3605:10:2", + "referencedDeclaration": 725, + "src": "3605:10:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IFeeManager_$654", + "typeIdentifier": "t_contract$_IFeeManager_$707", "typeString": "contract IFeeManager" } }, - "id": 861, + "id": 914, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "feeTo", "nodeType": "MemberAccess", - "referencedDeclaration": 653, - "src": "3605:16:2", + "referencedDeclaration": 706, + "src": "3605:16:3", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, - "id": 862, + "id": 915, "isConstant": false, "isLValue": false, "isPure": false, @@ -2867,7 +2867,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3605:18:2", + "src": "3605:18:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2897,18 +2897,18 @@ "typeString": "address" } ], - "id": 855, + "id": 908, "name": "_processWithdraw", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 886, - "src": "3551:16:2", + "referencedDeclaration": 939, + "src": "3551:16:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_address_payable_$_t_uint256_$_t_uint256_$_t_address_$returns$__$", "typeString": "function (address payable,address payable,uint256,uint256,address)" } }, - "id": 863, + "id": 916, "isConstant": false, "isLValue": false, "isPure": false, @@ -2916,15 +2916,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3551:73:2", + "src": "3551:73:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 864, + "id": 917, "nodeType": "ExpressionStatement", - "src": "3551:73:2" + "src": "3551:73:3" }, { "eventCall": { @@ -2932,12 +2932,12 @@ "arguments": [ { "argumentTypes": null, - "id": 866, + "id": 919, "name": "_recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 793, - "src": "3646:10:2", + "referencedDeclaration": 846, + "src": "3646:10:3", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -2945,12 +2945,12 @@ }, { "argumentTypes": null, - "id": 867, + "id": 920, "name": "_nullifierHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 791, - "src": "3658:14:2", + "referencedDeclaration": 844, + "src": "3658:14:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2958,12 +2958,12 @@ }, { "argumentTypes": null, - "id": 868, + "id": 921, "name": "_relayer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 795, - "src": "3674:8:2", + "referencedDeclaration": 848, + "src": "3674:8:3", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -2971,12 +2971,12 @@ }, { "argumentTypes": null, - "id": 869, + "id": 922, "name": "_fee", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 797, - "src": "3684:4:2", + "referencedDeclaration": 850, + "src": "3684:4:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3002,18 +3002,18 @@ "typeString": "uint256" } ], - "id": 865, + "id": 918, "name": "Withdrawal", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 704, - "src": "3635:10:2", + "referencedDeclaration": 757, + "src": "3635:10:3", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,bytes32,address,uint256)" } }, - "id": 870, + "id": 923, "isConstant": false, "isLValue": false, "isPure": false, @@ -3021,56 +3021,56 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3635:54:2", + "src": "3635:54:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 871, + "id": 924, "nodeType": "EmitStatement", - "src": "3630:59:2" + "src": "3630:59:3" } ] }, "documentation": "@dev Withdraw a deposit from the contract. `proof` is a zkSNARK proof data, and input is an array of circuit public inputs\n`input` array consists of:\n- merkle root of all deposits in the contract\n- hash of unique deposit nullifier to prevent double spends\n- the recipient of funds\n- optional fee that goes to the transaction sender (usually a relay)", - "id": 873, + "id": 926, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, - "id": 802, + "id": 855, "modifierName": { "argumentTypes": null, - "id": 801, + "id": 854, "name": "nonReentrant", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 999, - "src": "3075:12:2", + "referencedDeclaration": 1052, + "src": "3075:12:3", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "3075:12:2" + "src": "3075:12:3" } ], "name": "withdraw", "nodeType": "FunctionDefinition", "parameters": { - "id": 800, + "id": 853, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 787, + "id": 840, "name": "_proof", "nodeType": "VariableDeclaration", - "scope": 873, - "src": "2911:21:2", + "scope": 926, + "src": "2911:21:3", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { @@ -3078,10 +3078,10 @@ "typeString": "bytes" }, "typeName": { - "id": 786, + "id": 839, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2911:5:2", + "src": "2911:5:3", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -3092,11 +3092,11 @@ }, { "constant": false, - "id": 789, + "id": 842, "name": "_root", "nodeType": "VariableDeclaration", - "scope": 873, - "src": "2934:13:2", + "scope": 926, + "src": "2934:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3104,10 +3104,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 788, + "id": 841, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2934:7:2", + "src": "2934:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3118,11 +3118,11 @@ }, { "constant": false, - "id": 791, + "id": 844, "name": "_nullifierHash", "nodeType": "VariableDeclaration", - "scope": 873, - "src": "2949:22:2", + "scope": 926, + "src": "2949:22:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3130,10 +3130,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 790, + "id": 843, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2949:7:2", + "src": "2949:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3144,11 +3144,11 @@ }, { "constant": false, - "id": 793, + "id": 846, "name": "_recipient", "nodeType": "VariableDeclaration", - "scope": 873, - "src": "2973:26:2", + "scope": 926, + "src": "2973:26:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3156,10 +3156,10 @@ "typeString": "address payable" }, "typeName": { - "id": 792, + "id": 845, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2973:15:2", + "src": "2973:15:3", "stateMutability": "payable", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -3171,11 +3171,11 @@ }, { "constant": false, - "id": 795, + "id": 848, "name": "_relayer", "nodeType": "VariableDeclaration", - "scope": 873, - "src": "3001:24:2", + "scope": 926, + "src": "3001:24:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3183,10 +3183,10 @@ "typeString": "address payable" }, "typeName": { - "id": 794, + "id": 847, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3001:15:2", + "src": "3001:15:3", "stateMutability": "payable", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -3198,11 +3198,11 @@ }, { "constant": false, - "id": 797, + "id": 850, "name": "_fee", "nodeType": "VariableDeclaration", - "scope": 873, - "src": "3027:12:2", + "scope": 926, + "src": "3027:12:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3210,10 +3210,10 @@ "typeString": "uint256" }, "typeName": { - "id": 796, + "id": 849, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3027:7:2", + "src": "3027:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3224,11 +3224,11 @@ }, { "constant": false, - "id": 799, + "id": 852, "name": "_refund", "nodeType": "VariableDeclaration", - "scope": 873, - "src": "3041:15:2", + "scope": 926, + "src": "3041:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3236,10 +3236,10 @@ "typeString": "uint256" }, "typeName": { - "id": 798, + "id": 851, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3041:7:2", + "src": "3041:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3249,16 +3249,16 @@ "visibility": "internal" } ], - "src": "2910:147:2" + "src": "2910:147:3" }, "returnParameters": { - "id": 803, + "id": 856, "nodeType": "ParameterList", "parameters": [], - "src": "3088:0:2" + "src": "3088:0:3" }, - "scope": 970, - "src": "2893:801:2", + "scope": 1023, + "src": "2893:801:3", "stateMutability": "payable", "superFunction": null, "visibility": "external" @@ -3266,23 +3266,23 @@ { "body": null, "documentation": "@dev this function is defined in a child contract ", - "id": 886, + "id": 939, "implemented": false, "kind": "function", "modifiers": [], "name": "_processWithdraw", "nodeType": "FunctionDefinition", "parameters": { - "id": 884, + "id": 937, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 875, + "id": 928, "name": "_recipient", "nodeType": "VariableDeclaration", - "scope": 886, - "src": "3783:26:2", + "scope": 939, + "src": "3783:26:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3290,10 +3290,10 @@ "typeString": "address payable" }, "typeName": { - "id": 874, + "id": 927, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3783:15:2", + "src": "3783:15:3", "stateMutability": "payable", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -3305,11 +3305,11 @@ }, { "constant": false, - "id": 877, + "id": 930, "name": "_relayer", "nodeType": "VariableDeclaration", - "scope": 886, - "src": "3811:24:2", + "scope": 939, + "src": "3811:24:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3317,10 +3317,10 @@ "typeString": "address payable" }, "typeName": { - "id": 876, + "id": 929, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3811:15:2", + "src": "3811:15:3", "stateMutability": "payable", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -3332,11 +3332,11 @@ }, { "constant": false, - "id": 879, + "id": 932, "name": "_relayer_fee", "nodeType": "VariableDeclaration", - "scope": 886, - "src": "3837:20:2", + "scope": 939, + "src": "3837:20:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3344,10 +3344,10 @@ "typeString": "uint256" }, "typeName": { - "id": 878, + "id": 931, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3837:7:2", + "src": "3837:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3358,11 +3358,11 @@ }, { "constant": false, - "id": 881, + "id": 934, "name": "_refund", "nodeType": "VariableDeclaration", - "scope": 886, - "src": "3859:15:2", + "scope": 939, + "src": "3859:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3370,10 +3370,10 @@ "typeString": "uint256" }, "typeName": { - "id": 880, + "id": 933, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3859:7:2", + "src": "3859:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3384,11 +3384,11 @@ }, { "constant": false, - "id": 883, + "id": 936, "name": "_feeTo", "nodeType": "VariableDeclaration", - "scope": 886, - "src": "3876:14:2", + "scope": 939, + "src": "3876:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3396,10 +3396,10 @@ "typeString": "address" }, "typeName": { - "id": 882, + "id": 935, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3876:7:2", + "src": "3876:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3410,51 +3410,51 @@ "visibility": "internal" } ], - "src": "3782:109:2" + "src": "3782:109:3" }, "returnParameters": { - "id": 885, + "id": 938, "nodeType": "ParameterList", "parameters": [], - "src": "3900:0:2" + "src": "3900:0:3" }, - "scope": 970, - "src": "3757:144:2", + "scope": 1023, + "src": "3757:144:3", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 897, + "id": 950, "nodeType": "Block", - "src": "4018:49:2", + "src": "4018:49:3", "statements": [ { "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 893, + "id": 946, "name": "nullifierHashes", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 664, - "src": "4031:15:2", + "referencedDeclaration": 717, + "src": "4031:15:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 895, + "id": 948, "indexExpression": { "argumentTypes": null, - "id": 894, + "id": 947, "name": "_nullifierHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 888, - "src": "4047:14:2", + "referencedDeclaration": 941, + "src": "4047:14:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3465,37 +3465,37 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4031:31:2", + "src": "4031:31:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "functionReturnParameters": 892, - "id": 896, + "functionReturnParameters": 945, + "id": 949, "nodeType": "Return", - "src": "4024:38:2" + "src": "4024:38:3" } ] }, "documentation": "@dev whether a note is already spent ", - "id": 898, + "id": 951, "implemented": true, "kind": "function", "modifiers": [], "name": "isSpent", "nodeType": "FunctionDefinition", "parameters": { - "id": 889, + "id": 942, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 888, + "id": 941, "name": "_nullifierHash", "nodeType": "VariableDeclaration", - "scope": 898, - "src": "3968:22:2", + "scope": 951, + "src": "3968:22:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3503,10 +3503,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 887, + "id": 940, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "3968:7:2", + "src": "3968:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3516,19 +3516,19 @@ "visibility": "internal" } ], - "src": "3967:24:2" + "src": "3967:24:3" }, "returnParameters": { - "id": 892, + "id": 945, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 891, + "id": 944, "name": "", "nodeType": "VariableDeclaration", - "scope": 898, - "src": "4012:4:2", + "scope": 951, + "src": "4012:4:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3536,10 +3536,10 @@ "typeString": "bool" }, "typeName": { - "id": 890, + "id": 943, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "4012:4:2", + "src": "4012:4:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3549,36 +3549,36 @@ "visibility": "internal" } ], - "src": "4011:6:2" + "src": "4011:6:3" }, - "scope": 970, - "src": "3951:116:2", + "scope": 1023, + "src": "3951:116:3", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 942, + "id": 995, "nodeType": "Block", - "src": "4230:191:2", + "src": "4230:191:3", "statements": [ { "expression": { "argumentTypes": null, - "id": 914, + "id": 967, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 907, + "id": 960, "name": "spent", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 905, - "src": "4236:5:2", + "referencedDeclaration": 958, + "src": "4236:5:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr", "typeString": "bool[] memory" @@ -3593,18 +3593,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 911, + "id": 964, "name": "_nullifierHashes", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 901, - "src": "4255:16:2", + "referencedDeclaration": 954, + "src": "4255:16:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", "typeString": "bytes32[] calldata" } }, - "id": 912, + "id": 965, "isConstant": false, "isLValue": false, "isPure": false, @@ -3612,7 +3612,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "4255:23:2", + "src": "4255:23:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3626,39 +3626,39 @@ "typeString": "uint256" } ], - "id": 910, + "id": 963, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", - "src": "4244:10:2", + "src": "4244:10:3", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bool_$dyn_memory_$", "typeString": "function (uint256) pure returns (bool[] memory)" }, "typeName": { "baseType": { - "id": 908, + "id": 961, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "4248:4:2", + "src": "4248:4:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 909, + "id": 962, "length": null, "nodeType": "ArrayTypeName", - "src": "4248:6:2", + "src": "4248:6:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr", "typeString": "bool[]" } } }, - "id": 913, + "id": 966, "isConstant": false, "isLValue": false, "isPure": false, @@ -3666,27 +3666,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4244:35:2", + "src": "4244:35:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bool_$dyn_memory", "typeString": "bool[] memory" } }, - "src": "4236:43:2", + "src": "4236:43:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr", "typeString": "bool[] memory" } }, - "id": 915, + "id": 968, "nodeType": "ExpressionStatement", - "src": "4236:43:2" + "src": "4236:43:3" }, { "body": { - "id": 940, + "id": 993, "nodeType": "Block", - "src": "4335:82:2", + "src": "4335:82:3", "statements": [ { "condition": { @@ -3696,26 +3696,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 928, + "id": 981, "name": "_nullifierHashes", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 901, - "src": "4355:16:2", + "referencedDeclaration": 954, + "src": "4355:16:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", "typeString": "bytes32[] calldata" } }, - "id": 930, + "id": 983, "indexExpression": { "argumentTypes": null, - "id": 929, + "id": 982, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 917, - "src": "4372:1:2", + "referencedDeclaration": 970, + "src": "4372:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3726,7 +3726,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4355:19:2", + "src": "4355:19:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3740,18 +3740,18 @@ "typeString": "bytes32" } ], - "id": 927, + "id": 980, "name": "isSpent", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 898, - "src": "4347:7:2", + "referencedDeclaration": 951, + "src": "4347:7:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$", "typeString": "function (bytes32) view returns (bool)" } }, - "id": 931, + "id": 984, "isConstant": false, "isLValue": false, "isPure": false, @@ -3759,25 +3759,25 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4347:28:2", + "src": "4347:28:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 939, + "id": 992, "nodeType": "IfStatement", - "src": "4343:68:2", + "src": "4343:68:3", "trueBody": { - "id": 938, + "id": 991, "nodeType": "Block", - "src": "4377:34:2", + "src": "4377:34:3", "statements": [ { "expression": { "argumentTypes": null, - "id": 936, + "id": 989, "isConstant": false, "isLValue": false, "isPure": false, @@ -3786,26 +3786,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 932, + "id": 985, "name": "spent", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 905, - "src": "4387:5:2", + "referencedDeclaration": 958, + "src": "4387:5:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr", "typeString": "bool[] memory" } }, - "id": 934, + "id": 987, "indexExpression": { "argumentTypes": null, - "id": 933, + "id": 986, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 917, - "src": "4393:1:2", + "referencedDeclaration": 970, + "src": "4393:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3816,7 +3816,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4387:8:2", + "src": "4387:8:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3827,14 +3827,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 935, + "id": 988, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "4398:4:2", + "src": "4398:4:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -3842,15 +3842,15 @@ }, "value": "true" }, - "src": "4387:15:2", + "src": "4387:15:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 937, + "id": 990, "nodeType": "ExpressionStatement", - "src": "4387:15:2" + "src": "4387:15:3" } ] } @@ -3863,19 +3863,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 923, + "id": 976, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 920, + "id": 973, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 917, - "src": "4301:1:2", + "referencedDeclaration": 970, + "src": "4301:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3887,18 +3887,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 921, + "id": 974, "name": "_nullifierHashes", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 901, - "src": "4305:16:2", + "referencedDeclaration": 954, + "src": "4305:16:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", "typeString": "bytes32[] calldata" } }, - "id": 922, + "id": 975, "isConstant": false, "isLValue": false, "isPure": false, @@ -3906,31 +3906,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "4305:23:2", + "src": "4305:23:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4301:27:2", + "src": "4301:27:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 941, + "id": 994, "initializationExpression": { "assignments": [ - 917 + 970 ], "declarations": [ { "constant": false, - "id": 917, + "id": 970, "name": "i", "nodeType": "VariableDeclaration", - "scope": 941, - "src": "4289:6:2", + "scope": 994, + "src": "4289:6:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3938,10 +3938,10 @@ "typeString": "uint256" }, "typeName": { - "id": 916, + "id": 969, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "4289:4:2", + "src": "4289:4:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3951,18 +3951,18 @@ "visibility": "internal" } ], - "id": 919, + "id": 972, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 918, + "id": 971, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4298:1:2", + "src": "4298:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3971,12 +3971,12 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "4289:10:2" + "src": "4289:10:3" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 925, + "id": 978, "isConstant": false, "isLValue": false, "isPure": false, @@ -3984,15 +3984,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "4330:3:2", + "src": "4330:3:3", "subExpression": { "argumentTypes": null, - "id": 924, + "id": 977, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 917, - "src": "4330:1:2", + "referencedDeclaration": 970, + "src": "4330:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4003,33 +4003,33 @@ "typeString": "uint256" } }, - "id": 926, + "id": 979, "nodeType": "ExpressionStatement", - "src": "4330:3:2" + "src": "4330:3:3" }, "nodeType": "ForStatement", - "src": "4285:132:2" + "src": "4285:132:3" } ] }, "documentation": "@dev whether an array of notes is already spent ", - "id": 943, + "id": 996, "implemented": true, "kind": "function", "modifiers": [], "name": "isSpentArray", "nodeType": "FunctionDefinition", "parameters": { - "id": 902, + "id": 955, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 901, + "id": 954, "name": "_nullifierHashes", "nodeType": "VariableDeclaration", - "scope": 943, - "src": "4150:35:2", + "scope": 996, + "src": "4150:35:3", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { @@ -4038,19 +4038,19 @@ }, "typeName": { "baseType": { - "id": 899, + "id": 952, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "4150:7:2", + "src": "4150:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 900, + "id": 953, "length": null, "nodeType": "ArrayTypeName", - "src": "4150:9:2", + "src": "4150:9:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -4060,19 +4060,19 @@ "visibility": "internal" } ], - "src": "4149:37:2" + "src": "4149:37:3" }, "returnParameters": { - "id": 906, + "id": 959, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 905, + "id": 958, "name": "spent", "nodeType": "VariableDeclaration", - "scope": 943, - "src": "4209:19:2", + "scope": 996, + "src": "4209:19:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -4081,19 +4081,19 @@ }, "typeName": { "baseType": { - "id": 903, + "id": 956, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "4209:4:2", + "src": "4209:4:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 904, + "id": 957, "length": null, "nodeType": "ArrayTypeName", - "src": "4209:6:2", + "src": "4209:6:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr", "typeString": "bool[]" @@ -4103,38 +4103,38 @@ "visibility": "internal" } ], - "src": "4208:21:2" + "src": "4208:21:3" }, - "scope": 970, - "src": "4128:293:2", + "scope": 1023, + "src": "4128:293:3", "stateMutability": "view", "superFunction": null, "visibility": "external" }, { "body": { - "id": 956, + "id": 1009, "nodeType": "Block", - "src": "4719:45:2", + "src": "4719:45:3", "statements": [ { "expression": { "argumentTypes": null, - "id": 954, + "id": 1007, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 950, + "id": 1003, "name": "verifier", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 670, - "src": "4725:8:2", + "referencedDeclaration": 723, + "src": "4725:8:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IVerifier_$648", + "typeIdentifier": "t_contract$_IVerifier_$701", "typeString": "contract IVerifier" } }, @@ -4145,12 +4145,12 @@ "arguments": [ { "argumentTypes": null, - "id": 952, + "id": 1005, "name": "_newVerifier", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 945, - "src": "4746:12:2", + "referencedDeclaration": 998, + "src": "4746:12:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4164,18 +4164,18 @@ "typeString": "address" } ], - "id": 951, + "id": 1004, "name": "IVerifier", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 648, - "src": "4736:9:2", + "referencedDeclaration": 701, + "src": "4736:9:3", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IVerifier_$648_$", + "typeIdentifier": "t_type$_t_contract$_IVerifier_$701_$", "typeString": "type(contract IVerifier)" } }, - "id": 953, + "id": 1006, "isConstant": false, "isLValue": false, "isPure": false, @@ -4183,62 +4183,62 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4736:23:2", + "src": "4736:23:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IVerifier_$648", + "typeIdentifier": "t_contract$_IVerifier_$701", "typeString": "contract IVerifier" } }, - "src": "4725:34:2", + "src": "4725:34:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IVerifier_$648", + "typeIdentifier": "t_contract$_IVerifier_$701", "typeString": "contract IVerifier" } }, - "id": 955, + "id": 1008, "nodeType": "ExpressionStatement", - "src": "4725:34:2" + "src": "4725:34:3" } ] }, "documentation": "@dev allow operator to update SNARK verification keys. This is needed to update keys after the final trusted setup ceremony is held.\nAfter that operator rights are supposed to be transferred to zero address", - "id": 957, + "id": 1010, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, - "id": 948, + "id": 1001, "modifierName": { "argumentTypes": null, - "id": 947, + "id": 1000, "name": "onlyOperator", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 686, - "src": "4706:12:2", + "referencedDeclaration": 739, + "src": "4706:12:3", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "4706:12:2" + "src": "4706:12:3" } ], "name": "updateVerifier", "nodeType": "FunctionDefinition", "parameters": { - "id": 946, + "id": 999, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 945, + "id": 998, "name": "_newVerifier", "nodeType": "VariableDeclaration", - "scope": 957, - "src": "4675:20:2", + "scope": 1010, + "src": "4675:20:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4246,10 +4246,10 @@ "typeString": "address" }, "typeName": { - "id": 944, + "id": 997, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4675:7:2", + "src": "4675:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4260,42 +4260,42 @@ "visibility": "internal" } ], - "src": "4674:22:2" + "src": "4674:22:3" }, "returnParameters": { - "id": 949, + "id": 1002, "nodeType": "ParameterList", "parameters": [], - "src": "4719:0:2" + "src": "4719:0:3" }, - "scope": 970, - "src": "4651:113:2", + "scope": 1023, + "src": "4651:113:3", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external" }, { "body": { - "id": 968, + "id": 1021, "nodeType": "Block", - "src": "4882:34:2", + "src": "4882:34:3", "statements": [ { "expression": { "argumentTypes": null, - "id": 966, + "id": 1019, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 964, + "id": 1017, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 674, - "src": "4888:8:2", + "referencedDeclaration": 727, + "src": "4888:8:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4305,67 +4305,67 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 965, + "id": 1018, "name": "_newOperator", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 959, - "src": "4899:12:2", + "referencedDeclaration": 1012, + "src": "4899:12:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4888:23:2", + "src": "4888:23:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 967, + "id": 1020, "nodeType": "ExpressionStatement", - "src": "4888:23:2" + "src": "4888:23:3" } ] }, "documentation": "@dev operator can change his address ", - "id": 969, + "id": 1022, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, - "id": 962, + "id": 1015, "modifierName": { "argumentTypes": null, - "id": 961, + "id": 1014, "name": "onlyOperator", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 686, - "src": "4869:12:2", + "referencedDeclaration": 739, + "src": "4869:12:3", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "4869:12:2" + "src": "4869:12:3" } ], "name": "changeOperator", "nodeType": "FunctionDefinition", "parameters": { - "id": 960, + "id": 1013, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 959, + "id": 1012, "name": "_newOperator", "nodeType": "VariableDeclaration", - "scope": 969, - "src": "4838:20:2", + "scope": 1022, + "src": "4838:20:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4373,10 +4373,10 @@ "typeString": "address" }, "typeName": { - "id": 958, + "id": 1011, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4838:7:2", + "src": "4838:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4387,39 +4387,39 @@ "visibility": "internal" } ], - "src": "4837:22:2" + "src": "4837:22:3" }, "returnParameters": { - "id": 963, + "id": 1016, "nodeType": "ParameterList", "parameters": [], - "src": "4882:0:2" + "src": "4882:0:3" }, - "scope": 970, - "src": "4814:102:2", + "scope": 1023, + "src": "4814:102:3", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external" } ], - "scope": 971, - "src": "318:4600:2" + "scope": 1024, + "src": "318:4600:3" } ], - "src": "0:4919:2" + "src": "0:4919:3" }, "legacyAST": { "attributes": { "absolutePath": "/Users/brianli/dotfiles/tornado-core/contracts/Tornado.sol", "exportedSymbols": { "IFeeManager": [ - 654 + 707 ], "IVerifier": [ - 648 + 701 ], "Tornado": [ - 970 + 1023 ] } }, @@ -4432,39 +4432,39 @@ ".17" ] }, - "id": 634, + "id": 687, "name": "PragmaDirective", - "src": "0:23:2" + "src": "0:23:3" }, { "attributes": { - "SourceUnit": 633, + "SourceUnit": 686, "absolutePath": "/Users/brianli/dotfiles/tornado-core/contracts/MerkleTreeWithHistory.sol", "file": "./MerkleTreeWithHistory.sol", - "scope": 971, + "scope": 1024, "symbolAliases": [ null ], "unitAlias": "" }, - "id": 635, + "id": 688, "name": "ImportDirective", - "src": "25:37:2" + "src": "25:37:3" }, { "attributes": { - "SourceUnit": 1001, + "SourceUnit": 1054, "absolutePath": "@openzeppelin/contracts/utils/ReentrancyGuard.sol", "file": "@openzeppelin/contracts/utils/ReentrancyGuard.sol", - "scope": 971, + "scope": 1024, "symbolAliases": [ null ], "unitAlias": "" }, - "id": 636, + "id": 689, "name": "ImportDirective", - "src": "63:59:2" + "src": "63:59:3" }, { "attributes": { @@ -4478,10 +4478,10 @@ "documentation": null, "fullyImplemented": false, "linearizedBaseContracts": [ - 648 + 701 ], "name": "IVerifier", - "scope": 971 + "scope": 1024 }, "children": [ { @@ -4495,7 +4495,7 @@ null ], "name": "verifyProof", - "scope": 648, + "scope": 701, "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -4507,7 +4507,7 @@ "attributes": { "constant": false, "name": "_proof", - "scope": 647, + "scope": 700, "stateVariable": false, "storageLocation": "memory", "type": "bytes", @@ -4520,20 +4520,20 @@ "name": "bytes", "type": "bytes" }, - "id": 637, + "id": 690, "name": "ElementaryTypeName", - "src": "168:5:2" + "src": "168:5:3" } ], - "id": 638, + "id": 691, "name": "VariableDeclaration", - "src": "168:19:2" + "src": "168:19:3" }, { "attributes": { "constant": false, "name": "_input", - "scope": 647, + "scope": 700, "stateVariable": false, "storageLocation": "memory", "type": "uint256[6]", @@ -4551,9 +4551,9 @@ "name": "uint256", "type": "uint256" }, - "id": 639, + "id": 692, "name": "ElementaryTypeName", - "src": "189:7:2" + "src": "189:7:3" }, { "attributes": { @@ -4568,24 +4568,24 @@ "type": "int_const 6", "value": "6" }, - "id": 640, + "id": 693, "name": "Literal", - "src": "197:1:2" + "src": "197:1:3" } ], - "id": 641, + "id": 694, "name": "ArrayTypeName", - "src": "189:10:2" + "src": "189:10:3" } ], - "id": 642, + "id": 695, "name": "VariableDeclaration", - "src": "189:24:2" + "src": "189:24:3" } ], - "id": 643, + "id": 696, "name": "ParameterList", - "src": "167:47:2" + "src": "167:47:3" }, { "children": [ @@ -4593,7 +4593,7 @@ "attributes": { "constant": false, "name": "", - "scope": 647, + "scope": 700, "stateVariable": false, "storageLocation": "default", "type": "bool", @@ -4606,29 +4606,29 @@ "name": "bool", "type": "bool" }, - "id": 644, + "id": 697, "name": "ElementaryTypeName", - "src": "230:4:2" + "src": "230:4:3" } ], - "id": 645, + "id": 698, "name": "VariableDeclaration", - "src": "230:4:2" + "src": "230:4:3" } ], - "id": 646, + "id": 699, "name": "ParameterList", - "src": "229:6:2" + "src": "229:6:3" } ], - "id": 647, + "id": 700, "name": "FunctionDefinition", - "src": "147:89:2" + "src": "147:89:3" } ], - "id": 648, + "id": 701, "name": "ContractDefinition", - "src": "124:114:2" + "src": "124:114:3" }, { "attributes": { @@ -4642,10 +4642,10 @@ "documentation": null, "fullyImplemented": false, "linearizedBaseContracts": [ - 654 + 707 ], "name": "IFeeManager", - "scope": 971 + "scope": 1024 }, "children": [ { @@ -4659,7 +4659,7 @@ null ], "name": "feeTo", - "scope": 654, + "scope": 707, "stateMutability": "view", "superFunction": null, "visibility": "external" @@ -4672,9 +4672,9 @@ ] }, "children": [], - "id": 649, + "id": 702, "name": "ParameterList", - "src": "279:2:2" + "src": "279:2:3" }, { "children": [ @@ -4682,7 +4682,7 @@ "attributes": { "constant": false, "name": "", - "scope": 653, + "scope": 706, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -4696,46 +4696,46 @@ "stateMutability": "nonpayable", "type": "address" }, - "id": 650, + "id": 703, "name": "ElementaryTypeName", - "src": "305:7:2" + "src": "305:7:3" } ], - "id": 651, + "id": 704, "name": "VariableDeclaration", - "src": "305:7:2" + "src": "305:7:3" } ], - "id": 652, + "id": 705, "name": "ParameterList", - "src": "304:9:2" + "src": "304:9:3" } ], - "id": 653, + "id": 706, "name": "FunctionDefinition", - "src": "265:49:2" + "src": "265:49:3" } ], - "id": 654, + "id": 707, "name": "ContractDefinition", - "src": "240:76:2" + "src": "240:76:3" }, { "attributes": { "contractDependencies": [ - 632, - 1000 + 685, + 1053 ], "contractKind": "contract", "documentation": null, "fullyImplemented": false, "linearizedBaseContracts": [ - 970, - 1000, - 632 + 1023, + 1053, + 685 ], "name": "Tornado", - "scope": 971 + "scope": 1024 }, "children": [ { @@ -4747,17 +4747,17 @@ "attributes": { "contractScope": null, "name": "MerkleTreeWithHistory", - "referencedDeclaration": 632, + "referencedDeclaration": 685, "type": "contract MerkleTreeWithHistory" }, - "id": 655, + "id": 708, "name": "UserDefinedTypeName", - "src": "338:21:2" + "src": "338:21:3" } ], - "id": 656, + "id": 709, "name": "InheritanceSpecifier", - "src": "338:21:2" + "src": "338:21:3" }, { "attributes": { @@ -4768,23 +4768,23 @@ "attributes": { "contractScope": null, "name": "ReentrancyGuard", - "referencedDeclaration": 1000, + "referencedDeclaration": 1053, "type": "contract ReentrancyGuard" }, - "id": 657, + "id": 710, "name": "UserDefinedTypeName", - "src": "361:15:2" + "src": "361:15:3" } ], - "id": 658, + "id": 711, "name": "InheritanceSpecifier", - "src": "361:15:2" + "src": "361:15:3" }, { "attributes": { "constant": false, "name": "denomination", - "scope": 970, + "scope": 1023, "stateVariable": true, "storageLocation": "default", "type": "uint256", @@ -4797,20 +4797,20 @@ "name": "uint256", "type": "uint256" }, - "id": 659, + "id": 712, "name": "ElementaryTypeName", - "src": "381:7:2" + "src": "381:7:3" } ], - "id": 660, + "id": 713, "name": "VariableDeclaration", - "src": "381:27:2" + "src": "381:27:3" }, { "attributes": { "constant": false, "name": "nullifierHashes", - "scope": 970, + "scope": 1023, "stateVariable": true, "storageLocation": "default", "type": "mapping(bytes32 => bool)", @@ -4828,34 +4828,34 @@ "name": "bytes32", "type": "bytes32" }, - "id": 661, + "id": 714, "name": "ElementaryTypeName", - "src": "420:7:2" + "src": "420:7:3" }, { "attributes": { "name": "bool", "type": "bool" }, - "id": 662, + "id": 715, "name": "ElementaryTypeName", - "src": "431:4:2" + "src": "431:4:3" } ], - "id": 663, + "id": 716, "name": "Mapping", - "src": "412:24:2" + "src": "412:24:3" } ], - "id": 664, + "id": 717, "name": "VariableDeclaration", - "src": "412:47:2" + "src": "412:47:3" }, { "attributes": { "constant": false, "name": "commitments", - "scope": 970, + "scope": 1023, "stateVariable": true, "storageLocation": "default", "type": "mapping(bytes32 => bool)", @@ -4873,34 +4873,34 @@ "name": "bytes32", "type": "bytes32" }, - "id": 665, + "id": 718, "name": "ElementaryTypeName", - "src": "562:7:2" + "src": "562:7:3" }, { "attributes": { "name": "bool", "type": "bool" }, - "id": 666, + "id": 719, "name": "ElementaryTypeName", - "src": "573:4:2" + "src": "573:4:3" } ], - "id": 667, + "id": 720, "name": "Mapping", - "src": "554:24:2" + "src": "554:24:3" } ], - "id": 668, + "id": 721, "name": "VariableDeclaration", - "src": "554:43:2" + "src": "554:43:3" }, { "attributes": { "constant": false, "name": "verifier", - "scope": 970, + "scope": 1023, "stateVariable": true, "storageLocation": "default", "type": "contract IVerifier", @@ -4912,23 +4912,23 @@ "attributes": { "contractScope": null, "name": "IVerifier", - "referencedDeclaration": 648, + "referencedDeclaration": 701, "type": "contract IVerifier" }, - "id": 669, + "id": 722, "name": "UserDefinedTypeName", - "src": "601:9:2" + "src": "601:9:3" } ], - "id": 670, + "id": 723, "name": "VariableDeclaration", - "src": "601:25:2" + "src": "601:25:3" }, { "attributes": { "constant": false, "name": "feeManager", - "scope": 970, + "scope": 1023, "stateVariable": true, "storageLocation": "default", "type": "contract IFeeManager", @@ -4940,23 +4940,23 @@ "attributes": { "contractScope": null, "name": "IFeeManager", - "referencedDeclaration": 654, + "referencedDeclaration": 707, "type": "contract IFeeManager" }, - "id": 671, + "id": 724, "name": "UserDefinedTypeName", - "src": "630:11:2" + "src": "630:11:3" } ], - "id": 672, + "id": 725, "name": "VariableDeclaration", - "src": "630:29:2" + "src": "630:29:3" }, { "attributes": { "constant": false, "name": "operator", - "scope": 970, + "scope": 1023, "stateVariable": true, "storageLocation": "default", "type": "address", @@ -4970,14 +4970,14 @@ "stateMutability": "nonpayable", "type": "address" }, - "id": 673, + "id": 726, "name": "ElementaryTypeName", - "src": "819:7:2" + "src": "819:7:3" } ], - "id": 674, + "id": 727, "name": "VariableDeclaration", - "src": "819:23:2" + "src": "819:23:3" }, { "attributes": { @@ -4993,9 +4993,9 @@ ] }, "children": [], - "id": 675, + "id": 728, "name": "ParameterList", - "src": "868:0:2" + "src": "868:0:3" }, { "children": [ @@ -5029,16 +5029,16 @@ } ], "overloadedDeclarations": [ - 1018, - 1019 + 1071, + 1072 ], - "referencedDeclaration": 1019, + "referencedDeclaration": 1072, "type": "function (bool,string memory) pure", "value": "require" }, - "id": 676, + "id": 729, "name": "Identifier", - "src": "874:7:2" + "src": "874:7:3" }, { "attributes": { @@ -5073,18 +5073,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1015, + "referencedDeclaration": 1068, "type": "msg", "value": "msg" }, - "id": 677, + "id": 730, "name": "Identifier", - "src": "882:3:2" + "src": "882:3:3" } ], - "id": 678, + "id": 731, "name": "MemberAccess", - "src": "882:10:2" + "src": "882:10:3" }, { "attributes": { @@ -5092,18 +5092,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 674, + "referencedDeclaration": 727, "type": "address", "value": "operator" }, - "id": 679, + "id": 732, "name": "Identifier", - "src": "896:8:2" + "src": "896:8:3" } ], - "id": 680, + "id": 733, "name": "BinaryOperation", - "src": "882:22:2" + "src": "882:22:3" }, { "attributes": { @@ -5118,34 +5118,34 @@ "type": "literal_string \"Only operator can call this function.\"", "value": "Only operator can call this function." }, - "id": 681, + "id": 734, "name": "Literal", - "src": "906:39:2" + "src": "906:39:3" } ], - "id": 682, + "id": 735, "name": "FunctionCall", - "src": "874:72:2" + "src": "874:72:3" } ], - "id": 683, + "id": 736, "name": "ExpressionStatement", - "src": "874:72:2" + "src": "874:72:3" }, { - "id": 684, + "id": 737, "name": "PlaceholderStatement", - "src": "952:1:2" + "src": "952:1:3" } ], - "id": 685, + "id": 738, "name": "Block", - "src": "868:90:2" + "src": "868:90:3" } ], - "id": 686, + "id": 739, "name": "ModifierDefinition", - "src": "846:112:2" + "src": "846:112:3" }, { "attributes": { @@ -5161,7 +5161,7 @@ "constant": false, "indexed": true, "name": "commitment", - "scope": 694, + "scope": 747, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -5174,21 +5174,21 @@ "name": "bytes32", "type": "bytes32" }, - "id": 687, + "id": 740, "name": "ElementaryTypeName", - "src": "976:7:2" + "src": "976:7:3" } ], - "id": 688, + "id": 741, "name": "VariableDeclaration", - "src": "976:26:2" + "src": "976:26:3" }, { "attributes": { "constant": false, "indexed": false, "name": "leafIndex", - "scope": 694, + "scope": 747, "stateVariable": false, "storageLocation": "default", "type": "uint32", @@ -5201,21 +5201,21 @@ "name": "uint32", "type": "uint32" }, - "id": 689, + "id": 742, "name": "ElementaryTypeName", - "src": "1004:6:2" + "src": "1004:6:3" } ], - "id": 690, + "id": 743, "name": "VariableDeclaration", - "src": "1004:16:2" + "src": "1004:16:3" }, { "attributes": { "constant": false, "indexed": false, "name": "timestamp", - "scope": 694, + "scope": 747, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -5228,24 +5228,24 @@ "name": "uint256", "type": "uint256" }, - "id": 691, + "id": 744, "name": "ElementaryTypeName", - "src": "1022:7:2" + "src": "1022:7:3" } ], - "id": 692, + "id": 745, "name": "VariableDeclaration", - "src": "1022:17:2" + "src": "1022:17:3" } ], - "id": 693, + "id": 746, "name": "ParameterList", - "src": "975:65:2" + "src": "975:65:3" } ], - "id": 694, + "id": 747, "name": "EventDefinition", - "src": "962:79:2" + "src": "962:79:3" }, { "attributes": { @@ -5261,7 +5261,7 @@ "constant": false, "indexed": false, "name": "to", - "scope": 704, + "scope": 757, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -5275,21 +5275,21 @@ "stateMutability": "nonpayable", "type": "address" }, - "id": 695, + "id": 748, "name": "ElementaryTypeName", - "src": "1061:7:2" + "src": "1061:7:3" } ], - "id": 696, + "id": 749, "name": "VariableDeclaration", - "src": "1061:10:2" + "src": "1061:10:3" }, { "attributes": { "constant": false, "indexed": false, "name": "nullifierHash", - "scope": 704, + "scope": 757, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -5302,21 +5302,21 @@ "name": "bytes32", "type": "bytes32" }, - "id": 697, + "id": 750, "name": "ElementaryTypeName", - "src": "1073:7:2" + "src": "1073:7:3" } ], - "id": 698, + "id": 751, "name": "VariableDeclaration", - "src": "1073:21:2" + "src": "1073:21:3" }, { "attributes": { "constant": false, "indexed": true, "name": "relayer", - "scope": 704, + "scope": 757, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -5330,21 +5330,21 @@ "stateMutability": "nonpayable", "type": "address" }, - "id": 699, + "id": 752, "name": "ElementaryTypeName", - "src": "1096:7:2" + "src": "1096:7:3" } ], - "id": 700, + "id": 753, "name": "VariableDeclaration", - "src": "1096:23:2" + "src": "1096:23:3" }, { "attributes": { "constant": false, "indexed": false, "name": "fee", - "scope": 704, + "scope": 757, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -5357,24 +5357,24 @@ "name": "uint256", "type": "uint256" }, - "id": 701, + "id": 754, "name": "ElementaryTypeName", - "src": "1121:7:2" + "src": "1121:7:3" } ], - "id": 702, + "id": 755, "name": "VariableDeclaration", - "src": "1121:11:2" + "src": "1121:11:3" } ], - "id": 703, + "id": 756, "name": "ParameterList", - "src": "1060:73:2" + "src": "1060:73:3" } ], - "id": 704, + "id": 757, "name": "EventDefinition", - "src": "1044:90:2" + "src": "1044:90:3" }, { "attributes": { @@ -5383,7 +5383,7 @@ "isConstructor": true, "kind": "constructor", "name": "", - "scope": 970, + "scope": 1023, "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -5395,7 +5395,7 @@ "attributes": { "constant": false, "name": "_verifier", - "scope": 744, + "scope": 797, "stateVariable": false, "storageLocation": "default", "type": "contract IVerifier", @@ -5407,23 +5407,23 @@ "attributes": { "contractScope": null, "name": "IVerifier", - "referencedDeclaration": 648, + "referencedDeclaration": 701, "type": "contract IVerifier" }, - "id": 705, + "id": 758, "name": "UserDefinedTypeName", - "src": "1450:9:2" + "src": "1450:9:3" } ], - "id": 706, + "id": 759, "name": "VariableDeclaration", - "src": "1450:19:2" + "src": "1450:19:3" }, { "attributes": { "constant": false, "name": "_feeManager", - "scope": 744, + "scope": 797, "stateVariable": false, "storageLocation": "default", "type": "contract IFeeManager", @@ -5435,23 +5435,23 @@ "attributes": { "contractScope": null, "name": "IFeeManager", - "referencedDeclaration": 654, + "referencedDeclaration": 707, "type": "contract IFeeManager" }, - "id": 707, + "id": 760, "name": "UserDefinedTypeName", - "src": "1475:11:2" + "src": "1475:11:3" } ], - "id": 708, + "id": 761, "name": "VariableDeclaration", - "src": "1475:23:2" + "src": "1475:23:3" }, { "attributes": { "constant": false, "name": "_denomination", - "scope": 744, + "scope": 797, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -5464,20 +5464,20 @@ "name": "uint256", "type": "uint256" }, - "id": 709, + "id": 762, "name": "ElementaryTypeName", - "src": "1504:7:2" + "src": "1504:7:3" } ], - "id": 710, + "id": 763, "name": "VariableDeclaration", - "src": "1504:21:2" + "src": "1504:21:3" }, { "attributes": { "constant": false, "name": "_merkleTreeHeight", - "scope": 744, + "scope": 797, "stateVariable": false, "storageLocation": "default", "type": "uint32", @@ -5490,20 +5490,20 @@ "name": "uint32", "type": "uint32" }, - "id": 711, + "id": 764, "name": "ElementaryTypeName", - "src": "1531:6:2" + "src": "1531:6:3" } ], - "id": 712, + "id": 765, "name": "VariableDeclaration", - "src": "1531:24:2" + "src": "1531:24:3" }, { "attributes": { "constant": false, "name": "_operator", - "scope": 744, + "scope": 797, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -5517,19 +5517,19 @@ "stateMutability": "nonpayable", "type": "address" }, - "id": 713, + "id": 766, "name": "ElementaryTypeName", - "src": "1561:7:2" + "src": "1561:7:3" } ], - "id": 714, + "id": 767, "name": "VariableDeclaration", - "src": "1561:17:2" + "src": "1561:17:3" } ], - "id": 715, + "id": 768, "name": "ParameterList", - "src": "1444:138:2" + "src": "1444:138:3" }, { "attributes": { @@ -5538,9 +5538,9 @@ ] }, "children": [], - "id": 719, + "id": 772, "name": "ParameterList", - "src": "1631:0:2" + "src": "1631:0:3" }, { "children": [ @@ -5550,13 +5550,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 632, + "referencedDeclaration": 685, "type": "type(contract MerkleTreeWithHistory)", "value": "MerkleTreeWithHistory" }, - "id": 716, + "id": 769, "name": "Identifier", - "src": "1583:21:2" + "src": "1583:21:3" }, { "attributes": { @@ -5564,18 +5564,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 712, + "referencedDeclaration": 765, "type": "uint32", "value": "_merkleTreeHeight" }, - "id": 717, + "id": 770, "name": "Identifier", - "src": "1605:17:2" + "src": "1605:17:3" } ], - "id": 718, + "id": 771, "name": "ModifierInvocation", - "src": "1583:40:2" + "src": "1583:40:3" }, { "children": [ @@ -5609,16 +5609,16 @@ } ], "overloadedDeclarations": [ - 1018, - 1019 + 1071, + 1072 ], - "referencedDeclaration": 1019, + "referencedDeclaration": 1072, "type": "function (bool,string memory) pure", "value": "require" }, - "id": 720, + "id": 773, "name": "Identifier", - "src": "1637:7:2" + "src": "1637:7:3" }, { "attributes": { @@ -5641,13 +5641,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 710, + "referencedDeclaration": 763, "type": "uint256", "value": "_denomination" }, - "id": 721, + "id": 774, "name": "Identifier", - "src": "1645:13:2" + "src": "1645:13:3" }, { "attributes": { @@ -5662,14 +5662,14 @@ "type": "int_const 0", "value": "0" }, - "id": 722, + "id": 775, "name": "Literal", - "src": "1661:1:2" + "src": "1661:1:3" } ], - "id": 723, + "id": 776, "name": "BinaryOperation", - "src": "1645:17:2" + "src": "1645:17:3" }, { "attributes": { @@ -5684,19 +5684,19 @@ "type": "literal_string \"denomination should be greater than 0\"", "value": "denomination should be greater than 0" }, - "id": 724, + "id": 777, "name": "Literal", - "src": "1664:39:2" + "src": "1664:39:3" } ], - "id": 725, + "id": 778, "name": "FunctionCall", - "src": "1637:67:2" + "src": "1637:67:3" } ], - "id": 726, + "id": 779, "name": "ExpressionStatement", - "src": "1637:67:2" + "src": "1637:67:3" }, { "children": [ @@ -5717,13 +5717,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 670, + "referencedDeclaration": 723, "type": "contract IVerifier", "value": "verifier" }, - "id": 727, + "id": 780, "name": "Identifier", - "src": "1710:8:2" + "src": "1710:8:3" }, { "attributes": { @@ -5731,23 +5731,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 706, + "referencedDeclaration": 759, "type": "contract IVerifier", "value": "_verifier" }, - "id": 728, + "id": 781, "name": "Identifier", - "src": "1721:9:2" + "src": "1721:9:3" } ], - "id": 729, + "id": 782, "name": "Assignment", - "src": "1710:20:2" + "src": "1710:20:3" } ], - "id": 730, + "id": 783, "name": "ExpressionStatement", - "src": "1710:20:2" + "src": "1710:20:3" }, { "children": [ @@ -5768,13 +5768,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 672, + "referencedDeclaration": 725, "type": "contract IFeeManager", "value": "feeManager" }, - "id": 731, + "id": 784, "name": "Identifier", - "src": "1736:10:2" + "src": "1736:10:3" }, { "attributes": { @@ -5782,23 +5782,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 708, + "referencedDeclaration": 761, "type": "contract IFeeManager", "value": "_feeManager" }, - "id": 732, + "id": 785, "name": "Identifier", - "src": "1749:11:2" + "src": "1749:11:3" } ], - "id": 733, + "id": 786, "name": "Assignment", - "src": "1736:24:2" + "src": "1736:24:3" } ], - "id": 734, + "id": 787, "name": "ExpressionStatement", - "src": "1736:24:2" + "src": "1736:24:3" }, { "children": [ @@ -5819,13 +5819,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 674, + "referencedDeclaration": 727, "type": "address", "value": "operator" }, - "id": 735, + "id": 788, "name": "Identifier", - "src": "1766:8:2" + "src": "1766:8:3" }, { "attributes": { @@ -5833,23 +5833,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 714, + "referencedDeclaration": 767, "type": "address", "value": "_operator" }, - "id": 736, + "id": 789, "name": "Identifier", - "src": "1777:9:2" + "src": "1777:9:3" } ], - "id": 737, + "id": 790, "name": "Assignment", - "src": "1766:20:2" + "src": "1766:20:3" } ], - "id": 738, + "id": 791, "name": "ExpressionStatement", - "src": "1766:20:2" + "src": "1766:20:3" }, { "children": [ @@ -5870,13 +5870,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 660, + "referencedDeclaration": 713, "type": "uint256", "value": "denomination" }, - "id": 739, + "id": 792, "name": "Identifier", - "src": "1792:12:2" + "src": "1792:12:3" }, { "attributes": { @@ -5884,33 +5884,33 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 710, + "referencedDeclaration": 763, "type": "uint256", "value": "_denomination" }, - "id": 740, + "id": 793, "name": "Identifier", - "src": "1807:13:2" + "src": "1807:13:3" } ], - "id": 741, + "id": 794, "name": "Assignment", - "src": "1792:28:2" + "src": "1792:28:3" } ], - "id": 742, + "id": 795, "name": "ExpressionStatement", - "src": "1792:28:2" + "src": "1792:28:3" } ], - "id": 743, + "id": 796, "name": "Block", - "src": "1631:194:2" + "src": "1631:194:3" } ], - "id": 744, + "id": 797, "name": "FunctionDefinition", - "src": "1433:392:2" + "src": "1433:392:3" }, { "attributes": { @@ -5919,7 +5919,7 @@ "isConstructor": false, "kind": "function", "name": "deposit", - "scope": 970, + "scope": 1023, "stateMutability": "payable", "superFunction": null, "visibility": "external" @@ -5931,7 +5931,7 @@ "attributes": { "constant": false, "name": "_commitment", - "scope": 782, + "scope": 835, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -5944,19 +5944,19 @@ "name": "bytes32", "type": "bytes32" }, - "id": 745, + "id": 798, "name": "ElementaryTypeName", - "src": "2090:7:2" + "src": "2090:7:3" } ], - "id": 746, + "id": 799, "name": "VariableDeclaration", - "src": "2090:19:2" + "src": "2090:19:3" } ], - "id": 747, + "id": 800, "name": "ParameterList", - "src": "2089:21:2" + "src": "2089:21:3" }, { "attributes": { @@ -5965,9 +5965,9 @@ ] }, "children": [], - "id": 750, + "id": 803, "name": "ParameterList", - "src": "2141:0:2" + "src": "2141:0:3" }, { "attributes": { @@ -5980,18 +5980,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 999, + "referencedDeclaration": 1052, "type": "modifier ()", "value": "nonReentrant" }, - "id": 748, + "id": 801, "name": "Identifier", - "src": "2128:12:2" + "src": "2128:12:3" } ], - "id": 749, + "id": 802, "name": "ModifierInvocation", - "src": "2128:12:2" + "src": "2128:12:3" }, { "children": [ @@ -6025,16 +6025,16 @@ } ], "overloadedDeclarations": [ - 1018, - 1019 + 1071, + 1072 ], - "referencedDeclaration": 1019, + "referencedDeclaration": 1072, "type": "function (bool,string memory) pure", "value": "require" }, - "id": 751, + "id": 804, "name": "Identifier", - "src": "2147:7:2" + "src": "2147:7:3" }, { "attributes": { @@ -6064,13 +6064,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 668, + "referencedDeclaration": 721, "type": "mapping(bytes32 => bool)", "value": "commitments" }, - "id": 752, + "id": 805, "name": "Identifier", - "src": "2156:11:2" + "src": "2156:11:3" }, { "attributes": { @@ -6078,23 +6078,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 746, + "referencedDeclaration": 799, "type": "bytes32", "value": "_commitment" }, - "id": 753, + "id": 806, "name": "Identifier", - "src": "2168:11:2" + "src": "2168:11:3" } ], - "id": 754, + "id": 807, "name": "IndexAccess", - "src": "2156:24:2" + "src": "2156:24:3" } ], - "id": 755, + "id": 808, "name": "UnaryOperation", - "src": "2155:25:2" + "src": "2155:25:3" }, { "attributes": { @@ -6109,24 +6109,24 @@ "type": "literal_string \"The commitment has been submitted\"", "value": "The commitment has been submitted" }, - "id": 756, + "id": 809, "name": "Literal", - "src": "2182:35:2" + "src": "2182:35:3" } ], - "id": 757, + "id": 810, "name": "FunctionCall", - "src": "2147:71:2" + "src": "2147:71:3" } ], - "id": 758, + "id": 811, "name": "ExpressionStatement", - "src": "2147:71:2" + "src": "2147:71:3" }, { "attributes": { "assignments": [ - 760 + 813 ] }, "children": [ @@ -6134,7 +6134,7 @@ "attributes": { "constant": false, "name": "insertedIndex", - "scope": 781, + "scope": 834, "stateVariable": false, "storageLocation": "default", "type": "uint32", @@ -6147,14 +6147,14 @@ "name": "uint32", "type": "uint32" }, - "id": 759, + "id": 812, "name": "ElementaryTypeName", - "src": "2225:6:2" + "src": "2225:6:3" } ], - "id": 760, + "id": 813, "name": "VariableDeclaration", - "src": "2225:20:2" + "src": "2225:20:3" }, { "attributes": { @@ -6182,13 +6182,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 574, + "referencedDeclaration": 627, "type": "function (bytes32) returns (uint32)", "value": "_insert" }, - "id": 761, + "id": 814, "name": "Identifier", - "src": "2248:7:2" + "src": "2248:7:3" }, { "attributes": { @@ -6196,23 +6196,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 746, + "referencedDeclaration": 799, "type": "bytes32", "value": "_commitment" }, - "id": 762, + "id": 815, "name": "Identifier", - "src": "2256:11:2" + "src": "2256:11:3" } ], - "id": 763, + "id": 816, "name": "FunctionCall", - "src": "2248:20:2" + "src": "2248:20:3" } ], - "id": 764, + "id": 817, "name": "VariableDeclarationStatement", - "src": "2225:43:2" + "src": "2225:43:3" }, { "children": [ @@ -6243,13 +6243,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 668, + "referencedDeclaration": 721, "type": "mapping(bytes32 => bool)", "value": "commitments" }, - "id": 765, + "id": 818, "name": "Identifier", - "src": "2274:11:2" + "src": "2274:11:3" }, { "attributes": { @@ -6257,18 +6257,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 746, + "referencedDeclaration": 799, "type": "bytes32", "value": "_commitment" }, - "id": 766, + "id": 819, "name": "Identifier", - "src": "2286:11:2" + "src": "2286:11:3" } ], - "id": 767, + "id": 820, "name": "IndexAccess", - "src": "2274:24:2" + "src": "2274:24:3" }, { "attributes": { @@ -6283,19 +6283,19 @@ "type": "bool", "value": "true" }, - "id": 768, + "id": 821, "name": "Literal", - "src": "2301:4:2" + "src": "2301:4:3" } ], - "id": 769, + "id": 822, "name": "Assignment", - "src": "2274:31:2" + "src": "2274:31:3" } ], - "id": 770, + "id": 823, "name": "ExpressionStatement", - "src": "2274:31:2" + "src": "2274:31:3" }, { "children": [ @@ -6325,23 +6325,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 785, + "referencedDeclaration": 838, "type": "function ()", "value": "_processDeposit" }, - "id": 771, + "id": 824, "name": "Identifier", - "src": "2311:15:2" + "src": "2311:15:3" } ], - "id": 772, + "id": 825, "name": "FunctionCall", - "src": "2311:17:2" + "src": "2311:17:3" } ], - "id": 773, + "id": 826, "name": "ExpressionStatement", - "src": "2311:17:2" + "src": "2311:17:3" }, { "children": [ @@ -6379,13 +6379,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 694, + "referencedDeclaration": 747, "type": "function (bytes32,uint32,uint256)", "value": "Deposit" }, - "id": 774, + "id": 827, "name": "Identifier", - "src": "2340:7:2" + "src": "2340:7:3" }, { "attributes": { @@ -6393,13 +6393,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 746, + "referencedDeclaration": 799, "type": "bytes32", "value": "_commitment" }, - "id": 775, + "id": 828, "name": "Identifier", - "src": "2348:11:2" + "src": "2348:11:3" }, { "attributes": { @@ -6407,13 +6407,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 760, + "referencedDeclaration": 813, "type": "uint32", "value": "insertedIndex" }, - "id": 776, + "id": 829, "name": "Identifier", - "src": "2361:13:2" + "src": "2361:13:3" }, { "attributes": { @@ -6433,38 +6433,38 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1005, + "referencedDeclaration": 1058, "type": "block", "value": "block" }, - "id": 777, + "id": 830, "name": "Identifier", - "src": "2376:5:2" + "src": "2376:5:3" } ], - "id": 778, + "id": 831, "name": "MemberAccess", - "src": "2376:15:2" + "src": "2376:15:3" } ], - "id": 779, + "id": 832, "name": "FunctionCall", - "src": "2340:52:2" + "src": "2340:52:3" } ], - "id": 780, + "id": 833, "name": "EmitStatement", - "src": "2335:57:2" + "src": "2335:57:3" } ], - "id": 781, + "id": 834, "name": "Block", - "src": "2141:256:2" + "src": "2141:256:3" } ], - "id": 782, + "id": 835, "name": "FunctionDefinition", - "src": "2073:324:2" + "src": "2073:324:3" }, { "attributes": { @@ -6477,7 +6477,7 @@ null ], "name": "_processDeposit", - "scope": 970, + "scope": 1023, "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" @@ -6490,9 +6490,9 @@ ] }, "children": [], - "id": 783, + "id": 836, "name": "ParameterList", - "src": "2484:2:2" + "src": "2484:2:3" }, { "attributes": { @@ -6501,14 +6501,14 @@ ] }, "children": [], - "id": 784, + "id": 837, "name": "ParameterList", - "src": "2495:0:2" + "src": "2495:0:3" } ], - "id": 785, + "id": 838, "name": "FunctionDefinition", - "src": "2460:36:2" + "src": "2460:36:3" }, { "attributes": { @@ -6517,7 +6517,7 @@ "isConstructor": false, "kind": "function", "name": "withdraw", - "scope": 970, + "scope": 1023, "stateMutability": "payable", "superFunction": null, "visibility": "external" @@ -6529,7 +6529,7 @@ "attributes": { "constant": false, "name": "_proof", - "scope": 873, + "scope": 926, "stateVariable": false, "storageLocation": "calldata", "type": "bytes", @@ -6542,20 +6542,20 @@ "name": "bytes", "type": "bytes" }, - "id": 786, + "id": 839, "name": "ElementaryTypeName", - "src": "2911:5:2" + "src": "2911:5:3" } ], - "id": 787, + "id": 840, "name": "VariableDeclaration", - "src": "2911:21:2" + "src": "2911:21:3" }, { "attributes": { "constant": false, "name": "_root", - "scope": 873, + "scope": 926, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -6568,20 +6568,20 @@ "name": "bytes32", "type": "bytes32" }, - "id": 788, + "id": 841, "name": "ElementaryTypeName", - "src": "2934:7:2" + "src": "2934:7:3" } ], - "id": 789, + "id": 842, "name": "VariableDeclaration", - "src": "2934:13:2" + "src": "2934:13:3" }, { "attributes": { "constant": false, "name": "_nullifierHash", - "scope": 873, + "scope": 926, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -6594,20 +6594,20 @@ "name": "bytes32", "type": "bytes32" }, - "id": 790, + "id": 843, "name": "ElementaryTypeName", - "src": "2949:7:2" + "src": "2949:7:3" } ], - "id": 791, + "id": 844, "name": "VariableDeclaration", - "src": "2949:22:2" + "src": "2949:22:3" }, { "attributes": { "constant": false, "name": "_recipient", - "scope": 873, + "scope": 926, "stateVariable": false, "storageLocation": "default", "type": "address payable", @@ -6621,20 +6621,20 @@ "stateMutability": "payable", "type": "address payable" }, - "id": 792, + "id": 845, "name": "ElementaryTypeName", - "src": "2973:15:2" + "src": "2973:15:3" } ], - "id": 793, + "id": 846, "name": "VariableDeclaration", - "src": "2973:26:2" + "src": "2973:26:3" }, { "attributes": { "constant": false, "name": "_relayer", - "scope": 873, + "scope": 926, "stateVariable": false, "storageLocation": "default", "type": "address payable", @@ -6648,20 +6648,20 @@ "stateMutability": "payable", "type": "address payable" }, - "id": 794, + "id": 847, "name": "ElementaryTypeName", - "src": "3001:15:2" + "src": "3001:15:3" } ], - "id": 795, + "id": 848, "name": "VariableDeclaration", - "src": "3001:24:2" + "src": "3001:24:3" }, { "attributes": { "constant": false, "name": "_fee", - "scope": 873, + "scope": 926, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -6674,20 +6674,20 @@ "name": "uint256", "type": "uint256" }, - "id": 796, + "id": 849, "name": "ElementaryTypeName", - "src": "3027:7:2" + "src": "3027:7:3" } ], - "id": 797, + "id": 850, "name": "VariableDeclaration", - "src": "3027:12:2" + "src": "3027:12:3" }, { "attributes": { "constant": false, "name": "_refund", - "scope": 873, + "scope": 926, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -6700,19 +6700,19 @@ "name": "uint256", "type": "uint256" }, - "id": 798, + "id": 851, "name": "ElementaryTypeName", - "src": "3041:7:2" + "src": "3041:7:3" } ], - "id": 799, + "id": 852, "name": "VariableDeclaration", - "src": "3041:15:2" + "src": "3041:15:3" } ], - "id": 800, + "id": 853, "name": "ParameterList", - "src": "2910:147:2" + "src": "2910:147:3" }, { "attributes": { @@ -6721,9 +6721,9 @@ ] }, "children": [], - "id": 803, + "id": 856, "name": "ParameterList", - "src": "3088:0:2" + "src": "3088:0:3" }, { "attributes": { @@ -6736,18 +6736,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 999, + "referencedDeclaration": 1052, "type": "modifier ()", "value": "nonReentrant" }, - "id": 801, + "id": 854, "name": "Identifier", - "src": "3075:12:2" + "src": "3075:12:3" } ], - "id": 802, + "id": 855, "name": "ModifierInvocation", - "src": "3075:12:2" + "src": "3075:12:3" }, { "children": [ @@ -6781,16 +6781,16 @@ } ], "overloadedDeclarations": [ - 1018, - 1019 + 1071, + 1072 ], - "referencedDeclaration": 1019, + "referencedDeclaration": 1072, "type": "function (bool,string memory) pure", "value": "require" }, - "id": 804, + "id": 857, "name": "Identifier", - "src": "3094:7:2" + "src": "3094:7:3" }, { "attributes": { @@ -6813,13 +6813,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 797, + "referencedDeclaration": 850, "type": "uint256", "value": "_fee" }, - "id": 805, + "id": 858, "name": "Identifier", - "src": "3102:4:2" + "src": "3102:4:3" }, { "attributes": { @@ -6827,18 +6827,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 660, + "referencedDeclaration": 713, "type": "uint256", "value": "denomination" }, - "id": 806, + "id": 859, "name": "Identifier", - "src": "3110:12:2" + "src": "3110:12:3" } ], - "id": 807, + "id": 860, "name": "BinaryOperation", - "src": "3102:20:2" + "src": "3102:20:3" }, { "attributes": { @@ -6853,19 +6853,19 @@ "type": "literal_string \"Fee exceeds transfer value\"", "value": "Fee exceeds transfer value" }, - "id": 808, + "id": 861, "name": "Literal", - "src": "3124:28:2" + "src": "3124:28:3" } ], - "id": 809, + "id": 862, "name": "FunctionCall", - "src": "3094:59:2" + "src": "3094:59:3" } ], - "id": 810, + "id": 863, "name": "ExpressionStatement", - "src": "3094:59:2" + "src": "3094:59:3" }, { "children": [ @@ -6897,16 +6897,16 @@ } ], "overloadedDeclarations": [ - 1018, - 1019 + 1071, + 1072 ], - "referencedDeclaration": 1019, + "referencedDeclaration": 1072, "type": "function (bool,string memory) pure", "value": "require" }, - "id": 811, + "id": 864, "name": "Identifier", - "src": "3159:7:2" + "src": "3159:7:3" }, { "attributes": { @@ -6936,13 +6936,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 664, + "referencedDeclaration": 717, "type": "mapping(bytes32 => bool)", "value": "nullifierHashes" }, - "id": 812, + "id": 865, "name": "Identifier", - "src": "3168:15:2" + "src": "3168:15:3" }, { "attributes": { @@ -6950,23 +6950,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 791, + "referencedDeclaration": 844, "type": "bytes32", "value": "_nullifierHash" }, - "id": 813, + "id": 866, "name": "Identifier", - "src": "3184:14:2" + "src": "3184:14:3" } ], - "id": 814, + "id": 867, "name": "IndexAccess", - "src": "3168:31:2" + "src": "3168:31:3" } ], - "id": 815, + "id": 868, "name": "UnaryOperation", - "src": "3167:32:2" + "src": "3167:32:3" }, { "attributes": { @@ -6981,19 +6981,19 @@ "type": "literal_string \"The note has been already spent\"", "value": "The note has been already spent" }, - "id": 816, + "id": 869, "name": "Literal", - "src": "3201:33:2" + "src": "3201:33:3" } ], - "id": 817, + "id": 870, "name": "FunctionCall", - "src": "3159:76:2" + "src": "3159:76:3" } ], - "id": 818, + "id": 871, "name": "ExpressionStatement", - "src": "3159:76:2" + "src": "3159:76:3" }, { "children": [ @@ -7025,16 +7025,16 @@ } ], "overloadedDeclarations": [ - 1018, - 1019 + 1071, + 1072 ], - "referencedDeclaration": 1019, + "referencedDeclaration": 1072, "type": "function (bool,string memory) pure", "value": "require" }, - "id": 819, + "id": 872, "name": "Identifier", - "src": "3241:7:2" + "src": "3241:7:3" }, { "attributes": { @@ -7062,13 +7062,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 621, + "referencedDeclaration": 674, "type": "function (bytes32) view returns (bool)", "value": "isKnownRoot" }, - "id": 820, + "id": 873, "name": "Identifier", - "src": "3249:11:2" + "src": "3249:11:3" }, { "attributes": { @@ -7076,18 +7076,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 789, + "referencedDeclaration": 842, "type": "bytes32", "value": "_root" }, - "id": 821, + "id": 874, "name": "Identifier", - "src": "3261:5:2" + "src": "3261:5:3" } ], - "id": 822, + "id": 875, "name": "FunctionCall", - "src": "3249:18:2" + "src": "3249:18:3" }, { "attributes": { @@ -7102,19 +7102,19 @@ "type": "literal_string \"Cannot find your merkle root\"", "value": "Cannot find your merkle root" }, - "id": 823, + "id": 876, "name": "Literal", - "src": "3269:30:2" + "src": "3269:30:3" } ], - "id": 824, + "id": 877, "name": "FunctionCall", - "src": "3241:59:2" + "src": "3241:59:3" } ], - "id": 825, + "id": 878, "name": "ExpressionStatement", - "src": "3241:59:2" + "src": "3241:59:3" }, { "children": [ @@ -7146,16 +7146,16 @@ } ], "overloadedDeclarations": [ - 1018, - 1019 + 1071, + 1072 ], - "referencedDeclaration": 1019, + "referencedDeclaration": 1072, "type": "function (bool,string memory) pure", "value": "require" }, - "id": 826, + "id": 879, "name": "Identifier", - "src": "3339:7:2" + "src": "3339:7:3" }, { "attributes": { @@ -7189,7 +7189,7 @@ "isPure": false, "lValueRequested": false, "member_name": "verifyProof", - "referencedDeclaration": 647, + "referencedDeclaration": 700, "type": "function (bytes memory,uint256[6] memory) external returns (bool)" }, "children": [ @@ -7199,18 +7199,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 670, + "referencedDeclaration": 723, "type": "contract IVerifier", "value": "verifier" }, - "id": 827, + "id": 880, "name": "Identifier", - "src": "3347:8:2" + "src": "3347:8:3" } ], - "id": 828, + "id": 881, "name": "MemberAccess", - "src": "3347:20:2" + "src": "3347:20:3" }, { "attributes": { @@ -7218,13 +7218,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 787, + "referencedDeclaration": 840, "type": "bytes calldata", "value": "_proof" }, - "id": 829, + "id": 882, "name": "Identifier", - "src": "3368:6:2" + "src": "3368:6:3" }, { "attributes": { @@ -7267,9 +7267,9 @@ "type": "type(uint256)", "value": "uint256" }, - "id": 830, + "id": 883, "name": "ElementaryTypeNameExpression", - "src": "3377:7:2" + "src": "3377:7:3" }, { "attributes": { @@ -7277,18 +7277,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 789, + "referencedDeclaration": 842, "type": "bytes32", "value": "_root" }, - "id": 831, + "id": 884, "name": "Identifier", - "src": "3385:5:2" + "src": "3385:5:3" } ], - "id": 832, + "id": 885, "name": "FunctionCall", - "src": "3377:14:2" + "src": "3377:14:3" }, { "attributes": { @@ -7320,9 +7320,9 @@ "type": "type(uint256)", "value": "uint256" }, - "id": 833, + "id": 886, "name": "ElementaryTypeNameExpression", - "src": "3393:7:2" + "src": "3393:7:3" }, { "attributes": { @@ -7330,18 +7330,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 791, + "referencedDeclaration": 844, "type": "bytes32", "value": "_nullifierHash" }, - "id": 834, + "id": 887, "name": "Identifier", - "src": "3401:14:2" + "src": "3401:14:3" } ], - "id": 835, + "id": 888, "name": "FunctionCall", - "src": "3393:23:2" + "src": "3393:23:3" }, { "attributes": { @@ -7373,9 +7373,9 @@ "type": "type(uint256)", "value": "uint256" }, - "id": 836, + "id": 889, "name": "ElementaryTypeNameExpression", - "src": "3418:7:2" + "src": "3418:7:3" }, { "attributes": { @@ -7383,18 +7383,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 793, + "referencedDeclaration": 846, "type": "address payable", "value": "_recipient" }, - "id": 837, + "id": 890, "name": "Identifier", - "src": "3426:10:2" + "src": "3426:10:3" } ], - "id": 838, + "id": 891, "name": "FunctionCall", - "src": "3418:19:2" + "src": "3418:19:3" }, { "attributes": { @@ -7426,9 +7426,9 @@ "type": "type(uint256)", "value": "uint256" }, - "id": 839, + "id": 892, "name": "ElementaryTypeNameExpression", - "src": "3439:7:2" + "src": "3439:7:3" }, { "attributes": { @@ -7436,18 +7436,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 795, + "referencedDeclaration": 848, "type": "address payable", "value": "_relayer" }, - "id": 840, + "id": 893, "name": "Identifier", - "src": "3447:8:2" + "src": "3447:8:3" } ], - "id": 841, + "id": 894, "name": "FunctionCall", - "src": "3439:17:2" + "src": "3439:17:3" }, { "attributes": { @@ -7455,13 +7455,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 797, + "referencedDeclaration": 850, "type": "uint256", "value": "_fee" }, - "id": 842, + "id": 895, "name": "Identifier", - "src": "3458:4:2" + "src": "3458:4:3" }, { "attributes": { @@ -7469,23 +7469,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 799, + "referencedDeclaration": 852, "type": "uint256", "value": "_refund" }, - "id": 843, + "id": 896, "name": "Identifier", - "src": "3464:7:2" + "src": "3464:7:3" } ], - "id": 844, + "id": 897, "name": "TupleExpression", - "src": "3376:96:2" + "src": "3376:96:3" } ], - "id": 845, + "id": 898, "name": "FunctionCall", - "src": "3347:126:2" + "src": "3347:126:3" }, { "attributes": { @@ -7500,19 +7500,19 @@ "type": "literal_string \"Invalid withdraw proof\"", "value": "Invalid withdraw proof" }, - "id": 846, + "id": 899, "name": "Literal", - "src": "3475:24:2" + "src": "3475:24:3" } ], - "id": 847, + "id": 900, "name": "FunctionCall", - "src": "3339:161:2" + "src": "3339:161:3" } ], - "id": 848, + "id": 901, "name": "ExpressionStatement", - "src": "3339:161:2" + "src": "3339:161:3" }, { "children": [ @@ -7543,13 +7543,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 664, + "referencedDeclaration": 717, "type": "mapping(bytes32 => bool)", "value": "nullifierHashes" }, - "id": 849, + "id": 902, "name": "Identifier", - "src": "3507:15:2" + "src": "3507:15:3" }, { "attributes": { @@ -7557,18 +7557,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 791, + "referencedDeclaration": 844, "type": "bytes32", "value": "_nullifierHash" }, - "id": 850, + "id": 903, "name": "Identifier", - "src": "3523:14:2" + "src": "3523:14:3" } ], - "id": 851, + "id": 904, "name": "IndexAccess", - "src": "3507:31:2" + "src": "3507:31:3" }, { "attributes": { @@ -7583,19 +7583,19 @@ "type": "bool", "value": "true" }, - "id": 852, + "id": 905, "name": "Literal", - "src": "3541:4:2" + "src": "3541:4:3" } ], - "id": 853, + "id": 906, "name": "Assignment", - "src": "3507:38:2" + "src": "3507:38:3" } ], - "id": 854, + "id": 907, "name": "ExpressionStatement", - "src": "3507:38:2" + "src": "3507:38:3" }, { "children": [ @@ -7641,13 +7641,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 886, + "referencedDeclaration": 939, "type": "function (address payable,address payable,uint256,uint256,address)", "value": "_processWithdraw" }, - "id": 855, + "id": 908, "name": "Identifier", - "src": "3551:16:2" + "src": "3551:16:3" }, { "attributes": { @@ -7655,13 +7655,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 793, + "referencedDeclaration": 846, "type": "address payable", "value": "_recipient" }, - "id": 856, + "id": 909, "name": "Identifier", - "src": "3568:10:2" + "src": "3568:10:3" }, { "attributes": { @@ -7669,13 +7669,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 795, + "referencedDeclaration": 848, "type": "address payable", "value": "_relayer" }, - "id": 857, + "id": 910, "name": "Identifier", - "src": "3580:8:2" + "src": "3580:8:3" }, { "attributes": { @@ -7683,13 +7683,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 797, + "referencedDeclaration": 850, "type": "uint256", "value": "_fee" }, - "id": 858, + "id": 911, "name": "Identifier", - "src": "3590:4:2" + "src": "3590:4:3" }, { "attributes": { @@ -7697,13 +7697,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 799, + "referencedDeclaration": 852, "type": "uint256", "value": "_refund" }, - "id": 859, + "id": 912, "name": "Identifier", - "src": "3596:7:2" + "src": "3596:7:3" }, { "attributes": { @@ -7733,7 +7733,7 @@ "isPure": false, "lValueRequested": false, "member_name": "feeTo", - "referencedDeclaration": 653, + "referencedDeclaration": 706, "type": "function () view external returns (address)" }, "children": [ @@ -7743,33 +7743,33 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 672, + "referencedDeclaration": 725, "type": "contract IFeeManager", "value": "feeManager" }, - "id": 860, + "id": 913, "name": "Identifier", - "src": "3605:10:2" + "src": "3605:10:3" } ], - "id": 861, + "id": 914, "name": "MemberAccess", - "src": "3605:16:2" + "src": "3605:16:3" } ], - "id": 862, + "id": 915, "name": "FunctionCall", - "src": "3605:18:2" + "src": "3605:18:3" } ], - "id": 863, + "id": 916, "name": "FunctionCall", - "src": "3551:73:2" + "src": "3551:73:3" } ], - "id": 864, + "id": 917, "name": "ExpressionStatement", - "src": "3551:73:2" + "src": "3551:73:3" }, { "children": [ @@ -7811,13 +7811,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 704, + "referencedDeclaration": 757, "type": "function (address,bytes32,address,uint256)", "value": "Withdrawal" }, - "id": 865, + "id": 918, "name": "Identifier", - "src": "3635:10:2" + "src": "3635:10:3" }, { "attributes": { @@ -7825,13 +7825,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 793, + "referencedDeclaration": 846, "type": "address payable", "value": "_recipient" }, - "id": 866, + "id": 919, "name": "Identifier", - "src": "3646:10:2" + "src": "3646:10:3" }, { "attributes": { @@ -7839,13 +7839,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 791, + "referencedDeclaration": 844, "type": "bytes32", "value": "_nullifierHash" }, - "id": 867, + "id": 920, "name": "Identifier", - "src": "3658:14:2" + "src": "3658:14:3" }, { "attributes": { @@ -7853,13 +7853,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 795, + "referencedDeclaration": 848, "type": "address payable", "value": "_relayer" }, - "id": 868, + "id": 921, "name": "Identifier", - "src": "3674:8:2" + "src": "3674:8:3" }, { "attributes": { @@ -7867,33 +7867,33 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 797, + "referencedDeclaration": 850, "type": "uint256", "value": "_fee" }, - "id": 869, + "id": 922, "name": "Identifier", - "src": "3684:4:2" + "src": "3684:4:3" } ], - "id": 870, + "id": 923, "name": "FunctionCall", - "src": "3635:54:2" + "src": "3635:54:3" } ], - "id": 871, + "id": 924, "name": "EmitStatement", - "src": "3630:59:2" + "src": "3630:59:3" } ], - "id": 872, + "id": 925, "name": "Block", - "src": "3088:606:2" + "src": "3088:606:3" } ], - "id": 873, + "id": 926, "name": "FunctionDefinition", - "src": "2893:801:2" + "src": "2893:801:3" }, { "attributes": { @@ -7906,7 +7906,7 @@ null ], "name": "_processWithdraw", - "scope": 970, + "scope": 1023, "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" @@ -7918,7 +7918,7 @@ "attributes": { "constant": false, "name": "_recipient", - "scope": 886, + "scope": 939, "stateVariable": false, "storageLocation": "default", "type": "address payable", @@ -7932,20 +7932,20 @@ "stateMutability": "payable", "type": "address payable" }, - "id": 874, + "id": 927, "name": "ElementaryTypeName", - "src": "3783:15:2" + "src": "3783:15:3" } ], - "id": 875, + "id": 928, "name": "VariableDeclaration", - "src": "3783:26:2" + "src": "3783:26:3" }, { "attributes": { "constant": false, "name": "_relayer", - "scope": 886, + "scope": 939, "stateVariable": false, "storageLocation": "default", "type": "address payable", @@ -7959,20 +7959,20 @@ "stateMutability": "payable", "type": "address payable" }, - "id": 876, + "id": 929, "name": "ElementaryTypeName", - "src": "3811:15:2" + "src": "3811:15:3" } ], - "id": 877, + "id": 930, "name": "VariableDeclaration", - "src": "3811:24:2" + "src": "3811:24:3" }, { "attributes": { "constant": false, "name": "_relayer_fee", - "scope": 886, + "scope": 939, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -7985,20 +7985,20 @@ "name": "uint256", "type": "uint256" }, - "id": 878, + "id": 931, "name": "ElementaryTypeName", - "src": "3837:7:2" + "src": "3837:7:3" } ], - "id": 879, + "id": 932, "name": "VariableDeclaration", - "src": "3837:20:2" + "src": "3837:20:3" }, { "attributes": { "constant": false, "name": "_refund", - "scope": 886, + "scope": 939, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -8011,20 +8011,20 @@ "name": "uint256", "type": "uint256" }, - "id": 880, + "id": 933, "name": "ElementaryTypeName", - "src": "3859:7:2" + "src": "3859:7:3" } ], - "id": 881, + "id": 934, "name": "VariableDeclaration", - "src": "3859:15:2" + "src": "3859:15:3" }, { "attributes": { "constant": false, "name": "_feeTo", - "scope": 886, + "scope": 939, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -8038,19 +8038,19 @@ "stateMutability": "nonpayable", "type": "address" }, - "id": 882, + "id": 935, "name": "ElementaryTypeName", - "src": "3876:7:2" + "src": "3876:7:3" } ], - "id": 883, + "id": 936, "name": "VariableDeclaration", - "src": "3876:14:2" + "src": "3876:14:3" } ], - "id": 884, + "id": 937, "name": "ParameterList", - "src": "3782:109:2" + "src": "3782:109:3" }, { "attributes": { @@ -8059,14 +8059,14 @@ ] }, "children": [], - "id": 885, + "id": 938, "name": "ParameterList", - "src": "3900:0:2" + "src": "3900:0:3" } ], - "id": 886, + "id": 939, "name": "FunctionDefinition", - "src": "3757:144:2" + "src": "3757:144:3" }, { "attributes": { @@ -8078,7 +8078,7 @@ null ], "name": "isSpent", - "scope": 970, + "scope": 1023, "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -8090,7 +8090,7 @@ "attributes": { "constant": false, "name": "_nullifierHash", - "scope": 898, + "scope": 951, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -8103,19 +8103,19 @@ "name": "bytes32", "type": "bytes32" }, - "id": 887, + "id": 940, "name": "ElementaryTypeName", - "src": "3968:7:2" + "src": "3968:7:3" } ], - "id": 888, + "id": 941, "name": "VariableDeclaration", - "src": "3968:22:2" + "src": "3968:22:3" } ], - "id": 889, + "id": 942, "name": "ParameterList", - "src": "3967:24:2" + "src": "3967:24:3" }, { "children": [ @@ -8123,7 +8123,7 @@ "attributes": { "constant": false, "name": "", - "scope": 898, + "scope": 951, "stateVariable": false, "storageLocation": "default", "type": "bool", @@ -8136,25 +8136,25 @@ "name": "bool", "type": "bool" }, - "id": 890, + "id": 943, "name": "ElementaryTypeName", - "src": "4012:4:2" + "src": "4012:4:3" } ], - "id": 891, + "id": 944, "name": "VariableDeclaration", - "src": "4012:4:2" + "src": "4012:4:3" } ], - "id": 892, + "id": 945, "name": "ParameterList", - "src": "4011:6:2" + "src": "4011:6:3" }, { "children": [ { "attributes": { - "functionReturnParameters": 892 + "functionReturnParameters": 945 }, "children": [ { @@ -8173,13 +8173,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 664, + "referencedDeclaration": 717, "type": "mapping(bytes32 => bool)", "value": "nullifierHashes" }, - "id": 893, + "id": 946, "name": "Identifier", - "src": "4031:15:2" + "src": "4031:15:3" }, { "attributes": { @@ -8187,33 +8187,33 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 888, + "referencedDeclaration": 941, "type": "bytes32", "value": "_nullifierHash" }, - "id": 894, + "id": 947, "name": "Identifier", - "src": "4047:14:2" + "src": "4047:14:3" } ], - "id": 895, + "id": 948, "name": "IndexAccess", - "src": "4031:31:2" + "src": "4031:31:3" } ], - "id": 896, + "id": 949, "name": "Return", - "src": "4024:38:2" + "src": "4024:38:3" } ], - "id": 897, + "id": 950, "name": "Block", - "src": "4018:49:2" + "src": "4018:49:3" } ], - "id": 898, + "id": 951, "name": "FunctionDefinition", - "src": "3951:116:2" + "src": "3951:116:3" }, { "attributes": { @@ -8225,7 +8225,7 @@ null ], "name": "isSpentArray", - "scope": 970, + "scope": 1023, "stateMutability": "view", "superFunction": null, "visibility": "external" @@ -8237,7 +8237,7 @@ "attributes": { "constant": false, "name": "_nullifierHashes", - "scope": 943, + "scope": 996, "stateVariable": false, "storageLocation": "calldata", "type": "bytes32[]", @@ -8256,24 +8256,24 @@ "name": "bytes32", "type": "bytes32" }, - "id": 899, + "id": 952, "name": "ElementaryTypeName", - "src": "4150:7:2" + "src": "4150:7:3" } ], - "id": 900, + "id": 953, "name": "ArrayTypeName", - "src": "4150:9:2" + "src": "4150:9:3" } ], - "id": 901, + "id": 954, "name": "VariableDeclaration", - "src": "4150:35:2" + "src": "4150:35:3" } ], - "id": 902, + "id": 955, "name": "ParameterList", - "src": "4149:37:2" + "src": "4149:37:3" }, { "children": [ @@ -8281,7 +8281,7 @@ "attributes": { "constant": false, "name": "spent", - "scope": 943, + "scope": 996, "stateVariable": false, "storageLocation": "memory", "type": "bool[]", @@ -8300,24 +8300,24 @@ "name": "bool", "type": "bool" }, - "id": 903, + "id": 956, "name": "ElementaryTypeName", - "src": "4209:4:2" + "src": "4209:4:3" } ], - "id": 904, + "id": 957, "name": "ArrayTypeName", - "src": "4209:6:2" + "src": "4209:6:3" } ], - "id": 905, + "id": 958, "name": "VariableDeclaration", - "src": "4209:19:2" + "src": "4209:19:3" } ], - "id": 906, + "id": 959, "name": "ParameterList", - "src": "4208:21:2" + "src": "4208:21:3" }, { "children": [ @@ -8340,13 +8340,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 905, + "referencedDeclaration": 958, "type": "bool[] memory", "value": "spent" }, - "id": 907, + "id": 960, "name": "Identifier", - "src": "4236:5:2" + "src": "4236:5:3" }, { "attributes": { @@ -8389,19 +8389,19 @@ "name": "bool", "type": "bool" }, - "id": 908, + "id": 961, "name": "ElementaryTypeName", - "src": "4248:4:2" + "src": "4248:4:3" } ], - "id": 909, + "id": 962, "name": "ArrayTypeName", - "src": "4248:6:2" + "src": "4248:6:3" } ], - "id": 910, + "id": 963, "name": "NewExpression", - "src": "4244:10:2" + "src": "4244:10:3" }, { "attributes": { @@ -8421,40 +8421,40 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 901, + "referencedDeclaration": 954, "type": "bytes32[] calldata", "value": "_nullifierHashes" }, - "id": 911, + "id": 964, "name": "Identifier", - "src": "4255:16:2" + "src": "4255:16:3" } ], - "id": 912, + "id": 965, "name": "MemberAccess", - "src": "4255:23:2" + "src": "4255:23:3" } ], - "id": 913, + "id": 966, "name": "FunctionCall", - "src": "4244:35:2" + "src": "4244:35:3" } ], - "id": 914, + "id": 967, "name": "Assignment", - "src": "4236:43:2" + "src": "4236:43:3" } ], - "id": 915, + "id": 968, "name": "ExpressionStatement", - "src": "4236:43:2" + "src": "4236:43:3" }, { "children": [ { "attributes": { "assignments": [ - 917 + 970 ] }, "children": [ @@ -8462,7 +8462,7 @@ "attributes": { "constant": false, "name": "i", - "scope": 941, + "scope": 994, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -8475,14 +8475,14 @@ "name": "uint", "type": "uint256" }, - "id": 916, + "id": 969, "name": "ElementaryTypeName", - "src": "4289:4:2" + "src": "4289:4:3" } ], - "id": 917, + "id": 970, "name": "VariableDeclaration", - "src": "4289:6:2" + "src": "4289:6:3" }, { "attributes": { @@ -8497,14 +8497,14 @@ "type": "int_const 0", "value": "0" }, - "id": 918, + "id": 971, "name": "Literal", - "src": "4298:1:2" + "src": "4298:1:3" } ], - "id": 919, + "id": 972, "name": "VariableDeclarationStatement", - "src": "4289:10:2" + "src": "4289:10:3" }, { "attributes": { @@ -8527,13 +8527,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 917, + "referencedDeclaration": 970, "type": "uint256", "value": "i" }, - "id": 920, + "id": 973, "name": "Identifier", - "src": "4301:1:2" + "src": "4301:1:3" }, { "attributes": { @@ -8553,23 +8553,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 901, + "referencedDeclaration": 954, "type": "bytes32[] calldata", "value": "_nullifierHashes" }, - "id": 921, + "id": 974, "name": "Identifier", - "src": "4305:16:2" + "src": "4305:16:3" } ], - "id": 922, + "id": 975, "name": "MemberAccess", - "src": "4305:23:2" + "src": "4305:23:3" } ], - "id": 923, + "id": 976, "name": "BinaryOperation", - "src": "4301:27:2" + "src": "4301:27:3" }, { "children": [ @@ -8591,23 +8591,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 917, + "referencedDeclaration": 970, "type": "uint256", "value": "i" }, - "id": 924, + "id": 977, "name": "Identifier", - "src": "4330:1:2" + "src": "4330:1:3" } ], - "id": 925, + "id": 978, "name": "UnaryOperation", - "src": "4330:3:2" + "src": "4330:3:3" } ], - "id": 926, + "id": 979, "name": "ExpressionStatement", - "src": "4330:3:2" + "src": "4330:3:3" }, { "children": [ @@ -8642,13 +8642,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 898, + "referencedDeclaration": 951, "type": "function (bytes32) view returns (bool)", "value": "isSpent" }, - "id": 927, + "id": 980, "name": "Identifier", - "src": "4347:7:2" + "src": "4347:7:3" }, { "attributes": { @@ -8666,13 +8666,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 901, + "referencedDeclaration": 954, "type": "bytes32[] calldata", "value": "_nullifierHashes" }, - "id": 928, + "id": 981, "name": "Identifier", - "src": "4355:16:2" + "src": "4355:16:3" }, { "attributes": { @@ -8680,23 +8680,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 917, + "referencedDeclaration": 970, "type": "uint256", "value": "i" }, - "id": 929, + "id": 982, "name": "Identifier", - "src": "4372:1:2" + "src": "4372:1:3" } ], - "id": 930, + "id": 983, "name": "IndexAccess", - "src": "4355:19:2" + "src": "4355:19:3" } ], - "id": 931, + "id": 984, "name": "FunctionCall", - "src": "4347:28:2" + "src": "4347:28:3" }, { "children": [ @@ -8729,13 +8729,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 905, + "referencedDeclaration": 958, "type": "bool[] memory", "value": "spent" }, - "id": 932, + "id": 985, "name": "Identifier", - "src": "4387:5:2" + "src": "4387:5:3" }, { "attributes": { @@ -8743,18 +8743,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 917, + "referencedDeclaration": 970, "type": "uint256", "value": "i" }, - "id": 933, + "id": 986, "name": "Identifier", - "src": "4393:1:2" + "src": "4393:1:3" } ], - "id": 934, + "id": 987, "name": "IndexAccess", - "src": "4387:8:2" + "src": "4387:8:3" }, { "attributes": { @@ -8769,49 +8769,49 @@ "type": "bool", "value": "true" }, - "id": 935, + "id": 988, "name": "Literal", - "src": "4398:4:2" + "src": "4398:4:3" } ], - "id": 936, + "id": 989, "name": "Assignment", - "src": "4387:15:2" + "src": "4387:15:3" } ], - "id": 937, + "id": 990, "name": "ExpressionStatement", - "src": "4387:15:2" + "src": "4387:15:3" } ], - "id": 938, + "id": 991, "name": "Block", - "src": "4377:34:2" + "src": "4377:34:3" } ], - "id": 939, + "id": 992, "name": "IfStatement", - "src": "4343:68:2" + "src": "4343:68:3" } ], - "id": 940, + "id": 993, "name": "Block", - "src": "4335:82:2" + "src": "4335:82:3" } ], - "id": 941, + "id": 994, "name": "ForStatement", - "src": "4285:132:2" + "src": "4285:132:3" } ], - "id": 942, + "id": 995, "name": "Block", - "src": "4230:191:2" + "src": "4230:191:3" } ], - "id": 943, + "id": 996, "name": "FunctionDefinition", - "src": "4128:293:2" + "src": "4128:293:3" }, { "attributes": { @@ -8820,7 +8820,7 @@ "isConstructor": false, "kind": "function", "name": "updateVerifier", - "scope": 970, + "scope": 1023, "stateMutability": "nonpayable", "superFunction": null, "visibility": "external" @@ -8832,7 +8832,7 @@ "attributes": { "constant": false, "name": "_newVerifier", - "scope": 957, + "scope": 1010, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -8846,19 +8846,19 @@ "stateMutability": "nonpayable", "type": "address" }, - "id": 944, + "id": 997, "name": "ElementaryTypeName", - "src": "4675:7:2" + "src": "4675:7:3" } ], - "id": 945, + "id": 998, "name": "VariableDeclaration", - "src": "4675:20:2" + "src": "4675:20:3" } ], - "id": 946, + "id": 999, "name": "ParameterList", - "src": "4674:22:2" + "src": "4674:22:3" }, { "attributes": { @@ -8867,9 +8867,9 @@ ] }, "children": [], - "id": 949, + "id": 1002, "name": "ParameterList", - "src": "4719:0:2" + "src": "4719:0:3" }, { "attributes": { @@ -8882,18 +8882,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 686, + "referencedDeclaration": 739, "type": "modifier ()", "value": "onlyOperator" }, - "id": 947, + "id": 1000, "name": "Identifier", - "src": "4706:12:2" + "src": "4706:12:3" } ], - "id": 948, + "id": 1001, "name": "ModifierInvocation", - "src": "4706:12:2" + "src": "4706:12:3" }, { "children": [ @@ -8916,13 +8916,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 670, + "referencedDeclaration": 723, "type": "contract IVerifier", "value": "verifier" }, - "id": 950, + "id": 1003, "name": "Identifier", - "src": "4725:8:2" + "src": "4725:8:3" }, { "attributes": { @@ -8950,13 +8950,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 648, + "referencedDeclaration": 701, "type": "type(contract IVerifier)", "value": "IVerifier" }, - "id": 951, + "id": 1004, "name": "Identifier", - "src": "4736:9:2" + "src": "4736:9:3" }, { "attributes": { @@ -8964,38 +8964,38 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 945, + "referencedDeclaration": 998, "type": "address", "value": "_newVerifier" }, - "id": 952, + "id": 1005, "name": "Identifier", - "src": "4746:12:2" + "src": "4746:12:3" } ], - "id": 953, + "id": 1006, "name": "FunctionCall", - "src": "4736:23:2" + "src": "4736:23:3" } ], - "id": 954, + "id": 1007, "name": "Assignment", - "src": "4725:34:2" + "src": "4725:34:3" } ], - "id": 955, + "id": 1008, "name": "ExpressionStatement", - "src": "4725:34:2" + "src": "4725:34:3" } ], - "id": 956, + "id": 1009, "name": "Block", - "src": "4719:45:2" + "src": "4719:45:3" } ], - "id": 957, + "id": 1010, "name": "FunctionDefinition", - "src": "4651:113:2" + "src": "4651:113:3" }, { "attributes": { @@ -9004,7 +9004,7 @@ "isConstructor": false, "kind": "function", "name": "changeOperator", - "scope": 970, + "scope": 1023, "stateMutability": "nonpayable", "superFunction": null, "visibility": "external" @@ -9016,7 +9016,7 @@ "attributes": { "constant": false, "name": "_newOperator", - "scope": 969, + "scope": 1022, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -9030,19 +9030,19 @@ "stateMutability": "nonpayable", "type": "address" }, - "id": 958, + "id": 1011, "name": "ElementaryTypeName", - "src": "4838:7:2" + "src": "4838:7:3" } ], - "id": 959, + "id": 1012, "name": "VariableDeclaration", - "src": "4838:20:2" + "src": "4838:20:3" } ], - "id": 960, + "id": 1013, "name": "ParameterList", - "src": "4837:22:2" + "src": "4837:22:3" }, { "attributes": { @@ -9051,9 +9051,9 @@ ] }, "children": [], - "id": 963, + "id": 1016, "name": "ParameterList", - "src": "4882:0:2" + "src": "4882:0:3" }, { "attributes": { @@ -9066,18 +9066,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 686, + "referencedDeclaration": 739, "type": "modifier ()", "value": "onlyOperator" }, - "id": 961, + "id": 1014, "name": "Identifier", - "src": "4869:12:2" + "src": "4869:12:3" } ], - "id": 962, + "id": 1015, "name": "ModifierInvocation", - "src": "4869:12:2" + "src": "4869:12:3" }, { "children": [ @@ -9100,13 +9100,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 674, + "referencedDeclaration": 727, "type": "address", "value": "operator" }, - "id": 964, + "id": 1017, "name": "Identifier", - "src": "4888:8:2" + "src": "4888:8:3" }, { "attributes": { @@ -9114,43 +9114,43 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 959, + "referencedDeclaration": 1012, "type": "address", "value": "_newOperator" }, - "id": 965, + "id": 1018, "name": "Identifier", - "src": "4899:12:2" + "src": "4899:12:3" } ], - "id": 966, + "id": 1019, "name": "Assignment", - "src": "4888:23:2" + "src": "4888:23:3" } ], - "id": 967, + "id": 1020, "name": "ExpressionStatement", - "src": "4888:23:2" + "src": "4888:23:3" } ], - "id": 968, + "id": 1021, "name": "Block", - "src": "4882:34:2" + "src": "4882:34:3" } ], - "id": 969, + "id": 1022, "name": "FunctionDefinition", - "src": "4814:102:2" + "src": "4814:102:3" } ], - "id": 970, + "id": 1023, "name": "ContractDefinition", - "src": "318:4600:2" + "src": "318:4600:3" } ], - "id": 971, + "id": 1024, "name": "SourceUnit", - "src": "0:4919:2" + "src": "0:4919:3" }, "compiler": { "name": "solc", @@ -9158,7 +9158,7 @@ }, "networks": {}, "schemaVersion": "3.3.4", - "updatedAt": "2021-04-02T22:21:29.527Z", + "updatedAt": "2021-04-02T22:52:06.027Z", "devdoc": { "methods": {} }, diff --git a/client/contracts/IVerifier.json b/client/contracts/IVerifier.json index a93acee..3fca8e6 100644 --- a/client/contracts/IVerifier.json +++ b/client/contracts/IVerifier.json @@ -39,47 +39,47 @@ "absolutePath": "/Users/brianli/dotfiles/tornado-core/contracts/Tornado.sol", "exportedSymbols": { "IFeeManager": [ - 654 + 707 ], "IVerifier": [ - 648 + 701 ], "Tornado": [ - 970 + 1023 ] }, - "id": 971, + "id": 1024, "nodeType": "SourceUnit", "nodes": [ { - "id": 634, + "id": 687, "literals": [ "solidity", "0.5", ".17" ], "nodeType": "PragmaDirective", - "src": "0:23:2" + "src": "0:23:3" }, { "absolutePath": "/Users/brianli/dotfiles/tornado-core/contracts/MerkleTreeWithHistory.sol", "file": "./MerkleTreeWithHistory.sol", - "id": 635, + "id": 688, "nodeType": "ImportDirective", - "scope": 971, - "sourceUnit": 633, - "src": "25:37:2", + "scope": 1024, + "sourceUnit": 686, + "src": "25:37:3", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "@openzeppelin/contracts/utils/ReentrancyGuard.sol", "file": "@openzeppelin/contracts/utils/ReentrancyGuard.sol", - "id": 636, + "id": 689, "nodeType": "ImportDirective", - "scope": 971, - "sourceUnit": 1001, - "src": "63:59:2", + "scope": 1024, + "sourceUnit": 1054, + "src": "63:59:3", "symbolAliases": [], "unitAlias": "" }, @@ -89,9 +89,9 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": false, - "id": 648, + "id": 701, "linearizedBaseContracts": [ - 648 + 701 ], "name": "IVerifier", "nodeType": "ContractDefinition", @@ -99,23 +99,23 @@ { "body": null, "documentation": null, - "id": 647, + "id": 700, "implemented": false, "kind": "function", "modifiers": [], "name": "verifyProof", "nodeType": "FunctionDefinition", "parameters": { - "id": 643, + "id": 696, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 638, + "id": 691, "name": "_proof", "nodeType": "VariableDeclaration", - "scope": 647, - "src": "168:19:2", + "scope": 700, + "src": "168:19:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -123,10 +123,10 @@ "typeString": "bytes" }, "typeName": { - "id": 637, + "id": 690, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "168:5:2", + "src": "168:5:3", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -137,11 +137,11 @@ }, { "constant": false, - "id": 642, + "id": 695, "name": "_input", "nodeType": "VariableDeclaration", - "scope": 647, - "src": "189:24:2", + "scope": 700, + "src": "189:24:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -150,27 +150,27 @@ }, "typeName": { "baseType": { - "id": 639, + "id": 692, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "189:7:2", + "src": "189:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 641, + "id": 694, "length": { "argumentTypes": null, "hexValue": "36", - "id": 640, + "id": 693, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "197:1:2", + "src": "197:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_6_by_1", @@ -179,7 +179,7 @@ "value": "6" }, "nodeType": "ArrayTypeName", - "src": "189:10:2", + "src": "189:10:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_storage_ptr", "typeString": "uint256[6]" @@ -189,19 +189,19 @@ "visibility": "internal" } ], - "src": "167:47:2" + "src": "167:47:3" }, "returnParameters": { - "id": 646, + "id": 699, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 645, + "id": 698, "name": "", "nodeType": "VariableDeclaration", - "scope": 647, - "src": "230:4:2", + "scope": 700, + "src": "230:4:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -209,10 +209,10 @@ "typeString": "bool" }, "typeName": { - "id": 644, + "id": 697, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "230:4:2", + "src": "230:4:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -222,17 +222,17 @@ "visibility": "internal" } ], - "src": "229:6:2" + "src": "229:6:3" }, - "scope": 648, - "src": "147:89:2", + "scope": 701, + "src": "147:89:3", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 971, - "src": "124:114:2" + "scope": 1024, + "src": "124:114:3" }, { "baseContracts": [], @@ -240,9 +240,9 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": false, - "id": 654, + "id": 707, "linearizedBaseContracts": [ - 654 + 707 ], "name": "IFeeManager", "nodeType": "ContractDefinition", @@ -250,29 +250,29 @@ { "body": null, "documentation": null, - "id": 653, + "id": 706, "implemented": false, "kind": "function", "modifiers": [], "name": "feeTo", "nodeType": "FunctionDefinition", "parameters": { - "id": 649, + "id": 702, "nodeType": "ParameterList", "parameters": [], - "src": "279:2:2" + "src": "279:2:3" }, "returnParameters": { - "id": 652, + "id": 705, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 651, + "id": 704, "name": "", "nodeType": "VariableDeclaration", - "scope": 653, - "src": "305:7:2", + "scope": 706, + "src": "305:7:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -280,10 +280,10 @@ "typeString": "address" }, "typeName": { - "id": 650, + "id": 703, "name": "address", "nodeType": "ElementaryTypeName", - "src": "305:7:2", + "src": "305:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -294,17 +294,17 @@ "visibility": "internal" } ], - "src": "304:9:2" + "src": "304:9:3" }, - "scope": 654, - "src": "265:49:2", + "scope": 707, + "src": "265:49:3", "stateMutability": "view", "superFunction": null, "visibility": "external" } ], - "scope": 971, - "src": "240:76:2" + "scope": 1024, + "src": "240:76:3" }, { "baseContracts": [ @@ -312,62 +312,62 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 655, + "id": 708, "name": "MerkleTreeWithHistory", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 632, - "src": "338:21:2", + "referencedDeclaration": 685, + "src": "338:21:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_MerkleTreeWithHistory_$632", + "typeIdentifier": "t_contract$_MerkleTreeWithHistory_$685", "typeString": "contract MerkleTreeWithHistory" } }, - "id": 656, + "id": 709, "nodeType": "InheritanceSpecifier", - "src": "338:21:2" + "src": "338:21:3" }, { "arguments": null, "baseName": { "contractScope": null, - "id": 657, + "id": 710, "name": "ReentrancyGuard", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1000, - "src": "361:15:2", + "referencedDeclaration": 1053, + "src": "361:15:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_ReentrancyGuard_$1000", + "typeIdentifier": "t_contract$_ReentrancyGuard_$1053", "typeString": "contract ReentrancyGuard" } }, - "id": 658, + "id": 711, "nodeType": "InheritanceSpecifier", - "src": "361:15:2" + "src": "361:15:3" } ], "contractDependencies": [ - 632, - 1000 + 685, + 1053 ], "contractKind": "contract", "documentation": null, "fullyImplemented": false, - "id": 970, + "id": 1023, "linearizedBaseContracts": [ - 970, - 1000, - 632 + 1023, + 1053, + 685 ], "name": "Tornado", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 660, + "id": 713, "name": "denomination", "nodeType": "VariableDeclaration", - "scope": 970, - "src": "381:27:2", + "scope": 1023, + "src": "381:27:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -375,10 +375,10 @@ "typeString": "uint256" }, "typeName": { - "id": 659, + "id": 712, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "381:7:2", + "src": "381:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -389,11 +389,11 @@ }, { "constant": false, - "id": 664, + "id": 717, "name": "nullifierHashes", "nodeType": "VariableDeclaration", - "scope": 970, - "src": "412:47:2", + "scope": 1023, + "src": "412:47:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -401,28 +401,28 @@ "typeString": "mapping(bytes32 => bool)" }, "typeName": { - "id": 663, + "id": 716, "keyType": { - "id": 661, + "id": 714, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "420:7:2", + "src": "420:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", - "src": "412:24:2", + "src": "412:24:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" }, "valueType": { - "id": 662, + "id": 715, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "431:4:2", + "src": "431:4:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -434,11 +434,11 @@ }, { "constant": false, - "id": 668, + "id": 721, "name": "commitments", "nodeType": "VariableDeclaration", - "scope": 970, - "src": "554:43:2", + "scope": 1023, + "src": "554:43:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -446,28 +446,28 @@ "typeString": "mapping(bytes32 => bool)" }, "typeName": { - "id": 667, + "id": 720, "keyType": { - "id": 665, + "id": 718, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "562:7:2", + "src": "562:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", - "src": "554:24:2", + "src": "554:24:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" }, "valueType": { - "id": 666, + "id": 719, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "573:4:2", + "src": "573:4:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -479,26 +479,26 @@ }, { "constant": false, - "id": 670, + "id": 723, "name": "verifier", "nodeType": "VariableDeclaration", - "scope": 970, - "src": "601:25:2", + "scope": 1023, + "src": "601:25:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IVerifier_$648", + "typeIdentifier": "t_contract$_IVerifier_$701", "typeString": "contract IVerifier" }, "typeName": { "contractScope": null, - "id": 669, + "id": 722, "name": "IVerifier", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 648, - "src": "601:9:2", + "referencedDeclaration": 701, + "src": "601:9:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IVerifier_$648", + "typeIdentifier": "t_contract$_IVerifier_$701", "typeString": "contract IVerifier" } }, @@ -507,26 +507,26 @@ }, { "constant": false, - "id": 672, + "id": 725, "name": "feeManager", "nodeType": "VariableDeclaration", - "scope": 970, - "src": "630:29:2", + "scope": 1023, + "src": "630:29:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IFeeManager_$654", + "typeIdentifier": "t_contract$_IFeeManager_$707", "typeString": "contract IFeeManager" }, "typeName": { "contractScope": null, - "id": 671, + "id": 724, "name": "IFeeManager", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 654, - "src": "630:11:2", + "referencedDeclaration": 707, + "src": "630:11:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IFeeManager_$654", + "typeIdentifier": "t_contract$_IFeeManager_$707", "typeString": "contract IFeeManager" } }, @@ -535,11 +535,11 @@ }, { "constant": false, - "id": 674, + "id": 727, "name": "operator", "nodeType": "VariableDeclaration", - "scope": 970, - "src": "819:23:2", + "scope": 1023, + "src": "819:23:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -547,10 +547,10 @@ "typeString": "address" }, "typeName": { - "id": 673, + "id": 726, "name": "address", "nodeType": "ElementaryTypeName", - "src": "819:7:2", + "src": "819:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -562,9 +562,9 @@ }, { "body": { - "id": 685, + "id": 738, "nodeType": "Block", - "src": "868:90:2", + "src": "868:90:3", "statements": [ { "expression": { @@ -576,7 +576,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 680, + "id": 733, "isConstant": false, "isLValue": false, "isPure": false, @@ -585,18 +585,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 677, + "id": 730, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1015, - "src": "882:3:2", + "referencedDeclaration": 1068, + "src": "882:3:3", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 678, + "id": 731, "isConstant": false, "isLValue": false, "isPure": false, @@ -604,7 +604,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "882:10:2", + "src": "882:10:3", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -614,18 +614,18 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 679, + "id": 732, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 674, - "src": "896:8:2", + "referencedDeclaration": 727, + "src": "896:8:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "882:22:2", + "src": "882:22:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -634,14 +634,14 @@ { "argumentTypes": null, "hexValue": "4f6e6c79206f70657261746f722063616e2063616c6c20746869732066756e6374696f6e2e", - "id": 681, + "id": 734, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "906:39:2", + "src": "906:39:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_e8393660073679be7a6133571fe2ca8983a31a683c72e9055f401ac33a2efffc", @@ -661,21 +661,21 @@ "typeString": "literal_string \"Only operator can call this function.\"" } ], - "id": 676, + "id": 729, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1018, - 1019 + 1071, + 1072 ], - "referencedDeclaration": 1019, - "src": "874:7:2", + "referencedDeclaration": 1072, + "src": "874:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 682, + "id": 735, "isConstant": false, "isLValue": false, "isPure": false, @@ -683,54 +683,54 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "874:72:2", + "src": "874:72:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 683, + "id": 736, "nodeType": "ExpressionStatement", - "src": "874:72:2" + "src": "874:72:3" }, { - "id": 684, + "id": 737, "nodeType": "PlaceholderStatement", - "src": "952:1:2" + "src": "952:1:3" } ] }, "documentation": null, - "id": 686, + "id": 739, "name": "onlyOperator", "nodeType": "ModifierDefinition", "parameters": { - "id": 675, + "id": 728, "nodeType": "ParameterList", "parameters": [], - "src": "868:0:2" + "src": "868:0:3" }, - "src": "846:112:2", + "src": "846:112:3", "visibility": "internal" }, { "anonymous": false, "documentation": null, - "id": 694, + "id": 747, "name": "Deposit", "nodeType": "EventDefinition", "parameters": { - "id": 693, + "id": 746, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 688, + "id": 741, "indexed": true, "name": "commitment", "nodeType": "VariableDeclaration", - "scope": 694, - "src": "976:26:2", + "scope": 747, + "src": "976:26:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -738,10 +738,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 687, + "id": 740, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "976:7:2", + "src": "976:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -752,12 +752,12 @@ }, { "constant": false, - "id": 690, + "id": 743, "indexed": false, "name": "leafIndex", "nodeType": "VariableDeclaration", - "scope": 694, - "src": "1004:16:2", + "scope": 747, + "src": "1004:16:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -765,10 +765,10 @@ "typeString": "uint32" }, "typeName": { - "id": 689, + "id": 742, "name": "uint32", "nodeType": "ElementaryTypeName", - "src": "1004:6:2", + "src": "1004:6:3", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -779,12 +779,12 @@ }, { "constant": false, - "id": 692, + "id": 745, "indexed": false, "name": "timestamp", "nodeType": "VariableDeclaration", - "scope": 694, - "src": "1022:17:2", + "scope": 747, + "src": "1022:17:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -792,10 +792,10 @@ "typeString": "uint256" }, "typeName": { - "id": 691, + "id": 744, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1022:7:2", + "src": "1022:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -805,28 +805,28 @@ "visibility": "internal" } ], - "src": "975:65:2" + "src": "975:65:3" }, - "src": "962:79:2" + "src": "962:79:3" }, { "anonymous": false, "documentation": null, - "id": 704, + "id": 757, "name": "Withdrawal", "nodeType": "EventDefinition", "parameters": { - "id": 703, + "id": 756, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 696, + "id": 749, "indexed": false, "name": "to", "nodeType": "VariableDeclaration", - "scope": 704, - "src": "1061:10:2", + "scope": 757, + "src": "1061:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -834,10 +834,10 @@ "typeString": "address" }, "typeName": { - "id": 695, + "id": 748, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1061:7:2", + "src": "1061:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -849,12 +849,12 @@ }, { "constant": false, - "id": 698, + "id": 751, "indexed": false, "name": "nullifierHash", "nodeType": "VariableDeclaration", - "scope": 704, - "src": "1073:21:2", + "scope": 757, + "src": "1073:21:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -862,10 +862,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 697, + "id": 750, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1073:7:2", + "src": "1073:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -876,12 +876,12 @@ }, { "constant": false, - "id": 700, + "id": 753, "indexed": true, "name": "relayer", "nodeType": "VariableDeclaration", - "scope": 704, - "src": "1096:23:2", + "scope": 757, + "src": "1096:23:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -889,10 +889,10 @@ "typeString": "address" }, "typeName": { - "id": 699, + "id": 752, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1096:7:2", + "src": "1096:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -904,12 +904,12 @@ }, { "constant": false, - "id": 702, + "id": 755, "indexed": false, "name": "fee", "nodeType": "VariableDeclaration", - "scope": 704, - "src": "1121:11:2", + "scope": 757, + "src": "1121:11:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -917,10 +917,10 @@ "typeString": "uint256" }, "typeName": { - "id": 701, + "id": 754, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1121:7:2", + "src": "1121:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -930,15 +930,15 @@ "visibility": "internal" } ], - "src": "1060:73:2" + "src": "1060:73:3" }, - "src": "1044:90:2" + "src": "1044:90:3" }, { "body": { - "id": 743, + "id": 796, "nodeType": "Block", - "src": "1631:194:2", + "src": "1631:194:3", "statements": [ { "expression": { @@ -950,19 +950,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 723, + "id": 776, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 721, + "id": 774, "name": "_denomination", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 710, - "src": "1645:13:2", + "referencedDeclaration": 763, + "src": "1645:13:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -973,14 +973,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 722, + "id": 775, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1661:1:2", + "src": "1661:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -988,7 +988,7 @@ }, "value": "0" }, - "src": "1645:17:2", + "src": "1645:17:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -997,14 +997,14 @@ { "argumentTypes": null, "hexValue": "64656e6f6d696e6174696f6e2073686f756c642062652067726561746572207468616e2030", - "id": 724, + "id": 777, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1664:39:2", + "src": "1664:39:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_04818fb803bf7e7ff6c9059d97eae335b77b108931ead0a529924d35ccaf3fc8", @@ -1024,21 +1024,21 @@ "typeString": "literal_string \"denomination should be greater than 0\"" } ], - "id": 720, + "id": 773, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1018, - 1019 + 1071, + 1072 ], - "referencedDeclaration": 1019, - "src": "1637:7:2", + "referencedDeclaration": 1072, + "src": "1637:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 725, + "id": 778, "isConstant": false, "isLValue": false, "isPure": false, @@ -1046,34 +1046,34 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1637:67:2", + "src": "1637:67:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 726, + "id": 779, "nodeType": "ExpressionStatement", - "src": "1637:67:2" + "src": "1637:67:3" }, { "expression": { "argumentTypes": null, - "id": 729, + "id": 782, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 727, + "id": 780, "name": "verifier", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 670, - "src": "1710:8:2", + "referencedDeclaration": 723, + "src": "1710:8:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IVerifier_$648", + "typeIdentifier": "t_contract$_IVerifier_$701", "typeString": "contract IVerifier" } }, @@ -1081,45 +1081,45 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 728, + "id": 781, "name": "_verifier", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 706, - "src": "1721:9:2", + "referencedDeclaration": 759, + "src": "1721:9:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IVerifier_$648", + "typeIdentifier": "t_contract$_IVerifier_$701", "typeString": "contract IVerifier" } }, - "src": "1710:20:2", + "src": "1710:20:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IVerifier_$648", + "typeIdentifier": "t_contract$_IVerifier_$701", "typeString": "contract IVerifier" } }, - "id": 730, + "id": 783, "nodeType": "ExpressionStatement", - "src": "1710:20:2" + "src": "1710:20:3" }, { "expression": { "argumentTypes": null, - "id": 733, + "id": 786, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 731, + "id": 784, "name": "feeManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 672, - "src": "1736:10:2", + "referencedDeclaration": 725, + "src": "1736:10:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IFeeManager_$654", + "typeIdentifier": "t_contract$_IFeeManager_$707", "typeString": "contract IFeeManager" } }, @@ -1127,43 +1127,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 732, + "id": 785, "name": "_feeManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 708, - "src": "1749:11:2", + "referencedDeclaration": 761, + "src": "1749:11:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IFeeManager_$654", + "typeIdentifier": "t_contract$_IFeeManager_$707", "typeString": "contract IFeeManager" } }, - "src": "1736:24:2", + "src": "1736:24:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IFeeManager_$654", + "typeIdentifier": "t_contract$_IFeeManager_$707", "typeString": "contract IFeeManager" } }, - "id": 734, + "id": 787, "nodeType": "ExpressionStatement", - "src": "1736:24:2" + "src": "1736:24:3" }, { "expression": { "argumentTypes": null, - "id": 737, + "id": 790, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 735, + "id": 788, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 674, - "src": "1766:8:2", + "referencedDeclaration": 727, + "src": "1766:8:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1173,43 +1173,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 736, + "id": 789, "name": "_operator", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 714, - "src": "1777:9:2", + "referencedDeclaration": 767, + "src": "1777:9:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1766:20:2", + "src": "1766:20:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 738, + "id": 791, "nodeType": "ExpressionStatement", - "src": "1766:20:2" + "src": "1766:20:3" }, { "expression": { "argumentTypes": null, - "id": 741, + "id": 794, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 739, + "id": 792, "name": "denomination", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 660, - "src": "1792:12:2", + "referencedDeclaration": 713, + "src": "1792:12:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1219,31 +1219,31 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 740, + "id": 793, "name": "_denomination", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 710, - "src": "1807:13:2", + "referencedDeclaration": 763, + "src": "1807:13:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1792:28:2", + "src": "1792:28:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 742, + "id": 795, "nodeType": "ExpressionStatement", - "src": "1792:28:2" + "src": "1792:28:3" } ] }, "documentation": "@dev The constructor\n@param _verifier the address of SNARK verifier for this contract\n@param _denomination transfer amount for each deposit\n@param _merkleTreeHeight the height of deposits' Merkle Tree\n@param _operator operator address (see operator comment above)", - "id": 744, + "id": 797, "implemented": true, "kind": "constructor", "modifiers": [ @@ -1251,64 +1251,64 @@ "arguments": [ { "argumentTypes": null, - "id": 717, + "id": 770, "name": "_merkleTreeHeight", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 712, - "src": "1605:17:2", + "referencedDeclaration": 765, + "src": "1605:17:3", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } } ], - "id": 718, + "id": 771, "modifierName": { "argumentTypes": null, - "id": 716, + "id": 769, "name": "MerkleTreeWithHistory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 632, - "src": "1583:21:2", + "referencedDeclaration": 685, + "src": "1583:21:3", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_MerkleTreeWithHistory_$632_$", + "typeIdentifier": "t_type$_t_contract$_MerkleTreeWithHistory_$685_$", "typeString": "type(contract MerkleTreeWithHistory)" } }, "nodeType": "ModifierInvocation", - "src": "1583:40:2" + "src": "1583:40:3" } ], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 715, + "id": 768, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 706, + "id": 759, "name": "_verifier", "nodeType": "VariableDeclaration", - "scope": 744, - "src": "1450:19:2", + "scope": 797, + "src": "1450:19:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IVerifier_$648", + "typeIdentifier": "t_contract$_IVerifier_$701", "typeString": "contract IVerifier" }, "typeName": { "contractScope": null, - "id": 705, + "id": 758, "name": "IVerifier", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 648, - "src": "1450:9:2", + "referencedDeclaration": 701, + "src": "1450:9:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IVerifier_$648", + "typeIdentifier": "t_contract$_IVerifier_$701", "typeString": "contract IVerifier" } }, @@ -1317,26 +1317,26 @@ }, { "constant": false, - "id": 708, + "id": 761, "name": "_feeManager", "nodeType": "VariableDeclaration", - "scope": 744, - "src": "1475:23:2", + "scope": 797, + "src": "1475:23:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IFeeManager_$654", + "typeIdentifier": "t_contract$_IFeeManager_$707", "typeString": "contract IFeeManager" }, "typeName": { "contractScope": null, - "id": 707, + "id": 760, "name": "IFeeManager", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 654, - "src": "1475:11:2", + "referencedDeclaration": 707, + "src": "1475:11:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IFeeManager_$654", + "typeIdentifier": "t_contract$_IFeeManager_$707", "typeString": "contract IFeeManager" } }, @@ -1345,11 +1345,11 @@ }, { "constant": false, - "id": 710, + "id": 763, "name": "_denomination", "nodeType": "VariableDeclaration", - "scope": 744, - "src": "1504:21:2", + "scope": 797, + "src": "1504:21:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1357,10 +1357,10 @@ "typeString": "uint256" }, "typeName": { - "id": 709, + "id": 762, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1504:7:2", + "src": "1504:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1371,11 +1371,11 @@ }, { "constant": false, - "id": 712, + "id": 765, "name": "_merkleTreeHeight", "nodeType": "VariableDeclaration", - "scope": 744, - "src": "1531:24:2", + "scope": 797, + "src": "1531:24:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1383,10 +1383,10 @@ "typeString": "uint32" }, "typeName": { - "id": 711, + "id": 764, "name": "uint32", "nodeType": "ElementaryTypeName", - "src": "1531:6:2", + "src": "1531:6:3", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -1397,11 +1397,11 @@ }, { "constant": false, - "id": 714, + "id": 767, "name": "_operator", "nodeType": "VariableDeclaration", - "scope": 744, - "src": "1561:17:2", + "scope": 797, + "src": "1561:17:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1409,10 +1409,10 @@ "typeString": "address" }, "typeName": { - "id": 713, + "id": 766, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1561:7:2", + "src": "1561:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1423,25 +1423,25 @@ "visibility": "internal" } ], - "src": "1444:138:2" + "src": "1444:138:3" }, "returnParameters": { - "id": 719, + "id": 772, "nodeType": "ParameterList", "parameters": [], - "src": "1631:0:2" + "src": "1631:0:3" }, - "scope": 970, - "src": "1433:392:2", + "scope": 1023, + "src": "1433:392:3", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 781, + "id": 834, "nodeType": "Block", - "src": "2141:256:2", + "src": "2141:256:3", "statements": [ { "expression": { @@ -1449,7 +1449,7 @@ "arguments": [ { "argumentTypes": null, - "id": 755, + "id": 808, "isConstant": false, "isLValue": false, "isPure": false, @@ -1457,31 +1457,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "2155:25:2", + "src": "2155:25:3", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 752, + "id": 805, "name": "commitments", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 668, - "src": "2156:11:2", + "referencedDeclaration": 721, + "src": "2156:11:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 754, + "id": 807, "indexExpression": { "argumentTypes": null, - "id": 753, + "id": 806, "name": "_commitment", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 746, - "src": "2168:11:2", + "referencedDeclaration": 799, + "src": "2168:11:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1492,7 +1492,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2156:24:2", + "src": "2156:24:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1506,14 +1506,14 @@ { "argumentTypes": null, "hexValue": "54686520636f6d6d69746d656e7420686173206265656e207375626d6974746564", - "id": 756, + "id": 809, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2182:35:2", + "src": "2182:35:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae5f231636554c1cb3bf839359e4dfbb338ccb221c7c5dbdf2da91ddc6e2ee6b", @@ -1533,21 +1533,21 @@ "typeString": "literal_string \"The commitment has been submitted\"" } ], - "id": 751, + "id": 804, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1018, - 1019 + 1071, + 1072 ], - "referencedDeclaration": 1019, - "src": "2147:7:2", + "referencedDeclaration": 1072, + "src": "2147:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 757, + "id": 810, "isConstant": false, "isLValue": false, "isPure": false, @@ -1555,28 +1555,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2147:71:2", + "src": "2147:71:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 758, + "id": 811, "nodeType": "ExpressionStatement", - "src": "2147:71:2" + "src": "2147:71:3" }, { "assignments": [ - 760 + 813 ], "declarations": [ { "constant": false, - "id": 760, + "id": 813, "name": "insertedIndex", "nodeType": "VariableDeclaration", - "scope": 781, - "src": "2225:20:2", + "scope": 834, + "src": "2225:20:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1584,10 +1584,10 @@ "typeString": "uint32" }, "typeName": { - "id": 759, + "id": 812, "name": "uint32", "nodeType": "ElementaryTypeName", - "src": "2225:6:2", + "src": "2225:6:3", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -1597,18 +1597,18 @@ "visibility": "internal" } ], - "id": 764, + "id": 817, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 762, + "id": 815, "name": "_commitment", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 746, - "src": "2256:11:2", + "referencedDeclaration": 799, + "src": "2256:11:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1622,18 +1622,18 @@ "typeString": "bytes32" } ], - "id": 761, + "id": 814, "name": "_insert", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 574, - "src": "2248:7:2", + "referencedDeclaration": 627, + "src": "2248:7:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$_t_uint32_$", "typeString": "function (bytes32) returns (uint32)" } }, - "id": 763, + "id": 816, "isConstant": false, "isLValue": false, "isPure": false, @@ -1641,19 +1641,19 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2248:20:2", + "src": "2248:20:3", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "VariableDeclarationStatement", - "src": "2225:43:2" + "src": "2225:43:3" }, { "expression": { "argumentTypes": null, - "id": 769, + "id": 822, "isConstant": false, "isLValue": false, "isPure": false, @@ -1662,26 +1662,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 765, + "id": 818, "name": "commitments", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 668, - "src": "2274:11:2", + "referencedDeclaration": 721, + "src": "2274:11:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 767, + "id": 820, "indexExpression": { "argumentTypes": null, - "id": 766, + "id": 819, "name": "_commitment", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 746, - "src": "2286:11:2", + "referencedDeclaration": 799, + "src": "2286:11:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1692,7 +1692,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2274:24:2", + "src": "2274:24:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1703,14 +1703,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 768, + "id": 821, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "2301:4:2", + "src": "2301:4:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -1718,15 +1718,15 @@ }, "value": "true" }, - "src": "2274:31:2", + "src": "2274:31:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 770, + "id": 823, "nodeType": "ExpressionStatement", - "src": "2274:31:2" + "src": "2274:31:3" }, { "expression": { @@ -1734,18 +1734,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 771, + "id": 824, "name": "_processDeposit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 785, - "src": "2311:15:2", + "referencedDeclaration": 838, + "src": "2311:15:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 772, + "id": 825, "isConstant": false, "isLValue": false, "isPure": false, @@ -1753,15 +1753,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2311:17:2", + "src": "2311:17:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 773, + "id": 826, "nodeType": "ExpressionStatement", - "src": "2311:17:2" + "src": "2311:17:3" }, { "eventCall": { @@ -1769,12 +1769,12 @@ "arguments": [ { "argumentTypes": null, - "id": 775, + "id": 828, "name": "_commitment", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 746, - "src": "2348:11:2", + "referencedDeclaration": 799, + "src": "2348:11:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1782,12 +1782,12 @@ }, { "argumentTypes": null, - "id": 776, + "id": 829, "name": "insertedIndex", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 760, - "src": "2361:13:2", + "referencedDeclaration": 813, + "src": "2361:13:3", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -1797,18 +1797,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 777, + "id": 830, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1005, - "src": "2376:5:2", + "referencedDeclaration": 1058, + "src": "2376:5:3", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, - "id": 778, + "id": 831, "isConstant": false, "isLValue": false, "isPure": false, @@ -1816,7 +1816,7 @@ "memberName": "timestamp", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2376:15:2", + "src": "2376:15:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1838,18 +1838,18 @@ "typeString": "uint256" } ], - "id": 774, + "id": 827, "name": "Deposit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 694, - "src": "2340:7:2", + "referencedDeclaration": 747, + "src": "2340:7:3", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint32_$_t_uint256_$returns$__$", "typeString": "function (bytes32,uint32,uint256)" } }, - "id": 779, + "id": 832, "isConstant": false, "isLValue": false, "isPure": false, @@ -1857,56 +1857,56 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2340:52:2", + "src": "2340:52:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 780, + "id": 833, "nodeType": "EmitStatement", - "src": "2335:57:2" + "src": "2335:57:3" } ] }, "documentation": "@dev Deposit funds into the contract. The caller must send (for ETH) or approve (for ERC20) value equal to or `denomination` of this instance.\n@param _commitment the note commitment, which is PedersenHash(nullifier + secret)", - "id": 782, + "id": 835, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, - "id": 749, + "id": 802, "modifierName": { "argumentTypes": null, - "id": 748, + "id": 801, "name": "nonReentrant", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 999, - "src": "2128:12:2", + "referencedDeclaration": 1052, + "src": "2128:12:3", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2128:12:2" + "src": "2128:12:3" } ], "name": "deposit", "nodeType": "FunctionDefinition", "parameters": { - "id": 747, + "id": 800, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 746, + "id": 799, "name": "_commitment", "nodeType": "VariableDeclaration", - "scope": 782, - "src": "2090:19:2", + "scope": 835, + "src": "2090:19:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1914,10 +1914,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 745, + "id": 798, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2090:7:2", + "src": "2090:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1927,16 +1927,16 @@ "visibility": "internal" } ], - "src": "2089:21:2" + "src": "2089:21:3" }, "returnParameters": { - "id": 750, + "id": 803, "nodeType": "ParameterList", "parameters": [], - "src": "2141:0:2" + "src": "2141:0:3" }, - "scope": 970, - "src": "2073:324:2", + "scope": 1023, + "src": "2073:324:3", "stateMutability": "payable", "superFunction": null, "visibility": "external" @@ -1944,35 +1944,35 @@ { "body": null, "documentation": "@dev this function is defined in a child contract ", - "id": 785, + "id": 838, "implemented": false, "kind": "function", "modifiers": [], "name": "_processDeposit", "nodeType": "FunctionDefinition", "parameters": { - "id": 783, + "id": 836, "nodeType": "ParameterList", "parameters": [], - "src": "2484:2:2" + "src": "2484:2:3" }, "returnParameters": { - "id": 784, + "id": 837, "nodeType": "ParameterList", "parameters": [], - "src": "2495:0:2" + "src": "2495:0:3" }, - "scope": 970, - "src": "2460:36:2", + "scope": 1023, + "src": "2460:36:3", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 872, + "id": 925, "nodeType": "Block", - "src": "3088:606:2", + "src": "3088:606:3", "statements": [ { "expression": { @@ -1984,19 +1984,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 807, + "id": 860, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 805, + "id": 858, "name": "_fee", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 797, - "src": "3102:4:2", + "referencedDeclaration": 850, + "src": "3102:4:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2006,18 +2006,18 @@ "operator": "<=", "rightExpression": { "argumentTypes": null, - "id": 806, + "id": 859, "name": "denomination", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 660, - "src": "3110:12:2", + "referencedDeclaration": 713, + "src": "3110:12:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3102:20:2", + "src": "3102:20:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2026,14 +2026,14 @@ { "argumentTypes": null, "hexValue": "4665652065786365656473207472616e736665722076616c7565", - "id": 808, + "id": 861, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3124:28:2", + "src": "3124:28:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_2ce218df547d416f80ea8a5deadaf9453d23523ffa5f2e880a48adfdb4053a9c", @@ -2053,21 +2053,21 @@ "typeString": "literal_string \"Fee exceeds transfer value\"" } ], - "id": 804, + "id": 857, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1018, - 1019 + 1071, + 1072 ], - "referencedDeclaration": 1019, - "src": "3094:7:2", + "referencedDeclaration": 1072, + "src": "3094:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 809, + "id": 862, "isConstant": false, "isLValue": false, "isPure": false, @@ -2075,15 +2075,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3094:59:2", + "src": "3094:59:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 810, + "id": 863, "nodeType": "ExpressionStatement", - "src": "3094:59:2" + "src": "3094:59:3" }, { "expression": { @@ -2091,7 +2091,7 @@ "arguments": [ { "argumentTypes": null, - "id": 815, + "id": 868, "isConstant": false, "isLValue": false, "isPure": false, @@ -2099,31 +2099,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "3167:32:2", + "src": "3167:32:3", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 812, + "id": 865, "name": "nullifierHashes", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 664, - "src": "3168:15:2", + "referencedDeclaration": 717, + "src": "3168:15:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 814, + "id": 867, "indexExpression": { "argumentTypes": null, - "id": 813, + "id": 866, "name": "_nullifierHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 791, - "src": "3184:14:2", + "referencedDeclaration": 844, + "src": "3184:14:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2134,7 +2134,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3168:31:2", + "src": "3168:31:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2148,14 +2148,14 @@ { "argumentTypes": null, "hexValue": "546865206e6f746520686173206265656e20616c7265616479207370656e74", - "id": 816, + "id": 869, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3201:33:2", + "src": "3201:33:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_a1bef92d7a18b1c6975dc8de68df6140a52afea05a2c6c91da2b1562c617e896", @@ -2175,21 +2175,21 @@ "typeString": "literal_string \"The note has been already spent\"" } ], - "id": 811, + "id": 864, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1018, - 1019 + 1071, + 1072 ], - "referencedDeclaration": 1019, - "src": "3159:7:2", + "referencedDeclaration": 1072, + "src": "3159:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 817, + "id": 870, "isConstant": false, "isLValue": false, "isPure": false, @@ -2197,15 +2197,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3159:76:2", + "src": "3159:76:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 818, + "id": 871, "nodeType": "ExpressionStatement", - "src": "3159:76:2" + "src": "3159:76:3" }, { "expression": { @@ -2216,12 +2216,12 @@ "arguments": [ { "argumentTypes": null, - "id": 821, + "id": 874, "name": "_root", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 789, - "src": "3261:5:2", + "referencedDeclaration": 842, + "src": "3261:5:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2235,18 +2235,18 @@ "typeString": "bytes32" } ], - "id": 820, + "id": 873, "name": "isKnownRoot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 621, - "src": "3249:11:2", + "referencedDeclaration": 674, + "src": "3249:11:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$", "typeString": "function (bytes32) view returns (bool)" } }, - "id": 822, + "id": 875, "isConstant": false, "isLValue": false, "isPure": false, @@ -2254,7 +2254,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3249:18:2", + "src": "3249:18:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2263,14 +2263,14 @@ { "argumentTypes": null, "hexValue": "43616e6e6f742066696e6420796f7572206d65726b6c6520726f6f74", - "id": 823, + "id": 876, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3269:30:2", + "src": "3269:30:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_2a69086763073955418d2fd7dfee3d2f1fbc5b21047a216b7855d3f313d8e204", @@ -2290,21 +2290,21 @@ "typeString": "literal_string \"Cannot find your merkle root\"" } ], - "id": 819, + "id": 872, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1018, - 1019 + 1071, + 1072 ], - "referencedDeclaration": 1019, - "src": "3241:7:2", + "referencedDeclaration": 1072, + "src": "3241:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 824, + "id": 877, "isConstant": false, "isLValue": false, "isPure": false, @@ -2312,15 +2312,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3241:59:2", + "src": "3241:59:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 825, + "id": 878, "nodeType": "ExpressionStatement", - "src": "3241:59:2" + "src": "3241:59:3" }, { "expression": { @@ -2331,12 +2331,12 @@ "arguments": [ { "argumentTypes": null, - "id": 829, + "id": 882, "name": "_proof", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 787, - "src": "3368:6:2", + "referencedDeclaration": 840, + "src": "3368:6:3", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" @@ -2350,12 +2350,12 @@ "arguments": [ { "argumentTypes": null, - "id": 831, + "id": 884, "name": "_root", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 789, - "src": "3385:5:2", + "referencedDeclaration": 842, + "src": "3385:5:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2369,20 +2369,20 @@ "typeString": "bytes32" } ], - "id": 830, + "id": 883, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3377:7:2", + "src": "3377:7:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": "uint256" }, - "id": 832, + "id": 885, "isConstant": false, "isLValue": false, "isPure": false, @@ -2390,7 +2390,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3377:14:2", + "src": "3377:14:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2401,12 +2401,12 @@ "arguments": [ { "argumentTypes": null, - "id": 834, + "id": 887, "name": "_nullifierHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 791, - "src": "3401:14:2", + "referencedDeclaration": 844, + "src": "3401:14:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2420,20 +2420,20 @@ "typeString": "bytes32" } ], - "id": 833, + "id": 886, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3393:7:2", + "src": "3393:7:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": "uint256" }, - "id": 835, + "id": 888, "isConstant": false, "isLValue": false, "isPure": false, @@ -2441,7 +2441,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3393:23:2", + "src": "3393:23:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2452,12 +2452,12 @@ "arguments": [ { "argumentTypes": null, - "id": 837, + "id": 890, "name": "_recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 793, - "src": "3426:10:2", + "referencedDeclaration": 846, + "src": "3426:10:3", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -2471,20 +2471,20 @@ "typeString": "address payable" } ], - "id": 836, + "id": 889, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3418:7:2", + "src": "3418:7:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": "uint256" }, - "id": 838, + "id": 891, "isConstant": false, "isLValue": false, "isPure": false, @@ -2492,7 +2492,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3418:19:2", + "src": "3418:19:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2503,12 +2503,12 @@ "arguments": [ { "argumentTypes": null, - "id": 840, + "id": 893, "name": "_relayer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 795, - "src": "3447:8:2", + "referencedDeclaration": 848, + "src": "3447:8:3", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -2522,20 +2522,20 @@ "typeString": "address payable" } ], - "id": 839, + "id": 892, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3439:7:2", + "src": "3439:7:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": "uint256" }, - "id": 841, + "id": 894, "isConstant": false, "isLValue": false, "isPure": false, @@ -2543,7 +2543,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3439:17:2", + "src": "3439:17:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2551,12 +2551,12 @@ }, { "argumentTypes": null, - "id": 842, + "id": 895, "name": "_fee", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 797, - "src": "3458:4:2", + "referencedDeclaration": 850, + "src": "3458:4:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2564,26 +2564,26 @@ }, { "argumentTypes": null, - "id": 843, + "id": 896, "name": "_refund", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 799, - "src": "3464:7:2", + "referencedDeclaration": 852, + "src": "3464:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 844, + "id": 897, "isConstant": false, "isInlineArray": true, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "3376:96:2", + "src": "3376:96:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" @@ -2603,32 +2603,32 @@ ], "expression": { "argumentTypes": null, - "id": 827, + "id": 880, "name": "verifier", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 670, - "src": "3347:8:2", + "referencedDeclaration": 723, + "src": "3347:8:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IVerifier_$648", + "typeIdentifier": "t_contract$_IVerifier_$701", "typeString": "contract IVerifier" } }, - "id": 828, + "id": 881, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "verifyProof", "nodeType": "MemberAccess", - "referencedDeclaration": 647, - "src": "3347:20:2", + "referencedDeclaration": 700, + "src": "3347:20:3", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$_t_array$_t_uint256_$6_memory_ptr_$returns$_t_bool_$", "typeString": "function (bytes memory,uint256[6] memory) external returns (bool)" } }, - "id": 845, + "id": 898, "isConstant": false, "isLValue": false, "isPure": false, @@ -2636,7 +2636,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3347:126:2", + "src": "3347:126:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2645,14 +2645,14 @@ { "argumentTypes": null, "hexValue": "496e76616c69642077697468647261772070726f6f66", - "id": 846, + "id": 899, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3475:24:2", + "src": "3475:24:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_7021ea58137dba96e572e94936410b0b0e4cbc344e1ab2ee7f47660768b81ff4", @@ -2672,21 +2672,21 @@ "typeString": "literal_string \"Invalid withdraw proof\"" } ], - "id": 826, + "id": 879, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1018, - 1019 + 1071, + 1072 ], - "referencedDeclaration": 1019, - "src": "3339:7:2", + "referencedDeclaration": 1072, + "src": "3339:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 847, + "id": 900, "isConstant": false, "isLValue": false, "isPure": false, @@ -2694,20 +2694,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3339:161:2", + "src": "3339:161:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 848, + "id": 901, "nodeType": "ExpressionStatement", - "src": "3339:161:2" + "src": "3339:161:3" }, { "expression": { "argumentTypes": null, - "id": 853, + "id": 906, "isConstant": false, "isLValue": false, "isPure": false, @@ -2716,26 +2716,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 849, + "id": 902, "name": "nullifierHashes", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 664, - "src": "3507:15:2", + "referencedDeclaration": 717, + "src": "3507:15:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 851, + "id": 904, "indexExpression": { "argumentTypes": null, - "id": 850, + "id": 903, "name": "_nullifierHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 791, - "src": "3523:14:2", + "referencedDeclaration": 844, + "src": "3523:14:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2746,7 +2746,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3507:31:2", + "src": "3507:31:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2757,14 +2757,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 852, + "id": 905, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3541:4:2", + "src": "3541:4:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -2772,15 +2772,15 @@ }, "value": "true" }, - "src": "3507:38:2", + "src": "3507:38:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 854, + "id": 907, "nodeType": "ExpressionStatement", - "src": "3507:38:2" + "src": "3507:38:3" }, { "expression": { @@ -2788,12 +2788,12 @@ "arguments": [ { "argumentTypes": null, - "id": 856, + "id": 909, "name": "_recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 793, - "src": "3568:10:2", + "referencedDeclaration": 846, + "src": "3568:10:3", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -2801,12 +2801,12 @@ }, { "argumentTypes": null, - "id": 857, + "id": 910, "name": "_relayer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 795, - "src": "3580:8:2", + "referencedDeclaration": 848, + "src": "3580:8:3", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -2814,12 +2814,12 @@ }, { "argumentTypes": null, - "id": 858, + "id": 911, "name": "_fee", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 797, - "src": "3590:4:2", + "referencedDeclaration": 850, + "src": "3590:4:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2827,12 +2827,12 @@ }, { "argumentTypes": null, - "id": 859, + "id": 912, "name": "_refund", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 799, - "src": "3596:7:2", + "referencedDeclaration": 852, + "src": "3596:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2845,32 +2845,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 860, + "id": 913, "name": "feeManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 672, - "src": "3605:10:2", + "referencedDeclaration": 725, + "src": "3605:10:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IFeeManager_$654", + "typeIdentifier": "t_contract$_IFeeManager_$707", "typeString": "contract IFeeManager" } }, - "id": 861, + "id": 914, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "feeTo", "nodeType": "MemberAccess", - "referencedDeclaration": 653, - "src": "3605:16:2", + "referencedDeclaration": 706, + "src": "3605:16:3", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, - "id": 862, + "id": 915, "isConstant": false, "isLValue": false, "isPure": false, @@ -2878,7 +2878,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3605:18:2", + "src": "3605:18:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2908,18 +2908,18 @@ "typeString": "address" } ], - "id": 855, + "id": 908, "name": "_processWithdraw", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 886, - "src": "3551:16:2", + "referencedDeclaration": 939, + "src": "3551:16:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_address_payable_$_t_uint256_$_t_uint256_$_t_address_$returns$__$", "typeString": "function (address payable,address payable,uint256,uint256,address)" } }, - "id": 863, + "id": 916, "isConstant": false, "isLValue": false, "isPure": false, @@ -2927,15 +2927,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3551:73:2", + "src": "3551:73:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 864, + "id": 917, "nodeType": "ExpressionStatement", - "src": "3551:73:2" + "src": "3551:73:3" }, { "eventCall": { @@ -2943,12 +2943,12 @@ "arguments": [ { "argumentTypes": null, - "id": 866, + "id": 919, "name": "_recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 793, - "src": "3646:10:2", + "referencedDeclaration": 846, + "src": "3646:10:3", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -2956,12 +2956,12 @@ }, { "argumentTypes": null, - "id": 867, + "id": 920, "name": "_nullifierHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 791, - "src": "3658:14:2", + "referencedDeclaration": 844, + "src": "3658:14:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2969,12 +2969,12 @@ }, { "argumentTypes": null, - "id": 868, + "id": 921, "name": "_relayer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 795, - "src": "3674:8:2", + "referencedDeclaration": 848, + "src": "3674:8:3", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -2982,12 +2982,12 @@ }, { "argumentTypes": null, - "id": 869, + "id": 922, "name": "_fee", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 797, - "src": "3684:4:2", + "referencedDeclaration": 850, + "src": "3684:4:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3013,18 +3013,18 @@ "typeString": "uint256" } ], - "id": 865, + "id": 918, "name": "Withdrawal", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 704, - "src": "3635:10:2", + "referencedDeclaration": 757, + "src": "3635:10:3", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,bytes32,address,uint256)" } }, - "id": 870, + "id": 923, "isConstant": false, "isLValue": false, "isPure": false, @@ -3032,56 +3032,56 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3635:54:2", + "src": "3635:54:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 871, + "id": 924, "nodeType": "EmitStatement", - "src": "3630:59:2" + "src": "3630:59:3" } ] }, "documentation": "@dev Withdraw a deposit from the contract. `proof` is a zkSNARK proof data, and input is an array of circuit public inputs\n`input` array consists of:\n- merkle root of all deposits in the contract\n- hash of unique deposit nullifier to prevent double spends\n- the recipient of funds\n- optional fee that goes to the transaction sender (usually a relay)", - "id": 873, + "id": 926, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, - "id": 802, + "id": 855, "modifierName": { "argumentTypes": null, - "id": 801, + "id": 854, "name": "nonReentrant", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 999, - "src": "3075:12:2", + "referencedDeclaration": 1052, + "src": "3075:12:3", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "3075:12:2" + "src": "3075:12:3" } ], "name": "withdraw", "nodeType": "FunctionDefinition", "parameters": { - "id": 800, + "id": 853, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 787, + "id": 840, "name": "_proof", "nodeType": "VariableDeclaration", - "scope": 873, - "src": "2911:21:2", + "scope": 926, + "src": "2911:21:3", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { @@ -3089,10 +3089,10 @@ "typeString": "bytes" }, "typeName": { - "id": 786, + "id": 839, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2911:5:2", + "src": "2911:5:3", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -3103,11 +3103,11 @@ }, { "constant": false, - "id": 789, + "id": 842, "name": "_root", "nodeType": "VariableDeclaration", - "scope": 873, - "src": "2934:13:2", + "scope": 926, + "src": "2934:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3115,10 +3115,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 788, + "id": 841, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2934:7:2", + "src": "2934:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3129,11 +3129,11 @@ }, { "constant": false, - "id": 791, + "id": 844, "name": "_nullifierHash", "nodeType": "VariableDeclaration", - "scope": 873, - "src": "2949:22:2", + "scope": 926, + "src": "2949:22:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3141,10 +3141,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 790, + "id": 843, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2949:7:2", + "src": "2949:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3155,11 +3155,11 @@ }, { "constant": false, - "id": 793, + "id": 846, "name": "_recipient", "nodeType": "VariableDeclaration", - "scope": 873, - "src": "2973:26:2", + "scope": 926, + "src": "2973:26:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3167,10 +3167,10 @@ "typeString": "address payable" }, "typeName": { - "id": 792, + "id": 845, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2973:15:2", + "src": "2973:15:3", "stateMutability": "payable", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -3182,11 +3182,11 @@ }, { "constant": false, - "id": 795, + "id": 848, "name": "_relayer", "nodeType": "VariableDeclaration", - "scope": 873, - "src": "3001:24:2", + "scope": 926, + "src": "3001:24:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3194,10 +3194,10 @@ "typeString": "address payable" }, "typeName": { - "id": 794, + "id": 847, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3001:15:2", + "src": "3001:15:3", "stateMutability": "payable", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -3209,11 +3209,11 @@ }, { "constant": false, - "id": 797, + "id": 850, "name": "_fee", "nodeType": "VariableDeclaration", - "scope": 873, - "src": "3027:12:2", + "scope": 926, + "src": "3027:12:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3221,10 +3221,10 @@ "typeString": "uint256" }, "typeName": { - "id": 796, + "id": 849, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3027:7:2", + "src": "3027:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3235,11 +3235,11 @@ }, { "constant": false, - "id": 799, + "id": 852, "name": "_refund", "nodeType": "VariableDeclaration", - "scope": 873, - "src": "3041:15:2", + "scope": 926, + "src": "3041:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3247,10 +3247,10 @@ "typeString": "uint256" }, "typeName": { - "id": 798, + "id": 851, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3041:7:2", + "src": "3041:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3260,16 +3260,16 @@ "visibility": "internal" } ], - "src": "2910:147:2" + "src": "2910:147:3" }, "returnParameters": { - "id": 803, + "id": 856, "nodeType": "ParameterList", "parameters": [], - "src": "3088:0:2" + "src": "3088:0:3" }, - "scope": 970, - "src": "2893:801:2", + "scope": 1023, + "src": "2893:801:3", "stateMutability": "payable", "superFunction": null, "visibility": "external" @@ -3277,23 +3277,23 @@ { "body": null, "documentation": "@dev this function is defined in a child contract ", - "id": 886, + "id": 939, "implemented": false, "kind": "function", "modifiers": [], "name": "_processWithdraw", "nodeType": "FunctionDefinition", "parameters": { - "id": 884, + "id": 937, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 875, + "id": 928, "name": "_recipient", "nodeType": "VariableDeclaration", - "scope": 886, - "src": "3783:26:2", + "scope": 939, + "src": "3783:26:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3301,10 +3301,10 @@ "typeString": "address payable" }, "typeName": { - "id": 874, + "id": 927, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3783:15:2", + "src": "3783:15:3", "stateMutability": "payable", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -3316,11 +3316,11 @@ }, { "constant": false, - "id": 877, + "id": 930, "name": "_relayer", "nodeType": "VariableDeclaration", - "scope": 886, - "src": "3811:24:2", + "scope": 939, + "src": "3811:24:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3328,10 +3328,10 @@ "typeString": "address payable" }, "typeName": { - "id": 876, + "id": 929, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3811:15:2", + "src": "3811:15:3", "stateMutability": "payable", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -3343,11 +3343,11 @@ }, { "constant": false, - "id": 879, + "id": 932, "name": "_relayer_fee", "nodeType": "VariableDeclaration", - "scope": 886, - "src": "3837:20:2", + "scope": 939, + "src": "3837:20:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3355,10 +3355,10 @@ "typeString": "uint256" }, "typeName": { - "id": 878, + "id": 931, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3837:7:2", + "src": "3837:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3369,11 +3369,11 @@ }, { "constant": false, - "id": 881, + "id": 934, "name": "_refund", "nodeType": "VariableDeclaration", - "scope": 886, - "src": "3859:15:2", + "scope": 939, + "src": "3859:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3381,10 +3381,10 @@ "typeString": "uint256" }, "typeName": { - "id": 880, + "id": 933, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3859:7:2", + "src": "3859:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3395,11 +3395,11 @@ }, { "constant": false, - "id": 883, + "id": 936, "name": "_feeTo", "nodeType": "VariableDeclaration", - "scope": 886, - "src": "3876:14:2", + "scope": 939, + "src": "3876:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3407,10 +3407,10 @@ "typeString": "address" }, "typeName": { - "id": 882, + "id": 935, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3876:7:2", + "src": "3876:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3421,51 +3421,51 @@ "visibility": "internal" } ], - "src": "3782:109:2" + "src": "3782:109:3" }, "returnParameters": { - "id": 885, + "id": 938, "nodeType": "ParameterList", "parameters": [], - "src": "3900:0:2" + "src": "3900:0:3" }, - "scope": 970, - "src": "3757:144:2", + "scope": 1023, + "src": "3757:144:3", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 897, + "id": 950, "nodeType": "Block", - "src": "4018:49:2", + "src": "4018:49:3", "statements": [ { "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 893, + "id": 946, "name": "nullifierHashes", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 664, - "src": "4031:15:2", + "referencedDeclaration": 717, + "src": "4031:15:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 895, + "id": 948, "indexExpression": { "argumentTypes": null, - "id": 894, + "id": 947, "name": "_nullifierHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 888, - "src": "4047:14:2", + "referencedDeclaration": 941, + "src": "4047:14:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3476,37 +3476,37 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4031:31:2", + "src": "4031:31:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "functionReturnParameters": 892, - "id": 896, + "functionReturnParameters": 945, + "id": 949, "nodeType": "Return", - "src": "4024:38:2" + "src": "4024:38:3" } ] }, "documentation": "@dev whether a note is already spent ", - "id": 898, + "id": 951, "implemented": true, "kind": "function", "modifiers": [], "name": "isSpent", "nodeType": "FunctionDefinition", "parameters": { - "id": 889, + "id": 942, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 888, + "id": 941, "name": "_nullifierHash", "nodeType": "VariableDeclaration", - "scope": 898, - "src": "3968:22:2", + "scope": 951, + "src": "3968:22:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3514,10 +3514,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 887, + "id": 940, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "3968:7:2", + "src": "3968:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3527,19 +3527,19 @@ "visibility": "internal" } ], - "src": "3967:24:2" + "src": "3967:24:3" }, "returnParameters": { - "id": 892, + "id": 945, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 891, + "id": 944, "name": "", "nodeType": "VariableDeclaration", - "scope": 898, - "src": "4012:4:2", + "scope": 951, + "src": "4012:4:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3547,10 +3547,10 @@ "typeString": "bool" }, "typeName": { - "id": 890, + "id": 943, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "4012:4:2", + "src": "4012:4:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3560,36 +3560,36 @@ "visibility": "internal" } ], - "src": "4011:6:2" + "src": "4011:6:3" }, - "scope": 970, - "src": "3951:116:2", + "scope": 1023, + "src": "3951:116:3", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 942, + "id": 995, "nodeType": "Block", - "src": "4230:191:2", + "src": "4230:191:3", "statements": [ { "expression": { "argumentTypes": null, - "id": 914, + "id": 967, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 907, + "id": 960, "name": "spent", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 905, - "src": "4236:5:2", + "referencedDeclaration": 958, + "src": "4236:5:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr", "typeString": "bool[] memory" @@ -3604,18 +3604,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 911, + "id": 964, "name": "_nullifierHashes", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 901, - "src": "4255:16:2", + "referencedDeclaration": 954, + "src": "4255:16:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", "typeString": "bytes32[] calldata" } }, - "id": 912, + "id": 965, "isConstant": false, "isLValue": false, "isPure": false, @@ -3623,7 +3623,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "4255:23:2", + "src": "4255:23:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3637,39 +3637,39 @@ "typeString": "uint256" } ], - "id": 910, + "id": 963, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", - "src": "4244:10:2", + "src": "4244:10:3", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bool_$dyn_memory_$", "typeString": "function (uint256) pure returns (bool[] memory)" }, "typeName": { "baseType": { - "id": 908, + "id": 961, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "4248:4:2", + "src": "4248:4:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 909, + "id": 962, "length": null, "nodeType": "ArrayTypeName", - "src": "4248:6:2", + "src": "4248:6:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr", "typeString": "bool[]" } } }, - "id": 913, + "id": 966, "isConstant": false, "isLValue": false, "isPure": false, @@ -3677,27 +3677,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4244:35:2", + "src": "4244:35:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bool_$dyn_memory", "typeString": "bool[] memory" } }, - "src": "4236:43:2", + "src": "4236:43:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr", "typeString": "bool[] memory" } }, - "id": 915, + "id": 968, "nodeType": "ExpressionStatement", - "src": "4236:43:2" + "src": "4236:43:3" }, { "body": { - "id": 940, + "id": 993, "nodeType": "Block", - "src": "4335:82:2", + "src": "4335:82:3", "statements": [ { "condition": { @@ -3707,26 +3707,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 928, + "id": 981, "name": "_nullifierHashes", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 901, - "src": "4355:16:2", + "referencedDeclaration": 954, + "src": "4355:16:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", "typeString": "bytes32[] calldata" } }, - "id": 930, + "id": 983, "indexExpression": { "argumentTypes": null, - "id": 929, + "id": 982, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 917, - "src": "4372:1:2", + "referencedDeclaration": 970, + "src": "4372:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3737,7 +3737,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4355:19:2", + "src": "4355:19:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3751,18 +3751,18 @@ "typeString": "bytes32" } ], - "id": 927, + "id": 980, "name": "isSpent", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 898, - "src": "4347:7:2", + "referencedDeclaration": 951, + "src": "4347:7:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$", "typeString": "function (bytes32) view returns (bool)" } }, - "id": 931, + "id": 984, "isConstant": false, "isLValue": false, "isPure": false, @@ -3770,25 +3770,25 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4347:28:2", + "src": "4347:28:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 939, + "id": 992, "nodeType": "IfStatement", - "src": "4343:68:2", + "src": "4343:68:3", "trueBody": { - "id": 938, + "id": 991, "nodeType": "Block", - "src": "4377:34:2", + "src": "4377:34:3", "statements": [ { "expression": { "argumentTypes": null, - "id": 936, + "id": 989, "isConstant": false, "isLValue": false, "isPure": false, @@ -3797,26 +3797,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 932, + "id": 985, "name": "spent", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 905, - "src": "4387:5:2", + "referencedDeclaration": 958, + "src": "4387:5:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr", "typeString": "bool[] memory" } }, - "id": 934, + "id": 987, "indexExpression": { "argumentTypes": null, - "id": 933, + "id": 986, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 917, - "src": "4393:1:2", + "referencedDeclaration": 970, + "src": "4393:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3827,7 +3827,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4387:8:2", + "src": "4387:8:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3838,14 +3838,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 935, + "id": 988, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "4398:4:2", + "src": "4398:4:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -3853,15 +3853,15 @@ }, "value": "true" }, - "src": "4387:15:2", + "src": "4387:15:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 937, + "id": 990, "nodeType": "ExpressionStatement", - "src": "4387:15:2" + "src": "4387:15:3" } ] } @@ -3874,19 +3874,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 923, + "id": 976, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 920, + "id": 973, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 917, - "src": "4301:1:2", + "referencedDeclaration": 970, + "src": "4301:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3898,18 +3898,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 921, + "id": 974, "name": "_nullifierHashes", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 901, - "src": "4305:16:2", + "referencedDeclaration": 954, + "src": "4305:16:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", "typeString": "bytes32[] calldata" } }, - "id": 922, + "id": 975, "isConstant": false, "isLValue": false, "isPure": false, @@ -3917,31 +3917,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "4305:23:2", + "src": "4305:23:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4301:27:2", + "src": "4301:27:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 941, + "id": 994, "initializationExpression": { "assignments": [ - 917 + 970 ], "declarations": [ { "constant": false, - "id": 917, + "id": 970, "name": "i", "nodeType": "VariableDeclaration", - "scope": 941, - "src": "4289:6:2", + "scope": 994, + "src": "4289:6:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3949,10 +3949,10 @@ "typeString": "uint256" }, "typeName": { - "id": 916, + "id": 969, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "4289:4:2", + "src": "4289:4:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3962,18 +3962,18 @@ "visibility": "internal" } ], - "id": 919, + "id": 972, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 918, + "id": 971, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4298:1:2", + "src": "4298:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3982,12 +3982,12 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "4289:10:2" + "src": "4289:10:3" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 925, + "id": 978, "isConstant": false, "isLValue": false, "isPure": false, @@ -3995,15 +3995,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "4330:3:2", + "src": "4330:3:3", "subExpression": { "argumentTypes": null, - "id": 924, + "id": 977, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 917, - "src": "4330:1:2", + "referencedDeclaration": 970, + "src": "4330:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4014,33 +4014,33 @@ "typeString": "uint256" } }, - "id": 926, + "id": 979, "nodeType": "ExpressionStatement", - "src": "4330:3:2" + "src": "4330:3:3" }, "nodeType": "ForStatement", - "src": "4285:132:2" + "src": "4285:132:3" } ] }, "documentation": "@dev whether an array of notes is already spent ", - "id": 943, + "id": 996, "implemented": true, "kind": "function", "modifiers": [], "name": "isSpentArray", "nodeType": "FunctionDefinition", "parameters": { - "id": 902, + "id": 955, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 901, + "id": 954, "name": "_nullifierHashes", "nodeType": "VariableDeclaration", - "scope": 943, - "src": "4150:35:2", + "scope": 996, + "src": "4150:35:3", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { @@ -4049,19 +4049,19 @@ }, "typeName": { "baseType": { - "id": 899, + "id": 952, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "4150:7:2", + "src": "4150:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 900, + "id": 953, "length": null, "nodeType": "ArrayTypeName", - "src": "4150:9:2", + "src": "4150:9:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -4071,19 +4071,19 @@ "visibility": "internal" } ], - "src": "4149:37:2" + "src": "4149:37:3" }, "returnParameters": { - "id": 906, + "id": 959, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 905, + "id": 958, "name": "spent", "nodeType": "VariableDeclaration", - "scope": 943, - "src": "4209:19:2", + "scope": 996, + "src": "4209:19:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -4092,19 +4092,19 @@ }, "typeName": { "baseType": { - "id": 903, + "id": 956, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "4209:4:2", + "src": "4209:4:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 904, + "id": 957, "length": null, "nodeType": "ArrayTypeName", - "src": "4209:6:2", + "src": "4209:6:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr", "typeString": "bool[]" @@ -4114,38 +4114,38 @@ "visibility": "internal" } ], - "src": "4208:21:2" + "src": "4208:21:3" }, - "scope": 970, - "src": "4128:293:2", + "scope": 1023, + "src": "4128:293:3", "stateMutability": "view", "superFunction": null, "visibility": "external" }, { "body": { - "id": 956, + "id": 1009, "nodeType": "Block", - "src": "4719:45:2", + "src": "4719:45:3", "statements": [ { "expression": { "argumentTypes": null, - "id": 954, + "id": 1007, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 950, + "id": 1003, "name": "verifier", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 670, - "src": "4725:8:2", + "referencedDeclaration": 723, + "src": "4725:8:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IVerifier_$648", + "typeIdentifier": "t_contract$_IVerifier_$701", "typeString": "contract IVerifier" } }, @@ -4156,12 +4156,12 @@ "arguments": [ { "argumentTypes": null, - "id": 952, + "id": 1005, "name": "_newVerifier", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 945, - "src": "4746:12:2", + "referencedDeclaration": 998, + "src": "4746:12:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4175,18 +4175,18 @@ "typeString": "address" } ], - "id": 951, + "id": 1004, "name": "IVerifier", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 648, - "src": "4736:9:2", + "referencedDeclaration": 701, + "src": "4736:9:3", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IVerifier_$648_$", + "typeIdentifier": "t_type$_t_contract$_IVerifier_$701_$", "typeString": "type(contract IVerifier)" } }, - "id": 953, + "id": 1006, "isConstant": false, "isLValue": false, "isPure": false, @@ -4194,62 +4194,62 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4736:23:2", + "src": "4736:23:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IVerifier_$648", + "typeIdentifier": "t_contract$_IVerifier_$701", "typeString": "contract IVerifier" } }, - "src": "4725:34:2", + "src": "4725:34:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IVerifier_$648", + "typeIdentifier": "t_contract$_IVerifier_$701", "typeString": "contract IVerifier" } }, - "id": 955, + "id": 1008, "nodeType": "ExpressionStatement", - "src": "4725:34:2" + "src": "4725:34:3" } ] }, "documentation": "@dev allow operator to update SNARK verification keys. This is needed to update keys after the final trusted setup ceremony is held.\nAfter that operator rights are supposed to be transferred to zero address", - "id": 957, + "id": 1010, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, - "id": 948, + "id": 1001, "modifierName": { "argumentTypes": null, - "id": 947, + "id": 1000, "name": "onlyOperator", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 686, - "src": "4706:12:2", + "referencedDeclaration": 739, + "src": "4706:12:3", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "4706:12:2" + "src": "4706:12:3" } ], "name": "updateVerifier", "nodeType": "FunctionDefinition", "parameters": { - "id": 946, + "id": 999, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 945, + "id": 998, "name": "_newVerifier", "nodeType": "VariableDeclaration", - "scope": 957, - "src": "4675:20:2", + "scope": 1010, + "src": "4675:20:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4257,10 +4257,10 @@ "typeString": "address" }, "typeName": { - "id": 944, + "id": 997, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4675:7:2", + "src": "4675:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4271,42 +4271,42 @@ "visibility": "internal" } ], - "src": "4674:22:2" + "src": "4674:22:3" }, "returnParameters": { - "id": 949, + "id": 1002, "nodeType": "ParameterList", "parameters": [], - "src": "4719:0:2" + "src": "4719:0:3" }, - "scope": 970, - "src": "4651:113:2", + "scope": 1023, + "src": "4651:113:3", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external" }, { "body": { - "id": 968, + "id": 1021, "nodeType": "Block", - "src": "4882:34:2", + "src": "4882:34:3", "statements": [ { "expression": { "argumentTypes": null, - "id": 966, + "id": 1019, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 964, + "id": 1017, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 674, - "src": "4888:8:2", + "referencedDeclaration": 727, + "src": "4888:8:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4316,67 +4316,67 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 965, + "id": 1018, "name": "_newOperator", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 959, - "src": "4899:12:2", + "referencedDeclaration": 1012, + "src": "4899:12:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4888:23:2", + "src": "4888:23:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 967, + "id": 1020, "nodeType": "ExpressionStatement", - "src": "4888:23:2" + "src": "4888:23:3" } ] }, "documentation": "@dev operator can change his address ", - "id": 969, + "id": 1022, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, - "id": 962, + "id": 1015, "modifierName": { "argumentTypes": null, - "id": 961, + "id": 1014, "name": "onlyOperator", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 686, - "src": "4869:12:2", + "referencedDeclaration": 739, + "src": "4869:12:3", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "4869:12:2" + "src": "4869:12:3" } ], "name": "changeOperator", "nodeType": "FunctionDefinition", "parameters": { - "id": 960, + "id": 1013, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 959, + "id": 1012, "name": "_newOperator", "nodeType": "VariableDeclaration", - "scope": 969, - "src": "4838:20:2", + "scope": 1022, + "src": "4838:20:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4384,10 +4384,10 @@ "typeString": "address" }, "typeName": { - "id": 958, + "id": 1011, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4838:7:2", + "src": "4838:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4398,39 +4398,39 @@ "visibility": "internal" } ], - "src": "4837:22:2" + "src": "4837:22:3" }, "returnParameters": { - "id": 963, + "id": 1016, "nodeType": "ParameterList", "parameters": [], - "src": "4882:0:2" + "src": "4882:0:3" }, - "scope": 970, - "src": "4814:102:2", + "scope": 1023, + "src": "4814:102:3", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external" } ], - "scope": 971, - "src": "318:4600:2" + "scope": 1024, + "src": "318:4600:3" } ], - "src": "0:4919:2" + "src": "0:4919:3" }, "legacyAST": { "attributes": { "absolutePath": "/Users/brianli/dotfiles/tornado-core/contracts/Tornado.sol", "exportedSymbols": { "IFeeManager": [ - 654 + 707 ], "IVerifier": [ - 648 + 701 ], "Tornado": [ - 970 + 1023 ] } }, @@ -4443,39 +4443,39 @@ ".17" ] }, - "id": 634, + "id": 687, "name": "PragmaDirective", - "src": "0:23:2" + "src": "0:23:3" }, { "attributes": { - "SourceUnit": 633, + "SourceUnit": 686, "absolutePath": "/Users/brianli/dotfiles/tornado-core/contracts/MerkleTreeWithHistory.sol", "file": "./MerkleTreeWithHistory.sol", - "scope": 971, + "scope": 1024, "symbolAliases": [ null ], "unitAlias": "" }, - "id": 635, + "id": 688, "name": "ImportDirective", - "src": "25:37:2" + "src": "25:37:3" }, { "attributes": { - "SourceUnit": 1001, + "SourceUnit": 1054, "absolutePath": "@openzeppelin/contracts/utils/ReentrancyGuard.sol", "file": "@openzeppelin/contracts/utils/ReentrancyGuard.sol", - "scope": 971, + "scope": 1024, "symbolAliases": [ null ], "unitAlias": "" }, - "id": 636, + "id": 689, "name": "ImportDirective", - "src": "63:59:2" + "src": "63:59:3" }, { "attributes": { @@ -4489,10 +4489,10 @@ "documentation": null, "fullyImplemented": false, "linearizedBaseContracts": [ - 648 + 701 ], "name": "IVerifier", - "scope": 971 + "scope": 1024 }, "children": [ { @@ -4506,7 +4506,7 @@ null ], "name": "verifyProof", - "scope": 648, + "scope": 701, "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -4518,7 +4518,7 @@ "attributes": { "constant": false, "name": "_proof", - "scope": 647, + "scope": 700, "stateVariable": false, "storageLocation": "memory", "type": "bytes", @@ -4531,20 +4531,20 @@ "name": "bytes", "type": "bytes" }, - "id": 637, + "id": 690, "name": "ElementaryTypeName", - "src": "168:5:2" + "src": "168:5:3" } ], - "id": 638, + "id": 691, "name": "VariableDeclaration", - "src": "168:19:2" + "src": "168:19:3" }, { "attributes": { "constant": false, "name": "_input", - "scope": 647, + "scope": 700, "stateVariable": false, "storageLocation": "memory", "type": "uint256[6]", @@ -4562,9 +4562,9 @@ "name": "uint256", "type": "uint256" }, - "id": 639, + "id": 692, "name": "ElementaryTypeName", - "src": "189:7:2" + "src": "189:7:3" }, { "attributes": { @@ -4579,24 +4579,24 @@ "type": "int_const 6", "value": "6" }, - "id": 640, + "id": 693, "name": "Literal", - "src": "197:1:2" + "src": "197:1:3" } ], - "id": 641, + "id": 694, "name": "ArrayTypeName", - "src": "189:10:2" + "src": "189:10:3" } ], - "id": 642, + "id": 695, "name": "VariableDeclaration", - "src": "189:24:2" + "src": "189:24:3" } ], - "id": 643, + "id": 696, "name": "ParameterList", - "src": "167:47:2" + "src": "167:47:3" }, { "children": [ @@ -4604,7 +4604,7 @@ "attributes": { "constant": false, "name": "", - "scope": 647, + "scope": 700, "stateVariable": false, "storageLocation": "default", "type": "bool", @@ -4617,29 +4617,29 @@ "name": "bool", "type": "bool" }, - "id": 644, + "id": 697, "name": "ElementaryTypeName", - "src": "230:4:2" + "src": "230:4:3" } ], - "id": 645, + "id": 698, "name": "VariableDeclaration", - "src": "230:4:2" + "src": "230:4:3" } ], - "id": 646, + "id": 699, "name": "ParameterList", - "src": "229:6:2" + "src": "229:6:3" } ], - "id": 647, + "id": 700, "name": "FunctionDefinition", - "src": "147:89:2" + "src": "147:89:3" } ], - "id": 648, + "id": 701, "name": "ContractDefinition", - "src": "124:114:2" + "src": "124:114:3" }, { "attributes": { @@ -4653,10 +4653,10 @@ "documentation": null, "fullyImplemented": false, "linearizedBaseContracts": [ - 654 + 707 ], "name": "IFeeManager", - "scope": 971 + "scope": 1024 }, "children": [ { @@ -4670,7 +4670,7 @@ null ], "name": "feeTo", - "scope": 654, + "scope": 707, "stateMutability": "view", "superFunction": null, "visibility": "external" @@ -4683,9 +4683,9 @@ ] }, "children": [], - "id": 649, + "id": 702, "name": "ParameterList", - "src": "279:2:2" + "src": "279:2:3" }, { "children": [ @@ -4693,7 +4693,7 @@ "attributes": { "constant": false, "name": "", - "scope": 653, + "scope": 706, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -4707,46 +4707,46 @@ "stateMutability": "nonpayable", "type": "address" }, - "id": 650, + "id": 703, "name": "ElementaryTypeName", - "src": "305:7:2" + "src": "305:7:3" } ], - "id": 651, + "id": 704, "name": "VariableDeclaration", - "src": "305:7:2" + "src": "305:7:3" } ], - "id": 652, + "id": 705, "name": "ParameterList", - "src": "304:9:2" + "src": "304:9:3" } ], - "id": 653, + "id": 706, "name": "FunctionDefinition", - "src": "265:49:2" + "src": "265:49:3" } ], - "id": 654, + "id": 707, "name": "ContractDefinition", - "src": "240:76:2" + "src": "240:76:3" }, { "attributes": { "contractDependencies": [ - 632, - 1000 + 685, + 1053 ], "contractKind": "contract", "documentation": null, "fullyImplemented": false, "linearizedBaseContracts": [ - 970, - 1000, - 632 + 1023, + 1053, + 685 ], "name": "Tornado", - "scope": 971 + "scope": 1024 }, "children": [ { @@ -4758,17 +4758,17 @@ "attributes": { "contractScope": null, "name": "MerkleTreeWithHistory", - "referencedDeclaration": 632, + "referencedDeclaration": 685, "type": "contract MerkleTreeWithHistory" }, - "id": 655, + "id": 708, "name": "UserDefinedTypeName", - "src": "338:21:2" + "src": "338:21:3" } ], - "id": 656, + "id": 709, "name": "InheritanceSpecifier", - "src": "338:21:2" + "src": "338:21:3" }, { "attributes": { @@ -4779,23 +4779,23 @@ "attributes": { "contractScope": null, "name": "ReentrancyGuard", - "referencedDeclaration": 1000, + "referencedDeclaration": 1053, "type": "contract ReentrancyGuard" }, - "id": 657, + "id": 710, "name": "UserDefinedTypeName", - "src": "361:15:2" + "src": "361:15:3" } ], - "id": 658, + "id": 711, "name": "InheritanceSpecifier", - "src": "361:15:2" + "src": "361:15:3" }, { "attributes": { "constant": false, "name": "denomination", - "scope": 970, + "scope": 1023, "stateVariable": true, "storageLocation": "default", "type": "uint256", @@ -4808,20 +4808,20 @@ "name": "uint256", "type": "uint256" }, - "id": 659, + "id": 712, "name": "ElementaryTypeName", - "src": "381:7:2" + "src": "381:7:3" } ], - "id": 660, + "id": 713, "name": "VariableDeclaration", - "src": "381:27:2" + "src": "381:27:3" }, { "attributes": { "constant": false, "name": "nullifierHashes", - "scope": 970, + "scope": 1023, "stateVariable": true, "storageLocation": "default", "type": "mapping(bytes32 => bool)", @@ -4839,34 +4839,34 @@ "name": "bytes32", "type": "bytes32" }, - "id": 661, + "id": 714, "name": "ElementaryTypeName", - "src": "420:7:2" + "src": "420:7:3" }, { "attributes": { "name": "bool", "type": "bool" }, - "id": 662, + "id": 715, "name": "ElementaryTypeName", - "src": "431:4:2" + "src": "431:4:3" } ], - "id": 663, + "id": 716, "name": "Mapping", - "src": "412:24:2" + "src": "412:24:3" } ], - "id": 664, + "id": 717, "name": "VariableDeclaration", - "src": "412:47:2" + "src": "412:47:3" }, { "attributes": { "constant": false, "name": "commitments", - "scope": 970, + "scope": 1023, "stateVariable": true, "storageLocation": "default", "type": "mapping(bytes32 => bool)", @@ -4884,34 +4884,34 @@ "name": "bytes32", "type": "bytes32" }, - "id": 665, + "id": 718, "name": "ElementaryTypeName", - "src": "562:7:2" + "src": "562:7:3" }, { "attributes": { "name": "bool", "type": "bool" }, - "id": 666, + "id": 719, "name": "ElementaryTypeName", - "src": "573:4:2" + "src": "573:4:3" } ], - "id": 667, + "id": 720, "name": "Mapping", - "src": "554:24:2" + "src": "554:24:3" } ], - "id": 668, + "id": 721, "name": "VariableDeclaration", - "src": "554:43:2" + "src": "554:43:3" }, { "attributes": { "constant": false, "name": "verifier", - "scope": 970, + "scope": 1023, "stateVariable": true, "storageLocation": "default", "type": "contract IVerifier", @@ -4923,23 +4923,23 @@ "attributes": { "contractScope": null, "name": "IVerifier", - "referencedDeclaration": 648, + "referencedDeclaration": 701, "type": "contract IVerifier" }, - "id": 669, + "id": 722, "name": "UserDefinedTypeName", - "src": "601:9:2" + "src": "601:9:3" } ], - "id": 670, + "id": 723, "name": "VariableDeclaration", - "src": "601:25:2" + "src": "601:25:3" }, { "attributes": { "constant": false, "name": "feeManager", - "scope": 970, + "scope": 1023, "stateVariable": true, "storageLocation": "default", "type": "contract IFeeManager", @@ -4951,23 +4951,23 @@ "attributes": { "contractScope": null, "name": "IFeeManager", - "referencedDeclaration": 654, + "referencedDeclaration": 707, "type": "contract IFeeManager" }, - "id": 671, + "id": 724, "name": "UserDefinedTypeName", - "src": "630:11:2" + "src": "630:11:3" } ], - "id": 672, + "id": 725, "name": "VariableDeclaration", - "src": "630:29:2" + "src": "630:29:3" }, { "attributes": { "constant": false, "name": "operator", - "scope": 970, + "scope": 1023, "stateVariable": true, "storageLocation": "default", "type": "address", @@ -4981,14 +4981,14 @@ "stateMutability": "nonpayable", "type": "address" }, - "id": 673, + "id": 726, "name": "ElementaryTypeName", - "src": "819:7:2" + "src": "819:7:3" } ], - "id": 674, + "id": 727, "name": "VariableDeclaration", - "src": "819:23:2" + "src": "819:23:3" }, { "attributes": { @@ -5004,9 +5004,9 @@ ] }, "children": [], - "id": 675, + "id": 728, "name": "ParameterList", - "src": "868:0:2" + "src": "868:0:3" }, { "children": [ @@ -5040,16 +5040,16 @@ } ], "overloadedDeclarations": [ - 1018, - 1019 + 1071, + 1072 ], - "referencedDeclaration": 1019, + "referencedDeclaration": 1072, "type": "function (bool,string memory) pure", "value": "require" }, - "id": 676, + "id": 729, "name": "Identifier", - "src": "874:7:2" + "src": "874:7:3" }, { "attributes": { @@ -5084,18 +5084,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1015, + "referencedDeclaration": 1068, "type": "msg", "value": "msg" }, - "id": 677, + "id": 730, "name": "Identifier", - "src": "882:3:2" + "src": "882:3:3" } ], - "id": 678, + "id": 731, "name": "MemberAccess", - "src": "882:10:2" + "src": "882:10:3" }, { "attributes": { @@ -5103,18 +5103,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 674, + "referencedDeclaration": 727, "type": "address", "value": "operator" }, - "id": 679, + "id": 732, "name": "Identifier", - "src": "896:8:2" + "src": "896:8:3" } ], - "id": 680, + "id": 733, "name": "BinaryOperation", - "src": "882:22:2" + "src": "882:22:3" }, { "attributes": { @@ -5129,34 +5129,34 @@ "type": "literal_string \"Only operator can call this function.\"", "value": "Only operator can call this function." }, - "id": 681, + "id": 734, "name": "Literal", - "src": "906:39:2" + "src": "906:39:3" } ], - "id": 682, + "id": 735, "name": "FunctionCall", - "src": "874:72:2" + "src": "874:72:3" } ], - "id": 683, + "id": 736, "name": "ExpressionStatement", - "src": "874:72:2" + "src": "874:72:3" }, { - "id": 684, + "id": 737, "name": "PlaceholderStatement", - "src": "952:1:2" + "src": "952:1:3" } ], - "id": 685, + "id": 738, "name": "Block", - "src": "868:90:2" + "src": "868:90:3" } ], - "id": 686, + "id": 739, "name": "ModifierDefinition", - "src": "846:112:2" + "src": "846:112:3" }, { "attributes": { @@ -5172,7 +5172,7 @@ "constant": false, "indexed": true, "name": "commitment", - "scope": 694, + "scope": 747, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -5185,21 +5185,21 @@ "name": "bytes32", "type": "bytes32" }, - "id": 687, + "id": 740, "name": "ElementaryTypeName", - "src": "976:7:2" + "src": "976:7:3" } ], - "id": 688, + "id": 741, "name": "VariableDeclaration", - "src": "976:26:2" + "src": "976:26:3" }, { "attributes": { "constant": false, "indexed": false, "name": "leafIndex", - "scope": 694, + "scope": 747, "stateVariable": false, "storageLocation": "default", "type": "uint32", @@ -5212,21 +5212,21 @@ "name": "uint32", "type": "uint32" }, - "id": 689, + "id": 742, "name": "ElementaryTypeName", - "src": "1004:6:2" + "src": "1004:6:3" } ], - "id": 690, + "id": 743, "name": "VariableDeclaration", - "src": "1004:16:2" + "src": "1004:16:3" }, { "attributes": { "constant": false, "indexed": false, "name": "timestamp", - "scope": 694, + "scope": 747, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -5239,24 +5239,24 @@ "name": "uint256", "type": "uint256" }, - "id": 691, + "id": 744, "name": "ElementaryTypeName", - "src": "1022:7:2" + "src": "1022:7:3" } ], - "id": 692, + "id": 745, "name": "VariableDeclaration", - "src": "1022:17:2" + "src": "1022:17:3" } ], - "id": 693, + "id": 746, "name": "ParameterList", - "src": "975:65:2" + "src": "975:65:3" } ], - "id": 694, + "id": 747, "name": "EventDefinition", - "src": "962:79:2" + "src": "962:79:3" }, { "attributes": { @@ -5272,7 +5272,7 @@ "constant": false, "indexed": false, "name": "to", - "scope": 704, + "scope": 757, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -5286,21 +5286,21 @@ "stateMutability": "nonpayable", "type": "address" }, - "id": 695, + "id": 748, "name": "ElementaryTypeName", - "src": "1061:7:2" + "src": "1061:7:3" } ], - "id": 696, + "id": 749, "name": "VariableDeclaration", - "src": "1061:10:2" + "src": "1061:10:3" }, { "attributes": { "constant": false, "indexed": false, "name": "nullifierHash", - "scope": 704, + "scope": 757, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -5313,21 +5313,21 @@ "name": "bytes32", "type": "bytes32" }, - "id": 697, + "id": 750, "name": "ElementaryTypeName", - "src": "1073:7:2" + "src": "1073:7:3" } ], - "id": 698, + "id": 751, "name": "VariableDeclaration", - "src": "1073:21:2" + "src": "1073:21:3" }, { "attributes": { "constant": false, "indexed": true, "name": "relayer", - "scope": 704, + "scope": 757, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -5341,21 +5341,21 @@ "stateMutability": "nonpayable", "type": "address" }, - "id": 699, + "id": 752, "name": "ElementaryTypeName", - "src": "1096:7:2" + "src": "1096:7:3" } ], - "id": 700, + "id": 753, "name": "VariableDeclaration", - "src": "1096:23:2" + "src": "1096:23:3" }, { "attributes": { "constant": false, "indexed": false, "name": "fee", - "scope": 704, + "scope": 757, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -5368,24 +5368,24 @@ "name": "uint256", "type": "uint256" }, - "id": 701, + "id": 754, "name": "ElementaryTypeName", - "src": "1121:7:2" + "src": "1121:7:3" } ], - "id": 702, + "id": 755, "name": "VariableDeclaration", - "src": "1121:11:2" + "src": "1121:11:3" } ], - "id": 703, + "id": 756, "name": "ParameterList", - "src": "1060:73:2" + "src": "1060:73:3" } ], - "id": 704, + "id": 757, "name": "EventDefinition", - "src": "1044:90:2" + "src": "1044:90:3" }, { "attributes": { @@ -5394,7 +5394,7 @@ "isConstructor": true, "kind": "constructor", "name": "", - "scope": 970, + "scope": 1023, "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -5406,7 +5406,7 @@ "attributes": { "constant": false, "name": "_verifier", - "scope": 744, + "scope": 797, "stateVariable": false, "storageLocation": "default", "type": "contract IVerifier", @@ -5418,23 +5418,23 @@ "attributes": { "contractScope": null, "name": "IVerifier", - "referencedDeclaration": 648, + "referencedDeclaration": 701, "type": "contract IVerifier" }, - "id": 705, + "id": 758, "name": "UserDefinedTypeName", - "src": "1450:9:2" + "src": "1450:9:3" } ], - "id": 706, + "id": 759, "name": "VariableDeclaration", - "src": "1450:19:2" + "src": "1450:19:3" }, { "attributes": { "constant": false, "name": "_feeManager", - "scope": 744, + "scope": 797, "stateVariable": false, "storageLocation": "default", "type": "contract IFeeManager", @@ -5446,23 +5446,23 @@ "attributes": { "contractScope": null, "name": "IFeeManager", - "referencedDeclaration": 654, + "referencedDeclaration": 707, "type": "contract IFeeManager" }, - "id": 707, + "id": 760, "name": "UserDefinedTypeName", - "src": "1475:11:2" + "src": "1475:11:3" } ], - "id": 708, + "id": 761, "name": "VariableDeclaration", - "src": "1475:23:2" + "src": "1475:23:3" }, { "attributes": { "constant": false, "name": "_denomination", - "scope": 744, + "scope": 797, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -5475,20 +5475,20 @@ "name": "uint256", "type": "uint256" }, - "id": 709, + "id": 762, "name": "ElementaryTypeName", - "src": "1504:7:2" + "src": "1504:7:3" } ], - "id": 710, + "id": 763, "name": "VariableDeclaration", - "src": "1504:21:2" + "src": "1504:21:3" }, { "attributes": { "constant": false, "name": "_merkleTreeHeight", - "scope": 744, + "scope": 797, "stateVariable": false, "storageLocation": "default", "type": "uint32", @@ -5501,20 +5501,20 @@ "name": "uint32", "type": "uint32" }, - "id": 711, + "id": 764, "name": "ElementaryTypeName", - "src": "1531:6:2" + "src": "1531:6:3" } ], - "id": 712, + "id": 765, "name": "VariableDeclaration", - "src": "1531:24:2" + "src": "1531:24:3" }, { "attributes": { "constant": false, "name": "_operator", - "scope": 744, + "scope": 797, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -5528,19 +5528,19 @@ "stateMutability": "nonpayable", "type": "address" }, - "id": 713, + "id": 766, "name": "ElementaryTypeName", - "src": "1561:7:2" + "src": "1561:7:3" } ], - "id": 714, + "id": 767, "name": "VariableDeclaration", - "src": "1561:17:2" + "src": "1561:17:3" } ], - "id": 715, + "id": 768, "name": "ParameterList", - "src": "1444:138:2" + "src": "1444:138:3" }, { "attributes": { @@ -5549,9 +5549,9 @@ ] }, "children": [], - "id": 719, + "id": 772, "name": "ParameterList", - "src": "1631:0:2" + "src": "1631:0:3" }, { "children": [ @@ -5561,13 +5561,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 632, + "referencedDeclaration": 685, "type": "type(contract MerkleTreeWithHistory)", "value": "MerkleTreeWithHistory" }, - "id": 716, + "id": 769, "name": "Identifier", - "src": "1583:21:2" + "src": "1583:21:3" }, { "attributes": { @@ -5575,18 +5575,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 712, + "referencedDeclaration": 765, "type": "uint32", "value": "_merkleTreeHeight" }, - "id": 717, + "id": 770, "name": "Identifier", - "src": "1605:17:2" + "src": "1605:17:3" } ], - "id": 718, + "id": 771, "name": "ModifierInvocation", - "src": "1583:40:2" + "src": "1583:40:3" }, { "children": [ @@ -5620,16 +5620,16 @@ } ], "overloadedDeclarations": [ - 1018, - 1019 + 1071, + 1072 ], - "referencedDeclaration": 1019, + "referencedDeclaration": 1072, "type": "function (bool,string memory) pure", "value": "require" }, - "id": 720, + "id": 773, "name": "Identifier", - "src": "1637:7:2" + "src": "1637:7:3" }, { "attributes": { @@ -5652,13 +5652,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 710, + "referencedDeclaration": 763, "type": "uint256", "value": "_denomination" }, - "id": 721, + "id": 774, "name": "Identifier", - "src": "1645:13:2" + "src": "1645:13:3" }, { "attributes": { @@ -5673,14 +5673,14 @@ "type": "int_const 0", "value": "0" }, - "id": 722, + "id": 775, "name": "Literal", - "src": "1661:1:2" + "src": "1661:1:3" } ], - "id": 723, + "id": 776, "name": "BinaryOperation", - "src": "1645:17:2" + "src": "1645:17:3" }, { "attributes": { @@ -5695,19 +5695,19 @@ "type": "literal_string \"denomination should be greater than 0\"", "value": "denomination should be greater than 0" }, - "id": 724, + "id": 777, "name": "Literal", - "src": "1664:39:2" + "src": "1664:39:3" } ], - "id": 725, + "id": 778, "name": "FunctionCall", - "src": "1637:67:2" + "src": "1637:67:3" } ], - "id": 726, + "id": 779, "name": "ExpressionStatement", - "src": "1637:67:2" + "src": "1637:67:3" }, { "children": [ @@ -5728,13 +5728,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 670, + "referencedDeclaration": 723, "type": "contract IVerifier", "value": "verifier" }, - "id": 727, + "id": 780, "name": "Identifier", - "src": "1710:8:2" + "src": "1710:8:3" }, { "attributes": { @@ -5742,23 +5742,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 706, + "referencedDeclaration": 759, "type": "contract IVerifier", "value": "_verifier" }, - "id": 728, + "id": 781, "name": "Identifier", - "src": "1721:9:2" + "src": "1721:9:3" } ], - "id": 729, + "id": 782, "name": "Assignment", - "src": "1710:20:2" + "src": "1710:20:3" } ], - "id": 730, + "id": 783, "name": "ExpressionStatement", - "src": "1710:20:2" + "src": "1710:20:3" }, { "children": [ @@ -5779,13 +5779,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 672, + "referencedDeclaration": 725, "type": "contract IFeeManager", "value": "feeManager" }, - "id": 731, + "id": 784, "name": "Identifier", - "src": "1736:10:2" + "src": "1736:10:3" }, { "attributes": { @@ -5793,23 +5793,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 708, + "referencedDeclaration": 761, "type": "contract IFeeManager", "value": "_feeManager" }, - "id": 732, + "id": 785, "name": "Identifier", - "src": "1749:11:2" + "src": "1749:11:3" } ], - "id": 733, + "id": 786, "name": "Assignment", - "src": "1736:24:2" + "src": "1736:24:3" } ], - "id": 734, + "id": 787, "name": "ExpressionStatement", - "src": "1736:24:2" + "src": "1736:24:3" }, { "children": [ @@ -5830,13 +5830,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 674, + "referencedDeclaration": 727, "type": "address", "value": "operator" }, - "id": 735, + "id": 788, "name": "Identifier", - "src": "1766:8:2" + "src": "1766:8:3" }, { "attributes": { @@ -5844,23 +5844,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 714, + "referencedDeclaration": 767, "type": "address", "value": "_operator" }, - "id": 736, + "id": 789, "name": "Identifier", - "src": "1777:9:2" + "src": "1777:9:3" } ], - "id": 737, + "id": 790, "name": "Assignment", - "src": "1766:20:2" + "src": "1766:20:3" } ], - "id": 738, + "id": 791, "name": "ExpressionStatement", - "src": "1766:20:2" + "src": "1766:20:3" }, { "children": [ @@ -5881,13 +5881,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 660, + "referencedDeclaration": 713, "type": "uint256", "value": "denomination" }, - "id": 739, + "id": 792, "name": "Identifier", - "src": "1792:12:2" + "src": "1792:12:3" }, { "attributes": { @@ -5895,33 +5895,33 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 710, + "referencedDeclaration": 763, "type": "uint256", "value": "_denomination" }, - "id": 740, + "id": 793, "name": "Identifier", - "src": "1807:13:2" + "src": "1807:13:3" } ], - "id": 741, + "id": 794, "name": "Assignment", - "src": "1792:28:2" + "src": "1792:28:3" } ], - "id": 742, + "id": 795, "name": "ExpressionStatement", - "src": "1792:28:2" + "src": "1792:28:3" } ], - "id": 743, + "id": 796, "name": "Block", - "src": "1631:194:2" + "src": "1631:194:3" } ], - "id": 744, + "id": 797, "name": "FunctionDefinition", - "src": "1433:392:2" + "src": "1433:392:3" }, { "attributes": { @@ -5930,7 +5930,7 @@ "isConstructor": false, "kind": "function", "name": "deposit", - "scope": 970, + "scope": 1023, "stateMutability": "payable", "superFunction": null, "visibility": "external" @@ -5942,7 +5942,7 @@ "attributes": { "constant": false, "name": "_commitment", - "scope": 782, + "scope": 835, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -5955,19 +5955,19 @@ "name": "bytes32", "type": "bytes32" }, - "id": 745, + "id": 798, "name": "ElementaryTypeName", - "src": "2090:7:2" + "src": "2090:7:3" } ], - "id": 746, + "id": 799, "name": "VariableDeclaration", - "src": "2090:19:2" + "src": "2090:19:3" } ], - "id": 747, + "id": 800, "name": "ParameterList", - "src": "2089:21:2" + "src": "2089:21:3" }, { "attributes": { @@ -5976,9 +5976,9 @@ ] }, "children": [], - "id": 750, + "id": 803, "name": "ParameterList", - "src": "2141:0:2" + "src": "2141:0:3" }, { "attributes": { @@ -5991,18 +5991,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 999, + "referencedDeclaration": 1052, "type": "modifier ()", "value": "nonReentrant" }, - "id": 748, + "id": 801, "name": "Identifier", - "src": "2128:12:2" + "src": "2128:12:3" } ], - "id": 749, + "id": 802, "name": "ModifierInvocation", - "src": "2128:12:2" + "src": "2128:12:3" }, { "children": [ @@ -6036,16 +6036,16 @@ } ], "overloadedDeclarations": [ - 1018, - 1019 + 1071, + 1072 ], - "referencedDeclaration": 1019, + "referencedDeclaration": 1072, "type": "function (bool,string memory) pure", "value": "require" }, - "id": 751, + "id": 804, "name": "Identifier", - "src": "2147:7:2" + "src": "2147:7:3" }, { "attributes": { @@ -6075,13 +6075,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 668, + "referencedDeclaration": 721, "type": "mapping(bytes32 => bool)", "value": "commitments" }, - "id": 752, + "id": 805, "name": "Identifier", - "src": "2156:11:2" + "src": "2156:11:3" }, { "attributes": { @@ -6089,23 +6089,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 746, + "referencedDeclaration": 799, "type": "bytes32", "value": "_commitment" }, - "id": 753, + "id": 806, "name": "Identifier", - "src": "2168:11:2" + "src": "2168:11:3" } ], - "id": 754, + "id": 807, "name": "IndexAccess", - "src": "2156:24:2" + "src": "2156:24:3" } ], - "id": 755, + "id": 808, "name": "UnaryOperation", - "src": "2155:25:2" + "src": "2155:25:3" }, { "attributes": { @@ -6120,24 +6120,24 @@ "type": "literal_string \"The commitment has been submitted\"", "value": "The commitment has been submitted" }, - "id": 756, + "id": 809, "name": "Literal", - "src": "2182:35:2" + "src": "2182:35:3" } ], - "id": 757, + "id": 810, "name": "FunctionCall", - "src": "2147:71:2" + "src": "2147:71:3" } ], - "id": 758, + "id": 811, "name": "ExpressionStatement", - "src": "2147:71:2" + "src": "2147:71:3" }, { "attributes": { "assignments": [ - 760 + 813 ] }, "children": [ @@ -6145,7 +6145,7 @@ "attributes": { "constant": false, "name": "insertedIndex", - "scope": 781, + "scope": 834, "stateVariable": false, "storageLocation": "default", "type": "uint32", @@ -6158,14 +6158,14 @@ "name": "uint32", "type": "uint32" }, - "id": 759, + "id": 812, "name": "ElementaryTypeName", - "src": "2225:6:2" + "src": "2225:6:3" } ], - "id": 760, + "id": 813, "name": "VariableDeclaration", - "src": "2225:20:2" + "src": "2225:20:3" }, { "attributes": { @@ -6193,13 +6193,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 574, + "referencedDeclaration": 627, "type": "function (bytes32) returns (uint32)", "value": "_insert" }, - "id": 761, + "id": 814, "name": "Identifier", - "src": "2248:7:2" + "src": "2248:7:3" }, { "attributes": { @@ -6207,23 +6207,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 746, + "referencedDeclaration": 799, "type": "bytes32", "value": "_commitment" }, - "id": 762, + "id": 815, "name": "Identifier", - "src": "2256:11:2" + "src": "2256:11:3" } ], - "id": 763, + "id": 816, "name": "FunctionCall", - "src": "2248:20:2" + "src": "2248:20:3" } ], - "id": 764, + "id": 817, "name": "VariableDeclarationStatement", - "src": "2225:43:2" + "src": "2225:43:3" }, { "children": [ @@ -6254,13 +6254,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 668, + "referencedDeclaration": 721, "type": "mapping(bytes32 => bool)", "value": "commitments" }, - "id": 765, + "id": 818, "name": "Identifier", - "src": "2274:11:2" + "src": "2274:11:3" }, { "attributes": { @@ -6268,18 +6268,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 746, + "referencedDeclaration": 799, "type": "bytes32", "value": "_commitment" }, - "id": 766, + "id": 819, "name": "Identifier", - "src": "2286:11:2" + "src": "2286:11:3" } ], - "id": 767, + "id": 820, "name": "IndexAccess", - "src": "2274:24:2" + "src": "2274:24:3" }, { "attributes": { @@ -6294,19 +6294,19 @@ "type": "bool", "value": "true" }, - "id": 768, + "id": 821, "name": "Literal", - "src": "2301:4:2" + "src": "2301:4:3" } ], - "id": 769, + "id": 822, "name": "Assignment", - "src": "2274:31:2" + "src": "2274:31:3" } ], - "id": 770, + "id": 823, "name": "ExpressionStatement", - "src": "2274:31:2" + "src": "2274:31:3" }, { "children": [ @@ -6336,23 +6336,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 785, + "referencedDeclaration": 838, "type": "function ()", "value": "_processDeposit" }, - "id": 771, + "id": 824, "name": "Identifier", - "src": "2311:15:2" + "src": "2311:15:3" } ], - "id": 772, + "id": 825, "name": "FunctionCall", - "src": "2311:17:2" + "src": "2311:17:3" } ], - "id": 773, + "id": 826, "name": "ExpressionStatement", - "src": "2311:17:2" + "src": "2311:17:3" }, { "children": [ @@ -6390,13 +6390,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 694, + "referencedDeclaration": 747, "type": "function (bytes32,uint32,uint256)", "value": "Deposit" }, - "id": 774, + "id": 827, "name": "Identifier", - "src": "2340:7:2" + "src": "2340:7:3" }, { "attributes": { @@ -6404,13 +6404,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 746, + "referencedDeclaration": 799, "type": "bytes32", "value": "_commitment" }, - "id": 775, + "id": 828, "name": "Identifier", - "src": "2348:11:2" + "src": "2348:11:3" }, { "attributes": { @@ -6418,13 +6418,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 760, + "referencedDeclaration": 813, "type": "uint32", "value": "insertedIndex" }, - "id": 776, + "id": 829, "name": "Identifier", - "src": "2361:13:2" + "src": "2361:13:3" }, { "attributes": { @@ -6444,38 +6444,38 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1005, + "referencedDeclaration": 1058, "type": "block", "value": "block" }, - "id": 777, + "id": 830, "name": "Identifier", - "src": "2376:5:2" + "src": "2376:5:3" } ], - "id": 778, + "id": 831, "name": "MemberAccess", - "src": "2376:15:2" + "src": "2376:15:3" } ], - "id": 779, + "id": 832, "name": "FunctionCall", - "src": "2340:52:2" + "src": "2340:52:3" } ], - "id": 780, + "id": 833, "name": "EmitStatement", - "src": "2335:57:2" + "src": "2335:57:3" } ], - "id": 781, + "id": 834, "name": "Block", - "src": "2141:256:2" + "src": "2141:256:3" } ], - "id": 782, + "id": 835, "name": "FunctionDefinition", - "src": "2073:324:2" + "src": "2073:324:3" }, { "attributes": { @@ -6488,7 +6488,7 @@ null ], "name": "_processDeposit", - "scope": 970, + "scope": 1023, "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" @@ -6501,9 +6501,9 @@ ] }, "children": [], - "id": 783, + "id": 836, "name": "ParameterList", - "src": "2484:2:2" + "src": "2484:2:3" }, { "attributes": { @@ -6512,14 +6512,14 @@ ] }, "children": [], - "id": 784, + "id": 837, "name": "ParameterList", - "src": "2495:0:2" + "src": "2495:0:3" } ], - "id": 785, + "id": 838, "name": "FunctionDefinition", - "src": "2460:36:2" + "src": "2460:36:3" }, { "attributes": { @@ -6528,7 +6528,7 @@ "isConstructor": false, "kind": "function", "name": "withdraw", - "scope": 970, + "scope": 1023, "stateMutability": "payable", "superFunction": null, "visibility": "external" @@ -6540,7 +6540,7 @@ "attributes": { "constant": false, "name": "_proof", - "scope": 873, + "scope": 926, "stateVariable": false, "storageLocation": "calldata", "type": "bytes", @@ -6553,20 +6553,20 @@ "name": "bytes", "type": "bytes" }, - "id": 786, + "id": 839, "name": "ElementaryTypeName", - "src": "2911:5:2" + "src": "2911:5:3" } ], - "id": 787, + "id": 840, "name": "VariableDeclaration", - "src": "2911:21:2" + "src": "2911:21:3" }, { "attributes": { "constant": false, "name": "_root", - "scope": 873, + "scope": 926, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -6579,20 +6579,20 @@ "name": "bytes32", "type": "bytes32" }, - "id": 788, + "id": 841, "name": "ElementaryTypeName", - "src": "2934:7:2" + "src": "2934:7:3" } ], - "id": 789, + "id": 842, "name": "VariableDeclaration", - "src": "2934:13:2" + "src": "2934:13:3" }, { "attributes": { "constant": false, "name": "_nullifierHash", - "scope": 873, + "scope": 926, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -6605,20 +6605,20 @@ "name": "bytes32", "type": "bytes32" }, - "id": 790, + "id": 843, "name": "ElementaryTypeName", - "src": "2949:7:2" + "src": "2949:7:3" } ], - "id": 791, + "id": 844, "name": "VariableDeclaration", - "src": "2949:22:2" + "src": "2949:22:3" }, { "attributes": { "constant": false, "name": "_recipient", - "scope": 873, + "scope": 926, "stateVariable": false, "storageLocation": "default", "type": "address payable", @@ -6632,20 +6632,20 @@ "stateMutability": "payable", "type": "address payable" }, - "id": 792, + "id": 845, "name": "ElementaryTypeName", - "src": "2973:15:2" + "src": "2973:15:3" } ], - "id": 793, + "id": 846, "name": "VariableDeclaration", - "src": "2973:26:2" + "src": "2973:26:3" }, { "attributes": { "constant": false, "name": "_relayer", - "scope": 873, + "scope": 926, "stateVariable": false, "storageLocation": "default", "type": "address payable", @@ -6659,20 +6659,20 @@ "stateMutability": "payable", "type": "address payable" }, - "id": 794, + "id": 847, "name": "ElementaryTypeName", - "src": "3001:15:2" + "src": "3001:15:3" } ], - "id": 795, + "id": 848, "name": "VariableDeclaration", - "src": "3001:24:2" + "src": "3001:24:3" }, { "attributes": { "constant": false, "name": "_fee", - "scope": 873, + "scope": 926, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -6685,20 +6685,20 @@ "name": "uint256", "type": "uint256" }, - "id": 796, + "id": 849, "name": "ElementaryTypeName", - "src": "3027:7:2" + "src": "3027:7:3" } ], - "id": 797, + "id": 850, "name": "VariableDeclaration", - "src": "3027:12:2" + "src": "3027:12:3" }, { "attributes": { "constant": false, "name": "_refund", - "scope": 873, + "scope": 926, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -6711,19 +6711,19 @@ "name": "uint256", "type": "uint256" }, - "id": 798, + "id": 851, "name": "ElementaryTypeName", - "src": "3041:7:2" + "src": "3041:7:3" } ], - "id": 799, + "id": 852, "name": "VariableDeclaration", - "src": "3041:15:2" + "src": "3041:15:3" } ], - "id": 800, + "id": 853, "name": "ParameterList", - "src": "2910:147:2" + "src": "2910:147:3" }, { "attributes": { @@ -6732,9 +6732,9 @@ ] }, "children": [], - "id": 803, + "id": 856, "name": "ParameterList", - "src": "3088:0:2" + "src": "3088:0:3" }, { "attributes": { @@ -6747,18 +6747,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 999, + "referencedDeclaration": 1052, "type": "modifier ()", "value": "nonReentrant" }, - "id": 801, + "id": 854, "name": "Identifier", - "src": "3075:12:2" + "src": "3075:12:3" } ], - "id": 802, + "id": 855, "name": "ModifierInvocation", - "src": "3075:12:2" + "src": "3075:12:3" }, { "children": [ @@ -6792,16 +6792,16 @@ } ], "overloadedDeclarations": [ - 1018, - 1019 + 1071, + 1072 ], - "referencedDeclaration": 1019, + "referencedDeclaration": 1072, "type": "function (bool,string memory) pure", "value": "require" }, - "id": 804, + "id": 857, "name": "Identifier", - "src": "3094:7:2" + "src": "3094:7:3" }, { "attributes": { @@ -6824,13 +6824,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 797, + "referencedDeclaration": 850, "type": "uint256", "value": "_fee" }, - "id": 805, + "id": 858, "name": "Identifier", - "src": "3102:4:2" + "src": "3102:4:3" }, { "attributes": { @@ -6838,18 +6838,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 660, + "referencedDeclaration": 713, "type": "uint256", "value": "denomination" }, - "id": 806, + "id": 859, "name": "Identifier", - "src": "3110:12:2" + "src": "3110:12:3" } ], - "id": 807, + "id": 860, "name": "BinaryOperation", - "src": "3102:20:2" + "src": "3102:20:3" }, { "attributes": { @@ -6864,19 +6864,19 @@ "type": "literal_string \"Fee exceeds transfer value\"", "value": "Fee exceeds transfer value" }, - "id": 808, + "id": 861, "name": "Literal", - "src": "3124:28:2" + "src": "3124:28:3" } ], - "id": 809, + "id": 862, "name": "FunctionCall", - "src": "3094:59:2" + "src": "3094:59:3" } ], - "id": 810, + "id": 863, "name": "ExpressionStatement", - "src": "3094:59:2" + "src": "3094:59:3" }, { "children": [ @@ -6908,16 +6908,16 @@ } ], "overloadedDeclarations": [ - 1018, - 1019 + 1071, + 1072 ], - "referencedDeclaration": 1019, + "referencedDeclaration": 1072, "type": "function (bool,string memory) pure", "value": "require" }, - "id": 811, + "id": 864, "name": "Identifier", - "src": "3159:7:2" + "src": "3159:7:3" }, { "attributes": { @@ -6947,13 +6947,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 664, + "referencedDeclaration": 717, "type": "mapping(bytes32 => bool)", "value": "nullifierHashes" }, - "id": 812, + "id": 865, "name": "Identifier", - "src": "3168:15:2" + "src": "3168:15:3" }, { "attributes": { @@ -6961,23 +6961,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 791, + "referencedDeclaration": 844, "type": "bytes32", "value": "_nullifierHash" }, - "id": 813, + "id": 866, "name": "Identifier", - "src": "3184:14:2" + "src": "3184:14:3" } ], - "id": 814, + "id": 867, "name": "IndexAccess", - "src": "3168:31:2" + "src": "3168:31:3" } ], - "id": 815, + "id": 868, "name": "UnaryOperation", - "src": "3167:32:2" + "src": "3167:32:3" }, { "attributes": { @@ -6992,19 +6992,19 @@ "type": "literal_string \"The note has been already spent\"", "value": "The note has been already spent" }, - "id": 816, + "id": 869, "name": "Literal", - "src": "3201:33:2" + "src": "3201:33:3" } ], - "id": 817, + "id": 870, "name": "FunctionCall", - "src": "3159:76:2" + "src": "3159:76:3" } ], - "id": 818, + "id": 871, "name": "ExpressionStatement", - "src": "3159:76:2" + "src": "3159:76:3" }, { "children": [ @@ -7036,16 +7036,16 @@ } ], "overloadedDeclarations": [ - 1018, - 1019 + 1071, + 1072 ], - "referencedDeclaration": 1019, + "referencedDeclaration": 1072, "type": "function (bool,string memory) pure", "value": "require" }, - "id": 819, + "id": 872, "name": "Identifier", - "src": "3241:7:2" + "src": "3241:7:3" }, { "attributes": { @@ -7073,13 +7073,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 621, + "referencedDeclaration": 674, "type": "function (bytes32) view returns (bool)", "value": "isKnownRoot" }, - "id": 820, + "id": 873, "name": "Identifier", - "src": "3249:11:2" + "src": "3249:11:3" }, { "attributes": { @@ -7087,18 +7087,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 789, + "referencedDeclaration": 842, "type": "bytes32", "value": "_root" }, - "id": 821, + "id": 874, "name": "Identifier", - "src": "3261:5:2" + "src": "3261:5:3" } ], - "id": 822, + "id": 875, "name": "FunctionCall", - "src": "3249:18:2" + "src": "3249:18:3" }, { "attributes": { @@ -7113,19 +7113,19 @@ "type": "literal_string \"Cannot find your merkle root\"", "value": "Cannot find your merkle root" }, - "id": 823, + "id": 876, "name": "Literal", - "src": "3269:30:2" + "src": "3269:30:3" } ], - "id": 824, + "id": 877, "name": "FunctionCall", - "src": "3241:59:2" + "src": "3241:59:3" } ], - "id": 825, + "id": 878, "name": "ExpressionStatement", - "src": "3241:59:2" + "src": "3241:59:3" }, { "children": [ @@ -7157,16 +7157,16 @@ } ], "overloadedDeclarations": [ - 1018, - 1019 + 1071, + 1072 ], - "referencedDeclaration": 1019, + "referencedDeclaration": 1072, "type": "function (bool,string memory) pure", "value": "require" }, - "id": 826, + "id": 879, "name": "Identifier", - "src": "3339:7:2" + "src": "3339:7:3" }, { "attributes": { @@ -7200,7 +7200,7 @@ "isPure": false, "lValueRequested": false, "member_name": "verifyProof", - "referencedDeclaration": 647, + "referencedDeclaration": 700, "type": "function (bytes memory,uint256[6] memory) external returns (bool)" }, "children": [ @@ -7210,18 +7210,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 670, + "referencedDeclaration": 723, "type": "contract IVerifier", "value": "verifier" }, - "id": 827, + "id": 880, "name": "Identifier", - "src": "3347:8:2" + "src": "3347:8:3" } ], - "id": 828, + "id": 881, "name": "MemberAccess", - "src": "3347:20:2" + "src": "3347:20:3" }, { "attributes": { @@ -7229,13 +7229,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 787, + "referencedDeclaration": 840, "type": "bytes calldata", "value": "_proof" }, - "id": 829, + "id": 882, "name": "Identifier", - "src": "3368:6:2" + "src": "3368:6:3" }, { "attributes": { @@ -7278,9 +7278,9 @@ "type": "type(uint256)", "value": "uint256" }, - "id": 830, + "id": 883, "name": "ElementaryTypeNameExpression", - "src": "3377:7:2" + "src": "3377:7:3" }, { "attributes": { @@ -7288,18 +7288,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 789, + "referencedDeclaration": 842, "type": "bytes32", "value": "_root" }, - "id": 831, + "id": 884, "name": "Identifier", - "src": "3385:5:2" + "src": "3385:5:3" } ], - "id": 832, + "id": 885, "name": "FunctionCall", - "src": "3377:14:2" + "src": "3377:14:3" }, { "attributes": { @@ -7331,9 +7331,9 @@ "type": "type(uint256)", "value": "uint256" }, - "id": 833, + "id": 886, "name": "ElementaryTypeNameExpression", - "src": "3393:7:2" + "src": "3393:7:3" }, { "attributes": { @@ -7341,18 +7341,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 791, + "referencedDeclaration": 844, "type": "bytes32", "value": "_nullifierHash" }, - "id": 834, + "id": 887, "name": "Identifier", - "src": "3401:14:2" + "src": "3401:14:3" } ], - "id": 835, + "id": 888, "name": "FunctionCall", - "src": "3393:23:2" + "src": "3393:23:3" }, { "attributes": { @@ -7384,9 +7384,9 @@ "type": "type(uint256)", "value": "uint256" }, - "id": 836, + "id": 889, "name": "ElementaryTypeNameExpression", - "src": "3418:7:2" + "src": "3418:7:3" }, { "attributes": { @@ -7394,18 +7394,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 793, + "referencedDeclaration": 846, "type": "address payable", "value": "_recipient" }, - "id": 837, + "id": 890, "name": "Identifier", - "src": "3426:10:2" + "src": "3426:10:3" } ], - "id": 838, + "id": 891, "name": "FunctionCall", - "src": "3418:19:2" + "src": "3418:19:3" }, { "attributes": { @@ -7437,9 +7437,9 @@ "type": "type(uint256)", "value": "uint256" }, - "id": 839, + "id": 892, "name": "ElementaryTypeNameExpression", - "src": "3439:7:2" + "src": "3439:7:3" }, { "attributes": { @@ -7447,18 +7447,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 795, + "referencedDeclaration": 848, "type": "address payable", "value": "_relayer" }, - "id": 840, + "id": 893, "name": "Identifier", - "src": "3447:8:2" + "src": "3447:8:3" } ], - "id": 841, + "id": 894, "name": "FunctionCall", - "src": "3439:17:2" + "src": "3439:17:3" }, { "attributes": { @@ -7466,13 +7466,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 797, + "referencedDeclaration": 850, "type": "uint256", "value": "_fee" }, - "id": 842, + "id": 895, "name": "Identifier", - "src": "3458:4:2" + "src": "3458:4:3" }, { "attributes": { @@ -7480,23 +7480,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 799, + "referencedDeclaration": 852, "type": "uint256", "value": "_refund" }, - "id": 843, + "id": 896, "name": "Identifier", - "src": "3464:7:2" + "src": "3464:7:3" } ], - "id": 844, + "id": 897, "name": "TupleExpression", - "src": "3376:96:2" + "src": "3376:96:3" } ], - "id": 845, + "id": 898, "name": "FunctionCall", - "src": "3347:126:2" + "src": "3347:126:3" }, { "attributes": { @@ -7511,19 +7511,19 @@ "type": "literal_string \"Invalid withdraw proof\"", "value": "Invalid withdraw proof" }, - "id": 846, + "id": 899, "name": "Literal", - "src": "3475:24:2" + "src": "3475:24:3" } ], - "id": 847, + "id": 900, "name": "FunctionCall", - "src": "3339:161:2" + "src": "3339:161:3" } ], - "id": 848, + "id": 901, "name": "ExpressionStatement", - "src": "3339:161:2" + "src": "3339:161:3" }, { "children": [ @@ -7554,13 +7554,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 664, + "referencedDeclaration": 717, "type": "mapping(bytes32 => bool)", "value": "nullifierHashes" }, - "id": 849, + "id": 902, "name": "Identifier", - "src": "3507:15:2" + "src": "3507:15:3" }, { "attributes": { @@ -7568,18 +7568,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 791, + "referencedDeclaration": 844, "type": "bytes32", "value": "_nullifierHash" }, - "id": 850, + "id": 903, "name": "Identifier", - "src": "3523:14:2" + "src": "3523:14:3" } ], - "id": 851, + "id": 904, "name": "IndexAccess", - "src": "3507:31:2" + "src": "3507:31:3" }, { "attributes": { @@ -7594,19 +7594,19 @@ "type": "bool", "value": "true" }, - "id": 852, + "id": 905, "name": "Literal", - "src": "3541:4:2" + "src": "3541:4:3" } ], - "id": 853, + "id": 906, "name": "Assignment", - "src": "3507:38:2" + "src": "3507:38:3" } ], - "id": 854, + "id": 907, "name": "ExpressionStatement", - "src": "3507:38:2" + "src": "3507:38:3" }, { "children": [ @@ -7652,13 +7652,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 886, + "referencedDeclaration": 939, "type": "function (address payable,address payable,uint256,uint256,address)", "value": "_processWithdraw" }, - "id": 855, + "id": 908, "name": "Identifier", - "src": "3551:16:2" + "src": "3551:16:3" }, { "attributes": { @@ -7666,13 +7666,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 793, + "referencedDeclaration": 846, "type": "address payable", "value": "_recipient" }, - "id": 856, + "id": 909, "name": "Identifier", - "src": "3568:10:2" + "src": "3568:10:3" }, { "attributes": { @@ -7680,13 +7680,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 795, + "referencedDeclaration": 848, "type": "address payable", "value": "_relayer" }, - "id": 857, + "id": 910, "name": "Identifier", - "src": "3580:8:2" + "src": "3580:8:3" }, { "attributes": { @@ -7694,13 +7694,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 797, + "referencedDeclaration": 850, "type": "uint256", "value": "_fee" }, - "id": 858, + "id": 911, "name": "Identifier", - "src": "3590:4:2" + "src": "3590:4:3" }, { "attributes": { @@ -7708,13 +7708,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 799, + "referencedDeclaration": 852, "type": "uint256", "value": "_refund" }, - "id": 859, + "id": 912, "name": "Identifier", - "src": "3596:7:2" + "src": "3596:7:3" }, { "attributes": { @@ -7744,7 +7744,7 @@ "isPure": false, "lValueRequested": false, "member_name": "feeTo", - "referencedDeclaration": 653, + "referencedDeclaration": 706, "type": "function () view external returns (address)" }, "children": [ @@ -7754,33 +7754,33 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 672, + "referencedDeclaration": 725, "type": "contract IFeeManager", "value": "feeManager" }, - "id": 860, + "id": 913, "name": "Identifier", - "src": "3605:10:2" + "src": "3605:10:3" } ], - "id": 861, + "id": 914, "name": "MemberAccess", - "src": "3605:16:2" + "src": "3605:16:3" } ], - "id": 862, + "id": 915, "name": "FunctionCall", - "src": "3605:18:2" + "src": "3605:18:3" } ], - "id": 863, + "id": 916, "name": "FunctionCall", - "src": "3551:73:2" + "src": "3551:73:3" } ], - "id": 864, + "id": 917, "name": "ExpressionStatement", - "src": "3551:73:2" + "src": "3551:73:3" }, { "children": [ @@ -7822,13 +7822,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 704, + "referencedDeclaration": 757, "type": "function (address,bytes32,address,uint256)", "value": "Withdrawal" }, - "id": 865, + "id": 918, "name": "Identifier", - "src": "3635:10:2" + "src": "3635:10:3" }, { "attributes": { @@ -7836,13 +7836,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 793, + "referencedDeclaration": 846, "type": "address payable", "value": "_recipient" }, - "id": 866, + "id": 919, "name": "Identifier", - "src": "3646:10:2" + "src": "3646:10:3" }, { "attributes": { @@ -7850,13 +7850,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 791, + "referencedDeclaration": 844, "type": "bytes32", "value": "_nullifierHash" }, - "id": 867, + "id": 920, "name": "Identifier", - "src": "3658:14:2" + "src": "3658:14:3" }, { "attributes": { @@ -7864,13 +7864,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 795, + "referencedDeclaration": 848, "type": "address payable", "value": "_relayer" }, - "id": 868, + "id": 921, "name": "Identifier", - "src": "3674:8:2" + "src": "3674:8:3" }, { "attributes": { @@ -7878,33 +7878,33 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 797, + "referencedDeclaration": 850, "type": "uint256", "value": "_fee" }, - "id": 869, + "id": 922, "name": "Identifier", - "src": "3684:4:2" + "src": "3684:4:3" } ], - "id": 870, + "id": 923, "name": "FunctionCall", - "src": "3635:54:2" + "src": "3635:54:3" } ], - "id": 871, + "id": 924, "name": "EmitStatement", - "src": "3630:59:2" + "src": "3630:59:3" } ], - "id": 872, + "id": 925, "name": "Block", - "src": "3088:606:2" + "src": "3088:606:3" } ], - "id": 873, + "id": 926, "name": "FunctionDefinition", - "src": "2893:801:2" + "src": "2893:801:3" }, { "attributes": { @@ -7917,7 +7917,7 @@ null ], "name": "_processWithdraw", - "scope": 970, + "scope": 1023, "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" @@ -7929,7 +7929,7 @@ "attributes": { "constant": false, "name": "_recipient", - "scope": 886, + "scope": 939, "stateVariable": false, "storageLocation": "default", "type": "address payable", @@ -7943,20 +7943,20 @@ "stateMutability": "payable", "type": "address payable" }, - "id": 874, + "id": 927, "name": "ElementaryTypeName", - "src": "3783:15:2" + "src": "3783:15:3" } ], - "id": 875, + "id": 928, "name": "VariableDeclaration", - "src": "3783:26:2" + "src": "3783:26:3" }, { "attributes": { "constant": false, "name": "_relayer", - "scope": 886, + "scope": 939, "stateVariable": false, "storageLocation": "default", "type": "address payable", @@ -7970,20 +7970,20 @@ "stateMutability": "payable", "type": "address payable" }, - "id": 876, + "id": 929, "name": "ElementaryTypeName", - "src": "3811:15:2" + "src": "3811:15:3" } ], - "id": 877, + "id": 930, "name": "VariableDeclaration", - "src": "3811:24:2" + "src": "3811:24:3" }, { "attributes": { "constant": false, "name": "_relayer_fee", - "scope": 886, + "scope": 939, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -7996,20 +7996,20 @@ "name": "uint256", "type": "uint256" }, - "id": 878, + "id": 931, "name": "ElementaryTypeName", - "src": "3837:7:2" + "src": "3837:7:3" } ], - "id": 879, + "id": 932, "name": "VariableDeclaration", - "src": "3837:20:2" + "src": "3837:20:3" }, { "attributes": { "constant": false, "name": "_refund", - "scope": 886, + "scope": 939, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -8022,20 +8022,20 @@ "name": "uint256", "type": "uint256" }, - "id": 880, + "id": 933, "name": "ElementaryTypeName", - "src": "3859:7:2" + "src": "3859:7:3" } ], - "id": 881, + "id": 934, "name": "VariableDeclaration", - "src": "3859:15:2" + "src": "3859:15:3" }, { "attributes": { "constant": false, "name": "_feeTo", - "scope": 886, + "scope": 939, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -8049,19 +8049,19 @@ "stateMutability": "nonpayable", "type": "address" }, - "id": 882, + "id": 935, "name": "ElementaryTypeName", - "src": "3876:7:2" + "src": "3876:7:3" } ], - "id": 883, + "id": 936, "name": "VariableDeclaration", - "src": "3876:14:2" + "src": "3876:14:3" } ], - "id": 884, + "id": 937, "name": "ParameterList", - "src": "3782:109:2" + "src": "3782:109:3" }, { "attributes": { @@ -8070,14 +8070,14 @@ ] }, "children": [], - "id": 885, + "id": 938, "name": "ParameterList", - "src": "3900:0:2" + "src": "3900:0:3" } ], - "id": 886, + "id": 939, "name": "FunctionDefinition", - "src": "3757:144:2" + "src": "3757:144:3" }, { "attributes": { @@ -8089,7 +8089,7 @@ null ], "name": "isSpent", - "scope": 970, + "scope": 1023, "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -8101,7 +8101,7 @@ "attributes": { "constant": false, "name": "_nullifierHash", - "scope": 898, + "scope": 951, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -8114,19 +8114,19 @@ "name": "bytes32", "type": "bytes32" }, - "id": 887, + "id": 940, "name": "ElementaryTypeName", - "src": "3968:7:2" + "src": "3968:7:3" } ], - "id": 888, + "id": 941, "name": "VariableDeclaration", - "src": "3968:22:2" + "src": "3968:22:3" } ], - "id": 889, + "id": 942, "name": "ParameterList", - "src": "3967:24:2" + "src": "3967:24:3" }, { "children": [ @@ -8134,7 +8134,7 @@ "attributes": { "constant": false, "name": "", - "scope": 898, + "scope": 951, "stateVariable": false, "storageLocation": "default", "type": "bool", @@ -8147,25 +8147,25 @@ "name": "bool", "type": "bool" }, - "id": 890, + "id": 943, "name": "ElementaryTypeName", - "src": "4012:4:2" + "src": "4012:4:3" } ], - "id": 891, + "id": 944, "name": "VariableDeclaration", - "src": "4012:4:2" + "src": "4012:4:3" } ], - "id": 892, + "id": 945, "name": "ParameterList", - "src": "4011:6:2" + "src": "4011:6:3" }, { "children": [ { "attributes": { - "functionReturnParameters": 892 + "functionReturnParameters": 945 }, "children": [ { @@ -8184,13 +8184,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 664, + "referencedDeclaration": 717, "type": "mapping(bytes32 => bool)", "value": "nullifierHashes" }, - "id": 893, + "id": 946, "name": "Identifier", - "src": "4031:15:2" + "src": "4031:15:3" }, { "attributes": { @@ -8198,33 +8198,33 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 888, + "referencedDeclaration": 941, "type": "bytes32", "value": "_nullifierHash" }, - "id": 894, + "id": 947, "name": "Identifier", - "src": "4047:14:2" + "src": "4047:14:3" } ], - "id": 895, + "id": 948, "name": "IndexAccess", - "src": "4031:31:2" + "src": "4031:31:3" } ], - "id": 896, + "id": 949, "name": "Return", - "src": "4024:38:2" + "src": "4024:38:3" } ], - "id": 897, + "id": 950, "name": "Block", - "src": "4018:49:2" + "src": "4018:49:3" } ], - "id": 898, + "id": 951, "name": "FunctionDefinition", - "src": "3951:116:2" + "src": "3951:116:3" }, { "attributes": { @@ -8236,7 +8236,7 @@ null ], "name": "isSpentArray", - "scope": 970, + "scope": 1023, "stateMutability": "view", "superFunction": null, "visibility": "external" @@ -8248,7 +8248,7 @@ "attributes": { "constant": false, "name": "_nullifierHashes", - "scope": 943, + "scope": 996, "stateVariable": false, "storageLocation": "calldata", "type": "bytes32[]", @@ -8267,24 +8267,24 @@ "name": "bytes32", "type": "bytes32" }, - "id": 899, + "id": 952, "name": "ElementaryTypeName", - "src": "4150:7:2" + "src": "4150:7:3" } ], - "id": 900, + "id": 953, "name": "ArrayTypeName", - "src": "4150:9:2" + "src": "4150:9:3" } ], - "id": 901, + "id": 954, "name": "VariableDeclaration", - "src": "4150:35:2" + "src": "4150:35:3" } ], - "id": 902, + "id": 955, "name": "ParameterList", - "src": "4149:37:2" + "src": "4149:37:3" }, { "children": [ @@ -8292,7 +8292,7 @@ "attributes": { "constant": false, "name": "spent", - "scope": 943, + "scope": 996, "stateVariable": false, "storageLocation": "memory", "type": "bool[]", @@ -8311,24 +8311,24 @@ "name": "bool", "type": "bool" }, - "id": 903, + "id": 956, "name": "ElementaryTypeName", - "src": "4209:4:2" + "src": "4209:4:3" } ], - "id": 904, + "id": 957, "name": "ArrayTypeName", - "src": "4209:6:2" + "src": "4209:6:3" } ], - "id": 905, + "id": 958, "name": "VariableDeclaration", - "src": "4209:19:2" + "src": "4209:19:3" } ], - "id": 906, + "id": 959, "name": "ParameterList", - "src": "4208:21:2" + "src": "4208:21:3" }, { "children": [ @@ -8351,13 +8351,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 905, + "referencedDeclaration": 958, "type": "bool[] memory", "value": "spent" }, - "id": 907, + "id": 960, "name": "Identifier", - "src": "4236:5:2" + "src": "4236:5:3" }, { "attributes": { @@ -8400,19 +8400,19 @@ "name": "bool", "type": "bool" }, - "id": 908, + "id": 961, "name": "ElementaryTypeName", - "src": "4248:4:2" + "src": "4248:4:3" } ], - "id": 909, + "id": 962, "name": "ArrayTypeName", - "src": "4248:6:2" + "src": "4248:6:3" } ], - "id": 910, + "id": 963, "name": "NewExpression", - "src": "4244:10:2" + "src": "4244:10:3" }, { "attributes": { @@ -8432,40 +8432,40 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 901, + "referencedDeclaration": 954, "type": "bytes32[] calldata", "value": "_nullifierHashes" }, - "id": 911, + "id": 964, "name": "Identifier", - "src": "4255:16:2" + "src": "4255:16:3" } ], - "id": 912, + "id": 965, "name": "MemberAccess", - "src": "4255:23:2" + "src": "4255:23:3" } ], - "id": 913, + "id": 966, "name": "FunctionCall", - "src": "4244:35:2" + "src": "4244:35:3" } ], - "id": 914, + "id": 967, "name": "Assignment", - "src": "4236:43:2" + "src": "4236:43:3" } ], - "id": 915, + "id": 968, "name": "ExpressionStatement", - "src": "4236:43:2" + "src": "4236:43:3" }, { "children": [ { "attributes": { "assignments": [ - 917 + 970 ] }, "children": [ @@ -8473,7 +8473,7 @@ "attributes": { "constant": false, "name": "i", - "scope": 941, + "scope": 994, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -8486,14 +8486,14 @@ "name": "uint", "type": "uint256" }, - "id": 916, + "id": 969, "name": "ElementaryTypeName", - "src": "4289:4:2" + "src": "4289:4:3" } ], - "id": 917, + "id": 970, "name": "VariableDeclaration", - "src": "4289:6:2" + "src": "4289:6:3" }, { "attributes": { @@ -8508,14 +8508,14 @@ "type": "int_const 0", "value": "0" }, - "id": 918, + "id": 971, "name": "Literal", - "src": "4298:1:2" + "src": "4298:1:3" } ], - "id": 919, + "id": 972, "name": "VariableDeclarationStatement", - "src": "4289:10:2" + "src": "4289:10:3" }, { "attributes": { @@ -8538,13 +8538,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 917, + "referencedDeclaration": 970, "type": "uint256", "value": "i" }, - "id": 920, + "id": 973, "name": "Identifier", - "src": "4301:1:2" + "src": "4301:1:3" }, { "attributes": { @@ -8564,23 +8564,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 901, + "referencedDeclaration": 954, "type": "bytes32[] calldata", "value": "_nullifierHashes" }, - "id": 921, + "id": 974, "name": "Identifier", - "src": "4305:16:2" + "src": "4305:16:3" } ], - "id": 922, + "id": 975, "name": "MemberAccess", - "src": "4305:23:2" + "src": "4305:23:3" } ], - "id": 923, + "id": 976, "name": "BinaryOperation", - "src": "4301:27:2" + "src": "4301:27:3" }, { "children": [ @@ -8602,23 +8602,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 917, + "referencedDeclaration": 970, "type": "uint256", "value": "i" }, - "id": 924, + "id": 977, "name": "Identifier", - "src": "4330:1:2" + "src": "4330:1:3" } ], - "id": 925, + "id": 978, "name": "UnaryOperation", - "src": "4330:3:2" + "src": "4330:3:3" } ], - "id": 926, + "id": 979, "name": "ExpressionStatement", - "src": "4330:3:2" + "src": "4330:3:3" }, { "children": [ @@ -8653,13 +8653,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 898, + "referencedDeclaration": 951, "type": "function (bytes32) view returns (bool)", "value": "isSpent" }, - "id": 927, + "id": 980, "name": "Identifier", - "src": "4347:7:2" + "src": "4347:7:3" }, { "attributes": { @@ -8677,13 +8677,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 901, + "referencedDeclaration": 954, "type": "bytes32[] calldata", "value": "_nullifierHashes" }, - "id": 928, + "id": 981, "name": "Identifier", - "src": "4355:16:2" + "src": "4355:16:3" }, { "attributes": { @@ -8691,23 +8691,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 917, + "referencedDeclaration": 970, "type": "uint256", "value": "i" }, - "id": 929, + "id": 982, "name": "Identifier", - "src": "4372:1:2" + "src": "4372:1:3" } ], - "id": 930, + "id": 983, "name": "IndexAccess", - "src": "4355:19:2" + "src": "4355:19:3" } ], - "id": 931, + "id": 984, "name": "FunctionCall", - "src": "4347:28:2" + "src": "4347:28:3" }, { "children": [ @@ -8740,13 +8740,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 905, + "referencedDeclaration": 958, "type": "bool[] memory", "value": "spent" }, - "id": 932, + "id": 985, "name": "Identifier", - "src": "4387:5:2" + "src": "4387:5:3" }, { "attributes": { @@ -8754,18 +8754,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 917, + "referencedDeclaration": 970, "type": "uint256", "value": "i" }, - "id": 933, + "id": 986, "name": "Identifier", - "src": "4393:1:2" + "src": "4393:1:3" } ], - "id": 934, + "id": 987, "name": "IndexAccess", - "src": "4387:8:2" + "src": "4387:8:3" }, { "attributes": { @@ -8780,49 +8780,49 @@ "type": "bool", "value": "true" }, - "id": 935, + "id": 988, "name": "Literal", - "src": "4398:4:2" + "src": "4398:4:3" } ], - "id": 936, + "id": 989, "name": "Assignment", - "src": "4387:15:2" + "src": "4387:15:3" } ], - "id": 937, + "id": 990, "name": "ExpressionStatement", - "src": "4387:15:2" + "src": "4387:15:3" } ], - "id": 938, + "id": 991, "name": "Block", - "src": "4377:34:2" + "src": "4377:34:3" } ], - "id": 939, + "id": 992, "name": "IfStatement", - "src": "4343:68:2" + "src": "4343:68:3" } ], - "id": 940, + "id": 993, "name": "Block", - "src": "4335:82:2" + "src": "4335:82:3" } ], - "id": 941, + "id": 994, "name": "ForStatement", - "src": "4285:132:2" + "src": "4285:132:3" } ], - "id": 942, + "id": 995, "name": "Block", - "src": "4230:191:2" + "src": "4230:191:3" } ], - "id": 943, + "id": 996, "name": "FunctionDefinition", - "src": "4128:293:2" + "src": "4128:293:3" }, { "attributes": { @@ -8831,7 +8831,7 @@ "isConstructor": false, "kind": "function", "name": "updateVerifier", - "scope": 970, + "scope": 1023, "stateMutability": "nonpayable", "superFunction": null, "visibility": "external" @@ -8843,7 +8843,7 @@ "attributes": { "constant": false, "name": "_newVerifier", - "scope": 957, + "scope": 1010, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -8857,19 +8857,19 @@ "stateMutability": "nonpayable", "type": "address" }, - "id": 944, + "id": 997, "name": "ElementaryTypeName", - "src": "4675:7:2" + "src": "4675:7:3" } ], - "id": 945, + "id": 998, "name": "VariableDeclaration", - "src": "4675:20:2" + "src": "4675:20:3" } ], - "id": 946, + "id": 999, "name": "ParameterList", - "src": "4674:22:2" + "src": "4674:22:3" }, { "attributes": { @@ -8878,9 +8878,9 @@ ] }, "children": [], - "id": 949, + "id": 1002, "name": "ParameterList", - "src": "4719:0:2" + "src": "4719:0:3" }, { "attributes": { @@ -8893,18 +8893,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 686, + "referencedDeclaration": 739, "type": "modifier ()", "value": "onlyOperator" }, - "id": 947, + "id": 1000, "name": "Identifier", - "src": "4706:12:2" + "src": "4706:12:3" } ], - "id": 948, + "id": 1001, "name": "ModifierInvocation", - "src": "4706:12:2" + "src": "4706:12:3" }, { "children": [ @@ -8927,13 +8927,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 670, + "referencedDeclaration": 723, "type": "contract IVerifier", "value": "verifier" }, - "id": 950, + "id": 1003, "name": "Identifier", - "src": "4725:8:2" + "src": "4725:8:3" }, { "attributes": { @@ -8961,13 +8961,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 648, + "referencedDeclaration": 701, "type": "type(contract IVerifier)", "value": "IVerifier" }, - "id": 951, + "id": 1004, "name": "Identifier", - "src": "4736:9:2" + "src": "4736:9:3" }, { "attributes": { @@ -8975,38 +8975,38 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 945, + "referencedDeclaration": 998, "type": "address", "value": "_newVerifier" }, - "id": 952, + "id": 1005, "name": "Identifier", - "src": "4746:12:2" + "src": "4746:12:3" } ], - "id": 953, + "id": 1006, "name": "FunctionCall", - "src": "4736:23:2" + "src": "4736:23:3" } ], - "id": 954, + "id": 1007, "name": "Assignment", - "src": "4725:34:2" + "src": "4725:34:3" } ], - "id": 955, + "id": 1008, "name": "ExpressionStatement", - "src": "4725:34:2" + "src": "4725:34:3" } ], - "id": 956, + "id": 1009, "name": "Block", - "src": "4719:45:2" + "src": "4719:45:3" } ], - "id": 957, + "id": 1010, "name": "FunctionDefinition", - "src": "4651:113:2" + "src": "4651:113:3" }, { "attributes": { @@ -9015,7 +9015,7 @@ "isConstructor": false, "kind": "function", "name": "changeOperator", - "scope": 970, + "scope": 1023, "stateMutability": "nonpayable", "superFunction": null, "visibility": "external" @@ -9027,7 +9027,7 @@ "attributes": { "constant": false, "name": "_newOperator", - "scope": 969, + "scope": 1022, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -9041,19 +9041,19 @@ "stateMutability": "nonpayable", "type": "address" }, - "id": 958, + "id": 1011, "name": "ElementaryTypeName", - "src": "4838:7:2" + "src": "4838:7:3" } ], - "id": 959, + "id": 1012, "name": "VariableDeclaration", - "src": "4838:20:2" + "src": "4838:20:3" } ], - "id": 960, + "id": 1013, "name": "ParameterList", - "src": "4837:22:2" + "src": "4837:22:3" }, { "attributes": { @@ -9062,9 +9062,9 @@ ] }, "children": [], - "id": 963, + "id": 1016, "name": "ParameterList", - "src": "4882:0:2" + "src": "4882:0:3" }, { "attributes": { @@ -9077,18 +9077,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 686, + "referencedDeclaration": 739, "type": "modifier ()", "value": "onlyOperator" }, - "id": 961, + "id": 1014, "name": "Identifier", - "src": "4869:12:2" + "src": "4869:12:3" } ], - "id": 962, + "id": 1015, "name": "ModifierInvocation", - "src": "4869:12:2" + "src": "4869:12:3" }, { "children": [ @@ -9111,13 +9111,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 674, + "referencedDeclaration": 727, "type": "address", "value": "operator" }, - "id": 964, + "id": 1017, "name": "Identifier", - "src": "4888:8:2" + "src": "4888:8:3" }, { "attributes": { @@ -9125,43 +9125,43 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 959, + "referencedDeclaration": 1012, "type": "address", "value": "_newOperator" }, - "id": 965, + "id": 1018, "name": "Identifier", - "src": "4899:12:2" + "src": "4899:12:3" } ], - "id": 966, + "id": 1019, "name": "Assignment", - "src": "4888:23:2" + "src": "4888:23:3" } ], - "id": 967, + "id": 1020, "name": "ExpressionStatement", - "src": "4888:23:2" + "src": "4888:23:3" } ], - "id": 968, + "id": 1021, "name": "Block", - "src": "4882:34:2" + "src": "4882:34:3" } ], - "id": 969, + "id": 1022, "name": "FunctionDefinition", - "src": "4814:102:2" + "src": "4814:102:3" } ], - "id": 970, + "id": 1023, "name": "ContractDefinition", - "src": "318:4600:2" + "src": "318:4600:3" } ], - "id": 971, + "id": 1024, "name": "SourceUnit", - "src": "0:4919:2" + "src": "0:4919:3" }, "compiler": { "name": "solc", @@ -9169,7 +9169,7 @@ }, "networks": {}, "schemaVersion": "3.3.4", - "updatedAt": "2021-04-02T22:21:29.535Z", + "updatedAt": "2021-04-02T22:52:06.040Z", "devdoc": { "methods": {} }, diff --git a/client/contracts/Migrations.json b/client/contracts/Migrations.json index c7d4749..f827627 100644 --- a/client/contracts/Migrations.json +++ b/client/contracts/Migrations.json @@ -1480,7 +1480,7 @@ } }, "schemaVersion": "3.3.4", - "updatedAt": "2021-03-22T02:54:26.428Z", + "updatedAt": "2021-04-02T22:56:11.661Z", "networkType": "ethereum", "devdoc": { "methods": {} diff --git a/client/contracts/Tornado.json b/client/contracts/Tornado.json index b79c737..7a1ad3a 100644 --- a/client/contracts/Tornado.json +++ b/client/contracts/Tornado.json @@ -550,47 +550,47 @@ "absolutePath": "/Users/brianli/dotfiles/tornado-core/contracts/Tornado.sol", "exportedSymbols": { "IFeeManager": [ - 654 + 707 ], "IVerifier": [ - 648 + 701 ], "Tornado": [ - 970 + 1023 ] }, - "id": 971, + "id": 1024, "nodeType": "SourceUnit", "nodes": [ { - "id": 634, + "id": 687, "literals": [ "solidity", "0.5", ".17" ], "nodeType": "PragmaDirective", - "src": "0:23:2" + "src": "0:23:3" }, { "absolutePath": "/Users/brianli/dotfiles/tornado-core/contracts/MerkleTreeWithHistory.sol", "file": "./MerkleTreeWithHistory.sol", - "id": 635, + "id": 688, "nodeType": "ImportDirective", - "scope": 971, - "sourceUnit": 633, - "src": "25:37:2", + "scope": 1024, + "sourceUnit": 686, + "src": "25:37:3", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "@openzeppelin/contracts/utils/ReentrancyGuard.sol", "file": "@openzeppelin/contracts/utils/ReentrancyGuard.sol", - "id": 636, + "id": 689, "nodeType": "ImportDirective", - "scope": 971, - "sourceUnit": 1001, - "src": "63:59:2", + "scope": 1024, + "sourceUnit": 1054, + "src": "63:59:3", "symbolAliases": [], "unitAlias": "" }, @@ -600,9 +600,9 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": false, - "id": 648, + "id": 701, "linearizedBaseContracts": [ - 648 + 701 ], "name": "IVerifier", "nodeType": "ContractDefinition", @@ -610,23 +610,23 @@ { "body": null, "documentation": null, - "id": 647, + "id": 700, "implemented": false, "kind": "function", "modifiers": [], "name": "verifyProof", "nodeType": "FunctionDefinition", "parameters": { - "id": 643, + "id": 696, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 638, + "id": 691, "name": "_proof", "nodeType": "VariableDeclaration", - "scope": 647, - "src": "168:19:2", + "scope": 700, + "src": "168:19:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -634,10 +634,10 @@ "typeString": "bytes" }, "typeName": { - "id": 637, + "id": 690, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "168:5:2", + "src": "168:5:3", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -648,11 +648,11 @@ }, { "constant": false, - "id": 642, + "id": 695, "name": "_input", "nodeType": "VariableDeclaration", - "scope": 647, - "src": "189:24:2", + "scope": 700, + "src": "189:24:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -661,27 +661,27 @@ }, "typeName": { "baseType": { - "id": 639, + "id": 692, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "189:7:2", + "src": "189:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 641, + "id": 694, "length": { "argumentTypes": null, "hexValue": "36", - "id": 640, + "id": 693, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "197:1:2", + "src": "197:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_6_by_1", @@ -690,7 +690,7 @@ "value": "6" }, "nodeType": "ArrayTypeName", - "src": "189:10:2", + "src": "189:10:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_storage_ptr", "typeString": "uint256[6]" @@ -700,19 +700,19 @@ "visibility": "internal" } ], - "src": "167:47:2" + "src": "167:47:3" }, "returnParameters": { - "id": 646, + "id": 699, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 645, + "id": 698, "name": "", "nodeType": "VariableDeclaration", - "scope": 647, - "src": "230:4:2", + "scope": 700, + "src": "230:4:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -720,10 +720,10 @@ "typeString": "bool" }, "typeName": { - "id": 644, + "id": 697, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "230:4:2", + "src": "230:4:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -733,17 +733,17 @@ "visibility": "internal" } ], - "src": "229:6:2" + "src": "229:6:3" }, - "scope": 648, - "src": "147:89:2", + "scope": 701, + "src": "147:89:3", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 971, - "src": "124:114:2" + "scope": 1024, + "src": "124:114:3" }, { "baseContracts": [], @@ -751,9 +751,9 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": false, - "id": 654, + "id": 707, "linearizedBaseContracts": [ - 654 + 707 ], "name": "IFeeManager", "nodeType": "ContractDefinition", @@ -761,29 +761,29 @@ { "body": null, "documentation": null, - "id": 653, + "id": 706, "implemented": false, "kind": "function", "modifiers": [], "name": "feeTo", "nodeType": "FunctionDefinition", "parameters": { - "id": 649, + "id": 702, "nodeType": "ParameterList", "parameters": [], - "src": "279:2:2" + "src": "279:2:3" }, "returnParameters": { - "id": 652, + "id": 705, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 651, + "id": 704, "name": "", "nodeType": "VariableDeclaration", - "scope": 653, - "src": "305:7:2", + "scope": 706, + "src": "305:7:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -791,10 +791,10 @@ "typeString": "address" }, "typeName": { - "id": 650, + "id": 703, "name": "address", "nodeType": "ElementaryTypeName", - "src": "305:7:2", + "src": "305:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -805,17 +805,17 @@ "visibility": "internal" } ], - "src": "304:9:2" + "src": "304:9:3" }, - "scope": 654, - "src": "265:49:2", + "scope": 707, + "src": "265:49:3", "stateMutability": "view", "superFunction": null, "visibility": "external" } ], - "scope": 971, - "src": "240:76:2" + "scope": 1024, + "src": "240:76:3" }, { "baseContracts": [ @@ -823,62 +823,62 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 655, + "id": 708, "name": "MerkleTreeWithHistory", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 632, - "src": "338:21:2", + "referencedDeclaration": 685, + "src": "338:21:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_MerkleTreeWithHistory_$632", + "typeIdentifier": "t_contract$_MerkleTreeWithHistory_$685", "typeString": "contract MerkleTreeWithHistory" } }, - "id": 656, + "id": 709, "nodeType": "InheritanceSpecifier", - "src": "338:21:2" + "src": "338:21:3" }, { "arguments": null, "baseName": { "contractScope": null, - "id": 657, + "id": 710, "name": "ReentrancyGuard", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1000, - "src": "361:15:2", + "referencedDeclaration": 1053, + "src": "361:15:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_ReentrancyGuard_$1000", + "typeIdentifier": "t_contract$_ReentrancyGuard_$1053", "typeString": "contract ReentrancyGuard" } }, - "id": 658, + "id": 711, "nodeType": "InheritanceSpecifier", - "src": "361:15:2" + "src": "361:15:3" } ], "contractDependencies": [ - 632, - 1000 + 685, + 1053 ], "contractKind": "contract", "documentation": null, "fullyImplemented": false, - "id": 970, + "id": 1023, "linearizedBaseContracts": [ - 970, - 1000, - 632 + 1023, + 1053, + 685 ], "name": "Tornado", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 660, + "id": 713, "name": "denomination", "nodeType": "VariableDeclaration", - "scope": 970, - "src": "381:27:2", + "scope": 1023, + "src": "381:27:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -886,10 +886,10 @@ "typeString": "uint256" }, "typeName": { - "id": 659, + "id": 712, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "381:7:2", + "src": "381:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -900,11 +900,11 @@ }, { "constant": false, - "id": 664, + "id": 717, "name": "nullifierHashes", "nodeType": "VariableDeclaration", - "scope": 970, - "src": "412:47:2", + "scope": 1023, + "src": "412:47:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -912,28 +912,28 @@ "typeString": "mapping(bytes32 => bool)" }, "typeName": { - "id": 663, + "id": 716, "keyType": { - "id": 661, + "id": 714, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "420:7:2", + "src": "420:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", - "src": "412:24:2", + "src": "412:24:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" }, "valueType": { - "id": 662, + "id": 715, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "431:4:2", + "src": "431:4:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -945,11 +945,11 @@ }, { "constant": false, - "id": 668, + "id": 721, "name": "commitments", "nodeType": "VariableDeclaration", - "scope": 970, - "src": "554:43:2", + "scope": 1023, + "src": "554:43:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -957,28 +957,28 @@ "typeString": "mapping(bytes32 => bool)" }, "typeName": { - "id": 667, + "id": 720, "keyType": { - "id": 665, + "id": 718, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "562:7:2", + "src": "562:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", - "src": "554:24:2", + "src": "554:24:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" }, "valueType": { - "id": 666, + "id": 719, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "573:4:2", + "src": "573:4:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -990,26 +990,26 @@ }, { "constant": false, - "id": 670, + "id": 723, "name": "verifier", "nodeType": "VariableDeclaration", - "scope": 970, - "src": "601:25:2", + "scope": 1023, + "src": "601:25:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IVerifier_$648", + "typeIdentifier": "t_contract$_IVerifier_$701", "typeString": "contract IVerifier" }, "typeName": { "contractScope": null, - "id": 669, + "id": 722, "name": "IVerifier", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 648, - "src": "601:9:2", + "referencedDeclaration": 701, + "src": "601:9:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IVerifier_$648", + "typeIdentifier": "t_contract$_IVerifier_$701", "typeString": "contract IVerifier" } }, @@ -1018,26 +1018,26 @@ }, { "constant": false, - "id": 672, + "id": 725, "name": "feeManager", "nodeType": "VariableDeclaration", - "scope": 970, - "src": "630:29:2", + "scope": 1023, + "src": "630:29:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IFeeManager_$654", + "typeIdentifier": "t_contract$_IFeeManager_$707", "typeString": "contract IFeeManager" }, "typeName": { "contractScope": null, - "id": 671, + "id": 724, "name": "IFeeManager", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 654, - "src": "630:11:2", + "referencedDeclaration": 707, + "src": "630:11:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IFeeManager_$654", + "typeIdentifier": "t_contract$_IFeeManager_$707", "typeString": "contract IFeeManager" } }, @@ -1046,11 +1046,11 @@ }, { "constant": false, - "id": 674, + "id": 727, "name": "operator", "nodeType": "VariableDeclaration", - "scope": 970, - "src": "819:23:2", + "scope": 1023, + "src": "819:23:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1058,10 +1058,10 @@ "typeString": "address" }, "typeName": { - "id": 673, + "id": 726, "name": "address", "nodeType": "ElementaryTypeName", - "src": "819:7:2", + "src": "819:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1073,9 +1073,9 @@ }, { "body": { - "id": 685, + "id": 738, "nodeType": "Block", - "src": "868:90:2", + "src": "868:90:3", "statements": [ { "expression": { @@ -1087,7 +1087,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 680, + "id": 733, "isConstant": false, "isLValue": false, "isPure": false, @@ -1096,18 +1096,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 677, + "id": 730, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1015, - "src": "882:3:2", + "referencedDeclaration": 1068, + "src": "882:3:3", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 678, + "id": 731, "isConstant": false, "isLValue": false, "isPure": false, @@ -1115,7 +1115,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "882:10:2", + "src": "882:10:3", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -1125,18 +1125,18 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 679, + "id": 732, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 674, - "src": "896:8:2", + "referencedDeclaration": 727, + "src": "896:8:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "882:22:2", + "src": "882:22:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1145,14 +1145,14 @@ { "argumentTypes": null, "hexValue": "4f6e6c79206f70657261746f722063616e2063616c6c20746869732066756e6374696f6e2e", - "id": 681, + "id": 734, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "906:39:2", + "src": "906:39:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_e8393660073679be7a6133571fe2ca8983a31a683c72e9055f401ac33a2efffc", @@ -1172,21 +1172,21 @@ "typeString": "literal_string \"Only operator can call this function.\"" } ], - "id": 676, + "id": 729, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1018, - 1019 + 1071, + 1072 ], - "referencedDeclaration": 1019, - "src": "874:7:2", + "referencedDeclaration": 1072, + "src": "874:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 682, + "id": 735, "isConstant": false, "isLValue": false, "isPure": false, @@ -1194,54 +1194,54 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "874:72:2", + "src": "874:72:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 683, + "id": 736, "nodeType": "ExpressionStatement", - "src": "874:72:2" + "src": "874:72:3" }, { - "id": 684, + "id": 737, "nodeType": "PlaceholderStatement", - "src": "952:1:2" + "src": "952:1:3" } ] }, "documentation": null, - "id": 686, + "id": 739, "name": "onlyOperator", "nodeType": "ModifierDefinition", "parameters": { - "id": 675, + "id": 728, "nodeType": "ParameterList", "parameters": [], - "src": "868:0:2" + "src": "868:0:3" }, - "src": "846:112:2", + "src": "846:112:3", "visibility": "internal" }, { "anonymous": false, "documentation": null, - "id": 694, + "id": 747, "name": "Deposit", "nodeType": "EventDefinition", "parameters": { - "id": 693, + "id": 746, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 688, + "id": 741, "indexed": true, "name": "commitment", "nodeType": "VariableDeclaration", - "scope": 694, - "src": "976:26:2", + "scope": 747, + "src": "976:26:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1249,10 +1249,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 687, + "id": 740, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "976:7:2", + "src": "976:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1263,12 +1263,12 @@ }, { "constant": false, - "id": 690, + "id": 743, "indexed": false, "name": "leafIndex", "nodeType": "VariableDeclaration", - "scope": 694, - "src": "1004:16:2", + "scope": 747, + "src": "1004:16:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1276,10 +1276,10 @@ "typeString": "uint32" }, "typeName": { - "id": 689, + "id": 742, "name": "uint32", "nodeType": "ElementaryTypeName", - "src": "1004:6:2", + "src": "1004:6:3", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -1290,12 +1290,12 @@ }, { "constant": false, - "id": 692, + "id": 745, "indexed": false, "name": "timestamp", "nodeType": "VariableDeclaration", - "scope": 694, - "src": "1022:17:2", + "scope": 747, + "src": "1022:17:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1303,10 +1303,10 @@ "typeString": "uint256" }, "typeName": { - "id": 691, + "id": 744, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1022:7:2", + "src": "1022:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1316,28 +1316,28 @@ "visibility": "internal" } ], - "src": "975:65:2" + "src": "975:65:3" }, - "src": "962:79:2" + "src": "962:79:3" }, { "anonymous": false, "documentation": null, - "id": 704, + "id": 757, "name": "Withdrawal", "nodeType": "EventDefinition", "parameters": { - "id": 703, + "id": 756, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 696, + "id": 749, "indexed": false, "name": "to", "nodeType": "VariableDeclaration", - "scope": 704, - "src": "1061:10:2", + "scope": 757, + "src": "1061:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1345,10 +1345,10 @@ "typeString": "address" }, "typeName": { - "id": 695, + "id": 748, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1061:7:2", + "src": "1061:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1360,12 +1360,12 @@ }, { "constant": false, - "id": 698, + "id": 751, "indexed": false, "name": "nullifierHash", "nodeType": "VariableDeclaration", - "scope": 704, - "src": "1073:21:2", + "scope": 757, + "src": "1073:21:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1373,10 +1373,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 697, + "id": 750, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1073:7:2", + "src": "1073:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1387,12 +1387,12 @@ }, { "constant": false, - "id": 700, + "id": 753, "indexed": true, "name": "relayer", "nodeType": "VariableDeclaration", - "scope": 704, - "src": "1096:23:2", + "scope": 757, + "src": "1096:23:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1400,10 +1400,10 @@ "typeString": "address" }, "typeName": { - "id": 699, + "id": 752, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1096:7:2", + "src": "1096:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1415,12 +1415,12 @@ }, { "constant": false, - "id": 702, + "id": 755, "indexed": false, "name": "fee", "nodeType": "VariableDeclaration", - "scope": 704, - "src": "1121:11:2", + "scope": 757, + "src": "1121:11:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1428,10 +1428,10 @@ "typeString": "uint256" }, "typeName": { - "id": 701, + "id": 754, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1121:7:2", + "src": "1121:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1441,15 +1441,15 @@ "visibility": "internal" } ], - "src": "1060:73:2" + "src": "1060:73:3" }, - "src": "1044:90:2" + "src": "1044:90:3" }, { "body": { - "id": 743, + "id": 796, "nodeType": "Block", - "src": "1631:194:2", + "src": "1631:194:3", "statements": [ { "expression": { @@ -1461,19 +1461,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 723, + "id": 776, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 721, + "id": 774, "name": "_denomination", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 710, - "src": "1645:13:2", + "referencedDeclaration": 763, + "src": "1645:13:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1484,14 +1484,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 722, + "id": 775, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1661:1:2", + "src": "1661:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1499,7 +1499,7 @@ }, "value": "0" }, - "src": "1645:17:2", + "src": "1645:17:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1508,14 +1508,14 @@ { "argumentTypes": null, "hexValue": "64656e6f6d696e6174696f6e2073686f756c642062652067726561746572207468616e2030", - "id": 724, + "id": 777, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1664:39:2", + "src": "1664:39:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_04818fb803bf7e7ff6c9059d97eae335b77b108931ead0a529924d35ccaf3fc8", @@ -1535,21 +1535,21 @@ "typeString": "literal_string \"denomination should be greater than 0\"" } ], - "id": 720, + "id": 773, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1018, - 1019 + 1071, + 1072 ], - "referencedDeclaration": 1019, - "src": "1637:7:2", + "referencedDeclaration": 1072, + "src": "1637:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 725, + "id": 778, "isConstant": false, "isLValue": false, "isPure": false, @@ -1557,34 +1557,34 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1637:67:2", + "src": "1637:67:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 726, + "id": 779, "nodeType": "ExpressionStatement", - "src": "1637:67:2" + "src": "1637:67:3" }, { "expression": { "argumentTypes": null, - "id": 729, + "id": 782, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 727, + "id": 780, "name": "verifier", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 670, - "src": "1710:8:2", + "referencedDeclaration": 723, + "src": "1710:8:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IVerifier_$648", + "typeIdentifier": "t_contract$_IVerifier_$701", "typeString": "contract IVerifier" } }, @@ -1592,45 +1592,45 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 728, + "id": 781, "name": "_verifier", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 706, - "src": "1721:9:2", + "referencedDeclaration": 759, + "src": "1721:9:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IVerifier_$648", + "typeIdentifier": "t_contract$_IVerifier_$701", "typeString": "contract IVerifier" } }, - "src": "1710:20:2", + "src": "1710:20:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IVerifier_$648", + "typeIdentifier": "t_contract$_IVerifier_$701", "typeString": "contract IVerifier" } }, - "id": 730, + "id": 783, "nodeType": "ExpressionStatement", - "src": "1710:20:2" + "src": "1710:20:3" }, { "expression": { "argumentTypes": null, - "id": 733, + "id": 786, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 731, + "id": 784, "name": "feeManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 672, - "src": "1736:10:2", + "referencedDeclaration": 725, + "src": "1736:10:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IFeeManager_$654", + "typeIdentifier": "t_contract$_IFeeManager_$707", "typeString": "contract IFeeManager" } }, @@ -1638,43 +1638,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 732, + "id": 785, "name": "_feeManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 708, - "src": "1749:11:2", + "referencedDeclaration": 761, + "src": "1749:11:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IFeeManager_$654", + "typeIdentifier": "t_contract$_IFeeManager_$707", "typeString": "contract IFeeManager" } }, - "src": "1736:24:2", + "src": "1736:24:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IFeeManager_$654", + "typeIdentifier": "t_contract$_IFeeManager_$707", "typeString": "contract IFeeManager" } }, - "id": 734, + "id": 787, "nodeType": "ExpressionStatement", - "src": "1736:24:2" + "src": "1736:24:3" }, { "expression": { "argumentTypes": null, - "id": 737, + "id": 790, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 735, + "id": 788, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 674, - "src": "1766:8:2", + "referencedDeclaration": 727, + "src": "1766:8:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1684,43 +1684,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 736, + "id": 789, "name": "_operator", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 714, - "src": "1777:9:2", + "referencedDeclaration": 767, + "src": "1777:9:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1766:20:2", + "src": "1766:20:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 738, + "id": 791, "nodeType": "ExpressionStatement", - "src": "1766:20:2" + "src": "1766:20:3" }, { "expression": { "argumentTypes": null, - "id": 741, + "id": 794, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 739, + "id": 792, "name": "denomination", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 660, - "src": "1792:12:2", + "referencedDeclaration": 713, + "src": "1792:12:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1730,31 +1730,31 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 740, + "id": 793, "name": "_denomination", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 710, - "src": "1807:13:2", + "referencedDeclaration": 763, + "src": "1807:13:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1792:28:2", + "src": "1792:28:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 742, + "id": 795, "nodeType": "ExpressionStatement", - "src": "1792:28:2" + "src": "1792:28:3" } ] }, "documentation": "@dev The constructor\n@param _verifier the address of SNARK verifier for this contract\n@param _denomination transfer amount for each deposit\n@param _merkleTreeHeight the height of deposits' Merkle Tree\n@param _operator operator address (see operator comment above)", - "id": 744, + "id": 797, "implemented": true, "kind": "constructor", "modifiers": [ @@ -1762,64 +1762,64 @@ "arguments": [ { "argumentTypes": null, - "id": 717, + "id": 770, "name": "_merkleTreeHeight", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 712, - "src": "1605:17:2", + "referencedDeclaration": 765, + "src": "1605:17:3", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } } ], - "id": 718, + "id": 771, "modifierName": { "argumentTypes": null, - "id": 716, + "id": 769, "name": "MerkleTreeWithHistory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 632, - "src": "1583:21:2", + "referencedDeclaration": 685, + "src": "1583:21:3", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_MerkleTreeWithHistory_$632_$", + "typeIdentifier": "t_type$_t_contract$_MerkleTreeWithHistory_$685_$", "typeString": "type(contract MerkleTreeWithHistory)" } }, "nodeType": "ModifierInvocation", - "src": "1583:40:2" + "src": "1583:40:3" } ], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 715, + "id": 768, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 706, + "id": 759, "name": "_verifier", "nodeType": "VariableDeclaration", - "scope": 744, - "src": "1450:19:2", + "scope": 797, + "src": "1450:19:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IVerifier_$648", + "typeIdentifier": "t_contract$_IVerifier_$701", "typeString": "contract IVerifier" }, "typeName": { "contractScope": null, - "id": 705, + "id": 758, "name": "IVerifier", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 648, - "src": "1450:9:2", + "referencedDeclaration": 701, + "src": "1450:9:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IVerifier_$648", + "typeIdentifier": "t_contract$_IVerifier_$701", "typeString": "contract IVerifier" } }, @@ -1828,26 +1828,26 @@ }, { "constant": false, - "id": 708, + "id": 761, "name": "_feeManager", "nodeType": "VariableDeclaration", - "scope": 744, - "src": "1475:23:2", + "scope": 797, + "src": "1475:23:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IFeeManager_$654", + "typeIdentifier": "t_contract$_IFeeManager_$707", "typeString": "contract IFeeManager" }, "typeName": { "contractScope": null, - "id": 707, + "id": 760, "name": "IFeeManager", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 654, - "src": "1475:11:2", + "referencedDeclaration": 707, + "src": "1475:11:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IFeeManager_$654", + "typeIdentifier": "t_contract$_IFeeManager_$707", "typeString": "contract IFeeManager" } }, @@ -1856,11 +1856,11 @@ }, { "constant": false, - "id": 710, + "id": 763, "name": "_denomination", "nodeType": "VariableDeclaration", - "scope": 744, - "src": "1504:21:2", + "scope": 797, + "src": "1504:21:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1868,10 +1868,10 @@ "typeString": "uint256" }, "typeName": { - "id": 709, + "id": 762, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1504:7:2", + "src": "1504:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1882,11 +1882,11 @@ }, { "constant": false, - "id": 712, + "id": 765, "name": "_merkleTreeHeight", "nodeType": "VariableDeclaration", - "scope": 744, - "src": "1531:24:2", + "scope": 797, + "src": "1531:24:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1894,10 +1894,10 @@ "typeString": "uint32" }, "typeName": { - "id": 711, + "id": 764, "name": "uint32", "nodeType": "ElementaryTypeName", - "src": "1531:6:2", + "src": "1531:6:3", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -1908,11 +1908,11 @@ }, { "constant": false, - "id": 714, + "id": 767, "name": "_operator", "nodeType": "VariableDeclaration", - "scope": 744, - "src": "1561:17:2", + "scope": 797, + "src": "1561:17:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1920,10 +1920,10 @@ "typeString": "address" }, "typeName": { - "id": 713, + "id": 766, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1561:7:2", + "src": "1561:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1934,25 +1934,25 @@ "visibility": "internal" } ], - "src": "1444:138:2" + "src": "1444:138:3" }, "returnParameters": { - "id": 719, + "id": 772, "nodeType": "ParameterList", "parameters": [], - "src": "1631:0:2" + "src": "1631:0:3" }, - "scope": 970, - "src": "1433:392:2", + "scope": 1023, + "src": "1433:392:3", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 781, + "id": 834, "nodeType": "Block", - "src": "2141:256:2", + "src": "2141:256:3", "statements": [ { "expression": { @@ -1960,7 +1960,7 @@ "arguments": [ { "argumentTypes": null, - "id": 755, + "id": 808, "isConstant": false, "isLValue": false, "isPure": false, @@ -1968,31 +1968,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "2155:25:2", + "src": "2155:25:3", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 752, + "id": 805, "name": "commitments", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 668, - "src": "2156:11:2", + "referencedDeclaration": 721, + "src": "2156:11:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 754, + "id": 807, "indexExpression": { "argumentTypes": null, - "id": 753, + "id": 806, "name": "_commitment", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 746, - "src": "2168:11:2", + "referencedDeclaration": 799, + "src": "2168:11:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2003,7 +2003,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2156:24:2", + "src": "2156:24:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2017,14 +2017,14 @@ { "argumentTypes": null, "hexValue": "54686520636f6d6d69746d656e7420686173206265656e207375626d6974746564", - "id": 756, + "id": 809, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2182:35:2", + "src": "2182:35:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae5f231636554c1cb3bf839359e4dfbb338ccb221c7c5dbdf2da91ddc6e2ee6b", @@ -2044,21 +2044,21 @@ "typeString": "literal_string \"The commitment has been submitted\"" } ], - "id": 751, + "id": 804, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1018, - 1019 + 1071, + 1072 ], - "referencedDeclaration": 1019, - "src": "2147:7:2", + "referencedDeclaration": 1072, + "src": "2147:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 757, + "id": 810, "isConstant": false, "isLValue": false, "isPure": false, @@ -2066,28 +2066,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2147:71:2", + "src": "2147:71:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 758, + "id": 811, "nodeType": "ExpressionStatement", - "src": "2147:71:2" + "src": "2147:71:3" }, { "assignments": [ - 760 + 813 ], "declarations": [ { "constant": false, - "id": 760, + "id": 813, "name": "insertedIndex", "nodeType": "VariableDeclaration", - "scope": 781, - "src": "2225:20:2", + "scope": 834, + "src": "2225:20:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2095,10 +2095,10 @@ "typeString": "uint32" }, "typeName": { - "id": 759, + "id": 812, "name": "uint32", "nodeType": "ElementaryTypeName", - "src": "2225:6:2", + "src": "2225:6:3", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -2108,18 +2108,18 @@ "visibility": "internal" } ], - "id": 764, + "id": 817, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 762, + "id": 815, "name": "_commitment", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 746, - "src": "2256:11:2", + "referencedDeclaration": 799, + "src": "2256:11:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2133,18 +2133,18 @@ "typeString": "bytes32" } ], - "id": 761, + "id": 814, "name": "_insert", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 574, - "src": "2248:7:2", + "referencedDeclaration": 627, + "src": "2248:7:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$_t_uint32_$", "typeString": "function (bytes32) returns (uint32)" } }, - "id": 763, + "id": 816, "isConstant": false, "isLValue": false, "isPure": false, @@ -2152,19 +2152,19 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2248:20:2", + "src": "2248:20:3", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "VariableDeclarationStatement", - "src": "2225:43:2" + "src": "2225:43:3" }, { "expression": { "argumentTypes": null, - "id": 769, + "id": 822, "isConstant": false, "isLValue": false, "isPure": false, @@ -2173,26 +2173,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 765, + "id": 818, "name": "commitments", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 668, - "src": "2274:11:2", + "referencedDeclaration": 721, + "src": "2274:11:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 767, + "id": 820, "indexExpression": { "argumentTypes": null, - "id": 766, + "id": 819, "name": "_commitment", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 746, - "src": "2286:11:2", + "referencedDeclaration": 799, + "src": "2286:11:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2203,7 +2203,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2274:24:2", + "src": "2274:24:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2214,14 +2214,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 768, + "id": 821, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "2301:4:2", + "src": "2301:4:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -2229,15 +2229,15 @@ }, "value": "true" }, - "src": "2274:31:2", + "src": "2274:31:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 770, + "id": 823, "nodeType": "ExpressionStatement", - "src": "2274:31:2" + "src": "2274:31:3" }, { "expression": { @@ -2245,18 +2245,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 771, + "id": 824, "name": "_processDeposit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 785, - "src": "2311:15:2", + "referencedDeclaration": 838, + "src": "2311:15:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 772, + "id": 825, "isConstant": false, "isLValue": false, "isPure": false, @@ -2264,15 +2264,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2311:17:2", + "src": "2311:17:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 773, + "id": 826, "nodeType": "ExpressionStatement", - "src": "2311:17:2" + "src": "2311:17:3" }, { "eventCall": { @@ -2280,12 +2280,12 @@ "arguments": [ { "argumentTypes": null, - "id": 775, + "id": 828, "name": "_commitment", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 746, - "src": "2348:11:2", + "referencedDeclaration": 799, + "src": "2348:11:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2293,12 +2293,12 @@ }, { "argumentTypes": null, - "id": 776, + "id": 829, "name": "insertedIndex", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 760, - "src": "2361:13:2", + "referencedDeclaration": 813, + "src": "2361:13:3", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -2308,18 +2308,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 777, + "id": 830, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1005, - "src": "2376:5:2", + "referencedDeclaration": 1058, + "src": "2376:5:3", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, - "id": 778, + "id": 831, "isConstant": false, "isLValue": false, "isPure": false, @@ -2327,7 +2327,7 @@ "memberName": "timestamp", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2376:15:2", + "src": "2376:15:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2349,18 +2349,18 @@ "typeString": "uint256" } ], - "id": 774, + "id": 827, "name": "Deposit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 694, - "src": "2340:7:2", + "referencedDeclaration": 747, + "src": "2340:7:3", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint32_$_t_uint256_$returns$__$", "typeString": "function (bytes32,uint32,uint256)" } }, - "id": 779, + "id": 832, "isConstant": false, "isLValue": false, "isPure": false, @@ -2368,56 +2368,56 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2340:52:2", + "src": "2340:52:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 780, + "id": 833, "nodeType": "EmitStatement", - "src": "2335:57:2" + "src": "2335:57:3" } ] }, "documentation": "@dev Deposit funds into the contract. The caller must send (for ETH) or approve (for ERC20) value equal to or `denomination` of this instance.\n@param _commitment the note commitment, which is PedersenHash(nullifier + secret)", - "id": 782, + "id": 835, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, - "id": 749, + "id": 802, "modifierName": { "argumentTypes": null, - "id": 748, + "id": 801, "name": "nonReentrant", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 999, - "src": "2128:12:2", + "referencedDeclaration": 1052, + "src": "2128:12:3", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2128:12:2" + "src": "2128:12:3" } ], "name": "deposit", "nodeType": "FunctionDefinition", "parameters": { - "id": 747, + "id": 800, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 746, + "id": 799, "name": "_commitment", "nodeType": "VariableDeclaration", - "scope": 782, - "src": "2090:19:2", + "scope": 835, + "src": "2090:19:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2425,10 +2425,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 745, + "id": 798, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2090:7:2", + "src": "2090:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2438,16 +2438,16 @@ "visibility": "internal" } ], - "src": "2089:21:2" + "src": "2089:21:3" }, "returnParameters": { - "id": 750, + "id": 803, "nodeType": "ParameterList", "parameters": [], - "src": "2141:0:2" + "src": "2141:0:3" }, - "scope": 970, - "src": "2073:324:2", + "scope": 1023, + "src": "2073:324:3", "stateMutability": "payable", "superFunction": null, "visibility": "external" @@ -2455,35 +2455,35 @@ { "body": null, "documentation": "@dev this function is defined in a child contract ", - "id": 785, + "id": 838, "implemented": false, "kind": "function", "modifiers": [], "name": "_processDeposit", "nodeType": "FunctionDefinition", "parameters": { - "id": 783, + "id": 836, "nodeType": "ParameterList", "parameters": [], - "src": "2484:2:2" + "src": "2484:2:3" }, "returnParameters": { - "id": 784, + "id": 837, "nodeType": "ParameterList", "parameters": [], - "src": "2495:0:2" + "src": "2495:0:3" }, - "scope": 970, - "src": "2460:36:2", + "scope": 1023, + "src": "2460:36:3", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 872, + "id": 925, "nodeType": "Block", - "src": "3088:606:2", + "src": "3088:606:3", "statements": [ { "expression": { @@ -2495,19 +2495,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 807, + "id": 860, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 805, + "id": 858, "name": "_fee", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 797, - "src": "3102:4:2", + "referencedDeclaration": 850, + "src": "3102:4:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2517,18 +2517,18 @@ "operator": "<=", "rightExpression": { "argumentTypes": null, - "id": 806, + "id": 859, "name": "denomination", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 660, - "src": "3110:12:2", + "referencedDeclaration": 713, + "src": "3110:12:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3102:20:2", + "src": "3102:20:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2537,14 +2537,14 @@ { "argumentTypes": null, "hexValue": "4665652065786365656473207472616e736665722076616c7565", - "id": 808, + "id": 861, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3124:28:2", + "src": "3124:28:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_2ce218df547d416f80ea8a5deadaf9453d23523ffa5f2e880a48adfdb4053a9c", @@ -2564,21 +2564,21 @@ "typeString": "literal_string \"Fee exceeds transfer value\"" } ], - "id": 804, + "id": 857, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1018, - 1019 + 1071, + 1072 ], - "referencedDeclaration": 1019, - "src": "3094:7:2", + "referencedDeclaration": 1072, + "src": "3094:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 809, + "id": 862, "isConstant": false, "isLValue": false, "isPure": false, @@ -2586,15 +2586,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3094:59:2", + "src": "3094:59:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 810, + "id": 863, "nodeType": "ExpressionStatement", - "src": "3094:59:2" + "src": "3094:59:3" }, { "expression": { @@ -2602,7 +2602,7 @@ "arguments": [ { "argumentTypes": null, - "id": 815, + "id": 868, "isConstant": false, "isLValue": false, "isPure": false, @@ -2610,31 +2610,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "3167:32:2", + "src": "3167:32:3", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 812, + "id": 865, "name": "nullifierHashes", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 664, - "src": "3168:15:2", + "referencedDeclaration": 717, + "src": "3168:15:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 814, + "id": 867, "indexExpression": { "argumentTypes": null, - "id": 813, + "id": 866, "name": "_nullifierHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 791, - "src": "3184:14:2", + "referencedDeclaration": 844, + "src": "3184:14:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2645,7 +2645,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3168:31:2", + "src": "3168:31:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2659,14 +2659,14 @@ { "argumentTypes": null, "hexValue": "546865206e6f746520686173206265656e20616c7265616479207370656e74", - "id": 816, + "id": 869, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3201:33:2", + "src": "3201:33:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_a1bef92d7a18b1c6975dc8de68df6140a52afea05a2c6c91da2b1562c617e896", @@ -2686,21 +2686,21 @@ "typeString": "literal_string \"The note has been already spent\"" } ], - "id": 811, + "id": 864, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1018, - 1019 + 1071, + 1072 ], - "referencedDeclaration": 1019, - "src": "3159:7:2", + "referencedDeclaration": 1072, + "src": "3159:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 817, + "id": 870, "isConstant": false, "isLValue": false, "isPure": false, @@ -2708,15 +2708,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3159:76:2", + "src": "3159:76:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 818, + "id": 871, "nodeType": "ExpressionStatement", - "src": "3159:76:2" + "src": "3159:76:3" }, { "expression": { @@ -2727,12 +2727,12 @@ "arguments": [ { "argumentTypes": null, - "id": 821, + "id": 874, "name": "_root", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 789, - "src": "3261:5:2", + "referencedDeclaration": 842, + "src": "3261:5:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2746,18 +2746,18 @@ "typeString": "bytes32" } ], - "id": 820, + "id": 873, "name": "isKnownRoot", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 621, - "src": "3249:11:2", + "referencedDeclaration": 674, + "src": "3249:11:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$", "typeString": "function (bytes32) view returns (bool)" } }, - "id": 822, + "id": 875, "isConstant": false, "isLValue": false, "isPure": false, @@ -2765,7 +2765,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3249:18:2", + "src": "3249:18:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2774,14 +2774,14 @@ { "argumentTypes": null, "hexValue": "43616e6e6f742066696e6420796f7572206d65726b6c6520726f6f74", - "id": 823, + "id": 876, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3269:30:2", + "src": "3269:30:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_2a69086763073955418d2fd7dfee3d2f1fbc5b21047a216b7855d3f313d8e204", @@ -2801,21 +2801,21 @@ "typeString": "literal_string \"Cannot find your merkle root\"" } ], - "id": 819, + "id": 872, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1018, - 1019 + 1071, + 1072 ], - "referencedDeclaration": 1019, - "src": "3241:7:2", + "referencedDeclaration": 1072, + "src": "3241:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 824, + "id": 877, "isConstant": false, "isLValue": false, "isPure": false, @@ -2823,15 +2823,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3241:59:2", + "src": "3241:59:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 825, + "id": 878, "nodeType": "ExpressionStatement", - "src": "3241:59:2" + "src": "3241:59:3" }, { "expression": { @@ -2842,12 +2842,12 @@ "arguments": [ { "argumentTypes": null, - "id": 829, + "id": 882, "name": "_proof", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 787, - "src": "3368:6:2", + "referencedDeclaration": 840, + "src": "3368:6:3", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" @@ -2861,12 +2861,12 @@ "arguments": [ { "argumentTypes": null, - "id": 831, + "id": 884, "name": "_root", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 789, - "src": "3385:5:2", + "referencedDeclaration": 842, + "src": "3385:5:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2880,20 +2880,20 @@ "typeString": "bytes32" } ], - "id": 830, + "id": 883, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3377:7:2", + "src": "3377:7:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": "uint256" }, - "id": 832, + "id": 885, "isConstant": false, "isLValue": false, "isPure": false, @@ -2901,7 +2901,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3377:14:2", + "src": "3377:14:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2912,12 +2912,12 @@ "arguments": [ { "argumentTypes": null, - "id": 834, + "id": 887, "name": "_nullifierHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 791, - "src": "3401:14:2", + "referencedDeclaration": 844, + "src": "3401:14:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2931,20 +2931,20 @@ "typeString": "bytes32" } ], - "id": 833, + "id": 886, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3393:7:2", + "src": "3393:7:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": "uint256" }, - "id": 835, + "id": 888, "isConstant": false, "isLValue": false, "isPure": false, @@ -2952,7 +2952,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3393:23:2", + "src": "3393:23:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2963,12 +2963,12 @@ "arguments": [ { "argumentTypes": null, - "id": 837, + "id": 890, "name": "_recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 793, - "src": "3426:10:2", + "referencedDeclaration": 846, + "src": "3426:10:3", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -2982,20 +2982,20 @@ "typeString": "address payable" } ], - "id": 836, + "id": 889, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3418:7:2", + "src": "3418:7:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": "uint256" }, - "id": 838, + "id": 891, "isConstant": false, "isLValue": false, "isPure": false, @@ -3003,7 +3003,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3418:19:2", + "src": "3418:19:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3014,12 +3014,12 @@ "arguments": [ { "argumentTypes": null, - "id": 840, + "id": 893, "name": "_relayer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 795, - "src": "3447:8:2", + "referencedDeclaration": 848, + "src": "3447:8:3", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -3033,20 +3033,20 @@ "typeString": "address payable" } ], - "id": 839, + "id": 892, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3439:7:2", + "src": "3439:7:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": "uint256" }, - "id": 841, + "id": 894, "isConstant": false, "isLValue": false, "isPure": false, @@ -3054,7 +3054,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3439:17:2", + "src": "3439:17:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3062,12 +3062,12 @@ }, { "argumentTypes": null, - "id": 842, + "id": 895, "name": "_fee", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 797, - "src": "3458:4:2", + "referencedDeclaration": 850, + "src": "3458:4:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3075,26 +3075,26 @@ }, { "argumentTypes": null, - "id": 843, + "id": 896, "name": "_refund", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 799, - "src": "3464:7:2", + "referencedDeclaration": 852, + "src": "3464:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 844, + "id": 897, "isConstant": false, "isInlineArray": true, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "3376:96:2", + "src": "3376:96:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$6_memory_ptr", "typeString": "uint256[6] memory" @@ -3114,32 +3114,32 @@ ], "expression": { "argumentTypes": null, - "id": 827, + "id": 880, "name": "verifier", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 670, - "src": "3347:8:2", + "referencedDeclaration": 723, + "src": "3347:8:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IVerifier_$648", + "typeIdentifier": "t_contract$_IVerifier_$701", "typeString": "contract IVerifier" } }, - "id": 828, + "id": 881, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "verifyProof", "nodeType": "MemberAccess", - "referencedDeclaration": 647, - "src": "3347:20:2", + "referencedDeclaration": 700, + "src": "3347:20:3", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$_t_array$_t_uint256_$6_memory_ptr_$returns$_t_bool_$", "typeString": "function (bytes memory,uint256[6] memory) external returns (bool)" } }, - "id": 845, + "id": 898, "isConstant": false, "isLValue": false, "isPure": false, @@ -3147,7 +3147,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3347:126:2", + "src": "3347:126:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3156,14 +3156,14 @@ { "argumentTypes": null, "hexValue": "496e76616c69642077697468647261772070726f6f66", - "id": 846, + "id": 899, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3475:24:2", + "src": "3475:24:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_7021ea58137dba96e572e94936410b0b0e4cbc344e1ab2ee7f47660768b81ff4", @@ -3183,21 +3183,21 @@ "typeString": "literal_string \"Invalid withdraw proof\"" } ], - "id": 826, + "id": 879, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 1018, - 1019 + 1071, + 1072 ], - "referencedDeclaration": 1019, - "src": "3339:7:2", + "referencedDeclaration": 1072, + "src": "3339:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 847, + "id": 900, "isConstant": false, "isLValue": false, "isPure": false, @@ -3205,20 +3205,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3339:161:2", + "src": "3339:161:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 848, + "id": 901, "nodeType": "ExpressionStatement", - "src": "3339:161:2" + "src": "3339:161:3" }, { "expression": { "argumentTypes": null, - "id": 853, + "id": 906, "isConstant": false, "isLValue": false, "isPure": false, @@ -3227,26 +3227,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 849, + "id": 902, "name": "nullifierHashes", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 664, - "src": "3507:15:2", + "referencedDeclaration": 717, + "src": "3507:15:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 851, + "id": 904, "indexExpression": { "argumentTypes": null, - "id": 850, + "id": 903, "name": "_nullifierHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 791, - "src": "3523:14:2", + "referencedDeclaration": 844, + "src": "3523:14:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3257,7 +3257,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3507:31:2", + "src": "3507:31:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3268,14 +3268,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 852, + "id": 905, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3541:4:2", + "src": "3541:4:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -3283,15 +3283,15 @@ }, "value": "true" }, - "src": "3507:38:2", + "src": "3507:38:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 854, + "id": 907, "nodeType": "ExpressionStatement", - "src": "3507:38:2" + "src": "3507:38:3" }, { "expression": { @@ -3299,12 +3299,12 @@ "arguments": [ { "argumentTypes": null, - "id": 856, + "id": 909, "name": "_recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 793, - "src": "3568:10:2", + "referencedDeclaration": 846, + "src": "3568:10:3", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -3312,12 +3312,12 @@ }, { "argumentTypes": null, - "id": 857, + "id": 910, "name": "_relayer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 795, - "src": "3580:8:2", + "referencedDeclaration": 848, + "src": "3580:8:3", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -3325,12 +3325,12 @@ }, { "argumentTypes": null, - "id": 858, + "id": 911, "name": "_fee", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 797, - "src": "3590:4:2", + "referencedDeclaration": 850, + "src": "3590:4:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3338,12 +3338,12 @@ }, { "argumentTypes": null, - "id": 859, + "id": 912, "name": "_refund", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 799, - "src": "3596:7:2", + "referencedDeclaration": 852, + "src": "3596:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3356,32 +3356,32 @@ "argumentTypes": [], "expression": { "argumentTypes": null, - "id": 860, + "id": 913, "name": "feeManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 672, - "src": "3605:10:2", + "referencedDeclaration": 725, + "src": "3605:10:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IFeeManager_$654", + "typeIdentifier": "t_contract$_IFeeManager_$707", "typeString": "contract IFeeManager" } }, - "id": 861, + "id": 914, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "feeTo", "nodeType": "MemberAccess", - "referencedDeclaration": 653, - "src": "3605:16:2", + "referencedDeclaration": 706, + "src": "3605:16:3", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, - "id": 862, + "id": 915, "isConstant": false, "isLValue": false, "isPure": false, @@ -3389,7 +3389,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3605:18:2", + "src": "3605:18:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3419,18 +3419,18 @@ "typeString": "address" } ], - "id": 855, + "id": 908, "name": "_processWithdraw", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 886, - "src": "3551:16:2", + "referencedDeclaration": 939, + "src": "3551:16:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_address_payable_$_t_uint256_$_t_uint256_$_t_address_$returns$__$", "typeString": "function (address payable,address payable,uint256,uint256,address)" } }, - "id": 863, + "id": 916, "isConstant": false, "isLValue": false, "isPure": false, @@ -3438,15 +3438,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3551:73:2", + "src": "3551:73:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 864, + "id": 917, "nodeType": "ExpressionStatement", - "src": "3551:73:2" + "src": "3551:73:3" }, { "eventCall": { @@ -3454,12 +3454,12 @@ "arguments": [ { "argumentTypes": null, - "id": 866, + "id": 919, "name": "_recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 793, - "src": "3646:10:2", + "referencedDeclaration": 846, + "src": "3646:10:3", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -3467,12 +3467,12 @@ }, { "argumentTypes": null, - "id": 867, + "id": 920, "name": "_nullifierHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 791, - "src": "3658:14:2", + "referencedDeclaration": 844, + "src": "3658:14:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3480,12 +3480,12 @@ }, { "argumentTypes": null, - "id": 868, + "id": 921, "name": "_relayer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 795, - "src": "3674:8:2", + "referencedDeclaration": 848, + "src": "3674:8:3", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -3493,12 +3493,12 @@ }, { "argumentTypes": null, - "id": 869, + "id": 922, "name": "_fee", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 797, - "src": "3684:4:2", + "referencedDeclaration": 850, + "src": "3684:4:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3524,18 +3524,18 @@ "typeString": "uint256" } ], - "id": 865, + "id": 918, "name": "Withdrawal", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 704, - "src": "3635:10:2", + "referencedDeclaration": 757, + "src": "3635:10:3", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,bytes32,address,uint256)" } }, - "id": 870, + "id": 923, "isConstant": false, "isLValue": false, "isPure": false, @@ -3543,56 +3543,56 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3635:54:2", + "src": "3635:54:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 871, + "id": 924, "nodeType": "EmitStatement", - "src": "3630:59:2" + "src": "3630:59:3" } ] }, "documentation": "@dev Withdraw a deposit from the contract. `proof` is a zkSNARK proof data, and input is an array of circuit public inputs\n`input` array consists of:\n- merkle root of all deposits in the contract\n- hash of unique deposit nullifier to prevent double spends\n- the recipient of funds\n- optional fee that goes to the transaction sender (usually a relay)", - "id": 873, + "id": 926, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, - "id": 802, + "id": 855, "modifierName": { "argumentTypes": null, - "id": 801, + "id": 854, "name": "nonReentrant", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 999, - "src": "3075:12:2", + "referencedDeclaration": 1052, + "src": "3075:12:3", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "3075:12:2" + "src": "3075:12:3" } ], "name": "withdraw", "nodeType": "FunctionDefinition", "parameters": { - "id": 800, + "id": 853, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 787, + "id": 840, "name": "_proof", "nodeType": "VariableDeclaration", - "scope": 873, - "src": "2911:21:2", + "scope": 926, + "src": "2911:21:3", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { @@ -3600,10 +3600,10 @@ "typeString": "bytes" }, "typeName": { - "id": 786, + "id": 839, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2911:5:2", + "src": "2911:5:3", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -3614,11 +3614,11 @@ }, { "constant": false, - "id": 789, + "id": 842, "name": "_root", "nodeType": "VariableDeclaration", - "scope": 873, - "src": "2934:13:2", + "scope": 926, + "src": "2934:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3626,10 +3626,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 788, + "id": 841, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2934:7:2", + "src": "2934:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3640,11 +3640,11 @@ }, { "constant": false, - "id": 791, + "id": 844, "name": "_nullifierHash", "nodeType": "VariableDeclaration", - "scope": 873, - "src": "2949:22:2", + "scope": 926, + "src": "2949:22:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3652,10 +3652,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 790, + "id": 843, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2949:7:2", + "src": "2949:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3666,11 +3666,11 @@ }, { "constant": false, - "id": 793, + "id": 846, "name": "_recipient", "nodeType": "VariableDeclaration", - "scope": 873, - "src": "2973:26:2", + "scope": 926, + "src": "2973:26:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3678,10 +3678,10 @@ "typeString": "address payable" }, "typeName": { - "id": 792, + "id": 845, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2973:15:2", + "src": "2973:15:3", "stateMutability": "payable", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -3693,11 +3693,11 @@ }, { "constant": false, - "id": 795, + "id": 848, "name": "_relayer", "nodeType": "VariableDeclaration", - "scope": 873, - "src": "3001:24:2", + "scope": 926, + "src": "3001:24:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3705,10 +3705,10 @@ "typeString": "address payable" }, "typeName": { - "id": 794, + "id": 847, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3001:15:2", + "src": "3001:15:3", "stateMutability": "payable", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -3720,11 +3720,11 @@ }, { "constant": false, - "id": 797, + "id": 850, "name": "_fee", "nodeType": "VariableDeclaration", - "scope": 873, - "src": "3027:12:2", + "scope": 926, + "src": "3027:12:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3732,10 +3732,10 @@ "typeString": "uint256" }, "typeName": { - "id": 796, + "id": 849, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3027:7:2", + "src": "3027:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3746,11 +3746,11 @@ }, { "constant": false, - "id": 799, + "id": 852, "name": "_refund", "nodeType": "VariableDeclaration", - "scope": 873, - "src": "3041:15:2", + "scope": 926, + "src": "3041:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3758,10 +3758,10 @@ "typeString": "uint256" }, "typeName": { - "id": 798, + "id": 851, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3041:7:2", + "src": "3041:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3771,16 +3771,16 @@ "visibility": "internal" } ], - "src": "2910:147:2" + "src": "2910:147:3" }, "returnParameters": { - "id": 803, + "id": 856, "nodeType": "ParameterList", "parameters": [], - "src": "3088:0:2" + "src": "3088:0:3" }, - "scope": 970, - "src": "2893:801:2", + "scope": 1023, + "src": "2893:801:3", "stateMutability": "payable", "superFunction": null, "visibility": "external" @@ -3788,23 +3788,23 @@ { "body": null, "documentation": "@dev this function is defined in a child contract ", - "id": 886, + "id": 939, "implemented": false, "kind": "function", "modifiers": [], "name": "_processWithdraw", "nodeType": "FunctionDefinition", "parameters": { - "id": 884, + "id": 937, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 875, + "id": 928, "name": "_recipient", "nodeType": "VariableDeclaration", - "scope": 886, - "src": "3783:26:2", + "scope": 939, + "src": "3783:26:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3812,10 +3812,10 @@ "typeString": "address payable" }, "typeName": { - "id": 874, + "id": 927, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3783:15:2", + "src": "3783:15:3", "stateMutability": "payable", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -3827,11 +3827,11 @@ }, { "constant": false, - "id": 877, + "id": 930, "name": "_relayer", "nodeType": "VariableDeclaration", - "scope": 886, - "src": "3811:24:2", + "scope": 939, + "src": "3811:24:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3839,10 +3839,10 @@ "typeString": "address payable" }, "typeName": { - "id": 876, + "id": 929, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3811:15:2", + "src": "3811:15:3", "stateMutability": "payable", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -3854,11 +3854,11 @@ }, { "constant": false, - "id": 879, + "id": 932, "name": "_relayer_fee", "nodeType": "VariableDeclaration", - "scope": 886, - "src": "3837:20:2", + "scope": 939, + "src": "3837:20:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3866,10 +3866,10 @@ "typeString": "uint256" }, "typeName": { - "id": 878, + "id": 931, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3837:7:2", + "src": "3837:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3880,11 +3880,11 @@ }, { "constant": false, - "id": 881, + "id": 934, "name": "_refund", "nodeType": "VariableDeclaration", - "scope": 886, - "src": "3859:15:2", + "scope": 939, + "src": "3859:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3892,10 +3892,10 @@ "typeString": "uint256" }, "typeName": { - "id": 880, + "id": 933, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3859:7:2", + "src": "3859:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3906,11 +3906,11 @@ }, { "constant": false, - "id": 883, + "id": 936, "name": "_feeTo", "nodeType": "VariableDeclaration", - "scope": 886, - "src": "3876:14:2", + "scope": 939, + "src": "3876:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3918,10 +3918,10 @@ "typeString": "address" }, "typeName": { - "id": 882, + "id": 935, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3876:7:2", + "src": "3876:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3932,51 +3932,51 @@ "visibility": "internal" } ], - "src": "3782:109:2" + "src": "3782:109:3" }, "returnParameters": { - "id": 885, + "id": 938, "nodeType": "ParameterList", "parameters": [], - "src": "3900:0:2" + "src": "3900:0:3" }, - "scope": 970, - "src": "3757:144:2", + "scope": 1023, + "src": "3757:144:3", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 897, + "id": 950, "nodeType": "Block", - "src": "4018:49:2", + "src": "4018:49:3", "statements": [ { "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 893, + "id": 946, "name": "nullifierHashes", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 664, - "src": "4031:15:2", + "referencedDeclaration": 717, + "src": "4031:15:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 895, + "id": 948, "indexExpression": { "argumentTypes": null, - "id": 894, + "id": 947, "name": "_nullifierHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 888, - "src": "4047:14:2", + "referencedDeclaration": 941, + "src": "4047:14:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3987,37 +3987,37 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4031:31:2", + "src": "4031:31:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "functionReturnParameters": 892, - "id": 896, + "functionReturnParameters": 945, + "id": 949, "nodeType": "Return", - "src": "4024:38:2" + "src": "4024:38:3" } ] }, "documentation": "@dev whether a note is already spent ", - "id": 898, + "id": 951, "implemented": true, "kind": "function", "modifiers": [], "name": "isSpent", "nodeType": "FunctionDefinition", "parameters": { - "id": 889, + "id": 942, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 888, + "id": 941, "name": "_nullifierHash", "nodeType": "VariableDeclaration", - "scope": 898, - "src": "3968:22:2", + "scope": 951, + "src": "3968:22:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4025,10 +4025,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 887, + "id": 940, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "3968:7:2", + "src": "3968:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4038,19 +4038,19 @@ "visibility": "internal" } ], - "src": "3967:24:2" + "src": "3967:24:3" }, "returnParameters": { - "id": 892, + "id": 945, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 891, + "id": 944, "name": "", "nodeType": "VariableDeclaration", - "scope": 898, - "src": "4012:4:2", + "scope": 951, + "src": "4012:4:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4058,10 +4058,10 @@ "typeString": "bool" }, "typeName": { - "id": 890, + "id": 943, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "4012:4:2", + "src": "4012:4:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4071,36 +4071,36 @@ "visibility": "internal" } ], - "src": "4011:6:2" + "src": "4011:6:3" }, - "scope": 970, - "src": "3951:116:2", + "scope": 1023, + "src": "3951:116:3", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 942, + "id": 995, "nodeType": "Block", - "src": "4230:191:2", + "src": "4230:191:3", "statements": [ { "expression": { "argumentTypes": null, - "id": 914, + "id": 967, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 907, + "id": 960, "name": "spent", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 905, - "src": "4236:5:2", + "referencedDeclaration": 958, + "src": "4236:5:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr", "typeString": "bool[] memory" @@ -4115,18 +4115,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 911, + "id": 964, "name": "_nullifierHashes", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 901, - "src": "4255:16:2", + "referencedDeclaration": 954, + "src": "4255:16:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", "typeString": "bytes32[] calldata" } }, - "id": 912, + "id": 965, "isConstant": false, "isLValue": false, "isPure": false, @@ -4134,7 +4134,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "4255:23:2", + "src": "4255:23:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4148,39 +4148,39 @@ "typeString": "uint256" } ], - "id": 910, + "id": 963, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", - "src": "4244:10:2", + "src": "4244:10:3", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bool_$dyn_memory_$", "typeString": "function (uint256) pure returns (bool[] memory)" }, "typeName": { "baseType": { - "id": 908, + "id": 961, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "4248:4:2", + "src": "4248:4:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 909, + "id": 962, "length": null, "nodeType": "ArrayTypeName", - "src": "4248:6:2", + "src": "4248:6:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr", "typeString": "bool[]" } } }, - "id": 913, + "id": 966, "isConstant": false, "isLValue": false, "isPure": false, @@ -4188,27 +4188,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4244:35:2", + "src": "4244:35:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bool_$dyn_memory", "typeString": "bool[] memory" } }, - "src": "4236:43:2", + "src": "4236:43:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr", "typeString": "bool[] memory" } }, - "id": 915, + "id": 968, "nodeType": "ExpressionStatement", - "src": "4236:43:2" + "src": "4236:43:3" }, { "body": { - "id": 940, + "id": 993, "nodeType": "Block", - "src": "4335:82:2", + "src": "4335:82:3", "statements": [ { "condition": { @@ -4218,26 +4218,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 928, + "id": 981, "name": "_nullifierHashes", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 901, - "src": "4355:16:2", + "referencedDeclaration": 954, + "src": "4355:16:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", "typeString": "bytes32[] calldata" } }, - "id": 930, + "id": 983, "indexExpression": { "argumentTypes": null, - "id": 929, + "id": 982, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 917, - "src": "4372:1:2", + "referencedDeclaration": 970, + "src": "4372:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4248,7 +4248,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4355:19:2", + "src": "4355:19:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4262,18 +4262,18 @@ "typeString": "bytes32" } ], - "id": 927, + "id": 980, "name": "isSpent", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 898, - "src": "4347:7:2", + "referencedDeclaration": 951, + "src": "4347:7:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$", "typeString": "function (bytes32) view returns (bool)" } }, - "id": 931, + "id": 984, "isConstant": false, "isLValue": false, "isPure": false, @@ -4281,25 +4281,25 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4347:28:2", + "src": "4347:28:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 939, + "id": 992, "nodeType": "IfStatement", - "src": "4343:68:2", + "src": "4343:68:3", "trueBody": { - "id": 938, + "id": 991, "nodeType": "Block", - "src": "4377:34:2", + "src": "4377:34:3", "statements": [ { "expression": { "argumentTypes": null, - "id": 936, + "id": 989, "isConstant": false, "isLValue": false, "isPure": false, @@ -4308,26 +4308,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 932, + "id": 985, "name": "spent", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 905, - "src": "4387:5:2", + "referencedDeclaration": 958, + "src": "4387:5:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr", "typeString": "bool[] memory" } }, - "id": 934, + "id": 987, "indexExpression": { "argumentTypes": null, - "id": 933, + "id": 986, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 917, - "src": "4393:1:2", + "referencedDeclaration": 970, + "src": "4393:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4338,7 +4338,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4387:8:2", + "src": "4387:8:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4349,14 +4349,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 935, + "id": 988, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "4398:4:2", + "src": "4398:4:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -4364,15 +4364,15 @@ }, "value": "true" }, - "src": "4387:15:2", + "src": "4387:15:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 937, + "id": 990, "nodeType": "ExpressionStatement", - "src": "4387:15:2" + "src": "4387:15:3" } ] } @@ -4385,19 +4385,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 923, + "id": 976, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 920, + "id": 973, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 917, - "src": "4301:1:2", + "referencedDeclaration": 970, + "src": "4301:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4409,18 +4409,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 921, + "id": 974, "name": "_nullifierHashes", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 901, - "src": "4305:16:2", + "referencedDeclaration": 954, + "src": "4305:16:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", "typeString": "bytes32[] calldata" } }, - "id": 922, + "id": 975, "isConstant": false, "isLValue": false, "isPure": false, @@ -4428,31 +4428,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "4305:23:2", + "src": "4305:23:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4301:27:2", + "src": "4301:27:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 941, + "id": 994, "initializationExpression": { "assignments": [ - 917 + 970 ], "declarations": [ { "constant": false, - "id": 917, + "id": 970, "name": "i", "nodeType": "VariableDeclaration", - "scope": 941, - "src": "4289:6:2", + "scope": 994, + "src": "4289:6:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4460,10 +4460,10 @@ "typeString": "uint256" }, "typeName": { - "id": 916, + "id": 969, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "4289:4:2", + "src": "4289:4:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4473,18 +4473,18 @@ "visibility": "internal" } ], - "id": 919, + "id": 972, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 918, + "id": 971, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4298:1:2", + "src": "4298:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4493,12 +4493,12 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "4289:10:2" + "src": "4289:10:3" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 925, + "id": 978, "isConstant": false, "isLValue": false, "isPure": false, @@ -4506,15 +4506,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "4330:3:2", + "src": "4330:3:3", "subExpression": { "argumentTypes": null, - "id": 924, + "id": 977, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 917, - "src": "4330:1:2", + "referencedDeclaration": 970, + "src": "4330:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4525,33 +4525,33 @@ "typeString": "uint256" } }, - "id": 926, + "id": 979, "nodeType": "ExpressionStatement", - "src": "4330:3:2" + "src": "4330:3:3" }, "nodeType": "ForStatement", - "src": "4285:132:2" + "src": "4285:132:3" } ] }, "documentation": "@dev whether an array of notes is already spent ", - "id": 943, + "id": 996, "implemented": true, "kind": "function", "modifiers": [], "name": "isSpentArray", "nodeType": "FunctionDefinition", "parameters": { - "id": 902, + "id": 955, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 901, + "id": 954, "name": "_nullifierHashes", "nodeType": "VariableDeclaration", - "scope": 943, - "src": "4150:35:2", + "scope": 996, + "src": "4150:35:3", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { @@ -4560,19 +4560,19 @@ }, "typeName": { "baseType": { - "id": 899, + "id": 952, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "4150:7:2", + "src": "4150:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 900, + "id": 953, "length": null, "nodeType": "ArrayTypeName", - "src": "4150:9:2", + "src": "4150:9:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -4582,19 +4582,19 @@ "visibility": "internal" } ], - "src": "4149:37:2" + "src": "4149:37:3" }, "returnParameters": { - "id": 906, + "id": 959, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 905, + "id": 958, "name": "spent", "nodeType": "VariableDeclaration", - "scope": 943, - "src": "4209:19:2", + "scope": 996, + "src": "4209:19:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -4603,19 +4603,19 @@ }, "typeName": { "baseType": { - "id": 903, + "id": 956, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "4209:4:2", + "src": "4209:4:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 904, + "id": 957, "length": null, "nodeType": "ArrayTypeName", - "src": "4209:6:2", + "src": "4209:6:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr", "typeString": "bool[]" @@ -4625,38 +4625,38 @@ "visibility": "internal" } ], - "src": "4208:21:2" + "src": "4208:21:3" }, - "scope": 970, - "src": "4128:293:2", + "scope": 1023, + "src": "4128:293:3", "stateMutability": "view", "superFunction": null, "visibility": "external" }, { "body": { - "id": 956, + "id": 1009, "nodeType": "Block", - "src": "4719:45:2", + "src": "4719:45:3", "statements": [ { "expression": { "argumentTypes": null, - "id": 954, + "id": 1007, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 950, + "id": 1003, "name": "verifier", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 670, - "src": "4725:8:2", + "referencedDeclaration": 723, + "src": "4725:8:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IVerifier_$648", + "typeIdentifier": "t_contract$_IVerifier_$701", "typeString": "contract IVerifier" } }, @@ -4667,12 +4667,12 @@ "arguments": [ { "argumentTypes": null, - "id": 952, + "id": 1005, "name": "_newVerifier", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 945, - "src": "4746:12:2", + "referencedDeclaration": 998, + "src": "4746:12:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4686,18 +4686,18 @@ "typeString": "address" } ], - "id": 951, + "id": 1004, "name": "IVerifier", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 648, - "src": "4736:9:2", + "referencedDeclaration": 701, + "src": "4736:9:3", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IVerifier_$648_$", + "typeIdentifier": "t_type$_t_contract$_IVerifier_$701_$", "typeString": "type(contract IVerifier)" } }, - "id": 953, + "id": 1006, "isConstant": false, "isLValue": false, "isPure": false, @@ -4705,62 +4705,62 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4736:23:2", + "src": "4736:23:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IVerifier_$648", + "typeIdentifier": "t_contract$_IVerifier_$701", "typeString": "contract IVerifier" } }, - "src": "4725:34:2", + "src": "4725:34:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_IVerifier_$648", + "typeIdentifier": "t_contract$_IVerifier_$701", "typeString": "contract IVerifier" } }, - "id": 955, + "id": 1008, "nodeType": "ExpressionStatement", - "src": "4725:34:2" + "src": "4725:34:3" } ] }, "documentation": "@dev allow operator to update SNARK verification keys. This is needed to update keys after the final trusted setup ceremony is held.\nAfter that operator rights are supposed to be transferred to zero address", - "id": 957, + "id": 1010, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, - "id": 948, + "id": 1001, "modifierName": { "argumentTypes": null, - "id": 947, + "id": 1000, "name": "onlyOperator", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 686, - "src": "4706:12:2", + "referencedDeclaration": 739, + "src": "4706:12:3", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "4706:12:2" + "src": "4706:12:3" } ], "name": "updateVerifier", "nodeType": "FunctionDefinition", "parameters": { - "id": 946, + "id": 999, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 945, + "id": 998, "name": "_newVerifier", "nodeType": "VariableDeclaration", - "scope": 957, - "src": "4675:20:2", + "scope": 1010, + "src": "4675:20:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4768,10 +4768,10 @@ "typeString": "address" }, "typeName": { - "id": 944, + "id": 997, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4675:7:2", + "src": "4675:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4782,42 +4782,42 @@ "visibility": "internal" } ], - "src": "4674:22:2" + "src": "4674:22:3" }, "returnParameters": { - "id": 949, + "id": 1002, "nodeType": "ParameterList", "parameters": [], - "src": "4719:0:2" + "src": "4719:0:3" }, - "scope": 970, - "src": "4651:113:2", + "scope": 1023, + "src": "4651:113:3", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external" }, { "body": { - "id": 968, + "id": 1021, "nodeType": "Block", - "src": "4882:34:2", + "src": "4882:34:3", "statements": [ { "expression": { "argumentTypes": null, - "id": 966, + "id": 1019, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 964, + "id": 1017, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 674, - "src": "4888:8:2", + "referencedDeclaration": 727, + "src": "4888:8:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4827,67 +4827,67 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 965, + "id": 1018, "name": "_newOperator", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 959, - "src": "4899:12:2", + "referencedDeclaration": 1012, + "src": "4899:12:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4888:23:2", + "src": "4888:23:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 967, + "id": 1020, "nodeType": "ExpressionStatement", - "src": "4888:23:2" + "src": "4888:23:3" } ] }, "documentation": "@dev operator can change his address ", - "id": 969, + "id": 1022, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, - "id": 962, + "id": 1015, "modifierName": { "argumentTypes": null, - "id": 961, + "id": 1014, "name": "onlyOperator", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 686, - "src": "4869:12:2", + "referencedDeclaration": 739, + "src": "4869:12:3", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "4869:12:2" + "src": "4869:12:3" } ], "name": "changeOperator", "nodeType": "FunctionDefinition", "parameters": { - "id": 960, + "id": 1013, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 959, + "id": 1012, "name": "_newOperator", "nodeType": "VariableDeclaration", - "scope": 969, - "src": "4838:20:2", + "scope": 1022, + "src": "4838:20:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4895,10 +4895,10 @@ "typeString": "address" }, "typeName": { - "id": 958, + "id": 1011, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4838:7:2", + "src": "4838:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4909,39 +4909,39 @@ "visibility": "internal" } ], - "src": "4837:22:2" + "src": "4837:22:3" }, "returnParameters": { - "id": 963, + "id": 1016, "nodeType": "ParameterList", "parameters": [], - "src": "4882:0:2" + "src": "4882:0:3" }, - "scope": 970, - "src": "4814:102:2", + "scope": 1023, + "src": "4814:102:3", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external" } ], - "scope": 971, - "src": "318:4600:2" + "scope": 1024, + "src": "318:4600:3" } ], - "src": "0:4919:2" + "src": "0:4919:3" }, "legacyAST": { "attributes": { "absolutePath": "/Users/brianli/dotfiles/tornado-core/contracts/Tornado.sol", "exportedSymbols": { "IFeeManager": [ - 654 + 707 ], "IVerifier": [ - 648 + 701 ], "Tornado": [ - 970 + 1023 ] } }, @@ -4954,39 +4954,39 @@ ".17" ] }, - "id": 634, + "id": 687, "name": "PragmaDirective", - "src": "0:23:2" + "src": "0:23:3" }, { "attributes": { - "SourceUnit": 633, + "SourceUnit": 686, "absolutePath": "/Users/brianli/dotfiles/tornado-core/contracts/MerkleTreeWithHistory.sol", "file": "./MerkleTreeWithHistory.sol", - "scope": 971, + "scope": 1024, "symbolAliases": [ null ], "unitAlias": "" }, - "id": 635, + "id": 688, "name": "ImportDirective", - "src": "25:37:2" + "src": "25:37:3" }, { "attributes": { - "SourceUnit": 1001, + "SourceUnit": 1054, "absolutePath": "@openzeppelin/contracts/utils/ReentrancyGuard.sol", "file": "@openzeppelin/contracts/utils/ReentrancyGuard.sol", - "scope": 971, + "scope": 1024, "symbolAliases": [ null ], "unitAlias": "" }, - "id": 636, + "id": 689, "name": "ImportDirective", - "src": "63:59:2" + "src": "63:59:3" }, { "attributes": { @@ -5000,10 +5000,10 @@ "documentation": null, "fullyImplemented": false, "linearizedBaseContracts": [ - 648 + 701 ], "name": "IVerifier", - "scope": 971 + "scope": 1024 }, "children": [ { @@ -5017,7 +5017,7 @@ null ], "name": "verifyProof", - "scope": 648, + "scope": 701, "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -5029,7 +5029,7 @@ "attributes": { "constant": false, "name": "_proof", - "scope": 647, + "scope": 700, "stateVariable": false, "storageLocation": "memory", "type": "bytes", @@ -5042,20 +5042,20 @@ "name": "bytes", "type": "bytes" }, - "id": 637, + "id": 690, "name": "ElementaryTypeName", - "src": "168:5:2" + "src": "168:5:3" } ], - "id": 638, + "id": 691, "name": "VariableDeclaration", - "src": "168:19:2" + "src": "168:19:3" }, { "attributes": { "constant": false, "name": "_input", - "scope": 647, + "scope": 700, "stateVariable": false, "storageLocation": "memory", "type": "uint256[6]", @@ -5073,9 +5073,9 @@ "name": "uint256", "type": "uint256" }, - "id": 639, + "id": 692, "name": "ElementaryTypeName", - "src": "189:7:2" + "src": "189:7:3" }, { "attributes": { @@ -5090,24 +5090,24 @@ "type": "int_const 6", "value": "6" }, - "id": 640, + "id": 693, "name": "Literal", - "src": "197:1:2" + "src": "197:1:3" } ], - "id": 641, + "id": 694, "name": "ArrayTypeName", - "src": "189:10:2" + "src": "189:10:3" } ], - "id": 642, + "id": 695, "name": "VariableDeclaration", - "src": "189:24:2" + "src": "189:24:3" } ], - "id": 643, + "id": 696, "name": "ParameterList", - "src": "167:47:2" + "src": "167:47:3" }, { "children": [ @@ -5115,7 +5115,7 @@ "attributes": { "constant": false, "name": "", - "scope": 647, + "scope": 700, "stateVariable": false, "storageLocation": "default", "type": "bool", @@ -5128,29 +5128,29 @@ "name": "bool", "type": "bool" }, - "id": 644, + "id": 697, "name": "ElementaryTypeName", - "src": "230:4:2" + "src": "230:4:3" } ], - "id": 645, + "id": 698, "name": "VariableDeclaration", - "src": "230:4:2" + "src": "230:4:3" } ], - "id": 646, + "id": 699, "name": "ParameterList", - "src": "229:6:2" + "src": "229:6:3" } ], - "id": 647, + "id": 700, "name": "FunctionDefinition", - "src": "147:89:2" + "src": "147:89:3" } ], - "id": 648, + "id": 701, "name": "ContractDefinition", - "src": "124:114:2" + "src": "124:114:3" }, { "attributes": { @@ -5164,10 +5164,10 @@ "documentation": null, "fullyImplemented": false, "linearizedBaseContracts": [ - 654 + 707 ], "name": "IFeeManager", - "scope": 971 + "scope": 1024 }, "children": [ { @@ -5181,7 +5181,7 @@ null ], "name": "feeTo", - "scope": 654, + "scope": 707, "stateMutability": "view", "superFunction": null, "visibility": "external" @@ -5194,9 +5194,9 @@ ] }, "children": [], - "id": 649, + "id": 702, "name": "ParameterList", - "src": "279:2:2" + "src": "279:2:3" }, { "children": [ @@ -5204,7 +5204,7 @@ "attributes": { "constant": false, "name": "", - "scope": 653, + "scope": 706, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -5218,46 +5218,46 @@ "stateMutability": "nonpayable", "type": "address" }, - "id": 650, + "id": 703, "name": "ElementaryTypeName", - "src": "305:7:2" + "src": "305:7:3" } ], - "id": 651, + "id": 704, "name": "VariableDeclaration", - "src": "305:7:2" + "src": "305:7:3" } ], - "id": 652, + "id": 705, "name": "ParameterList", - "src": "304:9:2" + "src": "304:9:3" } ], - "id": 653, + "id": 706, "name": "FunctionDefinition", - "src": "265:49:2" + "src": "265:49:3" } ], - "id": 654, + "id": 707, "name": "ContractDefinition", - "src": "240:76:2" + "src": "240:76:3" }, { "attributes": { "contractDependencies": [ - 632, - 1000 + 685, + 1053 ], "contractKind": "contract", "documentation": null, "fullyImplemented": false, "linearizedBaseContracts": [ - 970, - 1000, - 632 + 1023, + 1053, + 685 ], "name": "Tornado", - "scope": 971 + "scope": 1024 }, "children": [ { @@ -5269,17 +5269,17 @@ "attributes": { "contractScope": null, "name": "MerkleTreeWithHistory", - "referencedDeclaration": 632, + "referencedDeclaration": 685, "type": "contract MerkleTreeWithHistory" }, - "id": 655, + "id": 708, "name": "UserDefinedTypeName", - "src": "338:21:2" + "src": "338:21:3" } ], - "id": 656, + "id": 709, "name": "InheritanceSpecifier", - "src": "338:21:2" + "src": "338:21:3" }, { "attributes": { @@ -5290,23 +5290,23 @@ "attributes": { "contractScope": null, "name": "ReentrancyGuard", - "referencedDeclaration": 1000, + "referencedDeclaration": 1053, "type": "contract ReentrancyGuard" }, - "id": 657, + "id": 710, "name": "UserDefinedTypeName", - "src": "361:15:2" + "src": "361:15:3" } ], - "id": 658, + "id": 711, "name": "InheritanceSpecifier", - "src": "361:15:2" + "src": "361:15:3" }, { "attributes": { "constant": false, "name": "denomination", - "scope": 970, + "scope": 1023, "stateVariable": true, "storageLocation": "default", "type": "uint256", @@ -5319,20 +5319,20 @@ "name": "uint256", "type": "uint256" }, - "id": 659, + "id": 712, "name": "ElementaryTypeName", - "src": "381:7:2" + "src": "381:7:3" } ], - "id": 660, + "id": 713, "name": "VariableDeclaration", - "src": "381:27:2" + "src": "381:27:3" }, { "attributes": { "constant": false, "name": "nullifierHashes", - "scope": 970, + "scope": 1023, "stateVariable": true, "storageLocation": "default", "type": "mapping(bytes32 => bool)", @@ -5350,34 +5350,34 @@ "name": "bytes32", "type": "bytes32" }, - "id": 661, + "id": 714, "name": "ElementaryTypeName", - "src": "420:7:2" + "src": "420:7:3" }, { "attributes": { "name": "bool", "type": "bool" }, - "id": 662, + "id": 715, "name": "ElementaryTypeName", - "src": "431:4:2" + "src": "431:4:3" } ], - "id": 663, + "id": 716, "name": "Mapping", - "src": "412:24:2" + "src": "412:24:3" } ], - "id": 664, + "id": 717, "name": "VariableDeclaration", - "src": "412:47:2" + "src": "412:47:3" }, { "attributes": { "constant": false, "name": "commitments", - "scope": 970, + "scope": 1023, "stateVariable": true, "storageLocation": "default", "type": "mapping(bytes32 => bool)", @@ -5395,34 +5395,34 @@ "name": "bytes32", "type": "bytes32" }, - "id": 665, + "id": 718, "name": "ElementaryTypeName", - "src": "562:7:2" + "src": "562:7:3" }, { "attributes": { "name": "bool", "type": "bool" }, - "id": 666, + "id": 719, "name": "ElementaryTypeName", - "src": "573:4:2" + "src": "573:4:3" } ], - "id": 667, + "id": 720, "name": "Mapping", - "src": "554:24:2" + "src": "554:24:3" } ], - "id": 668, + "id": 721, "name": "VariableDeclaration", - "src": "554:43:2" + "src": "554:43:3" }, { "attributes": { "constant": false, "name": "verifier", - "scope": 970, + "scope": 1023, "stateVariable": true, "storageLocation": "default", "type": "contract IVerifier", @@ -5434,23 +5434,23 @@ "attributes": { "contractScope": null, "name": "IVerifier", - "referencedDeclaration": 648, + "referencedDeclaration": 701, "type": "contract IVerifier" }, - "id": 669, + "id": 722, "name": "UserDefinedTypeName", - "src": "601:9:2" + "src": "601:9:3" } ], - "id": 670, + "id": 723, "name": "VariableDeclaration", - "src": "601:25:2" + "src": "601:25:3" }, { "attributes": { "constant": false, "name": "feeManager", - "scope": 970, + "scope": 1023, "stateVariable": true, "storageLocation": "default", "type": "contract IFeeManager", @@ -5462,23 +5462,23 @@ "attributes": { "contractScope": null, "name": "IFeeManager", - "referencedDeclaration": 654, + "referencedDeclaration": 707, "type": "contract IFeeManager" }, - "id": 671, + "id": 724, "name": "UserDefinedTypeName", - "src": "630:11:2" + "src": "630:11:3" } ], - "id": 672, + "id": 725, "name": "VariableDeclaration", - "src": "630:29:2" + "src": "630:29:3" }, { "attributes": { "constant": false, "name": "operator", - "scope": 970, + "scope": 1023, "stateVariable": true, "storageLocation": "default", "type": "address", @@ -5492,14 +5492,14 @@ "stateMutability": "nonpayable", "type": "address" }, - "id": 673, + "id": 726, "name": "ElementaryTypeName", - "src": "819:7:2" + "src": "819:7:3" } ], - "id": 674, + "id": 727, "name": "VariableDeclaration", - "src": "819:23:2" + "src": "819:23:3" }, { "attributes": { @@ -5515,9 +5515,9 @@ ] }, "children": [], - "id": 675, + "id": 728, "name": "ParameterList", - "src": "868:0:2" + "src": "868:0:3" }, { "children": [ @@ -5551,16 +5551,16 @@ } ], "overloadedDeclarations": [ - 1018, - 1019 + 1071, + 1072 ], - "referencedDeclaration": 1019, + "referencedDeclaration": 1072, "type": "function (bool,string memory) pure", "value": "require" }, - "id": 676, + "id": 729, "name": "Identifier", - "src": "874:7:2" + "src": "874:7:3" }, { "attributes": { @@ -5595,18 +5595,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1015, + "referencedDeclaration": 1068, "type": "msg", "value": "msg" }, - "id": 677, + "id": 730, "name": "Identifier", - "src": "882:3:2" + "src": "882:3:3" } ], - "id": 678, + "id": 731, "name": "MemberAccess", - "src": "882:10:2" + "src": "882:10:3" }, { "attributes": { @@ -5614,18 +5614,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 674, + "referencedDeclaration": 727, "type": "address", "value": "operator" }, - "id": 679, + "id": 732, "name": "Identifier", - "src": "896:8:2" + "src": "896:8:3" } ], - "id": 680, + "id": 733, "name": "BinaryOperation", - "src": "882:22:2" + "src": "882:22:3" }, { "attributes": { @@ -5640,34 +5640,34 @@ "type": "literal_string \"Only operator can call this function.\"", "value": "Only operator can call this function." }, - "id": 681, + "id": 734, "name": "Literal", - "src": "906:39:2" + "src": "906:39:3" } ], - "id": 682, + "id": 735, "name": "FunctionCall", - "src": "874:72:2" + "src": "874:72:3" } ], - "id": 683, + "id": 736, "name": "ExpressionStatement", - "src": "874:72:2" + "src": "874:72:3" }, { - "id": 684, + "id": 737, "name": "PlaceholderStatement", - "src": "952:1:2" + "src": "952:1:3" } ], - "id": 685, + "id": 738, "name": "Block", - "src": "868:90:2" + "src": "868:90:3" } ], - "id": 686, + "id": 739, "name": "ModifierDefinition", - "src": "846:112:2" + "src": "846:112:3" }, { "attributes": { @@ -5683,7 +5683,7 @@ "constant": false, "indexed": true, "name": "commitment", - "scope": 694, + "scope": 747, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -5696,21 +5696,21 @@ "name": "bytes32", "type": "bytes32" }, - "id": 687, + "id": 740, "name": "ElementaryTypeName", - "src": "976:7:2" + "src": "976:7:3" } ], - "id": 688, + "id": 741, "name": "VariableDeclaration", - "src": "976:26:2" + "src": "976:26:3" }, { "attributes": { "constant": false, "indexed": false, "name": "leafIndex", - "scope": 694, + "scope": 747, "stateVariable": false, "storageLocation": "default", "type": "uint32", @@ -5723,21 +5723,21 @@ "name": "uint32", "type": "uint32" }, - "id": 689, + "id": 742, "name": "ElementaryTypeName", - "src": "1004:6:2" + "src": "1004:6:3" } ], - "id": 690, + "id": 743, "name": "VariableDeclaration", - "src": "1004:16:2" + "src": "1004:16:3" }, { "attributes": { "constant": false, "indexed": false, "name": "timestamp", - "scope": 694, + "scope": 747, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -5750,24 +5750,24 @@ "name": "uint256", "type": "uint256" }, - "id": 691, + "id": 744, "name": "ElementaryTypeName", - "src": "1022:7:2" + "src": "1022:7:3" } ], - "id": 692, + "id": 745, "name": "VariableDeclaration", - "src": "1022:17:2" + "src": "1022:17:3" } ], - "id": 693, + "id": 746, "name": "ParameterList", - "src": "975:65:2" + "src": "975:65:3" } ], - "id": 694, + "id": 747, "name": "EventDefinition", - "src": "962:79:2" + "src": "962:79:3" }, { "attributes": { @@ -5783,7 +5783,7 @@ "constant": false, "indexed": false, "name": "to", - "scope": 704, + "scope": 757, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -5797,21 +5797,21 @@ "stateMutability": "nonpayable", "type": "address" }, - "id": 695, + "id": 748, "name": "ElementaryTypeName", - "src": "1061:7:2" + "src": "1061:7:3" } ], - "id": 696, + "id": 749, "name": "VariableDeclaration", - "src": "1061:10:2" + "src": "1061:10:3" }, { "attributes": { "constant": false, "indexed": false, "name": "nullifierHash", - "scope": 704, + "scope": 757, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -5824,21 +5824,21 @@ "name": "bytes32", "type": "bytes32" }, - "id": 697, + "id": 750, "name": "ElementaryTypeName", - "src": "1073:7:2" + "src": "1073:7:3" } ], - "id": 698, + "id": 751, "name": "VariableDeclaration", - "src": "1073:21:2" + "src": "1073:21:3" }, { "attributes": { "constant": false, "indexed": true, "name": "relayer", - "scope": 704, + "scope": 757, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -5852,21 +5852,21 @@ "stateMutability": "nonpayable", "type": "address" }, - "id": 699, + "id": 752, "name": "ElementaryTypeName", - "src": "1096:7:2" + "src": "1096:7:3" } ], - "id": 700, + "id": 753, "name": "VariableDeclaration", - "src": "1096:23:2" + "src": "1096:23:3" }, { "attributes": { "constant": false, "indexed": false, "name": "fee", - "scope": 704, + "scope": 757, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -5879,24 +5879,24 @@ "name": "uint256", "type": "uint256" }, - "id": 701, + "id": 754, "name": "ElementaryTypeName", - "src": "1121:7:2" + "src": "1121:7:3" } ], - "id": 702, + "id": 755, "name": "VariableDeclaration", - "src": "1121:11:2" + "src": "1121:11:3" } ], - "id": 703, + "id": 756, "name": "ParameterList", - "src": "1060:73:2" + "src": "1060:73:3" } ], - "id": 704, + "id": 757, "name": "EventDefinition", - "src": "1044:90:2" + "src": "1044:90:3" }, { "attributes": { @@ -5905,7 +5905,7 @@ "isConstructor": true, "kind": "constructor", "name": "", - "scope": 970, + "scope": 1023, "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -5917,7 +5917,7 @@ "attributes": { "constant": false, "name": "_verifier", - "scope": 744, + "scope": 797, "stateVariable": false, "storageLocation": "default", "type": "contract IVerifier", @@ -5929,23 +5929,23 @@ "attributes": { "contractScope": null, "name": "IVerifier", - "referencedDeclaration": 648, + "referencedDeclaration": 701, "type": "contract IVerifier" }, - "id": 705, + "id": 758, "name": "UserDefinedTypeName", - "src": "1450:9:2" + "src": "1450:9:3" } ], - "id": 706, + "id": 759, "name": "VariableDeclaration", - "src": "1450:19:2" + "src": "1450:19:3" }, { "attributes": { "constant": false, "name": "_feeManager", - "scope": 744, + "scope": 797, "stateVariable": false, "storageLocation": "default", "type": "contract IFeeManager", @@ -5957,23 +5957,23 @@ "attributes": { "contractScope": null, "name": "IFeeManager", - "referencedDeclaration": 654, + "referencedDeclaration": 707, "type": "contract IFeeManager" }, - "id": 707, + "id": 760, "name": "UserDefinedTypeName", - "src": "1475:11:2" + "src": "1475:11:3" } ], - "id": 708, + "id": 761, "name": "VariableDeclaration", - "src": "1475:23:2" + "src": "1475:23:3" }, { "attributes": { "constant": false, "name": "_denomination", - "scope": 744, + "scope": 797, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -5986,20 +5986,20 @@ "name": "uint256", "type": "uint256" }, - "id": 709, + "id": 762, "name": "ElementaryTypeName", - "src": "1504:7:2" + "src": "1504:7:3" } ], - "id": 710, + "id": 763, "name": "VariableDeclaration", - "src": "1504:21:2" + "src": "1504:21:3" }, { "attributes": { "constant": false, "name": "_merkleTreeHeight", - "scope": 744, + "scope": 797, "stateVariable": false, "storageLocation": "default", "type": "uint32", @@ -6012,20 +6012,20 @@ "name": "uint32", "type": "uint32" }, - "id": 711, + "id": 764, "name": "ElementaryTypeName", - "src": "1531:6:2" + "src": "1531:6:3" } ], - "id": 712, + "id": 765, "name": "VariableDeclaration", - "src": "1531:24:2" + "src": "1531:24:3" }, { "attributes": { "constant": false, "name": "_operator", - "scope": 744, + "scope": 797, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -6039,19 +6039,19 @@ "stateMutability": "nonpayable", "type": "address" }, - "id": 713, + "id": 766, "name": "ElementaryTypeName", - "src": "1561:7:2" + "src": "1561:7:3" } ], - "id": 714, + "id": 767, "name": "VariableDeclaration", - "src": "1561:17:2" + "src": "1561:17:3" } ], - "id": 715, + "id": 768, "name": "ParameterList", - "src": "1444:138:2" + "src": "1444:138:3" }, { "attributes": { @@ -6060,9 +6060,9 @@ ] }, "children": [], - "id": 719, + "id": 772, "name": "ParameterList", - "src": "1631:0:2" + "src": "1631:0:3" }, { "children": [ @@ -6072,13 +6072,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 632, + "referencedDeclaration": 685, "type": "type(contract MerkleTreeWithHistory)", "value": "MerkleTreeWithHistory" }, - "id": 716, + "id": 769, "name": "Identifier", - "src": "1583:21:2" + "src": "1583:21:3" }, { "attributes": { @@ -6086,18 +6086,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 712, + "referencedDeclaration": 765, "type": "uint32", "value": "_merkleTreeHeight" }, - "id": 717, + "id": 770, "name": "Identifier", - "src": "1605:17:2" + "src": "1605:17:3" } ], - "id": 718, + "id": 771, "name": "ModifierInvocation", - "src": "1583:40:2" + "src": "1583:40:3" }, { "children": [ @@ -6131,16 +6131,16 @@ } ], "overloadedDeclarations": [ - 1018, - 1019 + 1071, + 1072 ], - "referencedDeclaration": 1019, + "referencedDeclaration": 1072, "type": "function (bool,string memory) pure", "value": "require" }, - "id": 720, + "id": 773, "name": "Identifier", - "src": "1637:7:2" + "src": "1637:7:3" }, { "attributes": { @@ -6163,13 +6163,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 710, + "referencedDeclaration": 763, "type": "uint256", "value": "_denomination" }, - "id": 721, + "id": 774, "name": "Identifier", - "src": "1645:13:2" + "src": "1645:13:3" }, { "attributes": { @@ -6184,14 +6184,14 @@ "type": "int_const 0", "value": "0" }, - "id": 722, + "id": 775, "name": "Literal", - "src": "1661:1:2" + "src": "1661:1:3" } ], - "id": 723, + "id": 776, "name": "BinaryOperation", - "src": "1645:17:2" + "src": "1645:17:3" }, { "attributes": { @@ -6206,19 +6206,19 @@ "type": "literal_string \"denomination should be greater than 0\"", "value": "denomination should be greater than 0" }, - "id": 724, + "id": 777, "name": "Literal", - "src": "1664:39:2" + "src": "1664:39:3" } ], - "id": 725, + "id": 778, "name": "FunctionCall", - "src": "1637:67:2" + "src": "1637:67:3" } ], - "id": 726, + "id": 779, "name": "ExpressionStatement", - "src": "1637:67:2" + "src": "1637:67:3" }, { "children": [ @@ -6239,13 +6239,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 670, + "referencedDeclaration": 723, "type": "contract IVerifier", "value": "verifier" }, - "id": 727, + "id": 780, "name": "Identifier", - "src": "1710:8:2" + "src": "1710:8:3" }, { "attributes": { @@ -6253,23 +6253,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 706, + "referencedDeclaration": 759, "type": "contract IVerifier", "value": "_verifier" }, - "id": 728, + "id": 781, "name": "Identifier", - "src": "1721:9:2" + "src": "1721:9:3" } ], - "id": 729, + "id": 782, "name": "Assignment", - "src": "1710:20:2" + "src": "1710:20:3" } ], - "id": 730, + "id": 783, "name": "ExpressionStatement", - "src": "1710:20:2" + "src": "1710:20:3" }, { "children": [ @@ -6290,13 +6290,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 672, + "referencedDeclaration": 725, "type": "contract IFeeManager", "value": "feeManager" }, - "id": 731, + "id": 784, "name": "Identifier", - "src": "1736:10:2" + "src": "1736:10:3" }, { "attributes": { @@ -6304,23 +6304,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 708, + "referencedDeclaration": 761, "type": "contract IFeeManager", "value": "_feeManager" }, - "id": 732, + "id": 785, "name": "Identifier", - "src": "1749:11:2" + "src": "1749:11:3" } ], - "id": 733, + "id": 786, "name": "Assignment", - "src": "1736:24:2" + "src": "1736:24:3" } ], - "id": 734, + "id": 787, "name": "ExpressionStatement", - "src": "1736:24:2" + "src": "1736:24:3" }, { "children": [ @@ -6341,13 +6341,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 674, + "referencedDeclaration": 727, "type": "address", "value": "operator" }, - "id": 735, + "id": 788, "name": "Identifier", - "src": "1766:8:2" + "src": "1766:8:3" }, { "attributes": { @@ -6355,23 +6355,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 714, + "referencedDeclaration": 767, "type": "address", "value": "_operator" }, - "id": 736, + "id": 789, "name": "Identifier", - "src": "1777:9:2" + "src": "1777:9:3" } ], - "id": 737, + "id": 790, "name": "Assignment", - "src": "1766:20:2" + "src": "1766:20:3" } ], - "id": 738, + "id": 791, "name": "ExpressionStatement", - "src": "1766:20:2" + "src": "1766:20:3" }, { "children": [ @@ -6392,13 +6392,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 660, + "referencedDeclaration": 713, "type": "uint256", "value": "denomination" }, - "id": 739, + "id": 792, "name": "Identifier", - "src": "1792:12:2" + "src": "1792:12:3" }, { "attributes": { @@ -6406,33 +6406,33 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 710, + "referencedDeclaration": 763, "type": "uint256", "value": "_denomination" }, - "id": 740, + "id": 793, "name": "Identifier", - "src": "1807:13:2" + "src": "1807:13:3" } ], - "id": 741, + "id": 794, "name": "Assignment", - "src": "1792:28:2" + "src": "1792:28:3" } ], - "id": 742, + "id": 795, "name": "ExpressionStatement", - "src": "1792:28:2" + "src": "1792:28:3" } ], - "id": 743, + "id": 796, "name": "Block", - "src": "1631:194:2" + "src": "1631:194:3" } ], - "id": 744, + "id": 797, "name": "FunctionDefinition", - "src": "1433:392:2" + "src": "1433:392:3" }, { "attributes": { @@ -6441,7 +6441,7 @@ "isConstructor": false, "kind": "function", "name": "deposit", - "scope": 970, + "scope": 1023, "stateMutability": "payable", "superFunction": null, "visibility": "external" @@ -6453,7 +6453,7 @@ "attributes": { "constant": false, "name": "_commitment", - "scope": 782, + "scope": 835, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -6466,19 +6466,19 @@ "name": "bytes32", "type": "bytes32" }, - "id": 745, + "id": 798, "name": "ElementaryTypeName", - "src": "2090:7:2" + "src": "2090:7:3" } ], - "id": 746, + "id": 799, "name": "VariableDeclaration", - "src": "2090:19:2" + "src": "2090:19:3" } ], - "id": 747, + "id": 800, "name": "ParameterList", - "src": "2089:21:2" + "src": "2089:21:3" }, { "attributes": { @@ -6487,9 +6487,9 @@ ] }, "children": [], - "id": 750, + "id": 803, "name": "ParameterList", - "src": "2141:0:2" + "src": "2141:0:3" }, { "attributes": { @@ -6502,18 +6502,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 999, + "referencedDeclaration": 1052, "type": "modifier ()", "value": "nonReentrant" }, - "id": 748, + "id": 801, "name": "Identifier", - "src": "2128:12:2" + "src": "2128:12:3" } ], - "id": 749, + "id": 802, "name": "ModifierInvocation", - "src": "2128:12:2" + "src": "2128:12:3" }, { "children": [ @@ -6547,16 +6547,16 @@ } ], "overloadedDeclarations": [ - 1018, - 1019 + 1071, + 1072 ], - "referencedDeclaration": 1019, + "referencedDeclaration": 1072, "type": "function (bool,string memory) pure", "value": "require" }, - "id": 751, + "id": 804, "name": "Identifier", - "src": "2147:7:2" + "src": "2147:7:3" }, { "attributes": { @@ -6586,13 +6586,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 668, + "referencedDeclaration": 721, "type": "mapping(bytes32 => bool)", "value": "commitments" }, - "id": 752, + "id": 805, "name": "Identifier", - "src": "2156:11:2" + "src": "2156:11:3" }, { "attributes": { @@ -6600,23 +6600,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 746, + "referencedDeclaration": 799, "type": "bytes32", "value": "_commitment" }, - "id": 753, + "id": 806, "name": "Identifier", - "src": "2168:11:2" + "src": "2168:11:3" } ], - "id": 754, + "id": 807, "name": "IndexAccess", - "src": "2156:24:2" + "src": "2156:24:3" } ], - "id": 755, + "id": 808, "name": "UnaryOperation", - "src": "2155:25:2" + "src": "2155:25:3" }, { "attributes": { @@ -6631,24 +6631,24 @@ "type": "literal_string \"The commitment has been submitted\"", "value": "The commitment has been submitted" }, - "id": 756, + "id": 809, "name": "Literal", - "src": "2182:35:2" + "src": "2182:35:3" } ], - "id": 757, + "id": 810, "name": "FunctionCall", - "src": "2147:71:2" + "src": "2147:71:3" } ], - "id": 758, + "id": 811, "name": "ExpressionStatement", - "src": "2147:71:2" + "src": "2147:71:3" }, { "attributes": { "assignments": [ - 760 + 813 ] }, "children": [ @@ -6656,7 +6656,7 @@ "attributes": { "constant": false, "name": "insertedIndex", - "scope": 781, + "scope": 834, "stateVariable": false, "storageLocation": "default", "type": "uint32", @@ -6669,14 +6669,14 @@ "name": "uint32", "type": "uint32" }, - "id": 759, + "id": 812, "name": "ElementaryTypeName", - "src": "2225:6:2" + "src": "2225:6:3" } ], - "id": 760, + "id": 813, "name": "VariableDeclaration", - "src": "2225:20:2" + "src": "2225:20:3" }, { "attributes": { @@ -6704,13 +6704,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 574, + "referencedDeclaration": 627, "type": "function (bytes32) returns (uint32)", "value": "_insert" }, - "id": 761, + "id": 814, "name": "Identifier", - "src": "2248:7:2" + "src": "2248:7:3" }, { "attributes": { @@ -6718,23 +6718,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 746, + "referencedDeclaration": 799, "type": "bytes32", "value": "_commitment" }, - "id": 762, + "id": 815, "name": "Identifier", - "src": "2256:11:2" + "src": "2256:11:3" } ], - "id": 763, + "id": 816, "name": "FunctionCall", - "src": "2248:20:2" + "src": "2248:20:3" } ], - "id": 764, + "id": 817, "name": "VariableDeclarationStatement", - "src": "2225:43:2" + "src": "2225:43:3" }, { "children": [ @@ -6765,13 +6765,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 668, + "referencedDeclaration": 721, "type": "mapping(bytes32 => bool)", "value": "commitments" }, - "id": 765, + "id": 818, "name": "Identifier", - "src": "2274:11:2" + "src": "2274:11:3" }, { "attributes": { @@ -6779,18 +6779,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 746, + "referencedDeclaration": 799, "type": "bytes32", "value": "_commitment" }, - "id": 766, + "id": 819, "name": "Identifier", - "src": "2286:11:2" + "src": "2286:11:3" } ], - "id": 767, + "id": 820, "name": "IndexAccess", - "src": "2274:24:2" + "src": "2274:24:3" }, { "attributes": { @@ -6805,19 +6805,19 @@ "type": "bool", "value": "true" }, - "id": 768, + "id": 821, "name": "Literal", - "src": "2301:4:2" + "src": "2301:4:3" } ], - "id": 769, + "id": 822, "name": "Assignment", - "src": "2274:31:2" + "src": "2274:31:3" } ], - "id": 770, + "id": 823, "name": "ExpressionStatement", - "src": "2274:31:2" + "src": "2274:31:3" }, { "children": [ @@ -6847,23 +6847,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 785, + "referencedDeclaration": 838, "type": "function ()", "value": "_processDeposit" }, - "id": 771, + "id": 824, "name": "Identifier", - "src": "2311:15:2" + "src": "2311:15:3" } ], - "id": 772, + "id": 825, "name": "FunctionCall", - "src": "2311:17:2" + "src": "2311:17:3" } ], - "id": 773, + "id": 826, "name": "ExpressionStatement", - "src": "2311:17:2" + "src": "2311:17:3" }, { "children": [ @@ -6901,13 +6901,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 694, + "referencedDeclaration": 747, "type": "function (bytes32,uint32,uint256)", "value": "Deposit" }, - "id": 774, + "id": 827, "name": "Identifier", - "src": "2340:7:2" + "src": "2340:7:3" }, { "attributes": { @@ -6915,13 +6915,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 746, + "referencedDeclaration": 799, "type": "bytes32", "value": "_commitment" }, - "id": 775, + "id": 828, "name": "Identifier", - "src": "2348:11:2" + "src": "2348:11:3" }, { "attributes": { @@ -6929,13 +6929,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 760, + "referencedDeclaration": 813, "type": "uint32", "value": "insertedIndex" }, - "id": 776, + "id": 829, "name": "Identifier", - "src": "2361:13:2" + "src": "2361:13:3" }, { "attributes": { @@ -6955,38 +6955,38 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1005, + "referencedDeclaration": 1058, "type": "block", "value": "block" }, - "id": 777, + "id": 830, "name": "Identifier", - "src": "2376:5:2" + "src": "2376:5:3" } ], - "id": 778, + "id": 831, "name": "MemberAccess", - "src": "2376:15:2" + "src": "2376:15:3" } ], - "id": 779, + "id": 832, "name": "FunctionCall", - "src": "2340:52:2" + "src": "2340:52:3" } ], - "id": 780, + "id": 833, "name": "EmitStatement", - "src": "2335:57:2" + "src": "2335:57:3" } ], - "id": 781, + "id": 834, "name": "Block", - "src": "2141:256:2" + "src": "2141:256:3" } ], - "id": 782, + "id": 835, "name": "FunctionDefinition", - "src": "2073:324:2" + "src": "2073:324:3" }, { "attributes": { @@ -6999,7 +6999,7 @@ null ], "name": "_processDeposit", - "scope": 970, + "scope": 1023, "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" @@ -7012,9 +7012,9 @@ ] }, "children": [], - "id": 783, + "id": 836, "name": "ParameterList", - "src": "2484:2:2" + "src": "2484:2:3" }, { "attributes": { @@ -7023,14 +7023,14 @@ ] }, "children": [], - "id": 784, + "id": 837, "name": "ParameterList", - "src": "2495:0:2" + "src": "2495:0:3" } ], - "id": 785, + "id": 838, "name": "FunctionDefinition", - "src": "2460:36:2" + "src": "2460:36:3" }, { "attributes": { @@ -7039,7 +7039,7 @@ "isConstructor": false, "kind": "function", "name": "withdraw", - "scope": 970, + "scope": 1023, "stateMutability": "payable", "superFunction": null, "visibility": "external" @@ -7051,7 +7051,7 @@ "attributes": { "constant": false, "name": "_proof", - "scope": 873, + "scope": 926, "stateVariable": false, "storageLocation": "calldata", "type": "bytes", @@ -7064,20 +7064,20 @@ "name": "bytes", "type": "bytes" }, - "id": 786, + "id": 839, "name": "ElementaryTypeName", - "src": "2911:5:2" + "src": "2911:5:3" } ], - "id": 787, + "id": 840, "name": "VariableDeclaration", - "src": "2911:21:2" + "src": "2911:21:3" }, { "attributes": { "constant": false, "name": "_root", - "scope": 873, + "scope": 926, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -7090,20 +7090,20 @@ "name": "bytes32", "type": "bytes32" }, - "id": 788, + "id": 841, "name": "ElementaryTypeName", - "src": "2934:7:2" + "src": "2934:7:3" } ], - "id": 789, + "id": 842, "name": "VariableDeclaration", - "src": "2934:13:2" + "src": "2934:13:3" }, { "attributes": { "constant": false, "name": "_nullifierHash", - "scope": 873, + "scope": 926, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -7116,20 +7116,20 @@ "name": "bytes32", "type": "bytes32" }, - "id": 790, + "id": 843, "name": "ElementaryTypeName", - "src": "2949:7:2" + "src": "2949:7:3" } ], - "id": 791, + "id": 844, "name": "VariableDeclaration", - "src": "2949:22:2" + "src": "2949:22:3" }, { "attributes": { "constant": false, "name": "_recipient", - "scope": 873, + "scope": 926, "stateVariable": false, "storageLocation": "default", "type": "address payable", @@ -7143,20 +7143,20 @@ "stateMutability": "payable", "type": "address payable" }, - "id": 792, + "id": 845, "name": "ElementaryTypeName", - "src": "2973:15:2" + "src": "2973:15:3" } ], - "id": 793, + "id": 846, "name": "VariableDeclaration", - "src": "2973:26:2" + "src": "2973:26:3" }, { "attributes": { "constant": false, "name": "_relayer", - "scope": 873, + "scope": 926, "stateVariable": false, "storageLocation": "default", "type": "address payable", @@ -7170,20 +7170,20 @@ "stateMutability": "payable", "type": "address payable" }, - "id": 794, + "id": 847, "name": "ElementaryTypeName", - "src": "3001:15:2" + "src": "3001:15:3" } ], - "id": 795, + "id": 848, "name": "VariableDeclaration", - "src": "3001:24:2" + "src": "3001:24:3" }, { "attributes": { "constant": false, "name": "_fee", - "scope": 873, + "scope": 926, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -7196,20 +7196,20 @@ "name": "uint256", "type": "uint256" }, - "id": 796, + "id": 849, "name": "ElementaryTypeName", - "src": "3027:7:2" + "src": "3027:7:3" } ], - "id": 797, + "id": 850, "name": "VariableDeclaration", - "src": "3027:12:2" + "src": "3027:12:3" }, { "attributes": { "constant": false, "name": "_refund", - "scope": 873, + "scope": 926, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -7222,19 +7222,19 @@ "name": "uint256", "type": "uint256" }, - "id": 798, + "id": 851, "name": "ElementaryTypeName", - "src": "3041:7:2" + "src": "3041:7:3" } ], - "id": 799, + "id": 852, "name": "VariableDeclaration", - "src": "3041:15:2" + "src": "3041:15:3" } ], - "id": 800, + "id": 853, "name": "ParameterList", - "src": "2910:147:2" + "src": "2910:147:3" }, { "attributes": { @@ -7243,9 +7243,9 @@ ] }, "children": [], - "id": 803, + "id": 856, "name": "ParameterList", - "src": "3088:0:2" + "src": "3088:0:3" }, { "attributes": { @@ -7258,18 +7258,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 999, + "referencedDeclaration": 1052, "type": "modifier ()", "value": "nonReentrant" }, - "id": 801, + "id": 854, "name": "Identifier", - "src": "3075:12:2" + "src": "3075:12:3" } ], - "id": 802, + "id": 855, "name": "ModifierInvocation", - "src": "3075:12:2" + "src": "3075:12:3" }, { "children": [ @@ -7303,16 +7303,16 @@ } ], "overloadedDeclarations": [ - 1018, - 1019 + 1071, + 1072 ], - "referencedDeclaration": 1019, + "referencedDeclaration": 1072, "type": "function (bool,string memory) pure", "value": "require" }, - "id": 804, + "id": 857, "name": "Identifier", - "src": "3094:7:2" + "src": "3094:7:3" }, { "attributes": { @@ -7335,13 +7335,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 797, + "referencedDeclaration": 850, "type": "uint256", "value": "_fee" }, - "id": 805, + "id": 858, "name": "Identifier", - "src": "3102:4:2" + "src": "3102:4:3" }, { "attributes": { @@ -7349,18 +7349,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 660, + "referencedDeclaration": 713, "type": "uint256", "value": "denomination" }, - "id": 806, + "id": 859, "name": "Identifier", - "src": "3110:12:2" + "src": "3110:12:3" } ], - "id": 807, + "id": 860, "name": "BinaryOperation", - "src": "3102:20:2" + "src": "3102:20:3" }, { "attributes": { @@ -7375,19 +7375,19 @@ "type": "literal_string \"Fee exceeds transfer value\"", "value": "Fee exceeds transfer value" }, - "id": 808, + "id": 861, "name": "Literal", - "src": "3124:28:2" + "src": "3124:28:3" } ], - "id": 809, + "id": 862, "name": "FunctionCall", - "src": "3094:59:2" + "src": "3094:59:3" } ], - "id": 810, + "id": 863, "name": "ExpressionStatement", - "src": "3094:59:2" + "src": "3094:59:3" }, { "children": [ @@ -7419,16 +7419,16 @@ } ], "overloadedDeclarations": [ - 1018, - 1019 + 1071, + 1072 ], - "referencedDeclaration": 1019, + "referencedDeclaration": 1072, "type": "function (bool,string memory) pure", "value": "require" }, - "id": 811, + "id": 864, "name": "Identifier", - "src": "3159:7:2" + "src": "3159:7:3" }, { "attributes": { @@ -7458,13 +7458,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 664, + "referencedDeclaration": 717, "type": "mapping(bytes32 => bool)", "value": "nullifierHashes" }, - "id": 812, + "id": 865, "name": "Identifier", - "src": "3168:15:2" + "src": "3168:15:3" }, { "attributes": { @@ -7472,23 +7472,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 791, + "referencedDeclaration": 844, "type": "bytes32", "value": "_nullifierHash" }, - "id": 813, + "id": 866, "name": "Identifier", - "src": "3184:14:2" + "src": "3184:14:3" } ], - "id": 814, + "id": 867, "name": "IndexAccess", - "src": "3168:31:2" + "src": "3168:31:3" } ], - "id": 815, + "id": 868, "name": "UnaryOperation", - "src": "3167:32:2" + "src": "3167:32:3" }, { "attributes": { @@ -7503,19 +7503,19 @@ "type": "literal_string \"The note has been already spent\"", "value": "The note has been already spent" }, - "id": 816, + "id": 869, "name": "Literal", - "src": "3201:33:2" + "src": "3201:33:3" } ], - "id": 817, + "id": 870, "name": "FunctionCall", - "src": "3159:76:2" + "src": "3159:76:3" } ], - "id": 818, + "id": 871, "name": "ExpressionStatement", - "src": "3159:76:2" + "src": "3159:76:3" }, { "children": [ @@ -7547,16 +7547,16 @@ } ], "overloadedDeclarations": [ - 1018, - 1019 + 1071, + 1072 ], - "referencedDeclaration": 1019, + "referencedDeclaration": 1072, "type": "function (bool,string memory) pure", "value": "require" }, - "id": 819, + "id": 872, "name": "Identifier", - "src": "3241:7:2" + "src": "3241:7:3" }, { "attributes": { @@ -7584,13 +7584,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 621, + "referencedDeclaration": 674, "type": "function (bytes32) view returns (bool)", "value": "isKnownRoot" }, - "id": 820, + "id": 873, "name": "Identifier", - "src": "3249:11:2" + "src": "3249:11:3" }, { "attributes": { @@ -7598,18 +7598,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 789, + "referencedDeclaration": 842, "type": "bytes32", "value": "_root" }, - "id": 821, + "id": 874, "name": "Identifier", - "src": "3261:5:2" + "src": "3261:5:3" } ], - "id": 822, + "id": 875, "name": "FunctionCall", - "src": "3249:18:2" + "src": "3249:18:3" }, { "attributes": { @@ -7624,19 +7624,19 @@ "type": "literal_string \"Cannot find your merkle root\"", "value": "Cannot find your merkle root" }, - "id": 823, + "id": 876, "name": "Literal", - "src": "3269:30:2" + "src": "3269:30:3" } ], - "id": 824, + "id": 877, "name": "FunctionCall", - "src": "3241:59:2" + "src": "3241:59:3" } ], - "id": 825, + "id": 878, "name": "ExpressionStatement", - "src": "3241:59:2" + "src": "3241:59:3" }, { "children": [ @@ -7668,16 +7668,16 @@ } ], "overloadedDeclarations": [ - 1018, - 1019 + 1071, + 1072 ], - "referencedDeclaration": 1019, + "referencedDeclaration": 1072, "type": "function (bool,string memory) pure", "value": "require" }, - "id": 826, + "id": 879, "name": "Identifier", - "src": "3339:7:2" + "src": "3339:7:3" }, { "attributes": { @@ -7711,7 +7711,7 @@ "isPure": false, "lValueRequested": false, "member_name": "verifyProof", - "referencedDeclaration": 647, + "referencedDeclaration": 700, "type": "function (bytes memory,uint256[6] memory) external returns (bool)" }, "children": [ @@ -7721,18 +7721,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 670, + "referencedDeclaration": 723, "type": "contract IVerifier", "value": "verifier" }, - "id": 827, + "id": 880, "name": "Identifier", - "src": "3347:8:2" + "src": "3347:8:3" } ], - "id": 828, + "id": 881, "name": "MemberAccess", - "src": "3347:20:2" + "src": "3347:20:3" }, { "attributes": { @@ -7740,13 +7740,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 787, + "referencedDeclaration": 840, "type": "bytes calldata", "value": "_proof" }, - "id": 829, + "id": 882, "name": "Identifier", - "src": "3368:6:2" + "src": "3368:6:3" }, { "attributes": { @@ -7789,9 +7789,9 @@ "type": "type(uint256)", "value": "uint256" }, - "id": 830, + "id": 883, "name": "ElementaryTypeNameExpression", - "src": "3377:7:2" + "src": "3377:7:3" }, { "attributes": { @@ -7799,18 +7799,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 789, + "referencedDeclaration": 842, "type": "bytes32", "value": "_root" }, - "id": 831, + "id": 884, "name": "Identifier", - "src": "3385:5:2" + "src": "3385:5:3" } ], - "id": 832, + "id": 885, "name": "FunctionCall", - "src": "3377:14:2" + "src": "3377:14:3" }, { "attributes": { @@ -7842,9 +7842,9 @@ "type": "type(uint256)", "value": "uint256" }, - "id": 833, + "id": 886, "name": "ElementaryTypeNameExpression", - "src": "3393:7:2" + "src": "3393:7:3" }, { "attributes": { @@ -7852,18 +7852,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 791, + "referencedDeclaration": 844, "type": "bytes32", "value": "_nullifierHash" }, - "id": 834, + "id": 887, "name": "Identifier", - "src": "3401:14:2" + "src": "3401:14:3" } ], - "id": 835, + "id": 888, "name": "FunctionCall", - "src": "3393:23:2" + "src": "3393:23:3" }, { "attributes": { @@ -7895,9 +7895,9 @@ "type": "type(uint256)", "value": "uint256" }, - "id": 836, + "id": 889, "name": "ElementaryTypeNameExpression", - "src": "3418:7:2" + "src": "3418:7:3" }, { "attributes": { @@ -7905,18 +7905,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 793, + "referencedDeclaration": 846, "type": "address payable", "value": "_recipient" }, - "id": 837, + "id": 890, "name": "Identifier", - "src": "3426:10:2" + "src": "3426:10:3" } ], - "id": 838, + "id": 891, "name": "FunctionCall", - "src": "3418:19:2" + "src": "3418:19:3" }, { "attributes": { @@ -7948,9 +7948,9 @@ "type": "type(uint256)", "value": "uint256" }, - "id": 839, + "id": 892, "name": "ElementaryTypeNameExpression", - "src": "3439:7:2" + "src": "3439:7:3" }, { "attributes": { @@ -7958,18 +7958,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 795, + "referencedDeclaration": 848, "type": "address payable", "value": "_relayer" }, - "id": 840, + "id": 893, "name": "Identifier", - "src": "3447:8:2" + "src": "3447:8:3" } ], - "id": 841, + "id": 894, "name": "FunctionCall", - "src": "3439:17:2" + "src": "3439:17:3" }, { "attributes": { @@ -7977,13 +7977,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 797, + "referencedDeclaration": 850, "type": "uint256", "value": "_fee" }, - "id": 842, + "id": 895, "name": "Identifier", - "src": "3458:4:2" + "src": "3458:4:3" }, { "attributes": { @@ -7991,23 +7991,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 799, + "referencedDeclaration": 852, "type": "uint256", "value": "_refund" }, - "id": 843, + "id": 896, "name": "Identifier", - "src": "3464:7:2" + "src": "3464:7:3" } ], - "id": 844, + "id": 897, "name": "TupleExpression", - "src": "3376:96:2" + "src": "3376:96:3" } ], - "id": 845, + "id": 898, "name": "FunctionCall", - "src": "3347:126:2" + "src": "3347:126:3" }, { "attributes": { @@ -8022,19 +8022,19 @@ "type": "literal_string \"Invalid withdraw proof\"", "value": "Invalid withdraw proof" }, - "id": 846, + "id": 899, "name": "Literal", - "src": "3475:24:2" + "src": "3475:24:3" } ], - "id": 847, + "id": 900, "name": "FunctionCall", - "src": "3339:161:2" + "src": "3339:161:3" } ], - "id": 848, + "id": 901, "name": "ExpressionStatement", - "src": "3339:161:2" + "src": "3339:161:3" }, { "children": [ @@ -8065,13 +8065,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 664, + "referencedDeclaration": 717, "type": "mapping(bytes32 => bool)", "value": "nullifierHashes" }, - "id": 849, + "id": 902, "name": "Identifier", - "src": "3507:15:2" + "src": "3507:15:3" }, { "attributes": { @@ -8079,18 +8079,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 791, + "referencedDeclaration": 844, "type": "bytes32", "value": "_nullifierHash" }, - "id": 850, + "id": 903, "name": "Identifier", - "src": "3523:14:2" + "src": "3523:14:3" } ], - "id": 851, + "id": 904, "name": "IndexAccess", - "src": "3507:31:2" + "src": "3507:31:3" }, { "attributes": { @@ -8105,19 +8105,19 @@ "type": "bool", "value": "true" }, - "id": 852, + "id": 905, "name": "Literal", - "src": "3541:4:2" + "src": "3541:4:3" } ], - "id": 853, + "id": 906, "name": "Assignment", - "src": "3507:38:2" + "src": "3507:38:3" } ], - "id": 854, + "id": 907, "name": "ExpressionStatement", - "src": "3507:38:2" + "src": "3507:38:3" }, { "children": [ @@ -8163,13 +8163,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 886, + "referencedDeclaration": 939, "type": "function (address payable,address payable,uint256,uint256,address)", "value": "_processWithdraw" }, - "id": 855, + "id": 908, "name": "Identifier", - "src": "3551:16:2" + "src": "3551:16:3" }, { "attributes": { @@ -8177,13 +8177,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 793, + "referencedDeclaration": 846, "type": "address payable", "value": "_recipient" }, - "id": 856, + "id": 909, "name": "Identifier", - "src": "3568:10:2" + "src": "3568:10:3" }, { "attributes": { @@ -8191,13 +8191,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 795, + "referencedDeclaration": 848, "type": "address payable", "value": "_relayer" }, - "id": 857, + "id": 910, "name": "Identifier", - "src": "3580:8:2" + "src": "3580:8:3" }, { "attributes": { @@ -8205,13 +8205,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 797, + "referencedDeclaration": 850, "type": "uint256", "value": "_fee" }, - "id": 858, + "id": 911, "name": "Identifier", - "src": "3590:4:2" + "src": "3590:4:3" }, { "attributes": { @@ -8219,13 +8219,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 799, + "referencedDeclaration": 852, "type": "uint256", "value": "_refund" }, - "id": 859, + "id": 912, "name": "Identifier", - "src": "3596:7:2" + "src": "3596:7:3" }, { "attributes": { @@ -8255,7 +8255,7 @@ "isPure": false, "lValueRequested": false, "member_name": "feeTo", - "referencedDeclaration": 653, + "referencedDeclaration": 706, "type": "function () view external returns (address)" }, "children": [ @@ -8265,33 +8265,33 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 672, + "referencedDeclaration": 725, "type": "contract IFeeManager", "value": "feeManager" }, - "id": 860, + "id": 913, "name": "Identifier", - "src": "3605:10:2" + "src": "3605:10:3" } ], - "id": 861, + "id": 914, "name": "MemberAccess", - "src": "3605:16:2" + "src": "3605:16:3" } ], - "id": 862, + "id": 915, "name": "FunctionCall", - "src": "3605:18:2" + "src": "3605:18:3" } ], - "id": 863, + "id": 916, "name": "FunctionCall", - "src": "3551:73:2" + "src": "3551:73:3" } ], - "id": 864, + "id": 917, "name": "ExpressionStatement", - "src": "3551:73:2" + "src": "3551:73:3" }, { "children": [ @@ -8333,13 +8333,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 704, + "referencedDeclaration": 757, "type": "function (address,bytes32,address,uint256)", "value": "Withdrawal" }, - "id": 865, + "id": 918, "name": "Identifier", - "src": "3635:10:2" + "src": "3635:10:3" }, { "attributes": { @@ -8347,13 +8347,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 793, + "referencedDeclaration": 846, "type": "address payable", "value": "_recipient" }, - "id": 866, + "id": 919, "name": "Identifier", - "src": "3646:10:2" + "src": "3646:10:3" }, { "attributes": { @@ -8361,13 +8361,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 791, + "referencedDeclaration": 844, "type": "bytes32", "value": "_nullifierHash" }, - "id": 867, + "id": 920, "name": "Identifier", - "src": "3658:14:2" + "src": "3658:14:3" }, { "attributes": { @@ -8375,13 +8375,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 795, + "referencedDeclaration": 848, "type": "address payable", "value": "_relayer" }, - "id": 868, + "id": 921, "name": "Identifier", - "src": "3674:8:2" + "src": "3674:8:3" }, { "attributes": { @@ -8389,33 +8389,33 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 797, + "referencedDeclaration": 850, "type": "uint256", "value": "_fee" }, - "id": 869, + "id": 922, "name": "Identifier", - "src": "3684:4:2" + "src": "3684:4:3" } ], - "id": 870, + "id": 923, "name": "FunctionCall", - "src": "3635:54:2" + "src": "3635:54:3" } ], - "id": 871, + "id": 924, "name": "EmitStatement", - "src": "3630:59:2" + "src": "3630:59:3" } ], - "id": 872, + "id": 925, "name": "Block", - "src": "3088:606:2" + "src": "3088:606:3" } ], - "id": 873, + "id": 926, "name": "FunctionDefinition", - "src": "2893:801:2" + "src": "2893:801:3" }, { "attributes": { @@ -8428,7 +8428,7 @@ null ], "name": "_processWithdraw", - "scope": 970, + "scope": 1023, "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" @@ -8440,7 +8440,7 @@ "attributes": { "constant": false, "name": "_recipient", - "scope": 886, + "scope": 939, "stateVariable": false, "storageLocation": "default", "type": "address payable", @@ -8454,20 +8454,20 @@ "stateMutability": "payable", "type": "address payable" }, - "id": 874, + "id": 927, "name": "ElementaryTypeName", - "src": "3783:15:2" + "src": "3783:15:3" } ], - "id": 875, + "id": 928, "name": "VariableDeclaration", - "src": "3783:26:2" + "src": "3783:26:3" }, { "attributes": { "constant": false, "name": "_relayer", - "scope": 886, + "scope": 939, "stateVariable": false, "storageLocation": "default", "type": "address payable", @@ -8481,20 +8481,20 @@ "stateMutability": "payable", "type": "address payable" }, - "id": 876, + "id": 929, "name": "ElementaryTypeName", - "src": "3811:15:2" + "src": "3811:15:3" } ], - "id": 877, + "id": 930, "name": "VariableDeclaration", - "src": "3811:24:2" + "src": "3811:24:3" }, { "attributes": { "constant": false, "name": "_relayer_fee", - "scope": 886, + "scope": 939, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -8507,20 +8507,20 @@ "name": "uint256", "type": "uint256" }, - "id": 878, + "id": 931, "name": "ElementaryTypeName", - "src": "3837:7:2" + "src": "3837:7:3" } ], - "id": 879, + "id": 932, "name": "VariableDeclaration", - "src": "3837:20:2" + "src": "3837:20:3" }, { "attributes": { "constant": false, "name": "_refund", - "scope": 886, + "scope": 939, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -8533,20 +8533,20 @@ "name": "uint256", "type": "uint256" }, - "id": 880, + "id": 933, "name": "ElementaryTypeName", - "src": "3859:7:2" + "src": "3859:7:3" } ], - "id": 881, + "id": 934, "name": "VariableDeclaration", - "src": "3859:15:2" + "src": "3859:15:3" }, { "attributes": { "constant": false, "name": "_feeTo", - "scope": 886, + "scope": 939, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -8560,19 +8560,19 @@ "stateMutability": "nonpayable", "type": "address" }, - "id": 882, + "id": 935, "name": "ElementaryTypeName", - "src": "3876:7:2" + "src": "3876:7:3" } ], - "id": 883, + "id": 936, "name": "VariableDeclaration", - "src": "3876:14:2" + "src": "3876:14:3" } ], - "id": 884, + "id": 937, "name": "ParameterList", - "src": "3782:109:2" + "src": "3782:109:3" }, { "attributes": { @@ -8581,14 +8581,14 @@ ] }, "children": [], - "id": 885, + "id": 938, "name": "ParameterList", - "src": "3900:0:2" + "src": "3900:0:3" } ], - "id": 886, + "id": 939, "name": "FunctionDefinition", - "src": "3757:144:2" + "src": "3757:144:3" }, { "attributes": { @@ -8600,7 +8600,7 @@ null ], "name": "isSpent", - "scope": 970, + "scope": 1023, "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -8612,7 +8612,7 @@ "attributes": { "constant": false, "name": "_nullifierHash", - "scope": 898, + "scope": 951, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -8625,19 +8625,19 @@ "name": "bytes32", "type": "bytes32" }, - "id": 887, + "id": 940, "name": "ElementaryTypeName", - "src": "3968:7:2" + "src": "3968:7:3" } ], - "id": 888, + "id": 941, "name": "VariableDeclaration", - "src": "3968:22:2" + "src": "3968:22:3" } ], - "id": 889, + "id": 942, "name": "ParameterList", - "src": "3967:24:2" + "src": "3967:24:3" }, { "children": [ @@ -8645,7 +8645,7 @@ "attributes": { "constant": false, "name": "", - "scope": 898, + "scope": 951, "stateVariable": false, "storageLocation": "default", "type": "bool", @@ -8658,25 +8658,25 @@ "name": "bool", "type": "bool" }, - "id": 890, + "id": 943, "name": "ElementaryTypeName", - "src": "4012:4:2" + "src": "4012:4:3" } ], - "id": 891, + "id": 944, "name": "VariableDeclaration", - "src": "4012:4:2" + "src": "4012:4:3" } ], - "id": 892, + "id": 945, "name": "ParameterList", - "src": "4011:6:2" + "src": "4011:6:3" }, { "children": [ { "attributes": { - "functionReturnParameters": 892 + "functionReturnParameters": 945 }, "children": [ { @@ -8695,13 +8695,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 664, + "referencedDeclaration": 717, "type": "mapping(bytes32 => bool)", "value": "nullifierHashes" }, - "id": 893, + "id": 946, "name": "Identifier", - "src": "4031:15:2" + "src": "4031:15:3" }, { "attributes": { @@ -8709,33 +8709,33 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 888, + "referencedDeclaration": 941, "type": "bytes32", "value": "_nullifierHash" }, - "id": 894, + "id": 947, "name": "Identifier", - "src": "4047:14:2" + "src": "4047:14:3" } ], - "id": 895, + "id": 948, "name": "IndexAccess", - "src": "4031:31:2" + "src": "4031:31:3" } ], - "id": 896, + "id": 949, "name": "Return", - "src": "4024:38:2" + "src": "4024:38:3" } ], - "id": 897, + "id": 950, "name": "Block", - "src": "4018:49:2" + "src": "4018:49:3" } ], - "id": 898, + "id": 951, "name": "FunctionDefinition", - "src": "3951:116:2" + "src": "3951:116:3" }, { "attributes": { @@ -8747,7 +8747,7 @@ null ], "name": "isSpentArray", - "scope": 970, + "scope": 1023, "stateMutability": "view", "superFunction": null, "visibility": "external" @@ -8759,7 +8759,7 @@ "attributes": { "constant": false, "name": "_nullifierHashes", - "scope": 943, + "scope": 996, "stateVariable": false, "storageLocation": "calldata", "type": "bytes32[]", @@ -8778,24 +8778,24 @@ "name": "bytes32", "type": "bytes32" }, - "id": 899, + "id": 952, "name": "ElementaryTypeName", - "src": "4150:7:2" + "src": "4150:7:3" } ], - "id": 900, + "id": 953, "name": "ArrayTypeName", - "src": "4150:9:2" + "src": "4150:9:3" } ], - "id": 901, + "id": 954, "name": "VariableDeclaration", - "src": "4150:35:2" + "src": "4150:35:3" } ], - "id": 902, + "id": 955, "name": "ParameterList", - "src": "4149:37:2" + "src": "4149:37:3" }, { "children": [ @@ -8803,7 +8803,7 @@ "attributes": { "constant": false, "name": "spent", - "scope": 943, + "scope": 996, "stateVariable": false, "storageLocation": "memory", "type": "bool[]", @@ -8822,24 +8822,24 @@ "name": "bool", "type": "bool" }, - "id": 903, + "id": 956, "name": "ElementaryTypeName", - "src": "4209:4:2" + "src": "4209:4:3" } ], - "id": 904, + "id": 957, "name": "ArrayTypeName", - "src": "4209:6:2" + "src": "4209:6:3" } ], - "id": 905, + "id": 958, "name": "VariableDeclaration", - "src": "4209:19:2" + "src": "4209:19:3" } ], - "id": 906, + "id": 959, "name": "ParameterList", - "src": "4208:21:2" + "src": "4208:21:3" }, { "children": [ @@ -8862,13 +8862,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 905, + "referencedDeclaration": 958, "type": "bool[] memory", "value": "spent" }, - "id": 907, + "id": 960, "name": "Identifier", - "src": "4236:5:2" + "src": "4236:5:3" }, { "attributes": { @@ -8911,19 +8911,19 @@ "name": "bool", "type": "bool" }, - "id": 908, + "id": 961, "name": "ElementaryTypeName", - "src": "4248:4:2" + "src": "4248:4:3" } ], - "id": 909, + "id": 962, "name": "ArrayTypeName", - "src": "4248:6:2" + "src": "4248:6:3" } ], - "id": 910, + "id": 963, "name": "NewExpression", - "src": "4244:10:2" + "src": "4244:10:3" }, { "attributes": { @@ -8943,40 +8943,40 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 901, + "referencedDeclaration": 954, "type": "bytes32[] calldata", "value": "_nullifierHashes" }, - "id": 911, + "id": 964, "name": "Identifier", - "src": "4255:16:2" + "src": "4255:16:3" } ], - "id": 912, + "id": 965, "name": "MemberAccess", - "src": "4255:23:2" + "src": "4255:23:3" } ], - "id": 913, + "id": 966, "name": "FunctionCall", - "src": "4244:35:2" + "src": "4244:35:3" } ], - "id": 914, + "id": 967, "name": "Assignment", - "src": "4236:43:2" + "src": "4236:43:3" } ], - "id": 915, + "id": 968, "name": "ExpressionStatement", - "src": "4236:43:2" + "src": "4236:43:3" }, { "children": [ { "attributes": { "assignments": [ - 917 + 970 ] }, "children": [ @@ -8984,7 +8984,7 @@ "attributes": { "constant": false, "name": "i", - "scope": 941, + "scope": 994, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -8997,14 +8997,14 @@ "name": "uint", "type": "uint256" }, - "id": 916, + "id": 969, "name": "ElementaryTypeName", - "src": "4289:4:2" + "src": "4289:4:3" } ], - "id": 917, + "id": 970, "name": "VariableDeclaration", - "src": "4289:6:2" + "src": "4289:6:3" }, { "attributes": { @@ -9019,14 +9019,14 @@ "type": "int_const 0", "value": "0" }, - "id": 918, + "id": 971, "name": "Literal", - "src": "4298:1:2" + "src": "4298:1:3" } ], - "id": 919, + "id": 972, "name": "VariableDeclarationStatement", - "src": "4289:10:2" + "src": "4289:10:3" }, { "attributes": { @@ -9049,13 +9049,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 917, + "referencedDeclaration": 970, "type": "uint256", "value": "i" }, - "id": 920, + "id": 973, "name": "Identifier", - "src": "4301:1:2" + "src": "4301:1:3" }, { "attributes": { @@ -9075,23 +9075,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 901, + "referencedDeclaration": 954, "type": "bytes32[] calldata", "value": "_nullifierHashes" }, - "id": 921, + "id": 974, "name": "Identifier", - "src": "4305:16:2" + "src": "4305:16:3" } ], - "id": 922, + "id": 975, "name": "MemberAccess", - "src": "4305:23:2" + "src": "4305:23:3" } ], - "id": 923, + "id": 976, "name": "BinaryOperation", - "src": "4301:27:2" + "src": "4301:27:3" }, { "children": [ @@ -9113,23 +9113,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 917, + "referencedDeclaration": 970, "type": "uint256", "value": "i" }, - "id": 924, + "id": 977, "name": "Identifier", - "src": "4330:1:2" + "src": "4330:1:3" } ], - "id": 925, + "id": 978, "name": "UnaryOperation", - "src": "4330:3:2" + "src": "4330:3:3" } ], - "id": 926, + "id": 979, "name": "ExpressionStatement", - "src": "4330:3:2" + "src": "4330:3:3" }, { "children": [ @@ -9164,13 +9164,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 898, + "referencedDeclaration": 951, "type": "function (bytes32) view returns (bool)", "value": "isSpent" }, - "id": 927, + "id": 980, "name": "Identifier", - "src": "4347:7:2" + "src": "4347:7:3" }, { "attributes": { @@ -9188,13 +9188,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 901, + "referencedDeclaration": 954, "type": "bytes32[] calldata", "value": "_nullifierHashes" }, - "id": 928, + "id": 981, "name": "Identifier", - "src": "4355:16:2" + "src": "4355:16:3" }, { "attributes": { @@ -9202,23 +9202,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 917, + "referencedDeclaration": 970, "type": "uint256", "value": "i" }, - "id": 929, + "id": 982, "name": "Identifier", - "src": "4372:1:2" + "src": "4372:1:3" } ], - "id": 930, + "id": 983, "name": "IndexAccess", - "src": "4355:19:2" + "src": "4355:19:3" } ], - "id": 931, + "id": 984, "name": "FunctionCall", - "src": "4347:28:2" + "src": "4347:28:3" }, { "children": [ @@ -9251,13 +9251,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 905, + "referencedDeclaration": 958, "type": "bool[] memory", "value": "spent" }, - "id": 932, + "id": 985, "name": "Identifier", - "src": "4387:5:2" + "src": "4387:5:3" }, { "attributes": { @@ -9265,18 +9265,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 917, + "referencedDeclaration": 970, "type": "uint256", "value": "i" }, - "id": 933, + "id": 986, "name": "Identifier", - "src": "4393:1:2" + "src": "4393:1:3" } ], - "id": 934, + "id": 987, "name": "IndexAccess", - "src": "4387:8:2" + "src": "4387:8:3" }, { "attributes": { @@ -9291,49 +9291,49 @@ "type": "bool", "value": "true" }, - "id": 935, + "id": 988, "name": "Literal", - "src": "4398:4:2" + "src": "4398:4:3" } ], - "id": 936, + "id": 989, "name": "Assignment", - "src": "4387:15:2" + "src": "4387:15:3" } ], - "id": 937, + "id": 990, "name": "ExpressionStatement", - "src": "4387:15:2" + "src": "4387:15:3" } ], - "id": 938, + "id": 991, "name": "Block", - "src": "4377:34:2" + "src": "4377:34:3" } ], - "id": 939, + "id": 992, "name": "IfStatement", - "src": "4343:68:2" + "src": "4343:68:3" } ], - "id": 940, + "id": 993, "name": "Block", - "src": "4335:82:2" + "src": "4335:82:3" } ], - "id": 941, + "id": 994, "name": "ForStatement", - "src": "4285:132:2" + "src": "4285:132:3" } ], - "id": 942, + "id": 995, "name": "Block", - "src": "4230:191:2" + "src": "4230:191:3" } ], - "id": 943, + "id": 996, "name": "FunctionDefinition", - "src": "4128:293:2" + "src": "4128:293:3" }, { "attributes": { @@ -9342,7 +9342,7 @@ "isConstructor": false, "kind": "function", "name": "updateVerifier", - "scope": 970, + "scope": 1023, "stateMutability": "nonpayable", "superFunction": null, "visibility": "external" @@ -9354,7 +9354,7 @@ "attributes": { "constant": false, "name": "_newVerifier", - "scope": 957, + "scope": 1010, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -9368,19 +9368,19 @@ "stateMutability": "nonpayable", "type": "address" }, - "id": 944, + "id": 997, "name": "ElementaryTypeName", - "src": "4675:7:2" + "src": "4675:7:3" } ], - "id": 945, + "id": 998, "name": "VariableDeclaration", - "src": "4675:20:2" + "src": "4675:20:3" } ], - "id": 946, + "id": 999, "name": "ParameterList", - "src": "4674:22:2" + "src": "4674:22:3" }, { "attributes": { @@ -9389,9 +9389,9 @@ ] }, "children": [], - "id": 949, + "id": 1002, "name": "ParameterList", - "src": "4719:0:2" + "src": "4719:0:3" }, { "attributes": { @@ -9404,18 +9404,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 686, + "referencedDeclaration": 739, "type": "modifier ()", "value": "onlyOperator" }, - "id": 947, + "id": 1000, "name": "Identifier", - "src": "4706:12:2" + "src": "4706:12:3" } ], - "id": 948, + "id": 1001, "name": "ModifierInvocation", - "src": "4706:12:2" + "src": "4706:12:3" }, { "children": [ @@ -9438,13 +9438,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 670, + "referencedDeclaration": 723, "type": "contract IVerifier", "value": "verifier" }, - "id": 950, + "id": 1003, "name": "Identifier", - "src": "4725:8:2" + "src": "4725:8:3" }, { "attributes": { @@ -9472,13 +9472,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 648, + "referencedDeclaration": 701, "type": "type(contract IVerifier)", "value": "IVerifier" }, - "id": 951, + "id": 1004, "name": "Identifier", - "src": "4736:9:2" + "src": "4736:9:3" }, { "attributes": { @@ -9486,38 +9486,38 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 945, + "referencedDeclaration": 998, "type": "address", "value": "_newVerifier" }, - "id": 952, + "id": 1005, "name": "Identifier", - "src": "4746:12:2" + "src": "4746:12:3" } ], - "id": 953, + "id": 1006, "name": "FunctionCall", - "src": "4736:23:2" + "src": "4736:23:3" } ], - "id": 954, + "id": 1007, "name": "Assignment", - "src": "4725:34:2" + "src": "4725:34:3" } ], - "id": 955, + "id": 1008, "name": "ExpressionStatement", - "src": "4725:34:2" + "src": "4725:34:3" } ], - "id": 956, + "id": 1009, "name": "Block", - "src": "4719:45:2" + "src": "4719:45:3" } ], - "id": 957, + "id": 1010, "name": "FunctionDefinition", - "src": "4651:113:2" + "src": "4651:113:3" }, { "attributes": { @@ -9526,7 +9526,7 @@ "isConstructor": false, "kind": "function", "name": "changeOperator", - "scope": 970, + "scope": 1023, "stateMutability": "nonpayable", "superFunction": null, "visibility": "external" @@ -9538,7 +9538,7 @@ "attributes": { "constant": false, "name": "_newOperator", - "scope": 969, + "scope": 1022, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -9552,19 +9552,19 @@ "stateMutability": "nonpayable", "type": "address" }, - "id": 958, + "id": 1011, "name": "ElementaryTypeName", - "src": "4838:7:2" + "src": "4838:7:3" } ], - "id": 959, + "id": 1012, "name": "VariableDeclaration", - "src": "4838:20:2" + "src": "4838:20:3" } ], - "id": 960, + "id": 1013, "name": "ParameterList", - "src": "4837:22:2" + "src": "4837:22:3" }, { "attributes": { @@ -9573,9 +9573,9 @@ ] }, "children": [], - "id": 963, + "id": 1016, "name": "ParameterList", - "src": "4882:0:2" + "src": "4882:0:3" }, { "attributes": { @@ -9588,18 +9588,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 686, + "referencedDeclaration": 739, "type": "modifier ()", "value": "onlyOperator" }, - "id": 961, + "id": 1014, "name": "Identifier", - "src": "4869:12:2" + "src": "4869:12:3" } ], - "id": 962, + "id": 1015, "name": "ModifierInvocation", - "src": "4869:12:2" + "src": "4869:12:3" }, { "children": [ @@ -9622,13 +9622,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 674, + "referencedDeclaration": 727, "type": "address", "value": "operator" }, - "id": 964, + "id": 1017, "name": "Identifier", - "src": "4888:8:2" + "src": "4888:8:3" }, { "attributes": { @@ -9636,43 +9636,43 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 959, + "referencedDeclaration": 1012, "type": "address", "value": "_newOperator" }, - "id": 965, + "id": 1018, "name": "Identifier", - "src": "4899:12:2" + "src": "4899:12:3" } ], - "id": 966, + "id": 1019, "name": "Assignment", - "src": "4888:23:2" + "src": "4888:23:3" } ], - "id": 967, + "id": 1020, "name": "ExpressionStatement", - "src": "4888:23:2" + "src": "4888:23:3" } ], - "id": 968, + "id": 1021, "name": "Block", - "src": "4882:34:2" + "src": "4882:34:3" } ], - "id": 969, + "id": 1022, "name": "FunctionDefinition", - "src": "4814:102:2" + "src": "4814:102:3" } ], - "id": 970, + "id": 1023, "name": "ContractDefinition", - "src": "318:4600:2" + "src": "318:4600:3" } ], - "id": 971, + "id": 1024, "name": "SourceUnit", - "src": "0:4919:2" + "src": "0:4919:3" }, "compiler": { "name": "solc", @@ -9680,7 +9680,7 @@ }, "networks": {}, "schemaVersion": "3.3.4", - "updatedAt": "2021-04-02T22:21:29.545Z", + "updatedAt": "2021-04-02T22:52:06.050Z", "devdoc": { "methods": { "changeOperator(address)": { diff --git a/client/contracts/Verifier.json b/client/contracts/Verifier.json index b66ad18..332e2ba 100644 --- a/client/contracts/Verifier.json +++ b/client/contracts/Verifier.json @@ -29913,8 +29913,8 @@ "42220": { "events": {}, "links": {}, - "address": "0x955D048f90935495F4f720b198AC31C9F0c57669", - "transactionHash": "0x4c179445168a4339ecf7692039fc0d00704aeb523389c00cfafb386ab70c35a0" + "address": "0x28ab493BFb23dB3709f4bDE25E3eE53154fA1afD", + "transactionHash": "0x0a6a0c9cbe5745e51ab064ad8f4921b9f99a8335ee3a2d40ea55b80a78313f33" }, "44787": { "events": {}, @@ -29924,7 +29924,8 @@ } }, "schemaVersion": "3.3.4", - "updatedAt": "2021-04-02T20:48:07.541Z", + "updatedAt": "2021-04-02T22:56:11.641Z", + "networkType": "ethereum", "devdoc": { "methods": {} },