ETH Price: $2,085.97 (-0.16%)
Gas: 0.03 Gwei

Contract

0xB3b3FA00a534ab0C7437BC5e9F4F97f1f98B930d
 

Overview

ETH Balance

1.704191924393800327 ETH

Eth Value

$3,554.90 (@ $2,085.97/ETH)

Token Holdings

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Withdraw245333642026-02-25 10:34:5917 days ago1772015699IN
0xB3b3FA00...1f98B930d
0 ETH0.000003750.07458496
Withdraw81724702019-07-18 4:14:562431 days ago1563423296IN
0xB3b3FA00...1f98B930d
0 ETH0.000104821
Buy Xaddr81724282019-07-18 4:04:182431 days ago1563422658IN
0xB3b3FA00...1f98B930d
16.7971431 ETH0.001215984.2
Buy Xaddr81724182019-07-18 4:01:122431 days ago1563422472IN
0xB3b3FA00...1f98B930d
0.01119963 ETH0.002047624
Buy Xaddr76469582019-04-27 2:58:372513 days ago1556333917IN
0xB3b3FA00...1f98B930d
0.0111937 ETH0.003071436
Buy Xaddr75601292019-04-13 14:26:402527 days ago1555165600IN
0xB3b3FA00...1f98B930d
0.01117594 ETH0.001535713
Buy Xaddr75167042019-04-06 20:25:382534 days ago1554582338IN
0xB3b3FA00...1f98B930d
0.01117594 ETH0.000388134
Buy Xaddr75166772019-04-06 20:19:152534 days ago1554581955IN
0xB3b3FA00...1f98B930d
0.01117594 ETH0.000388134
Buy Xaddr75166692019-04-06 20:17:572534 days ago1554581877IN
0xB3b3FA00...1f98B930d
0.01117003 ETH0.002047624
Buy Xaddr74921822019-04-03 0:33:582537 days ago1554251638IN
0xB3b3FA00...1f98B930d
0.0111523 ETH0.0051190610
Buy Xaddr74735842019-03-31 2:51:242540 days ago1554000684IN
0xB3b3FA00...1f98B930d
0.0111523 ETH0.000303471
Buy Xaddr74730902019-03-31 0:59:252540 days ago1553993965IN
0xB3b3FA00...1f98B930d
0.0111523 ETH0.000354173.65
Buy Xname74730842019-03-31 0:58:212540 days ago1553993901IN
0xB3b3FA00...1f98B930d
0.0001 ETH0.000057292
Buy Xaddr74730662019-03-31 0:54:342540 days ago1553993674IN
0xB3b3FA00...1f98B930d
0.01114642 ETH0.000110194.4
Buy Xaddr74730652019-03-31 0:54:322540 days ago1553993672IN
0xB3b3FA00...1f98B930d
0.01114642 ETH0.000110194.4
Buy Xaddr74730652019-03-31 0:54:322540 days ago1553993672IN
0xB3b3FA00...1f98B930d
0.01114642 ETH0.002252384.4
Buy Xaddr74177532019-03-22 9:25:002549 days ago1553246700IN
0xB3b3FA00...1f98B930d
0.01109351 ETH0.002009815
Buy Xaddr74169062019-03-22 6:18:302549 days ago1553235510IN
0xB3b3FA00...1f98B930d
0.02218702 ETH0.000388134
Buy Xaddr74168422019-03-22 6:04:572549 days ago1553234697IN
0xB3b3FA00...1f98B930d
0.01109351 ETH0.000388134
Buy Xaddr74168322019-03-22 6:01:552549 days ago1553234515IN
0xB3b3FA00...1f98B930d
0.01109351 ETH0.000388134
Buy Xaddr74168212019-03-22 5:59:442549 days ago1553234384IN
0xB3b3FA00...1f98B930d
0.01109351 ETH0.000388134
Buy Xaddr74168162019-03-22 5:58:082549 days ago1553234288IN
0xB3b3FA00...1f98B930d
0.01109351 ETH0.00029113
Buy Xaddr74168102019-03-22 5:56:442549 days ago1553234204IN
0xB3b3FA00...1f98B930d
0.02218702 ETH0.000388134
Buy Xaddr74168012019-03-22 5:55:072549 days ago1553234107IN
0xB3b3FA00...1f98B930d
0.01108763 ETH0.002047624
Buy Xaddr74145692019-03-21 21:32:182550 days ago1553203938IN
0xB3b3FA00...1f98B930d
0.01108176 ETH0.002047624
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
-81724702019-07-18 4:14:562431 days ago1563423296
0xB3b3FA00...1f98B930d
13.44667893 ETH
-81724282019-07-18 4:04:182431 days ago1563422658
0xB3b3FA00...1f98B930d
12.04597816 ETH
-81724282019-07-18 4:04:182431 days ago1563422658
0xB3b3FA00...1f98B930d
0.83985715 ETH
-81724182019-07-18 4:01:122431 days ago1563422472
0xB3b3FA00...1f98B930d
0.00055998 ETH
-81724182019-07-18 4:01:122431 days ago1563422472
0xB3b3FA00...1f98B930d
0.00358198 ETH
-76469582019-04-27 2:58:372513 days ago1556333917
0xB3b3FA00...1f98B930d
0.00055968 ETH
-76469582019-04-27 2:58:372513 days ago1556333917
0xB3b3FA00...1f98B930d
0.0035763 ETH
-75601292019-04-13 14:26:402527 days ago1555165600
0xB3b3FA00...1f98B930d
0.00055879 ETH
-75601292019-04-13 14:26:402527 days ago1555165600
0xB3b3FA00...1f98B930d
0.01072701 ETH
-75167042019-04-06 20:25:382534 days ago1554582338
0xB3b3FA00...1f98B930d
0.00055879 ETH
-75166772019-04-06 20:19:152534 days ago1554581955
0xB3b3FA00...1f98B930d
0.00055879 ETH
-75166692019-04-06 20:17:572534 days ago1554581877
0xB3b3FA00...1f98B930d
0.0005585 ETH
-75166692019-04-06 20:17:572534 days ago1554581877
0xB3b3FA00...1f98B930d
0.00356873 ETH
-74921822019-04-03 0:33:582537 days ago1554251638
0xB3b3FA00...1f98B930d
0.00055761 ETH
-74921822019-04-03 0:33:582537 days ago1554251638
0xB3b3FA00...1f98B930d
0.01070432 ETH
-74735842019-03-31 2:51:242540 days ago1554000684
0xB3b3FA00...1f98B930d
0.00055761 ETH
-74730902019-03-31 0:59:252540 days ago1553993965
0xB3b3FA00...1f98B930d
0.00055761 ETH
-74730652019-03-31 0:54:322540 days ago1553993672
0xB3b3FA00...1f98B930d
0.00055732 ETH
-74730652019-03-31 0:54:322540 days ago1553993672
0xB3b3FA00...1f98B930d
0.00354992 ETH
-74177532019-03-22 9:25:002549 days ago1553246700
0xB3b3FA00...1f98B930d
0.00055467 ETH
-74177532019-03-22 9:25:002549 days ago1553246700
0xB3b3FA00...1f98B930d
0.03194743 ETH
-74169062019-03-22 6:18:302549 days ago1553235510
0xB3b3FA00...1f98B930d
0.00110935 ETH
-74168422019-03-22 6:04:572549 days ago1553234697
0xB3b3FA00...1f98B930d
0.00055467 ETH
-74168322019-03-22 6:01:552549 days ago1553234515
0xB3b3FA00...1f98B930d
0.00055467 ETH
-74168212019-03-22 5:59:442549 days ago1553234384
0xB3b3FA00...1f98B930d
0.00055467 ETH
View All Internal Transactions
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
LuckyCoin

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2019-03-04
*/

pragma solidity ^0.4.24;


contract Coinevents {
    // fired whenever a player registers a name
    event onNewName
    (
        uint256 indexed playerID,
        address indexed playerAddress,
        bytes32 indexed playerName,
        bool isNewPlayer,
        uint256 affiliateID,
        address affiliateAddress,
        bytes32 affiliateName,
        uint256 amountPaid,
        uint256 timeStamp
    );
    event onBuy (
        address playerAddress,
        uint256 begin,
        uint256 end,
        uint256 round,
        bytes32 playerName
    );
    // fired whenever theres a withdraw
    event onWithdraw
    (
        uint256 indexed playerID,
        address playerAddress,
        bytes32 playerName,
        uint256 ethOut,
        uint256 timeStamp
    );
    // settle the contract
    event onSettle(
        uint256 rid,
        uint256 ticketsout,
        address winner,
        uint256 luckynum,
        uint256 jackpot
    );
    // settle the contract
    event onActivate(
        uint256 rid
    );
}


