ETH Price: $3,437.85 (-2.24%)
Gas: 4 Gwei

Contract

0x2B8df3A740d28565737e459055d1917497B1CBc7
 

Overview

ETH Balance

0.000294587913518876 ETH

Eth Value

$1.01 (@ $3,437.85/ETH)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Withdraw Earning...126260442021-06-13 12:06:181135 days ago1623585978IN
Tevvo.io
0 ETH0.000347315
Transfer114817412020-12-19 5:23:301312 days ago1608355410IN
Tevvo.io
0.09924 ETH0.00075636
Withdraw Earning...112887442020-11-19 13:38:171341 days ago1605793097IN
Tevvo.io
0 ETH0.0036061491
Transfer111590512020-10-30 15:50:441361 days ago1604073044IN
Tevvo.io
0.21 ETH0.00113454
Take Remaining T...111114092020-10-23 8:20:531368 days ago1603441253IN
Tevvo.io
0 ETH0.00221950
Withdraw Earning...110300932020-10-10 21:17:091381 days ago1602364629IN
Tevvo.io
0 ETH0.00108535
Withdraw Admin F...110297882020-10-10 20:10:561381 days ago1602360656IN
Tevvo.io
0 ETH0.0011945932.00000156
Withdraw Admin F...110297762020-10-10 20:08:281381 days ago1602360508IN
Tevvo.io
0 ETH0.0008576636
Withdraw Earning...110289712020-10-10 17:15:341381 days ago1602350134IN
Tevvo.io
0 ETH0.0019600869
Withdraw Earning...110289192020-10-10 17:02:121381 days ago1602349332IN
Tevvo.io
0 ETH0.0058991870
Withdraw Earning...110287342020-10-10 16:23:311381 days ago1602347011IN
Tevvo.io
0 ETH0.0152470773
Withdraw Earning...110287252020-10-10 16:21:461381 days ago1602346906IN
Tevvo.io
0 ETH0.0082724373
Withdraw Earning...110287172020-10-10 16:20:311381 days ago1602346831IN
Tevvo.io
0 ETH0.0120315673
Withdraw Earning...110286902020-10-10 16:14:551381 days ago1602346495IN
Tevvo.io
0 ETH0.009867675
Withdraw Earning...110286812020-10-10 16:12:231381 days ago1602346343IN
Tevvo.io
0 ETH0.010677675
Withdraw Earning...110286682020-10-10 16:09:171381 days ago1602346157IN
Tevvo.io
0 ETH0.012361275
Withdraw Earning...110286202020-10-10 15:58:071381 days ago1602345487IN
Tevvo.io
0 ETH0.0079405575
Withdraw Earning...110285982020-10-10 15:52:301381 days ago1602345150IN
Tevvo.io
0 ETH0.0082724373
Withdraw Earning...110285832020-10-10 15:50:201381 days ago1602345020IN
Tevvo.io
0 ETH0.007728873
Withdraw Earning...110285622020-10-10 15:45:581381 days ago1602344758IN
Tevvo.io
0 ETH0.0020737173
Withdraw Earning...110285522020-10-10 15:43:441381 days ago1602344624IN
Tevvo.io
0 ETH0.011802675
Withdraw Earning...110285372020-10-10 15:41:021381 days ago1602344462IN
Tevvo.io
0 ETH0.0082724373
Withdraw Earning...110285182020-10-10 15:38:051381 days ago1602344285IN
Tevvo.io
0 ETH0.0124104972
Withdraw Earning...110284982020-10-10 15:31:501381 days ago1602343910IN
Tevvo.io
0 ETH0.0074810469
Withdraw Admin F...110284822020-10-10 15:28:521381 days ago1602343732IN
Tevvo.io
0 ETH0.0038652662
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
110297882020-10-10 20:10:561381 days ago1602360656
Tevvo.io
0.118 ETH
110289712020-10-10 17:15:341381 days ago1602350134
Tevvo.io
0.62025 ETH
110289192020-10-10 17:02:121381 days ago1602349332
Tevvo.io
0.09075 ETH
110287342020-10-10 16:23:311381 days ago1602347011
Tevvo.io
1.2 ETH
110287252020-10-10 16:21:461381 days ago1602346906
Tevvo.io
3.2105 ETH
110287172020-10-10 16:20:311381 days ago1602346831
Tevvo.io
1.71875 ETH
110286902020-10-10 16:14:551381 days ago1602346495
Tevvo.io
1.62125 ETH
110286812020-10-10 16:12:231381 days ago1602346343
Tevvo.io
0.75 ETH
110286682020-10-10 16:09:171381 days ago1602346157
Tevvo.io
1.84125 ETH
110286202020-10-10 15:58:071381 days ago1602345487
Tevvo.io
0.0875 ETH
110285982020-10-10 15:52:301381 days ago1602345150
Tevvo.io
0.55 ETH
110285832020-10-10 15:50:201381 days ago1602345020
Tevvo.io
0.1625 ETH
110285622020-10-10 15:45:581381 days ago1602344758
Tevvo.io
0.125 ETH
110285522020-10-10 15:43:441381 days ago1602344624
Tevvo.io
0.25 ETH
110285372020-10-10 15:41:021381 days ago1602344462
Tevvo.io
0.7 ETH
110285182020-10-10 15:38:051381 days ago1602344285
Tevvo.io
0.4 ETH
110284982020-10-10 15:31:501381 days ago1602343910
Tevvo.io
0.3575 ETH
110284822020-10-10 15:28:521381 days ago1602343732
Tevvo.io
3.981 ETH
110284722020-10-10 15:25:481381 days ago1602343548
Tevvo.io
5.291 ETH
110284582020-10-10 15:22:101381 days ago1602343330
Tevvo.io
4.42 ETH
110284352020-10-10 15:18:191381 days ago1602343099
Tevvo.io
0.225 ETH
110284002020-10-10 15:10:251381 days ago1602342625
Tevvo.io
0.135 ETH
110283962020-10-10 15:09:161381 days ago1602342556
Tevvo.io
0.18525 ETH
110283682020-10-10 15:03:281381 days ago1602342208
Tevvo.io
0.24 ETH
110283672020-10-10 15:03:111381 days ago1602342191
Tevvo.io
2.053375 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Tevvo

Compiler Version
v0.5.17+commit.d19bba13

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2020-07-29
*/

pragma solidity ^0.5.17;

/*

████████╗███████╗██╗░░░██╗██╗░░░██╗░█████╗░
╚══██╔══╝██╔════╝██║░░░██║██║░░░██║██╔══██╗
░░░██║░░░█████╗░░╚██╗░██╔╝╚██╗░██╔╝██║░░██║
░░░██║░░░██╔══╝░░░╚████╔╝░░╚████╔╝░██║░░██║
░░░██║░░░███████╗░░╚██╔╝░░░░╚██╔╝░░╚█████╔╝
░░░╚═╝░░░╚══════╝░░░╚═╝░░░░░░╚═╝░░░░╚════╝░
Official Telegram: https://t.me/tevvo_official
Official Website: https://tevvo.io
*/

library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot overflow.
     *
     * NOTE: This is a feature of the next version of OpenZeppelin Contracts.
     * @dev Get it via `npm install @openzeppelin/contracts@next`.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     * NOTE: This is a feature of the next version of OpenZeppelin Contracts.
     * @dev Get it via `npm install @openzeppelin/contracts@next`.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }
}

interface Token {
    function transfer(address _to, uint256 _amount) external  returns (bool success);
    function balanceOf(address _owner) external view returns (uint256 balance);
    function decimals()external view returns (uint8);
}

library DataStructs {

        struct DailyRound {
            uint256 startTime;
            uint256 endTime;
            bool ended; //has daily round ended
            uint256 pool; //amount in the pool;
        }

        struct User {
            uint256 id;
            uint256 totalInvestment;
            uint256 directsIncome;
            uint256 roiReferralIncome;
            uint256 currInvestment;
            uint256 dailyIncome;            
            uint256 lastSettledTime;
            uint256 incomeLimitLeft;
            uint256 sponsorPoolIncome;
            uint256 referralCount;
            address referrer;
        }

        struct PlayerDailyRounds {
            uint256 ethVolume;
        }
}

