ERC-20
Overview
Max Total Supply
5,740,590.549849514327551721 3FM
Holders
802
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
90.000000000000001091 3FMValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
ThreeFMutual
Compiler Version
v0.5.16+commit.9c3226ce
Contract Source Code (Solidity)Audit Report
/** *Submitted for verification at Etherscan.io on 2020-09-19 */ pragma solidity 0.5.16; contract ThreeFMutual { using SafeMath for *; //********* // STRUCTS //********* struct Player { uint256 id; // agent id bytes32 name; // agent name uint256 ref; // referral vault bool isAgent; // referral activated bool claimed; // insurance claimed uint256 eth; // eth player has paid uint256 shares; // shares uint256 units; // uints of insurance uint256 plyrLastSeen; // last day player played uint256 mask; // player mask uint256 level; // agent level uint256 accumulatedRef; // accumulated referral income } //*************** // EXTERNAL DATA //*************** VAT vat = VAT(0x35D1b3F3D7966A1DFe207aa4514C12a259A0492B); Underwriter underwriter = Underwriter(0xE58cDe3CbEeCC8d9306f482729084B909Afa2357); Agency agency = Agency(0x7Bc360ebD65eFa503FF189A0F81f61f85D310Ec3); address payable constant private hakka = address(0x83D0D842e6DB3B020f384a2af11bD14787BEC8E7); address payable constant private IIP = address(0x9933AD4D38702cdC28C5DB2F421F1F02CF530780); uint256 public end; bool public ended; //****************** // GLOBAL VARIABLES //****************** mapping(address => mapping(uint256 => uint256)) public unitToExpirePlayer; mapping(uint256 => uint256) public unitToExpire; // unit of insurance due at day x uint256 public issuedInsurance; // all issued insurance uint256 public ethOfShare; // virtual eth pointer uint256 public shares; // total share uint256 public pool; // eth gonna pay to beneficiary uint256 public today; // today's date uint256 public _now; // current time uint256 public mask; // global mask uint256 public agents; // number of agent // player data mapping(address => Player) public player; // player data mapping(uint256 => address) public agentxID_; // return agent address by id mapping(bytes32 => address) public agentxName_; // return agent address by name // constant parameters uint256 constant maxInsurePeriod = 100; uint256 constant maxLevel = 10; // rate of buying x day insurance uint256[101] public rate = [0, 1000000000000000000, 1990000000000000000, 2970100000000000000, 3940399000000000000, 4900995010000000000, 5851985059900000000, 6793465209301000000, 7725530557207990000, 8648275251635910100, 9561792499119550999, 10466174574128355489, 11361512828387071934, 12247897700103201215, 13125418723102169203, 13994164535871147511, 14854222890512436036, 15705680661607311676, 16548623854991238559, 17383137616441326173, 18209306240276912911, 19027213177874143782, 19836941046095402344, 20638571635634448321, 21432185919278103838, 22217864060085322800, 22995685419484469572, 23765728565289624876, 24528071279636728627, 25282790566840361341, 26029962661171957728, 26769663034560238151, 27501966404214635769, 28226946740172489411, 28944677272770764517, 29655230500043056872, 30358678195042626303, 31055091413092200040, 31744540498961278040, 32427095093971665260, 33102824143031948607, 33771795901601629121, 34434077942585612830, 35089737163159756702, 35738839791528159135, 36381451393612877544, 37017636879676748769, 37647460510879981281, 38270985905771181468, 38888276046713469653, 39499393286246334956, 40104399353383871606, 40703355359850032890, 41296321806251532561, 41883358588189017235, 42464525002307127063, 43039879752284055792, 43609480954761215234, 44173386145213603082, 44731652283761467051, 45284335760923852380, 45831492403314613856, 46373177479281467717, 46909445704488653040, 47440351247443766510, 47965947734969328845, 48486288257619635557, 49001425375043439201, 49511411121293004809, 50016297010080074761, 50516134039979274013, 51010972699579481273, 51500862972583686460, 51985854342857849595, 52465995799429271099, 52941335841434978388, 53411922483020628604, 53877803258190422318, 54339025225608518095, 54795634973352432914, 55247678623618908585, 55695201837382719499, 56138249819008892304, 56576867320818803381, 57011098647610615347, 57440987661134509194, 57866577784523164102, 58287912006677932461, 58705032886611153136, 59117982557745041605, 59526802732167591189, 59931534704845915277, 60332219357797456124, 60728897164219481563, 61121608192577286747, 61510392110651513880, 61895288189544998741, 62276335307649548754, 62653571954573053266, 63027036235027322733, 63396765872677049506]; // threshold of agent upgrade uint256[10] public requirement = [0, 73890560989306501, 200855369231876674, 545981500331442382, 1484131591025766010, 4034287934927351160, 10966331584284585813, 29809579870417282259, 81030839275753838749, 220264657948067161559]; //****************** // EVENT //****************** event UPGRADE (address indexed agent, uint256 indexed level); event BUYINSURANCE(address indexed buyer, uint256 indexed start, uint256 unit, uint256 date); //****************** // MODIFIER //****************** modifier isHuman() { require(msg.sender == tx.origin, "sorry humans only"); _; } //****************** // CORE FUNCTIONS //****************** /** * @dev Constructor * @notice Initialize the time */ constructor() public { _now = now; today = _now / 1 days; } /** * @dev Ticker * @notice It is called everytime when a player interacts with this contract * @return true if MakerDAO has been shut down, false otherwise */ function tick() internal returns(bool) { if(!ended) { if (_now != now) { _now = now; uint256 _today = _now / 1 days; // the current day as soon as ticker is called //check MakerDAO status if(vat.live() == 0) { ended = true; end = now; } // calculate the outdated issuedInsurance while (today < _today) { issuedInsurance = issuedInsurance.sub(unitToExpire[today]); unitToExpire[today] = 0; today += 1; } } } return ended; } /** * @dev Register * @notice Register a name by a human player */ function register(string calldata _nameString) external payable isHuman() { bytes32 _name = agency.register(_nameString); address _agent = msg.sender; require(msg.value >= 10000000000000000, "insufficient amount"); require(agentxName_[_name] == address(0), "name registered"); if(!player[_agent].isAgent){ agents += 1; player[_agent].isAgent = true; player[_agent].id = agents; player[_agent].level = 1; agentxID_[agents] = _agent; emit UPGRADE(_agent,player[_agent].level); } // set name active for the player player[_agent].name = _name; agentxName_[_name] = _agent; sendContract(hakka, msg.value); } /** * @dev Upgrade * @notice Upgrade when a player's referral bonus meet the requirement */ function upgrade() external isHuman() { address _agent = msg.sender; require(player[_agent].isAgent); require(player[_agent].level < maxLevel); if(player[_agent].accumulatedRef >= requirement[player[_agent].level]) { player[_agent].level = (1).add(player[_agent].level); emit UPGRADE(_agent,player[_agent].level); } } //using address for referral function buy(address payable _agent, uint256 _date) isHuman() public payable { // ticker if(tick()){ sendHuman(msg.sender, msg.value); return; } // validate agent if(!player[_agent].isAgent){ _agent = address(0); } buyCore(msg.sender, msg.value, _date, _agent); } //using ID for referral function buy(uint256 _agentId, uint256 _date) isHuman() public payable { // ticker if(tick()){ sendHuman(msg.sender, msg.value); return; } //query agent address payable _agent = address(uint160(agentxID_[_agentId])); buyCore(msg.sender, msg.value, _date, _agent); } //using name for referral function buy(bytes32 _agentName, uint256 _date) isHuman() public payable { // ticker if(tick()){ sendHuman(msg.sender, msg.value); return; } //query agent address payable _agent = address(uint160(agentxName_[_agentName])); buyCore(msg.sender, msg.value, _date, _agent); } // contract wallets, sorry insurance only for human function buy() public payable { // ticker if(tick()) { if(msg.sender == tx.origin) sendHuman(msg.sender, msg.value); else sendContract(msg.sender, msg.value); return; } buyCore(msg.sender, msg.value, 0, address(0)); } // fallback function () external payable { buy(); } /** * @dev Core part of buying */ function buyCore(address _buyer, uint256 _eth, uint256 _date, address payable _agent) internal { updatePlayerUnit(_buyer); require(_eth >= 1000000000, "pocket lint: not a valid currency"); require(_eth <= 10000000000000000000000, "no vitalik, no"); if(_date > maxInsurePeriod){ _date = maxInsurePeriod; } uint256 _rate = rate[_date] + 1000000000000000000; uint256 ethToBuyShare = _eth.mul(1000000000000000000) / _rate; //-- ethToBuyShare is a virtual amount used to represent the eth player paid for buying shares //which is usually different from _eth // get value of shares and insurances can be bought uint256 _share = underwriter.mintShare(ethOfShare, ethToBuyShare); uint256 _unit = (_date == 0)? 0: _share; uint256 newDate = today + _date - 1; // update global data ethOfShare = ethOfShare.add(ethToBuyShare); shares = shares.add(_share); unitToExpire[newDate] = unitToExpire[newDate].add(_unit); issuedInsurance = issuedInsurance.add(_unit); // update player data player[_buyer].eth = player[_buyer].eth.add(_eth); player[_buyer].shares = player[_buyer].shares.add(_share); player[_buyer].units = player[_buyer].units.add(_unit); unitToExpirePlayer[_buyer][newDate] = unitToExpirePlayer[_buyer][newDate].add(_unit); distributeEx(_eth, _agent); distributeIn(_buyer, _eth, _share); emit BUYINSURANCE(_buyer, today, _unit, _date); emit Transfer(address(0), _buyer, _share); } /** * @dev Update player's units of insurance */ function updatePlayerUnit(address _player) internal { uint256 _today = player[_player].plyrLastSeen; uint256 expiredUnit = 0; if(_today != 0){ while(_today < today){ expiredUnit = expiredUnit.add(unitToExpirePlayer[_player][_today]); unitToExpirePlayer[_player][_today] = 0; _today += 1; } player[_player].units = player[_player].units.sub(expiredUnit); } player[_player].plyrLastSeen = today; } /** * @dev pay external stakeholder */ function distributeEx(uint256 _eth, address payable _agent) internal { // 20% to external uint256 ex = _eth / 5 ; // 10% to IIP uint256 _iip = _eth / 10; if(player[_agent].isAgent){ uint256 refRate = player[_agent].level.add(6); uint256 _ref = _eth.mul(refRate) / 100; player[_agent].ref = player[_agent].ref.add(_ref); player[_agent].accumulatedRef = player[_agent].accumulatedRef.add(_ref); ex = ex.sub(_ref); } sendContract(IIP, _iip); sendContract(hakka, ex); } /** * @dev Distribute to internal */ function distributeIn(address _buyer, uint256 _eth, uint256 _shares) internal { // 15% to share holder uint256 _div = _eth.mul(3) / 20; // 55% to insurance pool uint256 _pool = _eth.mul(55) / 100; // distribute dividend share and collect dust uint256 _dust = updateMasks(_buyer, _div, _shares); // add eth to pool pool = pool.add(_dust).add(_pool); } function updateMasks(address _player, uint256 _div, uint256 _shares) private returns(uint256) { // calculate profit per share & global mask based on this buy: (dust goes to pool) uint256 _ppt = _div.mul(1000000000000000000) / shares; mask = mask.add(_ppt); // calculate player earning from their own buy (only based on the shares // they just bought). & update player earnings mask uint256 _pearn = (_ppt.mul(_shares)) / 1000000000000000000; player[_player].mask = (((mask.mul(_shares)) / 1000000000000000000).sub(_pearn)).add(player[_player].mask); // calculate & return dust return(_div.sub( _ppt.mul(shares) / 1000000000000000000)); } /** * @dev Submit a claim from a beneficiary */ function claim() isHuman() public { require(tick(), "not yet"); // MakerDAO shutdown! address payable beneficiary = msg.sender; require(!player[beneficiary].claimed, "already claimed"); updatePlayerUnit(beneficiary); uint256 amount = pool.mul(player[beneficiary].units) / issuedInsurance; player[beneficiary].claimed = true; sendHuman(beneficiary, amount); } /** * @dev Withdraw dividends and ref */ function withdraw() public { // get player earnings uint256 _eth; _eth = withdrawEarnings(msg.sender); // pay if (_eth > 0) { if(msg.sender == tx.origin) sendHuman(msg.sender, _eth); else sendContract(msg.sender, _eth); } } function withdrawEarnings(address _player) private returns(uint256) { uint256 _div = calcUnMaskedEarnings(_player); //dividend uint256 _ref = player[_player].ref; // referral uint256 _earnings = _div.add(_ref); if (_earnings > 0) { player[_player].ref = 0; player[_player].mask = _div.add(player[_player].mask); } return(_earnings); } function calcUnMaskedEarnings(address _player) private view returns(uint256) { return (mask.mul(player[_player].shares) / 1000000000000000000).sub(player[_player].mask); } //****************** // GETTERS //****************** /** * @dev Return the price buyer will pay for next 1 individual share. * @return Price for next share bought (in wei format) */ function getBuyPrice() external view returns(uint256) { return underwriter.burnShare(shares.add(1000000000000000000), 1000000000000000000); } /** * @dev Get the units of insurance of player * @return Amount of existing units of insurance */ function getCurrentUnit(address _player) external view returns(uint256) { uint256 _unit = player[_player].units; uint256 _today = player[_player].plyrLastSeen; uint256 expiredUnit = 0; if(_today != 0) { while(_today < today){ expiredUnit = expiredUnit.add(unitToExpirePlayer[_player][_today]); _today += 1; } } return _unit == 0 ? 0 : _unit.sub(expiredUnit); } /** * @dev Get the list of units of insurace going to expire of a player * @return List of units of insurance going to expire from a player */ function getExpiringUnitListPlayer(address _player) external view returns(uint256[maxInsurePeriod] memory expiringUnitList) { for(uint256 i=0; i<maxInsurePeriod; i++) { expiringUnitList[i] = unitToExpirePlayer[_player][today+i]; } return expiringUnitList; } /** * @dev Get the list of units of insurace going to expire * @return List of units of insurance going to expire */ function getExpiringUnitList() external view returns(uint256[maxInsurePeriod] memory expiringUnitList) { for(uint256 i=0; i<maxInsurePeriod; i++){ expiringUnitList[i] = unitToExpire[today+i]; } return expiringUnitList; } //****************** // ERC20 //****************** string public constant name = "Third Floor Mutual"; string public constant symbol = "3FM"; uint8 public constant decimals = 18; function totalSupply() external view returns(uint256) { if(ended) return 0; return shares; } function balanceOf(address who) external view returns(uint256) { if(ended) return 0; return player[who].shares; } event Transfer(address indexed from, address indexed to, uint256 amount); //****************** // send eth //****************** function sendHuman(address to, uint256 amount) internal returns(bool success) { address payable recipient = address(uint160(to)); (success, ) = recipient.call.value(amount)(""); } function sendContract(address to, uint256 amount) internal returns(bool success) { address payable recipient = address(uint160(to)); (new SafeSend).value(amount)(recipient); return true; } } contract VAT { function live() external returns(uint256); } contract SafeSend { constructor(address payable to) public payable { selfdestruct(to); } } contract Underwriter { function mintShare(uint256 _curEth, uint256 _newEth) external pure returns (uint256); function burnShare(uint256 _curShares, uint256 _sellShares) external pure returns (uint256); function shares(uint256 _eth) public pure returns(uint256); function eth(uint256 _shares) public pure returns(uint256); } contract Agency { function register(string memory _input) public pure returns(bytes32); } library SafeMath { function mul(uint256 a, uint256 b) internal pure returns (uint256 c) { if (a == 0) return 0; c = a * b; require(c / a == b); } function sub(uint256 a, uint256 b) internal pure returns (uint256 c) { require(b <= a); c = a - b; } function add(uint256 a, uint256 b) internal pure returns (uint256 c) { c = a + b; require(c >= a); } function sqrt(uint256 x) internal pure returns (uint256 y) { uint256 z = add(x >> 1, 1); y = x; while (z < y) { y = z; z = ((add((x / z), z)) / 2); } } function sq(uint256 x) internal pure returns (uint256) { return (mul(x,x)); } function pwr(uint256 x, uint256 y) internal pure returns(uint256 z) { z = 1; while(y != 0){ if(y % 2 == 1) z = mul(z,x); x = sq(x); y = y / 2; } return z; } }
Contract Security Audit
- PeckShield - September 10th, 2020 - Security Audit Report
[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"buyer","type":"address"},{"indexed":true,"internalType":"uint256","name":"start","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"unit","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"date","type":"uint256"}],"name":"BUYINSURANCE","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":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"agent","type":"address"},{"indexed":true,"internalType":"uint256","name":"level","type":"uint256"}],"name":"UPGRADE","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":true,"inputs":[],"name":"_now","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"agents","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"agentxID_","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"agentxName_","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"_agentName","type":"bytes32"},{"internalType":"uint256","name":"_date","type":"uint256"}],"name":"buy","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"buy","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"address payable","name":"_agent","type":"address"},{"internalType":"uint256","name":"_date","type":"uint256"}],"name":"buy","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_agentId","type":"uint256"},{"internalType":"uint256","name":"_date","type":"uint256"}],"name":"buy","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"claim","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"end","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ended","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ethOfShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getBuyPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_player","type":"address"}],"name":"getCurrentUnit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getExpiringUnitList","outputs":[{"internalType":"uint256[100]","name":"expiringUnitList","type":"uint256[100]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_player","type":"address"}],"name":"getExpiringUnitListPlayer","outputs":[{"internalType":"uint256[100]","name":"expiringUnitList","type":"uint256[100]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"issuedInsurance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"mask","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"player","outputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"bytes32","name":"name","type":"bytes32"},{"internalType":"uint256","name":"ref","type":"uint256"},{"internalType":"bool","name":"isAgent","type":"bool"},{"internalType":"bool","name":"claimed","type":"bool"},{"internalType":"uint256","name":"eth","type":"uint256"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"units","type":"uint256"},{"internalType":"uint256","name":"plyrLastSeen","type":"uint256"},{"internalType":"uint256","name":"mask","type":"uint256"},{"internalType":"uint256","name":"level","type":"uint256"},{"internalType":"uint256","name":"accumulatedRef","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"rate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"string","name":"_nameString","type":"string"}],"name":"register","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"requirement","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"shares","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":"today","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":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"unitToExpire","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"unitToExpirePlayer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"upgrade","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
600080546001600160a01b03199081167335d1b3f3d7966a1dfe207aa4514c12a259a0492b17825560018054821673e58cde3cbeecc8d9306f482729084b909afa235717905560028054909116737bc360ebd65efa503ff189a0f81f61f85d310ec3179055610d206040526080908152670de0b6b3a764000060a052671b9de674df07000060c052672937ea36b763400060e0526736af1c036c4df00061010052674403d4feb9031400610120526751366d68263b870061014052675e473c9d525c5f4061016052676b36991c33cecef061018052677804d885558f75d46101a0526784b24f9e0e03f2176101c05267913f5252b02558a16101e052679dac33b8b70e17be6102005267a9f94610ebf9a1bf6102205267b626dac986c418736102405267c235428048f80df76102605267ce24cd0493784b446102805267d9f5c95976d3693c6102a05267e5a885b7be4ee59f6102c05267f13d4f8ff5b73a5d6102e05267fcb4738c6a025b0f610300526801080e3d9324d1da26610320526801134af8c7e2e1d5686103405268011e6aef8e0571a7c1610360526801296e6b8a7eb33d1e6103805268013455b5a5b94dc4306103a05268013f21160d7b0059446103c052680149d0d436c271252c6103e0526801546536dfa0354b336104005268015ede84110b1de17d610420526801693d0120afd60fe06104405268017380f2b2bbde52476104605268017daa9cbba3f0bcf961048052680187ba4281e5da02c36104a052680191b0269fc5d2dee56104c05268019b8c8b05076566e86104e0526801a54fb0f8a1e9aaff610500526801aef9d91a70a4ee68610520526801b88b4364de96a458610540526801c2042f2e8dfe416c610560526801cb64db2bfba4d53f610580526801d4ad85711df543c16105a0526801ddde6b72ffedda1e6105c0526801e6f7ca0957f5df9e6105e0526801eff9dd701aa1a79f610600526801f8e4e149096f8ee861062052680201b9109d3d8833e16106405268020a76a5deae8c1ee1610660526802131ddae9b578f59c6106805268021baee9068bb03ad56106a0526802242a08eac62981ec6106c05268022c8f72baccd9e4766106e052680234df5e0b4e5a6efa6107005268023d1a01e2afd72111610720526802453f94ba795004936107405268024d504c80be35c717610760526802554c5e99826b28f06107805268025d33ffe01bb47d026107a0526802650764a88f9e5d0a6107c05268026cc6c0c0ede49eab6107e052680274724772a7627e5c6108005268027c0a2b83e194de60610820526802838e9f38c6b761456108405268028affd454d28510f0610860526802925dfc1c1ba52cee61088052680299a9475499cca4cd6108a0526802a0e1e647689cad656108c0526802a80808c20746ca616108e0526802af1bde1794fe9009610900526802b61d95220a414c09610920526802bd0d5c436efbaf1d610940526802c3eb61670d957cb9610960526802cab7d202a2eb313c610980526802d172db178b3d7afb6109a0526802d81ca933ec1e4e3b6109c0526802deb56873db6348546109e0526802e53d44828325027c610a00526802ebb4689b42d2e12e610a20526802f21aff8acd62d9cf610a40526802f87133b044a49512610a60526802feb72efe51bf41a9610a8052680304ed1afc3ae1580b610aa05268030b1320c6f6297d90610ac05268031129691239cfa2b5610ae052680317301c2989956633610b005268031d2761f14184b48a610b20526803230f61e79e0389c6610b4052680328e84325c143a9ad610b605268032eb22c60b61510f0610b80526803346d43ea7021d0c5610ba05268033a19afb2c999f515610bc05268033fb795487e56048d610be0526803454719da247698fc610c005268034ac8623722877ddb610c20526803503b92d0a32cb25b610c4052680355a0cfba865f9c18610c605268035af83cac5042a755610c805268036041fd02159181d2610ca0526803657e33bd65b40d52610cc05268036aad0386327a176d610ce05268036fce8eabb585d4a2610d0052620005e0906012906065620006a9565b506040805161014081018252600081526701068312e0059e8560208201526702c994e4e64bc24291810191909152670793b7482530c0ce6060820152671498b1d19b06ae7a60808201526737fcab8092fd2d7860a08201526798303c794a6def5560c082015268019db0e6f447db64d360e0820152680464875f006314189d610100820152680bf0c943643f76e5d76101208201526200068590607790600a620006f7565b503480156200069357600080fd5b5042600c819055620151809004600b5562000752565b8260658101928215620006e5579160200282015b82811115620006e557825182906001600160481b0316905591602001919060010190620006bd565b50620006f392915062000732565b5090565b82600a8101928215620006e55791602002820182811115620006e557825182906001600160481b0316905591602001919060010190620006bd565b6200074f91905b80821115620006f3576000815560010162000739565b90565b611e0e80620007626000396000f3fe6080604052600436106101f95760003560e01c8063585166611161010d578063b74e452b116100a0578063d93be4331161006f578063d93be433146106c2578063e7ee6ad6146106ec578063efbe1c1c14610716578063f0da93441461072b578063f2c298be14610740576101f9565b8063b74e452b14610649578063cce7ec131461065e578063d55ec6971461068a578063d6febde81461069f576101f9565b806395d89b41116100dc57806395d89b41146105f5578063a6f2ae3a146101f9578063aaaadb581461060a578063b3bb8cd414610634576101f9565b8063585166611461055057806370a0823114610565578063729fc61314610598578063757b0884146105cb576101f9565b806318160ddd116101905780633ef7c6871161015f5780633ef7c68714610413578063402e912f14610461578063489b3fee146104765780634c54e1b5146104a95780634e71d92d1461053b576101f9565b806318160ddd14610385578063274806e01461039a578063313ce567146103d35780633ccfd60b146103fe576101f9565b8063116134ee116101cc578063116134ee146102ec57806312fa6feb1461030157806316f0115b1461032a57806317604f711461033f576101f9565b8063018a25e81461020357806303314efa1461022a57806306fdde031461023f5780630ddeb632146102c9575b6102016107b0565b005b34801561020f57600080fd5b506102186107f5565b60408051918252519081900360200190f35b34801561023657600080fd5b5061021861089c565b34801561024b57600080fd5b506102546108a2565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561028e578181015183820152602001610276565b50505050905090810190601f1680156102bb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610201600480360360408110156102df57600080fd5b50803590602001356108d0565b3480156102f857600080fd5b5061021861095f565b34801561030d57600080fd5b50610316610965565b604080519115158252519081900360200190f35b34801561033657600080fd5b5061021861096e565b34801561034b57600080fd5b506103696004803603602081101561036257600080fd5b5035610974565b604080516001600160a01b039092168252519081900360200190f35b34801561039157600080fd5b5061021861098f565b3480156103a657600080fd5b50610218600480360360408110156103bd57600080fd5b506001600160a01b0381351690602001356109ac565b3480156103df57600080fd5b506103e86109c9565b6040805160ff9092168252519081900360200190f35b34801561040a57600080fd5b506102016109ce565b34801561041f57600080fd5b50610428610a06565b6040518082610c8080838360005b8381101561044e578181015183820152602001610436565b5050505090500191505060405180910390f35b34801561046d57600080fd5b50610218610a4b565b34801561048257600080fd5b506104286004803603602081101561049957600080fd5b50356001600160a01b0316610a51565b3480156104b557600080fd5b506104dc600480360360208110156104cc57600080fd5b50356001600160a01b0316610aad565b604080519c8d5260208d019b909b528b8b019990995296151560608b015294151560808a015260a089019390935260c088019190915260e087015261010086015261012085015261014084015261016083015251908190036101800190f35b34801561054757600080fd5b50610201610b07565b34801561055c57600080fd5b50610218610c6a565b34801561057157600080fd5b506102186004803603602081101561058857600080fd5b50356001600160a01b0316610c70565b3480156105a457600080fd5b50610218600480360360208110156105bb57600080fd5b50356001600160a01b0316610ca5565b3480156105d757600080fd5b50610218600480360360208110156105ee57600080fd5b5035610d43565b34801561060157600080fd5b50610254610d57565b34801561061657600080fd5b506102186004803603602081101561062d57600080fd5b5035610d76565b34801561064057600080fd5b50610218610d88565b34801561065557600080fd5b50610218610d8e565b6102016004803603604081101561067457600080fd5b506001600160a01b038135169060200135610d94565b34801561069657600080fd5b50610201610e27565b610201600480360360408110156106b557600080fd5b5080359060200135610f77565b3480156106ce57600080fd5b50610369600480360360208110156106e557600080fd5b5035610ffa565b3480156106f857600080fd5b506102186004803603602081101561070f57600080fd5b5035611015565b34801561072257600080fd5b50610218611022565b34801561073757600080fd5b50610218611028565b6102016004803603602081101561075657600080fd5b81019060208101813564010000000081111561077157600080fd5b82018360208201111561078357600080fd5b803590602001918460018302840111640100000000831117156107a557600080fd5b50909250905061102e565b6107b86112d4565b156107e657333214156107d5576107cf33346113e8565b506107e1565b6107df3334611445565b505b6107f3565b6107f33334600080611494565b565b6001546009546000916001600160a01b031690636deba2289061082690670de0b6b3a764000063ffffffff61183d16565b670de0b6b3a76400006040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b15801561086a57600080fd5b505afa15801561087e573d6000803e3d6000fd5b505050506040513d602081101561089457600080fd5b505190505b90565b60095481565b60405180604001604052806012815260200171151a1a5c9908119b1bdbdc88135d5d1d585b60721b81525081565b333214610918576040805162461bcd60e51b8152602060048201526011602482015270736f7272792068756d616e73206f6e6c7960781b604482015290519081900360640190fd5b6109206112d4565b156109355761092f33346113e8565b5061095b565b6000828152601160205260409020546001600160a01b031661095933348484611494565b505b5050565b600d5481565b60045460ff1681565b600a5481565b6011602052600090815260409020546001600160a01b031681565b60045460009060ff16156109a557506000610899565b5060095490565b600560209081526000928352604080842090915290825290205481565b601281565b60006109d93361184d565b90508015610a0357333214156109f9576109f333826113e8565b50610a03565b61095b3382611445565b50565b610a0e611d5b565b60005b6064811015610a4757600b548101600090815260066020526040902054828260648110610a3a57fe5b6020020152600101610a11565b5090565b60075481565b610a59611d5b565b60005b6064811015610aa6576001600160a01b0383166000908152600560209081526040808320600b5485018452909152902054828260648110610a9957fe5b6020020152600101610a5c565b505b919050565b600f60205260009081526040902080546001820154600283015460038401546004850154600586015460068701546007880154600889015460098a0154600a909a015498999798969760ff8088169861010090980416968c565b333214610b4f576040805162461bcd60e51b8152602060048201526011602482015270736f7272792068756d616e73206f6e6c7960781b604482015290519081900360640190fd5b610b576112d4565b610b92576040805162461bcd60e51b81526020600482015260076024820152661b9bdd081e595d60ca1b604482015290519081900360640190fd5b336000818152600f6020526040902060030154610100900460ff1615610bf1576040805162461bcd60e51b815260206004820152600f60248201526e185b1c9958591e4818db185a5b5959608a1b604482015290519081900360640190fd5b610bfa816118ea565b6007546001600160a01b0382166000908152600f6020526040812060060154600a54919291610c2e9163ffffffff6119eb16565b81610c3557fe5b6001600160a01b0384166000908152600f60205260409020600301805461ff00191661010017905504905061095982826113e8565b600e5481565b60045460009060ff1615610c8657506000610aa8565b506001600160a01b03166000908152600f602052604090206005015490565b6001600160a01b0381166000908152600f602052604081206006810154600790910154828115610d1c575b600b54821015610d1c576001600160a01b0385166000908152600560209081526040808320858452909152902054610d0f90829063ffffffff61183d16565b9050600182019150610cd0565b8215610d3757610d32838263ffffffff611a1316565b610d3a565b60005b95945050505050565b607781600a8110610d5057fe5b0154905081565b6040518060400160405280600381526020016233464d60e81b81525081565b60066020526000908152604090205481565b600c5481565b600b5481565b333214610ddc576040805162461bcd60e51b8152602060048201526011602482015270736f7272792068756d616e73206f6e6c7960781b604482015290519081900360640190fd5b610de46112d4565b15610df35761092f33346113e8565b6001600160a01b0382166000908152600f602052604090206003015460ff16610e1b57600091505b61095b33348385611494565b333214610e6f576040805162461bcd60e51b8152602060048201526011602482015270736f7272792068756d616e73206f6e6c7960781b604482015290519081900360640190fd5b336000818152600f602052604090206003015460ff16610e8e57600080fd5b6001600160a01b0381166000908152600f6020526040902060090154600a11610eb657600080fd5b6001600160a01b0381166000908152600f6020526040902060090154607790600a8110610edf57fe5b01546001600160a01b0382166000908152600f60205260409020600a015410610a03576001600160a01b0381166000908152600f6020526040902060090154610f309060019063ffffffff61183d16565b6001600160a01b0382166000818152600f6020526040808220600901849055517f082e58bd2e7f7268b36ef0ce2331f7bfd29c08979529cbe85f06375fcecd43729190a350565b333214610fbf576040805162461bcd60e51b8152602060048201526011602482015270736f7272792068756d616e73206f6e6c7960781b604482015290519081900360640190fd5b610fc76112d4565b15610fd65761092f33346113e8565b6000828152601060205260409020546001600160a01b031661095933348484611494565b6010602052600090815260409020546001600160a01b031681565b60128160658110610d5057fe5b60035481565b60085481565b333214611076576040805162461bcd60e51b8152602060048201526011602482015270736f7272792068756d616e73206f6e6c7960781b604482015290519081900360640190fd5b6002546040516379614c5f60e11b8152602060048201908152602482018490526000926001600160a01b03169163f2c298be9186918691908190604401848480828437600083820152604051601f909101601f191690920195506020945090925050508083038186803b1580156110ec57600080fd5b505afa158015611100573d6000803e3d6000fd5b505050506040513d602081101561111657600080fd5b5051905033662386f26fc1000034101561116d576040805162461bcd60e51b81526020600482015260136024820152721a5b9cdd59999a58da595b9d08185b5bdd5b9d606a1b604482015290519081900360640190fd5b6000828152601160205260409020546001600160a01b0316156111c9576040805162461bcd60e51b815260206004820152600f60248201526e1b985b59481c9959da5cdd195c9959608a1b604482015290519081900360640190fd5b6001600160a01b0381166000908152600f602052604090206003015460ff1661127357600e8054600190810182556001600160a01b0383166000818152600f6020818152604080842060038101805460ff19168817905587548155600901958655955483526010815285832080546001600160a01b03191685179055838352529154925190917f082e58bd2e7f7268b36ef0ce2331f7bfd29c08979529cbe85f06375fcecd437291a35b6001600160a01b0381166000818152600f602090815260408083206001018690558583526011909152902080546001600160a01b03191690911790556112cd7383d0d842e6db3b020f384a2af11bd14787bec8e734611445565b5050505050565b60045460009060ff166113de5742600c54146113de5742600c81905560009062015180900490506000809054906101000a90046001600160a01b03166001600160a01b031663957aa58c6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561134a57600080fd5b505af115801561135e573d6000803e3d6000fd5b505050506040513d602081101561137457600080fd5b505161138c576004805460ff19166001179055426003555b80600b5410156113dc57600b546000908152600660205260409020546007546113ba9163ffffffff611a1316565b600755600b80546000908152600660205260408120558054600101905561138c565b505b5060045460ff1690565b60405160009083906001600160a01b0382169084908481818185875af1925050503d8060008114611435576040519150601f19603f3d011682016040523d82523d6000602084013e61143a565b606091505b509095945050505050565b600080839050828160405161145990611d7a565b6001600160a01b039091168152604051908190036020019082f080158015611485573d6000803e3d6000fd5b50600193505050505b92915050565b61149d846118ea565b633b9aca008310156114e05760405162461bcd60e51b8152600401808060200182810382526021815260200180611db96021913960400191505060405180910390fd5b69021e19e0c9bab2400000831115611530576040805162461bcd60e51b815260206004820152600e60248201526d6e6f20766974616c696b2c206e6f60901b604482015290519081900360640190fd5b606482111561153e57606491505b60006012836065811061154d57fe5b0154670de0b6b3a7640000019050600081611579670de0b6b3a7640000876119eb90919063ffffffff16565b8161158057fe5b0490506000600160009054906101000a90046001600160a01b03166001600160a01b03166310a76c2e600854846040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b1580156115e857600080fd5b505afa1580156115fc573d6000803e3d6000fd5b505050506040513d602081101561161257600080fd5b50519050600085156116245781611627565b60005b600b5460085491925087016000190190611641908561183d565b600855600954611657908463ffffffff61183d16565b600955600081815260066020526040902054611679908363ffffffff61183d16565b60008281526006602052604090205560075461169b908363ffffffff61183d16565b6007556001600160a01b0389166000908152600f60205260409020600401546116ca908963ffffffff61183d16565b6001600160a01b038a166000908152600f602052604090206004810191909155600501546116fe908463ffffffff61183d16565b6001600160a01b038a166000908152600f60205260409020600581019190915560060154611732908363ffffffff61183d16565b6001600160a01b038a166000908152600f60209081526040808320600601939093556005815282822084835290522054611772908363ffffffff61183d16565b6001600160a01b038a1660009081526005602090815260408083208584529091529020556117a08887611a28565b6117ab898985611b73565b600b5460408051848152602081018a905281516001600160a01b038d16927f4b9622a7ffcb20551847f4dd71b5b98c4267e10d7d338a6c7fb7b26d45d854e0928290030190a36040805184815290516001600160a01b038b16916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3505050505050505050565b8181018281101561148e57600080fd5b60008061185983611bf0565b6001600160a01b0384166000908152600f6020526040812060020154919250611888838363ffffffff61183d16565b905080156118e2576001600160a01b0385166000908152600f602052604081206002810191909155600801546118c590849063ffffffff61183d16565b6001600160a01b0386166000908152600f60205260409020600801555b949350505050565b6001600160a01b0381166000908152600f60205260408120600701549081156119c7575b600b5482101561197e576001600160a01b038316600090815260056020908152604080832085845290915290205461194d90829063ffffffff61183d16565b6001600160a01b0384166000908152600560209081526040808320868452909152812055600190920191905061190e565b6001600160a01b0383166000908152600f60205260409020600601546119aa908263ffffffff611a1316565b6001600160a01b0384166000908152600f60205260409020600601555b5050600b546001600160a01b039091166000908152600f6020526040902060070155565b6000826119fa5750600061148e565b5081810281838281611a0857fe5b041461148e57600080fd5b600082821115611a2257600080fd5b50900390565b6001600160a01b0381166000908152600f60205260409020600301546005830490600a84049060ff1615611b36576001600160a01b0383166000908152600f6020526040812060090154611a8390600663ffffffff61183d16565b905060006064611a99878463ffffffff6119eb16565b81611aa057fe5b6001600160a01b0387166000908152600f60205260409020600201549190049150611ad1908263ffffffff61183d16565b6001600160a01b0386166000908152600f602052604090206002810191909155600a0154611b05908263ffffffff61183d16565b6001600160a01b0386166000908152600f60205260409020600a0155611b31848263ffffffff611a1316565b935050505b611b54739933ad4d38702cdc28c5db2f421f1f02cf53078082611445565b506112cd7383d0d842e6db3b020f384a2af11bd14787bec8e783611445565b60006014611b8884600363ffffffff6119eb16565b81611b8f57fe5b04905060006064611ba785603763ffffffff6119eb16565b81611bae57fe5b0490506000611bbe868486611c48565b9050611be582611bd983600a5461183d90919063ffffffff16565b9063ffffffff61183d16565b600a55505050505050565b6001600160a01b0381166000908152600f602052604081206008810154600590910154600d5461148e9291670de0b6b3a764000091611c349163ffffffff6119eb16565b81611c3b57fe5b049063ffffffff611a1316565b6009546000908190611c6885670de0b6b3a764000063ffffffff6119eb16565b81611c6f57fe5b049050611c8781600d5461183d90919063ffffffff16565b600d556000670de0b6b3a7640000611ca5838663ffffffff6119eb16565b81611cac57fe5b049050611cfd600f6000886001600160a01b03166001600160a01b0316815260200190815260200160002060080154611bd983670de0b6b3a7640000611c3489600d546119eb90919063ffffffff16565b6001600160a01b0387166000908152600f6020526040902060080155600954611d5190670de0b6b3a764000090611d3b90859063ffffffff6119eb16565b81611d4257fe5b8791900463ffffffff611a1316565b9695505050505050565b60405180610c8001604052806064906020820280388339509192915050565b603280611d878339019056fe60806040526040516032380380603283398181016040526020811015602357600080fd5b50516001600160a01b038116fffe706f636b6574206c696e743a206e6f7420612076616c69642063757272656e6379a265627a7a7231582078f7dc0663f1419e97d7fc0c07346c894c816feeb9b5dae00925b35d680d542464736f6c63430005100032
Deployed Bytecode
0x6080604052600436106101f95760003560e01c8063585166611161010d578063b74e452b116100a0578063d93be4331161006f578063d93be433146106c2578063e7ee6ad6146106ec578063efbe1c1c14610716578063f0da93441461072b578063f2c298be14610740576101f9565b8063b74e452b14610649578063cce7ec131461065e578063d55ec6971461068a578063d6febde81461069f576101f9565b806395d89b41116100dc57806395d89b41146105f5578063a6f2ae3a146101f9578063aaaadb581461060a578063b3bb8cd414610634576101f9565b8063585166611461055057806370a0823114610565578063729fc61314610598578063757b0884146105cb576101f9565b806318160ddd116101905780633ef7c6871161015f5780633ef7c68714610413578063402e912f14610461578063489b3fee146104765780634c54e1b5146104a95780634e71d92d1461053b576101f9565b806318160ddd14610385578063274806e01461039a578063313ce567146103d35780633ccfd60b146103fe576101f9565b8063116134ee116101cc578063116134ee146102ec57806312fa6feb1461030157806316f0115b1461032a57806317604f711461033f576101f9565b8063018a25e81461020357806303314efa1461022a57806306fdde031461023f5780630ddeb632146102c9575b6102016107b0565b005b34801561020f57600080fd5b506102186107f5565b60408051918252519081900360200190f35b34801561023657600080fd5b5061021861089c565b34801561024b57600080fd5b506102546108a2565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561028e578181015183820152602001610276565b50505050905090810190601f1680156102bb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610201600480360360408110156102df57600080fd5b50803590602001356108d0565b3480156102f857600080fd5b5061021861095f565b34801561030d57600080fd5b50610316610965565b604080519115158252519081900360200190f35b34801561033657600080fd5b5061021861096e565b34801561034b57600080fd5b506103696004803603602081101561036257600080fd5b5035610974565b604080516001600160a01b039092168252519081900360200190f35b34801561039157600080fd5b5061021861098f565b3480156103a657600080fd5b50610218600480360360408110156103bd57600080fd5b506001600160a01b0381351690602001356109ac565b3480156103df57600080fd5b506103e86109c9565b6040805160ff9092168252519081900360200190f35b34801561040a57600080fd5b506102016109ce565b34801561041f57600080fd5b50610428610a06565b6040518082610c8080838360005b8381101561044e578181015183820152602001610436565b5050505090500191505060405180910390f35b34801561046d57600080fd5b50610218610a4b565b34801561048257600080fd5b506104286004803603602081101561049957600080fd5b50356001600160a01b0316610a51565b3480156104b557600080fd5b506104dc600480360360208110156104cc57600080fd5b50356001600160a01b0316610aad565b604080519c8d5260208d019b909b528b8b019990995296151560608b015294151560808a015260a089019390935260c088019190915260e087015261010086015261012085015261014084015261016083015251908190036101800190f35b34801561054757600080fd5b50610201610b07565b34801561055c57600080fd5b50610218610c6a565b34801561057157600080fd5b506102186004803603602081101561058857600080fd5b50356001600160a01b0316610c70565b3480156105a457600080fd5b50610218600480360360208110156105bb57600080fd5b50356001600160a01b0316610ca5565b3480156105d757600080fd5b50610218600480360360208110156105ee57600080fd5b5035610d43565b34801561060157600080fd5b50610254610d57565b34801561061657600080fd5b506102186004803603602081101561062d57600080fd5b5035610d76565b34801561064057600080fd5b50610218610d88565b34801561065557600080fd5b50610218610d8e565b6102016004803603604081101561067457600080fd5b506001600160a01b038135169060200135610d94565b34801561069657600080fd5b50610201610e27565b610201600480360360408110156106b557600080fd5b5080359060200135610f77565b3480156106ce57600080fd5b50610369600480360360208110156106e557600080fd5b5035610ffa565b3480156106f857600080fd5b506102186004803603602081101561070f57600080fd5b5035611015565b34801561072257600080fd5b50610218611022565b34801561073757600080fd5b50610218611028565b6102016004803603602081101561075657600080fd5b81019060208101813564010000000081111561077157600080fd5b82018360208201111561078357600080fd5b803590602001918460018302840111640100000000831117156107a557600080fd5b50909250905061102e565b6107b86112d4565b156107e657333214156107d5576107cf33346113e8565b506107e1565b6107df3334611445565b505b6107f3565b6107f33334600080611494565b565b6001546009546000916001600160a01b031690636deba2289061082690670de0b6b3a764000063ffffffff61183d16565b670de0b6b3a76400006040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b15801561086a57600080fd5b505afa15801561087e573d6000803e3d6000fd5b505050506040513d602081101561089457600080fd5b505190505b90565b60095481565b60405180604001604052806012815260200171151a1a5c9908119b1bdbdc88135d5d1d585b60721b81525081565b333214610918576040805162461bcd60e51b8152602060048201526011602482015270736f7272792068756d616e73206f6e6c7960781b604482015290519081900360640190fd5b6109206112d4565b156109355761092f33346113e8565b5061095b565b6000828152601160205260409020546001600160a01b031661095933348484611494565b505b5050565b600d5481565b60045460ff1681565b600a5481565b6011602052600090815260409020546001600160a01b031681565b60045460009060ff16156109a557506000610899565b5060095490565b600560209081526000928352604080842090915290825290205481565b601281565b60006109d93361184d565b90508015610a0357333214156109f9576109f333826113e8565b50610a03565b61095b3382611445565b50565b610a0e611d5b565b60005b6064811015610a4757600b548101600090815260066020526040902054828260648110610a3a57fe5b6020020152600101610a11565b5090565b60075481565b610a59611d5b565b60005b6064811015610aa6576001600160a01b0383166000908152600560209081526040808320600b5485018452909152902054828260648110610a9957fe5b6020020152600101610a5c565b505b919050565b600f60205260009081526040902080546001820154600283015460038401546004850154600586015460068701546007880154600889015460098a0154600a909a015498999798969760ff8088169861010090980416968c565b333214610b4f576040805162461bcd60e51b8152602060048201526011602482015270736f7272792068756d616e73206f6e6c7960781b604482015290519081900360640190fd5b610b576112d4565b610b92576040805162461bcd60e51b81526020600482015260076024820152661b9bdd081e595d60ca1b604482015290519081900360640190fd5b336000818152600f6020526040902060030154610100900460ff1615610bf1576040805162461bcd60e51b815260206004820152600f60248201526e185b1c9958591e4818db185a5b5959608a1b604482015290519081900360640190fd5b610bfa816118ea565b6007546001600160a01b0382166000908152600f6020526040812060060154600a54919291610c2e9163ffffffff6119eb16565b81610c3557fe5b6001600160a01b0384166000908152600f60205260409020600301805461ff00191661010017905504905061095982826113e8565b600e5481565b60045460009060ff1615610c8657506000610aa8565b506001600160a01b03166000908152600f602052604090206005015490565b6001600160a01b0381166000908152600f602052604081206006810154600790910154828115610d1c575b600b54821015610d1c576001600160a01b0385166000908152600560209081526040808320858452909152902054610d0f90829063ffffffff61183d16565b9050600182019150610cd0565b8215610d3757610d32838263ffffffff611a1316565b610d3a565b60005b95945050505050565b607781600a8110610d5057fe5b0154905081565b6040518060400160405280600381526020016233464d60e81b81525081565b60066020526000908152604090205481565b600c5481565b600b5481565b333214610ddc576040805162461bcd60e51b8152602060048201526011602482015270736f7272792068756d616e73206f6e6c7960781b604482015290519081900360640190fd5b610de46112d4565b15610df35761092f33346113e8565b6001600160a01b0382166000908152600f602052604090206003015460ff16610e1b57600091505b61095b33348385611494565b333214610e6f576040805162461bcd60e51b8152602060048201526011602482015270736f7272792068756d616e73206f6e6c7960781b604482015290519081900360640190fd5b336000818152600f602052604090206003015460ff16610e8e57600080fd5b6001600160a01b0381166000908152600f6020526040902060090154600a11610eb657600080fd5b6001600160a01b0381166000908152600f6020526040902060090154607790600a8110610edf57fe5b01546001600160a01b0382166000908152600f60205260409020600a015410610a03576001600160a01b0381166000908152600f6020526040902060090154610f309060019063ffffffff61183d16565b6001600160a01b0382166000818152600f6020526040808220600901849055517f082e58bd2e7f7268b36ef0ce2331f7bfd29c08979529cbe85f06375fcecd43729190a350565b333214610fbf576040805162461bcd60e51b8152602060048201526011602482015270736f7272792068756d616e73206f6e6c7960781b604482015290519081900360640190fd5b610fc76112d4565b15610fd65761092f33346113e8565b6000828152601060205260409020546001600160a01b031661095933348484611494565b6010602052600090815260409020546001600160a01b031681565b60128160658110610d5057fe5b60035481565b60085481565b333214611076576040805162461bcd60e51b8152602060048201526011602482015270736f7272792068756d616e73206f6e6c7960781b604482015290519081900360640190fd5b6002546040516379614c5f60e11b8152602060048201908152602482018490526000926001600160a01b03169163f2c298be9186918691908190604401848480828437600083820152604051601f909101601f191690920195506020945090925050508083038186803b1580156110ec57600080fd5b505afa158015611100573d6000803e3d6000fd5b505050506040513d602081101561111657600080fd5b5051905033662386f26fc1000034101561116d576040805162461bcd60e51b81526020600482015260136024820152721a5b9cdd59999a58da595b9d08185b5bdd5b9d606a1b604482015290519081900360640190fd5b6000828152601160205260409020546001600160a01b0316156111c9576040805162461bcd60e51b815260206004820152600f60248201526e1b985b59481c9959da5cdd195c9959608a1b604482015290519081900360640190fd5b6001600160a01b0381166000908152600f602052604090206003015460ff1661127357600e8054600190810182556001600160a01b0383166000818152600f6020818152604080842060038101805460ff19168817905587548155600901958655955483526010815285832080546001600160a01b03191685179055838352529154925190917f082e58bd2e7f7268b36ef0ce2331f7bfd29c08979529cbe85f06375fcecd437291a35b6001600160a01b0381166000818152600f602090815260408083206001018690558583526011909152902080546001600160a01b03191690911790556112cd7383d0d842e6db3b020f384a2af11bd14787bec8e734611445565b5050505050565b60045460009060ff166113de5742600c54146113de5742600c81905560009062015180900490506000809054906101000a90046001600160a01b03166001600160a01b031663957aa58c6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561134a57600080fd5b505af115801561135e573d6000803e3d6000fd5b505050506040513d602081101561137457600080fd5b505161138c576004805460ff19166001179055426003555b80600b5410156113dc57600b546000908152600660205260409020546007546113ba9163ffffffff611a1316565b600755600b80546000908152600660205260408120558054600101905561138c565b505b5060045460ff1690565b60405160009083906001600160a01b0382169084908481818185875af1925050503d8060008114611435576040519150601f19603f3d011682016040523d82523d6000602084013e61143a565b606091505b509095945050505050565b600080839050828160405161145990611d7a565b6001600160a01b039091168152604051908190036020019082f080158015611485573d6000803e3d6000fd5b50600193505050505b92915050565b61149d846118ea565b633b9aca008310156114e05760405162461bcd60e51b8152600401808060200182810382526021815260200180611db96021913960400191505060405180910390fd5b69021e19e0c9bab2400000831115611530576040805162461bcd60e51b815260206004820152600e60248201526d6e6f20766974616c696b2c206e6f60901b604482015290519081900360640190fd5b606482111561153e57606491505b60006012836065811061154d57fe5b0154670de0b6b3a7640000019050600081611579670de0b6b3a7640000876119eb90919063ffffffff16565b8161158057fe5b0490506000600160009054906101000a90046001600160a01b03166001600160a01b03166310a76c2e600854846040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b1580156115e857600080fd5b505afa1580156115fc573d6000803e3d6000fd5b505050506040513d602081101561161257600080fd5b50519050600085156116245781611627565b60005b600b5460085491925087016000190190611641908561183d565b600855600954611657908463ffffffff61183d16565b600955600081815260066020526040902054611679908363ffffffff61183d16565b60008281526006602052604090205560075461169b908363ffffffff61183d16565b6007556001600160a01b0389166000908152600f60205260409020600401546116ca908963ffffffff61183d16565b6001600160a01b038a166000908152600f602052604090206004810191909155600501546116fe908463ffffffff61183d16565b6001600160a01b038a166000908152600f60205260409020600581019190915560060154611732908363ffffffff61183d16565b6001600160a01b038a166000908152600f60209081526040808320600601939093556005815282822084835290522054611772908363ffffffff61183d16565b6001600160a01b038a1660009081526005602090815260408083208584529091529020556117a08887611a28565b6117ab898985611b73565b600b5460408051848152602081018a905281516001600160a01b038d16927f4b9622a7ffcb20551847f4dd71b5b98c4267e10d7d338a6c7fb7b26d45d854e0928290030190a36040805184815290516001600160a01b038b16916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3505050505050505050565b8181018281101561148e57600080fd5b60008061185983611bf0565b6001600160a01b0384166000908152600f6020526040812060020154919250611888838363ffffffff61183d16565b905080156118e2576001600160a01b0385166000908152600f602052604081206002810191909155600801546118c590849063ffffffff61183d16565b6001600160a01b0386166000908152600f60205260409020600801555b949350505050565b6001600160a01b0381166000908152600f60205260408120600701549081156119c7575b600b5482101561197e576001600160a01b038316600090815260056020908152604080832085845290915290205461194d90829063ffffffff61183d16565b6001600160a01b0384166000908152600560209081526040808320868452909152812055600190920191905061190e565b6001600160a01b0383166000908152600f60205260409020600601546119aa908263ffffffff611a1316565b6001600160a01b0384166000908152600f60205260409020600601555b5050600b546001600160a01b039091166000908152600f6020526040902060070155565b6000826119fa5750600061148e565b5081810281838281611a0857fe5b041461148e57600080fd5b600082821115611a2257600080fd5b50900390565b6001600160a01b0381166000908152600f60205260409020600301546005830490600a84049060ff1615611b36576001600160a01b0383166000908152600f6020526040812060090154611a8390600663ffffffff61183d16565b905060006064611a99878463ffffffff6119eb16565b81611aa057fe5b6001600160a01b0387166000908152600f60205260409020600201549190049150611ad1908263ffffffff61183d16565b6001600160a01b0386166000908152600f602052604090206002810191909155600a0154611b05908263ffffffff61183d16565b6001600160a01b0386166000908152600f60205260409020600a0155611b31848263ffffffff611a1316565b935050505b611b54739933ad4d38702cdc28c5db2f421f1f02cf53078082611445565b506112cd7383d0d842e6db3b020f384a2af11bd14787bec8e783611445565b60006014611b8884600363ffffffff6119eb16565b81611b8f57fe5b04905060006064611ba785603763ffffffff6119eb16565b81611bae57fe5b0490506000611bbe868486611c48565b9050611be582611bd983600a5461183d90919063ffffffff16565b9063ffffffff61183d16565b600a55505050505050565b6001600160a01b0381166000908152600f602052604081206008810154600590910154600d5461148e9291670de0b6b3a764000091611c349163ffffffff6119eb16565b81611c3b57fe5b049063ffffffff611a1316565b6009546000908190611c6885670de0b6b3a764000063ffffffff6119eb16565b81611c6f57fe5b049050611c8781600d5461183d90919063ffffffff16565b600d556000670de0b6b3a7640000611ca5838663ffffffff6119eb16565b81611cac57fe5b049050611cfd600f6000886001600160a01b03166001600160a01b0316815260200190815260200160002060080154611bd983670de0b6b3a7640000611c3489600d546119eb90919063ffffffff16565b6001600160a01b0387166000908152600f6020526040902060080155600954611d5190670de0b6b3a764000090611d3b90859063ffffffff6119eb16565b81611d4257fe5b8791900463ffffffff611a1316565b9695505050505050565b60405180610c8001604052806064906020820280388339509192915050565b603280611d878339019056fe60806040526040516032380380603283398181016040526020811015602357600080fd5b50516001600160a01b038116fffe706f636b6574206c696e743a206e6f7420612076616c69642063757272656e6379a265627a7a7231582078f7dc0663f1419e97d7fc0c07346c894c816feeb9b5dae00925b35d680d542464736f6c63430005100032
Deployed Bytecode Sourcemap
27:19311:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10360:5;:3;:5::i;:::-;27:19311;16504:155;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16504:155:0;;;:::i;:::-;;;;;;;;;;;;;;;;1710:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1710:21:0;;;:::i;18329:55::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18329:55:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;18329:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9482:392;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9482:392:0;;;;;;;:::i;1937:19::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1937:19:0;;;:::i;1314:17::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1314:17:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;1762:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1762:19:0;;;:::i;2218:46::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2218:46:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2218:46:0;;:::i;:::-;;;;-1:-1:-1;;;;;2218:46:0;;;;;;;;;;;;;;18484:115;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18484:115:0;;;:::i;1419:73::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1419:73:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1419:73:0;;;;;;;;:::i;18438:37::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18438:37:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15236:358;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15236:358:0;;;:::i;17958:297::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17958:297:0;;;:::i;:::-;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;17958:297:0;;;;;;;;;;;;;;;;1589:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1589:30:0;;;:::i;17476:334::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17476:334:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17476:334:0;-1:-1:-1;;;;;17476:334:0;;:::i;2067:40::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2067:40:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2067:40:0;-1:-1:-1;;;;;2067:40:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14721:449;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14721:449:0;;;:::i;1989:21::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1989:21:0;;;:::i;18607:136::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18607:136:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18607:136:0;-1:-1:-1;;;;;18607:136:0;;:::i;16789:513::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16789:513:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16789:513:0;-1:-1:-1;;;;;16789:513:0;;:::i;5225:276::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5225:276:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5225:276:0;;:::i;18391:40::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18391:40:0;;;:::i;1499:47::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1499:47:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1499:47:0;;:::i;1884:19::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1884:19:0;;;:::i;1831:20::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1831:20:0;;;:::i;8614:406::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8614:406:0;;;;;;;;:::i;8154:418::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8154:418:0;;;:::i;9057:386::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9057:386:0;;;;;;;:::i;2135:44::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2135:44:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2135:44:0;;:::i;2456:2725::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2456:2725:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2456:2725:0;;:::i;1289:18::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1289:18:0;;;:::i;1650:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1650:25:0;;;:::i;7220:811::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7220:811:0;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;7220:811:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7220:811: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;-1:-1;7220:811:0;;-1:-1:-1;7220:811:0;-1:-1:-1;7220:811:0;:::i;9939:356::-;10025:6;:4;:6::i;:::-;10022:208;;;10051:10;10065:9;10051:23;10048:149;;;10093:32;10103:10;10115:9;10093;:32::i;:::-;;10048:149;;;10162:35;10175:10;10187:9;10162:12;:35::i;:::-;;10048:149;10212:7;;10022:208;10242:45;10250:10;10262:9;10273:1;10284;10242:7;:45::i;:::-;9939:356::o;16504:155::-;16576:11;;16598:6;;16549:7;;-1:-1:-1;;;;;16576:11:0;;:21;;16598:31;;16609:19;16598:31;:10;:31;:::i;:::-;16631:19;16576:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16576:75:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16576:75:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16576:75:0;;-1:-1:-1;16504:155:0;;:::o;1710:21::-;;;;:::o;18329:55::-;;;;;;;;;;;;;;-1:-1:-1;;;18329:55:0;;;;:::o;9482:392::-;5856:10;5870:9;5856:23;5848:53;;;;;-1:-1:-1;;;5848:53:0;;;;;;;;;;;;-1:-1:-1;;;5848:53:0;;;;;;;;;;;;;;;9620:6;:4;:6::i;:::-;9617:90;;;9642:32;9652:10;9664:9;9642;:32::i;:::-;;9689:7;;9617:90;9742:22;9783:23;;;:11;:23;;;;;;-1:-1:-1;;;;;9783:23:0;9821:45;9829:10;9841:9;9852:5;9783:23;9821:7;:45::i;:::-;5912:1;;9482:392;;:::o;1937:19::-;;;;:::o;1314:17::-;;;;;;:::o;1762:19::-;;;;:::o;2218:46::-;;;;;;;;;;;;-1:-1:-1;;;;;2218:46:0;;:::o;18484:115::-;18552:5;;18529:7;;18552:5;;18549:18;;;-1:-1:-1;18566:1:0;18559:8;;18549:18;-1:-1:-1;18585:6:0;;18484:115;:::o;1419:73::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;18438:37::-;18473:2;18438:37;:::o;15236:358::-;15320:12;15350:28;15367:10;15350:16;:28::i;:::-;15343:35;-1:-1:-1;15411:8:0;;15407:180;;15439:10;15453:9;15439:23;15436:139;;;15481:27;15491:10;15503:4;15481:9;:27::i;:::-;;15436:139;;;15545:30;15558:10;15570:4;15545:12;:30::i;15436:139::-;15236:358;:::o;17958:297::-;18038:48;;:::i;:::-;18108:9;18104:110;2368:3;18121:1;:17;18104:110;;;18194:5;;:7;;18181:21;;;;:12;:21;;;;;;18159:16;18200:1;18159:19;;;;;;;;;;:43;18140:3;;18104:110;;;-1:-1:-1;17958:297:0;:::o;1589:30::-;;;;:::o;17476:334::-;17577:48;;:::i;:::-;17647:9;17643:126;2368:3;17660:1;:17;17643:126;;;-1:-1:-1;;;;;17721:27:0;;;;;;:18;:27;;;;;;;;17749:5;;:7;;17721:36;;;;;;;;17699:16;17755:1;17699:19;;;;;;;;;;:58;17679:3;;17643:126;;;-1:-1:-1;17476:334:0;;;;:::o;2067:40::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14721:449::-;5856:10;5870:9;5856:23;5848:53;;;;;-1:-1:-1;;;5848:53:0;;;;;;;;;;;;-1:-1:-1;;;5848:53:0;;;;;;;;;;;;;;;14797:6;:4;:6::i;:::-;14789:26;;;;;-1:-1:-1;;;14789:26:0;;;;;;;;;;;;-1:-1:-1;;;14789:26:0;;;;;;;;;;;;;;;14878:10;14848:27;14908:19;;;:6;:19;;;;;:27;;;;;;;;14907:28;14899:56;;;;;-1:-1:-1;;;14899:56:0;;;;;;;;;;;;-1:-1:-1;;;14899:56:0;;;;;;;;;;;;;;;14966:29;14983:11;14966:16;:29::i;:::-;15061:15;;-1:-1:-1;;;;;15032:19:0;;15006:14;15032:19;;;:6;:19;;;;;:25;;;15023:4;;15006:14;;15061:15;15023:35;;;:8;:35;:::i;:::-;:53;;;;;-1:-1:-1;;;;;15087:19:0;;;;;;:6;:19;;;;;:27;;:34;;-1:-1:-1;;15087:34:0;;;;;15023:53;;-1:-1:-1;15132:30:0;15094:11;15023:53;15132:9;:30::i;1989:21::-;;;;:::o;18607:136::-;18684:5;;18661:7;;18684:5;;18681:18;;;-1:-1:-1;18698:1:0;18691:8;;18681:18;-1:-1:-1;;;;;;18717:11:0;;;;;:6;:11;;;;;:18;;;;18607:136::o;16789:513::-;-1:-1:-1;;;;;16920:15:0;;16879:7;16920:15;;;:6;:15;;;;;:21;;;;16969:28;;;;;16879:7;17045:11;;17042:196;;17073:152;17088:5;;17079:6;:14;17073:152;;;-1:-1:-1;;;;;17143:27:0;;;;;;:18;:27;;;;;;;;:35;;;;;;;;;17127:52;;:11;;:52;:15;:52;:::i;:::-;17113:66;;17208:1;17198:11;;;;17073:152;;;17255:10;;:39;;17272:22;:5;17282:11;17272:22;:9;:22;:::i;:::-;17255:39;;;17268:1;17255:39;17248:46;16789:513;-1:-1:-1;;;;;16789:513:0:o;5225:276::-;;;;;;;;;;;;;-1:-1:-1;5225:276:0;:::o;18391:40::-;;;;;;;;;;;;;;-1:-1:-1;;;18391:40:0;;;;:::o;1499:47::-;;;;;;;;;;;;;:::o;1884:19::-;;;;:::o;1831:20::-;;;;:::o;8614:406::-;5856:10;5870:9;5856:23;5848:53;;;;;-1:-1:-1;;;5848:53:0;;;;;;;;;;;;-1:-1:-1;;;5848:53:0;;;;;;;;;;;;;;;8756:6;:4;:6::i;:::-;8753:90;;;8778:32;8788:10;8800:9;8778;:32::i;8753:90::-;-1:-1:-1;;;;;8886:14:0;;;;;;:6;:14;;;;;:22;;;;;8882:73;;8941:1;8924:19;;8882:73;8967:45;8975:10;8987:9;8998:5;9005:6;8967:7;:45::i;8154:418::-;5856:10;5870:9;5856:23;5848:53;;;;;-1:-1:-1;;;5848:53:0;;;;;;;;;;;;-1:-1:-1;;;5848:53:0;;;;;;;;;;;;;;;8243:10;8226:14;8272;;;:6;:14;;;;;:22;;;;;8264:31;;;;;;-1:-1:-1;;;;;8314:14:0;;;;;;:6;:14;;;;;:20;;;2406:2;-1:-1:-1;8306:40:0;;;;;;-1:-1:-1;;;;;8407:14:0;;;;;;:6;:14;;;;;:20;;;8395:11;;:33;;;;;;;;;-1:-1:-1;;;;;8362:14:0;;;;;;:6;:14;;;;;:29;;;:66;8359:206;;-1:-1:-1;;;;;8476:14:0;;;;;;:6;:14;;;;;:20;;;8468:29;;8469:1;;8468:29;:7;:29;:::i;:::-;-1:-1:-1;;;;;8445:14:0;;;;;;:6;:14;;;;;;:20;;:52;;;8517:36;;;8445:14;8517:36;5912:1;8154:418::o;9057:386::-;5856:10;5870:9;5856:23;5848:53;;;;;-1:-1:-1;;;5848:53:0;;;;;;;;;;;;-1:-1:-1;;;5848:53:0;;;;;;;;;;;;;;;9193:6;:4;:6::i;:::-;9190:90;;;9215:32;9225:10;9237:9;9215;:32::i;9190:90::-;9315:22;9356:19;;;:9;:19;;;;;;-1:-1:-1;;;;;9356:19:0;9390:45;9398:10;9410:9;9421:5;9356:19;9390:7;:45::i;2135:44::-;;;;;;;;;;;;-1:-1:-1;;;;;2135:44:0;;:::o;2456:2725::-;;;;;;;;;1289:18;;;;:::o;1650:25::-;;;;:::o;7220:811::-;5856:10;5870:9;5856:23;5848:53;;;;;-1:-1:-1;;;5848:53:0;;;;;;;;;;;;-1:-1:-1;;;5848:53:0;;;;;;;;;;;;;;;7353:6;;:28;;-1:-1:-1;;;7353:28:0;;;;;;;;;;;;;;;7337:13;;-1:-1:-1;;;;;7353:6:0;;:15;;7369:11;;;;7353:28;;;;;7369:11;;;;7353:28;1:33:-1;99:1;81:16;;;74:27;7353:28:0;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;;-1:-1;7353:28:0;;-1:-1:-1;7353:28:0;;-1:-1:-1;;;7353:28:0;;;;;;;;5:2:-1;;;;30:1;27;20:12;5:2;7353:28:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7353:28:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7353:28:0;;-1:-1:-1;7409:10:0;7451:17;7438:9;:30;;7430:62;;;;;-1:-1:-1;;;7430:62:0;;;;;;;;;;;;-1:-1:-1;;;7430:62:0;;;;;;;;;;;;;;;7541:1;7511:18;;;:11;:18;;;;;;-1:-1:-1;;;;;7511:18:0;:32;7503:60;;;;;-1:-1:-1;;;7503:60:0;;;;;;;;;;;;-1:-1:-1;;;7503:60:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;7580:14:0;;;;;;:6;:14;;;;;:22;;;;;7576:286;;7618:6;:11;;7628:1;7618:11;;;;;-1:-1:-1;;;;;7644:14:0;;7618:6;7644:14;;;:6;:14;;;;;;;;:22;;;:29;;-1:-1:-1;;7644:29:0;;;;;7708:6;;7688:26;;7729:20;;:24;;;7778:6;;7768:17;;:9;:17;;;;;:26;;-1:-1:-1;;;;;;7768:26:0;;;;;7829:14;;;;:20;;7814:36;;7644:14;;7814:36;;;7576:286;-1:-1:-1;;;;;7915:14:0;;;;;;:6;:14;;;;;;;;:19;;:27;;;7953:18;;;:11;:18;;;;;:27;;-1:-1:-1;;;;;;7953:27:0;;;;;;7991:30;1142:42;8011:9;7991:12;:30::i;:::-;;5912:1;;7220:811;;:::o;6364:758::-;6441:5;;6415:4;;6441:5;;6437:645;;6475:3;6467:4;;:11;6463:608;;6506:3;6499:4;:10;;;6528:14;;6552:6;;6545:13;6528:30;;6670:3;;;;;;;;;-1:-1:-1;;;;;6670:3:0;-1:-1:-1;;;;;6670:8:0;;:10;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6670:10:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6670:10:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6670:10:0;6667:107;;6710:5;:12;;-1:-1:-1;;6710:12:0;6718:4;6710:12;;;6751:3;6745;:9;6667:107;6868:6;6860:5;;:14;6853:203;;;6950:5;;6937:19;;;;:12;:19;;;;;;6917:15;;:40;;;:19;:40;:::i;:::-;6899:15;:58;6993:5;;;7002:1;6980:19;;;:12;:19;;;;;:23;7026:10;;7035:1;7026:10;;;6853:203;;;6463:608;;-1:-1:-1;7109:5:0;;;;6364:758;:::o;18903:202::-;19065:32;;18967:12;;19036:2;;-1:-1:-1;;;;;19065:14:0;;;19086:6;;18967:12;19065:32;18967:12;19065:32;19086:6;19065:14;:32;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;-1:-1;19051:46:0;;18903:202;-1:-1:-1;;;;;18903:202:0:o;19113:220::-;19180:12;19205:25;19249:2;19205:48;;19285:6;19293:9;19264:39;;;;;:::i;:::-;-1:-1:-1;;;;;19264:39:0;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;19321:4:0;;-1:-1:-1;;;;19113:220:0;;;;;:::o;10432:1664::-;10540:24;10557:6;10540:16;:24::i;:::-;10601:10;10593:4;:18;;10585:64;;;;-1:-1:-1;;;10585:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10676:23;10668:4;:31;;10660:58;;;;;-1:-1:-1;;;10660:58:0;;;;;;;;;;;;-1:-1:-1;;;10660:58:0;;;;;;;;;;;;;;;2368:3;10734:5;:23;10731:77;;;2368:3;10773:23;;10731:77;10818:13;10834:4;10839:5;10834:11;;;;;;;;;10848:19;10834:33;10818:49;;10878:21;10934:5;10902:29;10911:19;10902:4;:8;;:29;;;;:::i;:::-;:37;;;;;;10878:61;;11165:14;11182:11;;;;;;;;;-1:-1:-1;;;;;11182:11:0;-1:-1:-1;;;;;11182:21:0;;11204:10;;11216:13;11182:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11182:48:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11182:48:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11182:48:0;;-1:-1:-1;11241:13:0;11258:10;;11257:23;;11274:6;11257:23;;;11271:1;11257:23;11309:5;;11385:10;;11241:39;;-1:-1:-1;11309:13:0;;-1:-1:-1;;11309:17:0;;11385:29;;11400:13;11385:14;:29::i;:::-;11372:10;:42;11434:6;;:18;;11445:6;11434:18;:10;:18;:::i;:::-;11425:6;:27;11487:21;;;;:12;:21;;;;;;:32;;11513:5;11487:32;:25;:32;:::i;:::-;11463:21;;;;:12;:21;;;;;:56;11548:15;;:26;;11568:5;11548:26;:19;:26;:::i;:::-;11530:15;:44;-1:-1:-1;;;;;11639:14:0;;;;;;:6;:14;;;;;:18;;;:28;;11662:4;11639:28;:22;:28;:::i;:::-;-1:-1:-1;;;;;11618:14:0;;;;;;:6;:14;;;;;:18;;;:49;;;;11702:21;;;:33;;11728:6;11702:33;:25;:33;:::i;:::-;-1:-1:-1;;;;;11678:14:0;;;;;;:6;:14;;;;;:21;;;:57;;;;11769:20;;;:31;;11794:5;11769:31;:24;:31;:::i;:::-;-1:-1:-1;;;;;11746:14:0;;;;;;:6;:14;;;;;;;;:20;;:54;;;;11849:18;:26;;;;;:35;;;;;;;:46;;11889:5;11849:46;:39;:46;:::i;:::-;-1:-1:-1;;;;;11811:26:0;;;;;;:18;:26;;;;;;;;:35;;;;;;;;:84;11908:26;11921:4;11927:6;11908:12;:26::i;:::-;11945:34;11958:6;11966:4;11972:6;11945:12;:34::i;:::-;12016:5;;11995:41;;;;;;;;;;;;;;-1:-1:-1;;;;;11995:41:0;;;;;;;;;;;12052:36;;;;;;;;-1:-1:-1;;;;;12052:36:0;;;12069:1;;12052:36;;;;;;;;;10432:1664;;;;;;;;;:::o;20361:155::-;20477:5;;;20501:6;;;;20493:15;;;;;15602:447;15679:7;15704:12;15719:29;15740:7;15719:20;:29::i;:::-;-1:-1:-1;;;;;15785:15:0;;15770:12;15785:15;;;:6;:15;;;;;:19;;;15704:44;;-1:-1:-1;15848:14:0;15704:44;15785:19;15848:14;:8;:14;:::i;:::-;15828:34;-1:-1:-1;15879:13:0;;15875:137;;-1:-1:-1;;;;;15909:15:0;;15931:1;15909:15;;;:6;:15;;;;;:19;;;:23;;;;15979:20;;;15970:30;;:4;;:30;:8;:30;:::i;:::-;-1:-1:-1;;;;;15947:15:0;;;;;;:6;:15;;;;;:20;;:53;15875:137;16031:9;15602:447;-1:-1:-1;;;;15602:447:0:o;12170:535::-;-1:-1:-1;;;;;12250:15:0;;12233:14;12250:15;;;:6;:15;;;;;:28;;;;12326:11;;12323:328;;12353:210;12368:5;;12359:6;:14;12353:210;;;-1:-1:-1;;;;;12423:27:0;;;;;;:18;:27;;;;;;;;:35;;;;;;;;;12407:52;;:11;;:52;:15;:52;:::i;:::-;-1:-1:-1;;;;;12478:27:0;;12516:1;12478:27;;;:18;:27;;;;;;;;:35;;;;;;;;:39;12546:1;12536:11;;;;12393:66;-1:-1:-1;12353:210:0;;;-1:-1:-1;;;;;12601:15:0;;;;;;:6;:15;;;;;:21;;;:38;;12627:11;12601:38;:25;:38;:::i;:::-;-1:-1:-1;;;;;12577:15:0;;;;;;:6;:15;;;;;:21;;:62;12323:328;-1:-1:-1;;12692:5:0;;-1:-1:-1;;;;;12661:15:0;;;;;;;:6;:15;;;;;:28;;:36;12170:535::o;20000:190::-;20085:9;20116:6;20112:20;;-1:-1:-1;20131:1:0;20124:8;;20112:20;-1:-1:-1;20147:5:0;;;20151:1;20147;:5;:1;20171:5;;;;;:10;20163:19;;;;;20198:155;20283:9;20323:1;20318;:6;;20310:15;;;;;;-1:-1:-1;20340:5:0;;;20198:155::o;12769:613::-;-1:-1:-1;;;;;12975:14:0;;12877:10;12975:14;;;:6;:14;;;;;:22;;;12897:1;12890:8;;;12957:2;12950:9;;;12975:22;;12972:333;;;-1:-1:-1;;;;;13031:14:0;;13013:15;13031:14;;;:6;:14;;;;;:20;;;:27;;13056:1;13031:27;:24;:27;:::i;:::-;13013:45;-1:-1:-1;13073:12:0;13108:3;13088:17;:4;13013:45;13088:17;:8;:17;:::i;:::-;:23;;;;;-1:-1:-1;;;;;13147:14:0;;;;;;:6;:14;;;;;:18;;;13088:23;;;;-1:-1:-1;13147:28:0;;13088:23;13147:28;:22;:28;:::i;:::-;-1:-1:-1;;;;;13126:14:0;;;;;;:6;:14;;;;;:18;;;:49;;;;13222:29;;;:39;;13256:4;13222:39;:33;:39;:::i;:::-;-1:-1:-1;;;;;13190:14:0;;;;;;:6;:14;;;;;:29;;:71;13281:12;:2;13288:4;13281:12;:6;:12;:::i;:::-;13276:17;;12972:333;;;13317:23;1239:42;13335:4;13317:12;:23::i;:::-;;13351;1142:42;13371:2;13351:12;:23::i;13444:445::-;13565:12;13594:2;13580:11;:4;13589:1;13580:11;:8;:11;:::i;:::-;:16;;;;;;;-1:-1:-1;13643:13:0;13674:3;13659:12;:4;13668:2;13659:12;:8;:12;:::i;:::-;:18;;;;;;13643:34;;13745:13;13761:34;13773:6;13781:4;13787:7;13761:11;:34::i;:::-;13745:50;;13843:26;13863:5;13843:15;13852:5;13843:4;;:8;;:15;;;;:::i;:::-;:19;:26;:19;:26;:::i;:::-;13836:4;:33;-1:-1:-1;;;;;;13444:445:0:o;16057:217::-;-1:-1:-1;;;;;16245:15:0;;16152:7;16245:15;;;:6;:15;;;;;:20;;;;16194:22;;;;;16185:4;;16184:82;;16245:20;16220:19;;16185:32;;;:8;:32;:::i;:::-;:54;;;;;;;16184:82;:60;:82;:::i;13897:751::-;14165:6;;14001:7;;;;14133:29;:4;14142:19;14133:29;:8;:29;:::i;:::-;:38;;;;;;14118:53;;14189:14;14198:4;14189;;:8;;:14;;;;:::i;:::-;14182:4;:21;14359:14;14398:19;14377:17;:4;14386:7;14377:17;:8;:17;:::i;:::-;14376:41;;;;;;14359:58;;14451:83;14513:6;:15;14520:7;-1:-1:-1;;;;;14513:15:0;-1:-1:-1;;;;;14513:15:0;;;;;;;;;;;;:20;;;14452:55;14500:6;14475:19;14454:17;14463:7;14454:4;;:8;;:17;;;;:::i;14451:83::-;-1:-1:-1;;;;;14428:15:0;;;;;;:6;:15;;;;;:20;;:106;14609:6;;14590:49;;14619:19;;14600:16;;:4;;:16;:8;:16;:::i;:::-;:38;;;;;14590:4;;14600:38;;14590:49;:8;:49;:::i;:::-;14583:57;13897:751;-1:-1:-1;;;;;;13897:751:0:o;27:19311::-;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;-1:-1;27:19311:0;;;-1:-1:-1;;27:19311:0:o;:::-;;;;;;;;:::o
Swarm Source
bzzr://78f7dc0663f1419e97d7fc0c07346c894c816feeb9b5dae00925b35d680d5424
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.