{ "abi": [ { "inputs": [ { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "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": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "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": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" } ], "bytecode": { "object": "0x60806040523480156200001157600080fd5b506040516200105c3803806200105c833981016040819052620000349162000187565b600362000042838262000308565b50600462000051828262000308565b505050620003d5565b634e487b7160e01b600052604160045260246000fd5b601f19601f83011681016001600160401b03811182821017156200009857620000986200005a565b6040525050565b6000620000ab60405190565b809150620000ba838262000070565b50919050565b60006001600160401b03821115620000dc57620000dc6200005a565b50601f01601f191660200190565b60005b8381101562000107578181015183820152602001620000ed565b50506000910152565b6000620001276200012184620000c0565b6200009f565b809150838152848484011115620001415762000141600080fd5b62000151846020830185620000ea565b509392505050565b600082601f8301126200016f576200016f600080fd5b620001808383516020850162000110565b9392505050565b600080604083850312156200019f576200019f600080fd5b82516001600160401b03811115620001ba57620001ba600080fd5b620001c88582860162000159565b602085015190935090506001600160401b03811115620001eb57620001eb600080fd5b620001f98582860162000159565b9150509250929050565b634e487b7160e01b600052602260045260246000fd5b600181811c9081908316806200023057607f821692505b60208310810362000245576200024562000203565b5050919050565b60006200025d6200025a8381565b90565b92915050565b6200028c620002766200025a856200024c565b8254600385901b91821b60001990921b19161790565b90555050565b620002a06000838362000263565b5050565b81811015620002a057620002ba60008262000292565b600101620002a4565b601f8211156200030357600081815260209020601f840160051c81016020851015620002ec5750805b62000300601f850160051c830182620002a4565b50505b505050565b81516001600160401b038111156200032457620003246200005a565b6200033c8162000335845462000219565b84620002c3565b6020601f8211600181146200037557600083156200035a5750848201515b600019600385901b1c198116600185901b1785555062000300565b600084815260208120601f198516915b82811015620003a7578785015182556020948501946001909201910162000385565b5084821015620003c65783870151600019600387901b60f8161c191681555b50505050600190811b01905550565b610c7780620003e56000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610190578063a9059cbb146101a3578063dd62ed3e146101b657600080fd5b8063395093511461013f57806370a082311461015257806395d89b411461018857600080fd5b806318160ddd116100b257806318160ddd1461010c57806323b872dd1461011d578063313ce5671461013057600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d66101fc565b6040516100e39190610753565b60405180910390f35b6100ff6100fa3660046107c7565b61028e565b6040516100e39190610809565b6002545b6040516100e3919061081d565b6100ff61012b36600461082b565b6102a8565b60126040516100e3919061087d565b6100ff61014d3660046107c7565b6102cc565b61011061016036600461088b565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100d6610318565b6100ff61019e3660046107c7565b610327565b6100ff6101b13660046107c7565b6103ab565b6101106101c43660046108aa565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461020b90610908565b80601f016020809104026020016040519081016040528092919081815260200182805461023790610908565b80156102845780601f1061025957610100808354040283529160200191610284565b820191906000526020600020905b81548152906001019060200180831161026757829003601f168201915b5050505050905090565b60003361029c8185856103b9565b60019150505b92915050565b6000336102b68582856104c8565b6102c185858561056f565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061029c9082908690610313908790610966565b6103b9565b60606004805461020b90610908565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091908381101561039e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610395906109e0565b60405180910390fd5b6102c182868684036103b9565b60003361029c81858561056f565b73ffffffffffffffffffffffffffffffffffffffff8316610406576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161039590610a4a565b73ffffffffffffffffffffffffffffffffffffffff8216610453576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161039590610ab4565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906104bb90859061081d565b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610569578181101561055c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161039590610ac6565b61056984848484036103b9565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166105bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161039590610b5b565b73ffffffffffffffffffffffffffffffffffffffff8216610609576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161039590610bc5565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610669576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161039590610c2f565b73ffffffffffffffffffffffffffffffffffffffff80851660008181526020819052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906106d490869061081d565b60405180910390a3610569565b60005b838110156106fc5781810151838201526020016106e4565b50506000910152565b600061070f825190565b808452602084016107248282602087016106e1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b6020815260006107666020830184610705565b9392505050565b600073ffffffffffffffffffffffffffffffffffffffff82166102a2565b6107948161076d565b811461079f57600080fd5b50565b8035806107ae8161078b565b5092915050565b80610794565b8035806107ae816107b5565b600080604083850312156107dd576107dd600080fd5b6107e784846107a2565b91506107f684602085016107bb565b90509250929050565b8015155b82525050565b602081016102a282846107ff565b80610803565b602081016102a28284610817565b60008060006060848603121561084357610843600080fd5b61084d85856107a2565b925061085c85602086016107a2565b915061086b85604086016107bb565b90509250925092565b60ff8116610803565b602081016102a28284610874565b6000602082840312156108a0576108a0600080fd5b61076683836107a2565b600080604083850312156108c0576108c0600080fd5b6108ca84846107a2565b91506107f684602085016107a2565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c90819083168061091e57607f821692505b602083108103610930576109306108d9565b5050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810181818082111561097b5761097b610937565b505092915050565b602581526000602082017f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7781527f207a65726f00000000000000000000000000000000000000000000000000000060208201525b60400192915050565b6020815260006102a260208301610983565b602481526000602082017f45524332303a20617070726f76652066726f6d20746865207a65726f2061646481527f726573730000000000000000000000000000000000000000000000000000000060208201526109d7565b6020815260006102a2602083016109f2565b602281526000602082017f45524332303a20617070726f766520746f20746865207a65726f20616464726581527f737300000000000000000000000000000000000000000000000000000000000060208201526109d7565b6020815260006102a260208301610a5c565b6020815260006102a260208301601d81527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000602082015260400190565b602581526000602082017f45524332303a207472616e736665722066726f6d20746865207a65726f20616481527f647265737300000000000000000000000000000000000000000000000000000060208201526109d7565b6020815260006102a260208301610b03565b602381526000602082017f45524332303a207472616e7366657220746f20746865207a65726f206164647281527f657373000000000000000000000000000000000000000000000000000000000060208201526109d7565b6020815260006102a260208301610b6d565b602681526000602082017f45524332303a207472616e7366657220616d6f756e742065786365656473206281527f616c616e6365000000000000000000000000000000000000000000000000000060208201526109d7565b6020815260006102a260208301610bd756fea2646970667358221220baa75156c66c0bd8aa8ef90496fd64050645b44e46a761a31af5b4f237680d8364736f6c63430008160033", "sourceMap": "1401:11610:19:-:0;;;1976:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2042:5;:13;2050:5;2042;:13;:::i;:::-;-1:-1:-1;2065:7:19;:17;2075:7;2065;:17;:::i;:::-;;1976:113;;1401:11610;;650:127:69;711:10;706:3;702:20;699:1;692:31;742:4;739:1;732:15;766:4;763:1;756:15;782:246;-1:-1:-1;;635:2:69;615:14;;611:28;857:37;;-1:-1:-1;;;;;909:34:69;;945:22;;;906:62;903:88;;;971:18;;:::i;:::-;1007:2;1000:22;-1:-1:-1;;782:246:69:o;1033:168::-;1067:6;1104:20;76:2;70:9;;14:67;1104:20;1143:8;1133:18;;1160:35;1190:4;1180:8;1160:35;:::i;:::-;;1033:168;;;:::o;1206:184::-;1255:4;-1:-1:-1;;;;;1277:30:69;;1274:56;;;1310:18;;:::i;:::-;-1:-1:-1;635:2:69;615:14;-1:-1:-1;;611:28:69;1379:4;1347:37;;1206:184::o;1395:250::-;1480:1;1490:113;1504:6;1501:1;1498:13;1490:113;;;1580:11;;;1574:18;1561:11;;;1554:39;1526:2;1519:10;1490:113;;;-1:-1:-1;;1637:1:69;1619:16;;1612:27;1395:250::o;1650:452::-;1726:5;1761:53;1777:36;1806:6;1777:36;:::i;:::-;1761:53;:::i;:::-;1832:7;1823:16;;1864:6;1855:7;1848:23;1904:3;1895:6;1890:3;1886:16;1883:25;1880:140;;;1931:79;191:1;188;181:12;1931:79;2029:67;2089:6;2082:4;2073:7;2069:18;2064:3;2029:67;:::i;:::-;;1650:452;;;;;:::o;2107:332::-;2161:5;2214:3;2207:4;2199:6;2195:17;2191:27;2181:150;;2242:79;191:1;188;181:12;2242:79;2349:84;2429:3;2420:6;2414:13;2407:4;2399:6;2395:17;2349:84;:::i;:::-;2340:93;2107:332;-1:-1:-1;;;2107:332:69:o;2444:842::-;2543:6;2551;2604:2;2592:9;2583:7;2579:23;2575:32;2572:147;;;2630:79;191:1;188;181:12;2630:79;2742:16;;-1:-1:-1;;;;;2770:30:69;;2767:145;;;2823:79;191:1;188;181:12;2823:79;2931:61;2984:7;2975:6;2964:9;2960:22;2931:61;:::i;:::-;3038:2;3023:18;;3017:25;2921:71;;-1:-1:-1;3017:25:69;-1:-1:-1;;;;;;3054:32:69;;3051:147;;;3109:79;191:1;188;181:12;3109:79;3217:63;3272:7;3261:8;3250:9;3246:24;3217:63;:::i;:::-;3207:73;;;2444:842;;;;;:::o;3372:127::-;3433:10;3428:3;3424:20;3421:1;3414:31;3464:4;3461:1;3454:15;3488:4;3485:1;3478:15;3504:318;3589:1;3585:12;;;;;;3659;;;3680:63;;3736:4;3726:8;3722:19;3712:29;;3680:63;3789:2;3781:6;3778:14;3758:18;3755:38;3752:64;;3796:18;;:::i;:::-;3752:64;;3504:318;;;:::o;4601:138::-;4647:9;4684:49;4700:32;4725:5;4700:32;4472:67;4709:22;4532:5;4472:67;4684:49;4671:62;4601:138;-1:-1:-1;;4601:138:69:o;4814:210::-;4911:106;4960:56;4982:33;5009:5;4982:33;:::i;4960:56::-;4939:11;;4256:1;4252:18;;;4122:16;;;-1:-1:-1;;4122:16:69;;;4427:9;4416:21;4413:48;;4145:322;4911:106;4898:120;;-1:-1:-1;;4814:210:69:o;5097:156::-;5162:85;5072:3;5208:6;5202:4;5162:85;:::i;:::-;;;5097:156::o;5258:187::-;5338:3;5331:5;5328:14;5320:119;;;5392:37;5427:1;5420:5;5392:37;:::i;:::-;5365:1;5354:13;5320:119;;5450:419;5552:2;5547:3;5544:11;5541:322;;;3900:1;3893:14;;;3937:4;3924:18;;4036:2;4025:14;;4022:1;4018:22;5666:8;5662:41;5734:2;5722:10;5719:18;5716:49;;;-1:-1:-1;5755:8:69;5716:49;5778:75;4036:2;4025:14;;4022:1;4018:22;5822:8;5818:34;5805:11;5778:75;:::i;:::-;;;5541:322;5450:419;;;:::o;6320:1301::-;3353:12;;-1:-1:-1;;;;;6476:30:69;;6473:56;;;6509:18;;:::i;:::-;6538:97;6628:6;6588:38;6620:4;6614:11;6588:38;:::i;:::-;6582:4;6538:97;:::i;:::-;6684:4;6715:2;6704:14;;6732:1;6727:637;;;;7408:1;7425:6;7422:89;;;-1:-1:-1;7477:19:69;;;7471:26;7422:89;-1:-1:-1;;6100:1:69;6096:13;;;5955:16;6063:56;6053:67;;6301:1;6297:11;;;6286:23;7531:4;7524:81;;6697:918;;6727:637;3900:1;3893:14;;;3937:4;3924:18;;-1:-1:-1;;6763:20:69;;;6881:222;6895:7;6892:1;6889:14;6881:222;;;6977:19;;;6971:26;6956:42;;7084:4;7069:20;;;;7037:1;7025:14;;;;6911:12;6881:222;;;6885:3;7131:6;7122:7;7119:19;7116:189;;;7192:19;;;7186:26;-1:-1:-1;;6100:1:69;6096:13;;;;;5955:16;6063:56;6053:67;7229:62;;7116:189;-1:-1:-1;;;;7351:1:69;7335:14;;;7331:22;7318:36;;-1:-1:-1;6320:1301:69:o;:::-;1401:11610:19;;;;;;", "linkReferences": {} }, "deployedBytecode": { "object": "0x608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610190578063a9059cbb146101a3578063dd62ed3e146101b657600080fd5b8063395093511461013f57806370a082311461015257806395d89b411461018857600080fd5b806318160ddd116100b257806318160ddd1461010c57806323b872dd1461011d578063313ce5671461013057600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d66101fc565b6040516100e39190610753565b60405180910390f35b6100ff6100fa3660046107c7565b61028e565b6040516100e39190610809565b6002545b6040516100e3919061081d565b6100ff61012b36600461082b565b6102a8565b60126040516100e3919061087d565b6100ff61014d3660046107c7565b6102cc565b61011061016036600461088b565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100d6610318565b6100ff61019e3660046107c7565b610327565b6100ff6101b13660046107c7565b6103ab565b6101106101c43660046108aa565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461020b90610908565b80601f016020809104026020016040519081016040528092919081815260200182805461023790610908565b80156102845780601f1061025957610100808354040283529160200191610284565b820191906000526020600020905b81548152906001019060200180831161026757829003601f168201915b5050505050905090565b60003361029c8185856103b9565b60019150505b92915050565b6000336102b68582856104c8565b6102c185858561056f565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061029c9082908690610313908790610966565b6103b9565b60606004805461020b90610908565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091908381101561039e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610395906109e0565b60405180910390fd5b6102c182868684036103b9565b60003361029c81858561056f565b73ffffffffffffffffffffffffffffffffffffffff8316610406576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161039590610a4a565b73ffffffffffffffffffffffffffffffffffffffff8216610453576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161039590610ab4565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906104bb90859061081d565b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610569578181101561055c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161039590610ac6565b61056984848484036103b9565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166105bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161039590610b5b565b73ffffffffffffffffffffffffffffffffffffffff8216610609576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161039590610bc5565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610669576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161039590610c2f565b73ffffffffffffffffffffffffffffffffffffffff80851660008181526020819052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906106d490869061081d565b60405180910390a3610569565b60005b838110156106fc5781810151838201526020016106e4565b50506000910152565b600061070f825190565b808452602084016107248282602087016106e1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b6020815260006107666020830184610705565b9392505050565b600073ffffffffffffffffffffffffffffffffffffffff82166102a2565b6107948161076d565b811461079f57600080fd5b50565b8035806107ae8161078b565b5092915050565b80610794565b8035806107ae816107b5565b600080604083850312156107dd576107dd600080fd5b6107e784846107a2565b91506107f684602085016107bb565b90509250929050565b8015155b82525050565b602081016102a282846107ff565b80610803565b602081016102a28284610817565b60008060006060848603121561084357610843600080fd5b61084d85856107a2565b925061085c85602086016107a2565b915061086b85604086016107bb565b90509250925092565b60ff8116610803565b602081016102a28284610874565b6000602082840312156108a0576108a0600080fd5b61076683836107a2565b600080604083850312156108c0576108c0600080fd5b6108ca84846107a2565b91506107f684602085016107a2565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c90819083168061091e57607f821692505b602083108103610930576109306108d9565b5050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810181818082111561097b5761097b610937565b505092915050565b602581526000602082017f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7781527f207a65726f00000000000000000000000000000000000000000000000000000060208201525b60400192915050565b6020815260006102a260208301610983565b602481526000602082017f45524332303a20617070726f76652066726f6d20746865207a65726f2061646481527f726573730000000000000000000000000000000000000000000000000000000060208201526109d7565b6020815260006102a2602083016109f2565b602281526000602082017f45524332303a20617070726f766520746f20746865207a65726f20616464726581527f737300000000000000000000000000000000000000000000000000000000000060208201526109d7565b6020815260006102a260208301610a5c565b6020815260006102a260208301601d81527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000602082015260400190565b602581526000602082017f45524332303a207472616e736665722066726f6d20746865207a65726f20616481527f647265737300000000000000000000000000000000000000000000000000000060208201526109d7565b6020815260006102a260208301610b03565b602381526000602082017f45524332303a207472616e7366657220746f20746865207a65726f206164647281527f657373000000000000000000000000000000000000000000000000000000000060208201526109d7565b6020815260006102a260208301610b6d565b602681526000602082017f45524332303a207472616e7366657220616d6f756e742065786365656473206281527f616c616e6365000000000000000000000000000000000000000000000000000060208201526109d7565b6020815260006102a260208301610bd756fea2646970667358221220baa75156c66c0bd8aa8ef90496fd64050645b44e46a761a31af5b4f237680d8364736f6c63430008160033", "sourceMap": "1401:11610:19:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2154:98;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4431:197;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3242:106::-;3329:12;;3242:106;;;;;;;:::i;5190:286::-;;;;;;:::i;:::-;;:::i;3091:91::-;3173:2;3091:91;;;;;;:::i;5871:234::-;;;;;;:::i;:::-;;:::i;3406:125::-;;;;;;:::i;:::-;3506:18;;3480:7;3506:18;;;;;;;;;;;;3406:125;2365:102;;;:::i;6592:427::-;;;;;;:::i;:::-;;:::i;3727:189::-;;;;;;:::i;:::-;;:::i;3974:149::-;;;;;;:::i;:::-;4089:18;;;;4063:7;4089:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3974:149;2154:98;2208:13;2240:5;2233:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2154:98;:::o;4431:197::-;4514:4;719:10:25;4568:32:19;719:10:25;4584:7:19;4593:6;4568:8;:32::i;:::-;4617:4;4610:11;;;4431:197;;;;;:::o;5190:286::-;5317:4;719:10:25;5373:38:19;5389:4;719:10:25;5404:6:19;5373:15;:38::i;:::-;5421:27;5431:4;5437:2;5441:6;5421:9;:27::i;:::-;-1:-1:-1;5465:4:19;;5190:286;-1:-1:-1;;;;5190:286:19:o;5871:234::-;719:10:25;5959:4:19;4089:18;;;:11;:18;;;;;;;;;:27;;;;;;;;;;5959:4;;719:10:25;6013:64:19;;719:10:25;;4089:27:19;;6038:38;;6066:10;;6038:38;:::i;:::-;6013:8;:64::i;2365:102::-;2421:13;2453:7;2446:14;;;;;:::i;6592:427::-;719:10:25;6685:4:19;4089:18;;;:11;:18;;;;;;;;;:27;;;;;;;;;;6685:4;;719:10:25;6829:15:19;6809:16;:35;;6801:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;6920:60;6929:5;6936:7;6964:15;6945:16;:34;6920:8;:60::i;3727:189::-;3806:4;719:10:25;3860:28:19;719:10:25;3877:2:19;3881:6;3860:9;:28::i;10504:370::-;10635:19;;;10627:68;;;;;;;;;;;;:::i;:::-;10713:21;;;10705:68;;;;;;;;;;;;:::i;:::-;10784:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;;:36;;;10835:32;;;;;10814:6;;10835:32;:::i;:::-;;;;;;;;10504:370;;;:::o;11155:441::-;4089:18;;;;11285:24;4089:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;11371:17;11351:37;;11347:243;;11432:6;11412:16;:26;;11404:68;;;;;;;;;;;;:::i;:::-;11514:51;11523:5;11530:7;11558:6;11539:16;:25;11514:8;:51::i;:::-;11275:321;11155:441;;;:::o;7473:818::-;7599:18;;;7591:68;;;;;;;;;;;;:::i;:::-;7677:16;;;7669:64;;;;;;;;;;;;:::i;:::-;7815:15;;;7793:19;7815:15;;;;;;;;;;;7848:21;;;;7840:72;;;;;;;;;;;;:::i;:::-;7946:15;;;;:9;:15;;;;;;;;;;;7964:20;;;7946:38;;8161:13;;;;;;;;;;:23;;;;;;8210:26;;;;;;7978:6;;8210:26;:::i;:::-;;;;;;;;8247:37;12180:121;250:250:69;335:1;345:113;359:6;356:1;353:13;345:113;;;435:11;;;429:18;416:11;;;409:39;381:2;374:10;345:113;;;-1:-1:-1;;492:1:69;474:16;;467:27;250:250::o;672:306::-;714:3;746:26;766:5;76:12;;14:76;746:26;182:19;;;234:4;225:14;;851:67;911:6;904:5;897:4;890:5;886:16;851:67;:::i;:::-;594:66;589:2;578:14;;574:87;934:38;;672:306;-1:-1:-1;;;;672:306:69:o;983:220::-;1132:2;1121:9;1114:21;1095:4;1152:45;1193:2;1182:9;1178:18;1170:6;1152:45;:::i;:::-;1144:53;983:220;-1:-1:-1;;;983:220:69:o;1455:96::-;1490:7;1401:42;1390:54;;1523:22;1322:128;1556:122;1631:22;1647:5;1631:22;:::i;:::-;1624:5;1621:33;1611:61;;1668:1;1665;1658:12;1611:61;1556:122;:::o;1683:172::-;1762:20;;;1816:33;1762:20;1816:33;:::i;:::-;;1683:172;;;;:::o;1932:122::-;2023:5;2007:22;1860:67;2059:172;2138:20;;;2192:33;2138:20;2192:33;:::i;2236:373::-;2304:6;2312;2365:2;2353:9;2344:7;2340:23;2336:32;2333:147;;;2391:79;1401:11610:19;;;2391:79:69;2499:38;2529:7;2518:9;2499:38;:::i;:::-;2489:48;;2556:47;2595:7;2590:2;2579:9;2575:18;2556:47;:::i;:::-;2546:57;;2236:373;;;;;:::o;2711:89::-;2686:13;;2679:21;2774:19;2769:3;2762:32;;;2711:89::o;2805:180::-;2933:2;2918:18;;2945:34;2922:9;2961:6;2945:34;:::i;2990:95::-;3072:5;3056:22;1860:67;3090:189;3224:2;3209:18;;3236:37;3213:9;3255:6;3236:37;:::i;3284:456::-;3361:6;3369;3377;3430:2;3418:9;3409:7;3405:23;3401:32;3398:147;;;3456:79;1401:11610:19;;;3456:79:69;3564:38;3594:7;3583:9;3564:38;:::i;:::-;3554:48;;3621:47;3660:7;3655:2;3644:9;3640:18;3621:47;:::i;:::-;3611:57;;3687:47;3726:7;3721:2;3710:9;3706:18;3687:47;:::i;:::-;3677:57;;3284:456;;;;;:::o;3826:91::-;3814:4;3803:16;;3890:20;3745:76;3922:183;4052:2;4037:18;;4064:35;4041:9;4081:6;4064:35;:::i;4110:290::-;4169:6;4222:2;4210:9;4201:7;4197:23;4193:32;4190:147;;;4248:79;1401:11610:19;;;4248:79:69;4356:38;4386:7;4375:9;4356:38;:::i;4405:373::-;4473:6;4481;4534:2;4522:9;4513:7;4509:23;4505:32;4502:147;;;4560:79;1401:11610:19;;;4560:79:69;4668:38;4698:7;4687:9;4668:38;:::i;:::-;4658:48;;4725:47;4764:7;4759:2;4748:9;4744:18;4725:47;:::i;4783:184::-;4835:77;4832:1;4825:88;4932:4;4929:1;4922:15;4956:4;4953:1;4946:15;4972:318;5057:1;5053:12;;;;;;5127;;;5148:63;;5204:4;5194:8;5190:19;5180:29;;5148:63;5257:2;5249:6;5246:14;5226:18;5223:38;5220:64;;5264:18;;:::i;:::-;5220:64;;4972:318;;;:::o;5295:184::-;5347:77;5344:1;5337:88;5444:4;5441:1;5434:15;5468:4;5465:1;5458:15;5484:213;5593:28;;;5569:1;5593:28;5654:14;;;5651:40;;;5671:18;;:::i;:::-;5651:40;;5484:213;;;;:::o;5924:262::-;6043:2;182:19;;5971:3;234:4;225:14;;5837:34;5822:50;;5905:7;5900:2;5888:15;;5881:32;6055:95;6177:2;6166:14;;5924:262;-1:-1:-1;;5924:262:69:o;6191:277::-;6393:2;6382:9;6375:21;6356:4;6413:49;6458:2;6447:9;6443:18;6413:49;:::i;6694:262::-;6813:2;182:19;;6741:3;234:4;225:14;;6608:34;6593:50;;6676:6;6671:2;6659:15;;6652:31;6825:95;6473:216;6961:277;7163:2;7152:9;7145:21;7126:4;7183:49;7228:2;7217:9;7213:18;7183:49;:::i;7462:262::-;7581:2;182:19;;7509:3;234:4;225:14;;7378:34;7363:50;;7446:4;7441:2;7429:15;;7422:29;7593:95;7243:214;7729:277;7931:2;7920:9;7913:21;7894:4;7951:49;7996:2;7985:9;7981:18;7951:49;:::i;8456:277::-;8658:2;8647:9;8640:21;8621:4;8678:49;8723:2;8712:9;8708:18;8308:2;182:19;;8146:31;234:4;225:14;;8131:47;8431:14;;;8189:262;8960;9079:2;182:19;;9007:3;234:4;225:14;;8873:34;8858:50;;8941:7;8936:2;8924:15;;8917:32;9091:95;8738:217;9227:277;9429:2;9418:9;9411:21;9392:4;9449:49;9494:2;9483:9;9479:18;9449:49;:::i;9729:262::-;9848:2;182:19;;9776:3;234:4;225:14;;9644:34;9629:50;;9712:5;9707:2;9695:15;;9688:30;9860:95;9509:215;9996:277;10198:2;10187:9;10180:21;10161:4;10218:49;10263:2;10252:9;10248:18;10218:49;:::i;10501:257::-;10615:2;182:19;;10543:3;234:4;225:14;;10413:34;10398:50;;10481:8;10476:2;10464:15;;10457:33;10627:95;10278:218;10763:272;10965:2;10954:9;10947:21;10928:4;10985:44;11025:2;11014:9;11010:18;10985:44;:::i", "linkReferences": {} }, "methodIdentifiers": { "allowance(address,address)": "dd62ed3e", "approve(address,uint256)": "095ea7b3", "balanceOf(address)": "70a08231", "decimals()": "313ce567", "decreaseAllowance(address,uint256)": "a457c2d7", "increaseAllowance(address,uint256)": "39509351", "name()": "06fdde03", "symbol()": "95d89b41", "totalSupply()": "18160ddd", "transfer(address,uint256)": "a9059cbb", "transferFrom(address,address,uint256)": "23b872dd" }, "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"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\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"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\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. For a generic mechanism see {ERC20PresetMinterPauser}. TIP: For a detailed writeup see our guide https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC20 applications. Additionally, an {Approval} event is emitted on calls to {transferFrom}. This allows applications to reconstruct the allowance for all accounts just by listening to said events. Other implementations of the EIP may not emit these events, as it isn't required by the specification. Finally, the non-standard {decreaseAllowance} and {increaseAllowance} functions have been added to mitigate the well-known issues around setting allowances. See {IERC20-approve}.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"constructor\":{\"details\":\"Sets the values for {name} and {symbol}. The default value of {decimals} is 18. To select a different value for {decimals} you should overload it. All two of these values are immutable: they can only be set once during construction.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless this function is overridden; NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":999999999},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/=lib_uniswap/v3-core/\",\":@uniswap/v3-periphery/=lib_uniswap/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":v3-core/=lib_uniswap/v3-core/\",\":v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x4ffc0547c02ad22925310c585c0f166f8759e2648a09e9b489100c42f15dd98d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15f52f51413a9de1ff191e2f6367c62178e1df7806d7880fe857a98b0b66253d\",\"dweb:/ipfs/QmaQG1fwfgUt5E9nu2cccFiV47B2V78MM1tCy1qB7n4MsH\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.22+commit.4fc1097e" }, "language": "Solidity", "output": { "abi": [ { "inputs": [ { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address", "indexed": true }, { "internalType": "address", "name": "spender", "type": "address", "indexed": true }, { "internalType": "uint256", "name": "value", "type": "uint256", "indexed": false } ], "type": "event", "name": "Approval", "anonymous": false }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address", "indexed": true }, { "internalType": "address", "name": "to", "type": "address", "indexed": true }, { "internalType": "uint256", "name": "value", "type": "uint256", "indexed": false } ], "type": "event", "name": "Transfer", "anonymous": false }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "stateMutability": "view", "type": "function", "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ] }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function", "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ] }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "stateMutability": "view", "type": "function", "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ] }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function", "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ] }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function", "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ] }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function", "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ] }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function", "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ] } ], "devdoc": { "kind": "dev", "methods": { "allowance(address,address)": { "details": "See {IERC20-allowance}." }, "approve(address,uint256)": { "details": "See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address." }, "balanceOf(address)": { "details": "See {IERC20-balanceOf}." }, "constructor": { "details": "Sets the values for {name} and {symbol}. The default value of {decimals} is 18. To select a different value for {decimals} you should overload it. All two of these values are immutable: they can only be set once during construction." }, "decimals()": { "details": "Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless this function is overridden; NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}." }, "decreaseAllowance(address,uint256)": { "details": "Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`." }, "increaseAllowance(address,uint256)": { "details": "Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address." }, "name()": { "details": "Returns the name of the token." }, "symbol()": { "details": "Returns the symbol of the token, usually a shorter version of the name." }, "totalSupply()": { "details": "See {IERC20-totalSupply}." }, "transfer(address,uint256)": { "details": "See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`." }, "transferFrom(address,address,uint256)": { "details": "See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`." } }, "version": 1 }, "userdoc": { "kind": "user", "methods": {}, "version": 1 } }, "settings": { "remappings": [ "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/", "@uniswap/v3-core/=lib_uniswap/v3-core/", "@uniswap/v3-periphery/=lib_uniswap/v3-periphery/", "ds-test/=lib/forge-std/lib/ds-test/src/", "forge-std/=lib/forge-std/src/", "openzeppelin-contracts/=lib/openzeppelin-contracts/", "v3-core/=lib_uniswap/v3-core/", "v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/" ], "optimizer": { "runs": 999999999, "details": { "peephole": true, "inliner": true, "jumpdestRemover": true, "orderLiterals": true, "deduplicate": true, "cse": true, "constantOptimizer": true, "yul": true, "yulDetails": { "stackAllocation": true, "optimizerSteps": "dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu" } } }, "metadata": { "bytecodeHash": "ipfs" }, "compilationTarget": { "lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol": "ERC20" }, "libraries": {} }, "sources": { "lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol": { "keccak256": "0x4ffc0547c02ad22925310c585c0f166f8759e2648a09e9b489100c42f15dd98d", "urls": [ "bzz-raw://15f52f51413a9de1ff191e2f6367c62178e1df7806d7880fe857a98b0b66253d", "dweb:/ipfs/QmaQG1fwfgUt5E9nu2cccFiV47B2V78MM1tCy1qB7n4MsH" ], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol": { "keccak256": "0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b", "urls": [ "bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34", "dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr" ], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol": { "keccak256": "0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca", "urls": [ "bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd", "dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8" ], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/utils/Context.sol": { "keccak256": "0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7", "urls": [ "bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92", "dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3" ], "license": "MIT" } }, "version": 1 }, "ast": { "absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol", "id": 43479, "exportedSymbols": { "Context": [ 43777 ], "ERC20": [ 43478 ], "IERC20": [ 43556 ], "IERC20Metadata": [ 43581 ] }, "nodeType": "SourceUnit", "src": "105:12907:19", "nodes": [ { "id": 42893, "nodeType": "PragmaDirective", "src": "105:23:19", "nodes": [], "literals": [ "solidity", "^", "0.8", ".0" ] }, { "id": 42894, "nodeType": "ImportDirective", "src": "130:22:19", "nodes": [], "absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", "file": "./IERC20.sol", "nameLocation": "-1:-1:-1", "scope": 43479, "sourceUnit": 43557, "symbolAliases": [], "unitAlias": "" }, { "id": 42895, "nodeType": "ImportDirective", "src": "153:41:19", "nodes": [], "absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol", "file": "./extensions/IERC20Metadata.sol", "nameLocation": "-1:-1:-1", "scope": 43479, "sourceUnit": 43582, "symbolAliases": [], "unitAlias": "" }, { "id": 42896, "nodeType": "ImportDirective", "src": "195:33:19", "nodes": [], "absolutePath": "lib/openzeppelin-contracts/contracts/utils/Context.sol", "file": "../../utils/Context.sol", "nameLocation": "-1:-1:-1", "scope": 43479, "sourceUnit": 43778, "symbolAliases": [], "unitAlias": "" }, { "id": 43478, "nodeType": "ContractDefinition", "src": "1401:11610:19", "nodes": [ { "id": 42907, "nodeType": "VariableDeclaration", "src": "1457:45:19", "nodes": [], "constant": false, "mutability": "mutable", "name": "_balances", "nameLocation": "1493:9:19", "scope": 43478, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" }, "typeName": { "id": 42906, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": { "id": 42904, "name": "address", "nodeType": "ElementaryTypeName", "src": "1465:7:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "1457:27:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" }, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": { "id": 42905, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1476:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } }, "visibility": "private" }, { "id": 42913, "nodeType": "VariableDeclaration", "src": "1509:67:19", "nodes": [], "constant": false, "mutability": "mutable", "name": "_allowances", "nameLocation": "1565:11:19", "scope": 43478, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" }, "typeName": { "id": 42912, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": { "id": 42908, "name": "address", "nodeType": "ElementaryTypeName", "src": "1517:7:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "1509:47:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" }, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": { "id": 42911, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": { "id": 42909, "name": "address", "nodeType": "ElementaryTypeName", "src": "1536:7:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "1528:27:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" }, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": { "id": 42910, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1547:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } } }, "visibility": "private" }, { "id": 42915, "nodeType": "VariableDeclaration", "src": "1583:28:19", "nodes": [], "constant": false, "mutability": "mutable", "name": "_totalSupply", "nameLocation": "1599:12:19", "scope": 43478, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 42914, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1583:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "private" }, { "id": 42917, "nodeType": "VariableDeclaration", "src": "1618:20:19", "nodes": [], "constant": false, "mutability": "mutable", "name": "_name", "nameLocation": "1633:5:19", "scope": 43478, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string" }, "typeName": { "id": 42916, "name": "string", "nodeType": "ElementaryTypeName", "src": "1618:6:19", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "visibility": "private" }, { "id": 42919, "nodeType": "VariableDeclaration", "src": "1644:22:19", "nodes": [], "constant": false, "mutability": "mutable", "name": "_symbol", "nameLocation": "1659:7:19", "scope": 43478, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string" }, "typeName": { "id": 42918, "name": "string", "nodeType": "ElementaryTypeName", "src": "1644:6:19", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "visibility": "private" }, { "id": 42936, "nodeType": "FunctionDefinition", "src": "1976:113:19", "nodes": [], "body": { "id": 42935, "nodeType": "Block", "src": "2032:57:19", "nodes": [], "statements": [ { "expression": { "id": 42929, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 42927, "name": "_name", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 42917, "src": "2042:5:19", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "id": 42928, "name": "name_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 42922, "src": "2050:5:19", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, "src": "2042:13:19", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, "id": 42930, "nodeType": "ExpressionStatement", "src": "2042:13:19" }, { "expression": { "id": 42933, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 42931, "name": "_symbol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 42919, "src": "2065:7:19", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "id": 42932, "name": "symbol_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 42924, "src": "2075:7:19", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, "src": "2065:17:19", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, "id": 42934, "nodeType": "ExpressionStatement", "src": "2065:17:19" } ] }, "documentation": { "id": 42920, "nodeType": "StructuredDocumentation", "src": "1673:298:19", "text": " @dev Sets the values for {name} and {symbol}.\n The default value of {decimals} is 18. To select a different value for\n {decimals} you should overload it.\n All two of these values are immutable: they can only be set once during\n construction." }, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nameLocation": "-1:-1:-1", "parameters": { "id": 42925, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 42922, "mutability": "mutable", "name": "name_", "nameLocation": "2002:5:19", "nodeType": "VariableDeclaration", "scope": 42936, "src": "1988:19:19", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 42921, "name": "string", "nodeType": "ElementaryTypeName", "src": "1988:6:19", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "visibility": "internal" }, { "constant": false, "id": 42924, "mutability": "mutable", "name": "symbol_", "nameLocation": "2023:7:19", "nodeType": "VariableDeclaration", "scope": 42936, "src": "2009:21:19", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 42923, "name": "string", "nodeType": "ElementaryTypeName", "src": "2009:6:19", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "visibility": "internal" } ], "src": "1987:44:19" }, "returnParameters": { "id": 42926, "nodeType": "ParameterList", "parameters": [], "src": "2032:0:19" }, "scope": 43478, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "id": 42946, "nodeType": "FunctionDefinition", "src": "2154:98:19", "nodes": [], "body": { "id": 42945, "nodeType": "Block", "src": "2223:29:19", "nodes": [], "statements": [ { "expression": { "id": 42943, "name": "_name", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 42917, "src": "2240:5:19", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, "functionReturnParameters": 42942, "id": 42944, "nodeType": "Return", "src": "2233:12:19" } ] }, "baseFunctions": [ 43568 ], "documentation": { "id": 42937, "nodeType": "StructuredDocumentation", "src": "2095:54:19", "text": " @dev Returns the name of the token." }, "functionSelector": "06fdde03", "implemented": true, "kind": "function", "modifiers": [], "name": "name", "nameLocation": "2163:4:19", "overrides": { "id": 42939, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2190:8:19" }, "parameters": { "id": 42938, "nodeType": "ParameterList", "parameters": [], "src": "2167:2:19" }, "returnParameters": { "id": 42942, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 42941, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 42946, "src": "2208:13:19", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 42940, "name": "string", "nodeType": "ElementaryTypeName", "src": "2208:6:19", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "visibility": "internal" } ], "src": "2207:15:19" }, "scope": 43478, "stateMutability": "view", "virtual": true, "visibility": "public" }, { "id": 42956, "nodeType": "FunctionDefinition", "src": "2365:102:19", "nodes": [], "body": { "id": 42955, "nodeType": "Block", "src": "2436:31:19", "nodes": [], "statements": [ { "expression": { "id": 42953, "name": "_symbol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 42919, "src": "2453:7:19", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, "functionReturnParameters": 42952, "id": 42954, "nodeType": "Return", "src": "2446:14:19" } ] }, "baseFunctions": [ 43574 ], "documentation": { "id": 42947, "nodeType": "StructuredDocumentation", "src": "2258:102:19", "text": " @dev Returns the symbol of the token, usually a shorter version of the\n name." }, "functionSelector": "95d89b41", "implemented": true, "kind": "function", "modifiers": [], "name": "symbol", "nameLocation": "2374:6:19", "overrides": { "id": 42949, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2403:8:19" }, "parameters": { "id": 42948, "nodeType": "ParameterList", "parameters": [], "src": "2380:2:19" }, "returnParameters": { "id": 42952, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 42951, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 42956, "src": "2421:13:19", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 42950, "name": "string", "nodeType": "ElementaryTypeName", "src": "2421:6:19", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "visibility": "internal" } ], "src": "2420:15:19" }, "scope": 43478, "stateMutability": "view", "virtual": true, "visibility": "public" }, { "id": 42966, "nodeType": "FunctionDefinition", "src": "3091:91:19", "nodes": [], "body": { "id": 42965, "nodeType": "Block", "src": "3156:26:19", "nodes": [], "statements": [ { "expression": { "hexValue": "3138", "id": 42963, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3173:2:19", "typeDescriptions": { "typeIdentifier": "t_rational_18_by_1", "typeString": "int_const 18" }, "value": "18" }, "functionReturnParameters": 42962, "id": 42964, "nodeType": "Return", "src": "3166:9:19" } ] }, "baseFunctions": [ 43580 ], "documentation": { "id": 42957, "nodeType": "StructuredDocumentation", "src": "2473:613:19", "text": " @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5.05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the value {ERC20} uses, unless this function is\n overridden;\n NOTE: This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}." }, "functionSelector": "313ce567", "implemented": true, "kind": "function", "modifiers": [], "name": "decimals", "nameLocation": "3100:8:19", "overrides": { "id": 42959, "nodeType": "OverrideSpecifier", "overrides": [], "src": "3131:8:19" }, "parameters": { "id": 42958, "nodeType": "ParameterList", "parameters": [], "src": "3108:2:19" }, "returnParameters": { "id": 42962, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 42961, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 42966, "src": "3149:5:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 42960, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "3149:5:19", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "visibility": "internal" } ], "src": "3148:7:19" }, "scope": 43478, "stateMutability": "view", "virtual": true, "visibility": "public" }, { "id": 42976, "nodeType": "FunctionDefinition", "src": "3242:106:19", "nodes": [], "body": { "id": 42975, "nodeType": "Block", "src": "3312:36:19", "nodes": [], "statements": [ { "expression": { "id": 42973, "name": "_totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 42915, "src": "3329:12:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 42972, "id": 42974, "nodeType": "Return", "src": "3322:19:19" } ] }, "baseFunctions": [ 43505 ], "documentation": { "id": 42967, "nodeType": "StructuredDocumentation", "src": "3188:49:19", "text": " @dev See {IERC20-totalSupply}." }, "functionSelector": "18160ddd", "implemented": true, "kind": "function", "modifiers": [], "name": "totalSupply", "nameLocation": "3251:11:19", "overrides": { "id": 42969, "nodeType": "OverrideSpecifier", "overrides": [], "src": "3285:8:19" }, "parameters": { "id": 42968, "nodeType": "ParameterList", "parameters": [], "src": "3262:2:19" }, "returnParameters": { "id": 42972, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 42971, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 42976, "src": "3303:7:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 42970, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3303:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "3302:9:19" }, "scope": 43478, "stateMutability": "view", "virtual": true, "visibility": "public" }, { "id": 42990, "nodeType": "FunctionDefinition", "src": "3406:125:19", "nodes": [], "body": { "id": 42989, "nodeType": "Block", "src": "3489:42:19", "nodes": [], "statements": [ { "expression": { "baseExpression": { "id": 42985, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 42907, "src": "3506:9:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 42987, "indexExpression": { "id": 42986, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 42979, "src": "3516:7:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3506:18:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 42984, "id": 42988, "nodeType": "Return", "src": "3499:25:19" } ] }, "baseFunctions": [ 43513 ], "documentation": { "id": 42977, "nodeType": "StructuredDocumentation", "src": "3354:47:19", "text": " @dev See {IERC20-balanceOf}." }, "functionSelector": "70a08231", "implemented": true, "kind": "function", "modifiers": [], "name": "balanceOf", "nameLocation": "3415:9:19", "overrides": { "id": 42981, "nodeType": "OverrideSpecifier", "overrides": [], "src": "3462:8:19" }, "parameters": { "id": 42980, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 42979, "mutability": "mutable", "name": "account", "nameLocation": "3433:7:19", "nodeType": "VariableDeclaration", "scope": 42990, "src": "3425:15:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 42978, "name": "address", "nodeType": "ElementaryTypeName", "src": "3425:7:19", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "src": "3424:17:19" }, "returnParameters": { "id": 42984, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 42983, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 42990, "src": "3480:7:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 42982, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3480:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "3479:9:19" }, "scope": 43478, "stateMutability": "view", "virtual": true, "visibility": "public" }, { "id": 43015, "nodeType": "FunctionDefinition", "src": "3727:189:19", "nodes": [], "body": { "id": 43014, "nodeType": "Block", "src": "3812:104:19", "nodes": [], "statements": [ { "assignments": [ 43002 ], "declarations": [ { "constant": false, "id": 43002, "mutability": "mutable", "name": "owner", "nameLocation": "3830:5:19", "nodeType": "VariableDeclaration", "scope": 43014, "src": "3822:13:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 43001, "name": "address", "nodeType": "ElementaryTypeName", "src": "3822:7:19", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "id": 43005, "initialValue": { "arguments": [], "expression": { "argumentTypes": [], "id": 43003, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43767, "src": "3838:10:19", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)" } }, "id": 43004, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3838:12:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "3822:28:19" }, { "expression": { "arguments": [ { "id": 43007, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43002, "src": "3870:5:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 43008, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 42993, "src": "3877:2:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 43009, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 42995, "src": "3881:6: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": 43006, "name": "_transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43238, "src": "3860:9:19", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 43010, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3860:28:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 43011, "nodeType": "ExpressionStatement", "src": "3860:28:19" }, { "expression": { "hexValue": "74727565", "id": 43012, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "3905:4:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "functionReturnParameters": 43000, "id": 43013, "nodeType": "Return", "src": "3898:11:19" } ] }, "baseFunctions": [ 43523 ], "documentation": { "id": 42991, "nodeType": "StructuredDocumentation", "src": "3537:185:19", "text": " @dev See {IERC20-transfer}.\n Requirements:\n - `to` cannot be the zero address.\n - the caller must have a balance of at least `amount`." }, "functionSelector": "a9059cbb", "implemented": true, "kind": "function", "modifiers": [], "name": "transfer", "nameLocation": "3736:8:19", "overrides": { "id": 42997, "nodeType": "OverrideSpecifier", "overrides": [], "src": "3788:8:19" }, "parameters": { "id": 42996, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 42993, "mutability": "mutable", "name": "to", "nameLocation": "3753:2:19", "nodeType": "VariableDeclaration", "scope": 43015, "src": "3745:10:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 42992, "name": "address", "nodeType": "ElementaryTypeName", "src": "3745:7:19", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 42995, "mutability": "mutable", "name": "amount", "nameLocation": "3765:6:19", "nodeType": "VariableDeclaration", "scope": 43015, "src": "3757:14:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 42994, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3757:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "3744:28:19" }, "returnParameters": { "id": 43000, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 42999, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 43015, "src": "3806:4:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 42998, "name": "bool", "nodeType": "ElementaryTypeName", "src": "3806:4:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "visibility": "internal" } ], "src": "3805:6:19" }, "scope": 43478, "stateMutability": "nonpayable", "virtual": true, "visibility": "public" }, { "id": 43033, "nodeType": "FunctionDefinition", "src": "3974:149:19", "nodes": [], "body": { "id": 43032, "nodeType": "Block", "src": "4072:51:19", "nodes": [], "statements": [ { "expression": { "baseExpression": { "baseExpression": { "id": 43026, "name": "_allowances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 42913, "src": "4089:11:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, "id": 43028, "indexExpression": { "id": 43027, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43018, "src": "4101:5:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4089:18:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 43030, "indexExpression": { "id": 43029, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43020, "src": "4108:7:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4089:27:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 43025, "id": 43031, "nodeType": "Return", "src": "4082:34:19" } ] }, "baseFunctions": [ 43533 ], "documentation": { "id": 43016, "nodeType": "StructuredDocumentation", "src": "3922:47:19", "text": " @dev See {IERC20-allowance}." }, "functionSelector": "dd62ed3e", "implemented": true, "kind": "function", "modifiers": [], "name": "allowance", "nameLocation": "3983:9:19", "overrides": { "id": 43022, "nodeType": "OverrideSpecifier", "overrides": [], "src": "4045:8:19" }, "parameters": { "id": 43021, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 43018, "mutability": "mutable", "name": "owner", "nameLocation": "4001:5:19", "nodeType": "VariableDeclaration", "scope": 43033, "src": "3993:13:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 43017, "name": "address", "nodeType": "ElementaryTypeName", "src": "3993:7:19", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 43020, "mutability": "mutable", "name": "spender", "nameLocation": "4016:7:19", "nodeType": "VariableDeclaration", "scope": 43033, "src": "4008:15:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 43019, "name": "address", "nodeType": "ElementaryTypeName", "src": "4008:7:19", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "src": "3992:32:19" }, "returnParameters": { "id": 43025, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 43024, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 43033, "src": "4063:7:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 43023, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4063:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "4062:9:19" }, "scope": 43478, "stateMutability": "view", "virtual": true, "visibility": "public" }, { "id": 43058, "nodeType": "FunctionDefinition", "src": "4431:197:19", "nodes": [], "body": { "id": 43057, "nodeType": "Block", "src": "4520:108:19", "nodes": [], "statements": [ { "assignments": [ 43045 ], "declarations": [ { "constant": false, "id": 43045, "mutability": "mutable", "name": "owner", "nameLocation": "4538:5:19", "nodeType": "VariableDeclaration", "scope": 43057, "src": "4530:13:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 43044, "name": "address", "nodeType": "ElementaryTypeName", "src": "4530:7:19", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "id": 43048, "initialValue": { "arguments": [], "expression": { "argumentTypes": [], "id": 43046, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43767, "src": "4546:10:19", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)" } }, "id": 43047, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4546:12:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "4530:28:19" }, { "expression": { "arguments": [ { "id": 43050, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43045, "src": "4577:5:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 43051, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43036, "src": "4584:7:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 43052, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43038, "src": "4593:6: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": 43049, "name": "_approve", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43412, "src": "4568:8:19", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 43053, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4568:32:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 43054, "nodeType": "ExpressionStatement", "src": "4568:32:19" }, { "expression": { "hexValue": "74727565", "id": 43055, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "4617:4:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "functionReturnParameters": 43043, "id": 43056, "nodeType": "Return", "src": "4610:11:19" } ] }, "baseFunctions": [ 43543 ], "documentation": { "id": 43034, "nodeType": "StructuredDocumentation", "src": "4129:297:19", "text": " @dev See {IERC20-approve}.\n NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on\n `transferFrom`. This is semantically equivalent to an infinite approval.\n Requirements:\n - `spender` cannot be the zero address." }, "functionSelector": "095ea7b3", "implemented": true, "kind": "function", "modifiers": [], "name": "approve", "nameLocation": "4440:7:19", "overrides": { "id": 43040, "nodeType": "OverrideSpecifier", "overrides": [], "src": "4496:8:19" }, "parameters": { "id": 43039, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 43036, "mutability": "mutable", "name": "spender", "nameLocation": "4456:7:19", "nodeType": "VariableDeclaration", "scope": 43058, "src": "4448:15:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 43035, "name": "address", "nodeType": "ElementaryTypeName", "src": "4448:7:19", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 43038, "mutability": "mutable", "name": "amount", "nameLocation": "4473:6:19", "nodeType": "VariableDeclaration", "scope": 43058, "src": "4465:14:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 43037, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4465:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "4447:33:19" }, "returnParameters": { "id": 43043, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 43042, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 43058, "src": "4514:4:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 43041, "name": "bool", "nodeType": "ElementaryTypeName", "src": "4514:4:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "visibility": "internal" } ], "src": "4513:6:19" }, "scope": 43478, "stateMutability": "nonpayable", "virtual": true, "visibility": "public" }, { "id": 43091, "nodeType": "FunctionDefinition", "src": "5190:286:19", "nodes": [], "body": { "id": 43090, "nodeType": "Block", "src": "5323:153:19", "nodes": [], "statements": [ { "assignments": [ 43072 ], "declarations": [ { "constant": false, "id": 43072, "mutability": "mutable", "name": "spender", "nameLocation": "5341:7:19", "nodeType": "VariableDeclaration", "scope": 43090, "src": "5333:15:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 43071, "name": "address", "nodeType": "ElementaryTypeName", "src": "5333:7:19", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "id": 43075, "initialValue": { "arguments": [], "expression": { "argumentTypes": [], "id": 43073, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43767, "src": "5351:10:19", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)" } }, "id": 43074, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5351:12:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "5333:30:19" }, { "expression": { "arguments": [ { "id": 43077, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43061, "src": "5389:4:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 43078, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43072, "src": "5395:7:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 43079, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43065, "src": "5404:6: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": 43076, "name": "_spendAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43455, "src": "5373:15:19", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 43080, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5373:38:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 43081, "nodeType": "ExpressionStatement", "src": "5373:38:19" }, { "expression": { "arguments": [ { "id": 43083, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43061, "src": "5431:4:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 43084, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43063, "src": "5437:2:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 43085, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43065, "src": "5441:6: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": 43082, "name": "_transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43238, "src": "5421:9:19", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 43086, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5421:27:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 43087, "nodeType": "ExpressionStatement", "src": "5421:27:19" }, { "expression": { "hexValue": "74727565", "id": 43088, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "5465:4:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "functionReturnParameters": 43070, "id": 43089, "nodeType": "Return", "src": "5458:11:19" } ] }, "baseFunctions": [ 43555 ], "documentation": { "id": 43059, "nodeType": "StructuredDocumentation", "src": "4634:551:19", "text": " @dev See {IERC20-transferFrom}.\n Emits an {Approval} event indicating the updated allowance. This is not\n required by the EIP. See the note at the beginning of {ERC20}.\n NOTE: Does not update the allowance if the current allowance\n is the maximum `uint256`.\n Requirements:\n - `from` and `to` cannot be the zero address.\n - `from` must have a balance of at least `amount`.\n - the caller must have allowance for ``from``'s tokens of at least\n `amount`." }, "functionSelector": "23b872dd", "implemented": true, "kind": "function", "modifiers": [], "name": "transferFrom", "nameLocation": "5199:12:19", "overrides": { "id": 43067, "nodeType": "OverrideSpecifier", "overrides": [], "src": "5299:8:19" }, "parameters": { "id": 43066, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 43061, "mutability": "mutable", "name": "from", "nameLocation": "5229:4:19", "nodeType": "VariableDeclaration", "scope": 43091, "src": "5221:12:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 43060, "name": "address", "nodeType": "ElementaryTypeName", "src": "5221:7:19", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 43063, "mutability": "mutable", "name": "to", "nameLocation": "5251:2:19", "nodeType": "VariableDeclaration", "scope": 43091, "src": "5243:10:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 43062, "name": "address", "nodeType": "ElementaryTypeName", "src": "5243:7:19", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 43065, "mutability": "mutable", "name": "amount", "nameLocation": "5271:6:19", "nodeType": "VariableDeclaration", "scope": 43091, "src": "5263:14:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 43064, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5263:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "5211:72:19" }, "returnParameters": { "id": 43070, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 43069, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 43091, "src": "5317:4:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 43068, "name": "bool", "nodeType": "ElementaryTypeName", "src": "5317:4:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "visibility": "internal" } ], "src": "5316:6:19" }, "scope": 43478, "stateMutability": "nonpayable", "virtual": true, "visibility": "public" }, { "id": 43120, "nodeType": "FunctionDefinition", "src": "5871:234:19", "nodes": [], "body": { "id": 43119, "nodeType": "Block", "src": "5965:140:19", "nodes": [], "statements": [ { "assignments": [ 43102 ], "declarations": [ { "constant": false, "id": 43102, "mutability": "mutable", "name": "owner", "nameLocation": "5983:5:19", "nodeType": "VariableDeclaration", "scope": 43119, "src": "5975:13:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 43101, "name": "address", "nodeType": "ElementaryTypeName", "src": "5975:7:19", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "id": 43105, "initialValue": { "arguments": [], "expression": { "argumentTypes": [], "id": 43103, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43767, "src": "5991:10:19", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)" } }, "id": 43104, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5991:12:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "5975:28:19" }, { "expression": { "arguments": [ { "id": 43107, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43102, "src": "6022:5:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 43108, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43094, "src": "6029:7:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 43114, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "arguments": [ { "id": 43110, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43102, "src": "6048:5:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 43111, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43094, "src": "6055:7:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 43109, "name": "allowance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43033, "src": "6038:9:19", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view returns (uint256)" } }, "id": 43112, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6038:25:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "id": 43113, "name": "addedValue", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43096, "src": "6066:10:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "6038:38: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": 43106, "name": "_approve", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43412, "src": "6013:8:19", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 43115, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6013:64:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 43116, "nodeType": "ExpressionStatement", "src": "6013:64:19" }, { "expression": { "hexValue": "74727565", "id": 43117, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "6094:4:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "functionReturnParameters": 43100, "id": 43118, "nodeType": "Return", "src": "6087:11:19" } ] }, "documentation": { "id": 43092, "nodeType": "StructuredDocumentation", "src": "5482:384:19", "text": " @dev Atomically increases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address." }, "functionSelector": "39509351", "implemented": true, "kind": "function", "modifiers": [], "name": "increaseAllowance", "nameLocation": "5880:17:19", "parameters": { "id": 43097, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 43094, "mutability": "mutable", "name": "spender", "nameLocation": "5906:7:19", "nodeType": "VariableDeclaration", "scope": 43120, "src": "5898:15:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 43093, "name": "address", "nodeType": "ElementaryTypeName", "src": "5898:7:19", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 43096, "mutability": "mutable", "name": "addedValue", "nameLocation": "5923:10:19", "nodeType": "VariableDeclaration", "scope": 43120, "src": "5915:18:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 43095, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5915:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "5897:37:19" }, "returnParameters": { "id": 43100, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 43099, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 43120, "src": "5959:4:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 43098, "name": "bool", "nodeType": "ElementaryTypeName", "src": "5959:4:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "visibility": "internal" } ], "src": "5958:6:19" }, "scope": 43478, "stateMutability": "nonpayable", "virtual": true, "visibility": "public" }, { "id": 43161, "nodeType": "FunctionDefinition", "src": "6592:427:19", "nodes": [], "body": { "id": 43160, "nodeType": "Block", "src": "6691:328:19", "nodes": [], "statements": [ { "assignments": [ 43131 ], "declarations": [ { "constant": false, "id": 43131, "mutability": "mutable", "name": "owner", "nameLocation": "6709:5:19", "nodeType": "VariableDeclaration", "scope": 43160, "src": "6701:13:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 43130, "name": "address", "nodeType": "ElementaryTypeName", "src": "6701:7:19", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "id": 43134, "initialValue": { "arguments": [], "expression": { "argumentTypes": [], "id": 43132, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43767, "src": "6717:10:19", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)" } }, "id": 43133, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6717:12:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "6701:28:19" }, { "assignments": [ 43136 ], "declarations": [ { "constant": false, "id": 43136, "mutability": "mutable", "name": "currentAllowance", "nameLocation": "6747:16:19", "nodeType": "VariableDeclaration", "scope": 43160, "src": "6739:24:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 43135, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6739:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "id": 43141, "initialValue": { "arguments": [ { "id": 43138, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43131, "src": "6776:5:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 43139, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43123, "src": "6783:7:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 43137, "name": "allowance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43033, "src": "6766:9:19", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view returns (uint256)" } }, "id": 43140, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6766:25:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "6739:52:19" }, { "expression": { "arguments": [ { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 43145, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 43143, "name": "currentAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43136, "src": "6809:16:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": { "id": 43144, "name": "subtractedValue", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43125, "src": "6829:15:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "6809:35:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f", "id": 43146, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "6846:39:19", "typeDescriptions": { "typeIdentifier": "t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8", "typeString": "literal_string \"ERC20: decreased allowance below zero\"" }, "value": "ERC20: decreased allowance below zero" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8", "typeString": "literal_string \"ERC20: decreased allowance below zero\"" } ], "id": 43142, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "6801:7:19", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 43147, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6801:85:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 43148, "nodeType": "ExpressionStatement", "src": "6801:85:19" }, { "id": 43157, "nodeType": "UncheckedBlock", "src": "6896:95:19", "statements": [ { "expression": { "arguments": [ { "id": 43150, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43131, "src": "6929:5:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 43151, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43123, "src": "6936:7:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 43154, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 43152, "name": "currentAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43136, "src": "6945:16:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "id": 43153, "name": "subtractedValue", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43125, "src": "6964:15:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "6945:34: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": 43149, "name": "_approve", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43412, "src": "6920:8:19", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 43155, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6920:60:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 43156, "nodeType": "ExpressionStatement", "src": "6920:60:19" } ] }, { "expression": { "hexValue": "74727565", "id": 43158, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "7008:4:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "functionReturnParameters": 43129, "id": 43159, "nodeType": "Return", "src": "7001:11:19" } ] }, "documentation": { "id": 43121, "nodeType": "StructuredDocumentation", "src": "6111:476:19", "text": " @dev Atomically decreases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address.\n - `spender` must have allowance for the caller of at least\n `subtractedValue`." }, "functionSelector": "a457c2d7", "implemented": true, "kind": "function", "modifiers": [], "name": "decreaseAllowance", "nameLocation": "6601:17:19", "parameters": { "id": 43126, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 43123, "mutability": "mutable", "name": "spender", "nameLocation": "6627:7:19", "nodeType": "VariableDeclaration", "scope": 43161, "src": "6619:15:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 43122, "name": "address", "nodeType": "ElementaryTypeName", "src": "6619:7:19", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 43125, "mutability": "mutable", "name": "subtractedValue", "nameLocation": "6644:15:19", "nodeType": "VariableDeclaration", "scope": 43161, "src": "6636:23:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 43124, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6636:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "6618:42:19" }, "returnParameters": { "id": 43129, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 43128, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 43161, "src": "6685:4:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 43127, "name": "bool", "nodeType": "ElementaryTypeName", "src": "6685:4:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "visibility": "internal" } ], "src": "6684:6:19" }, "scope": 43478, "stateMutability": "nonpayable", "virtual": true, "visibility": "public" }, { "id": 43238, "nodeType": "FunctionDefinition", "src": "7473:818:19", "nodes": [], "body": { "id": 43237, "nodeType": "Block", "src": "7581:710:19", "nodes": [], "statements": [ { "expression": { "arguments": [ { "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 43177, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 43172, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43164, "src": "7599:4:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "arguments": [ { "hexValue": "30", "id": 43175, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7615:1:19", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 43174, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "7607:7:19", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 43173, "name": "address", "nodeType": "ElementaryTypeName", "src": "7607:7:19", "typeDescriptions": {} } }, "id": 43176, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7607:10:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "7599:18:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "45524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373", "id": 43178, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "7619:39:19", "typeDescriptions": { "typeIdentifier": "t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea", "typeString": "literal_string \"ERC20: transfer from the zero address\"" }, "value": "ERC20: transfer from the zero address" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea", "typeString": "literal_string \"ERC20: transfer from the zero address\"" } ], "id": 43171, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "7591:7:19", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 43179, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7591:68:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 43180, "nodeType": "ExpressionStatement", "src": "7591:68:19" }, { "expression": { "arguments": [ { "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 43187, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 43182, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43166, "src": "7677:2:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "arguments": [ { "hexValue": "30", "id": 43185, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7691:1:19", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 43184, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "7683:7:19", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 43183, "name": "address", "nodeType": "ElementaryTypeName", "src": "7683:7:19", "typeDescriptions": {} } }, "id": 43186, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7683:10:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "7677:16:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "45524332303a207472616e7366657220746f20746865207a65726f2061646472657373", "id": 43188, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "7695:37:19", "typeDescriptions": { "typeIdentifier": "t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f", "typeString": "literal_string \"ERC20: transfer to the zero address\"" }, "value": "ERC20: transfer to the zero address" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f", "typeString": "literal_string \"ERC20: transfer to the zero address\"" } ], "id": 43181, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "7669:7:19", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 43189, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7669:64:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 43190, "nodeType": "ExpressionStatement", "src": "7669:64:19" }, { "expression": { "arguments": [ { "id": 43192, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43164, "src": "7765:4:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 43193, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43166, "src": "7771:2:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 43194, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43168, "src": "7775:6: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": 43191, "name": "_beforeTokenTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43466, "src": "7744:20:19", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 43195, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7744:38:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 43196, "nodeType": "ExpressionStatement", "src": "7744:38:19" }, { "assignments": [ 43198 ], "declarations": [ { "constant": false, "id": 43198, "mutability": "mutable", "name": "fromBalance", "nameLocation": "7801:11:19", "nodeType": "VariableDeclaration", "scope": 43237, "src": "7793:19:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 43197, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7793:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "id": 43202, "initialValue": { "baseExpression": { "id": 43199, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 42907, "src": "7815:9:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 43201, "indexExpression": { "id": 43200, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43164, "src": "7825:4:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "7815:15:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "7793:37:19" }, { "expression": { "arguments": [ { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 43206, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 43204, "name": "fromBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43198, "src": "7848:11:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": { "id": 43205, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43168, "src": "7863:6:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "7848:21:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365", "id": 43207, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "7871:40:19", "typeDescriptions": { "typeIdentifier": "t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6", "typeString": "literal_string \"ERC20: transfer amount exceeds balance\"" }, "value": "ERC20: transfer amount exceeds balance" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6", "typeString": "literal_string \"ERC20: transfer amount exceeds balance\"" } ], "id": 43203, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "7840:7:19", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 43208, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7840:72:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 43209, "nodeType": "ExpressionStatement", "src": "7840:72:19" }, { "id": 43224, "nodeType": "UncheckedBlock", "src": "7922:273:19", "statements": [ { "expression": { "id": 43216, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { "id": 43210, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 42907, "src": "7946:9:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 43212, "indexExpression": { "id": 43211, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43164, "src": "7956:4:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "7946:15:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 43215, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 43213, "name": "fromBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43198, "src": "7964:11:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "id": 43214, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43168, "src": "7978:6:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "7964:20:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "7946:38:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 43217, "nodeType": "ExpressionStatement", "src": "7946:38:19" }, { "expression": { "id": 43222, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { "id": 43218, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 42907, "src": "8161:9:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 43220, "indexExpression": { "id": 43219, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43166, "src": "8171:2:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "8161:13:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "+=", "rightHandSide": { "id": 43221, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43168, "src": "8178:6:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "8161:23:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 43223, "nodeType": "ExpressionStatement", "src": "8161:23:19" } ] }, { "eventCall": { "arguments": [ { "id": 43226, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43164, "src": "8219:4:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 43227, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43166, "src": "8225:2:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 43228, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43168, "src": "8229:6: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": 43225, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43490, "src": "8210:8:19", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 43229, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8210:26:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 43230, "nodeType": "EmitStatement", "src": "8205:31:19" }, { "expression": { "arguments": [ { "id": 43232, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43164, "src": "8267:4:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 43233, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43166, "src": "8273:2:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 43234, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43168, "src": "8277:6: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": 43231, "name": "_afterTokenTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43477, "src": "8247:19:19", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 43235, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8247:37:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 43236, "nodeType": "ExpressionStatement", "src": "8247:37:19" } ] }, "documentation": { "id": 43162, "nodeType": "StructuredDocumentation", "src": "7025:443:19", "text": " @dev Moves `amount` of tokens from `from` to `to`.\n This internal function is equivalent to {transfer}, and can be used to\n e.g. implement automatic token fees, slashing mechanisms, etc.\n Emits a {Transfer} event.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `from` must have a balance of at least `amount`." }, "implemented": true, "kind": "function", "modifiers": [], "name": "_transfer", "nameLocation": "7482:9:19", "parameters": { "id": 43169, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 43164, "mutability": "mutable", "name": "from", "nameLocation": "7509:4:19", "nodeType": "VariableDeclaration", "scope": 43238, "src": "7501:12:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 43163, "name": "address", "nodeType": "ElementaryTypeName", "src": "7501:7:19", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 43166, "mutability": "mutable", "name": "to", "nameLocation": "7531:2:19", "nodeType": "VariableDeclaration", "scope": 43238, "src": "7523:10:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 43165, "name": "address", "nodeType": "ElementaryTypeName", "src": "7523:7:19", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 43168, "mutability": "mutable", "name": "amount", "nameLocation": "7551:6:19", "nodeType": "VariableDeclaration", "scope": 43238, "src": "7543:14:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 43167, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7543:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "7491:72:19" }, "returnParameters": { "id": 43170, "nodeType": "ParameterList", "parameters": [], "src": "7581:0:19" }, "scope": 43478, "stateMutability": "nonpayable", "virtual": true, "visibility": "internal" }, { "id": 43295, "nodeType": "FunctionDefinition", "src": "8567:535:19", "nodes": [], "body": { "id": 43294, "nodeType": "Block", "src": "8632:470:19", "nodes": [], "statements": [ { "expression": { "arguments": [ { "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 43252, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 43247, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43241, "src": "8650:7:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "arguments": [ { "hexValue": "30", "id": 43250, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8669:1:19", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 43249, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8661:7:19", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 43248, "name": "address", "nodeType": "ElementaryTypeName", "src": "8661:7:19", "typeDescriptions": {} } }, "id": 43251, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8661:10:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "8650:21:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "45524332303a206d696e7420746f20746865207a65726f2061646472657373", "id": 43253, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "8673:33:19", "typeDescriptions": { "typeIdentifier": "t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e", "typeString": "literal_string \"ERC20: mint to the zero address\"" }, "value": "ERC20: mint to the zero address" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e", "typeString": "literal_string \"ERC20: mint to the zero address\"" } ], "id": 43246, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "8642:7:19", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 43254, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8642:65:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 43255, "nodeType": "ExpressionStatement", "src": "8642:65:19" }, { "expression": { "arguments": [ { "arguments": [ { "hexValue": "30", "id": 43259, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8747:1:19", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 43258, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8739:7:19", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 43257, "name": "address", "nodeType": "ElementaryTypeName", "src": "8739:7:19", "typeDescriptions": {} } }, "id": 43260, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8739:10:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 43261, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43241, "src": "8751:7:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 43262, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43243, "src": "8760:6: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": 43256, "name": "_beforeTokenTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43466, "src": "8718:20:19", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 43263, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8718:49:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 43264, "nodeType": "ExpressionStatement", "src": "8718:49:19" }, { "expression": { "id": 43267, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 43265, "name": "_totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 42915, "src": "8778:12:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "+=", "rightHandSide": { "id": 43266, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43243, "src": "8794:6:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "8778:22:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 43268, "nodeType": "ExpressionStatement", "src": "8778:22:19" }, { "id": 43275, "nodeType": "UncheckedBlock", "src": "8810:175:19", "statements": [ { "expression": { "id": 43273, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { "id": 43269, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 42907, "src": "8946:9:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 43271, "indexExpression": { "id": 43270, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43241, "src": "8956:7:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "8946:18:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "+=", "rightHandSide": { "id": 43272, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43243, "src": "8968:6:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "8946:28:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 43274, "nodeType": "ExpressionStatement", "src": "8946:28:19" } ] }, { "eventCall": { "arguments": [ { "arguments": [ { "hexValue": "30", "id": 43279, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9016:1:19", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 43278, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9008:7:19", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 43277, "name": "address", "nodeType": "ElementaryTypeName", "src": "9008:7:19", "typeDescriptions": {} } }, "id": 43280, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9008:10:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 43281, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43241, "src": "9020:7:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 43282, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43243, "src": "9029:6: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": 43276, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43490, "src": "8999:8:19", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 43283, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "8999:37:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 43284, "nodeType": "EmitStatement", "src": "8994:42:19" }, { "expression": { "arguments": [ { "arguments": [ { "hexValue": "30", "id": 43288, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9075:1:19", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 43287, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9067:7:19", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 43286, "name": "address", "nodeType": "ElementaryTypeName", "src": "9067:7:19", "typeDescriptions": {} } }, "id": 43289, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9067:10:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 43290, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43241, "src": "9079:7:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 43291, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43243, "src": "9088:6: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": 43285, "name": "_afterTokenTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43477, "src": "9047:19:19", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 43292, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9047:48:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 43293, "nodeType": "ExpressionStatement", "src": "9047:48:19" } ] }, "documentation": { "id": 43239, "nodeType": "StructuredDocumentation", "src": "8297:265:19", "text": "@dev Creates `amount` tokens and assigns them to `account`, increasing\n the total supply.\n Emits a {Transfer} event with `from` set to the zero address.\n Requirements:\n - `account` cannot be the zero address." }, "implemented": true, "kind": "function", "modifiers": [], "name": "_mint", "nameLocation": "8576:5:19", "parameters": { "id": 43244, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 43241, "mutability": "mutable", "name": "account", "nameLocation": "8590:7:19", "nodeType": "VariableDeclaration", "scope": 43295, "src": "8582:15:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 43240, "name": "address", "nodeType": "ElementaryTypeName", "src": "8582:7:19", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 43243, "mutability": "mutable", "name": "amount", "nameLocation": "8607:6:19", "nodeType": "VariableDeclaration", "scope": 43295, "src": "8599:14:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 43242, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8599:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "8581:33:19" }, "returnParameters": { "id": 43245, "nodeType": "ParameterList", "parameters": [], "src": "8632:0:19" }, "scope": 43478, "stateMutability": "nonpayable", "virtual": true, "visibility": "internal" }, { "id": 43367, "nodeType": "FunctionDefinition", "src": "9422:659:19", "nodes": [], "body": { "id": 43366, "nodeType": "Block", "src": "9487:594:19", "nodes": [], "statements": [ { "expression": { "arguments": [ { "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 43309, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 43304, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43298, "src": "9505:7:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "arguments": [ { "hexValue": "30", "id": 43307, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9524:1:19", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 43306, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9516:7:19", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 43305, "name": "address", "nodeType": "ElementaryTypeName", "src": "9516:7:19", "typeDescriptions": {} } }, "id": 43308, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9516:10:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "9505:21:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "45524332303a206275726e2066726f6d20746865207a65726f2061646472657373", "id": 43310, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "9528:35:19", "typeDescriptions": { "typeIdentifier": "t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f", "typeString": "literal_string \"ERC20: burn from the zero address\"" }, "value": "ERC20: burn from the zero address" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f", "typeString": "literal_string \"ERC20: burn from the zero address\"" } ], "id": 43303, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "9497:7:19", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 43311, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9497:67:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 43312, "nodeType": "ExpressionStatement", "src": "9497:67:19" }, { "expression": { "arguments": [ { "id": 43314, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43298, "src": "9596:7:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "arguments": [ { "hexValue": "30", "id": 43317, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9613:1:19", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 43316, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9605:7:19", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 43315, "name": "address", "nodeType": "ElementaryTypeName", "src": "9605:7:19", "typeDescriptions": {} } }, "id": 43318, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9605:10:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 43319, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43300, "src": "9617:6: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": 43313, "name": "_beforeTokenTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43466, "src": "9575:20:19", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 43320, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9575:49:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 43321, "nodeType": "ExpressionStatement", "src": "9575:49:19" }, { "assignments": [ 43323 ], "declarations": [ { "constant": false, "id": 43323, "mutability": "mutable", "name": "accountBalance", "nameLocation": "9643:14:19", "nodeType": "VariableDeclaration", "scope": 43366, "src": "9635:22:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 43322, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "9635:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "id": 43327, "initialValue": { "baseExpression": { "id": 43324, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 42907, "src": "9660:9:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 43326, "indexExpression": { "id": 43325, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43298, "src": "9670:7:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "9660:18:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "9635:43:19" }, { "expression": { "arguments": [ { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 43331, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 43329, "name": "accountBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43323, "src": "9696:14:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": { "id": 43330, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43300, "src": "9714:6:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "9696:24:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365", "id": 43332, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "9722:36:19", "typeDescriptions": { "typeIdentifier": "t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd", "typeString": "literal_string \"ERC20: burn amount exceeds balance\"" }, "value": "ERC20: burn amount exceeds balance" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd", "typeString": "literal_string \"ERC20: burn amount exceeds balance\"" } ], "id": 43328, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "9688:7:19", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 43333, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9688:71:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 43334, "nodeType": "ExpressionStatement", "src": "9688:71:19" }, { "id": 43347, "nodeType": "UncheckedBlock", "src": "9769:194:19", "statements": [ { "expression": { "id": 43341, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { "id": 43335, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 42907, "src": "9793:9:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 43337, "indexExpression": { "id": 43336, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43298, "src": "9803:7:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "9793:18:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 43340, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 43338, "name": "accountBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43323, "src": "9814:14:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "id": 43339, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43300, "src": "9831:6:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "9814:23:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "9793:44:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 43342, "nodeType": "ExpressionStatement", "src": "9793:44:19" }, { "expression": { "id": 43345, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 43343, "name": "_totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 42915, "src": "9930:12:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "-=", "rightHandSide": { "id": 43344, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43300, "src": "9946:6:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "9930:22:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 43346, "nodeType": "ExpressionStatement", "src": "9930:22:19" } ] }, { "eventCall": { "arguments": [ { "id": 43349, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43298, "src": "9987:7:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "arguments": [ { "hexValue": "30", "id": 43352, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10004:1:19", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 43351, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9996:7:19", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 43350, "name": "address", "nodeType": "ElementaryTypeName", "src": "9996:7:19", "typeDescriptions": {} } }, "id": 43353, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9996:10:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 43354, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43300, "src": "10008:6: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": 43348, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43490, "src": "9978:8:19", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 43355, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "9978:37:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 43356, "nodeType": "EmitStatement", "src": "9973:42:19" }, { "expression": { "arguments": [ { "id": 43358, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43298, "src": "10046:7:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "arguments": [ { "hexValue": "30", "id": 43361, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10063:1:19", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 43360, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "10055:7:19", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 43359, "name": "address", "nodeType": "ElementaryTypeName", "src": "10055:7:19", "typeDescriptions": {} } }, "id": 43362, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10055:10:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 43363, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43300, "src": "10067:6: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": 43357, "name": "_afterTokenTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43477, "src": "10026:19:19", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 43364, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10026:48:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 43365, "nodeType": "ExpressionStatement", "src": "10026:48:19" } ] }, "documentation": { "id": 43296, "nodeType": "StructuredDocumentation", "src": "9108:309:19", "text": " @dev Destroys `amount` tokens from `account`, reducing the\n total supply.\n Emits a {Transfer} event with `to` set to the zero address.\n Requirements:\n - `account` cannot be the zero address.\n - `account` must have at least `amount` tokens." }, "implemented": true, "kind": "function", "modifiers": [], "name": "_burn", "nameLocation": "9431:5:19", "parameters": { "id": 43301, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 43298, "mutability": "mutable", "name": "account", "nameLocation": "9445:7:19", "nodeType": "VariableDeclaration", "scope": 43367, "src": "9437:15:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 43297, "name": "address", "nodeType": "ElementaryTypeName", "src": "9437:7:19", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 43300, "mutability": "mutable", "name": "amount", "nameLocation": "9462:6:19", "nodeType": "VariableDeclaration", "scope": 43367, "src": "9454:14:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 43299, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "9454:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "9436:33:19" }, "returnParameters": { "id": 43302, "nodeType": "ParameterList", "parameters": [], "src": "9487:0:19" }, "scope": 43478, "stateMutability": "nonpayable", "virtual": true, "visibility": "internal" }, { "id": 43412, "nodeType": "FunctionDefinition", "src": "10504:370:19", "nodes": [], "body": { "id": 43411, "nodeType": "Block", "src": "10617:257:19", "nodes": [], "statements": [ { "expression": { "arguments": [ { "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 43383, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 43378, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43370, "src": "10635:5:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "arguments": [ { "hexValue": "30", "id": 43381, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10652:1:19", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 43380, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "10644:7:19", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 43379, "name": "address", "nodeType": "ElementaryTypeName", "src": "10644:7:19", "typeDescriptions": {} } }, "id": 43382, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10644:10:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "10635:19:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "45524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373", "id": 43384, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "10656:38:19", "typeDescriptions": { "typeIdentifier": "t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208", "typeString": "literal_string \"ERC20: approve from the zero address\"" }, "value": "ERC20: approve from the zero address" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208", "typeString": "literal_string \"ERC20: approve from the zero address\"" } ], "id": 43377, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "10627:7:19", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 43385, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10627:68:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 43386, "nodeType": "ExpressionStatement", "src": "10627:68:19" }, { "expression": { "arguments": [ { "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 43393, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 43388, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43372, "src": "10713:7:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "arguments": [ { "hexValue": "30", "id": 43391, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10732:1:19", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 43390, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "10724:7:19", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 43389, "name": "address", "nodeType": "ElementaryTypeName", "src": "10724:7:19", "typeDescriptions": {} } }, "id": 43392, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10724:10:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "10713:21:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "45524332303a20617070726f766520746f20746865207a65726f2061646472657373", "id": 43394, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "10736:36:19", "typeDescriptions": { "typeIdentifier": "t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029", "typeString": "literal_string \"ERC20: approve to the zero address\"" }, "value": "ERC20: approve to the zero address" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029", "typeString": "literal_string \"ERC20: approve to the zero address\"" } ], "id": 43387, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "10705:7:19", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 43395, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10705:68:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 43396, "nodeType": "ExpressionStatement", "src": "10705:68:19" }, { "expression": { "id": 43403, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { "baseExpression": { "id": 43397, "name": "_allowances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 42913, "src": "10784:11:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, "id": 43400, "indexExpression": { "id": 43398, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43370, "src": "10796:5:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "10784:18:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 43401, "indexExpression": { "id": 43399, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43372, "src": "10803:7:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "10784:27:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "id": 43402, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43374, "src": "10814:6:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "10784:36:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 43404, "nodeType": "ExpressionStatement", "src": "10784:36:19" }, { "eventCall": { "arguments": [ { "id": 43406, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43370, "src": "10844:5:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 43407, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43372, "src": "10851:7:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 43408, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43374, "src": "10860:6: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": 43405, "name": "Approval", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43499, "src": "10835:8:19", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 43409, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "10835:32:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 43410, "nodeType": "EmitStatement", "src": "10830:37:19" } ] }, "documentation": { "id": 43368, "nodeType": "StructuredDocumentation", "src": "10087:412:19", "text": " @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\n This internal function is equivalent to `approve`, and can be used to\n e.g. set automatic allowances for certain subsystems, etc.\n Emits an {Approval} event.\n Requirements:\n - `owner` cannot be the zero address.\n - `spender` cannot be the zero address." }, "implemented": true, "kind": "function", "modifiers": [], "name": "_approve", "nameLocation": "10513:8:19", "parameters": { "id": 43375, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 43370, "mutability": "mutable", "name": "owner", "nameLocation": "10539:5:19", "nodeType": "VariableDeclaration", "scope": 43412, "src": "10531:13:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 43369, "name": "address", "nodeType": "ElementaryTypeName", "src": "10531:7:19", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 43372, "mutability": "mutable", "name": "spender", "nameLocation": "10562:7:19", "nodeType": "VariableDeclaration", "scope": 43412, "src": "10554:15:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 43371, "name": "address", "nodeType": "ElementaryTypeName", "src": "10554:7:19", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 43374, "mutability": "mutable", "name": "amount", "nameLocation": "10587:6:19", "nodeType": "VariableDeclaration", "scope": 43412, "src": "10579:14:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 43373, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10579:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "10521:78:19" }, "returnParameters": { "id": 43376, "nodeType": "ParameterList", "parameters": [], "src": "10617:0:19" }, "scope": 43478, "stateMutability": "nonpayable", "virtual": true, "visibility": "internal" }, { "id": 43455, "nodeType": "FunctionDefinition", "src": "11155:441:19", "nodes": [], "body": { "id": 43454, "nodeType": "Block", "src": "11275:321:19", "nodes": [], "statements": [ { "assignments": [ 43423 ], "declarations": [ { "constant": false, "id": 43423, "mutability": "mutable", "name": "currentAllowance", "nameLocation": "11293:16:19", "nodeType": "VariableDeclaration", "scope": 43454, "src": "11285:24:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 43422, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "11285:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "id": 43428, "initialValue": { "arguments": [ { "id": 43425, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43415, "src": "11322:5:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 43426, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43417, "src": "11329:7:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 43424, "name": "allowance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43033, "src": "11312:9:19", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (address,address) view returns (uint256)" } }, "id": 43427, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11312:25:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "11285:52:19" }, { "condition": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 43435, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 43429, "name": "currentAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43423, "src": "11351:16:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "expression": { "arguments": [ { "id": 43432, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "11376:7:19", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { "id": 43431, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "11376:7:19", "typeDescriptions": {} } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" } ], "id": 43430, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "11371:4:19", "typeDescriptions": { "typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure" } }, "id": 43433, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11371:13:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_magic_meta_type_t_uint256", "typeString": "type(uint256)" } }, "id": 43434, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "11385:3:19", "memberName": "max", "nodeType": "MemberAccess", "src": "11371:17:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "11351:37:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 43453, "nodeType": "IfStatement", "src": "11347:243:19", "trueBody": { "id": 43452, "nodeType": "Block", "src": "11390:200:19", "statements": [ { "expression": { "arguments": [ { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 43439, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 43437, "name": "currentAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43423, "src": "11412:16:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": { "id": 43438, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43419, "src": "11432:6:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "11412:26:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "45524332303a20696e73756666696369656e7420616c6c6f77616e6365", "id": 43440, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "11440:31:19", "typeDescriptions": { "typeIdentifier": "t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe", "typeString": "literal_string \"ERC20: insufficient allowance\"" }, "value": "ERC20: insufficient allowance" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe", "typeString": "literal_string \"ERC20: insufficient allowance\"" } ], "id": 43436, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "11404:7:19", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 43441, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11404:68:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 43442, "nodeType": "ExpressionStatement", "src": "11404:68:19" }, { "id": 43451, "nodeType": "UncheckedBlock", "src": "11486:94:19", "statements": [ { "expression": { "arguments": [ { "id": 43444, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43415, "src": "11523:5:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 43445, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43417, "src": "11530:7:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 43448, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 43446, "name": "currentAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43423, "src": "11539:16:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "id": 43447, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43419, "src": "11558:6:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "11539:25: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": 43443, "name": "_approve", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43412, "src": "11514:8:19", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 43449, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "11514:51:19", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 43450, "nodeType": "ExpressionStatement", "src": "11514:51:19" } ] } ] } } ] }, "documentation": { "id": 43413, "nodeType": "StructuredDocumentation", "src": "10880:270:19", "text": " @dev Updates `owner` s allowance for `spender` based on spent `amount`.\n Does not update the allowance amount in case of infinite allowance.\n Revert if not enough allowance is available.\n Might emit an {Approval} event." }, "implemented": true, "kind": "function", "modifiers": [], "name": "_spendAllowance", "nameLocation": "11164:15:19", "parameters": { "id": 43420, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 43415, "mutability": "mutable", "name": "owner", "nameLocation": "11197:5:19", "nodeType": "VariableDeclaration", "scope": 43455, "src": "11189:13:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 43414, "name": "address", "nodeType": "ElementaryTypeName", "src": "11189:7:19", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 43417, "mutability": "mutable", "name": "spender", "nameLocation": "11220:7:19", "nodeType": "VariableDeclaration", "scope": 43455, "src": "11212:15:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 43416, "name": "address", "nodeType": "ElementaryTypeName", "src": "11212:7:19", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 43419, "mutability": "mutable", "name": "amount", "nameLocation": "11245:6:19", "nodeType": "VariableDeclaration", "scope": 43455, "src": "11237:14:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 43418, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "11237:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "11179:78:19" }, "returnParameters": { "id": 43421, "nodeType": "ParameterList", "parameters": [], "src": "11275:0:19" }, "scope": 43478, "stateMutability": "nonpayable", "virtual": true, "visibility": "internal" }, { "id": 43466, "nodeType": "FunctionDefinition", "src": "12180:121:19", "nodes": [], "body": { "id": 43465, "nodeType": "Block", "src": "12299:2:19", "nodes": [], "statements": [] }, "documentation": { "id": 43456, "nodeType": "StructuredDocumentation", "src": "11602:573:19", "text": " @dev Hook that is called before any transfer of tokens. This includes\n minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n will be transferred to `to`.\n - when `from` is zero, `amount` tokens will be minted for `to`.\n - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]." }, "implemented": true, "kind": "function", "modifiers": [], "name": "_beforeTokenTransfer", "nameLocation": "12189:20:19", "parameters": { "id": 43463, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 43458, "mutability": "mutable", "name": "from", "nameLocation": "12227:4:19", "nodeType": "VariableDeclaration", "scope": 43466, "src": "12219:12:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 43457, "name": "address", "nodeType": "ElementaryTypeName", "src": "12219:7:19", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 43460, "mutability": "mutable", "name": "to", "nameLocation": "12249:2:19", "nodeType": "VariableDeclaration", "scope": 43466, "src": "12241:10:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 43459, "name": "address", "nodeType": "ElementaryTypeName", "src": "12241:7:19", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 43462, "mutability": "mutable", "name": "amount", "nameLocation": "12269:6:19", "nodeType": "VariableDeclaration", "scope": 43466, "src": "12261:14:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 43461, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "12261:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "12209:72:19" }, "returnParameters": { "id": 43464, "nodeType": "ParameterList", "parameters": [], "src": "12299:0:19" }, "scope": 43478, "stateMutability": "nonpayable", "virtual": true, "visibility": "internal" }, { "id": 43477, "nodeType": "FunctionDefinition", "src": "12889:120:19", "nodes": [], "body": { "id": 43476, "nodeType": "Block", "src": "13007:2:19", "nodes": [], "statements": [] }, "documentation": { "id": 43467, "nodeType": "StructuredDocumentation", "src": "12307:577:19", "text": " @dev Hook that is called after any transfer of tokens. This includes\n minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n has been transferred to `to`.\n - when `from` is zero, `amount` tokens have been minted for `to`.\n - when `to` is zero, `amount` of ``from``'s tokens have been burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]." }, "implemented": true, "kind": "function", "modifiers": [], "name": "_afterTokenTransfer", "nameLocation": "12898:19:19", "parameters": { "id": 43474, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 43469, "mutability": "mutable", "name": "from", "nameLocation": "12935:4:19", "nodeType": "VariableDeclaration", "scope": 43477, "src": "12927:12:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 43468, "name": "address", "nodeType": "ElementaryTypeName", "src": "12927:7:19", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 43471, "mutability": "mutable", "name": "to", "nameLocation": "12957:2:19", "nodeType": "VariableDeclaration", "scope": 43477, "src": "12949:10:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 43470, "name": "address", "nodeType": "ElementaryTypeName", "src": "12949:7:19", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 43473, "mutability": "mutable", "name": "amount", "nameLocation": "12977:6:19", "nodeType": "VariableDeclaration", "scope": 43477, "src": "12969:14:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 43472, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "12969:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "12917:72:19" }, "returnParameters": { "id": 43475, "nodeType": "ParameterList", "parameters": [], "src": "13007:0:19" }, "scope": 43478, "stateMutability": "nonpayable", "virtual": true, "visibility": "internal" } ], "abstract": false, "baseContracts": [ { "baseName": { "id": 42898, "name": "Context", "nameLocations": [ "1419:7:19" ], "nodeType": "IdentifierPath", "referencedDeclaration": 43777, "src": "1419:7:19" }, "id": 42899, "nodeType": "InheritanceSpecifier", "src": "1419:7:19" }, { "baseName": { "id": 42900, "name": "IERC20", "nameLocations": [ "1428:6:19" ], "nodeType": "IdentifierPath", "referencedDeclaration": 43556, "src": "1428:6:19" }, "id": 42901, "nodeType": "InheritanceSpecifier", "src": "1428:6:19" }, { "baseName": { "id": 42902, "name": "IERC20Metadata", "nameLocations": [ "1436:14:19" ], "nodeType": "IdentifierPath", "referencedDeclaration": 43581, "src": "1436:14:19" }, "id": 42903, "nodeType": "InheritanceSpecifier", "src": "1436:14:19" } ], "canonicalName": "ERC20", "contractDependencies": [], "contractKind": "contract", "documentation": { "id": 42897, "nodeType": "StructuredDocumentation", "src": "230:1170:19", "text": " @dev Implementation of the {IERC20} interface.\n This implementation is agnostic to the way tokens are created. This means\n that a supply mechanism has to be added in a derived contract using {_mint}.\n For a generic mechanism see {ERC20PresetMinterPauser}.\n TIP: For a detailed writeup see our guide\n https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n to implement supply mechanisms].\n We have followed general OpenZeppelin Contracts guidelines: functions revert\n instead returning `false` on failure. This behavior is nonetheless\n conventional and does not conflict with the expectations of ERC20\n applications.\n Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n This allows applications to reconstruct the allowance for all accounts just\n by listening to said events. Other implementations of the EIP may not emit\n these events, as it isn't required by the specification.\n Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n functions have been added to mitigate the well-known issues around setting\n allowances. See {IERC20-approve}." }, "fullyImplemented": true, "linearizedBaseContracts": [ 43478, 43581, 43556, 43777 ], "name": "ERC20", "nameLocation": "1410:5:19", "scope": 43479, "usedErrors": [], "usedEvents": [ 43490, 43499 ] } ], "license": "MIT" }, "id": 19 }