Overview
Max Total Supply
900,000 DFF
Holders
167 (0.00%)
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 8 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
DeFiFirefly
Compiler Version
v0.5.13+commit.5b0b510c
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-09-04 */ pragma solidity 0.5.13; interface Callable { function tokenCallback(address _from, uint256 _tokens, bytes calldata _data) external returns (bool); } contract DeFiFirefly { uint256 constant public INITIAL_SUPPLY = 9e13; // 900,000 uint256 public unallocatedEth; uint256 id; mapping(uint256 => address) idToAddress; mapping(address => bool) isUser; string constant public name = "Defi Firefly"; string constant public symbol = "DFF"; uint8 constant public decimals = 8; struct User { uint256 balance; uint256 staked; mapping(address => uint256) allowance; uint256 dividend; uint256 totalEarned; uint256 stakeTimestamp; } struct Info { uint256 totalSupply; uint256 totalStaked; mapping(address => User) users; address admin; } Info public info; event Transfer(address indexed from, address indexed to, uint256 tokens); event Approval(address indexed owner, address indexed spender, uint256 tokens); event Stake(address indexed owner, uint256 tokens); event Unstake(address indexed owner, uint256 tokens); event Collect(address indexed owner, uint256 amount); event Fee(uint256 tokens); event POOLDDIVIDENDCALCULATE(uint256 totalStaked, uint256 amount,uint256 sharePerToken,uint256 eligibleMembers, uint256 totalDistributed); constructor() public { info.admin = msg.sender; info.totalSupply = INITIAL_SUPPLY; info.users[msg.sender].balance = INITIAL_SUPPLY; emit Transfer(address(0x0), msg.sender, INITIAL_SUPPLY); id =0; idToAddress[id] = msg.sender; isUser[msg.sender] = true; id++; } function stake(uint256 _tokens) external { _stake(_tokens); } function unstake(uint256 _tokens) external { _unstake(_tokens); } function collectDividend() public returns (uint256) { uint256 _dividends = dividendsOf(msg.sender); require(_dividends >= 0, "no dividends to recieve"); address(uint160(msg.sender)).transfer(_dividends); emit Collect(msg.sender, _dividends); info.users[msg.sender].dividend = 0; info.users[msg.sender].totalEarned += _dividends; return _dividends; } function sendDividend() external payable onlyAdmin returns(uint256){ unallocatedEth += msg.value; return unallocatedEth; } function distribute() external onlyAdmin { require(info.totalStaked > 0,"no stakers to distribute"); require(address(this).balance > 0, "no dividend to distribute"); uint256 share; uint256 count; uint256 distributed; share = div(unallocatedEth, div(info.totalStaked,1e8,"division error"),"invaid holding supply" ); for(uint256 i=1; i<id; i++){ if(stakedOf(idToAddress[i]) >0){ info.users[idToAddress[i]].dividend += mul(share, div(stakedOf(idToAddress[i]),1e8,"division error")); distributed += mul(share, div(stakedOf(idToAddress[i]),1e8,"division error")); count++; } } emit POOLDDIVIDENDCALCULATE(info.totalStaked, unallocatedEth, share, count, distributed); address(uint160(info.admin)).transfer(unallocatedEth - distributed); if(share > 0){ unallocatedEth = 0; } } function transfer(address _to, uint256 _tokens) external returns (bool) { _transfer(msg.sender, _to, _tokens); return true; } function approve(address _spender, uint256 _tokens) external returns (bool) { info.users[msg.sender].allowance[_spender] = _tokens; emit Approval(msg.sender, _spender, _tokens); return true; } function transferFrom(address _from, address _to, uint256 _tokens) external returns (bool) { require(info.users[_from].allowance[msg.sender] >= _tokens); info.users[_from].allowance[msg.sender] -= _tokens; _transfer(_from, _to, _tokens); return true; } function transferAndCall(address _to, uint256 _tokens, bytes calldata _data) external returns (bool) { uint256 _transferred = _transfer(msg.sender, _to, _tokens); uint32 _size; assembly { _size := extcodesize(_to) } if (_size > 0) { require(Callable(_to).tokenCallback(msg.sender, _transferred, _data)); } return true; } function bulkTransfer(address[] calldata _receivers, uint256[] calldata _amounts) external { require(_receivers.length == _amounts.length); for (uint256 i = 0; i < _receivers.length; i++) { _transfer(msg.sender, _receivers[i], _amounts[i]); } } function totalSupply() public view returns (uint256) { return info.totalSupply; } function totalStaked() public view returns (uint256) { return info.totalStaked; } function balanceOf(address _user) public view returns (uint256) { return info.users[_user].balance - stakedOf(_user); } function stakedOf(address _user) public view returns (uint256) { return info.users[_user].staked; } function dividendsOf(address _user) public view returns (uint256) { return info.users[_user].dividend; } function allowance(address _user, address _spender) public view returns (uint256) { return info.users[_user].allowance[_spender]; } function userTotalEarned(address _user) public view returns(uint256){ return info.users[_user].totalEarned; } modifier onlyAdmin(){ require(msg.sender == info.admin,"only admin can change transaction fee "); _; } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function allInfoFor(address _user) public view returns (uint256 userBalance, uint256 userStaked, uint256 userDividends,uint256 totalEarned) { return ( balanceOf(_user), stakedOf(_user), dividendsOf(_user),userTotalEarned(_user)); } function _transfer(address _from, address _to, uint256 _tokens) internal returns (uint256) { require(balanceOf(_from) >= _tokens, "insufficient funds"); if(!isUser[_to]){ idToAddress[id] = _to; isUser[_to] = true; id++; } info.users[_from].balance -= _tokens; info.users[_to].balance += _tokens; emit Transfer(_from, _to, _tokens); return _tokens; } function _stake(uint256 _amount) internal { require(balanceOf(msg.sender) >= _amount, "insufficient funds"); info.totalStaked += _amount; info.users[msg.sender].staked += _amount; info.users[msg.sender].stakeTimestamp = now; emit Transfer(msg.sender, address(this), _amount); emit Stake(msg.sender, _amount); } function _unstake(uint256 _amount) internal { require(stakedOf(msg.sender) >= _amount,"user stake already 0"); require(info.users[msg.sender].stakeTimestamp + 24 hours <= now,"must wait 24 hours before unstaking"); if(dividendsOf(msg.sender)>0){ collectDividend(); } info.totalStaked -= _amount; info.users[msg.sender].staked -= _amount; emit Unstake(msg.sender, _amount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"payable":false,"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":"tokens","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Collect","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"Fee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"totalStaked","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sharePerToken","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"eligibleMembers","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalDistributed","type":"uint256"}],"name":"POOLDDIVIDENDCALCULATE","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"Stake","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":"tokens","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"Unstake","type":"event"},{"constant":true,"inputs":[],"name":"INITIAL_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"allInfoFor","outputs":[{"internalType":"uint256","name":"userBalance","type":"uint256"},{"internalType":"uint256","name":"userStaked","type":"uint256"},{"internalType":"uint256","name":"userDividends","type":"uint256"},{"internalType":"uint256","name":"totalEarned","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"address","name":"_spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_tokens","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address[]","name":"_receivers","type":"address[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"name":"bulkTransfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"collectDividend","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"distribute","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"dividendsOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"info","outputs":[{"internalType":"uint256","name":"totalSupply","type":"uint256"},{"internalType":"uint256","name":"totalStaked","type":"uint256"},{"internalType":"address","name":"admin","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"sendDividend","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_tokens","type":"uint256"}],"name":"stake","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"stakedOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalStaked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokens","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokens","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"transferAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokens","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"unallocatedEth","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_tokens","type":"uint256"}],"name":"unstake","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"userTotalEarned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b5033600460030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506551dac207a0006004600001819055506551dac207a000600460020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6551dac207a0006040518082815260200191505060405180910390a360006001819055503360026000600154815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016000815480929190600101919050555061213e806101f66000396000f3fe60806040526004361061014a5760003560e01c806370a08231116100b6578063a98325b61161006f578063a98325b6146108c1578063af500ba3146108ec578063c678e61814610951578063dd62ed3e1461096f578063e4fc6b6d146109f4578063ed6a2a8d14610a0b5761014a565b806370a082311461068e578063817b1cd2146106f35780638e6dbe881461071e57806395d89b4114610783578063a694fc3a14610813578063a9059cbb1461084e5761014a565b80632e17de78116101085780632e17de78146104505780632ff2e9dc1461048b578063313ce567146104b6578063370158ea146104e75780634000aea01461054c57806357f6b812146106145761014a565b806265318b1461014f57806306fdde03146101b4578063095ea7b314610244578063153a1f3e146102b757806318160ddd1461039257806323b872dd146103bd575b600080fd5b34801561015b57600080fd5b5061019e6004803603602081101561017257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a36565b6040518082815260200191505060405180910390f35b3480156101c057600080fd5b506101c9610a85565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102095780820151818401526020810190506101ee565b50505050905090810190601f1680156102365780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561025057600080fd5b5061029d6004803603604081101561026757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610abe565b604051808215151515815260200191505060405180910390f35b3480156102c357600080fd5b50610390600480360360408110156102da57600080fd5b81019080803590602001906401000000008111156102f757600080fd5b82018360208201111561030957600080fd5b8035906020019184602083028401116401000000008311171561032b57600080fd5b90919293919293908035906020019064010000000081111561034c57600080fd5b82018360208201111561035e57600080fd5b8035906020019184602083028401116401000000008311171561038057600080fd5b9091929391929390505050610bb6565b005b34801561039e57600080fd5b506103a7610c33565b6040518082815260200191505060405180910390f35b3480156103c957600080fd5b50610436600480360360608110156103e057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c40565b604051808215151515815260200191505060405180910390f35b34801561045c57600080fd5b506104896004803603602081101561047357600080fd5b8101908080359060200190929190505050610d78565b005b34801561049757600080fd5b506104a0610d84565b6040518082815260200191505060405180910390f35b3480156104c257600080fd5b506104cb610d8e565b604051808260ff1660ff16815260200191505060405180910390f35b3480156104f357600080fd5b506104fc610d93565b604051808481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060405180910390f35b34801561055857600080fd5b506105fa6004803603606081101561056f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156105b657600080fd5b8201836020820111156105c857600080fd5b803590602001918460018302840111640100000000831117156105ea57600080fd5b9091929391929390505050610dcb565b604051808215151515815260200191505060405180910390f35b34801561062057600080fd5b506106636004803603602081101561063757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610efe565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b34801561069a57600080fd5b506106dd600480360360208110156106b157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f37565b6040518082815260200191505060405180910390f35b3480156106ff57600080fd5b50610708610f90565b6040518082815260200191505060405180910390f35b34801561072a57600080fd5b5061076d6004803603602081101561074157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f9d565b6040518082815260200191505060405180910390f35b34801561078f57600080fd5b50610798610fec565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107d85780820151818401526020810190506107bd565b50505050905090810190601f1680156108055780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561081f57600080fd5b5061084c6004803603602081101561083657600080fd5b8101908080359060200190929190505050611025565b005b34801561085a57600080fd5b506108a76004803603604081101561087157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611031565b604051808215151515815260200191505060405180910390f35b3480156108cd57600080fd5b506108d6611049565b6040518082815260200191505060405180910390f35b3480156108f857600080fd5b5061093b6004803603602081101561090f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611208565b6040518082815260200191505060405180910390f35b610959611257565b6040518082815260200191505060405180910390f35b34801561097b57600080fd5b506109de6004803603604081101561099257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611319565b6040518082815260200191505060405180910390f35b348015610a0057600080fd5b50610a096113a6565b005b348015610a1757600080fd5b50610a206118d1565b6040518082815260200191505060405180910390f35b6000600460020160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301549050919050565b6040518060400160405280600c81526020017f446566692046697265666c79000000000000000000000000000000000000000081525081565b600081600460020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b818190508484905014610bc857600080fd5b60008090505b84849050811015610c2c57610c1e33868684818110610be957fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16858585818110610c1257fe5b905060200201356118d7565b508080600101915050610bce565b5050505050565b6000600460000154905090565b600081600460020160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610cd157600080fd5b81600460020160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550610d6c8484846118d7565b50600190509392505050565b610d8181611b7c565b50565b6551dac207a00081565b600881565b60048060000154908060010154908060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905083565b600080610dd93387876118d7565b90506000863b905060008163ffffffff161115610ef0578673ffffffffffffffffffffffffffffffffffffffff16636be32e73338488886040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050602060405180830381600087803b158015610eab57600080fd5b505af1158015610ebf573d6000803e3d6000fd5b505050506040513d6020811015610ed557600080fd5b8101908080519060200190929190505050610eef57600080fd5b5b600192505050949350505050565b600080600080610f0d85610f37565b610f1686611208565b610f1f87610a36565b610f2888610f9d565b93509350935093509193509193565b6000610f4282611208565b600460020160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154039050919050565b6000600460010154905090565b6000600460020160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401549050919050565b6040518060400160405280600381526020017f444646000000000000000000000000000000000000000000000000000000000081525081565b61102e81611d6f565b50565b600061103e3384846118d7565b506001905092915050565b60008061105533610a36565b905060008110156110ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f6e6f206469766964656e647320746f207265636965766500000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611114573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff167f4256a058fa2b123d727576d3d31e3a272db98ee5fe264e229610ce43dc849999826040518082815260200191505060405180910390a26000600460020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003018190555080600460020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401600082825401925050819055508091505090565b6000600460020160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050919050565b6000600460030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611302576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806120a06026913960400191505060405180910390fd5b346000808282540192505081905550600054905090565b6000600460020160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600460030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461144f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806120a06026913960400191505060405180910390fd5b6000600460010154116114ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f6e6f207374616b65727320746f2064697374726962757465000000000000000081525060200191505060405180910390fd5b60003073ffffffffffffffffffffffffffffffffffffffff163111611557576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f6e6f206469766964656e6420746f20646973747269627574650000000000000081525060200191505060405180910390fd5b60008060006115e66000546115ab6004600101546305f5e1006040518060400160405280600e81526020017f6469766973696f6e206572726f72000000000000000000000000000000000000815250611f53565b6040518060400160405280601581526020017f696e7661696420686f6c64696e6720737570706c790000000000000000000000815250611f53565b92506000600190505b6001548110156117ec5760006116376002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611208565b11156117df576116c5846116c06116806002600086815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611208565b6305f5e1006040518060400160405280600e81526020017f6469766973696f6e206572726f72000000000000000000000000000000000000815250611f53565b612019565b600460020160006002600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301600082825401925050819055506117d2846117cd61178d6002600086815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611208565b6305f5e1006040518060400160405280600e81526020017f6469766973696f6e206572726f72000000000000000000000000000000000000815250611f53565b612019565b8201915082806001019350505b80806001019150506115ef565b507f635e0fca2664c9e1893ed1bccc47645ceda5e57b4f0d8f564df5c8a252d762ea600460010154600054858585604051808681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a1600460030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc82600054039081150290604051600060405180830381858888f193505050501580156118ba573d6000803e3d6000fd5b5060008311156118cc57600080819055505b505050565b60005481565b6000816118e385610f37565b1015611957576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f696e73756666696369656e742066756e6473000000000000000000000000000081525060200191505060405180910390fd5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611a67578260026000600154815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600081548092919060010191905055505b81600460020160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000828254039250508190555081600460020160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a38190509392505050565b80611b8633611208565b1015611bfa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f75736572207374616b6520616c7265616479203000000000000000000000000081525060200191505060405180910390fd5b4262015180600460020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050154011115611c9d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806120c66023913960400191505060405180910390fd5b6000611ca833610a36565b1115611cb857611cb6611049565b505b8060046001016000828254039250508190555080600460020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600082825403925050819055503373ffffffffffffffffffffffffffffffffffffffff167f85082129d87b2fe11527cb1b3b7a520aeb5aa6913f88a3d8757fe40d1db02fdd826040518082815260200191505060405180910390a250565b80611d7933610f37565b1015611ded576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f696e73756666696369656e742066756e6473000000000000000000000000000081525060200191505060405180910390fd5b8060046001016000828254019250508190555080600460020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000828254019250508190555042600460020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501819055503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a33373ffffffffffffffffffffffffffffffffffffffff167febedb8b3c678666e7f36970bc8f57abf6d8fa2e828c0da91ea5b75bf68ed101a826040518082815260200191505060405180910390a250565b60008083118290611fff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611fc4578082015181840152602081019050611fa9565b50505050905090810190601f168015611ff15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161200b57fe5b049050809150509392505050565b60008083141561202c5760009050612099565b600082840290508284828161203d57fe5b0414612094576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806120e96021913960400191505060405180910390fd5b809150505b9291505056fe6f6e6c792061646d696e2063616e206368616e6765207472616e73616374696f6e20666565206d757374207761697420323420686f757273206265666f726520756e7374616b696e67536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a265627a7a723158206f6bbec3e3ad3b7a8d2e9f209aa6c36ba80cfa786a711572c4152e67e395aa3e64736f6c634300050d0032
Deployed Bytecode
0x60806040526004361061014a5760003560e01c806370a08231116100b6578063a98325b61161006f578063a98325b6146108c1578063af500ba3146108ec578063c678e61814610951578063dd62ed3e1461096f578063e4fc6b6d146109f4578063ed6a2a8d14610a0b5761014a565b806370a082311461068e578063817b1cd2146106f35780638e6dbe881461071e57806395d89b4114610783578063a694fc3a14610813578063a9059cbb1461084e5761014a565b80632e17de78116101085780632e17de78146104505780632ff2e9dc1461048b578063313ce567146104b6578063370158ea146104e75780634000aea01461054c57806357f6b812146106145761014a565b806265318b1461014f57806306fdde03146101b4578063095ea7b314610244578063153a1f3e146102b757806318160ddd1461039257806323b872dd146103bd575b600080fd5b34801561015b57600080fd5b5061019e6004803603602081101561017257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a36565b6040518082815260200191505060405180910390f35b3480156101c057600080fd5b506101c9610a85565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102095780820151818401526020810190506101ee565b50505050905090810190601f1680156102365780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561025057600080fd5b5061029d6004803603604081101561026757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610abe565b604051808215151515815260200191505060405180910390f35b3480156102c357600080fd5b50610390600480360360408110156102da57600080fd5b81019080803590602001906401000000008111156102f757600080fd5b82018360208201111561030957600080fd5b8035906020019184602083028401116401000000008311171561032b57600080fd5b90919293919293908035906020019064010000000081111561034c57600080fd5b82018360208201111561035e57600080fd5b8035906020019184602083028401116401000000008311171561038057600080fd5b9091929391929390505050610bb6565b005b34801561039e57600080fd5b506103a7610c33565b6040518082815260200191505060405180910390f35b3480156103c957600080fd5b50610436600480360360608110156103e057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c40565b604051808215151515815260200191505060405180910390f35b34801561045c57600080fd5b506104896004803603602081101561047357600080fd5b8101908080359060200190929190505050610d78565b005b34801561049757600080fd5b506104a0610d84565b6040518082815260200191505060405180910390f35b3480156104c257600080fd5b506104cb610d8e565b604051808260ff1660ff16815260200191505060405180910390f35b3480156104f357600080fd5b506104fc610d93565b604051808481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060405180910390f35b34801561055857600080fd5b506105fa6004803603606081101561056f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156105b657600080fd5b8201836020820111156105c857600080fd5b803590602001918460018302840111640100000000831117156105ea57600080fd5b9091929391929390505050610dcb565b604051808215151515815260200191505060405180910390f35b34801561062057600080fd5b506106636004803603602081101561063757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610efe565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b34801561069a57600080fd5b506106dd600480360360208110156106b157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f37565b6040518082815260200191505060405180910390f35b3480156106ff57600080fd5b50610708610f90565b6040518082815260200191505060405180910390f35b34801561072a57600080fd5b5061076d6004803603602081101561074157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f9d565b6040518082815260200191505060405180910390f35b34801561078f57600080fd5b50610798610fec565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107d85780820151818401526020810190506107bd565b50505050905090810190601f1680156108055780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561081f57600080fd5b5061084c6004803603602081101561083657600080fd5b8101908080359060200190929190505050611025565b005b34801561085a57600080fd5b506108a76004803603604081101561087157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611031565b604051808215151515815260200191505060405180910390f35b3480156108cd57600080fd5b506108d6611049565b6040518082815260200191505060405180910390f35b3480156108f857600080fd5b5061093b6004803603602081101561090f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611208565b6040518082815260200191505060405180910390f35b610959611257565b6040518082815260200191505060405180910390f35b34801561097b57600080fd5b506109de6004803603604081101561099257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611319565b6040518082815260200191505060405180910390f35b348015610a0057600080fd5b50610a096113a6565b005b348015610a1757600080fd5b50610a206118d1565b6040518082815260200191505060405180910390f35b6000600460020160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301549050919050565b6040518060400160405280600c81526020017f446566692046697265666c79000000000000000000000000000000000000000081525081565b600081600460020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b818190508484905014610bc857600080fd5b60008090505b84849050811015610c2c57610c1e33868684818110610be957fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16858585818110610c1257fe5b905060200201356118d7565b508080600101915050610bce565b5050505050565b6000600460000154905090565b600081600460020160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610cd157600080fd5b81600460020160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550610d6c8484846118d7565b50600190509392505050565b610d8181611b7c565b50565b6551dac207a00081565b600881565b60048060000154908060010154908060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905083565b600080610dd93387876118d7565b90506000863b905060008163ffffffff161115610ef0578673ffffffffffffffffffffffffffffffffffffffff16636be32e73338488886040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050602060405180830381600087803b158015610eab57600080fd5b505af1158015610ebf573d6000803e3d6000fd5b505050506040513d6020811015610ed557600080fd5b8101908080519060200190929190505050610eef57600080fd5b5b600192505050949350505050565b600080600080610f0d85610f37565b610f1686611208565b610f1f87610a36565b610f2888610f9d565b93509350935093509193509193565b6000610f4282611208565b600460020160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154039050919050565b6000600460010154905090565b6000600460020160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401549050919050565b6040518060400160405280600381526020017f444646000000000000000000000000000000000000000000000000000000000081525081565b61102e81611d6f565b50565b600061103e3384846118d7565b506001905092915050565b60008061105533610a36565b905060008110156110ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f6e6f206469766964656e647320746f207265636965766500000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611114573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff167f4256a058fa2b123d727576d3d31e3a272db98ee5fe264e229610ce43dc849999826040518082815260200191505060405180910390a26000600460020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003018190555080600460020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401600082825401925050819055508091505090565b6000600460020160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050919050565b6000600460030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611302576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806120a06026913960400191505060405180910390fd5b346000808282540192505081905550600054905090565b6000600460020160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600460030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461144f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806120a06026913960400191505060405180910390fd5b6000600460010154116114ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f6e6f207374616b65727320746f2064697374726962757465000000000000000081525060200191505060405180910390fd5b60003073ffffffffffffffffffffffffffffffffffffffff163111611557576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f6e6f206469766964656e6420746f20646973747269627574650000000000000081525060200191505060405180910390fd5b60008060006115e66000546115ab6004600101546305f5e1006040518060400160405280600e81526020017f6469766973696f6e206572726f72000000000000000000000000000000000000815250611f53565b6040518060400160405280601581526020017f696e7661696420686f6c64696e6720737570706c790000000000000000000000815250611f53565b92506000600190505b6001548110156117ec5760006116376002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611208565b11156117df576116c5846116c06116806002600086815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611208565b6305f5e1006040518060400160405280600e81526020017f6469766973696f6e206572726f72000000000000000000000000000000000000815250611f53565b612019565b600460020160006002600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301600082825401925050819055506117d2846117cd61178d6002600086815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611208565b6305f5e1006040518060400160405280600e81526020017f6469766973696f6e206572726f72000000000000000000000000000000000000815250611f53565b612019565b8201915082806001019350505b80806001019150506115ef565b507f635e0fca2664c9e1893ed1bccc47645ceda5e57b4f0d8f564df5c8a252d762ea600460010154600054858585604051808681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a1600460030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc82600054039081150290604051600060405180830381858888f193505050501580156118ba573d6000803e3d6000fd5b5060008311156118cc57600080819055505b505050565b60005481565b6000816118e385610f37565b1015611957576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f696e73756666696369656e742066756e6473000000000000000000000000000081525060200191505060405180910390fd5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611a67578260026000600154815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600081548092919060010191905055505b81600460020160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000828254039250508190555081600460020160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a38190509392505050565b80611b8633611208565b1015611bfa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f75736572207374616b6520616c7265616479203000000000000000000000000081525060200191505060405180910390fd5b4262015180600460020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050154011115611c9d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806120c66023913960400191505060405180910390fd5b6000611ca833610a36565b1115611cb857611cb6611049565b505b8060046001016000828254039250508190555080600460020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600082825403925050819055503373ffffffffffffffffffffffffffffffffffffffff167f85082129d87b2fe11527cb1b3b7a520aeb5aa6913f88a3d8757fe40d1db02fdd826040518082815260200191505060405180910390a250565b80611d7933610f37565b1015611ded576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f696e73756666696369656e742066756e6473000000000000000000000000000081525060200191505060405180910390fd5b8060046001016000828254019250508190555080600460020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000828254019250508190555042600460020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501819055503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a33373ffffffffffffffffffffffffffffffffffffffff167febedb8b3c678666e7f36970bc8f57abf6d8fa2e828c0da91ea5b75bf68ed101a826040518082815260200191505060405180910390a250565b60008083118290611fff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611fc4578082015181840152602081019050611fa9565b50505050905090810190601f168015611ff15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161200b57fe5b049050809150509392505050565b60008083141561202c5760009050612099565b600082840290508284828161203d57fe5b0414612094576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806120e96021913960400191505060405180910390fd5b809150505b9291505056fe6f6e6c792061646d696e2063616e206368616e6765207472616e73616374696f6e20666565206d757374207761697420323420686f757273206265666f726520756e7374616b696e67536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a265627a7a723158206f6bbec3e3ad3b7a8d2e9f209aa6c36ba80cfa786a711572c4152e67e395aa3e64736f6c634300050d0032
Deployed Bytecode Sourcemap
158:7089:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4865:115;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4865:115:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4865:115:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;372:44;;8:9:-1;5:2;;;30:1;27;20:12;5:2;372:44:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;372:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3346:203;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3346:203:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3346:203:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4181:259;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4181:259:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4181:259:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;4181:259:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4181:259:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;4181:259:0;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;4181:259:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4181:259:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;4181:259:0;;;;;;;;;;;;:::i;:::-;;4445:86;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4445:86:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3554:266;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3554:266:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3554:266:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1679:70;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1679:70:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1679:70:0;;;;;;;;;;;;;;;;;:::i;:::-;;185:45;;8:9:-1;5:2;;;30:1;27;20:12;5:2;185:45:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;461:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;461:34:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;797:16;;8:9:-1;5:2;;;30:1;27;20:12;5:2;797:16:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3825:351;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3825:351:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3825:351:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;3825:351:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3825:351:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;3825:351:0;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5839:236;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5839:236:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5839:236:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4627:124;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4627:124:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4627:124:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4536:86;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4536:86:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5127:117;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5127:117:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5127:117:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;420:37;;8:9:-1;5:2;;;30:1;27;20:12;5:2;420:37:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;420:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1608:66;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1608:66:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1608:66:0;;;;;;;;;;;;;;;;;:::i;:::-;;3208:133;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3208:133:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3208:133:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1754:375;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1754:375:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4756:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4756:104:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4756:104:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2135:136;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4985;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4985:136:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4985:136:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2276:927;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2276:927:0;;;:::i;:::-;;245:29;;8:9:-1;5:2;;;30:1;27;20:12;5:2;245:29:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4865:115;4922:7;4949:4;:10;;:17;4960:5;4949:17;;;;;;;;;;;;;;;:26;;;4942:33;;4865:115;;;:::o;372:44::-;;;;;;;;;;;;;;;;;;;:::o;3346:203::-;3416:4;3472:7;3427:4;:10;;:22;3438:10;3427:22;;;;;;;;;;;;;;;:32;;:42;3460:8;3427:42;;;;;;;;;;;;;;;:52;;;;3510:8;3489:39;;3498:10;3489:39;;;3520:7;3489:39;;;;;;;;;;;;;;;;;;3540:4;3533:11;;3346:203;;;;:::o;4181:259::-;4306:8;;:15;;4285:10;;:17;;:36;4277:45;;;;;;4332:9;4344:1;4332:13;;4327:109;4351:10;;:17;;4347:1;:21;4327:109;;;4381:49;4391:10;4403;;4414:1;4403:13;;;;;;;;;;;;;;;4418:8;;4427:1;4418:11;;;;;;;;;;;;;4381:9;:49::i;:::-;;4370:3;;;;;;;4327:109;;;;4181:259;;;;:::o;4445:86::-;4489:7;4510:4;:16;;;4503:23;;4445:86;:::o;3554:266::-;3639:4;3701:7;3658:4;:10;;:17;3669:5;3658:17;;;;;;;;;;;;;;;:27;;:39;3686:10;3658:39;;;;;;;;;;;;;;;;:50;;3650:59;;;;;;3757:7;3714:4;:10;;:17;3725:5;3714:17;;;;;;;;;;;;;;;:27;;:39;3742:10;3714:39;;;;;;;;;;;;;;;;:50;;;;;;;;;;;3769:30;3779:5;3786:3;3791:7;3769:9;:30::i;:::-;;3811:4;3804:11;;3554:266;;;;;:::o;1679:70::-;1727:17;1736:7;1727:8;:17::i;:::-;1679:70;:::o;185:45::-;226:4;185:45;:::o;461:34::-;494:1;461:34;:::o;797:16::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3825:351::-;3920:4;3931:20;3954:35;3964:10;3976:3;3981:7;3954:9;:35::i;:::-;3931:58;;3994:12;4047:3;4035:16;4026:25;;4072:1;4064:5;:9;;;4060:96;;;4098:3;4089:27;;;4117:10;4129:12;4143:5;;4089:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;4089:60:0;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4089:60:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4089:60:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4089:60:0;;;;;;;;;;;;;;;;4081:69;;;;;;4060:96;4167:4;4160:11;;;;3825:351;;;;;;:::o;5839:236::-;5895:19;5916:18;5936:21;5958:19;5993:16;6003:5;5993:9;:16::i;:::-;6011:15;6020:5;6011:8;:15::i;:::-;6028:18;6040:5;6028:11;:18::i;:::-;6047:22;6063:5;6047:15;:22::i;:::-;5984:86;;;;;;;;5839:236;;;;;:::o;4627:124::-;4682:7;4731:15;4740:5;4731:8;:15::i;:::-;4703:4;:10;;:17;4714:5;4703:17;;;;;;;;;;;;;;;:25;;;:43;4696:50;;4627:124;;;:::o;4536:86::-;4580:7;4601:4;:16;;;4594:23;;4536:86;:::o;5127:117::-;5187:7;5210:4;:10;;:17;5221:5;5210:17;;;;;;;;;;;;;;;:29;;;5203:36;;5127:117;;;:::o;420:37::-;;;;;;;;;;;;;;;;;;;:::o;1608:66::-;1654:15;1661:7;1654:6;:15::i;:::-;1608:66;:::o;3208:133::-;3274:4;3285:35;3295:10;3307:3;3312:7;3285:9;:35::i;:::-;;3332:4;3325:11;;3208:133;;;;:::o;1754:375::-;1797:7;1814:18;1835:23;1847:10;1835:11;:23::i;:::-;1814:44;;1885:1;1871:10;:15;;1863:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1935:10;1919:37;;:49;1957:10;1919:49;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1919:49:0;1986:10;1978:31;;;1998:10;1978:31;;;;;;;;;;;;;;;;;;2048:1;2014:4;:10;;:22;2025:10;2014:22;;;;;;;;;;;;;;;:31;;:35;;;;2092:10;2054:4;:10;;:22;2065:10;2054:22;;;;;;;;;;;;;;;:34;;;:48;;;;;;;;;;;2114:10;2107:17;;;1754:375;:::o;4756:104::-;4810:7;4831:4;:10;;:17;4842:5;4831:17;;;;;;;;;;;;;;;:24;;;4824:31;;4756:104;;;:::o;2135:136::-;2194:7;5303:4;:10;;;;;;;;;;;;5289:24;;:10;:24;;;5281:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2228:9;2210:14;;:27;;;;;;;;;;;2252:14;;2245:21;;2135:136;:::o;4985:::-;5058:7;5079:4;:10;;:17;5090:5;5079:17;;;;;;;;;;;;;;;:27;;:37;5107:8;5079:37;;;;;;;;;;;;;;;;5072:44;;4985:136;;;;:::o;2276:927::-;5303:4;:10;;;;;;;;;;;;5289:24;;:10;:24;;;5281:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2349:1;2330:4;:16;;;:20;2322:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2415:1;2399:4;2391:21;;;:25;2383:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2451:13;2469;2487:19;2519:88;2523:14;;2539:42;2543:4;:16;;;2560:3;2539:42;;;;;;;;;;;;;;;;;:3;:42::i;:::-;2519:88;;;;;;;;;;;;;;;;;:3;:88::i;:::-;2511:96;;2616:9;2626:1;2616:11;;2612:342;2631:2;;2629:1;:4;2612:342;;;2683:1;2657:24;2666:11;:14;2678:1;2666:14;;;;;;;;;;;;;;;;;;;;;2657:8;:24::i;:::-;:27;2654:289;;;2743:62;2747:5;2754:50;2758:24;2767:11;:14;2779:1;2767:14;;;;;;;;;;;;;;;;;;;;;2758:8;:24::i;:::-;2783:3;2754:50;;;;;;;;;;;;;;;;;:3;:50::i;:::-;2743:3;:62::i;:::-;2704:4;:10;;:26;2715:11;:14;2727:1;2715:14;;;;;;;;;;;;;;;;;;;;;2704:26;;;;;;;;;;;;;;;:35;;;:101;;;;;;;;;;;2839:62;2843:5;2850:50;2854:24;2863:11;:14;2875:1;2863:14;;;;;;;;;;;;;;;;;;;;;2854:8;:24::i;:::-;2879:3;2850:50;;;;;;;;;;;;;;;;;:3;:50::i;:::-;2839:3;:62::i;:::-;2824:77;;;;2920:7;;;;;;;2654:289;2635:3;;;;;;;2612:342;;;;2969:83;2992:4;:16;;;3010:14;;3026:5;3033;3040:11;2969:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3079:4;:10;;;;;;;;;;;;3063:37;;:67;3118:11;3101:14;;:28;3063:67;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3063:67:0;3152:1;3144:5;:9;3141:58;;;3186:1;3169:14;:18;;;;3141:58;5366:1;;;2276:927::o;245:29::-;;;;:::o;6083:414::-;6165:7;6207;6187:16;6197:5;6187:9;:16::i;:::-;:27;;6179:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6246:6;:11;6253:3;6246:11;;;;;;;;;;;;;;;;;;;;;;;;;6242:92;;6285:3;6267:11;:15;6279:2;;6267:15;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;6311:4;6297:6;:11;6304:3;6297:11;;;;;;;;;;;;;;;;:18;;;;;;;;;;;;;;;;;;6324:2;;:4;;;;;;;;;;;;;6242:92;6367:7;6338:4;:10;;:17;6349:5;6338:17;;;;;;;;;;;;;;;:25;;;:36;;;;;;;;;;;6412:7;6385:4;:10;;:15;6396:3;6385:15;;;;;;;;;;;;;;;:23;;;:34;;;;;;;;;;;6451:3;6435:29;;6444:5;6435:29;;;6456:7;6435:29;;;;;;;;;;;;;;;;;;6482:7;6475:14;;6083:414;;;;;:::o;6840:404::-;6921:7;6897:20;6906:10;6897:8;:20::i;:::-;:31;;6889:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7017:3;7005:8;6965:4;:10;;:22;6976:10;6965:22;;;;;;;;;;;;;;;:37;;;:48;:55;;6957:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7091:1;7067:23;7079:10;7067:11;:23::i;:::-;:25;7064:61;;;7102:17;:15;:17::i;:::-;;7064:61;7149:7;7129:4;:16;;;:27;;;;;;;;;;;7194:7;7161:4;:10;;:22;7172:10;7161:22;;;;;;;;;;;;;;;:29;;;:40;;;;;;;;;;;7219:10;7211:28;;;7231:7;7211:28;;;;;;;;;;;;;;;;;;6840:404;:::o;6502:330::-;6582:7;6557:21;6567:10;6557:9;:21::i;:::-;:32;;6549:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6637:7;6617:4;:16;;;:27;;;;;;;;;;;6682:7;6649:4;:10;;:22;6660:10;6649:22;;;;;;;;;;;;;;;:29;;;:40;;;;;;;;;;;6734:3;6694:4;:10;;:22;6705:10;6694:22;;;;;;;;;;;;;;;:37;;:43;;;;6776:4;6747:44;;6756:10;6747:44;;;6783:7;6747:44;;;;;;;;;;;;;;;;;;6807:10;6801:26;;;6819:7;6801:26;;;;;;;;;;;;;;;;;;6502:330;:::o;5387:189::-;5473:7;5505:1;5501;:5;5508:12;5493:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;5493:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5532:9;5548:1;5544;:5;;;;;;5532:17;;5567:1;5560:8;;;5387:189;;;;;:::o;5588:246::-;5646:7;5675:1;5670;:6;5666:47;;;5700:1;5693:8;;;;5666:47;5723:9;5739:1;5735;:5;5723:17;;5768:1;5763;5759;:5;;;;;;:10;5751:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5825:1;5818:8;;;5588:246;;;;;:::o
Swarm Source
bzzr://6f6bbec3e3ad3b7a8d2e9f209aa6c36ba80cfa786a711572c4152e67e395aa3e
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.