{ "contractName": "WETH9", "abi": [ { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "src", "type": "address" }, { "indexed": true, "internalType": "address", "name": "guy", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "wad", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "dst", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "wad", "type": "uint256" } ], "name": "Deposit", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "src", "type": "address" }, { "indexed": true, "internalType": "address", "name": "dst", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "wad", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "src", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "wad", "type": "uint256" } ], "name": "Withdrawal", "type": "event" }, { "stateMutability": "payable", "type": "fallback" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "stateMutability": "payable", "type": "receive" }, { "inputs": [], "name": "deposit", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "wad", "type": "uint256" } ], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "guy", "type": "address" }, { "internalType": "uint256", "name": "wad", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "dst", "type": "address" }, { "internalType": "uint256", "name": "wad", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "src", "type": "address" }, { "internalType": "address", "name": "dst", "type": "address" }, { "internalType": "uint256", "name": "wad", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" } ], "metadata": "{\"compiler\":{\"version\":\"0.6.9+commit.3e3065ac\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"guy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Withdrawal\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"guy\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/Users/owen/Desktop/dodo/dodo-smart-contract/contracts/helper/TestWETH.sol\":\"WETH9\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/owen/Desktop/dodo/dodo-smart-contract/contracts/helper/TestWETH.sol\":{\"keccak256\":\"0x72eaab74270627103011243f9c2d1e91ab18e234b08426981ad9da129c76797f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://de33b645dd3cf368de9074ebddbf1a40ce697e6d320a330ca6f7bb5c2bc7d349\",\"dweb:/ipfs/Qmf9QyTZSBExDnqWFHbheZkuc8Uh8efjq5LamhniGqdgtn\"]}},\"version\":1}", "bytecode": "0x60c0604052600d60808190526c2bb930b83832b21022ba3432b960991b60a090815261002e916000919061007a565b50604080518082019091526004808252630ae8aa8960e31b602090920191825261005a9160019161007a565b506002805460ff1916601217905534801561007457600080fd5b50610115565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100bb57805160ff19168380011785556100e8565b828001600101855582156100e8579182015b828111156100e85782518255916020019190600101906100cd565b506100f49291506100f8565b5090565b61011291905b808211156100f457600081556001016100fe565b90565b6106f5806101246000396000f3fe6080604052600436106100a05760003560e01c8063313ce56711610064578063313ce5671461022257806370a082311461024d57806395d89b4114610280578063a9059cbb14610295578063d0e30db0146100af578063dd62ed3e146102ce576100af565b806306fdde03146100b7578063095ea7b31461014157806318160ddd1461018e57806323b872dd146101b55780632e1a7d4d146101f8576100af565b366100af576100ad610309565b005b6100ad610309565b3480156100c357600080fd5b506100cc610358565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101065781810151838201526020016100ee565b50505050905090810190601f1680156101335780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561014d57600080fd5b5061017a6004803603604081101561016457600080fd5b506001600160a01b0381351690602001356103e6565b604080519115158252519081900360200190f35b34801561019a57600080fd5b506101a361044c565b60408051918252519081900360200190f35b3480156101c157600080fd5b5061017a600480360360608110156101d857600080fd5b506001600160a01b03813581169160208101359091169060400135610450565b34801561020457600080fd5b506100ad6004803603602081101561021b57600080fd5b5035610584565b34801561022e57600080fd5b50610237610619565b6040805160ff9092168252519081900360200190f35b34801561025957600080fd5b506101a36004803603602081101561027057600080fd5b50356001600160a01b0316610622565b34801561028c57600080fd5b506100cc610634565b3480156102a157600080fd5b5061017a600480360360408110156102b857600080fd5b506001600160a01b03813516906020013561068e565b3480156102da57600080fd5b506101a3600480360360408110156102f157600080fd5b506001600160a01b03813581169160200135166106a2565b33600081815260036020908152604091829020805434908101909155825190815291517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9281900390910190a2565b6000805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156103de5780601f106103b3576101008083540402835291602001916103de565b820191906000526020600020905b8154815290600101906020018083116103c157829003601f168201915b505050505081565b3360008181526004602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b4790565b6001600160a01b03831660009081526003602052604081205482111561047557600080fd5b6001600160a01b03841633148015906104b357506001600160a01b038416600090815260046020908152604080832033845290915290205460001914155b15610513576001600160a01b03841660009081526004602090815260408083203384529091529020548211156104e857600080fd5b6001600160a01b03841660009081526004602090815260408083203384529091529020805483900390555b6001600160a01b03808516600081815260036020908152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35060019392505050565b336000908152600360205260409020548111156105a057600080fd5b33600081815260036020526040808220805485900390555183156108fc0291849190818181858888f193505050501580156105df573d6000803e3d6000fd5b5060408051828152905133917f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65919081900360200190a250565b60025460ff1681565b60036020526000908152604090205481565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156103de5780601f106103b3576101008083540402835291602001916103de565b600061069b338484610450565b9392505050565b60046020908152600092835260408084209091529082529020548156fea2646970667358221220656960ed51ceeb98837f88334f94fa275f8bae235d2c1c5d54e882b8cfc0165964736f6c63430006090033", "deployedBytecode": "0x6080604052600436106100a05760003560e01c8063313ce56711610064578063313ce5671461022257806370a082311461024d57806395d89b4114610280578063a9059cbb14610295578063d0e30db0146100af578063dd62ed3e146102ce576100af565b806306fdde03146100b7578063095ea7b31461014157806318160ddd1461018e57806323b872dd146101b55780632e1a7d4d146101f8576100af565b366100af576100ad610309565b005b6100ad610309565b3480156100c357600080fd5b506100cc610358565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101065781810151838201526020016100ee565b50505050905090810190601f1680156101335780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561014d57600080fd5b5061017a6004803603604081101561016457600080fd5b506001600160a01b0381351690602001356103e6565b604080519115158252519081900360200190f35b34801561019a57600080fd5b506101a361044c565b60408051918252519081900360200190f35b3480156101c157600080fd5b5061017a600480360360608110156101d857600080fd5b506001600160a01b03813581169160208101359091169060400135610450565b34801561020457600080fd5b506100ad6004803603602081101561021b57600080fd5b5035610584565b34801561022e57600080fd5b50610237610619565b6040805160ff9092168252519081900360200190f35b34801561025957600080fd5b506101a36004803603602081101561027057600080fd5b50356001600160a01b0316610622565b34801561028c57600080fd5b506100cc610634565b3480156102a157600080fd5b5061017a600480360360408110156102b857600080fd5b506001600160a01b03813516906020013561068e565b3480156102da57600080fd5b506101a3600480360360408110156102f157600080fd5b506001600160a01b03813581169160200135166106a2565b33600081815260036020908152604091829020805434908101909155825190815291517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9281900390910190a2565b6000805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156103de5780601f106103b3576101008083540402835291602001916103de565b820191906000526020600020905b8154815290600101906020018083116103c157829003601f168201915b505050505081565b3360008181526004602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b4790565b6001600160a01b03831660009081526003602052604081205482111561047557600080fd5b6001600160a01b03841633148015906104b357506001600160a01b038416600090815260046020908152604080832033845290915290205460001914155b15610513576001600160a01b03841660009081526004602090815260408083203384529091529020548211156104e857600080fd5b6001600160a01b03841660009081526004602090815260408083203384529091529020805483900390555b6001600160a01b03808516600081815260036020908152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35060019392505050565b336000908152600360205260409020548111156105a057600080fd5b33600081815260036020526040808220805485900390555183156108fc0291849190818181858888f193505050501580156105df573d6000803e3d6000fd5b5060408051828152905133917f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65919081900360200190a250565b60025460ff1681565b60036020526000908152604090205481565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156103de5780601f106103b3576101008083540402835291602001916103de565b600061069b338484610450565b9392505050565b60046020908152600092835260408084209091529082529020548156fea2646970667358221220656960ed51ceeb98837f88334f94fa275f8bae235d2c1c5d54e882b8cfc0165964736f6c63430006090033", "immutableReferences": {}, "sourceMap": "124:36:19:-:0;103:1872;124:36;;103:1872;124:36;;;-1:-1:-1;;;124:36:19;;;;;;-1:-1:-1;;124:36:19;;:::i;:::-;-1:-1:-1;166:29:19;;;;;;;;;;;;;-1:-1:-1;;;166:29:19;;;;;;;;;;;;:::i;:::-;-1:-1:-1;201:26:19;;;-1:-1:-1;;201:26:19;225:2;201:26;;;103:1872;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;103:1872:19;;;-1:-1:-1;103:1872:19;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", "deployedSourceMap": "103:1872:19:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;712:9;:7;:9::i;:::-;103:1872;;653:9;:7;:9::i;124:36::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1186:180;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1186:180:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1082:98;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1502:471;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1502:471:19;;;;;;;;;;;;;;;;;:::i;870:206::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;870:206:19;;:::i;201:26::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;494:44;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;494:44:19;-1:-1:-1;;;;;494:44:19;;:::i;166:29::-;;;;;;;;;;;;;:::i;1372:124::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1372:124:19;;;;;;;;:::i;544:64::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;544:64:19;;;;;;;;;;:::i;734:130::-;788:10;778:21;;;;:9;:21;;;;;;;;;:34;;803:9;778:34;;;;;;827:30;;;;;;;;;;;;;;;;;734:130::o;124:36::-;;;;;;;;;;;;;;;-1:-1:-1;;124:36:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1186:180::-;1271:10;1245:4;1261:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;1261:26:19;;;;;;;;;;;:32;;;1308:30;;;;;;;1245:4;;1261:26;;1271:10;;1308:30;;;;;;;;-1:-1:-1;1355:4:19;1186:180;;;;:::o;1082:98::-;1152:21;1082:98;:::o;1502:471::-;-1:-1:-1;;;;;1633:14:19;;1609:4;1633:14;;;:9;:14;;;;;;:21;-1:-1:-1;1633:21:19;1625:30;;;;;;-1:-1:-1;;;;;1670:17:19;;1677:10;1670:17;;;;:62;;-1:-1:-1;;;;;;1691:14:19;;;;;;:9;:14;;;;;;;;1706:10;1691:26;;;;;;;;-1:-1:-1;;1691:41:19;;1670:62;1666:182;;;-1:-1:-1;;;;;1756:14:19;;;;;;:9;:14;;;;;;;;1771:10;1756:26;;;;;;;;:33;-1:-1:-1;1756:33:19;1748:42;;;;;;-1:-1:-1;;;;;1804:14:19;;;;;;:9;:14;;;;;;;;1819:10;1804:26;;;;;;;:33;;;;;;;1666:182;-1:-1:-1;;;;;1858:14:19;;;;;;;:9;:14;;;;;;;;:21;;;;;;;1889:14;;;;;;;;;;:21;;;;;;1921:23;;;;;;;1889:14;;1921:23;;;;;;;;;;;-1:-1:-1;1962:4:19;1502:471;;;;;:::o;870:206::-;936:10;926:21;;;;:9;:21;;;;;;:28;-1:-1:-1;926:28:19;918:37;;;;;;975:10;965:21;;;;:9;:21;;;;;;:28;;;;;;;1003:24;;;;;;990:3;;1003:24;;965:21;1003:24;990:3;975:10;1003:24;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1042:27:19;;;;;;;;1053:10;;1042:27;;;;;;;;;;870:206;:::o;201:26::-;;;;;;:::o;494:44::-;;;;;;;;;;;;;:::o;166:29::-;;;;;;;;;;;;;;;-1:-1:-1;;166:29:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1372:124;1432:4;1455:34;1468:10;1480:3;1485;1455:12;:34::i;:::-;1448:41;1372:124;-1:-1:-1;;;1372:124:19:o;544:64::-;;;;;;;;;;;;;;;;;;;;;;;;:::o", "source": "/*\n\n Copyright 2020 DODO ZOO.\n SPDX-License-Identifier: Apache-2.0\n\n*/\n\npragma solidity 0.6.9;\n\n\ncontract WETH9 {\n string public name = \"Wrapped Ether\";\n string public symbol = \"WETH\";\n uint8 public decimals = 18;\n\n event Approval(address indexed src, address indexed guy, uint256 wad);\n event Transfer(address indexed src, address indexed dst, uint256 wad);\n event Deposit(address indexed dst, uint256 wad);\n event Withdrawal(address indexed src, uint256 wad);\n\n mapping(address => uint256) public balanceOf;\n mapping(address => mapping(address => uint256)) public allowance;\n\n fallback() external payable {\n deposit();\n }\n\n receive() external payable {\n deposit();\n }\n\n function deposit() public payable {\n balanceOf[msg.sender] += msg.value;\n emit Deposit(msg.sender, msg.value);\n }\n\n function withdraw(uint256 wad) public {\n require(balanceOf[msg.sender] >= wad);\n balanceOf[msg.sender] -= wad;\n msg.sender.transfer(wad);\n emit Withdrawal(msg.sender, wad);\n }\n\n function totalSupply() public view returns (uint256) {\n return address(this).balance;\n }\n\n function approve(address guy, uint256 wad) public returns (bool) {\n allowance[msg.sender][guy] = wad;\n emit Approval(msg.sender, guy, wad);\n return true;\n }\n\n function transfer(address dst, uint256 wad) public returns (bool) {\n return transferFrom(msg.sender, dst, wad);\n }\n\n function transferFrom(\n address src,\n address dst,\n uint256 wad\n ) public returns (bool) {\n require(balanceOf[src] >= wad);\n\n if (src != msg.sender && allowance[src][msg.sender] != uint256(-1)) {\n require(allowance[src][msg.sender] >= wad);\n allowance[src][msg.sender] -= wad;\n }\n\n balanceOf[src] -= wad;\n balanceOf[dst] += wad;\n\n Transfer(src, dst, wad);\n\n return true;\n }\n}\n", "sourcePath": "/Users/owen/Desktop/dodo/dodo-smart-contract/contracts/helper/TestWETH.sol", "ast": { "absolutePath": "/Users/owen/Desktop/dodo/dodo-smart-contract/contracts/helper/TestWETH.sol", "exportedSymbols": { "WETH9": [ 3952 ] }, "id": 3953, "license": "Apache-2.0", "nodeType": "SourceUnit", "nodes": [ { "id": 3699, "literals": [ "solidity", "0.6", ".9" ], "nodeType": "PragmaDirective", "src": "78:22:19" }, { "abstract": false, "baseContracts": [], "contractDependencies": [], "contractKind": "contract", "documentation": null, "fullyImplemented": true, "id": 3952, "linearizedBaseContracts": [ 3952 ], "name": "WETH9", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, "functionSelector": "06fdde03", "id": 3702, "mutability": "mutable", "name": "name", "nodeType": "VariableDeclaration", "overrides": null, "scope": 3952, "src": "124:36:19", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string" }, "typeName": { "id": 3700, "name": "string", "nodeType": "ElementaryTypeName", "src": "124:6:19", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": { "argumentTypes": null, "hexValue": "57726170706564204574686572", "id": 3701, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "145:15:19", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_00cd3d46df44f2cbb950cf84eb2e92aa2ddd23195b1a009173ea59a063357ed3", "typeString": "literal_string \"Wrapped Ether\"" }, "value": "Wrapped Ether" }, "visibility": "public" }, { "constant": false, "functionSelector": "95d89b41", "id": 3705, "mutability": "mutable", "name": "symbol", "nodeType": "VariableDeclaration", "overrides": null, "scope": 3952, "src": "166:29:19", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string" }, "typeName": { "id": 3703, "name": "string", "nodeType": "ElementaryTypeName", "src": "166:6:19", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": { "argumentTypes": null, "hexValue": "57455448", "id": 3704, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "189:6:19", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_0f8a193ff464434486c0daf7db2a895884365d2bc84ba47a68fcf89c1b14b5b8", "typeString": "literal_string \"WETH\"" }, "value": "WETH" }, "visibility": "public" }, { "constant": false, "functionSelector": "313ce567", "id": 3708, "mutability": "mutable", "name": "decimals", "nodeType": "VariableDeclaration", "overrides": null, "scope": 3952, "src": "201:26:19", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 3706, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "201:5:19", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": { "argumentTypes": null, "hexValue": "3138", "id": 3707, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "225:2:19", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_18_by_1", "typeString": "int_const 18" }, "value": "18" }, "visibility": "public" }, { "anonymous": false, "documentation": null, "id": 3716, "name": "Approval", "nodeType": "EventDefinition", "parameters": { "id": 3715, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 3710, "indexed": true, "mutability": "mutable", "name": "src", "nodeType": "VariableDeclaration", "overrides": null, "scope": 3716, "src": "249:19:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 3709, "name": "address", "nodeType": "ElementaryTypeName", "src": "249:7:19", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 3712, "indexed": true, "mutability": "mutable", "name": "guy", "nodeType": "VariableDeclaration", "overrides": null, "scope": 3716, "src": "270:19:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 3711, "name": "address", "nodeType": "ElementaryTypeName", "src": "270:7:19", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 3714, "indexed": false, "mutability": "mutable", "name": "wad", "nodeType": "VariableDeclaration", "overrides": null, "scope": 3716, "src": "291:11:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 3713, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "291:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "248:55:19" }, "src": "234:70:19" }, { "anonymous": false, "documentation": null, "id": 3724, "name": "Transfer", "nodeType": "EventDefinition", "parameters": { "id": 3723, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 3718, "indexed": true, "mutability": "mutable", "name": "src", "nodeType": "VariableDeclaration", "overrides": null, "scope": 3724, "src": "324:19:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 3717, "name": "address", "nodeType": "ElementaryTypeName", "src": "324:7:19", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 3720, "indexed": true, "mutability": "mutable", "name": "dst", "nodeType": "VariableDeclaration", "overrides": null, "scope": 3724, "src": "345:19:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 3719, "name": "address", "nodeType": "ElementaryTypeName", "src": "345:7:19", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 3722, "indexed": false, "mutability": "mutable", "name": "wad", "nodeType": "VariableDeclaration", "overrides": null, "scope": 3724, "src": "366:11:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 3721, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "366:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "323:55:19" }, "src": "309:70:19" }, { "anonymous": false, "documentation": null, "id": 3730, "name": "Deposit", "nodeType": "EventDefinition", "parameters": { "id": 3729, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 3726, "indexed": true, "mutability": "mutable", "name": "dst", "nodeType": "VariableDeclaration", "overrides": null, "scope": 3730, "src": "398:19:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 3725, "name": "address", "nodeType": "ElementaryTypeName", "src": "398:7:19", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 3728, "indexed": false, "mutability": "mutable", "name": "wad", "nodeType": "VariableDeclaration", "overrides": null, "scope": 3730, "src": "419:11:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 3727, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "419:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "397:34:19" }, "src": "384:48:19" }, { "anonymous": false, "documentation": null, "id": 3736, "name": "Withdrawal", "nodeType": "EventDefinition", "parameters": { "id": 3735, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 3732, "indexed": true, "mutability": "mutable", "name": "src", "nodeType": "VariableDeclaration", "overrides": null, "scope": 3736, "src": "454:19:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 3731, "name": "address", "nodeType": "ElementaryTypeName", "src": "454:7:19", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 3734, "indexed": false, "mutability": "mutable", "name": "wad", "nodeType": "VariableDeclaration", "overrides": null, "scope": 3736, "src": "475:11:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 3733, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "475:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "453:34:19" }, "src": "437:51:19" }, { "constant": false, "functionSelector": "70a08231", "id": 3740, "mutability": "mutable", "name": "balanceOf", "nodeType": "VariableDeclaration", "overrides": null, "scope": 3952, "src": "494:44:19", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" }, "typeName": { "id": 3739, "keyType": { "id": 3737, "name": "address", "nodeType": "ElementaryTypeName", "src": "502:7:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "494:27:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" }, "valueType": { "id": 3738, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "513:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } }, "value": null, "visibility": "public" }, { "constant": false, "functionSelector": "dd62ed3e", "id": 3746, "mutability": "mutable", "name": "allowance", "nodeType": "VariableDeclaration", "overrides": null, "scope": 3952, "src": "544:64:19", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" }, "typeName": { "id": 3745, "keyType": { "id": 3741, "name": "address", "nodeType": "ElementaryTypeName", "src": "552:7:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "544:47:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" }, "valueType": { "id": 3744, "keyType": { "id": 3742, "name": "address", "nodeType": "ElementaryTypeName", "src": "571:7:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "563:27:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" }, "valueType": { "id": 3743, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "582:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } } }, "value": null, "visibility": "public" }, { "body": { "id": 3752, "nodeType": "Block", "src": "643:26:19", "statements": [ { "expression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "id": 3749, "name": "deposit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3779, "src": "653:7:19", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, "id": 3750, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "653:9:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 3751, "nodeType": "ExpressionStatement", "src": "653:9:19" } ] }, "documentation": null, "id": 3753, "implemented": true, "kind": "fallback", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 3747, "nodeType": "ParameterList", "parameters": [], "src": "623:2:19" }, "returnParameters": { "id": 3748, "nodeType": "ParameterList", "parameters": [], "src": "643:0:19" }, "scope": 3952, "src": "615:54:19", "stateMutability": "payable", "virtual": false, "visibility": "external" }, { "body": { "id": 3759, "nodeType": "Block", "src": "702:26:19", "statements": [ { "expression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "id": 3756, "name": "deposit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3779, "src": "712:7:19", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, "id": 3757, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "712:9:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 3758, "nodeType": "ExpressionStatement", "src": "712:9:19" } ] }, "documentation": null, "id": 3760, "implemented": true, "kind": "receive", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 3754, "nodeType": "ParameterList", "parameters": [], "src": "682:2:19" }, "returnParameters": { "id": 3755, "nodeType": "ParameterList", "parameters": [], "src": "702:0:19" }, "scope": 3952, "src": "675:53:19", "stateMutability": "payable", "virtual": false, "visibility": "external" }, { "body": { "id": 3778, "nodeType": "Block", "src": "768:96:19", "statements": [ { "expression": { "argumentTypes": null, "id": 3769, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 3763, "name": "balanceOf", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3740, "src": "778:9:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 3766, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 3764, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "788:3:19", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 3765, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "788:10:19", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "778:21:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "+=", "rightHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 3767, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "803:3:19", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 3768, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "803:9:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "778:34:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 3770, "nodeType": "ExpressionStatement", "src": "778:34:19" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 3772, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "835:3:19", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 3773, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "835:10:19", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 3774, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "847:3:19", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 3775, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "847:9:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 3771, "name": "Deposit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3730, "src": "827:7:19", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, "id": 3776, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "827:30:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 3777, "nodeType": "EmitStatement", "src": "822:35:19" } ] }, "documentation": null, "functionSelector": "d0e30db0", "id": 3779, "implemented": true, "kind": "function", "modifiers": [], "name": "deposit", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 3761, "nodeType": "ParameterList", "parameters": [], "src": "750:2:19" }, "returnParameters": { "id": 3762, "nodeType": "ParameterList", "parameters": [], "src": "768:0:19" }, "scope": 3952, "src": "734:130:19", "stateMutability": "payable", "virtual": false, "visibility": "public" }, { "body": { "id": 3814, "nodeType": "Block", "src": "908:168:19", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 3790, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 3785, "name": "balanceOf", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3740, "src": "926:9:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 3788, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 3786, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "936:3:19", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 3787, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "936:10:19", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "926:21:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": { "argumentTypes": null, "id": 3789, "name": "wad", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3781, "src": "951:3:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "926:28:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 3784, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "918:7:19", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 3791, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "918:37:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 3792, "nodeType": "ExpressionStatement", "src": "918:37:19" }, { "expression": { "argumentTypes": null, "id": 3798, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 3793, "name": "balanceOf", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3740, "src": "965:9:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 3796, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 3794, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "975:3:19", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 3795, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "975:10:19", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "965:21:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "-=", "rightHandSide": { "argumentTypes": null, "id": 3797, "name": "wad", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3781, "src": "990:3:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "965:28:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 3799, "nodeType": "ExpressionStatement", "src": "965:28:19" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 3805, "name": "wad", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3781, "src": "1023:3:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 3800, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1003:3:19", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 3803, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1003:10:19", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "id": 3804, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1003:19:19", "typeDescriptions": { "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)" } }, "id": 3806, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1003:24:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 3807, "nodeType": "ExpressionStatement", "src": "1003:24:19" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 3809, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1053:3:19", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 3810, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1053:10:19", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 3811, "name": "wad", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3781, "src": "1065:3:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 3808, "name": "Withdrawal", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3736, "src": "1042:10:19", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, "id": 3812, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1042:27:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 3813, "nodeType": "EmitStatement", "src": "1037:32:19" } ] }, "documentation": null, "functionSelector": "2e1a7d4d", "id": 3815, "implemented": true, "kind": "function", "modifiers": [], "name": "withdraw", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 3782, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 3781, "mutability": "mutable", "name": "wad", "nodeType": "VariableDeclaration", "overrides": null, "scope": 3815, "src": "888:11:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 3780, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "888:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "887:13:19" }, "returnParameters": { "id": 3783, "nodeType": "ParameterList", "parameters": [], "src": "908:0:19" }, "scope": 3952, "src": "870:206:19", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "body": { "id": 3826, "nodeType": "Block", "src": "1135:45:19", "statements": [ { "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 3822, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "1160:4:19", "typeDescriptions": { "typeIdentifier": "t_contract$_WETH9_$3952", "typeString": "contract WETH9" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_WETH9_$3952", "typeString": "contract WETH9" } ], "id": 3821, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1152:7:19", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 3820, "name": "address", "nodeType": "ElementaryTypeName", "src": "1152:7:19", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 3823, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1152:13:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "id": 3824, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1152:21:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 3819, "id": 3825, "nodeType": "Return", "src": "1145:28:19" } ] }, "documentation": null, "functionSelector": "18160ddd", "id": 3827, "implemented": true, "kind": "function", "modifiers": [], "name": "totalSupply", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 3816, "nodeType": "ParameterList", "parameters": [], "src": "1102:2:19" }, "returnParameters": { "id": 3819, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 3818, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 3827, "src": "1126:7:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 3817, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1126:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "1125:9:19" }, "scope": 3952, "src": "1082:98:19", "stateMutability": "view", "virtual": false, "visibility": "public" }, { "body": { "id": 3854, "nodeType": "Block", "src": "1251:115:19", "statements": [ { "expression": { "argumentTypes": null, "id": 3843, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 3836, "name": "allowance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3746, "src": "1261:9:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, "id": 3840, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 3837, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1271:3:19", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 3838, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1271:10:19", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1261:21:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 3841, "indexExpression": { "argumentTypes": null, "id": 3839, "name": "guy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3829, "src": "1283:3:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1261:26:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 3842, "name": "wad", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3831, "src": "1290:3:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1261:32:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 3844, "nodeType": "ExpressionStatement", "src": "1261:32:19" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 3846, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1317:3:19", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 3847, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1317:10:19", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 3848, "name": "guy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3829, "src": "1329:3:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 3849, "name": "wad", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3831, "src": "1334:3:19", "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": 3845, "name": "Approval", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3716, "src": "1308:8:19", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 3850, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1308:30:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 3851, "nodeType": "EmitStatement", "src": "1303:35:19" }, { "expression": { "argumentTypes": null, "hexValue": "74727565", "id": 3852, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1355:4:19", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "functionReturnParameters": 3835, "id": 3853, "nodeType": "Return", "src": "1348:11:19" } ] }, "documentation": null, "functionSelector": "095ea7b3", "id": 3855, "implemented": true, "kind": "function", "modifiers": [], "name": "approve", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 3832, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 3829, "mutability": "mutable", "name": "guy", "nodeType": "VariableDeclaration", "overrides": null, "scope": 3855, "src": "1203:11:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 3828, "name": "address", "nodeType": "ElementaryTypeName", "src": "1203:7:19", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 3831, "mutability": "mutable", "name": "wad", "nodeType": "VariableDeclaration", "overrides": null, "scope": 3855, "src": "1216:11:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 3830, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1216:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "1202:26:19" }, "returnParameters": { "id": 3835, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 3834, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 3855, "src": "1245:4:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 3833, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1245:4:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "1244:6:19" }, "scope": 3952, "src": "1186:180:19", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "body": { "id": 3871, "nodeType": "Block", "src": "1438:58:19", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 3865, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1468:3:19", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 3866, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1468:10:19", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 3867, "name": "dst", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3857, "src": "1480:3:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 3868, "name": "wad", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3859, "src": "1485:3:19", "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": 3864, "name": "transferFrom", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3951, "src": "1455:12:19", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,address,uint256) returns (bool)" } }, "id": 3869, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1455:34:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "functionReturnParameters": 3863, "id": 3870, "nodeType": "Return", "src": "1448:41:19" } ] }, "documentation": null, "functionSelector": "a9059cbb", "id": 3872, "implemented": true, "kind": "function", "modifiers": [], "name": "transfer", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 3860, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 3857, "mutability": "mutable", "name": "dst", "nodeType": "VariableDeclaration", "overrides": null, "scope": 3872, "src": "1390:11:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 3856, "name": "address", "nodeType": "ElementaryTypeName", "src": "1390:7:19", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 3859, "mutability": "mutable", "name": "wad", "nodeType": "VariableDeclaration", "overrides": null, "scope": 3872, "src": "1403:11:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 3858, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1403:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "1389:26:19" }, "returnParameters": { "id": 3863, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 3862, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 3872, "src": "1432:4:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 3861, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1432:4:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "1431:6:19" }, "scope": 3952, "src": "1372:124:19", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "body": { "id": 3950, "nodeType": "Block", "src": "1615:358:19", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 3888, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 3884, "name": "balanceOf", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3740, "src": "1633:9:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 3886, "indexExpression": { "argumentTypes": null, "id": 3885, "name": "src", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3874, "src": "1643:3:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1633:14:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": { "argumentTypes": null, "id": 3887, "name": "wad", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3878, "src": "1651:3:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1633:21:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 3883, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "1625:7:19", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 3889, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1625:30:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 3890, "nodeType": "ExpressionStatement", "src": "1625:30:19" }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 3907, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 3894, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 3891, "name": "src", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3874, "src": "1670:3:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 3892, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1677:3:19", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 3893, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1677:10:19", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "1670:17:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 3906, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 3895, "name": "allowance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3746, "src": "1691:9:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, "id": 3897, "indexExpression": { "argumentTypes": null, "id": 3896, "name": "src", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3874, "src": "1701:3:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1691:14:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 3900, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 3898, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1706:3:19", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 3899, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1706:10:19", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1691:26:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 3904, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "-", "prefix": true, "src": "1729:2:19", "subExpression": { "argumentTypes": null, "hexValue": "31", "id": 3903, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1730:1:19", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "typeDescriptions": { "typeIdentifier": "t_rational_minus_1_by_1", "typeString": "int_const -1" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_minus_1_by_1", "typeString": "int_const -1" } ], "id": 3902, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1721:7:19", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { "id": 3901, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1721:7:19", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 3905, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1721:11:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1691:41:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "1670:62:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 3929, "nodeType": "IfStatement", "src": "1666:182:19", "trueBody": { "id": 3928, "nodeType": "Block", "src": "1734:114:19", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 3916, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 3909, "name": "allowance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3746, "src": "1756:9:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, "id": 3911, "indexExpression": { "argumentTypes": null, "id": 3910, "name": "src", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3874, "src": "1766:3:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1756:14:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 3914, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 3912, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1771:3:19", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 3913, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1771:10:19", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1756:26:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": { "argumentTypes": null, "id": 3915, "name": "wad", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3878, "src": "1786:3:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1756:33:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 3908, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "1748:7:19", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 3917, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1748:42:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 3918, "nodeType": "ExpressionStatement", "src": "1748:42:19" }, { "expression": { "argumentTypes": null, "id": 3926, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 3919, "name": "allowance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3746, "src": "1804:9:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, "id": 3923, "indexExpression": { "argumentTypes": null, "id": 3920, "name": "src", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3874, "src": "1814:3:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1804:14:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 3924, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 3921, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1819:3:19", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 3922, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1819:10:19", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1804:26:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "-=", "rightHandSide": { "argumentTypes": null, "id": 3925, "name": "wad", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3878, "src": "1834:3:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1804:33:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 3927, "nodeType": "ExpressionStatement", "src": "1804:33:19" } ] } }, { "expression": { "argumentTypes": null, "id": 3934, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 3930, "name": "balanceOf", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3740, "src": "1858:9:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 3932, "indexExpression": { "argumentTypes": null, "id": 3931, "name": "src", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3874, "src": "1868:3:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1858:14:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "-=", "rightHandSide": { "argumentTypes": null, "id": 3933, "name": "wad", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3878, "src": "1876:3:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1858:21:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 3935, "nodeType": "ExpressionStatement", "src": "1858:21:19" }, { "expression": { "argumentTypes": null, "id": 3940, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 3936, "name": "balanceOf", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3740, "src": "1889:9:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 3938, "indexExpression": { "argumentTypes": null, "id": 3937, "name": "dst", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3876, "src": "1899:3:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1889:14:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "+=", "rightHandSide": { "argumentTypes": null, "id": 3939, "name": "wad", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3878, "src": "1907:3:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1889:21:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 3941, "nodeType": "ExpressionStatement", "src": "1889:21:19" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 3943, "name": "src", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3874, "src": "1930:3:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 3944, "name": "dst", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3876, "src": "1935:3:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 3945, "name": "wad", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3878, "src": "1940:3:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 3942, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3724, "src": "1921:8:19", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 3946, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1921:23:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 3947, "nodeType": "ExpressionStatement", "src": "1921:23:19" }, { "expression": { "argumentTypes": null, "hexValue": "74727565", "id": 3948, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1962:4:19", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "functionReturnParameters": 3882, "id": 3949, "nodeType": "Return", "src": "1955:11:19" } ] }, "documentation": null, "functionSelector": "23b872dd", "id": 3951, "implemented": true, "kind": "function", "modifiers": [], "name": "transferFrom", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 3879, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 3874, "mutability": "mutable", "name": "src", "nodeType": "VariableDeclaration", "overrides": null, "scope": 3951, "src": "1533:11:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 3873, "name": "address", "nodeType": "ElementaryTypeName", "src": "1533:7:19", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 3876, "mutability": "mutable", "name": "dst", "nodeType": "VariableDeclaration", "overrides": null, "scope": 3951, "src": "1554:11:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 3875, "name": "address", "nodeType": "ElementaryTypeName", "src": "1554:7:19", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 3878, "mutability": "mutable", "name": "wad", "nodeType": "VariableDeclaration", "overrides": null, "scope": 3951, "src": "1575:11:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 3877, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1575:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "1523:69:19" }, "returnParameters": { "id": 3882, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 3881, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 3951, "src": "1609:4:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 3880, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1609:4:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "1608:6:19" }, "scope": 3952, "src": "1502:471:19", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" } ], "scope": 3953, "src": "103:1872:19" } ], "src": "78:1898:19" }, "legacyAST": { "absolutePath": "/Users/owen/Desktop/dodo/dodo-smart-contract/contracts/helper/TestWETH.sol", "exportedSymbols": { "WETH9": [ 3952 ] }, "id": 3953, "license": "Apache-2.0", "nodeType": "SourceUnit", "nodes": [ { "id": 3699, "literals": [ "solidity", "0.6", ".9" ], "nodeType": "PragmaDirective", "src": "78:22:19" }, { "abstract": false, "baseContracts": [], "contractDependencies": [], "contractKind": "contract", "documentation": null, "fullyImplemented": true, "id": 3952, "linearizedBaseContracts": [ 3952 ], "name": "WETH9", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, "functionSelector": "06fdde03", "id": 3702, "mutability": "mutable", "name": "name", "nodeType": "VariableDeclaration", "overrides": null, "scope": 3952, "src": "124:36:19", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string" }, "typeName": { "id": 3700, "name": "string", "nodeType": "ElementaryTypeName", "src": "124:6:19", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": { "argumentTypes": null, "hexValue": "57726170706564204574686572", "id": 3701, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "145:15:19", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_00cd3d46df44f2cbb950cf84eb2e92aa2ddd23195b1a009173ea59a063357ed3", "typeString": "literal_string \"Wrapped Ether\"" }, "value": "Wrapped Ether" }, "visibility": "public" }, { "constant": false, "functionSelector": "95d89b41", "id": 3705, "mutability": "mutable", "name": "symbol", "nodeType": "VariableDeclaration", "overrides": null, "scope": 3952, "src": "166:29:19", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string" }, "typeName": { "id": 3703, "name": "string", "nodeType": "ElementaryTypeName", "src": "166:6:19", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": { "argumentTypes": null, "hexValue": "57455448", "id": 3704, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "189:6:19", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_0f8a193ff464434486c0daf7db2a895884365d2bc84ba47a68fcf89c1b14b5b8", "typeString": "literal_string \"WETH\"" }, "value": "WETH" }, "visibility": "public" }, { "constant": false, "functionSelector": "313ce567", "id": 3708, "mutability": "mutable", "name": "decimals", "nodeType": "VariableDeclaration", "overrides": null, "scope": 3952, "src": "201:26:19", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 3706, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "201:5:19", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": { "argumentTypes": null, "hexValue": "3138", "id": 3707, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "225:2:19", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_18_by_1", "typeString": "int_const 18" }, "value": "18" }, "visibility": "public" }, { "anonymous": false, "documentation": null, "id": 3716, "name": "Approval", "nodeType": "EventDefinition", "parameters": { "id": 3715, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 3710, "indexed": true, "mutability": "mutable", "name": "src", "nodeType": "VariableDeclaration", "overrides": null, "scope": 3716, "src": "249:19:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 3709, "name": "address", "nodeType": "ElementaryTypeName", "src": "249:7:19", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 3712, "indexed": true, "mutability": "mutable", "name": "guy", "nodeType": "VariableDeclaration", "overrides": null, "scope": 3716, "src": "270:19:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 3711, "name": "address", "nodeType": "ElementaryTypeName", "src": "270:7:19", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 3714, "indexed": false, "mutability": "mutable", "name": "wad", "nodeType": "VariableDeclaration", "overrides": null, "scope": 3716, "src": "291:11:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 3713, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "291:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "248:55:19" }, "src": "234:70:19" }, { "anonymous": false, "documentation": null, "id": 3724, "name": "Transfer", "nodeType": "EventDefinition", "parameters": { "id": 3723, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 3718, "indexed": true, "mutability": "mutable", "name": "src", "nodeType": "VariableDeclaration", "overrides": null, "scope": 3724, "src": "324:19:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 3717, "name": "address", "nodeType": "ElementaryTypeName", "src": "324:7:19", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 3720, "indexed": true, "mutability": "mutable", "name": "dst", "nodeType": "VariableDeclaration", "overrides": null, "scope": 3724, "src": "345:19:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 3719, "name": "address", "nodeType": "ElementaryTypeName", "src": "345:7:19", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 3722, "indexed": false, "mutability": "mutable", "name": "wad", "nodeType": "VariableDeclaration", "overrides": null, "scope": 3724, "src": "366:11:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 3721, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "366:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "323:55:19" }, "src": "309:70:19" }, { "anonymous": false, "documentation": null, "id": 3730, "name": "Deposit", "nodeType": "EventDefinition", "parameters": { "id": 3729, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 3726, "indexed": true, "mutability": "mutable", "name": "dst", "nodeType": "VariableDeclaration", "overrides": null, "scope": 3730, "src": "398:19:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 3725, "name": "address", "nodeType": "ElementaryTypeName", "src": "398:7:19", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 3728, "indexed": false, "mutability": "mutable", "name": "wad", "nodeType": "VariableDeclaration", "overrides": null, "scope": 3730, "src": "419:11:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 3727, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "419:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "397:34:19" }, "src": "384:48:19" }, { "anonymous": false, "documentation": null, "id": 3736, "name": "Withdrawal", "nodeType": "EventDefinition", "parameters": { "id": 3735, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 3732, "indexed": true, "mutability": "mutable", "name": "src", "nodeType": "VariableDeclaration", "overrides": null, "scope": 3736, "src": "454:19:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 3731, "name": "address", "nodeType": "ElementaryTypeName", "src": "454:7:19", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 3734, "indexed": false, "mutability": "mutable", "name": "wad", "nodeType": "VariableDeclaration", "overrides": null, "scope": 3736, "src": "475:11:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 3733, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "475:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "453:34:19" }, "src": "437:51:19" }, { "constant": false, "functionSelector": "70a08231", "id": 3740, "mutability": "mutable", "name": "balanceOf", "nodeType": "VariableDeclaration", "overrides": null, "scope": 3952, "src": "494:44:19", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" }, "typeName": { "id": 3739, "keyType": { "id": 3737, "name": "address", "nodeType": "ElementaryTypeName", "src": "502:7:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "494:27:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" }, "valueType": { "id": 3738, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "513:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } }, "value": null, "visibility": "public" }, { "constant": false, "functionSelector": "dd62ed3e", "id": 3746, "mutability": "mutable", "name": "allowance", "nodeType": "VariableDeclaration", "overrides": null, "scope": 3952, "src": "544:64:19", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" }, "typeName": { "id": 3745, "keyType": { "id": 3741, "name": "address", "nodeType": "ElementaryTypeName", "src": "552:7:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "544:47:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" }, "valueType": { "id": 3744, "keyType": { "id": 3742, "name": "address", "nodeType": "ElementaryTypeName", "src": "571:7:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "563:27:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" }, "valueType": { "id": 3743, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "582:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } } }, "value": null, "visibility": "public" }, { "body": { "id": 3752, "nodeType": "Block", "src": "643:26:19", "statements": [ { "expression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "id": 3749, "name": "deposit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3779, "src": "653:7:19", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, "id": 3750, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "653:9:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 3751, "nodeType": "ExpressionStatement", "src": "653:9:19" } ] }, "documentation": null, "id": 3753, "implemented": true, "kind": "fallback", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 3747, "nodeType": "ParameterList", "parameters": [], "src": "623:2:19" }, "returnParameters": { "id": 3748, "nodeType": "ParameterList", "parameters": [], "src": "643:0:19" }, "scope": 3952, "src": "615:54:19", "stateMutability": "payable", "virtual": false, "visibility": "external" }, { "body": { "id": 3759, "nodeType": "Block", "src": "702:26:19", "statements": [ { "expression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "id": 3756, "name": "deposit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3779, "src": "712:7:19", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, "id": 3757, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "712:9:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 3758, "nodeType": "ExpressionStatement", "src": "712:9:19" } ] }, "documentation": null, "id": 3760, "implemented": true, "kind": "receive", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 3754, "nodeType": "ParameterList", "parameters": [], "src": "682:2:19" }, "returnParameters": { "id": 3755, "nodeType": "ParameterList", "parameters": [], "src": "702:0:19" }, "scope": 3952, "src": "675:53:19", "stateMutability": "payable", "virtual": false, "visibility": "external" }, { "body": { "id": 3778, "nodeType": "Block", "src": "768:96:19", "statements": [ { "expression": { "argumentTypes": null, "id": 3769, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 3763, "name": "balanceOf", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3740, "src": "778:9:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 3766, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 3764, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "788:3:19", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 3765, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "788:10:19", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "778:21:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "+=", "rightHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 3767, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "803:3:19", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 3768, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "803:9:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "778:34:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 3770, "nodeType": "ExpressionStatement", "src": "778:34:19" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 3772, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "835:3:19", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 3773, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "835:10:19", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 3774, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "847:3:19", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 3775, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "847:9:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 3771, "name": "Deposit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3730, "src": "827:7:19", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, "id": 3776, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "827:30:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 3777, "nodeType": "EmitStatement", "src": "822:35:19" } ] }, "documentation": null, "functionSelector": "d0e30db0", "id": 3779, "implemented": true, "kind": "function", "modifiers": [], "name": "deposit", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 3761, "nodeType": "ParameterList", "parameters": [], "src": "750:2:19" }, "returnParameters": { "id": 3762, "nodeType": "ParameterList", "parameters": [], "src": "768:0:19" }, "scope": 3952, "src": "734:130:19", "stateMutability": "payable", "virtual": false, "visibility": "public" }, { "body": { "id": 3814, "nodeType": "Block", "src": "908:168:19", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 3790, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 3785, "name": "balanceOf", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3740, "src": "926:9:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 3788, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 3786, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "936:3:19", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 3787, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "936:10:19", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "926:21:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": { "argumentTypes": null, "id": 3789, "name": "wad", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3781, "src": "951:3:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "926:28:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 3784, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "918:7:19", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 3791, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "918:37:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 3792, "nodeType": "ExpressionStatement", "src": "918:37:19" }, { "expression": { "argumentTypes": null, "id": 3798, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 3793, "name": "balanceOf", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3740, "src": "965:9:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 3796, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 3794, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "975:3:19", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 3795, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "975:10:19", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "965:21:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "-=", "rightHandSide": { "argumentTypes": null, "id": 3797, "name": "wad", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3781, "src": "990:3:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "965:28:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 3799, "nodeType": "ExpressionStatement", "src": "965:28:19" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 3805, "name": "wad", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3781, "src": "1023:3:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 3800, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1003:3:19", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 3803, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1003:10:19", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "id": 3804, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1003:19:19", "typeDescriptions": { "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)" } }, "id": 3806, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1003:24:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 3807, "nodeType": "ExpressionStatement", "src": "1003:24:19" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 3809, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1053:3:19", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 3810, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1053:10:19", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 3811, "name": "wad", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3781, "src": "1065:3:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 3808, "name": "Withdrawal", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3736, "src": "1042:10:19", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, "id": 3812, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1042:27:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 3813, "nodeType": "EmitStatement", "src": "1037:32:19" } ] }, "documentation": null, "functionSelector": "2e1a7d4d", "id": 3815, "implemented": true, "kind": "function", "modifiers": [], "name": "withdraw", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 3782, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 3781, "mutability": "mutable", "name": "wad", "nodeType": "VariableDeclaration", "overrides": null, "scope": 3815, "src": "888:11:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 3780, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "888:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "887:13:19" }, "returnParameters": { "id": 3783, "nodeType": "ParameterList", "parameters": [], "src": "908:0:19" }, "scope": 3952, "src": "870:206:19", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "body": { "id": 3826, "nodeType": "Block", "src": "1135:45:19", "statements": [ { "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 3822, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "1160:4:19", "typeDescriptions": { "typeIdentifier": "t_contract$_WETH9_$3952", "typeString": "contract WETH9" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_WETH9_$3952", "typeString": "contract WETH9" } ], "id": 3821, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1152:7:19", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 3820, "name": "address", "nodeType": "ElementaryTypeName", "src": "1152:7:19", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 3823, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1152:13:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "id": 3824, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1152:21:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 3819, "id": 3825, "nodeType": "Return", "src": "1145:28:19" } ] }, "documentation": null, "functionSelector": "18160ddd", "id": 3827, "implemented": true, "kind": "function", "modifiers": [], "name": "totalSupply", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 3816, "nodeType": "ParameterList", "parameters": [], "src": "1102:2:19" }, "returnParameters": { "id": 3819, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 3818, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 3827, "src": "1126:7:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 3817, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1126:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "1125:9:19" }, "scope": 3952, "src": "1082:98:19", "stateMutability": "view", "virtual": false, "visibility": "public" }, { "body": { "id": 3854, "nodeType": "Block", "src": "1251:115:19", "statements": [ { "expression": { "argumentTypes": null, "id": 3843, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 3836, "name": "allowance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3746, "src": "1261:9:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, "id": 3840, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 3837, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1271:3:19", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 3838, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1271:10:19", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1261:21:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 3841, "indexExpression": { "argumentTypes": null, "id": 3839, "name": "guy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3829, "src": "1283:3:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1261:26:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 3842, "name": "wad", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3831, "src": "1290:3:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1261:32:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 3844, "nodeType": "ExpressionStatement", "src": "1261:32:19" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 3846, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1317:3:19", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 3847, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1317:10:19", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 3848, "name": "guy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3829, "src": "1329:3:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 3849, "name": "wad", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3831, "src": "1334:3:19", "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": 3845, "name": "Approval", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3716, "src": "1308:8:19", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 3850, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1308:30:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 3851, "nodeType": "EmitStatement", "src": "1303:35:19" }, { "expression": { "argumentTypes": null, "hexValue": "74727565", "id": 3852, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1355:4:19", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "functionReturnParameters": 3835, "id": 3853, "nodeType": "Return", "src": "1348:11:19" } ] }, "documentation": null, "functionSelector": "095ea7b3", "id": 3855, "implemented": true, "kind": "function", "modifiers": [], "name": "approve", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 3832, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 3829, "mutability": "mutable", "name": "guy", "nodeType": "VariableDeclaration", "overrides": null, "scope": 3855, "src": "1203:11:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 3828, "name": "address", "nodeType": "ElementaryTypeName", "src": "1203:7:19", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 3831, "mutability": "mutable", "name": "wad", "nodeType": "VariableDeclaration", "overrides": null, "scope": 3855, "src": "1216:11:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 3830, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1216:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "1202:26:19" }, "returnParameters": { "id": 3835, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 3834, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 3855, "src": "1245:4:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 3833, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1245:4:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "1244:6:19" }, "scope": 3952, "src": "1186:180:19", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "body": { "id": 3871, "nodeType": "Block", "src": "1438:58:19", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 3865, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1468:3:19", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 3866, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1468:10:19", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 3867, "name": "dst", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3857, "src": "1480:3:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 3868, "name": "wad", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3859, "src": "1485:3:19", "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": 3864, "name": "transferFrom", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3951, "src": "1455:12:19", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,address,uint256) returns (bool)" } }, "id": 3869, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1455:34:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "functionReturnParameters": 3863, "id": 3870, "nodeType": "Return", "src": "1448:41:19" } ] }, "documentation": null, "functionSelector": "a9059cbb", "id": 3872, "implemented": true, "kind": "function", "modifiers": [], "name": "transfer", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 3860, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 3857, "mutability": "mutable", "name": "dst", "nodeType": "VariableDeclaration", "overrides": null, "scope": 3872, "src": "1390:11:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 3856, "name": "address", "nodeType": "ElementaryTypeName", "src": "1390:7:19", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 3859, "mutability": "mutable", "name": "wad", "nodeType": "VariableDeclaration", "overrides": null, "scope": 3872, "src": "1403:11:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 3858, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1403:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "1389:26:19" }, "returnParameters": { "id": 3863, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 3862, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 3872, "src": "1432:4:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 3861, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1432:4:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "1431:6:19" }, "scope": 3952, "src": "1372:124:19", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "body": { "id": 3950, "nodeType": "Block", "src": "1615:358:19", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 3888, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 3884, "name": "balanceOf", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3740, "src": "1633:9:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 3886, "indexExpression": { "argumentTypes": null, "id": 3885, "name": "src", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3874, "src": "1643:3:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1633:14:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": { "argumentTypes": null, "id": 3887, "name": "wad", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3878, "src": "1651:3:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1633:21:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 3883, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "1625:7:19", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 3889, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1625:30:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 3890, "nodeType": "ExpressionStatement", "src": "1625:30:19" }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 3907, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 3894, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 3891, "name": "src", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3874, "src": "1670:3:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 3892, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1677:3:19", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 3893, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1677:10:19", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "1670:17:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 3906, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 3895, "name": "allowance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3746, "src": "1691:9:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, "id": 3897, "indexExpression": { "argumentTypes": null, "id": 3896, "name": "src", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3874, "src": "1701:3:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1691:14:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 3900, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 3898, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1706:3:19", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 3899, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1706:10:19", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1691:26:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 3904, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "-", "prefix": true, "src": "1729:2:19", "subExpression": { "argumentTypes": null, "hexValue": "31", "id": 3903, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1730:1:19", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "typeDescriptions": { "typeIdentifier": "t_rational_minus_1_by_1", "typeString": "int_const -1" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_minus_1_by_1", "typeString": "int_const -1" } ], "id": 3902, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1721:7:19", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { "id": 3901, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1721:7:19", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 3905, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1721:11:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1691:41:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "1670:62:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 3929, "nodeType": "IfStatement", "src": "1666:182:19", "trueBody": { "id": 3928, "nodeType": "Block", "src": "1734:114:19", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 3916, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 3909, "name": "allowance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3746, "src": "1756:9:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, "id": 3911, "indexExpression": { "argumentTypes": null, "id": 3910, "name": "src", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3874, "src": "1766:3:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1756:14:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 3914, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 3912, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1771:3:19", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 3913, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1771:10:19", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1756:26:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": { "argumentTypes": null, "id": 3915, "name": "wad", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3878, "src": "1786:3:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1756:33:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 3908, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "1748:7:19", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 3917, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1748:42:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 3918, "nodeType": "ExpressionStatement", "src": "1748:42:19" }, { "expression": { "argumentTypes": null, "id": 3926, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 3919, "name": "allowance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3746, "src": "1804:9:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, "id": 3923, "indexExpression": { "argumentTypes": null, "id": 3920, "name": "src", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3874, "src": "1814:3:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1804:14:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 3924, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 3921, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1819:3:19", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 3922, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1819:10:19", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1804:26:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "-=", "rightHandSide": { "argumentTypes": null, "id": 3925, "name": "wad", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3878, "src": "1834:3:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1804:33:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 3927, "nodeType": "ExpressionStatement", "src": "1804:33:19" } ] } }, { "expression": { "argumentTypes": null, "id": 3934, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 3930, "name": "balanceOf", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3740, "src": "1858:9:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 3932, "indexExpression": { "argumentTypes": null, "id": 3931, "name": "src", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3874, "src": "1868:3:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1858:14:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "-=", "rightHandSide": { "argumentTypes": null, "id": 3933, "name": "wad", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3878, "src": "1876:3:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1858:21:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 3935, "nodeType": "ExpressionStatement", "src": "1858:21:19" }, { "expression": { "argumentTypes": null, "id": 3940, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 3936, "name": "balanceOf", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3740, "src": "1889:9:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 3938, "indexExpression": { "argumentTypes": null, "id": 3937, "name": "dst", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3876, "src": "1899:3:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1889:14:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "+=", "rightHandSide": { "argumentTypes": null, "id": 3939, "name": "wad", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3878, "src": "1907:3:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1889:21:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 3941, "nodeType": "ExpressionStatement", "src": "1889:21:19" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 3943, "name": "src", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3874, "src": "1930:3:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 3944, "name": "dst", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3876, "src": "1935:3:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 3945, "name": "wad", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3878, "src": "1940:3:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 3942, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3724, "src": "1921:8:19", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 3946, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1921:23:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 3947, "nodeType": "ExpressionStatement", "src": "1921:23:19" }, { "expression": { "argumentTypes": null, "hexValue": "74727565", "id": 3948, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "1962:4:19", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "functionReturnParameters": 3882, "id": 3949, "nodeType": "Return", "src": "1955:11:19" } ] }, "documentation": null, "functionSelector": "23b872dd", "id": 3951, "implemented": true, "kind": "function", "modifiers": [], "name": "transferFrom", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 3879, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 3874, "mutability": "mutable", "name": "src", "nodeType": "VariableDeclaration", "overrides": null, "scope": 3951, "src": "1533:11:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 3873, "name": "address", "nodeType": "ElementaryTypeName", "src": "1533:7:19", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 3876, "mutability": "mutable", "name": "dst", "nodeType": "VariableDeclaration", "overrides": null, "scope": 3951, "src": "1554:11:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 3875, "name": "address", "nodeType": "ElementaryTypeName", "src": "1554:7:19", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 3878, "mutability": "mutable", "name": "wad", "nodeType": "VariableDeclaration", "overrides": null, "scope": 3951, "src": "1575:11:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 3877, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1575:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "1523:69:19" }, "returnParameters": { "id": 3882, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 3881, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 3951, "src": "1609:4:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 3880, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1609:4:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "1608:6:19" }, "scope": 3952, "src": "1502:471:19", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" } ], "scope": 3953, "src": "103:1872:19" } ], "src": "78:1898:19" }, "compiler": { "name": "solc", "version": "0.6.9+commit.3e3065ac.Emscripten.clang" }, "networks": {}, "schemaVersion": "3.2.3", "updatedAt": "2020-11-06T08:03:35.525Z", "devdoc": { "methods": {} }, "userdoc": { "methods": {} } }