contract LuckyCoin is Coinevents{
    using SafeMath for *;
    using NameFilter for string;
    
    //**************** game settings ****************
     string constant public name = "LuckyCoin Super";
     string constant public symbol = "LuckyCoin";
     uint256 constant private rndGap_ = 2 hours;                // round timer starts at this
     //uint256 constant private rndGap_ = 5 minutes;

     uint256 ticketstotal_ = 1500;       // ticket total amonuts
     uint256 grouptotal_ = 250;    // ticketstotal_ divend to six parts
     //uint ticketprice_ = 0.005 ether;   // current ticket init price
     uint256 jackpot = 10 ether;
     uint256 public rID_= 0;      // current round id number / total rounds that have happened
     uint256 _headtickets = 500;  // head of 500, distributes valuet
     bool public activated_ = false;
     
     //address community_addr = 0x2b5006d3dce09dafec33bfd08ebec9327f1612d8;    // community addr
     //address prize_addr = 0x2b5006d3dce09dafec33bfd08ebec9327f1612d8;        // prize addr
 
     
     address community_addr = 0x180A14aF38384dc15Ce96cbcabCfC8F47794AC3E;    // community addr
     address prize_addr = 0x180A14aF38384dc15Ce96cbcabCfC8F47794AC3E;        // prize addr
     address activate_addr2 = 0x180A14aF38384dc15Ce96cbcabCfC8F47794AC3E;    // activate addr2
     address activate_addr1 = 0x6C7DFE3c255a098Ea031f334436DD50345cFC737;    // activate addr1
     PlayerBookInterface constant private PlayerBook = PlayerBookInterface(0xc87a693dbba31aefb9457683b7d245dad756db88);

    //**************** ROUND DATA ****************
    mapping (uint256 => Coindatasets.Round) public round_;   // (rID => data) round data
    
    //**************** PLAYER DATA ****************
    event LogbuyNums(address addr, uint begin, uint end);
    mapping (address => uint256) public pIDxAddr_;          // (addr => pID) returns player id by address
    mapping (bytes32 => uint256) public pIDxName_;          // (name => pID) returns player id by name
    mapping (uint256 => Coindatasets.Player) public plyr_;   // (pID => data) player data
    mapping (uint256 => mapping (uint256 => Coindatasets.PlayerRounds)) public plyrRnds_;    // (pID => rID => data) player round data by player id & round id
    mapping (uint256 => mapping (bytes32 => bool)) public plyrNames_; // (pID => name => bool) list of names a player owns.  (used so you can change your display name amongst any name you own)
    
    //**************** ORDER DATA ****************
    mapping (uint256=>mapping(uint=> mapping(uint=>uint))) orders;  // (rid=>pid=group=>ticketnum)
    
    constructor() public{
        //round_[rID_].jackpot = 10 ether;
    }
    
    // callback function
    function ()
        payable
    {
        // fllows addresses only can activate the game
        if (
            msg.sender == activate_addr2 || msg.sender == activate_addr1
        ){
           activate();
        }else if(msg.value > 0){ //bet order
            // fetch player id
            address _addr = msg.sender;
            uint256 _codeLength;
            require(tx.origin == msg.sender, "sorry humans only origin");
            assembly {_codeLength := extcodesize(_addr)}
            require(_codeLength == 0, "sorry humans only=================");

            determinePID();
            uint256 _pID = pIDxAddr_[msg.sender];
            uint256 _ticketprice = getBuyPrice();
            require(_ticketprice > 0);
            uint256 _tickets = msg.value / _ticketprice;
            require(_tickets > 0);
            // buy tickets
            require(activated_ == true, "its not ready yet.  contact administrators");
            require(_tickets <= ticketstotal_ - round_[rID_].tickets);
            buyTicket(_pID, plyr_[_pID].laff, _tickets);
        }

    }

    //  purchase value limit   
    modifier isWithinLimits(uint256 _eth, uint256 _tickets) {
        uint256 _ticketprice = getBuyPrice();
        require(_eth >= _tickets * _ticketprice);
        require(_eth <= 100000000000000000000000);
        _;    
    }
    
    modifier isTicketsLimits(uint256 _tickets){
        require(_tickets <= ticketstotal_ - round_[rID_].tickets);
        _;
    }
    
    modifier isActivated(){
        require(activated_, "not activate");
        _;
    }
    
    modifier isHuman() {
        address _addr = msg.sender;
        uint256 _codeLength;
        require(tx.origin == msg.sender, "sorry humans only origin");
        assembly {_codeLength := extcodesize(_addr)}
        require(_codeLength == 0, "sorry humans only=================");
        _;
    }
    
    function buyXid(uint _tickets, uint256 _affCode)
          isHuman()
          isWithinLimits(msg.value, _tickets)
          isTicketsLimits(_tickets)
          isActivated
          public 
          payable
    {
       // set up our tx event data and determine if player is new or not
        //Coindatasets.EventReturns memory _eventData_ = determinePID(_eventData_);
        determinePID();
        // fetch player id
        uint256 _pID = pIDxAddr_[msg.sender];
        
        // manage affiliate residuals
        // if no affiliate code was given or player tried to use their own, lolz
        if (_affCode == 0 || _affCode == _pID)
        {
            // use last stored affiliate code 
            _affCode = plyr_[_pID].laff;
            
        // if affiliate code was given & its not the same as previously stored 
        } else if (_affCode != plyr_[_pID].laff) {
            // update last affiliate 
            plyr_[_pID].laff = _affCode;
        }
        
        buyTicket(_pID, _affCode, _tickets);      
    }
    
    function buyXaddr(uint _tickets, address _affCode) 
          isHuman()
          isWithinLimits(msg.value, _tickets)
          isTicketsLimits(_tickets)
          isActivated
          public 
          payable 
    {
        // set up our tx event data and determine if player is new or not
        //Coindatasets.EventReturns memory _eventData_ = determinePID(_eventData_);
        // determine if player is new or not
        determinePID();
        
        uint256 _affID;
         
        // fetch player id
        uint256 _pID = pIDxAddr_[msg.sender]; 
        
        if (_affCode == address(0) || _affCode == msg.sender)
        {
            // use last stored affiliate code
            _affID = plyr_[_pID].laff;
        
        // if affiliate code was given    
        } else {
            // get affiliate ID from aff Code 
            _affID = pIDxAddr_[_affCode];
            
            // if affID is not the same as previously stored 
            if (_affID != plyr_[_pID].laff)
            {
                // update last affiliate
                plyr_[_pID].laff = _affID;
            }
        }
        buyTicket(_pID, _affID, _tickets);
    }
    
    function buyXname(uint _tickets, bytes32 _affCode)
          isHuman()
          isWithinLimits(msg.value, _tickets)
          isTicketsLimits(_tickets)
          isActivated
          public 
          payable
    {
        // set up our tx event data and determine if player is new or not
        //Coindatasets.EventReturns memory _eventData_ = determinePID(_eventData_);
        determinePID();
        // fetch player id
        uint256 _pID = pIDxAddr_[msg.sender];
        
        // manage affiliate residuals
        uint256 _affID;
        // if no affiliate code was given or player tried to use their own, lolz
        if (_affCode == '' || _affCode == plyr_[_pID].name)
        {
            // use last stored affiliate code
            _affID = plyr_[_pID].laff;
        
        // if affiliate code was given
        } else {
            // get affiliate ID from aff Code
            _affID = pIDxName_[_affCode];
            
            // if affID is not the same as previously stored
            if (_affID != plyr_[_pID].laff)
            {
                // update last affiliate
                plyr_[_pID].laff = _affID;
            }
        }
        buyTicket(_pID, _affID, _tickets);
    }
    
    function reLoadXaddr(uint256 _tickets, address _affCode)
        isHuman()
        isActivated
        isTicketsLimits(_tickets)
        public
    {
        // fetch player id
        uint256 _pID = pIDxAddr_[msg.sender];
        uint256 _affID;
        if (_affCode == address(0) || _affCode == msg.sender){
            _affID = plyr_[_pID].laff;
        }
        else{
           // get affiliate ID from aff Code 
            _affID = pIDxAddr_[_affCode];
            // if affID is not the same as previously stored 
            if (_affID != plyr_[_pID].laff)
            {
                // update last affiliate
                plyr_[_pID].laff = _affID;
            }
        }
        reloadTickets(_pID, _affID, _tickets);
    }
    
        
    function reLoadXname(uint256 _tickets, bytes32 _affCode)
        isHuman()
        isActivated
        isTicketsLimits(_tickets)
        public
    {
        // fetch player id
        uint256 _pID = pIDxAddr_[msg.sender];
        uint256 _affID;
        if (_affCode == '' || _affCode == plyr_[_pID].name){
            _affID = plyr_[_pID].laff;
        }
        else{
           // get affiliate ID from aff Code 
             _affID = pIDxName_[_affCode];
            // if affID is not the same as previously stored 
            if (_affID != plyr_[_pID].laff)
            {
                // update last affiliate
                plyr_[_pID].laff = _affID;
            }
        }
        reloadTickets(_pID, _affID, _tickets);
    }
    
    function reloadTickets(uint256 _pID, uint256 _affID, uint256 _tickets)
        isActivated
        private
    {
        //************** ******************
        // setup local rID
        uint256 _rID = rID_;
        // grab time
        uint256 _now = now;
        // if round is active
        if (_now > round_[_rID].start && _now < round_[_rID].end && round_[_rID].ended == false){
            // call ticket
            uint256 _eth = getBuyPrice().mul(_tickets);
            
            //plyr_[_pID].gen = withdrawEarnings(_pID).sub(_eth);
            reloadEarnings(_pID, _eth);
            
            ticket(_pID, _rID, _tickets, _affID, _eth);
            if (round_[_rID].tickets == ticketstotal_){
                round_[_rID].ended = true;
                round_[_rID].end = now;
                endRound();
            }
            
        }else if (_now > round_[_rID].end && round_[_rID].ended == false){
            // end the round (distributes pot) & start new round
            round_[_rID].ended = true;
            //endRound();
            bool autopurchase = endRound();
            // put eth in players vault
            if (autopurchase){
                ticket(_pID, rID_, _tickets, _affID, msg.value);
            }else{
                plyr_[_pID].gen = plyr_[_pID].gen.add(msg.value);
            }
        }
    }
    
    function withdraw() 
        isHuman()
        public
    {
        // setup local rID 
        //uint256 _rID = rID_;
        // grab time
        uint256 _now = now;
        // fetch player ID
        uint256 _pID = pIDxAddr_[msg.sender];
        // setup temp var for player eth
        uint256 _eth;
        // check to see if round has ended and no one has run round end yet
        
        _eth = withdrawEarnings(_pID);
        if (_eth > 0){
            plyr_[_pID].addr.transfer(_eth);
            emit Coinevents.onWithdraw(_pID, msg.sender, plyr_[_pID].name, _eth, _now);
        }
    }

    function reloadEarnings(uint256 _pID, uint256 _eth)
        private
        returns(uint256)
    {
        // update gen vault
        updateTicketVault(_pID, plyr_[_pID].lrnd);
        
        uint256 _earnings = (plyr_[_pID].win).add(plyr_[_pID].gen).add(plyr_[_pID].aff);
        require(_earnings >= _eth, "earnings too lower");

        if (plyr_[_pID].gen >= _eth) {
            plyr_[_pID].gen = plyr_[_pID].gen.sub(_eth);
            return;
        }else{
            _eth = _eth.sub(plyr_[_pID].gen);
            plyr_[_pID].gen = 0;
        }
        
        if (plyr_[_pID].aff >= _eth){
            plyr_[_pID].aff = plyr_[_pID].aff.sub(_eth);
            return;
        }else{
            _eth = _eth.sub(plyr_[_pID].aff);
            plyr_[_pID].aff = 0;
        }
        
        plyr_[_pID].win = plyr_[_pID].win.sub(_eth);

    }
    
    function withdrawEarnings(uint256 _pID)
        private
        returns(uint256)
    {
        // update gen vault
        updateTicketVault(_pID, plyr_[_pID].lrnd);
        
        uint256 _earnings = (plyr_[_pID].win).add(plyr_[_pID].gen).add(plyr_[_pID].aff);
        if (_earnings > 0)
        {
            plyr_[_pID].win = 0;  // winner
            plyr_[_pID].gen = 0;  //ticket valuet
            plyr_[_pID].aff = 0;  // aff player
        }

        return(_earnings);
    }
    // aquire buy ticket price
    function getBuyPrice()
        public 
        view 
        returns(uint256)
    {
        return round_[rID_].jackpot.mul(150) / 100 / 1500;
    }
    
    /**
     * @dev logic runs whenever a buy order is executed.  determines how to handle 
     * incoming eth depending on if we are in an active round or not
    */
    function buyTicket( uint256 _pID, uint256 _affID, uint256 _tickets) 
         private
    {
        //************** ******************
        // setup local rID
        uint256 _rID = rID_;
        // grab time
        uint256 _now = now;
        
        // if round is active
        if (_now > round_[_rID].start && _now < round_[_rID].end){
            // call ticket
            ticket(_pID, _rID, _tickets, _affID, msg.value);
            if (round_[_rID].tickets == ticketstotal_){
                round_[_rID].ended = true;
                round_[_rID].end = now;
                endRound();
            }
        }else if (_now > round_[_rID].end && round_[_rID].ended == false){
            // end the round (distributes pot) & start new round
            round_[_rID].ended = true;
            //_eventData_ = endRound(_eventData_);
            bool autopurchase = endRound();
            // put eth in players vault
            if (autopurchase){
                ticket(_pID, _rID, _tickets, _affID, msg.value);
            }else{
                plyr_[_pID].gen = plyr_[_pID].gen.add(msg.value);
            }
            //plyr_[_pID].gen = plyr_[_pID].gen.add(msg.value);
        }
        //ticket(_pID, _rID, _tickets, _affID, msg.value);
    }
    
    function ticket(uint256 _pID, uint256 _rID, uint256 _tickets, uint256 _affID, uint256 _eth)
        private
    {
         // if player is new to round
        if (plyrRnds_[_pID][rID_].tickets == 0){
            managePlayer(_pID);
            round_[rID_].playernums += 1;
            plyrRnds_[_affID][rID_].affnums += 1;
        }

        // ********** buy ticket *************
        uint tickets = round_[rID_].tickets;
        uint groups = (tickets + _tickets  - 1) / grouptotal_ - tickets / grouptotal_;
        uint offset = tickets / grouptotal_;
       
        if (groups == 0){
            if (((tickets + _tickets) % grouptotal_) == 0){
                orders[rID_][_pID][offset] = calulateXticket(orders[rID_][_pID][offset], grouptotal_, tickets % grouptotal_);
            }else{
                orders[rID_][_pID][offset] = calulateXticket(orders[rID_][_pID][offset], (tickets + _tickets) % grouptotal_, tickets % grouptotal_);
            }
        }else{
            for(uint256 i = 0; i < groups + 1; i++){
                if (i == 0){
                     orders[rID_][_pID][offset+i] = calulateXticket(orders[rID_][_pID][offset + i], grouptotal_, tickets % grouptotal_);
                }
                if (i > 0 && i < groups){
                    orders[rID_][_pID][offset + i] = calulateXticket(orders[rID_][_pID][offset + i], grouptotal_, 0);
                }
                if (i == groups){
                    if (((tickets + _tickets) % grouptotal_) == 0){
                        orders[rID_][_pID][offset + i] = calulateXticket(orders[rID_][_pID][offset + i], grouptotal_, 0);
                    }else{
                        orders[rID_][_pID][offset + i] = calulateXticket(orders[rID_][_pID][offset + i], (tickets + _tickets) % grouptotal_, 0);
                    }
                }
            }
        }
        
        if (round_[rID_].tickets < _headtickets){
            if (_tickets.add(round_[rID_].tickets) <= _headtickets){
                plyrRnds_[_pID][rID_].luckytickets = _tickets.add(plyrRnds_[_pID][rID_].luckytickets);
            }
            else{
                plyrRnds_[_pID][rID_].luckytickets = (_headtickets - round_[rID_].tickets).add(plyrRnds_[_pID][rID_].luckytickets); 
            }
        }
        // set up purchase tickets
        round_[rID_].tickets = _tickets.add(round_[rID_].tickets);
        plyrRnds_[_pID][rID_].tickets = _tickets.add(plyrRnds_[_pID][rID_].tickets);
        plyrRnds_[_pID][rID_].eth = _eth.add(plyrRnds_[_pID][rID_].eth);
        round_[rID_].blocknum = block.number;
       
        // distributes valuet
        distributeVault(_pID, rID_, _affID, _eth, _tickets);
        // order event log
        //emit onBuy(msg.sender, tickets+1, tickets +_tickets,_rID, _eth, plyr_[_pID].name);
        emit Coinevents.onBuy(msg.sender, tickets+1, tickets +_tickets,rID_, plyr_[_pID].name);
    }

    function distributeVault(uint256 _pID, uint256 _rID, uint256 _affID, uint256 _eth, uint256 _tickets)
        private
    {    
         // distributes gen
         uint256 _gen = 0;
         uint256 _genvault = 0;
         uint256 ticketprice_ = getBuyPrice();
         if (round_[_rID].tickets > _headtickets){
             if (round_[_rID].tickets.sub(_tickets) > _headtickets){
                 _gen = _tickets;
                 //plyrRnds_[_pID][_rID].luckytickets = 
             }else{
                 _gen = round_[_rID].tickets.sub(_headtickets);
             }
         }
         
         if (_gen > 0){
             //_genvault = (((_gen / _tickets).mul(_eth)).mul(20)) / 100;   // 20 % to gen tickets
             _genvault = ((ticketprice_ * _gen).mul(20)) / 100;
             round_[_rID].mask = _genvault.add(round_[_rID].mask);   // update mask
         }
         
         uint256 _aff = _eth / 10;  //to================10%(aff)
         uint256 _com = _eth / 20;  //to================5%(community)
         uint256 _found = _eth.mul(32) / 100;
         round_[_rID].found = _found.add(round_[_rID].found);  //to============prize found
         if (_affID != 0){
             plyr_[_affID].aff = _aff.add(plyr_[_affID].aff);
             community_addr.transfer(_com);
         }else{
             _com = _com.add(_aff);
             community_addr.transfer(_com);
         }
         // ============to perhaps next round pool
         uint256 _nextpot = _eth.sub(_genvault);
         if (_affID != 0){
             _nextpot = _nextpot.sub(_aff);
         }
         _nextpot = _nextpot.sub(_com);
         _nextpot = _nextpot.sub(_found);
         round_[_rID].nextpot = _nextpot.add(round_[_rID].nextpot);  // next round pool
    }
    
    
    function calulateXticket(uint256 _target, uint256 _start, uint256 _end) pure private returns(uint256){
        return _target ^ (2 ** _start - 2 ** _end); 
    }
    
    function endRound() 
        private
        returns(bool)
    {
        // setup local rID
        uint256 _rID = rID_;
        uint256 prize_callback = 0;
        round_[_rID].lucknum = randNums();
        bool autopurchase = false;
        
        // 1. if win
        if (round_[_rID].tickets >= round_[_rID].lucknum){
           // community_addr.transfer(round_[_rID].income.sub(_com).sub(_gen));
            // need administrators take in 10 ETH activate next round
            prize_callback = round_[_rID].found.add(round_[_rID].nextpot);
            if (prize_callback > 0) {
                prize_addr.transfer(prize_callback);
                activated_ = false;   // need administrators to activate
                emit onSettle(_rID, round_[_rID].tickets, address(0), round_[_rID].lucknum, round_[_rID].jackpot);
            }
        }else{ 
            // 2. if nobody win
            // directly start next round
            prize_callback = round_[_rID].found;
            if (prize_callback > 0) {
                prize_addr.transfer(prize_callback);
            }
            rID_ ++;
            _rID ++;
            round_[_rID].start = now;
            round_[_rID].end = now.add(rndGap_);
            round_[_rID].jackpot = round_[_rID-1].jackpot.add(round_[_rID-1].nextpot);
            autopurchase = true;
            emit onSettle(_rID-1, round_[_rID-1].tickets, address(0), round_[_rID-1].lucknum, round_[_rID-1].jackpot);
        }
        return autopurchase;

    }
 
     /**
     * @dev moves any unmasked earnings to ticket vault.  updates earnings
     */   
     // _pID: player pid _rIDlast: last roundid
    function updateTicketVault(uint256 _pID, uint256 _rIDlast) private{
        
         uint256 _gen = (plyrRnds_[_pID][_rIDlast].luckytickets.mul(round_[_rIDlast].mask / _headtickets)).sub(plyrRnds_[_pID][_rIDlast].mask);
         
         uint256 _jackpot = 0;
         if (judgeWin(_rIDlast, _pID) && address(round_[_rIDlast].winner) == 0) {
             _jackpot = round_[_rIDlast].jackpot;
             round_[_rIDlast].winner = msg.sender;
         }
         plyr_[_pID].gen = _gen.add(plyr_[_pID].gen);     // ticket valuet
         plyr_[_pID].win = _jackpot.add(plyr_[_pID].win); // player win
         plyrRnds_[_pID][_rIDlast].mask = plyrRnds_[_pID][_rIDlast].mask.add(_gen);
    }
    
    
    function managePlayer(uint256 _pID)
        private
    {
        // if player has played a previous round, move their unmasked earnings
        // from that round to gen vault.
        if (plyr_[_pID].lrnd != 0)
            updateTicketVault(_pID, plyr_[_pID].lrnd);
            
        // update player's last round played
        plyr_[_pID].lrnd = rID_;

    }
    //==============================================================================
    //     _ _ | _   | _ _|_ _  _ _  .
    //    (_(_||(_|_||(_| | (_)| _\  .
    //==============================================================================
    /**
     * @dev calculates unmasked earnings (just calculates, does not update ticket)
     * @return earnings in wei format
     */
     //计算每轮中pid前500ticket的分红
    function calcTicketEarnings(uint256 _pID, uint256 _rIDlast)
        private
        view
        returns(uint256)
    {   // per round ticket valuet
        return (plyrRnds_[_pID][_rIDlast].luckytickets.mul(round_[_rIDlast].mask / _headtickets)).sub(plyrRnds_[_pID][_rIDlast].mask);
    }
    
    //====================/=========================================================
    /** upon contract deploy, it will be deactivated.  this is a one time
     * use function that will activate the contract.  we do this so devs 
     * have time to set things up on the web end                            **/
    
    function activate()
        isHuman()
        public
        payable
    {
        // can only be ran once
        require(
            msg.sender == activate_addr2 ||msg.sender == activate_addr1);
        
        require(activated_ == false, "LuckyCoin already activated");
        //uint256 _jackpot = 10 ether;
        require(msg.value == jackpot, "activate game need 10 ether");
        
        if (rID_ != 0) {
            require(round_[rID_].tickets >= round_[rID_].lucknum, "nobody win");
        }
        //activate the contract 
        activated_ = true;
        //lets start first round
        rID_ ++;
        round_[rID_].start = now;
        round_[rID_].end = now + rndGap_;
        round_[rID_].jackpot = msg.value;
        emit onActivate(rID_);
    }
    
    /**
	 * @dev receives name/player info from names contract 
     */
    function receivePlayerInfo(uint256 _pID, address _addr, bytes32 _name, uint256 _laff)
        external
    {
        require (msg.sender == address(PlayerBook), "your not playerNames contract... hmmm..");
        if (pIDxAddr_[_addr] != _pID)
            pIDxAddr_[_addr] = _pID;
        if (pIDxName_[_name] != _pID)
            pIDxName_[_name] = _pID;
        if (plyr_[_pID].addr != _addr)
            plyr_[_pID].addr = _addr;
        if (plyr_[_pID].name != _name)
            plyr_[_pID].name = _name;
        if (plyr_[_pID].laff != _laff)
            plyr_[_pID].laff = _laff;
        if (plyrNames_[_pID][_name] == false)
            plyrNames_[_pID][_name] = true;
    }
    
//==============================PLAYER==========================================    
    /**
     * @dev receives entire player name list 
     */
    function receivePlayerNameList(uint256 _pID, bytes32 _name)
        external
    {
        require (msg.sender == address(PlayerBook), "your not playerNames contract... hmmm..");
        if(plyrNames_[_pID][_name] == false)
            plyrNames_[_pID][_name] = true;
    }
    
    /**
     * @dev gets existing or registers new pID.  use this when a player may be new
     * @return pID 
     */        
    function determinePID()
        private
        //returns (Coindatasets.EventReturns)
    {
        uint256 _pID = pIDxAddr_[msg.sender];
        // if player is new to this version of luckycoin
        if (_pID == 0)
        {
            // grab their player ID, name and last aff ID, from player names contract 
            _pID = PlayerBook.getPlayerID(msg.sender);
            bytes32 _name = PlayerBook.getPlayerName(_pID);
            uint256 _laff = PlayerBook.getPlayerLAff(_pID);
            
            // set up player account 
            pIDxAddr_[msg.sender] = _pID;
            plyr_[_pID].addr = msg.sender;
            
            if (_name != "")
            {
                pIDxName_[_name] = _pID;
                plyr_[_pID].name = _name;
                plyrNames_[_pID][_name] = true;
            }
            
            if (_laff != 0 && _laff != _pID)
                plyr_[_pID].laff = _laff;
            
            // set the new player bool to true
            //_eventData_.compressedData = _eventData_.compressedData + 1;
        } 
        //return (_eventData_);
    }
    
    // only support Name by name
    function registerNameXname(string _nameString, bytes32 _affCode, bool _all)
        isHuman()
        public
        payable
    {
        bytes32 _name = _nameString.nameFilter();
        address _addr = msg.sender;
        uint256 _paid = msg.value;
        (bool _isNewPlayer, uint256 _affID) = PlayerBook.registerNameXnameFromDapp.value(msg.value)(msg.sender, _name, _affCode, _all);
        
        uint256 _pID = pIDxAddr_[_addr];
        
        // fire event
        emit Coinevents.onNewName(_pID, _addr, _name, _isNewPlayer, _affID, plyr_[_affID].addr, plyr_[_affID].name, _paid, now);
    }
    
    function registerNameXaddr(string _nameString, address _affCode, bool _all)
        isHuman()
        public
        payable
    {
        bytes32 _name = _nameString.nameFilter();
        address _addr = msg.sender;
        uint256 _paid = msg.value;
        (bool _isNewPlayer, uint256 _affID) = PlayerBook.registerNameXaddrFromDapp.value(msg.value)(msg.sender, _name, _affCode, _all);
        
        uint256 _pID = pIDxAddr_[_addr];
        // fire event
        emit Coinevents.onNewName(_pID, _addr, _name, _isNewPlayer, _affID, plyr_[_affID].addr, plyr_[_affID].name, _paid, now);
    }
    
    /**
     * @dev returns time left.  dont spam this, you'll ddos yourself from your node 
     * provider
     * -functionhash- 0xc7e284b8
     * @return time left in seconds
    */
    function getTimeLeft()
        public
        view
        returns(uint256)
    {
        // setup local rID
        uint256 _rID = rID_;
        
        // grab time
        uint256 _now = now;
        
        if (_now < round_[_rID].end){
            return( (round_[_rID].end).sub(_now) );
        }
        else
            return(0);
    }
    
    function getCurrentRoundInfo() 
        public
        view
        returns(uint256, uint256, uint256, uint256, uint256, uint256, uint256, uint256, uint256, address, bool)
    {
        // setup local rID
        uint256 _rID = rID_;
        return 
        (
            rID_,
            round_[_rID].tickets,
            round_[_rID].start,
            round_[_rID].end,
            round_[_rID].jackpot,
            round_[_rID].nextpot,
            round_[_rID].lucknum,
            round_[_rID].mask,
            round_[_rID].playernums,
            round_[_rID].winner,
            round_[_rID].ended
        );
    }
    
    function getPlayerInfoByAddress(address _addr)
        public 
        view 
        returns(uint256, bytes32, uint256, uint256, uint256, uint256, uint256, uint256)
    {
        // setup local rID
        uint256 _rID = rID_;
        
        if (_addr == address(0))
        {
            _addr == msg.sender;
        }
        uint256 _pID = pIDxAddr_[_addr];
        uint256 _lrnd =  plyr_[_pID].lrnd;
        uint256 _jackpot = 0;
        if (judgeWin(_lrnd, _pID) && address(round_[_lrnd].winner) == 0){
            _jackpot = round_[_lrnd].jackpot;
        }
        
        return
        (
            _pID,                               //0
            plyr_[_pID].name,                   //1
            plyrRnds_[_pID][_rID].tickets,      //2
            plyr_[_pID].win.add(_jackpot),                    //3
            plyr_[_pID].gen.add(calcTicketEarnings(_pID, _lrnd)),  //4
            plyr_[_pID].aff,                    //5
            plyrRnds_[_pID][_rID].eth,           //6
            plyrRnds_[_pID][_rID].affnums        // 7
        );
    }

    // generate a number between 1-1500 
    function randNums() public view returns(uint256) {
        return uint256(keccak256(block.difficulty, now, block.coinbase)) % ticketstotal_ + 1;
    }
    
    // search user if win
    function judgeWin(uint256 _rid, uint256 _pID)private view returns(bool){
        uint256 _group = (round_[_rid].lucknum -1) / grouptotal_;
        uint256 _temp = round_[_rid].lucknum % grouptotal_;
        if (_temp == 0){
            _temp = grouptotal_;
        }

        if (orders[_rid][_pID][_group] & (2 **(_temp-1)) == 2 **(_temp-1)){
            return true;
        }else{
            return false;
        }
    }

    // search the tickets owns
    function searchtickets()public view returns(uint256, uint256, uint256, uint256,uint256, uint256){
         uint256 _pID = pIDxAddr_[msg.sender];
         return (
             orders[rID_][_pID][0],
             orders[rID_][_pID][1],
             orders[rID_][_pID][2],
             orders[rID_][_pID][3],
             orders[rID_][_pID][4],
             orders[rID_][_pID][5]
            );
     }
     // search the tickets by address
    function searchTicketsXaddr(address addr) public view returns(uint256, uint256, uint256, uint256,uint256, uint256){
        uint256 _pID = pIDxAddr_[addr];
        return (
             orders[rID_][_pID][0],
             orders[rID_][_pID][1],
             orders[rID_][_pID][2],
             orders[rID_][_pID][3],
             orders[rID_][_pID][4],
             orders[rID_][_pID][5]
            );
     }
}