contract Tevvo {
    using SafeMath for *;
    
    Token public tevvoToken;

    address public owner;
    uint256 private houseFee = 2;
    uint256 private poolTime = 24 hours;
    uint256 private payoutPeriod = 24 hours;
    uint256 private dailyWinPool = 5;
    uint256 private incomeTimes = 30;
    uint256 private incomeDivide = 10;
    uint256 public roundID;
    uint256 public currUserID;
    uint256 public m1 = 0;
    uint256 public m2 = 0;
    uint256[4] private awardPercentage;

    struct Leaderboard {
        uint256 amt;
        address addr;
    }

    Leaderboard[4] public topSponsors;
    
    Leaderboard[4] public lastTopSponsors;
    uint256[4] public lastTopSponsorsWinningAmount;
    address [] public admins;
    uint256 rate = 100000000000000000;// 1 ETH = 100 TVO tokens
        

    mapping (uint => address) public userList;
    mapping (uint256 => DataStructs.DailyRound) public round;
    mapping (address => DataStructs.User) public player;
    mapping (address => mapping (uint256 => DataStructs.PlayerDailyRounds)) public plyrRnds_; 

    /****************************  EVENTS   *****************************************/

    event registerUserEvent(address indexed _playerAddress, address indexed _referrer);
    event investmentEvent(address indexed _playerAddress, uint256 indexed _amount);
    event referralCommissionEvent(address indexed _playerAddress, address indexed _referrer, uint256 indexed amount, uint256 timeStamp);
    event dailyPayoutEvent(address indexed _playerAddress, uint256 indexed amount, uint256 indexed timeStamp);
    event withdrawEvent(address indexed _playerAddress, uint256 indexed amount, uint256 indexed timeStamp);
    event superBonusEvent(address indexed _playerAddress, uint256 indexed _amount);
    event roundAwardsEvent(address indexed _playerAddress, uint256 indexed _amount);
    event ownershipTransferred(address indexed owner, address indexed newOwner);



    constructor (address _admin, address _tokenToBeUsed) public {
         owner = _admin;
         tevvoToken = Token(_tokenToBeUsed);
         roundID = 1;
         round[1].startTime = now;
         round[1].endTime = now + poolTime;
         awardPercentage[0] = 40;
         awardPercentage[1] = 30;
         awardPercentage[2] = 20;
         awardPercentage[3] = 10;
         
         
        currUserID++;
         
        player[owner].id = currUserID;
        player[owner].incomeLimitLeft = 500000 ether;
        player[owner].lastSettledTime = now;
        player[owner].referralCount = 20;
        userList[currUserID] = owner;
         
         
    }
    
    /****************************  MODIFIERS    *****************************************/
    
    
    /**
     * @dev sets boundaries for incoming tx
     */
    modifier isWithinLimits(uint256 _eth) {
        require(_eth >= 100000000000000000, "Minimum contribution amount is 0.1 ETH");
        _;
    }

    /**
     * @dev sets permissible values for incoming tx
     */
    modifier isallowedValue(uint256 _eth) {
        require(_eth % 100000000000000000 == 0, "Only in multiples of 0.1");
        _;
    }
    
    /**
     * @dev allows only the user to run the function
     */
    modifier onlyOwner() {
        require(msg.sender == owner, "only Owner");
        _;
    }


    /****************************  CORE LOGIC    *****************************************/


    //if someone accidently sends eth to contract address
    function () external payable {
        registerUser(1);
    }


    //function to maintain the business logic 
    function registerUser(uint256 _referrerID) 
    public
    isWithinLimits(msg.value)
    isallowedValue(msg.value)
    payable {
        
        require(_referrerID > 0 && _referrerID <= currUserID, "Incorrect Referrer ID");
        address _referrer = userList[_referrerID];
    
        uint256 amount = msg.value;
        if (player[msg.sender].id <= 0) { //if player is a new joinee
        
            currUserID++;
            player[msg.sender].id = currUserID;
            player[msg.sender].lastSettledTime = now;
            player[msg.sender].currInvestment = amount;
            player[msg.sender].incomeLimitLeft = amount.mul(incomeTimes).div(incomeDivide);
            player[msg.sender].totalInvestment = amount;
            player[msg.sender].referrer = _referrer;
            userList[currUserID] = msg.sender;
            
            player[_referrer].referralCount = player[_referrer].referralCount.add(1);
            
            if(_referrer == owner) {
                player[owner].directsIncome = player[owner].directsIncome.add(amount.mul(15).div(100));
                for(uint i=0; i<admins.length; i++) {
                    player[admins[i]].directsIncome = player[admins[i]].directsIncome.add(amount.mul(15).div(400));
                }
            }
            else {
                plyrRnds_[_referrer][roundID].ethVolume = plyrRnds_[_referrer][roundID].ethVolume.add(amount);
                addSponsorToPool(_referrer);
                directsReferralBonus(msg.sender, amount);
            }
                
              emit registerUserEvent(msg.sender, _referrer);
        }
            //if the player has already joined earlier
        else {
            require(player[msg.sender].incomeLimitLeft == 0, "limit is still remaining");
            require(amount >= player[msg.sender].currInvestment, "Cannot invest lesser amount");
            _referrer = player[msg.sender].referrer;
            
            player[msg.sender].lastSettledTime = now;
            player[msg.sender].currInvestment = amount;
            player[msg.sender].incomeLimitLeft = amount.mul(incomeTimes).div(incomeDivide);
            player[msg.sender].totalInvestment = player[msg.sender].totalInvestment.add(amount);
            
            if(_referrer == owner) {
                player[owner].directsIncome = player[owner].directsIncome.add(amount.mul(15).div(100));
                for(uint i=0; i<admins.length; i++) {
                    player[admins[i]].directsIncome = player[admins[i]].directsIncome.add(amount.mul(15).div(400));
                }
            }
            else {
                plyrRnds_[_referrer][roundID].ethVolume = plyrRnds_[_referrer][roundID].ethVolume.add(amount);
                addSponsorToPool(_referrer);
                directsReferralBonus(msg.sender, amount);
            }
        }
            
            //add amount to daily pool
            round[roundID].pool = round[roundID].pool.add(amount.mul(dailyWinPool).div(100));
            //transfer 2% to main admin
            player[owner].dailyIncome = player[owner].dailyIncome.add(amount.mul(houseFee).div(100));
            //transfer 1% to other 4 admins
            for(uint i=0; i<admins.length; i++){
                player[admins[i]].dailyIncome = player[admins[i]].dailyIncome.add(amount.div(100));
            }
            //calculate token rewards
            uint256 tokensToAward = amount.div(rate).mul(10e18);
            tevvoToken.transfer(msg.sender,tokensToAward);
                
            //check if round time has finished
            if (now > round[roundID].endTime && round[roundID].ended == false) {
                startNextRound();
            }
            
            emit investmentEvent (msg.sender, amount);
    }


    function directsReferralBonus(address _playerAddress, uint256 amount)
    private
    {
        address _nextReferrer = player[_playerAddress].referrer;
        
        if(player[_nextReferrer].id <=15){
            if (player[_nextReferrer].incomeLimitLeft >= amount.mul(30).div(100)) {
                player[_nextReferrer].incomeLimitLeft = player[_nextReferrer].incomeLimitLeft.sub(amount.mul(30).div(100));
                player[_nextReferrer].directsIncome = player[_nextReferrer].directsIncome.add(amount.mul(30).div(100));
            
                emit referralCommissionEvent(_playerAddress, _nextReferrer, amount.mul(30).div(100), now);                        
            }
            else if(player[_nextReferrer].incomeLimitLeft !=0) {
                player[_nextReferrer].directsIncome = player[_nextReferrer].directsIncome.add(player[_nextReferrer].incomeLimitLeft);
                m1 = m1.add(amount.mul(30).div(100).sub(player[_nextReferrer].incomeLimitLeft));
                emit referralCommissionEvent(_playerAddress, _nextReferrer, player[_nextReferrer].incomeLimitLeft, now);
                player[_nextReferrer].incomeLimitLeft = 0;
            }
            else  {
                m1 = m1.add(amount.mul(30).div(100)); //make a note of the missed commission;
            }
        }
        else {
            if (player[_nextReferrer].incomeLimitLeft >= amount.mul(20).div(100)) {
                player[_nextReferrer].incomeLimitLeft = player[_nextReferrer].incomeLimitLeft.sub(amount.mul(20).div(100));
                player[_nextReferrer].directsIncome = player[_nextReferrer].directsIncome.add(amount.mul(20).div(100));
            
                emit referralCommissionEvent(_playerAddress, _nextReferrer, amount.mul(20).div(100), now);                        
            }
            else if(player[_nextReferrer].incomeLimitLeft !=0) {
                player[_nextReferrer].directsIncome = player[_nextReferrer].directsIncome.add(player[_nextReferrer].incomeLimitLeft);
                m1 = m1.add(amount.mul(20).div(100).sub(player[_nextReferrer].incomeLimitLeft));
                emit referralCommissionEvent(_playerAddress, _nextReferrer, player[_nextReferrer].incomeLimitLeft, now);
                player[_nextReferrer].incomeLimitLeft = 0;
            }
            else  {
                m1 = m1.add(amount.mul(20).div(100)); //make a note of the missed commission;
            }
        }
    }
    
    

    //function to manage the matching bonus from the daily ROI
    function roiReferralBonus(address _playerAddress, uint256 amount)
    private
    {
        address _nextReferrer = player[_playerAddress].referrer;
        uint256 _amountLeft = amount.div(2);
        uint i;

        for(i=0; i < 25; i++) {
            
            if (_nextReferrer != address(0x0)) {
                if(i == 0) {
                    if (player[_nextReferrer].incomeLimitLeft >= amount.div(2)) {
                        player[_nextReferrer].incomeLimitLeft = player[_nextReferrer].incomeLimitLeft.sub(amount.div(2));
                        player[_nextReferrer].roiReferralIncome = player[_nextReferrer].roiReferralIncome.add(amount.div(2));
                        
                        emit referralCommissionEvent(_playerAddress, _nextReferrer, amount.div(2), now);
                        
                    } else if(player[_nextReferrer].incomeLimitLeft !=0) {
                        player[_nextReferrer].roiReferralIncome = player[_nextReferrer].roiReferralIncome.add(player[_nextReferrer].incomeLimitLeft);
                        m2 = m2.add(amount.div(2).sub(player[_nextReferrer].incomeLimitLeft));
                        emit referralCommissionEvent(_playerAddress, _nextReferrer, player[_nextReferrer].incomeLimitLeft, now);
                        player[_nextReferrer].incomeLimitLeft = 0;
                        
                    }
                    else {
                        m2 = m2.add(amount.div(2)); 
                    }
                    _amountLeft = _amountLeft.sub(amount.div(2));                
                }
                else { // for users 2-25
                    if(player[_nextReferrer].referralCount >= i+1) {
                        if (player[_nextReferrer].incomeLimitLeft >= amount.div(20)) {
                            player[_nextReferrer].incomeLimitLeft = player[_nextReferrer].incomeLimitLeft.sub(amount.div(20));
                            player[_nextReferrer].roiReferralIncome = player[_nextReferrer].roiReferralIncome.add(amount.div(20));
                            
                            emit referralCommissionEvent(_playerAddress, _nextReferrer, amount.div(20), now);
                        
                        }else if(player[_nextReferrer].incomeLimitLeft !=0) {
                            player[_nextReferrer].roiReferralIncome = player[_nextReferrer].roiReferralIncome.add(player[_nextReferrer].incomeLimitLeft);
                            m2 = m2.add(amount.div(20).sub(player[_nextReferrer].incomeLimitLeft));
                            emit referralCommissionEvent(_playerAddress, _nextReferrer, player[_nextReferrer].incomeLimitLeft, now);
                            player[_nextReferrer].incomeLimitLeft = 0;                        
                        }
                        else {
                            m2 = m2.add(amount.div(20)); 
                        }
                    }
                    else {
                         m2 = m2.add(amount.div(20)); //make a note of the missed commission;
                    }
                }
            }   
            else {
                    m2 = m2.add((uint(25).sub(i)).mul(amount.div(20)).add(_amountLeft)); 
                    break;                
            }
            _nextReferrer = player[_nextReferrer].referrer;
        }
    }
    

    //method to settle and withdraw the daily ROI
    function settleIncome(address _playerAddress)
    private {
        
            
        uint256 remainingTimeForPayout;
        uint256 currInvestedAmount;
            
        if(now > player[_playerAddress].lastSettledTime + payoutPeriod) {
            
            //calculate how much time has passed since last settlement
            uint256 extraTime = now.sub(player[_playerAddress].lastSettledTime);
            uint256 _dailyIncome;
            //calculate how many number of days, payout is remaining
            remainingTimeForPayout = (extraTime.sub((extraTime % payoutPeriod))).div(payoutPeriod);
            
            currInvestedAmount = player[_playerAddress].currInvestment;
            //calculate 2.5% of his invested amount
            _dailyIncome = currInvestedAmount.div(40);
            //check his income limit remaining
            if (player[_playerAddress].incomeLimitLeft >= _dailyIncome.mul(remainingTimeForPayout)) {
                player[_playerAddress].incomeLimitLeft = player[_playerAddress].incomeLimitLeft.sub(_dailyIncome.mul(remainingTimeForPayout));
                player[_playerAddress].dailyIncome = player[_playerAddress].dailyIncome.add(_dailyIncome.mul(remainingTimeForPayout));
                player[_playerAddress].lastSettledTime = player[_playerAddress].lastSettledTime.add((extraTime.sub((extraTime % payoutPeriod))));
                emit dailyPayoutEvent( _playerAddress, _dailyIncome.mul(remainingTimeForPayout), now);
                roiReferralBonus(_playerAddress, _dailyIncome.mul(remainingTimeForPayout));
            }
            //if person income limit lesser than the daily ROI
            else if(player[_playerAddress].incomeLimitLeft !=0) {
                uint256 temp;
                temp = player[_playerAddress].incomeLimitLeft;                 
                player[_playerAddress].incomeLimitLeft = 0;
                player[_playerAddress].dailyIncome = player[_playerAddress].dailyIncome.add(temp);
                player[_playerAddress].lastSettledTime = now;
                emit dailyPayoutEvent( _playerAddress, temp, now);
                roiReferralBonus(_playerAddress, temp);
            }         
        }
        
    }
    

    //function to allow users to withdraw their earnings
    function withdrawEarnings() 
    public {
        
        address _playerAddress = msg.sender;
        
        //settle the daily dividend
        settleIncome(_playerAddress);
        
        uint256 _earnings =
                    player[_playerAddress].dailyIncome +
                    player[_playerAddress].directsIncome +
                    player[_playerAddress].roiReferralIncome +
                    player[_playerAddress].sponsorPoolIncome ;

        //can only withdraw if they have some earnings.         
        if(_earnings > 0) {
            require(address(this).balance >= _earnings, "Contract doesn't have sufficient amount to give you");

            player[_playerAddress].dailyIncome = 0;
            player[_playerAddress].directsIncome = 0;
            player[_playerAddress].roiReferralIncome = 0;
            player[_playerAddress].sponsorPoolIncome = 0;
            
            address(uint160(_playerAddress)).transfer(_earnings);
            emit withdrawEvent(_playerAddress, _earnings, now);
        }
    }
    
    
    //To start the new round for daily pool
    function startNextRound()
    private
     {
        uint256 _roundID = roundID;
       
        uint256 _poolAmount = round[roundID].pool;
        
            if (_poolAmount >= 10 ether) {
                round[_roundID].ended = true;
                uint256 distributedSponsorAwards = awardTopPromoters();
                
                _roundID++;
                roundID++;
                round[_roundID].startTime = now;
                round[_roundID].endTime = now.add(poolTime);
                round[_roundID].pool = _poolAmount.sub(distributedSponsorAwards);
            }
            else {
                round[_roundID].startTime = now;
                round[_roundID].endTime = now.add(poolTime);
                round[_roundID].pool = _poolAmount;
            }
        
    }


    
    function addSponsorToPool(address _add)
        private
        returns (bool)
    {
        if (_add == address(0x0)){
            return false;
        }

        uint256 _amt = plyrRnds_[_add][roundID].ethVolume;
        // if the amount is less than the last on the leaderboard, reject
        if (topSponsors[3].amt >= _amt){
            return false;
        }

        address firstAddr = topSponsors[0].addr;
        uint256 firstAmt = topSponsors[0].amt;
        
        address secondAddr = topSponsors[1].addr;
        uint256 secondAmt = topSponsors[1].amt;
        
        address thirdAddr = topSponsors[2].addr;
        uint256 thirdAmt = topSponsors[2].amt;
        


        // if the user should be at the top
        if (_amt > topSponsors[0].amt){

            if (topSponsors[0].addr == _add){
                topSponsors[0].amt = _amt;
                return true;
            }
            //if user is at the second position already and will come on first
            else if (topSponsors[1].addr == _add){

                topSponsors[0].addr = _add;
                topSponsors[0].amt = _amt;
                topSponsors[1].addr = firstAddr;
                topSponsors[1].amt = firstAmt;
                return true;
            }
            //if user is at the third position and will come on first
            else if (topSponsors[2].addr == _add) {
                topSponsors[0].addr = _add;
                topSponsors[0].amt = _amt;
                topSponsors[1].addr = firstAddr;
                topSponsors[1].amt = firstAmt;
                topSponsors[2].addr = secondAddr;
                topSponsors[2].amt = secondAmt;
                return true;
            }
            else{

                topSponsors[0].addr = _add;
                topSponsors[0].amt = _amt;
                topSponsors[1].addr = firstAddr;
                topSponsors[1].amt = firstAmt;
                topSponsors[2].addr = secondAddr;
                topSponsors[2].amt = secondAmt;
                topSponsors[3].addr = thirdAddr;
                topSponsors[3].amt = thirdAmt;
                return true;
            }
        }
        // if the user should be at the second position
        else if (_amt > topSponsors[1].amt){

            if (topSponsors[1].addr == _add){
                topSponsors[1].amt = _amt;
                return true;
            }
            //if user is at the third position, move it to second
            else if(topSponsors[2].addr == _add) {
                topSponsors[1].addr = _add;
                topSponsors[1].amt = _amt;
                topSponsors[2].addr = secondAddr;
                topSponsors[2].amt = secondAmt;
                return true;
            }
            else{
                topSponsors[1].addr = _add;
                topSponsors[1].amt = _amt;
                topSponsors[2].addr = secondAddr;
                topSponsors[2].amt = secondAmt;
                topSponsors[3].addr = thirdAddr;
                topSponsors[3].amt = thirdAmt;
                return true;
            }
        }
        //if the user should be at third position
        else if(_amt > topSponsors[2].amt){
            if(topSponsors[2].addr == _add) {
                topSponsors[2].amt = _amt;
                return true;
            }
            else {
                topSponsors[2].addr = _add;
                topSponsors[2].amt = _amt;
                topSponsors[3].addr = thirdAddr;
                topSponsors[3].amt = thirdAmt;
            }
        }
        // if the user should be at the fourth position
        else if (_amt > topSponsors[3].amt){

             if (topSponsors[3].addr == _add){
                topSponsors[3].amt = _amt;
                return true;
            }
            
            else{
                topSponsors[3].addr = _add;
                topSponsors[3].amt = _amt;
                return true;
            }
        }
    }


    function awardTopPromoters() 
        private 
        returns (uint256)
        {
            uint256 totAmt = round[roundID].pool.mul(10).div(100);
            uint256 distributedAmount;
            uint256 i;
       

            for (i = 0; i< 4; i++) {
                if (topSponsors[i].addr != address(0x0)) {
                    if (player[topSponsors[i].addr].incomeLimitLeft >= totAmt.mul(awardPercentage[i]).div(100)) {
                        player[topSponsors[i].addr].incomeLimitLeft = player[topSponsors[i].addr].incomeLimitLeft.sub(totAmt.mul(awardPercentage[i]).div(100));
                        player[topSponsors[i].addr].sponsorPoolIncome = player[topSponsors[i].addr].sponsorPoolIncome.add(totAmt.mul(awardPercentage[i]).div(100));                                                
                        emit roundAwardsEvent(topSponsors[i].addr, totAmt.mul(awardPercentage[i]).div(100));
                    }
                    else if(player[topSponsors[i].addr].incomeLimitLeft !=0) {
                        player[topSponsors[i].addr].sponsorPoolIncome = player[topSponsors[i].addr].sponsorPoolIncome.add(player[topSponsors[i].addr].incomeLimitLeft);
                        m2 = m2.add((totAmt.mul(awardPercentage[i]).div(100)).sub(player[topSponsors[i].addr].incomeLimitLeft));
                        emit roundAwardsEvent(topSponsors[i].addr,player[topSponsors[i].addr].incomeLimitLeft);
                        player[topSponsors[i].addr].incomeLimitLeft = 0;
                    }
                    else {
                        m2 = m2.add(totAmt.mul(awardPercentage[i]).div(100));
                    }

                    distributedAmount = distributedAmount.add(totAmt.mul(awardPercentage[i]).div(100));
                    lastTopSponsors[i].addr = topSponsors[i].addr;
                    lastTopSponsors[i].amt = topSponsors[i].amt;
                    lastTopSponsorsWinningAmount[i] = totAmt.mul(awardPercentage[i]).div(100);
                    topSponsors[i].addr = address(0x0);
                    topSponsors[i].amt = 0;
                }
            }
            return distributedAmount;
        }

  
    function withdrawAdminFees(uint256 _amount, address _receiver, uint256 _numberUI) public onlyOwner {

        if(_numberUI == 1 && m1 >= _amount) {
            if(_amount > 0) {
                if(address(this).balance >= _amount) {
                    m1 = m1.sub(_amount);
                    address(uint160(_receiver)).transfer(_amount);
                }
            }
        }
        else if(_numberUI == 2 && m2 >= _amount) {
            if(_amount > 0) {
                if(address(this).balance >= _amount) {
                    m2 = m2.sub(_amount);
                    address(uint160(_receiver)).transfer(_amount);
                }
            }
        }
    }
    
    function takeRemainingTokens() public onlyOwner {
        tevvoToken.transfer(owner,tevvoToken.balanceOf(address(this)));
    }
    
    function addAdmin(address _adminAddress) public onlyOwner returns(address [] memory){

        if(admins.length < 4) {
                admins.push(_adminAddress);
            }
        return admins;
    }
    
    function removeAdmin(address  _adminAddress) public onlyOwner returns(address[] memory){

        for(uint i=0; i < admins.length; i++){
            if(admins[i] == _adminAddress) {
                admins[i] = admins[admins.length-1];
                delete admins[admins.length-1];
                admins.length--;
            }
        }
        return admins;

    }

     /* @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) external onlyOwner {
        _transferOwnership(newOwner);
    }

     /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     */
    function _transferOwnership(address newOwner) private {
        require(newOwner != address(0), "New owner cannot be the zero address");
        emit ownershipTransferred(owner, newOwner);
        owner = newOwner;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_admin","type":"address"},{"internalType":"address","name":"_tokenToBeUsed","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_playerAddress","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"timeStamp","type":"uint256"}],"name":"dailyPayoutEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_playerAddress","type":"address"},{"indexed":true,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"investmentEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"ownershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_playerAddress","type":"address"},{"indexed":true,"internalType":"address","name":"_referrer","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timeStamp","type":"uint256"}],"name":"referralCommissionEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_playerAddress","type":"address"},{"indexed":true,"internalType":"address","name":"_referrer","type":"address"}],"name":"registerUserEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_playerAddress","type":"address"},{"indexed":true,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"roundAwardsEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_playerAddress","type":"address"},{"indexed":true,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"superBonusEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_playerAddress","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"timeStamp","type":"uint256"}],"name":"withdrawEvent","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":false,"inputs":[{"internalType":"address","name":"_adminAddress","type":"address"}],"name":"addAdmin","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"admins","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"currUserID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"lastTopSponsors","outputs":[{"internalType":"uint256","name":"amt","type":"uint256"},{"internalType":"address","name":"addr","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"lastTopSponsorsWinningAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"m1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"m2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"player","outputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"totalInvestment","type":"uint256"},{"internalType":"uint256","name":"directsIncome","type":"uint256"},{"internalType":"uint256","name":"roiReferralIncome","type":"uint256"},{"internalType":"uint256","name":"currInvestment","type":"uint256"},{"internalType":"uint256","name":"dailyIncome","type":"uint256"},{"internalType":"uint256","name":"lastSettledTime","type":"uint256"},{"internalType":"uint256","name":"incomeLimitLeft","type":"uint256"},{"internalType":"uint256","name":"sponsorPoolIncome","type":"uint256"},{"internalType":"uint256","name":"referralCount","type":"uint256"},{"internalType":"address","name":"referrer","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"plyrRnds_","outputs":[{"internalType":"uint256","name":"ethVolume","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_referrerID","type":"uint256"}],"name":"registerUser","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_adminAddress","type":"address"}],"name":"removeAdmin","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"round","outputs":[{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"endTime","type":"uint256"},{"internalType":"bool","name":"ended","type":"bool"},{"internalType":"uint256","name":"pool","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"roundID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"takeRemainingTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tevvoToken","outputs":[{"internalType":"contract Token","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"topSponsors","outputs":[{"internalType":"uint256","name":"amt","type":"uint256"},{"internalType":"address","name":"addr","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"userList","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"_numberUI","type":"uint256"}],"name":"withdrawAdminFees","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdrawEarnings","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

608060405260028055620151806003556201518060045560058055601e600655600a6007556000600a556000600b5567016345785d8a000060255534801561004657600080fd5b506040516133b53803806133b58339818101604052604081101561006957600080fd5b508051602091820151600180546001600160a01b03199081166001600160a01b03948516178083556000805483169486169490941784556008839055427fb6915e519d5f9dd23c62986e48578ddfa8cde5c92608222904fd87ad04df4ffd81905560035481017fb6915e519d5f9dd23c62986e48578ddfa8cde5c92608222904fd87ad04df4ffe556028600c819055601e600d556014600e819055600a600f5560098054870180825594891688529189526040808820949094558554881687528387206969e10de76676d0800000600790910155855488168752838720600601929092558454871686528286208101919091559254925484526026909552938220805491909316931692909217905561322d90819061018890396000f3fe60806040526004361061012a5760003560e01c8063791eacca116100ab578063a4bb170d1161006f578063a4bb170d14610499578063a77f92ff146104ae578063b73c6ce9146104c3578063d4841d5e146104d8578063d6d0037514610502578063f2fde38b1461052c5761012a565b8063791eacca146103f15780638b02fbf4146104305780638da5cb5b1461044557806391aa69ca1461045a5780639f4216e81461046f5761012a565b806336bfa47b116100f257806336bfa47b146102935780633c2a9da0146102de578063452b381d146102f35780634c54e1b51461032c57806370480275146103be5761012a565b806314bfd6d01461013657806314f8b4241461017c5780631785f53c146101a35780631bbfae0e1461022657806334d5f37b14610243575b610134600161055f565b005b34801561014257600080fd5b506101606004803603602081101561015957600080fd5b5035610e55565b604080516001600160a01b039092168252519081900360200190f35b34801561018857600080fd5b50610191610e7c565b60408051918252519081900360200190f35b3480156101af57600080fd5b506101d6600480360360208110156101c657600080fd5b50356001600160a01b0316610e82565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156102125781810151838201526020016101fa565b505050509050019250505060405180910390f35b6101346004803603602081101561023c57600080fd5b503561055f565b34801561024f57600080fd5b5061026d6004803603602081101561026657600080fd5b503561101d565b604080519485526020850193909352901515838301526060830152519081900360800190f35b34801561029f57600080fd5b506102bd600480360360208110156102b657600080fd5b503561104a565b604080519283526001600160a01b0390911660208301528051918290030190f35b3480156102ea57600080fd5b50610134611072565b3480156102ff57600080fd5b506101916004803603604081101561031657600080fd5b506001600160a01b0381351690602001356111bf565b34801561033857600080fd5b5061035f6004803603602081101561034f57600080fd5b50356001600160a01b03166111dc565b604080519b8c5260208c019a909a528a8a019890985260608a0196909652608089019490945260a088019290925260c087015260e08601526101008501526101208401526001600160a01b031661014083015251908190036101600190f35b3480156103ca57600080fd5b506101d6600480360360208110156103e157600080fd5b50356001600160a01b031661123e565b3480156103fd57600080fd5b506101346004803603606081101561041457600080fd5b508035906001600160a01b036020820135169060400135611344565b34801561043c57600080fd5b5061016061147e565b34801561045157600080fd5b5061016061148d565b34801561046657600080fd5b5061019161149c565b34801561047b57600080fd5b506101606004803603602081101561049257600080fd5b50356114a2565b3480156104a557600080fd5b506101916114bd565b3480156104ba57600080fd5b506101916114c3565b3480156104cf57600080fd5b506101346114c9565b3480156104e457600080fd5b506102bd600480360360208110156104fb57600080fd5b50356115e5565b34801561050e57600080fd5b506101916004803603602081101561052557600080fd5b50356115f2565b34801561053857600080fd5b506101346004803603602081101561054f57600080fd5b50356001600160a01b0316611606565b3467016345785d8a00008110156105a75760405162461bcd60e51b815260040180806020018281038252602681526020018061316e6026913960400191505060405180910390fd5b3467016345785d8a0000810615610605576040805162461bcd60e51b815260206004820152601860248201527f4f6e6c7920696e206d756c7469706c6573206f6620302e310000000000000000604482015290519081900360640190fd5b60008311801561061757506009548311155b610660576040805162461bcd60e51b8152602060048201526015602482015274125b98dbdc9c9958dd08149959995c9c995c881251605a1b604482015290519081900360640190fd5b6000838152602660209081526040808320543384526028909252909120546001600160a01b0390911690349061094357600980546001019081905533600090815260286020526040902090815542600680830191909155600490910182905560075490546106e691906106da90849063ffffffff61165e16565b9063ffffffff6116c016565b33600081815260286020818152604080842060078101969096556001808701889055600a90960180546001600160a01b038a166001600160a01b0319918216811790925560098054875260268552838720805490921690971790558452919052902001546107599163ffffffff61170216565b6001600160a01b03808416600081815260286020526040902060090192909255600154161415610898576107c661079c60646106da84600f63ffffffff61165e16565b6001546001600160a01b03166000908152602860205260409020600201549063ffffffff61170216565b6001546001600160a01b03166000908152602860205260408120600201919091555b6024548110156108925761085161080c6101906106da85600f63ffffffff61165e16565b602860006024858154811061081d57fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020600201549063ffffffff61170216565b602860006024848154811061086257fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020600201556001016107e8565b50610908565b6001600160a01b038216600090815260296020908152604080832060085484529091529020546108ce908263ffffffff61170216565b6001600160a01b038316600090815260296020908152604080832060085484529091529020556108fd8261175c565b506109083382611b3e565b6040516001600160a01b0383169033907fddb5b955685e49590bf27ea3575cf7aea7a942422afa776dba9c6fd4ff3e655a90600090a3610bc4565b33600090815260286020526040902060070154156109a8576040805162461bcd60e51b815260206004820152601860248201527f6c696d6974206973207374696c6c2072656d61696e696e670000000000000000604482015290519081900360640190fd5b33600090815260286020526040902060040154811015610a0f576040805162461bcd60e51b815260206004820152601b60248201527f43616e6e6f7420696e76657374206c657373657220616d6f756e740000000000604482015290519081900360640190fd5b336000908152602860205260409020600a81015442600680840191909155600490920183905560075491546001600160a01b039091169350610a5791906106da90849061165e565b336000908152602860205260409020600781019190915560010154610a82908263ffffffff61170216565b336000908152602860205260409020600190810191909155546001600160a01b0383811691161415610b5457610ac761079c60646106da84600f63ffffffff61165e16565b6001546001600160a01b03166000908152602860205260408120600201919091555b602454811015610b4e57610b0d61080c6101906106da85600f63ffffffff61165e16565b6028600060248481548110610b1e57fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902060020155600101610ae9565b50610bc4565b6001600160a01b03821660009081526029602090815260408083206008548452909152902054610b8a908263ffffffff61170216565b6001600160a01b03831660009081526029602090815260408083206008548452909152902055610bb98261175c565b50610bc43382611b3e565b610c02610be160646106da6005548561165e90919063ffffffff16565b6008546000908152602760205260409020600301549063ffffffff61170216565b600854600090815260276020526040902060030155600254610c6090610c36906064906106da90859063ffffffff61165e16565b6001546001600160a01b03166000908152602860205260409020600501549063ffffffff61170216565b6001546001600160a01b03166000908152602860205260408120600501919091555b602454811015610d2657610ce5610ca083606463ffffffff6116c016565b6028600060248581548110610cb157fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020600501549063ffffffff61170216565b6028600060248481548110610cf657fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902060050155600101610c82565b506000610d56678ac7230489e80000610d4a602554856116c090919063ffffffff16565b9063ffffffff61165e16565b600080546040805163a9059cbb60e01b81523360048201526024810185905290519394506001600160a01b039091169263a9059cbb92604480840193602093929083900390910190829087803b158015610daf57600080fd5b505af1158015610dc3573d6000803e3d6000fd5b505050506040513d6020811015610dd957600080fd5b505060085460009081526027602052604090206001015442118015610e13575060085460009081526027602052604090206002015460ff16155b15610e2057610e20611ffe565b604051829033907f1c58ec20c926cc585eaf181eaf11cb4eb553acc2fda2d960f36b962c17e8e75390600090a3505050505050565b60248181548110610e6257fe5b6000918252602090912001546001600160a01b0316905081565b60085481565b6001546060906001600160a01b03163314610ed1576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9027bbb732b960b11b604482015290519081900360640190fd5b60005b602454811015610fb957826001600160a01b031660248281548110610ef557fe5b6000918252602090912001546001600160a01b03161415610fb157602480546000198101908110610f2257fe5b600091825260209091200154602480546001600160a01b039092169183908110610f4857fe5b600091825260209091200180546001600160a01b0319166001600160a01b0392909216919091179055602480546000198101908110610f8357fe5b600091825260209091200180546001600160a01b03191690556024805490610faf9060001983016130fd565b505b600101610ed4565b50602480548060200260200160405190810160405280929190818152602001828054801561101057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610ff2575b505050505090505b919050565b60276020526000908152604090208054600182015460028301546003909301549192909160ff9091169084565b6010816004811061105757fe5b6002020180546001909101549091506001600160a01b031682565b6001546001600160a01b031633146110be576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9027bbb732b960b11b604482015290519081900360640190fd5b600054600154604080516370a0823160e01b815230600482015290516001600160a01b039384169363a9059cbb93169184916370a0823191602480820192602092909190829003018186803b15801561111657600080fd5b505afa15801561112a573d6000803e3d6000fd5b505050506040513d602081101561114057600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b03909316600484015260248301919091525160448083019260209291908290030181600087803b15801561119157600080fd5b505af11580156111a5573d6000803e3d6000fd5b505050506040513d60208110156111bb57600080fd5b5050565b602960209081526000928352604080842090915290825290205481565b602860205260009081526040902080546001820154600283015460038401546004850154600586015460068701546007880154600889015460098a0154600a909a0154989997989697959694959394929391929091906001600160a01b03168b565b6001546060906001600160a01b0316331461128d576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9027bbb732b960b11b604482015290519081900360640190fd5b602454600411156112e457602480546001810182556000919091527f7cd332d19b93bcabe3cce7ca0c18a052f57e5fd03b4758a09f30f5ddc4b22ec40180546001600160a01b0319166001600160a01b0384161790555b6024805480602002602001604051908101604052809291908181526020018280548015611010576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610ff25750505050509050919050565b6001546001600160a01b03163314611390576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9027bbb732b960b11b604482015290519081900360640190fd5b8060011480156113a2575082600a5410155b156114075782156114025782471061140257600a546113c7908463ffffffff6120fd16565b600a556040516001600160a01b0383169084156108fc029085906000818181858888f19350505050158015611400573d6000803e3d6000fd5b505b611479565b806002148015611419575082600b5410155b156114795782156114795782471061147957600b5461143e908463ffffffff6120fd16565b600b556040516001600160a01b0383169084156108fc029085906000818181858888f19350505050158015611477573d6000803e3d6000fd5b505b505050565b6000546001600160a01b031681565b6001546001600160a01b031681565b600b5481565b6026602052600090815260409020546001600160a01b031681565b60095481565b600a5481565b336114d38161213f565b6001600160a01b03811660009081526028602052604090206008810154600382015460028301546005909301549092019091010180156111bb578047101561154c5760405162461bcd60e51b815260040180806020018281038252603381526020018061313b6033913960400191505060405180910390fd5b6001600160a01b0382166000818152602860205260408082206005810183905560028101839055600381018390556008018290555183156108fc0291849190818181858888f193505050501580156115a8573d6000803e3d6000fd5b504281836001600160a01b03167f3f5274d9edd3b530545223adc84dcf865f2433783bc200984750bd356af5725360405160405180910390a45050565b6018816004811061105757fe5b602081600481106115ff57fe5b0154905081565b6001546001600160a01b03163314611652576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9027bbb732b960b11b604482015290519081900360640190fd5b61165b81612458565b50565b60008261166d575060006116ba565b8282028284828161167a57fe5b04146116b75760405162461bcd60e51b81526004018080602001828103825260218152602001806131946021913960400191505060405180910390fd5b90505b92915050565b60006116b783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506124f9565b6000828201838110156116b7576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60006001600160a01b03821661177457506000611018565b6001600160a01b0382166000908152602960209081526040808320600854845290915290205460165481116117ad576000915050611018565b6011546010546013546012546015546014546001600160a01b03958616959384169390911690848711156119e1576011546001600160a01b038a81169116141561180d5786601060005b6002020155506001965061101895505050505050565b6013546001600160a01b038a81169116141561186d57601180546001600160a01b0319166001600160a01b038b1617905586601060006002020155601380546001600160a01b0319166001600160a01b03881617905584601060016117f7565b6015546001600160a01b038a81169116141561191d57601180546001600160a01b0319166001600160a01b038b1617905586601060006002020155601380546001600160a01b0319166001600160a01b03881617905584601060015b60020201600001819055508360106002600481106118e357fe5b6002020160010160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508260106002600481106117f757fe5b601180546001600160a01b0319166001600160a01b038b1617905586601060006002020155601380546001600160a01b0319166001600160a01b03881617905584601060015b600202016000018190555083601060026004811061197d57fe5b6002020160010160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508260106002600481106119b757fe5b6002020155601780546001600160a01b0319166001600160a01b03841617905580601060036117f7565b601254871115611a6b576013546001600160a01b038a811691161415611a0b5786601060016117f7565b6015546001600160a01b038a811691161415611a4657601380546001600160a01b0319166001600160a01b038b1617905586601060016118c9565b601380546001600160a01b0319166001600160a01b038b161790558660106001611963565b601454871115611ae3576015546001600160a01b038a811691161415611a955786601060026117f7565b601580546001600160a01b0319166001600160a01b038b16179055866010600280020155601780546001600160a01b0319166001600160a01b03841617905580601060036002020155611b32565b601654871115611b32576017546001600160a01b038a811691161415611b0d5786601060036117f7565b601780546001600160a01b0319166001600160a01b038b1617905586601060036117f7565b50505050505050919050565b6001600160a01b03808316600090815260286020526040808220600a015490921680825291902054600f10611deb57611b8360646106da84601e63ffffffff61165e16565b6001600160a01b03821660009081526028602052604090206007015410611cb257611be5611bbd60646106da85601e63ffffffff61165e16565b6001600160a01b0383166000908152602860205260409020600701549063ffffffff6120fd16565b6001600160a01b038216600090815260286020526040902060070155611c42611c1a60646106da85601e63ffffffff61165e16565b6001600160a01b0383166000908152602860205260409020600201549063ffffffff61170216565b6001600160a01b038216600090815260286020526040902060020155611c7460646106da84601e63ffffffff61165e16565b816001600160a01b0316846001600160a01b03166000805160206131b5833981519152426040518082815260200191505060405180910390a4611402565b6001600160a01b03811660009081526028602052604090206007015415611dca576001600160a01b03811660009081526028602052604090206007810154600290910154611d059163ffffffff61170216565b6001600160a01b0382166000908152602860205260409020600281019190915560070154611d6290611d5390611d4760646106da87601e63ffffffff61165e16565b9063ffffffff6120fd16565b600a549063ffffffff61170216565b600a556001600160a01b03808216600081815260286020908152604091829020600701548251428152925190948816926000805160206131b583398151915292908290030190a46001600160a01b038116600090815260286020526040812060070155611402565b611de3611d5360646106da85601e63ffffffff61165e16565b600a55611479565b611e0160646106da84601463ffffffff61165e16565b6001600160a01b03821660009081526028602052604090206007015410611ee057611e3b611bbd60646106da85601463ffffffff61165e16565b6001600160a01b038216600090815260286020526040902060070155611e70611c1a60646106da85601463ffffffff61165e16565b6001600160a01b038216600090815260286020526040902060020155611ea260646106da84601463ffffffff61165e16565b816001600160a01b0316846001600160a01b03166000805160206131b5833981519152426040518082815260200191505060405180910390a4611479565b6001600160a01b03811660009081526028602052604090206007015415611fdd576001600160a01b03811660009081526028602052604090206007810154600290910154611f339163ffffffff61170216565b6001600160a01b0382166000908152602860205260409020600281019190915560070154611f7590611d5390611d4760646106da87601463ffffffff61165e16565b600a556001600160a01b03808216600081815260286020908152604091829020600701548251428152925190948816926000805160206131b583398151915292908290030190a46001600160a01b038116600090815260286020526040812060070155611479565b611ff6611d5360646106da85601463ffffffff61165e16565b600a55505050565b600854600081815260276020526040902060030154678ac7230489e8000081106120b8576000828152602760205260408120600201805460ff1916600117905561204661259b565b600880546001908101909155909301600081815260276020526040902042908190556003549194925061207e9163ffffffff61170216565b6000848152602760205260409020600101556120a0828263ffffffff6120fd16565b600084815260276020526040902060030155506111bb565b600082815260276020526040902042908190556003546120de919063ffffffff61170216565b6000928352602760205260409092206001810192909255600390910155565b60006116b783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612b45565b6004546001600160a01b0382166000908152602860205260408120600601549091829101421115611479576001600160a01b03831660009081526028602052604081206006015461219790429063ffffffff6120fd16565b905060006121be6004546106da60045485816121af57fe5b8691900663ffffffff6120fd16565b6001600160a01b0386166000908152602860208190526040909120600401549195509093506121f490849063ffffffff6116c016565b9050612206818563ffffffff61165e16565b6001600160a01b0386166000908152602860205260409020600701541061239e5761226261223a828663ffffffff61165e16565b6001600160a01b0387166000908152602860205260409020600701549063ffffffff6120fd16565b6001600160a01b0386166000908152602860205260409020600701556122b9612291828663ffffffff61165e16565b6001600160a01b0387166000908152602860205260409020600501549063ffffffff61170216565b6001600160a01b03861660009081526028602052604090206005015560045461231f906122f79084816122e857fe5b8591900663ffffffff6120fd16565b6001600160a01b0387166000908152602860205260409020600601549063ffffffff61170216565b6001600160a01b0386166000908152602860205260409020600601554261234c828663ffffffff61165e16565b6040516001600160a01b038816907f8c5a7dbdaf6119ca6207af55c8ed2aa8d5e9396e53ae2bf20ce1eaf826cef71a90600090a461239985612394838763ffffffff61165e16565b612b9f565b612451565b6001600160a01b03851660009081526028602052604090206007015415612451576001600160a01b0385166000908152602860205260408120600781018054929055600501546123f4908263ffffffff61170216565b6001600160a01b0387166000818152602860205260408082206005810194909455426006909401849055518492917f8c5a7dbdaf6119ca6207af55c8ed2aa8d5e9396e53ae2bf20ce1eaf826cef71a91a461244f8682612b9f565b505b5050505050565b6001600160a01b03811661249d5760405162461bcd60e51b81526004018080602001828103825260248152602001806131d56024913960400191505060405180910390fd5b6001546040516001600160a01b038084169216907f7699c77f2404f9b6bbd003861bb4af8ae70b205e19e73d7ec7fe4590db59a6b790600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b600081836125855760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561254a578181015183820152602001612532565b50505050905090810190601f1680156125775780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161259157fe5b0495945050505050565b60085460009081526027602052604081206003015481906125ca906064906106da90600a63ffffffff61165e16565b90506000805b6004811015612b3d576000601082600481106125e857fe5b60020201600101546001600160a01b031614612b355761262260646106da600c846004811061261357fe5b0154869063ffffffff61165e16565b602860006010846004811061263357fe5b60020201600101546001600160a01b03168152602081019190915260400160002060070154106127e4576126c061268460646106da600c856004811061267557fe5b0154879063ffffffff61165e16565b602860006010856004811061269557fe5b60020201600101546001600160a01b03168152602081019190915260400160002060070154906120fd565b60286000601084600481106126d157fe5b60020201600101546001600160a01b0316815260208101919091526040016000206007015561274a61270e60646106da600c856004811061267557fe5b602860006010856004811061271f57fe5b60020201600101546001600160a01b0316815260208101919091526040016000206008015490611702565b602860006010846004811061275b57fe5b60020201600101546001600160a01b0316815260208101919091526040016000206008015561279560646106da600c846004811061261357fe5b601082600481106127a257fe5b60020201600101546040516001600160a01b03909116907f253871ee597f4c36a5bfe1659499041a734f154acc85ca011a1c97c803c06eeb90600090a3612a21565b60286000601083600481106127f557fe5b60020201600101546001600160a01b0316815260208101919091526040016000206007015415612a0557612883602860006010846004811061283357fe5b6002020160010160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060070154602860006010856004811061271f57fe5b602860006010846004811061289457fe5b6002020160010160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206008018190555061294561293660286000601085600481106128ed57fe5b60020201600101546001600160a01b03168152602081019190915260400160002060070154611d4760646106da600c876004811061292757fe5b0154899063ffffffff61165e16565b600b549063ffffffff61170216565b600b55602860006010836004811061295957fe5b60020201600101546001600160a01b031681526020810191909152604001600020600701546010826004811061298b57fe5b60020201600101546040516001600160a01b03909116907f253871ee597f4c36a5bfe1659499041a734f154acc85ca011a1c97c803c06eeb90600090a3600060286000601084600481106129db57fe5b60020201600101546001600160a01b03168152602081019190915260400160002060070155612a21565b612a1d61293660646106da600c856004811061267557fe5b600b555b612a46612a3960646106da600c856004811061267557fe5b839063ffffffff61170216565b915060108160048110612a5557fe5b60020201600101546001600160a01b031660188260048110612a7357fe5b6002020160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060108160048110612aab57fe5b600202015460188260048110612abd57fe5b6002020155612ad760646106da600c846004811061261357fe5b60208260048110612ae457fe5b0155600060108260048110612af557fe5b6002020160010160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600060108260048110612b2f57fe5b60020201555b6001016125d0565b509150505b90565b60008184841115612b975760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561254a578181015183820152602001612532565b505050900390565b6001600160a01b038083166000908152602860205260408120600a015490911690612bd183600263ffffffff6116c016565b905060005b6019811015612451576001600160a01b038316156130945780612e5c57612c0484600263ffffffff6116c016565b6001600160a01b03841660009081526028602052604090206007015410612d2457612c61612c3985600263ffffffff6116c016565b6001600160a01b0385166000908152602860205260409020600701549063ffffffff6120fd16565b6001600160a01b038416600090815260286020526040902060070155612cb9612c9185600263ffffffff6116c016565b6001600160a01b0385166000908152602860205260409020600301549063ffffffff61170216565b6001600160a01b038416600090815260286020526040902060030155612ce684600263ffffffff6116c016565b836001600160a01b0316866001600160a01b03166000805160206131b5833981519152426040518082815260200191505060405180910390a4612e34565b6001600160a01b03831660009081526028602052604090206007015415612e1c576001600160a01b03831660009081526028602052604090206007810154600390910154612d779163ffffffff61170216565b6001600160a01b0384166000908152602860205260409020600381019190915560070154612db49061293690611d4787600263ffffffff6116c016565b600b556001600160a01b03808416600081815260286020908152604091829020600701548251428152925190948a16926000805160206131b583398151915292908290030190a46001600160a01b038316600090815260286020526040812060070155612e34565b612e3061293685600263ffffffff6116c016565b600b555b612e55612e4885600263ffffffff6116c016565b839063ffffffff6120fd16565b915061308f565b6001600160a01b038316600090815260286020526040902060090154600182011161307757612e9284601463ffffffff6116c016565b6001600160a01b03841660009081526028602052604090206007015410612f6257612ec7612c3985601463ffffffff6116c016565b6001600160a01b038416600090815260286020526040902060070155612ef7612c9185601463ffffffff6116c016565b6001600160a01b038416600090815260286020526040902060030155612f2484601463ffffffff6116c016565b836001600160a01b0316866001600160a01b03166000805160206131b5833981519152426040518082815260200191505060405180910390a4613072565b6001600160a01b0383166000908152602860205260409020600701541561305a576001600160a01b03831660009081526028602052604090206007810154600390910154612fb59163ffffffff61170216565b6001600160a01b0384166000908152602860205260409020600381019190915560070154612ff29061293690611d4787601463ffffffff6116c016565b600b556001600160a01b03808416600081815260286020908152604091829020600701548251428152925190948a16926000805160206131b583398151915292908290030190a46001600160a01b038316600090815260286020526040812060070155613072565b61306e61293685601463ffffffff6116c016565b600b555b61308f565b61308b61293685601463ffffffff6116c016565b600b555b6130d4565b6130cc612936836130c06130af88601463ffffffff6116c016565b610d4a60198763ffffffff6120fd16565b9063ffffffff61170216565b600b55612451565b6001600160a01b039283166000908152602860205260409020600a015490921691600101612bd6565b81548183558181111561147957600083815260209020611479918101908301612b4291905b808211156131365760008155600101613122565b509056fe436f6e747261637420646f65736e277420686176652073756666696369656e7420616d6f756e7420746f206769766520796f754d696e696d756d20636f6e747269627574696f6e20616d6f756e7420697320302e3120455448536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77e8a8de0c33658c3de38a3892af2c86397248fb25ae303545885fd8775df213174e6577206f776e65722063616e6e6f7420626520746865207a65726f2061646472657373a265627a7a72315820bd5143f969f48637188416e879788f07461e62878cdc26380943fb2caa92538064736f6c6343000511003200000000000000000000000068856ec2c630dddbfbd0fa9f598350c7c60ab6e6000000000000000000000000b09613767bc5bbc25f4186fb528b6fb12adc295b

Deployed Bytecode

0x60806040526004361061012a5760003560e01c8063791eacca116100ab578063a4bb170d1161006f578063a4bb170d14610499578063a77f92ff146104ae578063b73c6ce9146104c3578063d4841d5e146104d8578063d6d0037514610502578063f2fde38b1461052c5761012a565b8063791eacca146103f15780638b02fbf4146104305780638da5cb5b1461044557806391aa69ca1461045a5780639f4216e81461046f5761012a565b806336bfa47b116100f257806336bfa47b146102935780633c2a9da0146102de578063452b381d146102f35780634c54e1b51461032c57806370480275146103be5761012a565b806314bfd6d01461013657806314f8b4241461017c5780631785f53c146101a35780631bbfae0e1461022657806334d5f37b14610243575b610134600161055f565b005b34801561014257600080fd5b506101606004803603602081101561015957600080fd5b5035610e55565b604080516001600160a01b039092168252519081900360200190f35b34801561018857600080fd5b50610191610e7c565b60408051918252519081900360200190f35b3480156101af57600080fd5b506101d6600480360360208110156101c657600080fd5b50356001600160a01b0316610e82565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156102125781810151838201526020016101fa565b505050509050019250505060405180910390f35b6101346004803603602081101561023c57600080fd5b503561055f565b34801561024f57600080fd5b5061026d6004803603602081101561026657600080fd5b503561101d565b604080519485526020850193909352901515838301526060830152519081900360800190f35b34801561029f57600080fd5b506102bd600480360360208110156102b657600080fd5b503561104a565b604080519283526001600160a01b0390911660208301528051918290030190f35b3480156102ea57600080fd5b50610134611072565b3480156102ff57600080fd5b506101916004803603604081101561031657600080fd5b506001600160a01b0381351690602001356111bf565b34801561033857600080fd5b5061035f6004803603602081101561034f57600080fd5b50356001600160a01b03166111dc565b604080519b8c5260208c019a909a528a8a019890985260608a0196909652608089019490945260a088019290925260c087015260e08601526101008501526101208401526001600160a01b031661014083015251908190036101600190f35b3480156103ca57600080fd5b506101d6600480360360208110156103e157600080fd5b50356001600160a01b031661123e565b3480156103fd57600080fd5b506101346004803603606081101561041457600080fd5b508035906001600160a01b036020820135169060400135611344565b34801561043c57600080fd5b5061016061147e565b34801561045157600080fd5b5061016061148d565b34801561046657600080fd5b5061019161149c565b34801561047b57600080fd5b506101606004803603602081101561049257600080fd5b50356114a2565b3480156104a557600080fd5b506101916114bd565b3480156104ba57600080fd5b506101916114c3565b3480156104cf57600080fd5b506101346114c9565b3480156104e457600080fd5b506102bd600480360360208110156104fb57600080fd5b50356115e5565b34801561050e57600080fd5b506101916004803603602081101561052557600080fd5b50356115f2565b34801561053857600080fd5b506101346004803603602081101561054f57600080fd5b50356001600160a01b0316611606565b3467016345785d8a00008110156105a75760405162461bcd60e51b815260040180806020018281038252602681526020018061316e6026913960400191505060405180910390fd5b3467016345785d8a0000810615610605576040805162461bcd60e51b815260206004820152601860248201527f4f6e6c7920696e206d756c7469706c6573206f6620302e310000000000000000604482015290519081900360640190fd5b60008311801561061757506009548311155b610660576040805162461bcd60e51b8152602060048201526015602482015274125b98dbdc9c9958dd08149959995c9c995c881251605a1b604482015290519081900360640190fd5b6000838152602660209081526040808320543384526028909252909120546001600160a01b0390911690349061094357600980546001019081905533600090815260286020526040902090815542600680830191909155600490910182905560075490546106e691906106da90849063ffffffff61165e16565b9063ffffffff6116c016565b33600081815260286020818152604080842060078101969096556001808701889055600a90960180546001600160a01b038a166001600160a01b0319918216811790925560098054875260268552838720805490921690971790558452919052902001546107599163ffffffff61170216565b6001600160a01b03808416600081815260286020526040902060090192909255600154161415610898576107c661079c60646106da84600f63ffffffff61165e16565b6001546001600160a01b03166000908152602860205260409020600201549063ffffffff61170216565b6001546001600160a01b03166000908152602860205260408120600201919091555b6024548110156108925761085161080c6101906106da85600f63ffffffff61165e16565b602860006024858154811061081d57fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020600201549063ffffffff61170216565b602860006024848154811061086257fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020600201556001016107e8565b50610908565b6001600160a01b038216600090815260296020908152604080832060085484529091529020546108ce908263ffffffff61170216565b6001600160a01b038316600090815260296020908152604080832060085484529091529020556108fd8261175c565b506109083382611b3e565b6040516001600160a01b0383169033907fddb5b955685e49590bf27ea3575cf7aea7a942422afa776dba9c6fd4ff3e655a90600090a3610bc4565b33600090815260286020526040902060070154156109a8576040805162461bcd60e51b815260206004820152601860248201527f6c696d6974206973207374696c6c2072656d61696e696e670000000000000000604482015290519081900360640190fd5b33600090815260286020526040902060040154811015610a0f576040805162461bcd60e51b815260206004820152601b60248201527f43616e6e6f7420696e76657374206c657373657220616d6f756e740000000000604482015290519081900360640190fd5b336000908152602860205260409020600a81015442600680840191909155600490920183905560075491546001600160a01b039091169350610a5791906106da90849061165e565b336000908152602860205260409020600781019190915560010154610a82908263ffffffff61170216565b336000908152602860205260409020600190810191909155546001600160a01b0383811691161415610b5457610ac761079c60646106da84600f63ffffffff61165e16565b6001546001600160a01b03166000908152602860205260408120600201919091555b602454811015610b4e57610b0d61080c6101906106da85600f63ffffffff61165e16565b6028600060248481548110610b1e57fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902060020155600101610ae9565b50610bc4565b6001600160a01b03821660009081526029602090815260408083206008548452909152902054610b8a908263ffffffff61170216565b6001600160a01b03831660009081526029602090815260408083206008548452909152902055610bb98261175c565b50610bc43382611b3e565b610c02610be160646106da6005548561165e90919063ffffffff16565b6008546000908152602760205260409020600301549063ffffffff61170216565b600854600090815260276020526040902060030155600254610c6090610c36906064906106da90859063ffffffff61165e16565b6001546001600160a01b03166000908152602860205260409020600501549063ffffffff61170216565b6001546001600160a01b03166000908152602860205260408120600501919091555b602454811015610d2657610ce5610ca083606463ffffffff6116c016565b6028600060248581548110610cb157fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020600501549063ffffffff61170216565b6028600060248481548110610cf657fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902060050155600101610c82565b506000610d56678ac7230489e80000610d4a602554856116c090919063ffffffff16565b9063ffffffff61165e16565b600080546040805163a9059cbb60e01b81523360048201526024810185905290519394506001600160a01b039091169263a9059cbb92604480840193602093929083900390910190829087803b158015610daf57600080fd5b505af1158015610dc3573d6000803e3d6000fd5b505050506040513d6020811015610dd957600080fd5b505060085460009081526027602052604090206001015442118015610e13575060085460009081526027602052604090206002015460ff16155b15610e2057610e20611ffe565b604051829033907f1c58ec20c926cc585eaf181eaf11cb4eb553acc2fda2d960f36b962c17e8e75390600090a3505050505050565b60248181548110610e6257fe5b6000918252602090912001546001600160a01b0316905081565b60085481565b6001546060906001600160a01b03163314610ed1576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9027bbb732b960b11b604482015290519081900360640190fd5b60005b602454811015610fb957826001600160a01b031660248281548110610ef557fe5b6000918252602090912001546001600160a01b03161415610fb157602480546000198101908110610f2257fe5b600091825260209091200154602480546001600160a01b039092169183908110610f4857fe5b600091825260209091200180546001600160a01b0319166001600160a01b0392909216919091179055602480546000198101908110610f8357fe5b600091825260209091200180546001600160a01b03191690556024805490610faf9060001983016130fd565b505b600101610ed4565b50602480548060200260200160405190810160405280929190818152602001828054801561101057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610ff2575b505050505090505b919050565b60276020526000908152604090208054600182015460028301546003909301549192909160ff9091169084565b6010816004811061105757fe5b6002020180546001909101549091506001600160a01b031682565b6001546001600160a01b031633146110be576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9027bbb732b960b11b604482015290519081900360640190fd5b600054600154604080516370a0823160e01b815230600482015290516001600160a01b039384169363a9059cbb93169184916370a0823191602480820192602092909190829003018186803b15801561111657600080fd5b505afa15801561112a573d6000803e3d6000fd5b505050506040513d602081101561114057600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b03909316600484015260248301919091525160448083019260209291908290030181600087803b15801561119157600080fd5b505af11580156111a5573d6000803e3d6000fd5b505050506040513d60208110156111bb57600080fd5b5050565b602960209081526000928352604080842090915290825290205481565b602860205260009081526040902080546001820154600283015460038401546004850154600586015460068701546007880154600889015460098a0154600a909a0154989997989697959694959394929391929091906001600160a01b03168b565b6001546060906001600160a01b0316331461128d576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9027bbb732b960b11b604482015290519081900360640190fd5b602454600411156112e457602480546001810182556000919091527f7cd332d19b93bcabe3cce7ca0c18a052f57e5fd03b4758a09f30f5ddc4b22ec40180546001600160a01b0319166001600160a01b0384161790555b6024805480602002602001604051908101604052809291908181526020018280548015611010576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610ff25750505050509050919050565b6001546001600160a01b03163314611390576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9027bbb732b960b11b604482015290519081900360640190fd5b8060011480156113a2575082600a5410155b156114075782156114025782471061140257600a546113c7908463ffffffff6120fd16565b600a556040516001600160a01b0383169084156108fc029085906000818181858888f19350505050158015611400573d6000803e3d6000fd5b505b611479565b806002148015611419575082600b5410155b156114795782156114795782471061147957600b5461143e908463ffffffff6120fd16565b600b556040516001600160a01b0383169084156108fc029085906000818181858888f19350505050158015611477573d6000803e3d6000fd5b505b505050565b6000546001600160a01b031681565b6001546001600160a01b031681565b600b5481565b6026602052600090815260409020546001600160a01b031681565b60095481565b600a5481565b336114d38161213f565b6001600160a01b03811660009081526028602052604090206008810154600382015460028301546005909301549092019091010180156111bb578047101561154c5760405162461bcd60e51b815260040180806020018281038252603381526020018061313b6033913960400191505060405180910390fd5b6001600160a01b0382166000818152602860205260408082206005810183905560028101839055600381018390556008018290555183156108fc0291849190818181858888f193505050501580156115a8573d6000803e3d6000fd5b504281836001600160a01b03167f3f5274d9edd3b530545223adc84dcf865f2433783bc200984750bd356af5725360405160405180910390a45050565b6018816004811061105757fe5b602081600481106115ff57fe5b0154905081565b6001546001600160a01b03163314611652576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9027bbb732b960b11b604482015290519081900360640190fd5b61165b81612458565b50565b60008261166d575060006116ba565b8282028284828161167a57fe5b04146116b75760405162461bcd60e51b81526004018080602001828103825260218152602001806131946021913960400191505060405180910390fd5b90505b92915050565b60006116b783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506124f9565b6000828201838110156116b7576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60006001600160a01b03821661177457506000611018565b6001600160a01b0382166000908152602960209081526040808320600854845290915290205460165481116117ad576000915050611018565b6011546010546013546012546015546014546001600160a01b03958616959384169390911690848711156119e1576011546001600160a01b038a81169116141561180d5786601060005b6002020155506001965061101895505050505050565b6013546001600160a01b038a81169116141561186d57601180546001600160a01b0319166001600160a01b038b1617905586601060006002020155601380546001600160a01b0319166001600160a01b03881617905584601060016117f7565b6015546001600160a01b038a81169116141561191d57601180546001600160a01b0319166001600160a01b038b1617905586601060006002020155601380546001600160a01b0319166001600160a01b03881617905584601060015b60020201600001819055508360106002600481106118e357fe5b6002020160010160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508260106002600481106117f757fe5b601180546001600160a01b0319166001600160a01b038b1617905586601060006002020155601380546001600160a01b0319166001600160a01b03881617905584601060015b600202016000018190555083601060026004811061197d57fe5b6002020160010160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508260106002600481106119b757fe5b6002020155601780546001600160a01b0319166001600160a01b03841617905580601060036117f7565b601254871115611a6b576013546001600160a01b038a811691161415611a0b5786601060016117f7565b6015546001600160a01b038a811691161415611a4657601380546001600160a01b0319166001600160a01b038b1617905586601060016118c9565b601380546001600160a01b0319166001600160a01b038b161790558660106001611963565b601454871115611ae3576015546001600160a01b038a811691161415611a955786601060026117f7565b601580546001600160a01b0319166001600160a01b038b16179055866010600280020155601780546001600160a01b0319166001600160a01b03841617905580601060036002020155611b32565b601654871115611b32576017546001600160a01b038a811691161415611b0d5786601060036117f7565b601780546001600160a01b0319166001600160a01b038b1617905586601060036117f7565b50505050505050919050565b6001600160a01b03808316600090815260286020526040808220600a015490921680825291902054600f10611deb57611b8360646106da84601e63ffffffff61165e16565b6001600160a01b03821660009081526028602052604090206007015410611cb257611be5611bbd60646106da85601e63ffffffff61165e16565b6001600160a01b0383166000908152602860205260409020600701549063ffffffff6120fd16565b6001600160a01b038216600090815260286020526040902060070155611c42611c1a60646106da85601e63ffffffff61165e16565b6001600160a01b0383166000908152602860205260409020600201549063ffffffff61170216565b6001600160a01b038216600090815260286020526040902060020155611c7460646106da84601e63ffffffff61165e16565b816001600160a01b0316846001600160a01b03166000805160206131b5833981519152426040518082815260200191505060405180910390a4611402565b6001600160a01b03811660009081526028602052604090206007015415611dca576001600160a01b03811660009081526028602052604090206007810154600290910154611d059163ffffffff61170216565b6001600160a01b0382166000908152602860205260409020600281019190915560070154611d6290611d5390611d4760646106da87601e63ffffffff61165e16565b9063ffffffff6120fd16565b600a549063ffffffff61170216565b600a556001600160a01b03808216600081815260286020908152604091829020600701548251428152925190948816926000805160206131b583398151915292908290030190a46001600160a01b038116600090815260286020526040812060070155611402565b611de3611d5360646106da85601e63ffffffff61165e16565b600a55611479565b611e0160646106da84601463ffffffff61165e16565b6001600160a01b03821660009081526028602052604090206007015410611ee057611e3b611bbd60646106da85601463ffffffff61165e16565b6001600160a01b038216600090815260286020526040902060070155611e70611c1a60646106da85601463ffffffff61165e16565b6001600160a01b038216600090815260286020526040902060020155611ea260646106da84601463ffffffff61165e16565b816001600160a01b0316846001600160a01b03166000805160206131b5833981519152426040518082815260200191505060405180910390a4611479565b6001600160a01b03811660009081526028602052604090206007015415611fdd576001600160a01b03811660009081526028602052604090206007810154600290910154611f339163ffffffff61170216565b6001600160a01b0382166000908152602860205260409020600281019190915560070154611f7590611d5390611d4760646106da87601463ffffffff61165e16565b600a556001600160a01b03808216600081815260286020908152604091829020600701548251428152925190948816926000805160206131b583398151915292908290030190a46001600160a01b038116600090815260286020526040812060070155611479565b611ff6611d5360646106da85601463ffffffff61165e16565b600a55505050565b600854600081815260276020526040902060030154678ac7230489e8000081106120b8576000828152602760205260408120600201805460ff1916600117905561204661259b565b600880546001908101909155909301600081815260276020526040902042908190556003549194925061207e9163ffffffff61170216565b6000848152602760205260409020600101556120a0828263ffffffff6120fd16565b600084815260276020526040902060030155506111bb565b600082815260276020526040902042908190556003546120de919063ffffffff61170216565b6000928352602760205260409092206001810192909255600390910155565b60006116b783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612b45565b6004546001600160a01b0382166000908152602860205260408120600601549091829101421115611479576001600160a01b03831660009081526028602052604081206006015461219790429063ffffffff6120fd16565b905060006121be6004546106da60045485816121af57fe5b8691900663ffffffff6120fd16565b6001600160a01b0386166000908152602860208190526040909120600401549195509093506121f490849063ffffffff6116c016565b9050612206818563ffffffff61165e16565b6001600160a01b0386166000908152602860205260409020600701541061239e5761226261223a828663ffffffff61165e16565b6001600160a01b0387166000908152602860205260409020600701549063ffffffff6120fd16565b6001600160a01b0386166000908152602860205260409020600701556122b9612291828663ffffffff61165e16565b6001600160a01b0387166000908152602860205260409020600501549063ffffffff61170216565b6001600160a01b03861660009081526028602052604090206005015560045461231f906122f79084816122e857fe5b8591900663ffffffff6120fd16565b6001600160a01b0387166000908152602860205260409020600601549063ffffffff61170216565b6001600160a01b0386166000908152602860205260409020600601554261234c828663ffffffff61165e16565b6040516001600160a01b038816907f8c5a7dbdaf6119ca6207af55c8ed2aa8d5e9396e53ae2bf20ce1eaf826cef71a90600090a461239985612394838763ffffffff61165e16565b612b9f565b612451565b6001600160a01b03851660009081526028602052604090206007015415612451576001600160a01b0385166000908152602860205260408120600781018054929055600501546123f4908263ffffffff61170216565b6001600160a01b0387166000818152602860205260408082206005810194909455426006909401849055518492917f8c5a7dbdaf6119ca6207af55c8ed2aa8d5e9396e53ae2bf20ce1eaf826cef71a91a461244f8682612b9f565b505b5050505050565b6001600160a01b03811661249d5760405162461bcd60e51b81526004018080602001828103825260248152602001806131d56024913960400191505060405180910390fd5b6001546040516001600160a01b038084169216907f7699c77f2404f9b6bbd003861bb4af8ae70b205e19e73d7ec7fe4590db59a6b790600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b600081836125855760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561254a578181015183820152602001612532565b50505050905090810190601f1680156125775780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161259157fe5b0495945050505050565b60085460009081526027602052604081206003015481906125ca906064906106da90600a63ffffffff61165e16565b90506000805b6004811015612b3d576000601082600481106125e857fe5b60020201600101546001600160a01b031614612b355761262260646106da600c846004811061261357fe5b0154869063ffffffff61165e16565b602860006010846004811061263357fe5b60020201600101546001600160a01b03168152602081019190915260400160002060070154106127e4576126c061268460646106da600c856004811061267557fe5b0154879063ffffffff61165e16565b602860006010856004811061269557fe5b60020201600101546001600160a01b03168152602081019190915260400160002060070154906120fd565b60286000601084600481106126d157fe5b60020201600101546001600160a01b0316815260208101919091526040016000206007015561274a61270e60646106da600c856004811061267557fe5b602860006010856004811061271f57fe5b60020201600101546001600160a01b0316815260208101919091526040016000206008015490611702565b602860006010846004811061275b57fe5b60020201600101546001600160a01b0316815260208101919091526040016000206008015561279560646106da600c846004811061261357fe5b601082600481106127a257fe5b60020201600101546040516001600160a01b03909116907f253871ee597f4c36a5bfe1659499041a734f154acc85ca011a1c97c803c06eeb90600090a3612a21565b60286000601083600481106127f557fe5b60020201600101546001600160a01b0316815260208101919091526040016000206007015415612a0557612883602860006010846004811061283357fe5b6002020160010160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060070154602860006010856004811061271f57fe5b602860006010846004811061289457fe5b6002020160010160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206008018190555061294561293660286000601085600481106128ed57fe5b60020201600101546001600160a01b03168152602081019190915260400160002060070154611d4760646106da600c876004811061292757fe5b0154899063ffffffff61165e16565b600b549063ffffffff61170216565b600b55602860006010836004811061295957fe5b60020201600101546001600160a01b031681526020810191909152604001600020600701546010826004811061298b57fe5b60020201600101546040516001600160a01b03909116907f253871ee597f4c36a5bfe1659499041a734f154acc85ca011a1c97c803c06eeb90600090a3600060286000601084600481106129db57fe5b60020201600101546001600160a01b03168152602081019190915260400160002060070155612a21565b612a1d61293660646106da600c856004811061267557fe5b600b555b612a46612a3960646106da600c856004811061267557fe5b839063ffffffff61170216565b915060108160048110612a5557fe5b60020201600101546001600160a01b031660188260048110612a7357fe5b6002020160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060108160048110612aab57fe5b600202015460188260048110612abd57fe5b6002020155612ad760646106da600c846004811061261357fe5b60208260048110612ae457fe5b0155600060108260048110612af557fe5b6002020160010160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600060108260048110612b2f57fe5b60020201555b6001016125d0565b509150505b90565b60008184841115612b975760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561254a578181015183820152602001612532565b505050900390565b6001600160a01b038083166000908152602860205260408120600a015490911690612bd183600263ffffffff6116c016565b905060005b6019811015612451576001600160a01b038316156130945780612e5c57612c0484600263ffffffff6116c016565b6001600160a01b03841660009081526028602052604090206007015410612d2457612c61612c3985600263ffffffff6116c016565b6001600160a01b0385166000908152602860205260409020600701549063ffffffff6120fd16565b6001600160a01b038416600090815260286020526040902060070155612cb9612c9185600263ffffffff6116c016565b6001600160a01b0385166000908152602860205260409020600301549063ffffffff61170216565b6001600160a01b038416600090815260286020526040902060030155612ce684600263ffffffff6116c016565b836001600160a01b0316866001600160a01b03166000805160206131b5833981519152426040518082815260200191505060405180910390a4612e34565b6001600160a01b03831660009081526028602052604090206007015415612e1c576001600160a01b03831660009081526028602052604090206007810154600390910154612d779163ffffffff61170216565b6001600160a01b0384166000908152602860205260409020600381019190915560070154612db49061293690611d4787600263ffffffff6116c016565b600b556001600160a01b03808416600081815260286020908152604091829020600701548251428152925190948a16926000805160206131b583398151915292908290030190a46001600160a01b038316600090815260286020526040812060070155612e34565b612e3061293685600263ffffffff6116c016565b600b555b612e55612e4885600263ffffffff6116c016565b839063ffffffff6120fd16565b915061308f565b6001600160a01b038316600090815260286020526040902060090154600182011161307757612e9284601463ffffffff6116c016565b6001600160a01b03841660009081526028602052604090206007015410612f6257612ec7612c3985601463ffffffff6116c016565b6001600160a01b038416600090815260286020526040902060070155612ef7612c9185601463ffffffff6116c016565b6001600160a01b038416600090815260286020526040902060030155612f2484601463ffffffff6116c016565b836001600160a01b0316866001600160a01b03166000805160206131b5833981519152426040518082815260200191505060405180910390a4613072565b6001600160a01b0383166000908152602860205260409020600701541561305a576001600160a01b03831660009081526028602052604090206007810154600390910154612fb59163ffffffff61170216565b6001600160a01b0384166000908152602860205260409020600381019190915560070154612ff29061293690611d4787601463ffffffff6116c016565b600b556001600160a01b03808416600081815260286020908152604091829020600701548251428152925190948a16926000805160206131b583398151915292908290030190a46001600160a01b038316600090815260286020526040812060070155613072565b61306e61293685601463ffffffff6116c016565b600b555b61308f565b61308b61293685601463ffffffff6116c016565b600b555b6130d4565b6130cc612936836130c06130af88601463ffffffff6116c016565b610d4a60198763ffffffff6120fd16565b9063ffffffff61170216565b600b55612451565b6001600160a01b039283166000908152602860205260409020600a015490921691600101612bd6565b81548183558181111561147957600083815260209020611479918101908301612b4291905b808211156131365760008155600101613122565b509056fe436f6e747261637420646f65736e277420686176652073756666696369656e7420616d6f756e7420746f206769766520796f754d696e696d756d20636f6e747269627574696f6e20616d6f756e7420697320302e3120455448536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77e8a8de0c33658c3de38a3892af2c86397248fb25ae303545885fd8775df213174e6577206f776e65722063616e6e6f7420626520746865207a65726f2061646472657373a265627a7a72315820bd5143f969f48637188416e879788f07461e62878cdc26380943fb2caa92538064736f6c63430005110032

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000068856ec2c630dddbfbd0fa9f598350c7c60ab6e6000000000000000000000000b09613767bc5bbc25f4186fb528b6fb12adc295b

-----Decoded View---------------
Arg [0] : _admin (address): 0x68856Ec2C630DDdBFBd0fa9f598350c7C60ab6e6
Arg [1] : _tokenToBeUsed (address): 0xB09613767BC5bBC25f4186fb528b6fB12aDC295B

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000068856ec2c630dddbfbd0fa9f598350c7c60ab6e6
Arg [1] : 000000000000000000000000b09613767bc5bbc25f4186fb528b6fb12adc295b


Deployed Bytecode Sourcemap

5707:26213:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9311:15;9324:1;9311:12;:15::i;:::-;5707:26213;6445:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6445:24:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6445:24:0;;:::i;:::-;;;;-1:-1:-1;;;;;6445:24:0;;;;;;;;;;;;;;6062:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6062:22:0;;;:::i;:::-;;;;;;;;;;;;;;;;30948:380;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30948:380:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;30948:380:0;-1:-1:-1;;;;;30948:380:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;30948:380:0;;;;;;;;;;;;;;;;;9392:3857;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9392:3857:0;;:::i;6601:56::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6601:56:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6601:56:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6302:33;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6302:33:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6302:33:0;;:::i;:::-;;;;;;;-1:-1:-1;;;;;6302:33:0;;;;;;;;;;;;;;;;30584:129;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30584:129:0;;;:::i;6722:88::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6722:88:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6722:88:0;;;;;;;;:::i;6664:51::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6664:51:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6664:51:0;-1:-1:-1;;;;;6664:51:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6664:51:0;;;;;;;;;;;;;;30725:211;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30725:211:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;30725:211:0;-1:-1:-1;;;;;30725:211:0;;:::i;29878:694::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29878:694:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;29878:694:0;;;-1:-1:-1;;;;;29878:694:0;;;;;;;;;;:::i;5762:23::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5762:23:0;;;:::i;5794:20::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5794:20:0;;;:::i;6151:21::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6151:21:0;;;:::i;6553:41::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6553:41:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6553:41:0;;:::i;6091:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6091:25:0;;;:::i;6123:21::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6123:21:0;;;:::i;21630:1071::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21630:1071:0;;;:::i;6348:37::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6348:37:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6348:37:0;;:::i;6392:46::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6392:46:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6392:46:0;;:::i;31475:111::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31475:111:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;31475:111:0;-1:-1:-1;;;;;31475:111:0;;:::i;9392:3857::-;9468:9;8631:18;8623:4;:26;;8615:77;;;;-1:-1:-1;;;8615:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9499:9;8855:18;9499:9;8848:25;:30;8840:67;;;;;-1:-1:-1;;;8840:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;9566:1;9552:11;:15;:44;;;;;9586:10;;9571:11;:25;;9552:44;9544:78;;;;;-1:-1:-1;;;9544:78:0;;;;;;;;;;;;-1:-1:-1;;;9544:78:0;;;;;;;;;;;;;;;9633:17;9653:21;;;:8;:21;;;;;;;;;9739:10;9732:18;;:6;:18;;;;;;:21;-1:-1:-1;;;;;9653:21:0;;;;9708:9;;9728:2577;;9813:10;:12;;;;;;;;9847:10;9813;9840:18;;;:6;:18;;;;;:34;;;9926:3;9889:34;;;;:40;;;;9944:33;;;;:42;;;10066:12;;10049:11;;10038:41;;10066:12;10038:23;;9980:6;;10038:23;:10;:23;:::i;:::-;:27;:41;:27;:41;:::i;:::-;10008:10;10001:18;;;;:6;:18;;;;;;;;:34;;;:78;;;;10094:34;;;;:43;;;10152:27;;;;:39;;-1:-1:-1;;;;;10152:39:0;;-1:-1:-1;;;;;;10152:39:0;;;;;;;;10215:10;;;10206:20;;:8;:20;;;;;:33;;;;;;;;;;10302:17;;;;;;;:31;;:38;;;:35;:38;:::i;:::-;-1:-1:-1;;;;;10268:17:0;;;;;;;:6;:17;;;;;:31;;:72;;;;10385:5;;;10372:18;10369:587;;;10441:56;10473:23;10492:3;10473:14;:6;10484:2;10473:14;:10;:14;:::i;:23::-;10448:5;;-1:-1:-1;;;;;10448:5:0;10441:13;;;;:6;:13;;;;;:27;;;;:56;:31;:56;:::i;:::-;10418:5;;-1:-1:-1;;;;;10418:5:0;10411:13;;;;:6;:13;;;;;:27;;:86;;;;10516:173;10532:6;:13;10530:15;;10516:173;;;10609:60;10645:23;10664:3;10645:14;:6;10656:2;10645:14;:10;:14;:::i;:23::-;10609:6;:17;10616:6;10623:1;10616:9;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10616:9:0;10609:17;;;;;;;;;;;;:31;;;;:60;:35;:60;:::i;:::-;10575:6;:17;10582:6;10589:1;10582:9;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10582:9:0;10575:17;;;;;;;;;;;;:31;;:94;10582:9;10547:3;10516:173;;;;10369:587;;;-1:-1:-1;;;;;10784:20:0;;;;;;:9;:20;;;;;;;;10805:7;;10784:29;;;;;;;:39;:51;;10828:6;10784:51;:43;:51;:::i;:::-;-1:-1:-1;;;;;10742:20:0;;;;;;:9;:20;;;;;;;;10763:7;;10742:29;;;;;;;:93;10854:27;10752:9;10854:16;:27::i;:::-;;10900:40;10921:10;10933:6;10900:20;:40::i;:::-;10995;;-1:-1:-1;;;;;10995:40:0;;;11013:10;;10995:40;;;;;9728:2577;;;11148:10;11141:18;;;;:6;:18;;;;;:34;;;:39;11133:76;;;;;-1:-1:-1;;;11133:76:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;11249:10;11242:18;;;;:6;:18;;;;;:33;;;11232:43;;;11224:83;;;;;-1:-1:-1;;;11224:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;11341:10;11334:18;;;;:6;:18;;;;;:27;;;;11427:3;11390:34;;;;:40;;;;-1:-1:-1;11445:33:0;;;:42;;;11567:12;;11550:11;;-1:-1:-1;;;;;11334:27:0;;;;-1:-1:-1;11539:41:0;;11567:12;11539:23;;11445:42;;11539:10;:23::i;:41::-;11509:10;11502:18;;;;:6;:18;;;;;:34;;;:78;;;;11632:34;;;:46;;11671:6;11632:46;:38;:46;:::i;:::-;11602:10;11595:18;;;;:6;:18;;;;;:34;;;;:83;;;;11723:5;-1:-1:-1;;;;;11710:18:0;;;11723:5;;11710:18;11707:587;;;11779:56;11811:23;11830:3;11811:14;:6;11822:2;11811:14;:10;:14;:::i;11779:56::-;11756:5;;-1:-1:-1;;;;;11756:5:0;11749:13;;;;:6;:13;;;;;:27;;:86;;;;11854:173;11870:6;:13;11868:15;;11854:173;;;11947:60;11983:23;12002:3;11983:14;:6;11994:2;11983:14;:10;:14;:::i;11947:60::-;11913:6;:17;11920:6;11927:1;11920:9;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11920:9:0;11913:17;;;;;;;;;;;;:31;;:94;11920:9;11885:3;11854:173;;;;11707:587;;;-1:-1:-1;;;;;12122:20:0;;;;;;:9;:20;;;;;;;;12143:7;;12122:29;;;;;;;:39;:51;;12166:6;12122:51;:43;:51;:::i;:::-;-1:-1:-1;;;;;12080:20:0;;;;;;:9;:20;;;;;;;;12101:7;;12080:29;;;;;;;:93;12192:27;12090:9;12192:16;:27::i;:::-;;12238:40;12259:10;12271:6;12238:20;:40::i;:::-;12395:58;12419:33;12448:3;12419:24;12430:12;;12419:6;:10;;:24;;;;:::i;:33::-;12401:7;;12395:14;;;;:5;:14;;;;;:19;;;;:58;:23;:58;:::i;:::-;12379:7;;12373:14;;;;:5;:14;;;;;:19;;:80;12578:8;;12537:60;;12567:29;;12592:3;;12567:20;;:6;;:20;:10;:20;:::i;:29::-;12544:5;;-1:-1:-1;;;;;12544:5:0;12537:13;;;;:6;:13;;;;;:25;;;;:60;:29;:60;:::i;:::-;12516:5;;-1:-1:-1;;;;;12516:5:0;12509:13;;;;:6;:13;;;;;:25;;:88;;;;12657:152;12673:6;:13;12671:15;;12657:152;;;12743:50;12777:15;:6;12788:3;12777:15;:10;:15;:::i;:::-;12743:6;:17;12750:6;12757:1;12750:9;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12750:9:0;12743:17;;;;;;;;;;;;:29;;;;:50;:33;:50;:::i;:::-;12711:6;:17;12718:6;12725:1;12718:9;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12718:9:0;12711:17;;;;;;;;;;;;:29;;:82;12718:9;12688:3;12657:152;;;;12862:21;12886:27;12907:5;12886:16;12897:4;;12886:6;:10;;:16;;;;:::i;:::-;:20;:27;:20;:27;:::i;:::-;12928:10;;;:45;;;-1:-1:-1;;;12928:45:0;;12948:10;12928:45;;;;;;;;;;;;12862:51;;-1:-1:-1;;;;;;12928:10:0;;;;:19;;:45;;;;;;;;;;;;;;;;;;:10;:45;;;5:2:-1;;;;30:1;27;20:12;5:2;12928:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12928:45:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;13070:7:0;;13064:14;;;;:5;12928:45;13064:14;;;;:22;;;13058:3;:28;:61;;;;-1:-1:-1;13096:7:0;;13090:14;;;;:5;:14;;;;;:20;;;;;:29;13058:61;13054:118;;;13140:16;:14;:16::i;:::-;13205:36;;13234:6;;13222:10;;13205:36;;;;;8918:1;;;8703;9392:3857;;:::o;6445:24::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6445:24:0;;-1:-1:-1;6445:24:0;:::o;6062:22::-;;;;:::o;30948:380::-;9065:5;;31018:16;;-1:-1:-1;;;;;9065:5:0;9051:10;:19;9043:42;;;;;-1:-1:-1;;;9043:42:0;;;;;;;;;;;;-1:-1:-1;;;9043:42:0;;;;;;;;;;;;;;;31052:6;31048:247;31066:6;:13;31062:17;;31048:247;;;31116:13;-1:-1:-1;;;;;31103:26:0;:6;31110:1;31103:9;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;31103:9:0;:26;31100:184;;;31162:6;31169:13;;-1:-1:-1;;31169:15:0;;;31162:23;;;;;;;;;;;;;;;;31150:6;:9;;-1:-1:-1;;;;;31162:23:0;;;;31157:1;;31150:9;;;;;;;;;;;;;;;:35;;-1:-1:-1;;;;;;31150:35:0;-1:-1:-1;;;;;31150:35:0;;;;;;;;;;31211:6;31218:13;;-1:-1:-1;;31218:15:0;;;31211:23;;;;;;;;;;;;;;;31204:30;;-1:-1:-1;;;;;;31204:30:0;;;31253:6;:15;;;;;-1:-1:-1;;31253:15:0;;;:::i;:::-;;31100:184;31081:3;;31048:247;;;;31312:6;31305:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;31305:13:0;;;;;;;;;;;;;;;;;;;;;;;9096:1;30948:380;;;:::o;6601:56::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;6302:33::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;6302:33:0;;:::o;30584:129::-;9065:5;;-1:-1:-1;;;;;9065:5:0;9051:10;:19;9043:42;;;;;-1:-1:-1;;;9043:42:0;;;;;;;;;;;;-1:-1:-1;;;9043:42:0;;;;;;;;;;;;;;;30643:10;;;30663:5;30669:35;;;-1:-1:-1;;;30669:35:0;;30698:4;30669:35;;;;;;-1:-1:-1;;;;;30643:10:0;;;;:19;;30663:5;;30643:10;;30669:20;;:35;;;;;;;;;;;;;;;30643:10;30669:35;;;5:2:-1;;;;30:1;27;20:12;5:2;30669:35:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30669:35:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;30669:35:0;30643:62;;;-1:-1:-1;;;;;;30643:62:0;;;;;;;-1:-1:-1;;;;;30643:62:0;;;;;;;;;;;;;;;;;;;;30669:35;;30643:62;;;;;;;-1:-1:-1;30643:62:0;;;;5:2:-1;;;;30:1;27;20:12;5:2;30643:62:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30643:62:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;30584:129:0:o;6722:88::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;6664:51::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6664:51:0;;:::o;30725:211::-;9065:5;;30791:17;;-1:-1:-1;;;;;9065:5:0;9051:10;:19;9043:42;;;;;-1:-1:-1;;;9043:42:0;;;;;;;;;;;;-1:-1:-1;;;9043:42:0;;;;;;;;;;;;;;;30825:6;:13;30841:1;-1:-1:-1;30822:83:0;;;30863:6;27:10:-1;;39:1;23:18;;45:23;;-1:-1;30863:26:0;;;;;;;;-1:-1:-1;;;;;;30863:26:0;-1:-1:-1;;;;;30863:26:0;;;;;30822:83;30922:6;30915:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;30915:13:0;;;;;;;;;;;;;;;;;;;;;;30725:211;;;:::o;29878:694::-;9065:5;;-1:-1:-1;;;;;9065:5:0;9051:10;:19;9043:42;;;;;-1:-1:-1;;;9043:42:0;;;;;;;;;;;;-1:-1:-1;;;9043:42:0;;;;;;;;;;;;;;;29993:9;30006:1;29993:14;:31;;;;;30017:7;30011:2;;:13;;29993:31;29990:575;;;30044:11;;30041:218;;30104:7;30079:21;:32;30076:168;;30141:2;;:15;;30148:7;30141:15;:6;:15;:::i;:::-;30136:2;:20;30179:45;;-1:-1:-1;;;;;30179:36:0;;;:45;;;;;30216:7;;30179:45;;;;30216:7;30179:36;:45;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30179:45:0;30076:168;29990:575;;;30288:9;30301:1;30288:14;:31;;;;;30312:7;30306:2;;:13;;30288:31;30285:280;;;30339:11;;30336:218;;30399:7;30374:21;:32;30371:168;;30436:2;;:15;;30443:7;30436:15;:6;:15;:::i;:::-;30431:2;:20;30474:45;;-1:-1:-1;;;;;30474:36:0;;;:45;;;;;30511:7;;30474:45;;;;30511:7;30474:36;:45;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30474:45:0;30371:168;29878:694;;;:::o;5762:23::-;;;-1:-1:-1;;;;;5762:23:0;;:::o;5794:20::-;;;-1:-1:-1;;;;;5794:20:0;;:::o;6151:21::-;;;;:::o;6553:41::-;;;;;;;;;;;;-1:-1:-1;;;;;6553:41:0;;:::o;6091:25::-;;;;:::o;6123:21::-;;;;:::o;21630:1071::-;21717:10;21785:28;21717:10;21785:12;:28::i;:::-;-1:-1:-1;;;;;22057:22:0;;21834:17;22057:22;;;:6;:22;;;;;:40;;;;21993;;;;21933:36;;;;21875:34;;;;;:94;;;:158;;;:222;22180:13;;22177:517;;22243:9;22218:21;:34;;22210:98;;;;-1:-1:-1;;;22210:98:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22325:22:0;;22362:1;22325:22;;;:6;:22;;;;;;:34;;;:38;;;22378:36;;;:40;;;-1:-1:-1;22433:40:0;;:44;;;22492:40;;:44;;;22565:52;;;;;;22607:9;;22565:52;;22362:1;22565:52;22607:9;22325:22;22565:52;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22565:52:0;22678:3;22667:9;22651:14;-1:-1:-1;;;;;22637:45:0;;;;;;;;;;;21630:1071;;:::o;6348:37::-;;;;;;;;;6392:46;;;;;;;;;;;;;-1:-1:-1;6392:46:0;:::o;31475:111::-;9065:5;;-1:-1:-1;;;;;9065:5:0;9051:10;:19;9043:42;;;;;-1:-1:-1;;;9043:42:0;;;;;;;;;;;;-1:-1:-1;;;9043:42:0;;;;;;;;;;;;;;;31550:28;31569:8;31550:18;:28::i;:::-;31475:111;:::o;2650:471::-;2708:7;2953:6;2949:47;;-1:-1:-1;2983:1:0;2976:8;;2949:47;3020:5;;;3024:1;3020;:5;:1;3044:5;;;;;:10;3036:56;;;;-1:-1:-1;;;3036:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3112:1;-1:-1:-1;2650:471:0;;;;;:::o;3589:132::-;3647:7;3674:39;3678:1;3681;3674:39;;;;;;;;;;;;;;;;;:3;:39::i;1165:181::-;1223:7;1255:5;;;1279:6;;;;1271:46;;;;;-1:-1:-1;;;1271:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;23600:4066;23675:4;-1:-1:-1;;;;;23701:20:0;;23697:64;;-1:-1:-1;23744:5:0;23737:12;;23697:64;-1:-1:-1;;;;;23788:15:0;;23773:12;23788:15;;;:9;:15;;;;;;;;23804:7;;23788:24;;;;;;;:34;23912:14;:18;:26;-1:-1:-1;23908:70:0;;23961:5;23954:12;;;;;23908:70;24010:19;;:11;24059:18;24119:19;;:14;24169:18;24228:19;;:14;24277:18;-1:-1:-1;;;;;24010:19:0;;;;24119;;;;24228;;;;24369:25;;;24365:3294;;;24416:19;;-1:-1:-1;;;;;24416:27:0;;;:19;;:27;24412:1395;;;24484:4;24463:11;24475:1;24463:14;;;;:25;-1:-1:-1;24514:4:0;;-1:-1:-1;24507:11:0;;-1:-1:-1;;;;;;24507:11:0;24412:1395;24637:19;;-1:-1:-1;;;;;24637:27:0;;;:19;;:27;24633:1174;;;24686:19;:26;;-1:-1:-1;;;;;;24686:26:0;-1:-1:-1;;;;;24686:26:0;;;;;24752:4;24686:11;-1:-1:-1;24731:14:0;;;:25;24775:19;:31;;-1:-1:-1;;;;;;24775:31:0;-1:-1:-1;;;;;24775:31:0;;;;;24846:8;24775:11;-1:-1:-1;24825:14:0;;24633:1174;24994:19;;-1:-1:-1;;;;;24994:27:0;;;:19;;:27;24990:817;;;25042:19;:26;;-1:-1:-1;;;;;;25042:26:0;-1:-1:-1;;;;;25042:26:0;;;;;25108:4;25042:11;-1:-1:-1;25087:14:0;;;:25;25131:19;:31;;-1:-1:-1;;;;;;25131:31:0;-1:-1:-1;;;;;25131:31:0;;;;;25202:8;25131:11;-1:-1:-1;25181:14:0;;;;:18;;:29;;;;25251:10;25229:11;25241:1;25229:14;;;;;;;;;;:19;;;:32;;;;;-1:-1:-1;;;;;25229:32:0;;;;;-1:-1:-1;;;;;25229:32:0;;;;;;25301:9;25280:11;25292:1;25280:14;;;;;;24990:817;25395:19;:26;;-1:-1:-1;;;;;;25395:26:0;-1:-1:-1;;;;;25395:26:0;;;;;25461:4;25395:11;-1:-1:-1;25440:14:0;;;:25;25484:19;:31;;-1:-1:-1;;;;;;25484:31:0;-1:-1:-1;;;;;25484:31:0;;;;;25555:8;25484:11;-1:-1:-1;25534:14:0;;;;:18;;:29;;;;25604:10;25582:11;25594:1;25582:14;;;;;;;;;;:19;;;:32;;;;;-1:-1:-1;;;;;25582:32:0;;;;;-1:-1:-1;;;;;25582:32:0;;;;;;25654:9;25633:11;25645:1;25633:14;;;;;;;;;;:30;25682:19;:31;;-1:-1:-1;;;;;;25682:31:0;-1:-1:-1;;;;;25682:31:0;;;;;25753:8;25682:11;25694:1;25732:14;;24365:3294;25901:14;:18;25894:25;;25890:1769;;;25941:19;;-1:-1:-1;;;;;25941:27:0;;;:19;;:27;25937:826;;;26009:4;25988:11;26000:1;25988:14;;25937:826;26148:19;;-1:-1:-1;;;;;26148:27:0;;;:19;;:27;26145:618;;;26196:19;:26;;-1:-1:-1;;;;;;26196:26:0;-1:-1:-1;;;;;26196:26:0;;;;;26262:4;26196:11;-1:-1:-1;26241:14:0;;26145:618;26449:19;:26;;-1:-1:-1;;;;;;26449:26:0;-1:-1:-1;;;;;26449:26:0;;;;;26515:4;26449:11;-1:-1:-1;26494:14:0;;25890:1769;26850:14;:18;26843:25;;26840:819;;;26887:19;;-1:-1:-1;;;;;26887:27:0;;;:19;;:27;26884:344;;;26956:4;26935:11;26947:1;26935:14;;26884:344;27044:19;:26;;-1:-1:-1;;;;;;27044:26:0;-1:-1:-1;;;;;27044:26:0;;;;;27110:4;27044:11;27056:1;27089:14;;;:25;27133:19;:31;;-1:-1:-1;;;;;;27133:31:0;-1:-1:-1;;;;;27133:31:0;;;;;27204:8;27133:11;27145:1;27183:14;;;:29;26840:819;;;27322:14;:18;27315:25;;27311:348;;;27363:19;;-1:-1:-1;;;;;27363:27:0;;;:19;;:27;27359:289;;;27431:4;27410:11;27422:1;27410:14;;27359:289;27532:19;:26;;-1:-1:-1;;;;;;27532:26:0;-1:-1:-1;;;;;27532:26:0;;;;;27598:4;27532:11;27544:1;27577:14;;27359:289;23600:4066;;;;;;;;;;:::o;13259:2492::-;-1:-1:-1;;;;;13382:22:0;;;13358:21;13382:22;;;:6;:22;;;;;;:31;;;;;;13437:21;;;;;;:24;13464:2;-1:-1:-1;13434:2310:0;;13527:23;13546:3;13527:14;:6;13538:2;13527:14;:10;:14;:::i;:23::-;-1:-1:-1;;;;;13486:21:0;;;;;;:6;:21;;;;;:37;;;:64;13482:1105;;13611:66;13653:23;13672:3;13653:14;:6;13664:2;13653:14;:10;:14;:::i;:23::-;-1:-1:-1;;;;;13611:21:0;;;;;;:6;:21;;;;;:37;;;;:66;:41;:66;:::i;:::-;-1:-1:-1;;;;;13571:21:0;;;;;;:6;:21;;;;;:37;;:106;13734:64;13774:23;13793:3;13774:14;:6;13785:2;13774:14;:10;:14;:::i;:23::-;-1:-1:-1;;;;;13734:21:0;;;;;;:6;:21;;;;;:35;;;;:64;:39;:64;:::i;:::-;-1:-1:-1;;;;;13696:21:0;;;;;;:6;:21;;;;;:35;;:102;13891:23;13910:3;13891:14;:6;13902:2;13891:14;:10;:14;:::i;:23::-;13876:13;-1:-1:-1;;;;;13836:84:0;13860:14;-1:-1:-1;;;;;13836:84:0;-1:-1:-1;;;;;;;;;;;13916:3:0;13836:84;;;;;;;;;;;;;;;;;;13482:1105;;;-1:-1:-1;;;;;13982:21:0;;;;;;:6;:21;;;;;:37;;;:41;13979:608;;-1:-1:-1;;;;;14122:21:0;;;;;;:6;:21;;;;;:37;;;;14082:35;;;;;:78;;;:39;:78;:::i;:::-;-1:-1:-1;;;;;14044:21:0;;;;;;:6;:21;;;;;:35;;;:116;;;;14219:37;;;14184:74;;14191:66;;:23;14210:3;14191:14;:6;14202:2;14191:14;:10;:14;:::i;:23::-;:27;:66;:27;:66;:::i;:::-;14184:2;;;:74;:6;:74;:::i;:::-;14179:2;:79;-1:-1:-1;;;;;14337:21:0;;;;;;;:6;:21;;;;;;;;;:37;;;14282:98;;14376:3;14282:98;;;;14337:37;;14282:98;;;-1:-1:-1;;;;;;;;;;;14282:98:0;;;;;;;;-1:-1:-1;;;;;14399:21:0;;14439:1;14399:21;;;:6;:21;;;;;:37;;:41;13979:608;;;14500:31;14507:23;14526:3;14507:14;:6;14518:2;14507:14;:10;:14;:::i;14500:31::-;14495:2;:36;13434:2310;;;14673:23;14692:3;14673:14;:6;14684:2;14673:14;:10;:14;:::i;:23::-;-1:-1:-1;;;;;14632:21:0;;;;;;:6;:21;;;;;:37;;;:64;14628:1105;;14757:66;14799:23;14818:3;14799:14;:6;14810:2;14799:14;:10;:14;:::i;14757:66::-;-1:-1:-1;;;;;14717:21:0;;;;;;:6;:21;;;;;:37;;:106;14880:64;14920:23;14939:3;14920:14;:6;14931:2;14920:14;:10;:14;:::i;14880:64::-;-1:-1:-1;;;;;14842:21:0;;;;;;:6;:21;;;;;:35;;:102;15037:23;15056:3;15037:14;:6;15048:2;15037:14;:10;:14;:::i;:23::-;15022:13;-1:-1:-1;;;;;14982:84:0;15006:14;-1:-1:-1;;;;;14982:84:0;-1:-1:-1;;;;;;;;;;;15062:3:0;14982:84;;;;;;;;;;;;;;;;;;14628:1105;;;-1:-1:-1;;;;;15128:21:0;;;;;;:6;:21;;;;;:37;;;:41;15125:608;;-1:-1:-1;;;;;15268:21:0;;;;;;:6;:21;;;;;:37;;;;15228:35;;;;;:78;;;:39;:78;:::i;:::-;-1:-1:-1;;;;;15190:21:0;;;;;;:6;:21;;;;;:35;;;:116;;;;15365:37;;;15330:74;;15337:66;;:23;15356:3;15337:14;:6;15348:2;15337:14;:10;:14;:::i;15330:74::-;15325:2;:79;-1:-1:-1;;;;;15483:21:0;;;;;;;:6;:21;;;;;;;;;:37;;;15428:98;;15522:3;15428:98;;;;15483:37;;15428:98;;;-1:-1:-1;;;;;;;;;;;15428:98:0;;;;;;;;-1:-1:-1;;;;;15545:21:0;;15585:1;15545:21;;;:6;:21;;;;;:37;;:41;15125:608;;;15646:31;15653:23;15672:3;15653:14;:6;15664:2;15653:14;:10;:14;:::i;15646:31::-;15641:2;:36;13259:2492;;;:::o;22764:820::-;22839:7;;22820:16;22888:14;;;:5;:14;;;;;:19;;;22951:8;22936:23;;22932:635;;22980:15;;;;:5;:15;;;;;:21;;:28;;-1:-1:-1;;22980:28:0;23004:4;22980:28;;;23062:19;:17;:19::i;:::-;23147:7;:9;;23118:10;23147:9;;;;;;23118:10;;;23147:7;23175:15;;;:5;:15;;;;;23203:3;23175:31;;;;23259:8;;23118:10;;23027:54;-1:-1:-1;23251:17:0;;;:7;:17;:::i;:::-;23225:15;;;;:5;:15;;;;;:23;;:43;23310:41;:11;23326:24;23310:41;:15;:41;:::i;:::-;23287:15;;;;:5;:15;;;;;:20;;:64;-1:-1:-1;22932:635:0;;;23405:15;;;;:5;:15;;;;;23433:3;23405:31;;;;23489:8;;23481:17;;23433:3;23481:17;:7;:17;:::i;:::-;23455:15;;;;:5;:15;;;;;;:23;;;:43;;;;23517:20;;;;:34;22764:820::o;1621:136::-;1679:7;1706:43;1710:1;1713;1706:43;;;;;;;;;;;;;;;;;:3;:43::i;19303:2255::-;19539:12;;-1:-1:-1;;;;;19498:22:0;;19397:30;19498:22;;;:6;:22;;;;;:38;;;19397:30;;;;19498:53;19492:3;:59;19489:2052;;;-1:-1:-1;;;;;19682:22:0;;19654:17;19682:22;;;:6;:22;;;;;:38;;;19674:47;;:3;;:47;:7;:47;:::i;:::-;19654:67;;19736:20;19866:61;19914:12;;19867:41;19894:12;;19882:9;:24;;;;;19867:9;;19882:24;;19867:41;:13;:41;:::i;19866:61::-;-1:-1:-1;;;;;19977:22:0;;;;;;:6;:22;;;;;;;;:37;;;19841:86;;-1:-1:-1;19977:37:0;;-1:-1:-1;20097:26:0;;19977:37;;20097:26;:22;:26;:::i;:::-;20082:41;-1:-1:-1;20232:40:0;20082:41;20249:22;20232:40;:16;:40;:::i;:::-;-1:-1:-1;;;;;20190:22:0;;;;;;:6;:22;;;;;:38;;;:82;20186:1335;;20334:84;20377:40;:12;20394:22;20377:40;:16;:40;:::i;:::-;-1:-1:-1;;;;;20334:22:0;;;;;;:6;:22;;;;;:38;;;;:84;:42;:84;:::i;:::-;-1:-1:-1;;;;;20293:22:0;;;;;;:6;:22;;;;;:38;;:125;20474:80;20513:40;:12;20530:22;20513:40;:16;:40;:::i;:::-;-1:-1:-1;;;;;20474:22:0;;;;;;:6;:22;;;;;:34;;;;:80;:38;:80;:::i;:::-;-1:-1:-1;;;;;20437:22:0;;;;;;:6;:22;;;;;:34;;:117;20685:12;;20614:87;;20658:41;;20673:9;20685:12;20673:24;;;;20658:9;;20673:24;;20658:41;:13;:41;:::i;:::-;-1:-1:-1;;;;;20614:22:0;;;;;;:6;:22;;;;;:38;;;;:87;:42;:87;:::i;:::-;-1:-1:-1;;;;;20573:22:0;;;;;;:6;:22;;;;;:38;;:128;20801:3;20759:40;:12;20776:22;20759:40;:16;:40;:::i;:::-;20725:80;;-1:-1:-1;;;;;20725:80:0;;;;;;;;20824:74;20841:14;20857:40;:12;20874:22;20857:40;:16;:40;:::i;:::-;20824:16;:74::i;:::-;20186:1335;;;-1:-1:-1;;;;;21000:22:0;;;;;;:6;:22;;;;;:38;;;:42;20997:524;;-1:-1:-1;;;;;21101:22:0;;21063:12;21101:22;;;:6;:22;;;;;:38;;;;;21175:42;;;21273:34;;;:44;;21101:38;21273:44;:38;:44;:::i;:::-;-1:-1:-1;;;;;21236:22:0;;;;;;:6;:22;;;;;;:34;;;:81;;;;21377:3;21336:38;;;;:44;;;21404;21438:4;;21236:22;21404:44;;;21467:38;21484:14;21500:4;21467:16;:38::i;:::-;20997:524;;19489:2052;;19303:2255;;;:::o;31693:224::-;-1:-1:-1;;;;;31766:22:0;;31758:71;;;;-1:-1:-1;;;31758:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31866:5;;31845:37;;-1:-1:-1;;;;;31845:37:0;;;;31866:5;;31845:37;;31866:5;;31845:37;31893:5;:16;;-1:-1:-1;;;;;;31893:16:0;-1:-1:-1;;;;;31893:16:0;;;;;;;;;;31693:224::o;4356:345::-;4442:7;4544:12;4537:5;4529:28;;;;-1:-1:-1;;;4529:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4529:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4568:9;4584:1;4580;:5;;;;;;;4356:345;-1:-1:-1;;;;;4356:345:0:o;27676:2190::-;27798:7;;27742;27792:14;;;:5;:14;;;;;:19;;;27742:7;;27792:36;;27824:3;;27792:27;;27816:2;27792:27;:23;:27;:::i;:36::-;27775:53;-1:-1:-1;27843:25:0;;27918:1898;27933:1;27930;:4;27918:1898;;;27995:3;27964:11;27976:1;27964:14;;;;;;;;;;:19;;;-1:-1:-1;;;;;27964:19:0;:35;27960:1841;;28075:39;28110:3;28075:30;28086:15;28102:1;28086:18;;;;;;;;;28075:6;;:30;:10;:30;:::i;:39::-;28028:6;:27;28035:11;28047:1;28035:14;;;;;;;;;;:19;;;-1:-1:-1;;;;;28035:19:0;28028:27;;;;;;;;;;;-1:-1:-1;28028:27:0;:43;;;:86;28024:1319;;28189:88;28237:39;28272:3;28237:30;28248:15;28264:1;28248:18;;;;;;;;;28237:6;;:30;:10;:30;:::i;:39::-;28189:6;:27;28196:11;28208:1;28196:14;;;;;;;;;;:19;;;-1:-1:-1;;;;;28196:19:0;28189:27;;;;;;;;;;;-1:-1:-1;28189:27:0;:43;;;;:47;:88::i;:::-;28143:6;:27;28150:11;28162:1;28150:14;;;;;;;;;;:19;;;-1:-1:-1;;;;;28150:19:0;28143:27;;;;;;;;;;;-1:-1:-1;28143:27:0;:43;;:134;28352:90;28402:39;28437:3;28402:30;28413:15;28429:1;28413:18;;;;;;28402:39;28352:6;:27;28359:11;28371:1;28359:14;;;;;;;;;;:19;;;-1:-1:-1;;;;;28359:19:0;28352:27;;;;;;;;;;;-1:-1:-1;28352:27:0;:45;;;;:49;:90::i;:::-;28304:6;:27;28311:11;28323:1;28311:14;;;;;;;;;;:19;;;-1:-1:-1;;;;;28311:19:0;28304:27;;;;;;;;;;;-1:-1:-1;28304:27:0;:45;;:138;28560:39;28595:3;28560:30;28571:15;28587:1;28571:18;;;;;;28560:39;28539:11;28551:1;28539:14;;;;;;;;;;:19;;;28522:78;;-1:-1:-1;;;;;28539:19:0;;;;28522:78;;28539:19;;28522:78;28024:1319;;;28654:6;:27;28661:11;28673:1;28661:14;;;;;;;;;;:19;;;-1:-1:-1;;;;;28661:19:0;28654:27;;;;;;;;;;;-1:-1:-1;28654:27:0;:43;;;:47;28651:692;;28778:94;28828:6;:27;28835:11;28847:1;28835:14;;;;;;;;;;:19;;;;;;;;;;-1:-1:-1;;;;;28835:19:0;-1:-1:-1;;;;;28828:27:0;-1:-1:-1;;;;;28828:27:0;;;;;;;;;;;;:43;;;28778:6;:27;28785:11;28797:1;28785:14;;;;;;28778:94;28730:6;:27;28737:11;28749:1;28737:14;;;;;;;;;;:19;;;;;;;;;;-1:-1:-1;;;;;28737:19:0;-1:-1:-1;;;;;28730:27:0;-1:-1:-1;;;;;28730:27:0;;;;;;;;;;;;:45;;:142;;;;28904:98;28911:90;28957:6;:27;28964:11;28976:1;28964:14;;;;;;;;;;:19;;;-1:-1:-1;;;;;28964:19:0;28957:27;;;;;;;;;;;-1:-1:-1;28957:27:0;:43;;;28912:39;28947:3;28912:30;28923:15;28939:1;28923:18;;;;;;;;;28912:6;;:30;:10;:30;:::i;28911:90::-;28904:2;;;:98;:6;:98;:::i;:::-;28899:2;:103;29071:6;:27;29078:11;29090:1;29078:14;;;;;;;;;;:19;;;-1:-1:-1;;;;;29078:19:0;29071:27;;;;;;;;;;;-1:-1:-1;29071:27:0;:43;;;29051:11;29063:1;29051:14;;;;;;;;;;:19;;;29034:81;;-1:-1:-1;;;;;29051:19:0;;;;29034:81;;29051:19;;29034:81;29188:1;29142:6;:27;29149:11;29161:1;29149:14;;;;;;;;;;:19;;;-1:-1:-1;;;;;29149:19:0;29142:27;;;;;;;;;;;-1:-1:-1;29142:27:0;:43;;:47;28651:692;;;29272:47;29279:39;29314:3;29279:30;29290:15;29306:1;29290:18;;;;;;29272:47;29267:2;:52;28651:692;29387:62;29409:39;29444:3;29409:30;29420:15;29436:1;29420:18;;;;;;29409:39;29387:17;;:62;:21;:62;:::i;:::-;29367:82;;29498:11;29510:1;29498:14;;;;;;;;;;:19;;;-1:-1:-1;;;;;29498:19:0;29472:15;29488:1;29472:18;;;;;;;;;;:23;;;:45;;;;;-1:-1:-1;;;;;29472:45:0;;;;;-1:-1:-1;;;;;29472:45:0;;;;;;29565:11;29577:1;29565:14;;;;;;;;;;:18;29540:15;29556:1;29540:18;;;;;;;;;;:43;29640:39;29675:3;29640:30;29651:15;29667:1;29651:18;;;;;;29640:39;29606:28;29635:1;29606:31;;;;;;;;:73;29732:3;29702:11;29714:1;29702:14;;;;;;;;;;:19;;;:34;;;;;-1:-1:-1;;;;;29702:34:0;;;;;-1:-1:-1;;;;;29702:34:0;;;;;;29780:1;29759:11;29771:1;29759:14;;;;;;;;;;:22;27960:1841;27936:3;;27918:1898;;;-1:-1:-1;29837:17:0;-1:-1:-1;;27676:2190:0;;:::o;2207:192::-;2293:7;2329:12;2321:6;;;;2313:29;;;;-1:-1:-1;;;2313:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;2313:29:0;-1:-1:-1;;;2365:5:0;;;2207:192::o;15835:3403::-;-1:-1:-1;;;;;15954:22:0;;;15930:21;15954:22;;;:6;:22;;;;;:31;;;;;;;16018:13;:6;16029:1;16018:13;:10;:13;:::i;:::-;15996:35;-1:-1:-1;16042:6:0;16061:3170;16074:2;16070:1;:6;16061:3170;;;-1:-1:-1;;;;;16116:29:0;;;16112:3047;;16169:6;16166:2805;;16245:13;:6;16256:1;16245:13;:10;:13;:::i;:::-;-1:-1:-1;;;;;16204:21:0;;;;;;:6;:21;;;;;:37;;;:54;16200:1144;;16327:56;16369:13;:6;16380:1;16369:13;:10;:13;:::i;:::-;-1:-1:-1;;;;;16327:21:0;;;;;;:6;:21;;;;;:37;;;;:56;:41;:56;:::i;:::-;-1:-1:-1;;;;;16287:21:0;;;;;;:6;:21;;;;;:37;;:96;16452:58;16496:13;:6;16507:1;16496:13;:10;:13;:::i;:::-;-1:-1:-1;;;;;16452:21:0;;;;;;:6;:21;;;;;:39;;;;:58;:43;:58;:::i;:::-;-1:-1:-1;;;;;16410:21:0;;;;;;:6;:21;;;;;:39;;:100;16623:13;:6;16634:1;16623:13;:10;:13;:::i;:::-;16608;-1:-1:-1;;;;;16568:74:0;16592:14;-1:-1:-1;;;;;16568:74:0;-1:-1:-1;;;;;;;;;;;16638:3:0;16568:74;;;;;;;;;;;;;;;;;;16200:1144;;;-1:-1:-1;;;;;16701:21:0;;;;;;:6;:21;;;;;:37;;;:41;16698:646;;-1:-1:-1;;;;;16857:21:0;;;;;;:6;:21;;;;;:37;;;;16813:39;;;;;:82;;;:43;:82;:::i;:::-;-1:-1:-1;;;;;16771:21:0;;;;;;:6;:21;;;;;:39;;;:124;;;;16952:37;;;16927:64;;16934:56;;:13;:6;16945:1;16934:13;:10;:13;:::i;16927:64::-;16922:2;:69;-1:-1:-1;;;;;17078:21:0;;;;;;;:6;:21;;;;;;;;;:37;;;17023:98;;17117:3;17023:98;;;;17078:37;;17023:98;;;-1:-1:-1;;;;;;;;;;;17023:98:0;;;;;;;;-1:-1:-1;;;;;17148:21:0;;17188:1;17148:21;;;:6;:21;;;;;:37;;:41;16698:646;;;17298:21;17305:13;:6;17316:1;17305:13;:10;:13;:::i;17298:21::-;17293:2;:26;16698:646;17380:30;17396:13;:6;17407:1;17396:13;:10;:13;:::i;:::-;17380:11;;:30;:15;:30;:::i;:::-;17366:44;;16166:2805;;;-1:-1:-1;;;;;17513:21:0;;;;;;:6;:21;;;;;:35;;;17554:1;17552:3;;-1:-1:-1;17510:1442:0;;17629:14;:6;17640:2;17629:14;:10;:14;:::i;:::-;-1:-1:-1;;;;;17588:21:0;;;;;;:6;:21;;;;;:37;;;:55;17584:1199;;17716:57;17758:14;:6;17769:2;17758:14;:10;:14;:::i;17716:57::-;-1:-1:-1;;;;;17676:21:0;;;;;;:6;:21;;;;;:37;;:97;17846:59;17890:14;:6;17901:2;17890:14;:10;:14;:::i;17846:59::-;-1:-1:-1;;;;;17804:21:0;;;;;;:6;:21;;;;;:39;;:101;18026:14;:6;18037:2;18026:14;:10;:14;:::i;:::-;18011:13;-1:-1:-1;;;;;17971:75:0;17995:14;-1:-1:-1;;;;;17971:75:0;-1:-1:-1;;;;;;;;;;;18042:3:0;17971:75;;;;;;;;;;;;;;;;;;17584:1199;;;-1:-1:-1;;;;;18108:21:0;;;;;;:6;:21;;;;;:37;;;:41;18105:678;;-1:-1:-1;;;;;18268:21:0;;;;;;:6;:21;;;;;:37;;;;18224:39;;;;;:82;;;:43;:82;:::i;:::-;-1:-1:-1;;;;;18182:21:0;;;;;;:6;:21;;;;;:39;;;:124;;;;18368:37;;;18342:65;;18349:57;;:14;:6;18360:2;18349:14;:10;:14;:::i;18342:65::-;18337:2;:70;-1:-1:-1;;;;;18498:21:0;;;;;;;:6;:21;;;;;;;;;:37;;;18443:98;;18537:3;18443:98;;;;18498:37;;18443:98;;;-1:-1:-1;;;;;;;;;;;18443:98:0;;;;;;;;-1:-1:-1;;;;;18572:21:0;;18612:1;18572:21;;;:6;:21;;;;;:37;;:41;18105:678;;;18732:22;18739:14;:6;18750:2;18739:14;:10;:14;:::i;18732:22::-;18727:2;:27;18105:678;17510:1442;;;18866:22;18873:14;:6;18884:2;18873:14;:10;:14;:::i;18866:22::-;18861:2;:27;17510:1442;16112:3047;;;19036:62;19043:54;19085:11;19043:37;19065:14;:6;19076:2;19065:14;:10;:14;:::i;:::-;19044:15;19049:2;19057:1;19044:15;:12;:15;:::i;19043:37::-;:41;:54;:41;:54;:::i;19036:62::-;19031:2;:67;19122:5;;16112:3047;-1:-1:-1;;;;;19189:21:0;;;;;;;:6;:21;;;;;:30;;;;;;;;16078:3;16061:3170;;5707:26213;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Swarm Source

bzzr://bd5143f969f48637188416e879788f07461e62878cdc26380943fb2caa925380

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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.