library Coindatasets {
    struct EventReturns {
        uint256 compressedData;
        uint256 compressedIDs;
        address winnerAddr;         // winner address
        bytes32 winnerName;         // winner name
        uint256 amountWon;          // amount won
        uint256 newPot;             // amount in new pot
        uint256 genAmount;          // amount distributed to gen
        uint256 potAmount;          // amount added to pot
    }
    
     struct Round {
        uint256 tickets; // already purchase ticket
        bool ended;     // has round end function been ran
        uint256 jackpot;    // eth to pot, perhaps next round pot
        uint256 start;   // time round started
        uint256 end;    // time ends/ended
        address winner;  //win address
        uint256 mask;   // global mask
        uint256 found; // jackpot found
        uint256 lucknum;  // win num
        uint256 nextpot;  // next pot
        uint256 blocknum; // current blocknum
        uint256 playernums; // playernums
      }
      
    struct Player {
        address addr;   // player address
        bytes32 name;   // player name
        uint256 win;    // winnings vault
        uint256 gen;    // general vault
        uint256 aff;    // affiliate vault
        uint256 lrnd;   // last round played
        uint256 laff;   // last affiliate id used
        uint256 luckytickets;  // head 500 will acquire distributes vault
    }
    
    struct PotSplit {
        uint256 community;    // % of pot thats paid to key holders of current round
        uint256 gen;    // % of pot thats paid to tickets holders
        uint256 laff;   // last affiliate id used
    }
    
    struct PlayerRounds {
        uint256 eth;    // eth player has added to round
        uint256 tickets;   // tickets
        uint256 mask;  // player mask,
        uint256 affnums;
        uint256 luckytickets; // player luckytickets
    }
}


interface PlayerBookInterface {
    function getPlayerID(address _addr) external returns (uint256);
    function getPlayerName(uint256 _pID) external view returns (bytes32);
    function getPlayerLAff(uint256 _pID) external view returns (uint256);
    function getPlayerAddr(uint256 _pID) external view returns (address);
    function getNameFee() external view returns (uint256);
    function registerNameXIDFromDapp(address _addr, bytes32 _name, uint256 _affCode, bool _all) external payable returns(bool, uint256);
    function registerNameXaddrFromDapp(address _addr, bytes32 _name, address _affCode, bool _all) external payable returns(bool, uint256);
    function registerNameXnameFromDapp(address _addr, bytes32 _name, bytes32 _affCode, bool _all) external payable returns(bool, uint256);
}



library NameFilter {
    /**
     * @dev filters name strings
     * -converts uppercase to lower case.  
     * -makes sure it does not start/end with a space
     * -makes sure it does not contain multiple spaces in a row
     * -cannot be only numbers
     * -cannot start with 0x 
     * -restricts characters to A-Z, a-z, 0-9, and space.
     * @return reprocessed string in bytes32 format
     */
    function nameFilter(string _input)
        internal
        pure
        returns(bytes32)
    {
        bytes memory _temp = bytes(_input);
        uint256 _length = _temp.length;
        
        //sorry limited to 32 characters
        require (_length <= 32 && _length > 0, "string must be between 1 and 32 characters");
        // make sure it doesnt start with or end with space
        require(_temp[0] != 0x20 && _temp[_length-1] != 0x20, "string cannot start or end with space");
        // make sure first two characters are not 0x
        if (_temp[0] == 0x30)
        {
            require(_temp[1] != 0x78, "string cannot start with 0x");
            require(_temp[1] != 0x58, "string cannot start with 0X");
        }
        
        // create a bool to track if we have a non number character
        bool _hasNonNumber;
        
        // convert & check
        for (uint256 i = 0; i < _length; i++)
        {
            // if its uppercase A-Z
            if (_temp[i] > 0x40 && _temp[i] < 0x5b)
            {
                // convert to lower case a-z
                _temp[i] = byte(uint(_temp[i]) + 32);
                
                // we have a non number
                if (_hasNonNumber == false)
                    _hasNonNumber = true;
            } else {
                require
                (
                    // require character is a space
                    _temp[i] == 0x20 || 
                    // OR lowercase a-z
                    (_temp[i] > 0x60 && _temp[i] < 0x7b) ||
                    // or 0-9
                    (_temp[i] > 0x2f && _temp[i] < 0x3a),
                    "string contains invalid characters"
                );
                // make sure theres not 2x spaces in a row
                if (_temp[i] == 0x20)
                    require( _temp[i+1] != 0x20, "string cannot contain consecutive spaces");
                
                // see if we have a character other than a number
                if (_hasNonNumber == false && (_temp[i] < 0x30 || _temp[i] > 0x39))
                    _hasNonNumber = true;    
            }
        }
        
        require(_hasNonNumber == true, "string cannot be only numbers");
        
        bytes32 _ret;
        assembly {
            _ret := mload(add(_temp, 32))
        }
        return (_ret);
    }
}




/**
 * @title SafeMath v0.1.9
 * @dev Math operations with safety checks that throw on error
 * change notes:  original SafeMath library from OpenZeppelin modified by Inventor
 * - added sqrt
 * - added sq
 * - added pwr
 * - changed asserts to requires with error log outputs
 * - removed div, its useless
 */
library SafeMath {

    /**
    * @dev Multiplies two numbers, throws on overflow.
    */
    function mul(uint256 a, uint256 b)
        internal
        pure
        returns (uint256 c)
    {
        if (a == 0) {
            return 0;
        }
        c = a * b;
        require(c / a == b);
        return c;
    }

    /**
    * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
    */
    function sub(uint256 a, uint256 b)
        internal
        pure
        returns (uint256)
    {
        require(b <= a);
        return a - b;
    }

    /**
    * @dev Adds two numbers, throws on overflow.
    */
    function add(uint256 a, uint256 b)
        internal
        pure
        returns (uint256 c)
    {
        c = a + b;
        require(c >= a);
        return c;
    }

    /**
     * @dev gives square root of given x.
     */
    function sqrt(uint256 x)
        internal
        pure
        returns (uint256 y)
    {
        uint256 z = ((add(x,1)) / 2);
        y = x;
        while (z < y)
        {
            y = z;
            z = ((add((x / z),z)) / 2);
        }
    }

    /**
     * @dev gives square. multiplies x by x
     */
    function sq(uint256 x)
        internal
        pure
        returns (uint256)
    {
        return (mul(x,x));
    }

    /**
     * @dev x to the power of y
     */
    function pwr(uint256 x, uint256 y)
        internal
        pure
        returns (uint256)
    {
        if (x==0)
            return (0);
        else if (y==0)
            return (1);
        else
        {
            uint256 z = x;
            for (uint256 i=1; i < y; i++)
                z = mul(z,x);
            return (z);
        }
    }
}

Contract Security Audit

Contract ABI

API
[{"constant":true,"inputs":[],"name":"getBuyPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tickets","type":"uint256"},{"name":"_affCode","type":"bytes32"}],"name":"buyXname","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"searchtickets","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"activate","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"pIDxAddr_","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"round_","outputs":[{"name":"tickets","type":"uint256"},{"name":"ended","type":"bool"},{"name":"jackpot","type":"uint256"},{"name":"start","type":"uint256"},{"name":"end","type":"uint256"},{"name":"winner","type":"address"},{"name":"mask","type":"uint256"},{"name":"found","type":"uint256"},{"name":"lucknum","type":"uint256"},{"name":"nextpot","type":"uint256"},{"name":"blocknum","type":"uint256"},{"name":"playernums","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"bytes32"}],"name":"plyrNames_","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"pIDxName_","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_nameString","type":"string"},{"name":"_affCode","type":"address"},{"name":"_all","type":"bool"}],"name":"registerNameXaddr","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_pID","type":"uint256"},{"name":"_addr","type":"address"},{"name":"_name","type":"bytes32"},{"name":"_laff","type":"uint256"}],"name":"receivePlayerInfo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"rID_","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_nameString","type":"string"},{"name":"_affCode","type":"bytes32"},{"name":"_all","type":"bool"}],"name":"registerNameXname","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"getCurrentRoundInfo","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"address"},{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tickets","type":"uint256"},{"name":"_affCode","type":"address"}],"name":"reLoadXaddr","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tickets","type":"uint256"},{"name":"_affCode","type":"uint256"}],"name":"buyXid","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_pID","type":"uint256"},{"name":"_name","type":"bytes32"}],"name":"receivePlayerNameList","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"name":"plyrRnds_","outputs":[{"name":"eth","type":"uint256"},{"name":"tickets","type":"uint256"},{"name":"mask","type":"uint256"},{"name":"affnums","type":"uint256"},{"name":"luckytickets","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"addr","type":"address"}],"name":"searchTicketsXaddr","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tickets","type":"uint256"},{"name":"_affCode","type":"address"}],"name":"buyXaddr","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"randNums","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getTimeLeft","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"activated_","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tickets","type":"uint256"},{"name":"_affCode","type":"bytes32"}],"name":"reLoadXname","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"plyr_","outputs":[{"name":"addr","type":"address"},{"name":"name","type":"bytes32"},{"name":"win","type":"uint256"},{"name":"gen","type":"uint256"},{"name":"aff","type":"uint256"},{"name":"lrnd","type":"uint256"},{"name":"laff","type":"uint256"},{"name":"luckytickets","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"}],"name":"getPlayerInfoByAddress","outputs":[{"name":"","type":"uint256"},{"name":"","type":"bytes32"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"addr","type":"address"},{"indexed":false,"name":"begin","type":"uint256"},{"indexed":false,"name":"end","type":"uint256"}],"name":"LogbuyNums","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"playerID","type":"uint256"},{"indexed":true,"name":"playerAddress","type":"address"},{"indexed":true,"name":"playerName","type":"bytes32"},{"indexed":false,"name":"isNewPlayer","type":"bool"},{"indexed":false,"name":"affiliateID","type":"uint256"},{"indexed":false,"name":"affiliateAddress","type":"address"},{"indexed":false,"name":"affiliateName","type":"bytes32"},{"indexed":false,"name":"amountPaid","type":"uint256"},{"indexed":false,"name":"timeStamp","type":"uint256"}],"name":"onNewName","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"playerAddress","type":"address"},{"indexed":false,"name":"begin","type":"uint256"},{"indexed":false,"name":"end","type":"uint256"},{"indexed":false,"name":"round","type":"uint256"},{"indexed":false,"name":"playerName","type":"bytes32"}],"name":"onBuy","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"playerID","type":"uint256"},{"indexed":false,"name":"playerAddress","type":"address"},{"indexed":false,"name":"playerName","type":"bytes32"},{"indexed":false,"name":"ethOut","type":"uint256"},{"indexed":false,"name":"timeStamp","type":"uint256"}],"name":"onWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"rid","type":"uint256"},{"indexed":false,"name":"ticketsout","type":"uint256"},{"indexed":false,"name":"winner","type":"address"},{"indexed":false,"name":"luckynum","type":"uint256"},{"indexed":false,"name":"jackpot","type":"uint256"}],"name":"onSettle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"rid","type":"uint256"}],"name":"onActivate","type":"event"}]

60806040526105dc600090815560fa600155678ac7230489e800006002556003556101f460045560058054600160a860020a03191674180a14af38384dc15ce96cbcabcfc8f47794ac3e001790556006805473180a14af38384dc15ce96cbcabcfc8f47794ac3e600160a060020a0319918216811790925560078054821690921790915560088054736c7dfe3c255a098ea031f334436dd50345cfc73792169190911790553480156100b057600080fd5b50614033806100c06000396000f3006080604052600436106101695763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663018a25e8811461036757806306fdde031461038e57806308752869146104185780630a1a677e146104285780630f15f4c01461047057806310f01eba1461047857806324c33d33146104995780632660316e146105185780632e19ebdc146105475780633ccfd60b1461055f5780633ddd46981461057457806349cc635d146105d0578063624ae5c0146105fa578063685ffd831461060f578063747dff421461066257806381617f8f146106d85780638f38f309146106fc5780638f7140ea1461070a57806395d89b4114610725578063a2bccae91461073a578063a3395a5214610780578063a9287619146107a1578063bf02dbcf146107b8578063c7e284b8146107cd578063d53b2679146107e2578063d574bcdf146107f7578063de7874f314610812578063ee0b5d8b14610875575b6007546000908190819081908190600160a060020a03163314806101975750600854600160a060020a031633145b156101a9576101a46108d7565b610360565b6000341115610360573394503285146101fa576040805160e560020a62461bcd0281526020600482015260186024820152600080516020613fc8833981519152604482015290519081900360640190fd5b843b93508315610250576040805160e560020a62461bcd0281526020600482015260226024820152600080516020613fa8833981519152604482015260f060020a613d3d02606482015290519081900360840190fd5b610258610b59565b336000908152600a60205260409020549250610272610df9565b91506000821161028157600080fd5b813481151561028c57fe5b0490506000811161029c57600080fd5b60055460ff161515600114610321576040805160e560020a62461bcd02815260206004820152602a60248201527f697473206e6f74207265616479207965742e2020636f6e746163742061646d6960448201527f6e6973747261746f727300000000000000000000000000000000000000000000606482015290519081900360840190fd5b60035460009081526009602052604081205490540381111561034257600080fd5b6000838152600c602052604090206006015461036090849083610e3f565b5050505050005b34801561037357600080fd5b5061037c610df9565b60408051918252519081900360200190f35b34801561039a57600080fd5b506103a3610f84565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103dd5781810151838201526020016103c5565b50505050905090810190601f16801561040a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610426600435602435610fbb565b005b34801561043457600080fd5b5061043d6111a7565b604080519687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b6104266108d7565b34801561048457600080fd5b5061037c600160a060020a036004351661120b565b3480156104a557600080fd5b506104b160043561121d565b604080519c8d529a151560208d01528b8b019990995260608b019790975260808a0195909552600160a060020a0390931660a089015260c088019190915260e087015261010086015261012085015261014084015261016083015251908190036101800190f35b34801561052457600080fd5b5061053360043560243561128d565b604080519115158252519081900360200190f35b34801561055357600080fd5b5061037c6004356112ad565b34801561056b57600080fd5b506104266112bf565b6040805160206004803580820135601f810184900484028501840190955284845261042694369492936024939284019190819084018382808284375094975050600160a060020a03853516955050505050602001351515611430565b3480156105dc57600080fd5b50610426600435600160a060020a036024351660443560643561163e565b34801561060657600080fd5b5061037c61182f565b6040805160206004803580820135601f8101849004840285018401909552848452610426943694929360249392840191908190840183828082843750949750508435955050505050602001351515611835565b34801561066e57600080fd5b5061067761196a565b604080519b8c5260208c019a909a528a8a019890985260608a0196909652608089019490945260a088019290925260c087015260e0860152610100850152600160a060020a0316610120840152151561014083015251908190036101600190f35b3480156106e457600080fd5b50610426600435600160a060020a03602435166119ce565b610426600435602435611b86565b34801561071657600080fd5b50610426600435602435611d4d565b34801561073157600080fd5b506103a3611e2a565b34801561074657600080fd5b50610755600435602435611e61565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b34801561078c57600080fd5b5061043d600160a060020a0360043516611e9b565b610426600435600160a060020a0360243516611f07565b3480156107c457600080fd5b5061037c6120f2565b3480156107d957600080fd5b5061037c612134565b3480156107ee57600080fd5b50610533612188565b34801561080357600080fd5b50610426600435602435612191565b34801561081e57600080fd5b5061082a600435612334565b60408051600160a060020a0390991689526020890197909752878701959095526060870193909352608086019190915260a085015260c084015260e083015251908190036101000190f35b34801561088157600080fd5b50610896600160a060020a0360043516612381565b604080519889526020890197909752878701959095526060870193909352608086019190915260a085015260c084015260e083015251908190036101000190f35b33600032821461091f576040805160e560020a62461bcd0281526020600482015260186024820152600080516020613fc8833981519152604482015290519081900360640190fd5b50803b8015610974576040805160e560020a62461bcd0281526020600482015260226024820152600080516020613fa8833981519152604482015260f060020a613d3d02606482015290519081900360840190fd5b600754600160a060020a03163314806109975750600854600160a060020a031633145b15156109a257600080fd5b60055460ff16156109fd576040805160e560020a62461bcd02815260206004820152601b60248201527f4c75636b79436f696e20616c7265616479206163746976617465640000000000604482015290519081900360640190fd5b6002543414610a56576040805160e560020a62461bcd02815260206004820152601b60248201527f61637469766174652067616d65206e6565642031302065746865720000000000604482015290519081900360640190fd5b60035415610acc576003546000908152600960205260409020600881015490541015610acc576040805160e560020a62461bcd02815260206004820152600a60248201527f6e6f626f64792077696e00000000000000000000000000000000000000000000604482015290519081900360640190fd5b6005805460ff191660019081179091556003805490910180825560009081526009602090815260408083204290850181905584548452818420611c20909101600490910155835483529182902034600291909101559154815190815290517fad61e0b8103cd22dd17df2a02217a2c0f2a064c1a486e27d7951d9080963b38d929181900390910190a15050565b336000908152600a60205260408120549080821515610df457604080517fe56556a9000000000000000000000000000000000000000000000000000000008152336004820152905173c87a693dbba31aefb9457683b7d245dad756db889163e56556a99160248083019260209291908290030181600087803b158015610bde57600080fd5b505af1158015610bf2573d6000803e3d6000fd5b505050506040513d6020811015610c0857600080fd5b5051604080517f82e37b2c00000000000000000000000000000000000000000000000000000000815260048101839052905191945073c87a693dbba31aefb9457683b7d245dad756db88916382e37b2c916024808201926020929091908290030181600087803b158015610c7b57600080fd5b505af1158015610c8f573d6000803e3d6000fd5b505050506040513d6020811015610ca557600080fd5b5051604080517fe3c08adf00000000000000000000000000000000000000000000000000000000815260048101869052905191935073c87a693dbba31aefb9457683b7d245dad756db889163e3c08adf916024808201926020929091908290030181600087803b158015610d1857600080fd5b505af1158015610d2c573d6000803e3d6000fd5b505050506040513d6020811015610d4257600080fd5b5051336000818152600a60209081526040808320889055878352600c9091529020805473ffffffffffffffffffffffffffffffffffffffff1916909117905590508115610dcb576000828152600b60209081526040808320869055858352600c82528083206001908101869055600e8352818420868552909252909120805460ff191690911790555b8015801590610dda5750828114155b15610df4576000838152600c602052604090206006018190555b505050565b6003546000908152600960205260408120600201546105dc90606490610e2690609663ffffffff61250816565b811515610e2f57fe5b04811515610e3957fe5b04905090565b600380546000818152600960205260408120909201549091429182118015610e77575060008381526009602052604090206004015482105b15610ed557610e89868486883461253a565b6000805484825260096020526040909120541415610ed05760008381526009602052604090206001818101805460ff1916909117905542600490910155610ece612b0a565b505b610f7c565b60008381526009602052604090206004015482118015610f07575060008381526009602052604090206001015460ff16155b15610f7c5760008381526009602052604090206001908101805460ff19169091179055610f32612b0a565b90508015610f4757610ed0868486883461253a565b6000868152600c6020526040902060030154610f69903463ffffffff612d7316565b6000878152600c60205260409020600301555b505050505050565b60408051808201909152600f81527f4c75636b79436f696e2053757065720000000000000000000000000000000000602082015281565b6000803381328214611005576040805160e560020a62461bcd0281526020600482015260186024820152600080516020613fc8833981519152604482015290519081900360640190fd5b50803b801561105a576040805160e560020a62461bcd0281526020600482015260226024820152600080516020613fa8833981519152604482015260f060020a613d3d02606482015290519081900360840190fd5b34866000611066610df9565b905081810283101561107757600080fd5b69152d02c7e14af680000083111561108e57600080fd5b60035460009081526009602052604081205490548a9190038111156110b257600080fd5b60055460ff1615156110fc576040805160e560020a62461bcd02815260206004820152600c6024820152600080516020613fe8833981519152604482015290519081900360640190fd5b611104610b59565b336000908152600a6020526040902054975088158061113357506000888152600c602052604090206001015489145b15611151576000888152600c60205260409020600601549650611190565b6000898152600b60209081526040808320548b8452600c909252909120600601549097508714611190576000888152600c602052604090206006018790555b61119b88888c610e3f565b50505050505050505050565b336000908152600a6020908152604080832054600380548552600f8452828520918552908352818420848052909252808320546001845281842054600285528285205493855282852054600486528386205460058752939095205491959094929190565b600a6020526000908152604090205481565b600960208190526000918252604090912080546001820154600283015460038401546004850154600586015460068701546007880154600889015499890154600a8a0154600b909a0154989a60ff90981699969895979496600160a060020a03909416959294919391929091908c565b600e60209081526000928352604080842090915290825290205460ff1681565b600b6020526000908152604090205481565b60008080338132821461130a576040805160e560020a62461bcd0281526020600482015260186024820152600080516020613fc8833981519152604482015290519081900360640190fd5b50803b801561135f576040805160e560020a62461bcd0281526020600482015260226024820152600080516020613fa8833981519152604482015260f060020a613d3d02606482015290519081900360840190fd5b336000908152600a6020526040902054429550935061137d84612d83565b92506000831115611429576000848152600c6020526040808220549051600160a060020a039091169185156108fc02918691818181858888f193505050501580156113cc573d6000803e3d6000fd5b506000848152600c60209081526040918290206001015482513381529182015280820185905260608101879052905185917f8f36579a548bc439baa172a6521207464154da77f411e2da3db2f53affe6cc3a919081900360800190a25b5050505050565b60008080808080338132821461147e576040805160e560020a62461bcd0281526020600482015260186024820152600080516020613fc8833981519152604482015290519081900360640190fd5b50803b80156114d3576040805160e560020a62461bcd0281526020600482015260226024820152600080516020613fa8833981519152604482015260f060020a613d3d02606482015290519081900360840190fd5b6114dc8b612e11565b604080517faa4d490b000000000000000000000000000000000000000000000000000000008152336004820181905260248201849052600160a060020a038e1660448301528c151560648301528251939b50995034985073c87a693dbba31aefb9457683b7d245dad756db889263aa4d490b928a926084808201939182900301818588803b15801561156d57600080fd5b505af1158015611581573d6000803e3d6000fd5b50505050506040513d604081101561159857600080fd5b508051602091820151600160a060020a03808b166000818152600a8652604080822054858352600c8852918190208054600190910154825188151581529889018790529416878201526060870193909352608086018c90524260a0870152915193995091975095508a92909186917fdd6176433ff5026bbce96b068584b7bbe3514227e72df9c630b749ae87e64442919081900360c00190a45050505050505050505050565b3373c87a693dbba31aefb9457683b7d245dad756db88146116cf576040805160e560020a62461bcd02815260206004820152602760248201527f796f7572206e6f7420706c617965724e616d657320636f6e74726163742e2e2e60448201527f20686d6d6d2e2e00000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a0383166000908152600a6020526040902054841461170a57600160a060020a0383166000908152600a602052604090208490555b6000828152600b60205260409020548414611731576000828152600b602052604090208490555b6000848152600c6020526040902054600160a060020a03848116911614611787576000848152600c60205260409020805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0385161790555b6000848152600c602052604090206001015482146117b4576000848152600c602052604090206001018290555b6000848152600c602052604090206006015481146117e1576000848152600c602052604090206006018190555b6000848152600e6020908152604080832085845290915290205460ff161515611829576000848152600e602090815260408083208584529091529020805460ff191660011790555b50505050565b60035481565b600080808080803381328214611883576040805160e560020a62461bcd0281526020600482015260186024820152600080516020613fc8833981519152604482015290519081900360640190fd5b50803b80156118d8576040805160e560020a62461bcd0281526020600482015260226024820152600080516020613fa8833981519152604482015260f060020a613d3d02606482015290519081900360840190fd5b6118e18b612e11565b604080517f745ea0c1000000000000000000000000000000000000000000000000000000008152336004820181905260248201849052604482018e90528c151560648301528251939b50995034985073c87a693dbba31aefb9457683b7d245dad756db889263745ea0c1928a926084808201939182900301818588803b15801561156d57600080fd5b600380546000818152600960208190526040909120805493810154600482015460028301549383015460088401546006850154600b8601546005870154600190970154989a95989497969395929491939092600160a060020a039091169160ff1690565b6000803381328214611a18576040805160e560020a62461bcd0281526020600482015260186024820152600080516020613fc8833981519152604482015290519081900360640190fd5b50803b8015611a6d576040805160e560020a62461bcd0281526020600482015260226024820152600080516020613fa8833981519152604482015260f060020a613d3d02606482015290519081900360840190fd5b60055460ff161515611ab7576040805160e560020a62461bcd02815260206004820152600c6024820152600080516020613fe8833981519152604482015290519081900360640190fd5b600354600090815260096020526040812054905487919003811115611adb57600080fd5b336000908152600a60205260409020549450600160a060020a0386161580611b0b5750600160a060020a03861633145b15611b29576000858152600c60205260409020600601549350611b72565b600160a060020a0386166000908152600a6020908152604080832054888452600c909252909120600601549094508414611b72576000858152600c602052604090206006018490555b611b7d858589613624565b50505050505050565b60003381328214611bcf576040805160e560020a62461bcd0281526020600482015260186024820152600080516020613fc8833981519152604482015290519081900360640190fd5b50803b8015611c24576040805160e560020a62461bcd0281526020600482015260226024820152600080516020613fa8833981519152604482015260f060020a613d3d02606482015290519081900360840190fd5b34856000611c30610df9565b9050818102831015611c4157600080fd5b69152d02c7e14af6800000831115611c5857600080fd5b600354600090815260096020526040812054905489919003811115611c7c57600080fd5b60055460ff161515611cc6576040805160e560020a62461bcd02815260206004820152600c6024820152600080516020613fe8833981519152604482015290519081900360640190fd5b611cce610b59565b336000908152600a60205260409020549650871580611cec57508688145b15611d0a576000878152600c60205260409020600601549750611d37565b6000878152600c60205260409020600601548814611d37576000878152600c602052604090206006018890555b611d4287898b610e3f565b505050505050505050565b3373c87a693dbba31aefb9457683b7d245dad756db8814611dde576040805160e560020a62461bcd02815260206004820152602760248201527f796f7572206e6f7420706c617965724e616d657320636f6e74726163742e2e2e60448201527f20686d6d6d2e2e00000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6000828152600e6020908152604080832084845290915290205460ff161515611e26576000828152600e602090815260408083208484529091529020805460ff191660011790555b5050565b60408051808201909152600981527f4c75636b79436f696e0000000000000000000000000000000000000000000000602082015281565b600d602090815260009283526040808420909152908252902080546001820154600283015460038401546004909401549293919290919085565b600160a060020a03166000908152600a6020908152604080832054600380548552600f8452828520918552908352818420848052909252808320546001845281842054600285528285205493855282852054600486528386205460058752939095205491959094929190565b6000803381328214611f51576040805160e560020a62461bcd0281526020600482015260186024820152600080516020613fc8833981519152604482015290519081900360640190fd5b50803b8015611fa6576040805160e560020a62461bcd0281526020600482015260226024820152600080516020613fa8833981519152604482015260f060020a613d3d02606482015290519081900360840190fd5b34866000611fb2610df9565b9050818102831015611fc357600080fd5b69152d02c7e14af6800000831115611fda57600080fd5b60035460009081526009602052604081205490548a919003811115611ffe57600080fd5b60055460ff161515612048576040805160e560020a62461bcd02815260206004820152600c6024820152600080516020613fe8833981519152604482015290519081900360640190fd5b612050610b59565b336000908152600a60205260409020549650600160a060020a03891615806120805750600160a060020a03891633145b1561209e576000878152600c602052604090206006015497506120e7565b600160a060020a0389166000908152600a60209081526040808320548a8452600c9092529091206006015490985088146120e7576000878152600c602052604090206006018890555b61119b87898c610e3f565b60008054604080514481524260208201526c01000000000000000000000000410281830152905190819003605401902081151561212b57fe5b06600101905090565b600354600081815260096020526040812060040154909190429081101561217e57600082815260096020526040902060040154612177908263ffffffff61380316565b9250612183565b600092505b505090565b60055460ff1681565b60008033813282146121db576040805160e560020a62461bcd0281526020600482015260186024820152600080516020613fc8833981519152604482015290519081900360640190fd5b50803b8015612230576040805160e560020a62461bcd0281526020600482015260226024820152600080516020613fa8833981519152604482015260f060020a613d3d02606482015290519081900360840190fd5b60055460ff16151561227a576040805160e560020a62461bcd02815260206004820152600c6024820152600080516020613fe8833981519152604482015290519081900360640190fd5b60035460009081526009602052604081205490548791900381111561229e57600080fd5b336000908152600a602052604090205494508515806122cd57506000858152600c602052604090206001015486145b156122eb576000858152600c60205260409020600601549350611b72565b6000868152600b6020908152604080832054888452600c909252909120600601549094508414611b72576000858152600c60205260409020600601849055611b7d858589613624565b600c6020526000908152604090208054600182015460028301546003840154600485015460058601546006870154600790970154600160a060020a03909616969495939492939192909188565b6000806000806000806000806000806000806003549350505050600160a060020a038a166000908152600a6020908152604080832054808452600c90925282206005015490916123d18284613818565b80156123f55750600082815260096020526040902060050154600160a060020a0316155b1561240e57506000818152600960205260409020600201545b6000838152600c60208181526040808420600180820154600d85528387208b8852855292862001549488905292909152600290910154859290612457908563ffffffff612d7316565b61248261246488886138c1565b6000898152600c60205260409020600301549063ffffffff612d7316565b600c600089815260200190815260200160002060040154600d60008a815260200190815260200160002060008b815260200190815260200160002060000154600d60008b815260200190815260200160002060008c8152602001908152602001600020600301549b509b509b509b509b509b509b509b5050505050919395975091939597565b600082151561251957506000612534565b5081810281838281151561252957fe5b041461253457600080fd5b92915050565b6000858152600d60209081526040808320600354845290915281206001015481908190819015156125af5761256e89613935565b600380546000908152600960209081526040808320600b01805460019081019091558a8452600d835281842085548552909252909120909101805490910190555b600354600090815260096020526040902054600154909450848115156125d157fe5b046001546001898701038115156125e457fe5b04039250600154848115156125f557fe5b0491508215156126ef5760015487850181151561260e57fe5b06151561267d576003546000908152600f602090815260408083208c845282528083208584529091529020546001546126539190808781151561264d57fe5b06613981565b6003546000908152600f602090815260408083208d845282528083208684529091529020556126ea565b6003546000908152600f602090815260408083208c845282528083208584529091529020546001546126c49190868a018115156126b657fe5b066001548781151561264d57fe5b6003546000908152600f602090815260408083208d845282528083208684529091529020555b6128c6565b5060005b826001018110156128c657801515612767576003546000908152600f602090815260408083208c84528252808320858501845290915290205460015461273f9190808781151561264d57fe5b6003546000908152600f602090815260408083208d8452825280832086860184529091529020555b60008111801561277657508281105b156127d6576003546000908152600f602090815260408083208c8452825280832085850184529091528120546001546127ae92613981565b6003546000908152600f602090815260408083208d8452825280832086860184529091529020555b828114156128be576001548785018115156127ed57fe5b061515612853576003546000908152600f602090815260408083208c84528252808320858501845290915281205460015461282792613981565b6003546000908152600f602090815260408083208d8452825280832086860184529091529020556128be565b6003546000908152600f602090815260408083208c8452825280832085850184529091529020546001546128969190868a0181151561288e57fe5b066000613981565b6003546000908152600f602090815260408083208d8452825280832086860184529091529020555b6001016126f3565b60045460035460009081526009602052604090205410156129bd5760045460035460009081526009602052604090205461290790899063ffffffff612d7316565b11612960576000898152600d60209081526040808320600354845290915290206004015461293c90889063ffffffff612d7316565b60008a8152600d6020908152604080832060035484529091529020600401556129bd565b6000898152600d60209081526040808320600354845282528083206004908101546009909352922054915461299d9290039063ffffffff612d7316565b60008a8152600d6020908152604080832060035484529091529020600401555b6003546000908152600960205260409020546129e090889063ffffffff612d7316565b600380546000908152600960209081526040808320949094558c8252600d815283822092548252919091522060010154612a2190889063ffffffff612d7316565b60008a8152600d602090815260408083206003805485529252808320600101939093555481522054612a54908690612d73565b60008a8152600d6020908152604080832060038054855290835281842094909455835483526009909152902043600a9091015554612a96908a9088888b61398e565b60035460008a8152600c60209081526040918290206001908101548351338152918901928201929092528a88018184015260608101939093526080830152517f5ddced682e01b0b0d834f68b7a992537d4f99d8759ebb95221c23edde4dc87409181900360a00190a1505050505050505050565b6003546000908180612b1a6120f2565b6000848152600960205260408120600881018390555490925010612c2257600083815260096020819052604090912090810154600790910154612b629163ffffffff612d7316565b91506000821115612c1d57600654604051600160a060020a039091169083156108fc029084906000818181858888f19350505050158015612ba7573d6000803e3d6000fd5b506005805460ff19169055600083815260096020908152604080832080546008820154600290920154835189815294850191909152838301949094526060830152608082019290925290517f1d5e2e0a933eb9e711e45060f379b1d32c37bb79fc1458b852cf9d1e460ad30d9181900360a00190a15b612d6c565b6000838152600960205260408120600701549250821115612c7957600654604051600160a060020a039091169083156108fc029084906000818181858888f19350505050158015612c77573d6000803e3d6000fd5b505b600380546001908101825593909301600081815260096020526040902042940184905592612caf90611c2063ffffffff612d7316565b6000848152600960208190526040808320600401939093556000198601825291902090810154600290910154612cea9163ffffffff612d7316565b6000848152600960209081526040808320600290810194909455600019870180845281842080546008820154919096015483519283529382019590955280820193909352606083019390935260808201529051600192507f1d5e2e0a933eb9e711e45060f379b1d32c37bb79fc1458b852cf9d1e460ad30d9181900360a00190a15b9392505050565b8181018281101561253457600080fd5b6000818152600c60205260408120600501548190612da2908490613c3d565b6000838152600c6020526040902060048101546003820154600290920154612de092612dd4919063ffffffff612d7316565b9063ffffffff612d7316565b90506000811115612534576000838152600c6020526040812060028101829055600381018290556004015592915050565b8051600090829082808060208411801590612e2c5750600084115b1515612ea8576040805160e560020a62461bcd02815260206004820152602a60248201527f737472696e67206d757374206265206265747765656e203120616e642033322060448201527f6368617261637465727300000000000000000000000000000000000000000000606482015290519081900360840190fd5b846000815181101515612eb757fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a0214158015612f1e57508460018503815181101515612ef657fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a0214155b1515612f9a576040805160e560020a62461bcd02815260206004820152602560248201527f737472696e672063616e6e6f74207374617274206f7220656e6420776974682060448201527f7370616365000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b846000815181101515612fa957fe5b90602001015160f860020a900460f860020a02600160f860020a031916603060f860020a0214156130ec57846001815181101515612fe357fe5b90602001015160f860020a900460f860020a02600160f860020a031916607860f860020a0214151515613060576040805160e560020a62461bcd02815260206004820152601b60248201527f737472696e672063616e6e6f7420737461727420776974682030780000000000604482015290519081900360640190fd5b84600181518110151561306f57fe5b90602001015160f860020a900460f860020a02600160f860020a031916605860f860020a02141515156130ec576040805160e560020a62461bcd02815260206004820152601b60248201527f737472696e672063616e6e6f7420737461727420776974682030580000000000604482015290519081900360640190fd5b600091505b838210156135bc5784517f40000000000000000000000000000000000000000000000000000000000000009086908490811061312957fe5b90602001015160f860020a900460f860020a02600160f860020a03191611801561319d575084517f5b000000000000000000000000000000000000000000000000000000000000009086908490811061317e57fe5b90602001015160f860020a900460f860020a02600160f860020a031916105b1561320a5784828151811015156131b057fe5b90602001015160f860020a900460f860020a0260f860020a900460200160f860020a0285838151811015156131e157fe5b906020010190600160f860020a031916908160001a90535082151561320557600192505b6135b1565b848281518110151561321857fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a0214806132e8575084517f60000000000000000000000000000000000000000000000000000000000000009086908490811061327457fe5b90602001015160f860020a900460f860020a02600160f860020a0319161180156132e8575084517f7b00000000000000000000000000000000000000000000000000000000000000908690849081106132c957fe5b90602001015160f860020a900460f860020a02600160f860020a031916105b80613392575084517f2f000000000000000000000000000000000000000000000000000000000000009086908490811061331e57fe5b90602001015160f860020a900460f860020a02600160f860020a031916118015613392575084517f3a000000000000000000000000000000000000000000000000000000000000009086908490811061337357fe5b90602001015160f860020a900460f860020a02600160f860020a031916105b151561340e576040805160e560020a62461bcd02815260206004820152602260248201527f737472696e6720636f6e7461696e7320696e76616c696420636861726163746560448201527f7273000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b848281518110151561341c57fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a0214156134fb57848260010181518110151561345857fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a02141515156134fb576040805160e560020a62461bcd02815260206004820152602860248201527f737472696e672063616e6e6f7420636f6e7461696e20636f6e7365637574697660448201527f6520737061636573000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b821580156135a7575084517f30000000000000000000000000000000000000000000000000000000000000009086908490811061353457fe5b90602001015160f860020a900460f860020a02600160f860020a03191610806135a7575084517f39000000000000000000000000000000000000000000000000000000000000009086908490811061358857fe5b90602001015160f860020a900460f860020a02600160f860020a031916115b156135b157600192505b6001909101906130f1565b600183151514613616576040805160e560020a62461bcd02815260206004820152601d60248201527f737472696e672063616e6e6f74206265206f6e6c79206e756d62657273000000604482015290519081900360640190fd5b505050506020015192915050565b60055460009081908190819060ff161515613677576040805160e560020a62461bcd02815260206004820152600c6024820152600080516020613fe8833981519152604482015290519081900360640190fd5b60038054600081815260096020526040902090910154909450429350831180156136b1575060008481526009602052604090206004015483105b80156136cf575060008481526009602052604090206001015460ff16155b15613752576136ec856136e0610df9565b9063ffffffff61250816565b91506136f88783613dc8565b50613706878587898661253a565b600080548582526009602052604090912054141561374d5760008481526009602052604090206001818101805460ff191690911790554260049091015561374b612b0a565b505b611b7d565b60008481526009602052604090206004015483118015613784575060008481526009602052604090206001015460ff16155b15611b7d5760008481526009602052604090206001908101805460ff191690911790556137af612b0a565b905080156137c65761374d8760035487893461253a565b6000878152600c60205260409020600301546137e8903463ffffffff612d7316565b6000888152600c602052604090206003015550505050505050565b60008282111561381257600080fd5b50900390565b6000806000600154600160096000888152602001908152602001600020600801540381151561384357fe5b049150600154600960008781526020019081526020016000206008015481151561386957fe5b06905080151561387857506001545b6000858152600f602090815260408083208784528252808320858452909152902054600019820160020a90811614156138b457600192506138b9565b600092505b505092915050565b6000828152600d60209081526040808320848452825280832060020154600454600990935290832060060154612d6c92613929918115156138fe57fe5b6000888152600d602090815260408083208a845290915290206004015491900463ffffffff61250816565b9063ffffffff61380316565b6000818152600c602052604090206005015415613969576000818152600c6020526040902060050154613969908290613c3d565b6003546000918252600c602052604090912060050155565b600290810a91900a031890565b600080808080808061399e610df9565b60045460008d8152600960205260409020549196501015613a0d5760045460008c8152600960205260409020546139db908a63ffffffff61380316565b11156139e957879650613a0d565b60045460008c815260096020526040902054613a0a9163ffffffff61380316565b96505b6000871115613a6f576064613a2b868902601463ffffffff61250816565b811515613a3457fe5b60008d8152600960205260409020600601549190049650613a5c90879063ffffffff612d7316565b60008c8152600960205260409020600601555b600a890493506014890492506064613a8e8a602063ffffffff61250816565b811515613a9757fe5b60008d8152600960205260409020600701549190049250613abf90839063ffffffff612d7316565b60008c8152600960205260409020600701558915613b525760008a8152600c6020526040902060040154613afa90859063ffffffff612d7316565b60008b8152600c6020526040808220600401929092556005549151610100909204600160a060020a0316916108fc86150291869190818181858888f19350505050158015613b4c573d6000803e3d6000fd5b50613ba4565b613b62838563ffffffff612d7316565b6005546040519194506101009004600160a060020a0316906108fc8515029085906000818181858888f19350505050158015613ba2573d6000803e3d6000fd5b505b613bb4898763ffffffff61380316565b90508915613bcf57613bcc818563ffffffff61380316565b90505b613bdf818463ffffffff61380316565b9050613bf1818363ffffffff61380316565b60008c81526009602081905260409091200154909150613c1890829063ffffffff612d7316565b60009b8c52600960208190526040909c20909b019a909a555050505050505050505050565b6000828152600d602090815260408083208484528252808320600201546004546009909352908320600601548392613ca992916139299190811515613c7e57fe5b6000898152600d602090815260408083208b845290915290206004015491900463ffffffff61250816565b915060009050613cb98385613818565b8015613cdd5750600083815260096020526040902060050154600160a060020a0316155b15613d195750600082815260096020526040902060028101546005909101805473ffffffffffffffffffffffffffffffffffffffff1916331790555b6000848152600c6020526040902060030154613d3c90839063ffffffff612d7316565b6000858152600c60205260409020600381019190915560020154613d6790829063ffffffff612d7316565b6000858152600c60209081526040808320600290810194909455600d825280832087845290915290200154613da2908363ffffffff612d7316565b6000948552600d6020908152604080872095875294905292909320600201919091555050565b6000828152600c60205260408120600501548190613de7908590613c3d565b6000848152600c6020526040902060048101546003820154600290920154613e1992612dd4919063ffffffff612d7316565b905082811015613e73576040805160e560020a62461bcd02815260206004820152601260248201527f6561726e696e677320746f6f206c6f7765720000000000000000000000000000604482015290519081900360640190fd5b6000848152600c60205260409020600301548311613ec4576000848152600c6020526040902060030154613ead908463ffffffff61380316565b6000858152600c6020526040902060030155613fa0565b6000848152600c6020526040902060030154613ee790849063ffffffff61380316565b6000858152600c602052604081206003810191909155600401549093508311613f43576000848152600c6020526040902060040154613f2c908463ffffffff61380316565b6000858152600c6020526040902060040155613fa0565b6000848152600c6020526040902060040154613f6690849063ffffffff61380316565b6000858152600c60205260408120600481019190915560020154909350613f8d9084613803565b6000858152600c60205260409020600201555b50929150505600736f7272792068756d616e73206f6e6c793d3d3d3d3d3d3d3d3d3d3d3d3d3d3d736f7272792068756d616e73206f6e6c79206f726967696e00000000000000006e6f742061637469766174650000000000000000000000000000000000000000a165627a7a72305820dacb375c730cf46d347eac5c4f7f697b994121583d295a6d3f266c4566ffe5620029

Deployed Bytecode

0x6080604052600436106101695763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663018a25e8811461036757806306fdde031461038e57806308752869146104185780630a1a677e146104285780630f15f4c01461047057806310f01eba1461047857806324c33d33146104995780632660316e146105185780632e19ebdc146105475780633ccfd60b1461055f5780633ddd46981461057457806349cc635d146105d0578063624ae5c0146105fa578063685ffd831461060f578063747dff421461066257806381617f8f146106d85780638f38f309146106fc5780638f7140ea1461070a57806395d89b4114610725578063a2bccae91461073a578063a3395a5214610780578063a9287619146107a1578063bf02dbcf146107b8578063c7e284b8146107cd578063d53b2679146107e2578063d574bcdf146107f7578063de7874f314610812578063ee0b5d8b14610875575b6007546000908190819081908190600160a060020a03163314806101975750600854600160a060020a031633145b156101a9576101a46108d7565b610360565b6000341115610360573394503285146101fa576040805160e560020a62461bcd0281526020600482015260186024820152600080516020613fc8833981519152604482015290519081900360640190fd5b843b93508315610250576040805160e560020a62461bcd0281526020600482015260226024820152600080516020613fa8833981519152604482015260f060020a613d3d02606482015290519081900360840190fd5b610258610b59565b336000908152600a60205260409020549250610272610df9565b91506000821161028157600080fd5b813481151561028c57fe5b0490506000811161029c57600080fd5b60055460ff161515600114610321576040805160e560020a62461bcd02815260206004820152602a60248201527f697473206e6f74207265616479207965742e2020636f6e746163742061646d6960448201527f6e6973747261746f727300000000000000000000000000000000000000000000606482015290519081900360840190fd5b60035460009081526009602052604081205490540381111561034257600080fd5b6000838152600c602052604090206006015461036090849083610e3f565b5050505050005b34801561037357600080fd5b5061037c610df9565b60408051918252519081900360200190f35b34801561039a57600080fd5b506103a3610f84565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103dd5781810151838201526020016103c5565b50505050905090810190601f16801561040a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610426600435602435610fbb565b005b34801561043457600080fd5b5061043d6111a7565b604080519687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b6104266108d7565b34801561048457600080fd5b5061037c600160a060020a036004351661120b565b3480156104a557600080fd5b506104b160043561121d565b604080519c8d529a151560208d01528b8b019990995260608b019790975260808a0195909552600160a060020a0390931660a089015260c088019190915260e087015261010086015261012085015261014084015261016083015251908190036101800190f35b34801561052457600080fd5b5061053360043560243561128d565b604080519115158252519081900360200190f35b34801561055357600080fd5b5061037c6004356112ad565b34801561056b57600080fd5b506104266112bf565b6040805160206004803580820135601f810184900484028501840190955284845261042694369492936024939284019190819084018382808284375094975050600160a060020a03853516955050505050602001351515611430565b3480156105dc57600080fd5b50610426600435600160a060020a036024351660443560643561163e565b34801561060657600080fd5b5061037c61182f565b6040805160206004803580820135601f8101849004840285018401909552848452610426943694929360249392840191908190840183828082843750949750508435955050505050602001351515611835565b34801561066e57600080fd5b5061067761196a565b604080519b8c5260208c019a909a528a8a019890985260608a0196909652608089019490945260a088019290925260c087015260e0860152610100850152600160a060020a0316610120840152151561014083015251908190036101600190f35b3480156106e457600080fd5b50610426600435600160a060020a03602435166119ce565b610426600435602435611b86565b34801561071657600080fd5b50610426600435602435611d4d565b34801561073157600080fd5b506103a3611e2a565b34801561074657600080fd5b50610755600435602435611e61565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b34801561078c57600080fd5b5061043d600160a060020a0360043516611e9b565b610426600435600160a060020a0360243516611f07565b3480156107c457600080fd5b5061037c6120f2565b3480156107d957600080fd5b5061037c612134565b3480156107ee57600080fd5b50610533612188565b34801561080357600080fd5b50610426600435602435612191565b34801561081e57600080fd5b5061082a600435612334565b60408051600160a060020a0390991689526020890197909752878701959095526060870193909352608086019190915260a085015260c084015260e083015251908190036101000190f35b34801561088157600080fd5b50610896600160a060020a0360043516612381565b604080519889526020890197909752878701959095526060870193909352608086019190915260a085015260c084015260e083015251908190036101000190f35b33600032821461091f576040805160e560020a62461bcd0281526020600482015260186024820152600080516020613fc8833981519152604482015290519081900360640190fd5b50803b8015610974576040805160e560020a62461bcd0281526020600482015260226024820152600080516020613fa8833981519152604482015260f060020a613d3d02606482015290519081900360840190fd5b600754600160a060020a03163314806109975750600854600160a060020a031633145b15156109a257600080fd5b60055460ff16156109fd576040805160e560020a62461bcd02815260206004820152601b60248201527f4c75636b79436f696e20616c7265616479206163746976617465640000000000604482015290519081900360640190fd5b6002543414610a56576040805160e560020a62461bcd02815260206004820152601b60248201527f61637469766174652067616d65206e6565642031302065746865720000000000604482015290519081900360640190fd5b60035415610acc576003546000908152600960205260409020600881015490541015610acc576040805160e560020a62461bcd02815260206004820152600a60248201527f6e6f626f64792077696e00000000000000000000000000000000000000000000604482015290519081900360640190fd5b6005805460ff191660019081179091556003805490910180825560009081526009602090815260408083204290850181905584548452818420611c20909101600490910155835483529182902034600291909101559154815190815290517fad61e0b8103cd22dd17df2a02217a2c0f2a064c1a486e27d7951d9080963b38d929181900390910190a15050565b336000908152600a60205260408120549080821515610df457604080517fe56556a9000000000000000000000000000000000000000000000000000000008152336004820152905173c87a693dbba31aefb9457683b7d245dad756db889163e56556a99160248083019260209291908290030181600087803b158015610bde57600080fd5b505af1158015610bf2573d6000803e3d6000fd5b505050506040513d6020811015610c0857600080fd5b5051604080517f82e37b2c00000000000000000000000000000000000000000000000000000000815260048101839052905191945073c87a693dbba31aefb9457683b7d245dad756db88916382e37b2c916024808201926020929091908290030181600087803b158015610c7b57600080fd5b505af1158015610c8f573d6000803e3d6000fd5b505050506040513d6020811015610ca557600080fd5b5051604080517fe3c08adf00000000000000000000000000000000000000000000000000000000815260048101869052905191935073c87a693dbba31aefb9457683b7d245dad756db889163e3c08adf916024808201926020929091908290030181600087803b158015610d1857600080fd5b505af1158015610d2c573d6000803e3d6000fd5b505050506040513d6020811015610d4257600080fd5b5051336000818152600a60209081526040808320889055878352600c9091529020805473ffffffffffffffffffffffffffffffffffffffff1916909117905590508115610dcb576000828152600b60209081526040808320869055858352600c82528083206001908101869055600e8352818420868552909252909120805460ff191690911790555b8015801590610dda5750828114155b15610df4576000838152600c602052604090206006018190555b505050565b6003546000908152600960205260408120600201546105dc90606490610e2690609663ffffffff61250816565b811515610e2f57fe5b04811515610e3957fe5b04905090565b600380546000818152600960205260408120909201549091429182118015610e77575060008381526009602052604090206004015482105b15610ed557610e89868486883461253a565b6000805484825260096020526040909120541415610ed05760008381526009602052604090206001818101805460ff1916909117905542600490910155610ece612b0a565b505b610f7c565b60008381526009602052604090206004015482118015610f07575060008381526009602052604090206001015460ff16155b15610f7c5760008381526009602052604090206001908101805460ff19169091179055610f32612b0a565b90508015610f4757610ed0868486883461253a565b6000868152600c6020526040902060030154610f69903463ffffffff612d7316565b6000878152600c60205260409020600301555b505050505050565b60408051808201909152600f81527f4c75636b79436f696e2053757065720000000000000000000000000000000000602082015281565b6000803381328214611005576040805160e560020a62461bcd0281526020600482015260186024820152600080516020613fc8833981519152604482015290519081900360640190fd5b50803b801561105a576040805160e560020a62461bcd0281526020600482015260226024820152600080516020613fa8833981519152604482015260f060020a613d3d02606482015290519081900360840190fd5b34866000611066610df9565b905081810283101561107757600080fd5b69152d02c7e14af680000083111561108e57600080fd5b60035460009081526009602052604081205490548a9190038111156110b257600080fd5b60055460ff1615156110fc576040805160e560020a62461bcd02815260206004820152600c6024820152600080516020613fe8833981519152604482015290519081900360640190fd5b611104610b59565b336000908152600a6020526040902054975088158061113357506000888152600c602052604090206001015489145b15611151576000888152600c60205260409020600601549650611190565b6000898152600b60209081526040808320548b8452600c909252909120600601549097508714611190576000888152600c602052604090206006018790555b61119b88888c610e3f565b50505050505050505050565b336000908152600a6020908152604080832054600380548552600f8452828520918552908352818420848052909252808320546001845281842054600285528285205493855282852054600486528386205460058752939095205491959094929190565b600a6020526000908152604090205481565b600960208190526000918252604090912080546001820154600283015460038401546004850154600586015460068701546007880154600889015499890154600a8a0154600b909a0154989a60ff90981699969895979496600160a060020a03909416959294919391929091908c565b600e60209081526000928352604080842090915290825290205460ff1681565b600b6020526000908152604090205481565b60008080338132821461130a576040805160e560020a62461bcd0281526020600482015260186024820152600080516020613fc8833981519152604482015290519081900360640190fd5b50803b801561135f576040805160e560020a62461bcd0281526020600482015260226024820152600080516020613fa8833981519152604482015260f060020a613d3d02606482015290519081900360840190fd5b336000908152600a6020526040902054429550935061137d84612d83565b92506000831115611429576000848152600c6020526040808220549051600160a060020a039091169185156108fc02918691818181858888f193505050501580156113cc573d6000803e3d6000fd5b506000848152600c60209081526040918290206001015482513381529182015280820185905260608101879052905185917f8f36579a548bc439baa172a6521207464154da77f411e2da3db2f53affe6cc3a919081900360800190a25b5050505050565b60008080808080338132821461147e576040805160e560020a62461bcd0281526020600482015260186024820152600080516020613fc8833981519152604482015290519081900360640190fd5b50803b80156114d3576040805160e560020a62461bcd0281526020600482015260226024820152600080516020613fa8833981519152604482015260f060020a613d3d02606482015290519081900360840190fd5b6114dc8b612e11565b604080517faa4d490b000000000000000000000000000000000000000000000000000000008152336004820181905260248201849052600160a060020a038e1660448301528c151560648301528251939b50995034985073c87a693dbba31aefb9457683b7d245dad756db889263aa4d490b928a926084808201939182900301818588803b15801561156d57600080fd5b505af1158015611581573d6000803e3d6000fd5b50505050506040513d604081101561159857600080fd5b508051602091820151600160a060020a03808b166000818152600a8652604080822054858352600c8852918190208054600190910154825188151581529889018790529416878201526060870193909352608086018c90524260a0870152915193995091975095508a92909186917fdd6176433ff5026bbce96b068584b7bbe3514227e72df9c630b749ae87e64442919081900360c00190a45050505050505050505050565b3373c87a693dbba31aefb9457683b7d245dad756db88146116cf576040805160e560020a62461bcd02815260206004820152602760248201527f796f7572206e6f7420706c617965724e616d657320636f6e74726163742e2e2e60448201527f20686d6d6d2e2e00000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a0383166000908152600a6020526040902054841461170a57600160a060020a0383166000908152600a602052604090208490555b6000828152600b60205260409020548414611731576000828152600b602052604090208490555b6000848152600c6020526040902054600160a060020a03848116911614611787576000848152600c60205260409020805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0385161790555b6000848152600c602052604090206001015482146117b4576000848152600c602052604090206001018290555b6000848152600c602052604090206006015481146117e1576000848152600c602052604090206006018190555b6000848152600e6020908152604080832085845290915290205460ff161515611829576000848152600e602090815260408083208584529091529020805460ff191660011790555b50505050565b60035481565b600080808080803381328214611883576040805160e560020a62461bcd0281526020600482015260186024820152600080516020613fc8833981519152604482015290519081900360640190fd5b50803b80156118d8576040805160e560020a62461bcd0281526020600482015260226024820152600080516020613fa8833981519152604482015260f060020a613d3d02606482015290519081900360840190fd5b6118e18b612e11565b604080517f745ea0c1000000000000000000000000000000000000000000000000000000008152336004820181905260248201849052604482018e90528c151560648301528251939b50995034985073c87a693dbba31aefb9457683b7d245dad756db889263745ea0c1928a926084808201939182900301818588803b15801561156d57600080fd5b600380546000818152600960208190526040909120805493810154600482015460028301549383015460088401546006850154600b8601546005870154600190970154989a95989497969395929491939092600160a060020a039091169160ff1690565b6000803381328214611a18576040805160e560020a62461bcd0281526020600482015260186024820152600080516020613fc8833981519152604482015290519081900360640190fd5b50803b8015611a6d576040805160e560020a62461bcd0281526020600482015260226024820152600080516020613fa8833981519152604482015260f060020a613d3d02606482015290519081900360840190fd5b60055460ff161515611ab7576040805160e560020a62461bcd02815260206004820152600c6024820152600080516020613fe8833981519152604482015290519081900360640190fd5b600354600090815260096020526040812054905487919003811115611adb57600080fd5b336000908152600a60205260409020549450600160a060020a0386161580611b0b5750600160a060020a03861633145b15611b29576000858152600c60205260409020600601549350611b72565b600160a060020a0386166000908152600a6020908152604080832054888452600c909252909120600601549094508414611b72576000858152600c602052604090206006018490555b611b7d858589613624565b50505050505050565b60003381328214611bcf576040805160e560020a62461bcd0281526020600482015260186024820152600080516020613fc8833981519152604482015290519081900360640190fd5b50803b8015611c24576040805160e560020a62461bcd0281526020600482015260226024820152600080516020613fa8833981519152604482015260f060020a613d3d02606482015290519081900360840190fd5b34856000611c30610df9565b9050818102831015611c4157600080fd5b69152d02c7e14af6800000831115611c5857600080fd5b600354600090815260096020526040812054905489919003811115611c7c57600080fd5b60055460ff161515611cc6576040805160e560020a62461bcd02815260206004820152600c6024820152600080516020613fe8833981519152604482015290519081900360640190fd5b611cce610b59565b336000908152600a60205260409020549650871580611cec57508688145b15611d0a576000878152600c60205260409020600601549750611d37565b6000878152600c60205260409020600601548814611d37576000878152600c602052604090206006018890555b611d4287898b610e3f565b505050505050505050565b3373c87a693dbba31aefb9457683b7d245dad756db8814611dde576040805160e560020a62461bcd02815260206004820152602760248201527f796f7572206e6f7420706c617965724e616d657320636f6e74726163742e2e2e60448201527f20686d6d6d2e2e00000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6000828152600e6020908152604080832084845290915290205460ff161515611e26576000828152600e602090815260408083208484529091529020805460ff191660011790555b5050565b60408051808201909152600981527f4c75636b79436f696e0000000000000000000000000000000000000000000000602082015281565b600d602090815260009283526040808420909152908252902080546001820154600283015460038401546004909401549293919290919085565b600160a060020a03166000908152600a6020908152604080832054600380548552600f8452828520918552908352818420848052909252808320546001845281842054600285528285205493855282852054600486528386205460058752939095205491959094929190565b6000803381328214611f51576040805160e560020a62461bcd0281526020600482015260186024820152600080516020613fc8833981519152604482015290519081900360640190fd5b50803b8015611fa6576040805160e560020a62461bcd0281526020600482015260226024820152600080516020613fa8833981519152604482015260f060020a613d3d02606482015290519081900360840190fd5b34866000611fb2610df9565b9050818102831015611fc357600080fd5b69152d02c7e14af6800000831115611fda57600080fd5b60035460009081526009602052604081205490548a919003811115611ffe57600080fd5b60055460ff161515612048576040805160e560020a62461bcd02815260206004820152600c6024820152600080516020613fe8833981519152604482015290519081900360640190fd5b612050610b59565b336000908152600a60205260409020549650600160a060020a03891615806120805750600160a060020a03891633145b1561209e576000878152600c602052604090206006015497506120e7565b600160a060020a0389166000908152600a60209081526040808320548a8452600c9092529091206006015490985088146120e7576000878152600c602052604090206006018890555b61119b87898c610e3f565b60008054604080514481524260208201526c01000000000000000000000000410281830152905190819003605401902081151561212b57fe5b06600101905090565b600354600081815260096020526040812060040154909190429081101561217e57600082815260096020526040902060040154612177908263ffffffff61380316565b9250612183565b600092505b505090565b60055460ff1681565b60008033813282146121db576040805160e560020a62461bcd0281526020600482015260186024820152600080516020613fc8833981519152604482015290519081900360640190fd5b50803b8015612230576040805160e560020a62461bcd0281526020600482015260226024820152600080516020613fa8833981519152604482015260f060020a613d3d02606482015290519081900360840190fd5b60055460ff16151561227a576040805160e560020a62461bcd02815260206004820152600c6024820152600080516020613fe8833981519152604482015290519081900360640190fd5b60035460009081526009602052604081205490548791900381111561229e57600080fd5b336000908152600a602052604090205494508515806122cd57506000858152600c602052604090206001015486145b156122eb576000858152600c60205260409020600601549350611b72565b6000868152600b6020908152604080832054888452600c909252909120600601549094508414611b72576000858152600c60205260409020600601849055611b7d858589613624565b600c6020526000908152604090208054600182015460028301546003840154600485015460058601546006870154600790970154600160a060020a03909616969495939492939192909188565b6000806000806000806000806000806000806003549350505050600160a060020a038a166000908152600a6020908152604080832054808452600c90925282206005015490916123d18284613818565b80156123f55750600082815260096020526040902060050154600160a060020a0316155b1561240e57506000818152600960205260409020600201545b6000838152600c60208181526040808420600180820154600d85528387208b8852855292862001549488905292909152600290910154859290612457908563ffffffff612d7316565b61248261246488886138c1565b6000898152600c60205260409020600301549063ffffffff612d7316565b600c600089815260200190815260200160002060040154600d60008a815260200190815260200160002060008b815260200190815260200160002060000154600d60008b815260200190815260200160002060008c8152602001908152602001600020600301549b509b509b509b509b509b509b509b5050505050919395975091939597565b600082151561251957506000612534565b5081810281838281151561252957fe5b041461253457600080fd5b92915050565b6000858152600d60209081526040808320600354845290915281206001015481908190819015156125af5761256e89613935565b600380546000908152600960209081526040808320600b01805460019081019091558a8452600d835281842085548552909252909120909101805490910190555b600354600090815260096020526040902054600154909450848115156125d157fe5b046001546001898701038115156125e457fe5b04039250600154848115156125f557fe5b0491508215156126ef5760015487850181151561260e57fe5b06151561267d576003546000908152600f602090815260408083208c845282528083208584529091529020546001546126539190808781151561264d57fe5b06613981565b6003546000908152600f602090815260408083208d845282528083208684529091529020556126ea565b6003546000908152600f602090815260408083208c845282528083208584529091529020546001546126c49190868a018115156126b657fe5b066001548781151561264d57fe5b6003546000908152600f602090815260408083208d845282528083208684529091529020555b6128c6565b5060005b826001018110156128c657801515612767576003546000908152600f602090815260408083208c84528252808320858501845290915290205460015461273f9190808781151561264d57fe5b6003546000908152600f602090815260408083208d8452825280832086860184529091529020555b60008111801561277657508281105b156127d6576003546000908152600f602090815260408083208c8452825280832085850184529091528120546001546127ae92613981565b6003546000908152600f602090815260408083208d8452825280832086860184529091529020555b828114156128be576001548785018115156127ed57fe5b061515612853576003546000908152600f602090815260408083208c84528252808320858501845290915281205460015461282792613981565b6003546000908152600f602090815260408083208d8452825280832086860184529091529020556128be565b6003546000908152600f602090815260408083208c8452825280832085850184529091529020546001546128969190868a0181151561288e57fe5b066000613981565b6003546000908152600f602090815260408083208d8452825280832086860184529091529020555b6001016126f3565b60045460035460009081526009602052604090205410156129bd5760045460035460009081526009602052604090205461290790899063ffffffff612d7316565b11612960576000898152600d60209081526040808320600354845290915290206004015461293c90889063ffffffff612d7316565b60008a8152600d6020908152604080832060035484529091529020600401556129bd565b6000898152600d60209081526040808320600354845282528083206004908101546009909352922054915461299d9290039063ffffffff612d7316565b60008a8152600d6020908152604080832060035484529091529020600401555b6003546000908152600960205260409020546129e090889063ffffffff612d7316565b600380546000908152600960209081526040808320949094558c8252600d815283822092548252919091522060010154612a2190889063ffffffff612d7316565b60008a8152600d602090815260408083206003805485529252808320600101939093555481522054612a54908690612d73565b60008a8152600d6020908152604080832060038054855290835281842094909455835483526009909152902043600a9091015554612a96908a9088888b61398e565b60035460008a8152600c60209081526040918290206001908101548351338152918901928201929092528a88018184015260608101939093526080830152517f5ddced682e01b0b0d834f68b7a992537d4f99d8759ebb95221c23edde4dc87409181900360a00190a1505050505050505050565b6003546000908180612b1a6120f2565b6000848152600960205260408120600881018390555490925010612c2257600083815260096020819052604090912090810154600790910154612b629163ffffffff612d7316565b91506000821115612c1d57600654604051600160a060020a039091169083156108fc029084906000818181858888f19350505050158015612ba7573d6000803e3d6000fd5b506005805460ff19169055600083815260096020908152604080832080546008820154600290920154835189815294850191909152838301949094526060830152608082019290925290517f1d5e2e0a933eb9e711e45060f379b1d32c37bb79fc1458b852cf9d1e460ad30d9181900360a00190a15b612d6c565b6000838152600960205260408120600701549250821115612c7957600654604051600160a060020a039091169083156108fc029084906000818181858888f19350505050158015612c77573d6000803e3d6000fd5b505b600380546001908101825593909301600081815260096020526040902042940184905592612caf90611c2063ffffffff612d7316565b6000848152600960208190526040808320600401939093556000198601825291902090810154600290910154612cea9163ffffffff612d7316565b6000848152600960209081526040808320600290810194909455600019870180845281842080546008820154919096015483519283529382019590955280820193909352606083019390935260808201529051600192507f1d5e2e0a933eb9e711e45060f379b1d32c37bb79fc1458b852cf9d1e460ad30d9181900360a00190a15b9392505050565b8181018281101561253457600080fd5b6000818152600c60205260408120600501548190612da2908490613c3d565b6000838152600c6020526040902060048101546003820154600290920154612de092612dd4919063ffffffff612d7316565b9063ffffffff612d7316565b90506000811115612534576000838152600c6020526040812060028101829055600381018290556004015592915050565b8051600090829082808060208411801590612e2c5750600084115b1515612ea8576040805160e560020a62461bcd02815260206004820152602a60248201527f737472696e67206d757374206265206265747765656e203120616e642033322060448201527f6368617261637465727300000000000000000000000000000000000000000000606482015290519081900360840190fd5b846000815181101515612eb757fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a0214158015612f1e57508460018503815181101515612ef657fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a0214155b1515612f9a576040805160e560020a62461bcd02815260206004820152602560248201527f737472696e672063616e6e6f74207374617274206f7220656e6420776974682060448201527f7370616365000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b846000815181101515612fa957fe5b90602001015160f860020a900460f860020a02600160f860020a031916603060f860020a0214156130ec57846001815181101515612fe357fe5b90602001015160f860020a900460f860020a02600160f860020a031916607860f860020a0214151515613060576040805160e560020a62461bcd02815260206004820152601b60248201527f737472696e672063616e6e6f7420737461727420776974682030780000000000604482015290519081900360640190fd5b84600181518110151561306f57fe5b90602001015160f860020a900460f860020a02600160f860020a031916605860f860020a02141515156130ec576040805160e560020a62461bcd02815260206004820152601b60248201527f737472696e672063616e6e6f7420737461727420776974682030580000000000604482015290519081900360640190fd5b600091505b838210156135bc5784517f40000000000000000000000000000000000000000000000000000000000000009086908490811061312957fe5b90602001015160f860020a900460f860020a02600160f860020a03191611801561319d575084517f5b000000000000000000000000000000000000000000000000000000000000009086908490811061317e57fe5b90602001015160f860020a900460f860020a02600160f860020a031916105b1561320a5784828151811015156131b057fe5b90602001015160f860020a900460f860020a0260f860020a900460200160f860020a0285838151811015156131e157fe5b906020010190600160f860020a031916908160001a90535082151561320557600192505b6135b1565b848281518110151561321857fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a0214806132e8575084517f60000000000000000000000000000000000000000000000000000000000000009086908490811061327457fe5b90602001015160f860020a900460f860020a02600160f860020a0319161180156132e8575084517f7b00000000000000000000000000000000000000000000000000000000000000908690849081106132c957fe5b90602001015160f860020a900460f860020a02600160f860020a031916105b80613392575084517f2f000000000000000000000000000000000000000000000000000000000000009086908490811061331e57fe5b90602001015160f860020a900460f860020a02600160f860020a031916118015613392575084517f3a000000000000000000000000000000000000000000000000000000000000009086908490811061337357fe5b90602001015160f860020a900460f860020a02600160f860020a031916105b151561340e576040805160e560020a62461bcd02815260206004820152602260248201527f737472696e6720636f6e7461696e7320696e76616c696420636861726163746560448201527f7273000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b848281518110151561341c57fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a0214156134fb57848260010181518110151561345857fe5b90602001015160f860020a900460f860020a02600160f860020a031916602060f860020a02141515156134fb576040805160e560020a62461bcd02815260206004820152602860248201527f737472696e672063616e6e6f7420636f6e7461696e20636f6e7365637574697660448201527f6520737061636573000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b821580156135a7575084517f30000000000000000000000000000000000000000000000000000000000000009086908490811061353457fe5b90602001015160f860020a900460f860020a02600160f860020a03191610806135a7575084517f39000000000000000000000000000000000000000000000000000000000000009086908490811061358857fe5b90602001015160f860020a900460f860020a02600160f860020a031916115b156135b157600192505b6001909101906130f1565b600183151514613616576040805160e560020a62461bcd02815260206004820152601d60248201527f737472696e672063616e6e6f74206265206f6e6c79206e756d62657273000000604482015290519081900360640190fd5b505050506020015192915050565b60055460009081908190819060ff161515613677576040805160e560020a62461bcd02815260206004820152600c6024820152600080516020613fe8833981519152604482015290519081900360640190fd5b60038054600081815260096020526040902090910154909450429350831180156136b1575060008481526009602052604090206004015483105b80156136cf575060008481526009602052604090206001015460ff16155b15613752576136ec856136e0610df9565b9063ffffffff61250816565b91506136f88783613dc8565b50613706878587898661253a565b600080548582526009602052604090912054141561374d5760008481526009602052604090206001818101805460ff191690911790554260049091015561374b612b0a565b505b611b7d565b60008481526009602052604090206004015483118015613784575060008481526009602052604090206001015460ff16155b15611b7d5760008481526009602052604090206001908101805460ff191690911790556137af612b0a565b905080156137c65761374d8760035487893461253a565b6000878152600c60205260409020600301546137e8903463ffffffff612d7316565b6000888152600c602052604090206003015550505050505050565b60008282111561381257600080fd5b50900390565b6000806000600154600160096000888152602001908152602001600020600801540381151561384357fe5b049150600154600960008781526020019081526020016000206008015481151561386957fe5b06905080151561387857506001545b6000858152600f602090815260408083208784528252808320858452909152902054600019820160020a90811614156138b457600192506138b9565b600092505b505092915050565b6000828152600d60209081526040808320848452825280832060020154600454600990935290832060060154612d6c92613929918115156138fe57fe5b6000888152600d602090815260408083208a845290915290206004015491900463ffffffff61250816565b9063ffffffff61380316565b6000818152600c602052604090206005015415613969576000818152600c6020526040902060050154613969908290613c3d565b6003546000918252600c602052604090912060050155565b600290810a91900a031890565b600080808080808061399e610df9565b60045460008d8152600960205260409020549196501015613a0d5760045460008c8152600960205260409020546139db908a63ffffffff61380316565b11156139e957879650613a0d565b60045460008c815260096020526040902054613a0a9163ffffffff61380316565b96505b6000871115613a6f576064613a2b868902601463ffffffff61250816565b811515613a3457fe5b60008d8152600960205260409020600601549190049650613a5c90879063ffffffff612d7316565b60008c8152600960205260409020600601555b600a890493506014890492506064613a8e8a602063ffffffff61250816565b811515613a9757fe5b60008d8152600960205260409020600701549190049250613abf90839063ffffffff612d7316565b60008c8152600960205260409020600701558915613b525760008a8152600c6020526040902060040154613afa90859063ffffffff612d7316565b60008b8152600c6020526040808220600401929092556005549151610100909204600160a060020a0316916108fc86150291869190818181858888f19350505050158015613b4c573d6000803e3d6000fd5b50613ba4565b613b62838563ffffffff612d7316565b6005546040519194506101009004600160a060020a0316906108fc8515029085906000818181858888f19350505050158015613ba2573d6000803e3d6000fd5b505b613bb4898763ffffffff61380316565b90508915613bcf57613bcc818563ffffffff61380316565b90505b613bdf818463ffffffff61380316565b9050613bf1818363ffffffff61380316565b60008c81526009602081905260409091200154909150613c1890829063ffffffff612d7316565b60009b8c52600960208190526040909c20909b019a909a555050505050505050505050565b6000828152600d602090815260408083208484528252808320600201546004546009909352908320600601548392613ca992916139299190811515613c7e57fe5b6000898152600d602090815260408083208b845290915290206004015491900463ffffffff61250816565b915060009050613cb98385613818565b8015613cdd5750600083815260096020526040902060050154600160a060020a0316155b15613d195750600082815260096020526040902060028101546005909101805473ffffffffffffffffffffffffffffffffffffffff1916331790555b6000848152600c6020526040902060030154613d3c90839063ffffffff612d7316565b6000858152600c60205260409020600381019190915560020154613d6790829063ffffffff612d7316565b6000858152600c60209081526040808320600290810194909455600d825280832087845290915290200154613da2908363ffffffff612d7316565b6000948552600d6020908152604080872095875294905292909320600201919091555050565b6000828152600c60205260408120600501548190613de7908590613c3d565b6000848152600c6020526040902060048101546003820154600290920154613e1992612dd4919063ffffffff612d7316565b905082811015613e73576040805160e560020a62461bcd02815260206004820152601260248201527f6561726e696e677320746f6f206c6f7765720000000000000000000000000000604482015290519081900360640190fd5b6000848152600c60205260409020600301548311613ec4576000848152600c6020526040902060030154613ead908463ffffffff61380316565b6000858152600c6020526040902060030155613fa0565b6000848152600c6020526040902060030154613ee790849063ffffffff61380316565b6000858152600c602052604081206003810191909155600401549093508311613f43576000848152600c6020526040902060040154613f2c908463ffffffff61380316565b6000858152600c6020526040902060040155613fa0565b6000848152600c6020526040902060040154613f6690849063ffffffff61380316565b6000858152600c60205260408120600481019190915560020154909350613f8d9084613803565b6000858152600c60205260409020600201555b50929150505600736f7272792068756d616e73206f6e6c793d3d3d3d3d3d3d3d3d3d3d3d3d3d3d736f7272792068756d616e73206f6e6c79206f726967696e00000000000000006e6f742061637469766174650000000000000000000000000000000000000000a165627a7a72305820dacb375c730cf46d347eac5c4f7f697b994121583d295a6d3f266c4566ffe5620029

Swarm Source

bzzr://dacb375c730cf46d347eac5c4f7f697b994121583d295a6d3f266c4566ffe562

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.