ETH Price: $2,608.76 (-0.48%)

Contract

0x27BF782d39094f0B78545FE3Cb2bb165d47C385e
 

Overview

ETH Balance

0.156532238503210118 ETH

Eth Value

$408.36 (@ $2,608.76/ETH)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Claim Rewards171148522023-04-24 8:06:47542 days ago1682323607IN
0x27BF782d...5d47C385e
0 ETH0.0035471836.43896606
Claim Tax169255362023-03-28 11:28:35569 days ago1680002915IN
0x27BF782d...5d47C385e
0 ETH0.0017539925.04127036
Claim Rewards169255282023-03-28 11:26:59569 days ago1680002819IN
0x27BF782d...5d47C385e
0 ETH0.0021624826.94825378
Claim Rewards166181482023-02-13 6:48:23612 days ago1676270903IN
0x27BF782d...5d47C385e
0 ETH0.0013742817.125937
Claim Rewards165068502023-01-28 17:36:47628 days ago1674927407IN
0x27BF782d...5d47C385e
0 ETH0.0012979316.17443993
Claim Rewards164365862023-01-18 22:10:23638 days ago1674079823IN
0x27BF782d...5d47C385e
0 ETH0.004731458.96125759
Claim Rewards163820812023-01-11 7:29:23645 days ago1673422163IN
0x27BF782d...5d47C385e
0 ETH0.0012896516.07124364
Claim Rewards163313282023-01-04 5:27:35652 days ago1672810055IN
0x27BF782d...5d47C385e
0 ETH0.0012237915.25054837
Claim Rewards162614752022-12-25 11:31:23662 days ago1671967883IN
0x27BF782d...5d47C385e
0 ETH0.0008569510.67914119
Claim Rewards160074852022-11-19 23:56:35697 days ago1668902195IN
0x27BF782d...5d47C385e
0 ETH0.0008757610.91355572
Claim Rewards159313102022-11-09 8:33:59708 days ago1667982839IN
0x27BF782d...5d47C385e
0 ETH0.0016751220.87491677
Claim Rewards158665352022-10-31 7:26:23717 days ago1667201183IN
0x27BF782d...5d47C385e
0 ETH0.000475465.92512369
Claim Rewards158029152022-10-22 10:01:23726 days ago1666432883IN
0x27BF782d...5d47C385e
0 ETH0.0011643214.5124604
Claim Rewards157881412022-10-20 8:33:23728 days ago1666254803IN
0x27BF782d...5d47C385e
0 ETH0.0016264420.2724755
Claim Rewards157790272022-10-19 1:59:47729 days ago1666144787IN
0x27BF782d...5d47C385e
0 ETH0.0013894517.31860575
Claim Rewards157716262022-10-18 1:12:11730 days ago1666055531IN
0x27BF782d...5d47C385e
0 ETH0.0014367617.90832299
Claim Rewards157625662022-10-16 18:48:47732 days ago1665946127IN
0x27BF782d...5d47C385e
0 ETH0.0014906118.57956559
Claim Rewards157553312022-10-15 18:32:35733 days ago1665858755IN
0x27BF782d...5d47C385e
0 ETH0.0013699317.07535372
Claim Rewards157471212022-10-14 15:03:47734 days ago1665759827IN
0x27BF782d...5d47C385e
0 ETH0.0018795823.42773931
Claim Rewards157398662022-10-13 14:43:47735 days ago1665672227IN
0x27BF782d...5d47C385e
0 ETH0.005807472.3854052
Claim Rewards157301622022-10-12 6:12:47736 days ago1665555167IN
0x27BF782d...5d47C385e
0 ETH0.0014641518.24963977
Claim Rewards157224382022-10-11 4:19:47737 days ago1665461987IN
0x27BF782d...5d47C385e
0 ETH0.0019121623.83381935
Compound Rewards157104882022-10-09 12:18:23739 days ago1665317903IN
0x27BF782d...5d47C385e
0 ETH0.0016074521.81754791
Claim Rewards157093422022-10-09 8:27:59739 days ago1665304079IN
0x27BF782d...5d47C385e
0 ETH0.0024509230.5491501
Claim Rewards157009052022-10-08 4:12:59740 days ago1665202379IN
0x27BF782d...5d47C385e
0 ETH0.000659988.22622433
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
197422462024-04-26 21:37:35174 days ago1714167455
0x27BF782d...5d47C385e
0.01148212 ETH
189653232024-01-08 22:41:11282 days ago1704753671
0x27BF782d...5d47C385e
0.00860225 ETH
187455572023-12-09 2:00:11313 days ago1702087211
0x27BF782d...5d47C385e
0.00938722 ETH
179234252023-08-15 23:09:35428 days ago1692140975
0x27BF782d...5d47C385e
0.00148862 ETH
178302922023-08-02 22:26:59441 days ago1691015219
0x27BF782d...5d47C385e
0.031 ETH
171148522023-04-24 8:06:47542 days ago1682323607
0x27BF782d...5d47C385e
0.00769207 ETH
169255362023-03-28 11:28:35569 days ago1680002915
0x27BF782d...5d47C385e
0.25696056 ETH
169255362023-03-28 11:28:35569 days ago1680002915
0x27BF782d...5d47C385e
0.04534598 ETH
169255282023-03-28 11:26:59569 days ago1680002819
0x27BF782d...5d47C385e
0.00830449 ETH
166181482023-02-13 6:48:23612 days ago1676270903
0x27BF782d...5d47C385e
0.00898153 ETH
165068502023-01-28 17:36:47628 days ago1674927407
0x27BF782d...5d47C385e
0.00973175 ETH
164365862023-01-18 22:10:23638 days ago1674079823
0x27BF782d...5d47C385e
0.0105651 ETH
163820812023-01-11 7:29:23645 days ago1673422163
0x27BF782d...5d47C385e
0.0114932 ETH
163313282023-01-04 5:27:35652 days ago1672810055
0x27BF782d...5d47C385e
0.0125296 ETH
162614752022-12-25 11:31:23662 days ago1671967883
0x27BF782d...5d47C385e
0.01369024 ETH
160074852022-11-19 23:56:35697 days ago1668902195
0x27BF782d...5d47C385e
0.01499392 ETH
159313102022-11-09 8:33:59708 days ago1667982839
0x27BF782d...5d47C385e
0.01646287 ETH
158665352022-10-31 7:26:23717 days ago1667201183
0x27BF782d...5d47C385e
0.0181236 ETH
158029152022-10-22 10:01:23726 days ago1666432883
0x27BF782d...5d47C385e
0.01009998 ETH
157881412022-10-20 8:33:23728 days ago1666254803
0x27BF782d...5d47C385e
0.00651758 ETH
157790272022-10-19 1:59:47729 days ago1666144787
0x27BF782d...5d47C385e
0.0054481 ETH
157716262022-10-18 1:12:11730 days ago1666055531
0x27BF782d...5d47C385e
0.0068747 ETH
157625662022-10-16 18:48:47732 days ago1665946127
0x27BF782d...5d47C385e
0.00565781 ETH
157553312022-10-15 18:32:35733 days ago1665858755
0x27BF782d...5d47C385e
0.00658733 ETH
157471212022-10-14 15:03:47734 days ago1665759827
0x27BF782d...5d47C385e
0.00600313 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ETHSnowball

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-08-01
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.9;

/*
*
*    _______  _________  ___  ___          ________  ________   ________  ___       __   ________  ________  ___       ___          
*   |\  ___ \|\___   ___\\  \|\  \        |\   ____\|\   ___  \|\   __  \|\  \     |\  \|\   __  \|\   __  \|\  \     |\  \         
*   \ \   __/\|___ \  \_\ \  \\\  \       \ \  \___|\ \  \\ \  \ \  \|\  \ \  \    \ \  \ \  \|\ /\ \  \|\  \ \  \    \ \  \        
*    \ \  \_|/__  \ \  \ \ \   __  \       \ \_____  \ \  \\ \  \ \  \\\  \ \  \  __\ \  \ \   __  \ \   __  \ \  \    \ \  \       
*     \ \  \_|\ \  \ \  \ \ \  \ \  \       \|____|\  \ \  \\ \  \ \  \\\  \ \  \|\__\_\  \ \  \|\  \ \  \ \  \ \  \____\ \  \____  
*      \ \_______\  \ \__\ \ \__\ \__\        ____\_\  \ \__\\ \__\ \_______\ \____________\ \_______\ \__\ \__\ \_______\ \_______\
*       \|_______|   \|__|  \|__|\|__|       |\_________\|__| \|__|\|_______|\|____________|\|_______|\|__|\|__|\|_______|\|_______|
*                                            \|_________|                                                                           
*                                                                                     
* ETH Snowball - ETH Miner
*
* Twitter  : https://twitter.com/ethsnowball
* Telegram : https://t.me/ethsnowball
* Discord  : https://discord.gg/pnaDGkej2w 
*
*/

contract Ownable{
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _owner = msg.sender;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == msg.sender, "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

library SafeMath {

  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    if (a == 0) {
      return 0;
    }
    uint256 c = a * b;
    assert(c / a == b);
    return c;
  }

  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a / b;
    return c;
  }

  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    assert(b <= a);
    return a - b;
  }

  function add(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a + b;
    assert(c >= a);
    return c;
  }

  function mod(uint256 a, uint256 b) internal pure returns (uint256) {
    require(b != 0);
    return a % b;
  }
}

interface IRandomGenerator {
    function getRandomNumber(uint _count) external view returns (uint);
}

contract ETHSnowball is Ownable {
    using SafeMath for uint256;

    IRandomGenerator public randomGenerator;

    /* base parameters */
    uint256 public EGGS_TO_HIRE_1MINERS = 2880000;
    uint256 public REFERRAL = 50;
    uint256 public PERCENTS_DIVIDER = 1000;
    uint256 public EXTRA_BONUS = 200;
    uint256 public DECREASE_TAX = 500;
    uint256 public TAX = 100;
    uint256 public MARKET_EGGS_DIVISOR = 5;
    uint256 public MARKET_EGGS_DIVISOR_SELL = 2;

    uint256 public MIN_INVEST_LIMIT = 1 * 1e16; /* 0.01 ETH  */
    uint256 public WALLET_DEPOSIT_LIMIT = 50 * 1e18; /* 50 ETH  */

	uint256 public COMPOUND_BONUS_MAX_TIMES = 10;
    uint256 public COMPOUND_STEP = 1 days;

    uint256 public EARLY_WITHDRAWAL_TAX = 500;
    uint256 public COMPOUND_FOR_NO_TAX_WITHDRAWAL = 0; // 6

    uint256 public LOTTERY_INTERVAL = 7 days;
    bool public lotteryStarted = false;
    uint256 public ticketPrice = 1e16; // 0.01 ETH
    uint256 public LOTTERY_START_TIME;
    uint16 public LOTTERY_ROUND;
    uint256 public winTicketID;

    uint256 public totalTax;

    uint256 public WHITELIST_COUNT = 5000;  // RoadMap 1
    address[] public whitelist;
    mapping(address => bool) public isWhitelist;

    uint256 private marketEggs;
    uint256 PSN = 10000;
    uint256 PSNH = 5000;
    bool private contractStarted;

	uint256 public CUTOFF_STEP = 4 days;
	uint256 public WITHDRAW_COOLDOWN = 1 days;

    /* addresses */
    // address private owner;
    address payable public marketingAddress;
    address payable public devAddress;

    struct User {
        uint256 initialDeposit;
        uint256 miners;
        uint256 claimedEggs;
        uint256 lastHatch;
        address referrer;
        uint256 referralsCount;
        uint256 referralEggRewards;
        uint256 dailyCompoundBonus;
        mapping(uint16 => uint256) ticketCount;
        uint8 level;
    }

    mapping(address => User) public users;

    struct PurchaseInfo {
        uint256 ticketIDFrom;
        uint256 tickets;
        address account;
    }

    struct LotteryInfo {
        address winnerAccount;          // winner of this round
        uint256 totalTicketCnt;         // total purcahsed ticket count of this count
        PurchaseInfo[] purchaseInfo;    // purchase info
    }

    mapping(uint16 => LotteryInfo) public lotteryInfo;     // lottery ID -> LOtteryInfo

    constructor(address payable _marketingAddress, address payable _devAddress, address _randomGenerator) {
        marketingAddress = _marketingAddress;
        devAddress = _devAddress;
        randomGenerator = IRandomGenerator(_randomGenerator);
        marketEggs = 144000000000;
    }

    function CompoundRewards(address ref) public {
        require(contractStarted, "Contract not yet Started.");

        User storage user = users[msg.sender];
        if (user.referrer == address(0)) {
            if (ref != msg.sender) {
                user.referrer = ref;
            }

            address upline1 = user.referrer;
            if (upline1 != address(0)) {
                users[upline1].referralsCount = users[upline1].referralsCount.add(1);
            }
        }
                
        uint256 eggsUsed = getMyEggs();
        if(block.timestamp.sub(user.lastHatch) >= COMPOUND_STEP && user.dailyCompoundBonus < COMPOUND_BONUS_MAX_TIMES) {
            user.dailyCompoundBonus = user.dailyCompoundBonus.add(1);
        }
        
        user.miners = user.miners.add(eggsUsed.div(EGGS_TO_HIRE_1MINERS));
        user.claimedEggs = 0;
        user.lastHatch = block.timestamp;

        if (user.referrer != address(0)) {
            address upline = user.referrer;
            uint256 refRewards = eggsUsed.mul(REFERRAL).div(PERCENTS_DIVIDER);
            users[upline].claimedEggs = SafeMath.add(users[upline].claimedEggs, refRewards);
            users[upline].referralEggRewards = users[upline].referralEggRewards.add(refRewards);
        }

        marketEggs = marketEggs.add(eggsUsed.div(MARKET_EGGS_DIVISOR));
    }

    function ClaimRewards() public {
        require(contractStarted, "Contract not yet Started.");

        User storage user = users[msg.sender];
        require(user.lastHatch + WITHDRAW_COOLDOWN <= block.timestamp);

        uint256 hasEggs = getMyEggs();
        uint256 eggValue = calculateEggSell(hasEggs);
        
        /** 
            if user compound < to mandatory compound days**/
        if (user.dailyCompoundBonus < COMPOUND_FOR_NO_TAX_WITHDRAWAL){
            //daily compound bonus count will not reset and eggValue will be deducted with 50% feedback tax.
            eggValue = eggValue.sub(eggValue.mul(EARLY_WITHDRAWAL_TAX).div(PERCENTS_DIVIDER));
        } else {
            //set daily compound bonus count to 0 and eggValue will remain without deductions
             user.dailyCompoundBonus = 0;
        }
        
        user.claimedEggs = 0;  
        user.lastHatch = block.timestamp;
        marketEggs = marketEggs.add(hasEggs.div(MARKET_EGGS_DIVISOR_SELL));
        
        if (user.level > 0) {
            eggValue = eggValue + eggValue.mul(EXTRA_BONUS).div(PERCENTS_DIVIDER);
        }

        if(getBalance() < eggValue) {
            eggValue = getBalance();
        }

        uint256 eggsPayout = eggValue.sub(payFees(eggValue));
        
        payable(address(msg.sender)).transfer(eggsPayout);
    }
     
    /* transfer amount of ETH */
    function BuySnows(address ref) public payable {
        require(contractStarted, "Contract not yet Started.");

        User storage user = users[msg.sender];
        if (lotteryStarted) {

            if (LOTTERY_START_TIME + LOTTERY_INTERVAL < block.timestamp) {
                UpdateRoundInfo();
            }

            uint256 ticketCnt = msg.value.div(ticketPrice);
            user.ticketCount[LOTTERY_ROUND] = user.ticketCount[LOTTERY_ROUND].add(ticketCnt);

            lotteryInfo[LOTTERY_ROUND].purchaseInfo.push(PurchaseInfo({
                ticketIDFrom: lotteryInfo[LOTTERY_ROUND].totalTicketCnt,
                tickets: ticketCnt,
                account: msg.sender
            }));

            lotteryInfo[LOTTERY_ROUND].totalTicketCnt = lotteryInfo[LOTTERY_ROUND].totalTicketCnt + ticketCnt;
        }
        
        require(msg.value >= MIN_INVEST_LIMIT, "Mininum investment not met.");
        require(user.initialDeposit.add(msg.value) <= WALLET_DEPOSIT_LIMIT, "Max deposit limit reached.");

        uint256 eggsBought = calculateEggBuy(msg.value, address(this).balance.sub(msg.value));
        user.initialDeposit = user.initialDeposit.add(msg.value);
        user.claimedEggs = user.claimedEggs.add(eggsBought);

        if (!isWhitelist[msg.sender] && user.initialDeposit >= 1 ether && whitelist.length < WHITELIST_COUNT) {
            isWhitelist[msg.sender] = true;
            whitelist.push(msg.sender);
        }

        payFees(msg.value);
        CompoundRewards(ref);
    }

    function throwSnowball(address addr) public payable{
        if (!contractStarted) {
    		if (msg.sender == owner()) {
    			contractStarted = true;
                BuySnows(addr);
    		} else revert("Contract not yet started.");
    	}
    }

    //fund contract with ETH before launch.
    function fundContract() external payable {}

    function payFees(uint256 eggValue) internal returns(uint256) {
        uint256 tax = eggValue.mul(TAX).div(PERCENTS_DIVIDER);
        if (users[msg.sender].level > 1) {
            tax = tax.mul(DECREASE_TAX).div(PERCENTS_DIVIDER);
        }
        totalTax = totalTax.add(tax);
        // payable(owner()).transfer(tax.mul(150).div(PERCENTS_DIVIDER));
        // payable(marketingAddress).transfer(tax.mul(850).div(PERCENTS_DIVIDER));
        
        return tax;
    }

    function claimTax() external {
        payable(devAddress).transfer(totalTax.mul(150).div(PERCENTS_DIVIDER));
        payable(marketingAddress).transfer(totalTax.mul(850).div(PERCENTS_DIVIDER));
        totalTax = 0;
    }

    function getBalance() public view returns(uint256){
        return address(this).balance - totalTax;
    }

    function getTimeStamp() public view returns (uint256) {
        return block.timestamp;
    }

    function getAvailableEarnings(address _adr) public view returns(uint256) {
        uint256 userEggs = users[_adr].claimedEggs.add(getEggsSinceLastHatch(_adr));
        return calculateEggSell(userEggs);
    }

    //  Supply and demand balance algorithm 
    function calculateTrade(uint256 rt,uint256 rs, uint256 bs) public view returns(uint256){
    // (PSN * bs)/(PSNH + ((PSN * rs + PSNH * rt) / rt)); PSN / PSNH == 1/2
    // bs * (1 / (1 + (rs / rt)))
    // purchase : marketEggs * 1 / ((1 + (this.balance / eth)))
    // sell : this.balance * 1 / ((1 + (marketEggs / eggs)))
        return SafeMath.div(
                SafeMath.mul(PSN, bs), 
                    SafeMath.add(PSNH, 
                        SafeMath.div(
                            SafeMath.add(
                                SafeMath.mul(PSN, rs), 
                                    SafeMath.mul(PSNH, rt)), 
                                        rt)));
    }

    function calculateEggSell(uint256 eggs) public view returns(uint256){
        return calculateTrade(eggs, marketEggs, getBalance());
    }

    function calculateEggBuy(uint256 eth,uint256 contractBalance) public view returns(uint256){
        return calculateTrade(eth, contractBalance, marketEggs);
    }

    function calculateEggBuySimple(uint256 eth) public view returns(uint256){
        return calculateEggBuy(eth, getBalance());
    }

    /* How many snows per day user will receive based on ETH deposit */
    function getEggsYield(uint256 amount) public view returns(uint256,uint256) {
        uint256 eggsAmount = calculateEggBuy(amount , getBalance().add(amount).sub(amount));
        uint256 miners = eggsAmount.div(EGGS_TO_HIRE_1MINERS);
        uint256 day = 1 days;
        uint256 eggsPerDay = day.mul(miners);
        uint256 earningsPerDay = calculateEggSellForYield(eggsPerDay, amount);
        return(miners, earningsPerDay);
    }

    function calculateEggSellForYield(uint256 eggs,uint256 amount) public view returns(uint256){
        return calculateTrade(eggs,marketEggs, getBalance().add(amount));
    }

    function getMyEggs() public view returns(uint256){
        return users[msg.sender].claimedEggs.add(getEggsSinceLastHatch(msg.sender));
    }

    function getEggsSinceLastHatch(address adr) public view returns(uint256){
        uint256 secondsSinceLastHatch = block.timestamp.sub(users[adr].lastHatch);
                            /* get min time. */
        uint256 cutoffTime = min256(secondsSinceLastHatch, CUTOFF_STEP);
        uint256 secondsPassed = min256(EGGS_TO_HIRE_1MINERS, cutoffTime);
        return secondsPassed.mul(users[adr].miners);
    }

    function levelGift(address _account) external {
        require(msg.sender == owner(), "Admin use only");
        users[_account].level = users[_account].level + 1;
    }

    function min256(uint256 a, uint256 b) private pure returns (uint256) {
        return a < b ? a : b;
    }

    function min16(uint16 a, uint16 b) private pure returns (uint16) {
        return a < b ? a : b;
    }

    function CHANGE_marketingAddress(address _account) external {
        require(msg.sender == marketingAddress, "Admin use only.");
        marketingAddress = payable(_account);
    }

    function CHANGE_devAddress(address _account) external {
        require(msg.sender == devAddress, "Admin use only.");
        devAddress = payable(_account);
    }

    /* APR setters */
    // 2880000 - 3%, 2160000 - 4%, 1728000 - 5%, 1440000 - 6%, 1200000 - 7%
    // 1080000 - 8%, 959000 - 9%, 864000 - 10%, 720000 - 12%
    
    function SET_EGGS_TO_HIRE_1MINERS(uint256 value) external {
        require(msg.sender == owner(), "Admin use only.");
        require(value <= 2880000 && value >= 720000, "Min 3%, Max 12%");
        EGGS_TO_HIRE_1MINERS = value;
    }

    function SET_REFERRAL_PERCENT(uint256 value) external {
        require(msg.sender == owner(), "Admin use only.");
        require(value >= 10 && value <= 100, "Min 1%, Max 10%");
        REFERRAL = value;
    }

    function SET_MARKET_EGGS_DIVISOR(uint256 value) external {
        require(msg.sender == owner(), "Admin use only.");
        require(value <= 50);
        MARKET_EGGS_DIVISOR = value;
    }

    function SET_MARKET_EGGS_DIVISOR_SELL(uint256 value) external {
        require(msg.sender == owner(), "Admin use only.");
        require(value <= 50);
        MARKET_EGGS_DIVISOR_SELL = value;
    }

    function SET_TAX(uint256 value) external {
        require(msg.sender == owner(), "Admin use only.");
        require(value <= 100, "available to 10%");
        TAX = value;
    }

    function SET_EXTRA_BONUS(uint256 value) external {
        require(msg.sender == owner(), "Admin use only.");
        require(value <= 500, "available to 50%");
        EXTRA_BONUS = value;
    }

    function SET_DECREASE_TAX(uint256 value) external {
        require(msg.sender == owner(), "Admin use only.");
        require(value <= 1000, "available to 100%");
        DECREASE_TAX = value;
    }

    function SET_WITHDRAWAL_TAX(uint256 value) external {
        require(msg.sender == owner(), "Admin use only.");
        require(value <= 900, "available to 90%");
        EARLY_WITHDRAWAL_TAX = value;
    }

    function SET_DAILY_COMPOUND_BONUS_MAX_TIMES(uint256 value) external {
        require(msg.sender == owner(), "Admin use only.");
        require(value <= 30);
        COMPOUND_BONUS_MAX_TIMES = value;
    }

    function SET_COMPOUND_STEP(uint256 value) external {
        require(msg.sender == owner(), "Admin use only.");
        require(value <= 1_209_600, "available between 0 and 14 days");
        COMPOUND_STEP = value;
    }

    function SET_INVEST_MIN(uint256 value) external {
        require(msg.sender == owner(), "Admin use only");
        require(value >= 1e16 && value <= 1 ether, "available between 0.01 ETH and 1ETH");
        MIN_INVEST_LIMIT = value;
    }

    function SET_CUTOFF_STEP(uint256 value) external {
        require(msg.sender == owner(), "Admin use only");
        require(value <= 1_209_600, "available between 0 and 14 days");
        CUTOFF_STEP = value;
    }

    function SET_WITHDRAW_COOLDOWN(uint256 value) external {
        require(msg.sender == owner(), "Admin use only");
        require(value <= 1_209_600, "available between 0 and 14 days");
        WITHDRAW_COOLDOWN = value;
    }

    function SET_WALLET_DEPOSIT_LIMIT(uint256 value) external {
        require(msg.sender == owner(), "Admin use only");
        require(value >= 10 && value <= 100, "available between 10ETH and 100ETH");
        WALLET_DEPOSIT_LIMIT = value * 1 ether;
    }
    
    function SET_COMPOUND_FOR_NO_TAX_WITHDRAWAL(uint256 value) external {
        require(msg.sender == owner(), "Admin use only.");
        require(value <= 12);
        COMPOUND_FOR_NO_TAX_WITHDRAWAL = value;
    }

    function startLOTTERY() external {
        require(msg.sender == owner(), "Admin use only");
        lotteryStarted = true;
        LOTTERY_START_TIME = block.timestamp;
        LOTTERY_ROUND = LOTTERY_ROUND + 1;
    }

    function finishLOTTERY() external {
        require(msg.sender == owner(), "Admin use only");
        require(lotteryStarted == true);
        UpdateRoundInfo();
        lotteryStarted = false;
    }

    function SET_LOTTERY_INTERVAL(uint256 value) external {
        require(msg.sender == owner(), "Admin use only");
        require(value <= 1_209_600, "available between 0 and 14 days");
        LOTTERY_INTERVAL = value;
    }

    function getWhitelist(uint16 _start, uint16 _end) public view returns( address [] memory){
        require(_start < _end);
        uint16 len = uint16(whitelist.length-1);
        uint16 start = min16(_start, len);
        uint16 end = min16(_end, len);

        address [] memory result = new address[](end - start + 1);
        for (uint16 i = start; i <= end; i++) {
            result[i-_start] = (whitelist[i]);
        }
        return result;
    }

    function getTotalWhitelistCount() external view returns(uint256) {
        return whitelist.length;
    }

    function UpdateRoundInfo() internal {
        winTicketID = randomGenerator.getRandomNumber(lotteryInfo[LOTTERY_ROUND].totalTicketCnt);
        
        PurchaseInfo[] memory info = lotteryInfo[LOTTERY_ROUND].purchaseInfo;
        uint256 mid;
        uint256 low = 0;
        uint256 high = info.length - 1;

        /* perform binary search */
        while (low <= high) {
            mid = low + (high - low)/2; // update mid
            
            if ((winTicketID >= info[mid].ticketIDFrom) && 
                (winTicketID < info[mid].ticketIDFrom + info[mid].tickets)) {
                break; // find winnerID
            }
            else if (winTicketID < info[mid].ticketIDFrom) { // search left subarray for val
                high = mid - 1;  // update high
            }
            else if (winTicketID > info[mid].ticketIDFrom) { // search right subarray for val
                low = mid + 1;        // update low
            }
        }
        lotteryInfo[LOTTERY_ROUND].winnerAccount = info[mid].account;
        User storage winner = users[info[mid].account];
        winner.level = winner.level + 1;
         
        LOTTERY_ROUND = LOTTERY_ROUND + 1;
        LOTTERY_START_TIME = LOTTERY_START_TIME + LOTTERY_INTERVAL;
    }

    function getUserTicketInfo(address _account, uint16 _roundID) external view returns(uint256) {
        return users[_account].ticketCount[_roundID];
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address payable","name":"_marketingAddress","type":"address"},{"internalType":"address payable","name":"_devAddress","type":"address"},{"internalType":"address","name":"_randomGenerator","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"address","name":"ref","type":"address"}],"name":"BuySnows","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"CHANGE_devAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"CHANGE_marketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"COMPOUND_BONUS_MAX_TIMES","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"COMPOUND_FOR_NO_TAX_WITHDRAWAL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"COMPOUND_STEP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CUTOFF_STEP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ClaimRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"ref","type":"address"}],"name":"CompoundRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"DECREASE_TAX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EARLY_WITHDRAWAL_TAX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EGGS_TO_HIRE_1MINERS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EXTRA_BONUS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LOTTERY_INTERVAL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LOTTERY_ROUND","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LOTTERY_START_TIME","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MARKET_EGGS_DIVISOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MARKET_EGGS_DIVISOR_SELL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MIN_INVEST_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERCENTS_DIVIDER","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"REFERRAL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SET_COMPOUND_FOR_NO_TAX_WITHDRAWAL","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SET_COMPOUND_STEP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SET_CUTOFF_STEP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SET_DAILY_COMPOUND_BONUS_MAX_TIMES","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SET_DECREASE_TAX","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SET_EGGS_TO_HIRE_1MINERS","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SET_EXTRA_BONUS","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SET_INVEST_MIN","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SET_LOTTERY_INTERVAL","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SET_MARKET_EGGS_DIVISOR","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SET_MARKET_EGGS_DIVISOR_SELL","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SET_REFERRAL_PERCENT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SET_TAX","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SET_WALLET_DEPOSIT_LIMIT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SET_WITHDRAWAL_TAX","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SET_WITHDRAW_COOLDOWN","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"TAX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WALLET_DEPOSIT_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WHITELIST_COUNT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WITHDRAW_COOLDOWN","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"eth","type":"uint256"},{"internalType":"uint256","name":"contractBalance","type":"uint256"}],"name":"calculateEggBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"eth","type":"uint256"}],"name":"calculateEggBuySimple","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"eggs","type":"uint256"}],"name":"calculateEggSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"eggs","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"calculateEggSellForYield","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rt","type":"uint256"},{"internalType":"uint256","name":"rs","type":"uint256"},{"internalType":"uint256","name":"bs","type":"uint256"}],"name":"calculateTrade","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"finishLOTTERY","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"fundContract","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"}],"name":"getAvailableEarnings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"getEggsSinceLastHatch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getEggsYield","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMyEggs","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTimeStamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalWhitelistCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint16","name":"_roundID","type":"uint16"}],"name":"getUserTicketInfo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"_start","type":"uint16"},{"internalType":"uint16","name":"_end","type":"uint16"}],"name":"getWhitelist","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWhitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"levelGift","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"","type":"uint16"}],"name":"lotteryInfo","outputs":[{"internalType":"address","name":"winnerAccount","type":"address"},{"internalType":"uint256","name":"totalTicketCnt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lotteryStarted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"randomGenerator","outputs":[{"internalType":"contract IRandomGenerator","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startLOTTERY","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"throwSnowball","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"ticketPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"users","outputs":[{"internalType":"uint256","name":"initialDeposit","type":"uint256"},{"internalType":"uint256","name":"miners","type":"uint256"},{"internalType":"uint256","name":"claimedEggs","type":"uint256"},{"internalType":"uint256","name":"lastHatch","type":"uint256"},{"internalType":"address","name":"referrer","type":"address"},{"internalType":"uint256","name":"referralsCount","type":"uint256"},{"internalType":"uint256","name":"referralEggRewards","type":"uint256"},{"internalType":"uint256","name":"dailyCompoundBonus","type":"uint256"},{"internalType":"uint8","name":"level","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"whitelist","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"winTicketID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]

6080604052622bf20060025560326003556103e860045560c86005556101f4600655606460075560056008556002600955662386f26fc10000600a556802b5e3af16b1880000600b55600a600c5562015180600d556101f4600e556000600f5562093a806010556000601160006101000a81548160ff021916908315150217905550662386f26fc10000601255611388601755612710601b55611388601c5562054600601e5562015180601f55348015620000b957600080fd5b5060405162002ca138038062002ca1833981016040819052620000dc916200014c565b600080546001600160a01b03199081163317909155602080546001600160a01b0395861690831617905560218054938516938216939093179092556001805491909316911617905564218711a000601a55620001a0565b6001600160a01b03811681146200014957600080fd5b50565b6000806000606084860312156200016257600080fd5b83516200016f8162000133565b6020850151909350620001828162000133565b6040850151909250620001958162000133565b809150509250925092565b612af180620001b06000396000f3fe60806040526004361061043c5760003560e01c80637c8e4b4c11610234578063c683630d1161012e578063d7c8843b116100b6578063e75769431161007a578063e757694314610d26578063f2a9fa1314610d46578063f2fde38b14610d5c578063f6f6288614610d7c578063fe85b42b14610d9257600080fd5b8063d7c8843b14610c93578063da235b2214610cb3578063da70913514610cc6578063dcbad90d14610ce6578063e714ab1e14610d0657600080fd5b8063cc3e9c78116100fd578063cc3e9c7814610c07578063cc9b7d3e14610c27578063cd329fc314610c47578063d458603014610c5d578063d714f8a214610c7357600080fd5b8063c683630d14610b73578063c688f0fb14610ba3578063c883744014610bb9578063c9a3f11b14610be757600080fd5b8063a87430ba116101bc578063baabd04611610180578063baabd04614610af5578063bd097e211461048a578063bdd1ca2714610b08578063bfa9f30414610b3d578063c63568c714610b5d57600080fd5b8063a87430ba14610953578063b116790014610a15578063b1cd42e114610a74578063b5ca79fc14610a94578063b83bad2414610ae057600080fd5b80638da5cb5b116102035780638da5cb5b146108c95780638e316327146108e7578063950d91e914610907578063a581ad451461091d578063a5ece9411461093357600080fd5b80637c8e4b4c146108495780637e56fde5146108695780637ebd1b30146108895780637ee28e3c146108a957600080fd5b80633ad10ef6116103455780635a3811b9116102cd5780636fe9d09a116102915780636fe9d09a146107d2578063715018a6146107e8578063716fc98e146107fd578063752a26281461081d57806376c7493e1461083357600080fd5b80635a3811b91461074a57806364c03a5e14610774578063674bda0d1461079457806368f58b03146107a95780636e9b7907146107bf57600080fd5b8063448883d711610314578063448883d7146106bf57806345a6a6e0146106d457806345f98c29146106f457806346f437811461071457806359eec8951461073457600080fd5b80633ad10ef614610647578063400678bc1461067f57806343ce7422146106945780634430ef55146106a957600080fd5b8063229824c4116103c85780632f4c07f8116103975780632f4c07f8146105b85780633578584f146105e5578063360498d1146105fb57806339f6df99146106115780633a6cac7f1461063157600080fd5b8063229824c41461053857806322edd77d1461055857806326fd84221461057857806329306fe51461059857600080fd5b80631209b1f61161040f5780631209b1f6146104c157806312798972146104d75780631848b8dc146104ec578063195a7339146105025780631aa0107a1461051857600080fd5b806301c234a81461044157806309f83b381461046a57806309fa8c301461048c57806312065fe0146104ac575b600080fd5b34801561044d57600080fd5b5061045760045481565b6040519081526020015b60405180910390f35b34801561047657600080fd5b5061048a610485366004612724565b610da8565b005b34801561049857600080fd5b5061048a6104a7366004612724565b610e30565b3480156104b857600080fd5b50610457610ea3565b3480156104cd57600080fd5b5061045760125481565b3480156104e357600080fd5b5061048a610eb8565b3480156104f857600080fd5b50610457600b5481565b34801561050e57600080fd5b5061045760025481565b34801561052457600080fd5b5061048a610533366004612724565b61102e565b34801561054457600080fd5b5061045761055336600461273d565b61106b565b34801561056457600080fd5b5061048a610573366004612785565b6110b8565b34801561058457600080fd5b506104576105933660046127a0565b611104565b3480156105a457600080fd5b5061048a6105b3366004612785565b61111c565b3480156105c457600080fd5b506105d86105d33660046127d4565b611168565b6040516104619190612807565b3480156105f157600080fd5b50610457601e5481565b34801561060757600080fd5b5061045760135481565b34801561061d57600080fd5b5061048a61062c366004612785565b61129e565b34801561063d57600080fd5b5061045760095481565b34801561065357600080fd5b50602154610667906001600160a01b031681565b6040516001600160a01b039091168152602001610461565b34801561068b57600080fd5b50601854610457565b3480156106a057600080fd5b50610457611322565b3480156106b557600080fd5b50610457600e5481565b3480156106cb57600080fd5b5061048a611349565b3480156106e057600080fd5b5061048a6106ef366004612724565b6113f3565b34801561070057600080fd5b5061048a61070f366004612724565b611445565b34801561072057600080fd5b5061048a61072f366004612724565b6114eb565b34801561074057600080fd5b5061045760085481565b34801561075657600080fd5b506011546107649060ff1681565b6040519015158152602001610461565b34801561078057600080fd5b5061045761078f366004612785565b61155f565b3480156107a057600080fd5b5061048a6115a2565b3480156107b557600080fd5b5061045760075481565b61048a6107cd366004612785565b6115f4565b3480156107de57600080fd5b5061045760105481565b3480156107f457600080fd5b5061048a6118eb565b34801561080957600080fd5b5061048a610818366004612724565b611960565b34801561082957600080fd5b50610457600d5481565b34801561083f57600080fd5b5061045760155481565b34801561085557600080fd5b5061048a610864366004612724565b6119b2565b34801561087557600080fd5b50610457610884366004612724565b611a04565b34801561089557600080fd5b506106676108a4366004612724565b611a12565b3480156108b557600080fd5b5061048a6108c4366004612724565b611a3c565b3480156108d557600080fd5b506000546001600160a01b0316610667565b3480156108f357600080fd5b50610457610902366004612724565b611ae7565b34801561091357600080fd5b50610457601f5481565b34801561092957600080fd5b5061045760175481565b34801561093f57600080fd5b50602054610667906001600160a01b031681565b34801561095f57600080fd5b506109c661096e366004612785565b60226020526000908152604090208054600182015460028301546003840154600485015460058601546006870154600788015460099098015496979596949593946001600160a01b0390931693919290919060ff1689565b60408051998a5260208a01989098529688019590955260608701939093526001600160a01b03909116608086015260a085015260c084015260e083015260ff1661010082015261012001610461565b348015610a2157600080fd5b50610a55610a30366004612854565b602360205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b039093168352602083019190915201610461565b348015610a8057600080fd5b5061048a610a8f366004612724565b611af8565b348015610aa057600080fd5b50610457610aaf36600461286f565b6001600160a01b038216600090815260226020908152604080832061ffff8516845260080190915290205492915050565b348015610aec57600080fd5b5061048a611b6d565b61048a610b03366004612785565b611bd6565b348015610b1457600080fd5b50610b28610b23366004612724565b611c54565b60408051928352602083019190915201610461565b348015610b4957600080fd5b5061048a610b58366004612724565b611cc1565b348015610b6957600080fd5b5061045760035481565b348015610b7f57600080fd5b50610764610b8e366004612785565b60196020526000908152604090205460ff1681565b348015610baf57600080fd5b50610457600c5481565b348015610bc557600080fd5b50601454610bd49061ffff1681565b60405161ffff9091168152602001610461565b348015610bf357600080fd5b5061048a610c02366004612724565b611d35565b348015610c1357600080fd5b50610457610c223660046127a0565b611d72565b348015610c3357600080fd5b5061048a610c42366004612785565b611d87565b348015610c5357600080fd5b50610457600a5481565b348015610c6957600080fd5b5061045760055481565b348015610c7f57600080fd5b5061048a610c8e366004612724565b611fb0565b348015610c9f57600080fd5b50610457610cae366004612785565b612033565b348015610cbf57600080fd5b5042610457565b348015610cd257600080fd5b5061048a610ce1366004612724565b6120af565b348015610cf257600080fd5b50600154610667906001600160a01b031681565b348015610d1257600080fd5b5061048a610d21366004612724565b6120ec565b348015610d3257600080fd5b5061048a610d41366004612724565b61213e565b348015610d5257600080fd5b5061045760065481565b348015610d6857600080fd5b5061048a610d77366004612785565b61217b565b348015610d8857600080fd5b50610457600f5481565b348015610d9e57600080fd5b5061045760165481565b6000546001600160a01b03163314610ddb5760405162461bcd60e51b8152600401610dd29061288b565b60405180910390fd5b600a8110158015610ded575060648111155b610e2b5760405162461bcd60e51b815260206004820152600f60248201526e4d696e2031252c204d61782031302560881b6044820152606401610dd2565b600355565b6000546001600160a01b03163314610e5a5760405162461bcd60e51b8152600401610dd29061288b565b6064811115610e9e5760405162461bcd60e51b815260206004820152601060248201526f617661696c61626c6520746f2031302560801b6044820152606401610dd2565b600755565b600060165447610eb391906128ca565b905090565b601d5460ff16610eda5760405162461bcd60e51b8152600401610dd2906128e1565b336000908152602260205260409020601f5460038201544291610efc91612918565b1115610f0757600080fd5b6000610f11611322565b90506000610f1e82611ae7565b9050600f5483600701541015610f6057610f59610f52600454610f4c600e548561225290919063ffffffff16565b90612287565b8290612294565b9050610f68565b600060078401555b60006002840155426003840155600954610f9090610f87908490612287565b601a54906122b0565b601a55600983015460ff1615610fc857610fbb600454610f4c6005548461225290919063ffffffff16565b610fc59082612918565b90505b80610fd1610ea3565b1015610fe257610fdf610ea3565b90505b6000610ff7610ff0836122cf565b8390612294565b604051909150339082156108fc029083906000818181858888f19350505050158015611027573d6000803e3d6000fd5b5050505050565b6000546001600160a01b031633146110585760405162461bcd60e51b8152600401610dd29061288b565b601e81111561106657600080fd5b600c55565b60006110b061107c601b5484612252565b6110ab601c546110a06110a5611094601b548a612252565b6110a0601c548c612252565b6122b0565b89612287565b612287565b949350505050565b6020546001600160a01b031633146110e25760405162461bcd60e51b8152600401610dd29061288b565b602080546001600160a01b0319166001600160a01b0392909216919091179055565b60006111138383601a5461106b565b90505b92915050565b6021546001600160a01b031633146111465760405162461bcd60e51b8152600401610dd29061288b565b602180546001600160a01b0319166001600160a01b0392909216919091179055565b60608161ffff168361ffff161061117e57600080fd5b601854600090611190906001906128ca565b9050600061119e8583612344565b905060006111ac8584612344565b905060006111ba8383612930565b6111c5906001612953565b61ffff1667ffffffffffffffff8111156111e1576111e1612979565b60405190808252806020026020018201604052801561120a578160200160208202803683370190505b509050825b8261ffff168161ffff16116112935760188161ffff16815481106112355761123561298f565b6000918252602090912001546001600160a01b0316826112558a84612930565b61ffff16815181106112695761126961298f565b6001600160a01b03909216602092830291909101909101528061128b816129a5565b91505061120f565b509695505050505050565b6000546001600160a01b031633146112c85760405162461bcd60e51b8152600401610dd2906129c7565b6001600160a01b0381166000908152602260205260409020600901546112f29060ff1660016129ef565b6001600160a01b03919091166000908152602260205260409020600901805460ff191660ff909216919091179055565b6000610eb361133033612033565b33600090815260226020526040902060020154906122b0565b6021546004546016546001600160a01b03909216916108fc9161137191610f4c906096612252565b6040518115909202916000818181858888f19350505050158015611399573d6000803e3d6000fd5b506020546004546016546001600160a01b03909216916108fc916113c391610f4c90610352612252565b6040518115909202916000818181858888f193505050501580156113eb573d6000803e3d6000fd5b506000601655565b6000546001600160a01b0316331461141d5760405162461bcd60e51b8152600401610dd2906129c7565b621275008111156114405760405162461bcd60e51b8152600401610dd290612a14565b601f55565b6000546001600160a01b0316331461146f5760405162461bcd60e51b8152600401610dd2906129c7565b662386f26fc10000811015801561148e5750670de0b6b3a76400008111155b6114e65760405162461bcd60e51b815260206004820152602360248201527f617661696c61626c65206265747765656e20302e30312045544820616e64203160448201526208aa8960eb1b6064820152608401610dd2565b600a55565b6000546001600160a01b031633146115155760405162461bcd60e51b8152600401610dd29061288b565b6101f481111561155a5760405162461bcd60e51b815260206004820152601060248201526f617661696c61626c6520746f2035302560801b6044820152606401610dd2565b600555565b60008061159061156e84612033565b6001600160a01b038516600090815260226020526040902060020154906122b0565b905061159b81611ae7565b9392505050565b6000546001600160a01b031633146115cc5760405162461bcd60e51b8152600401610dd2906129c7565b60115460ff1615156001146115e057600080fd5b6115e8612362565b6011805460ff19169055565b601d5460ff166116165760405162461bcd60e51b8152600401610dd2906128e1565b33600090815260226020526040902060115460ff161561175557426010546013546116419190612918565b101561164f5761164f612362565b60006116666012543461228790919063ffffffff16565b60145461ffff16600090815260088401602052604090205490915061168b90826122b0565b6014805461ffff90811660009081526008860160209081526040808320959095558354831682526023808252858320865160608101885260018083015482528185018a815233838b0190815260029485018054808501825590895287892094516003909102909401938455905183830155519190920180546001600160a01b0319166001600160a01b03909216919091179055945490931682529190915291909120015461173a908290612918565b60145461ffff16600090815260236020526040902060010155505b600a543410156117a75760405162461bcd60e51b815260206004820152601b60248201527f4d696e696e756d20696e766573746d656e74206e6f74206d65742e00000000006044820152606401610dd2565b600b5481546117b690346122b0565b11156118045760405162461bcd60e51b815260206004820152601a60248201527f4d6178206465706f736974206c696d697420726561636865642e0000000000006044820152606401610dd2565b6000611814346105934782612294565b825490915061182390346122b0565b8255600282015461183490826122b0565b60028301553360009081526019602052604090205460ff1615801561186257508154670de0b6b3a764000011155b80156118715750601754601854105b156118d357336000818152601960205260408120805460ff191660019081179091556018805491820181559091527fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e0180546001600160a01b03191690911790555b6118dc346122cf565b506118e683611d87565b505050565b336118fe6000546001600160a01b031690565b6001600160a01b0316146119545760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610dd2565b61195e60006126c5565b565b6000546001600160a01b0316331461198a5760405162461bcd60e51b8152600401610dd2906129c7565b621275008111156119ad5760405162461bcd60e51b8152600401610dd290612a14565b601055565b6000546001600160a01b031633146119dc5760405162461bcd60e51b8152600401610dd2906129c7565b621275008111156119ff5760405162461bcd60e51b8152600401610dd290612a14565b601e55565b600061111682610593610ea3565b60188181548110611a2257600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b03163314611a665760405162461bcd60e51b8152600401610dd2906129c7565b600a8110158015611a78575060648111155b611acf5760405162461bcd60e51b815260206004820152602260248201527f617661696c61626c65206265747765656e20313045544820616e6420313030456044820152610a8960f31b6064820152608401610dd2565b611ae181670de0b6b3a7640000612a4b565b600b5550565b600061111682601a54610553610ea3565b6000546001600160a01b03163314611b225760405162461bcd60e51b8152600401610dd29061288b565b6103e8811115611b685760405162461bcd60e51b8152602060048201526011602482015270617661696c61626c6520746f203130302560781b6044820152606401610dd2565b600655565b6000546001600160a01b03163314611b975760405162461bcd60e51b8152600401610dd2906129c7565b6011805460ff1916600190811790915542601355601454611bbe9161ffff90911690612953565b6014805461ffff191661ffff92909216919091179055565b601d5460ff16611c09576000546001600160a01b0316331415611c0c57601d805460ff19166001179055611c09816115f4565b50565b60405162461bcd60e51b815260206004820152601960248201527f436f6e7472616374206e6f742079657420737461727465642e000000000000006044820152606401610dd2565b6000806000611c798461059386611c7388611c6d610ea3565b906122b0565b90612294565b90506000611c926002548361228790919063ffffffff16565b9050620151806000611ca48284612252565b90506000611cb28289611d72565b93989397509295505050505050565b6000546001600160a01b03163314611ceb5760405162461bcd60e51b8152600401610dd29061288b565b610384811115611d305760405162461bcd60e51b815260206004820152601060248201526f617661696c61626c6520746f2039302560801b6044820152606401610dd2565b600e55565b6000546001600160a01b03163314611d5f5760405162461bcd60e51b8152600401610dd29061288b565b6032811115611d6d57600080fd5b600855565b600061111383601a5461055385611c6d610ea3565b601d5460ff16611da95760405162461bcd60e51b8152600401610dd2906128e1565b33600090815260226020526040902060048101546001600160a01b0316611e52576001600160a01b0382163314611df8576004810180546001600160a01b0319166001600160a01b0384161790555b60048101546001600160a01b03168015611e50576001600160a01b038116600090815260226020526040902060050154611e339060016122b0565b6001600160a01b0382166000908152602260205260409020600501555b505b6000611e5c611322565b9050600d54611e7883600301544261229490919063ffffffff16565b10158015611e8b5750600c548260070154105b15611ea6576007820154611ea09060016122b0565b60078301555b611ec9611ebe6002548361228790919063ffffffff16565b6001840154906122b0565b60018301556000600283015542600383015560048201546001600160a01b031615611f905760048083015490546003546001600160a01b0390921691600091611f1791610f4c908690612252565b6001600160a01b038316600090815260226020526040902060020154909150611f4090826122b0565b6001600160a01b0383166000908152602260205260409020600281019190915560060154611f6e90826122b0565b6001600160a01b03909216600090815260226020526040902060060191909155505b611fa8610f876008548361228790919063ffffffff16565b601a55505050565b6000546001600160a01b03163314611fda5760405162461bcd60e51b8152600401610dd29061288b565b622bf2008111158015611ff05750620afc808110155b61202e5760405162461bcd60e51b815260206004820152600f60248201526e4d696e2033252c204d61782031322560881b6044820152606401610dd2565b600255565b6001600160a01b038116600090815260226020526040812060030154819061205c904290612294565b9050600061206c82601e54612715565b9050600061207c60025483612715565b6001600160a01b0386166000908152602260205260409020600101549091506120a6908290612252565b95945050505050565b6000546001600160a01b031633146120d95760405162461bcd60e51b8152600401610dd29061288b565b60328111156120e757600080fd5b600955565b6000546001600160a01b031633146121165760405162461bcd60e51b8152600401610dd29061288b565b621275008111156121395760405162461bcd60e51b8152600401610dd290612a14565b600d55565b6000546001600160a01b031633146121685760405162461bcd60e51b8152600401610dd29061288b565b600c81111561217657600080fd5b600f55565b3361218e6000546001600160a01b031690565b6001600160a01b0316146121e45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610dd2565b6001600160a01b0381166122495760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610dd2565b611c09816126c5565b60008261226157506000611116565b600061226d8385612a4b565b90508261227a8583612a6a565b1461111357611113612a8c565b6000806110b08385612a6a565b6000828211156122a6576122a6612a8c565b61111382846128ca565b6000806122bd8385612918565b90508381101561111357611113612a8c565b6000806122ed600454610f4c6007548661225290919063ffffffff16565b33600090815260226020526040902060090154909150600160ff909116111561232e5761232b600454610f4c6006548461225290919063ffffffff16565b90505b60165461233b90826122b0565b60165592915050565b60008161ffff168361ffff161061235b5781611113565b5090919050565b6001805460145461ffff1660009081526023602052604090819020909201549151632cdc85e960e21b815260048101929092526001600160a01b03169063b37217a49060240160206040518083038186803b1580156123c057600080fd5b505afa1580156123d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123f89190612aa2565b60155560145461ffff16600090815260236020908152604080832060020180548251818502810185019093528083529192909190849084015b82821015612486576000848152602090819020604080516060810182526003860290920180548352600180820154848601526002909101546001600160a01b0316918301919091529083529092019101612431565b505050509050600080600090506000600184516124a391906128ca565b90505b8082116125c15760026124b983836128ca565b6124c39190612a6a565b6124cd9083612918565b92508383815181106124e1576124e161298f565b60200260200101516000015160155410158015612544575083838151811061250b5761250b61298f565b6020026020010151602001518484815181106125295761252961298f565b60200260200101516000015161253f9190612918565b601554105b1561254e576125c1565b8383815181106125605761256061298f565b6020026020010151600001516015541015612587576125806001846128ca565b90506124a6565b8383815181106125995761259961298f565b60200260200101516000015160155411156125bc576125b9836001612918565b91505b6124a6565b8383815181106125d3576125d361298f565b60209081029190910181015160409081015160145461ffff166000908152602390935290822080546001600160a01b0319166001600160a01b039092169190911790558451602290829087908790811061262f5761262f61298f565b6020908102919091018101516040908101516001600160a01b031683529082019290925201600020600981015490915061266d9060ff1660016129ef565b60098201805460ff191660ff929092169190911790556014546126959061ffff166001612953565b6014805461ffff191661ffff929092169190911790556010546013546126bb9190612918565b6013555050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600081831061235b5781611113565b60006020828403121561273657600080fd5b5035919050565b60008060006060848603121561275257600080fd5b505081359360208301359350604090920135919050565b80356001600160a01b038116811461278057600080fd5b919050565b60006020828403121561279757600080fd5b61111382612769565b600080604083850312156127b357600080fd5b50508035926020909101359150565b803561ffff8116811461278057600080fd5b600080604083850312156127e757600080fd5b6127f0836127c2565b91506127fe602084016127c2565b90509250929050565b6020808252825182820181905260009190848201906040850190845b818110156128485783516001600160a01b031683529284019291840191600101612823565b50909695505050505050565b60006020828403121561286657600080fd5b611113826127c2565b6000806040838503121561288257600080fd5b6127f083612769565b6020808252600f908201526e20b236b4b7103ab9b29037b7363c9760891b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000828210156128dc576128dc6128b4565b500390565b60208082526019908201527f436f6e7472616374206e6f742079657420537461727465642e00000000000000604082015260600190565b6000821982111561292b5761292b6128b4565b500190565b600061ffff8381169083168181101561294b5761294b6128b4565b039392505050565b600061ffff808316818516808303821115612970576129706128b4565b01949350505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600061ffff808316818114156129bd576129bd6128b4565b6001019392505050565b6020808252600e908201526d41646d696e20757365206f6e6c7960901b604082015260600190565b600060ff821660ff84168060ff03821115612a0c57612a0c6128b4565b019392505050565b6020808252601f908201527f617661696c61626c65206265747765656e203020616e64203134206461797300604082015260600190565b6000816000190483118215151615612a6557612a656128b4565b500290565b600082612a8757634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052600160045260246000fd5b600060208284031215612ab457600080fd5b505191905056fea2646970667358221220acade1b6d3bf5ffdcd34fa2b50e672bcfdd2f2771036c651068c3312178e3d9664736f6c63430008090033000000000000000000000000f611314d2d6ef059d002e188650dcfc2197045ee0000000000000000000000005c45870100a00bfc10aa63f66c31287350e4fa2b00000000000000000000000017d71fb405a47669239f436598645405b8bda632

Deployed Bytecode

0x60806040526004361061043c5760003560e01c80637c8e4b4c11610234578063c683630d1161012e578063d7c8843b116100b6578063e75769431161007a578063e757694314610d26578063f2a9fa1314610d46578063f2fde38b14610d5c578063f6f6288614610d7c578063fe85b42b14610d9257600080fd5b8063d7c8843b14610c93578063da235b2214610cb3578063da70913514610cc6578063dcbad90d14610ce6578063e714ab1e14610d0657600080fd5b8063cc3e9c78116100fd578063cc3e9c7814610c07578063cc9b7d3e14610c27578063cd329fc314610c47578063d458603014610c5d578063d714f8a214610c7357600080fd5b8063c683630d14610b73578063c688f0fb14610ba3578063c883744014610bb9578063c9a3f11b14610be757600080fd5b8063a87430ba116101bc578063baabd04611610180578063baabd04614610af5578063bd097e211461048a578063bdd1ca2714610b08578063bfa9f30414610b3d578063c63568c714610b5d57600080fd5b8063a87430ba14610953578063b116790014610a15578063b1cd42e114610a74578063b5ca79fc14610a94578063b83bad2414610ae057600080fd5b80638da5cb5b116102035780638da5cb5b146108c95780638e316327146108e7578063950d91e914610907578063a581ad451461091d578063a5ece9411461093357600080fd5b80637c8e4b4c146108495780637e56fde5146108695780637ebd1b30146108895780637ee28e3c146108a957600080fd5b80633ad10ef6116103455780635a3811b9116102cd5780636fe9d09a116102915780636fe9d09a146107d2578063715018a6146107e8578063716fc98e146107fd578063752a26281461081d57806376c7493e1461083357600080fd5b80635a3811b91461074a57806364c03a5e14610774578063674bda0d1461079457806368f58b03146107a95780636e9b7907146107bf57600080fd5b8063448883d711610314578063448883d7146106bf57806345a6a6e0146106d457806345f98c29146106f457806346f437811461071457806359eec8951461073457600080fd5b80633ad10ef614610647578063400678bc1461067f57806343ce7422146106945780634430ef55146106a957600080fd5b8063229824c4116103c85780632f4c07f8116103975780632f4c07f8146105b85780633578584f146105e5578063360498d1146105fb57806339f6df99146106115780633a6cac7f1461063157600080fd5b8063229824c41461053857806322edd77d1461055857806326fd84221461057857806329306fe51461059857600080fd5b80631209b1f61161040f5780631209b1f6146104c157806312798972146104d75780631848b8dc146104ec578063195a7339146105025780631aa0107a1461051857600080fd5b806301c234a81461044157806309f83b381461046a57806309fa8c301461048c57806312065fe0146104ac575b600080fd5b34801561044d57600080fd5b5061045760045481565b6040519081526020015b60405180910390f35b34801561047657600080fd5b5061048a610485366004612724565b610da8565b005b34801561049857600080fd5b5061048a6104a7366004612724565b610e30565b3480156104b857600080fd5b50610457610ea3565b3480156104cd57600080fd5b5061045760125481565b3480156104e357600080fd5b5061048a610eb8565b3480156104f857600080fd5b50610457600b5481565b34801561050e57600080fd5b5061045760025481565b34801561052457600080fd5b5061048a610533366004612724565b61102e565b34801561054457600080fd5b5061045761055336600461273d565b61106b565b34801561056457600080fd5b5061048a610573366004612785565b6110b8565b34801561058457600080fd5b506104576105933660046127a0565b611104565b3480156105a457600080fd5b5061048a6105b3366004612785565b61111c565b3480156105c457600080fd5b506105d86105d33660046127d4565b611168565b6040516104619190612807565b3480156105f157600080fd5b50610457601e5481565b34801561060757600080fd5b5061045760135481565b34801561061d57600080fd5b5061048a61062c366004612785565b61129e565b34801561063d57600080fd5b5061045760095481565b34801561065357600080fd5b50602154610667906001600160a01b031681565b6040516001600160a01b039091168152602001610461565b34801561068b57600080fd5b50601854610457565b3480156106a057600080fd5b50610457611322565b3480156106b557600080fd5b50610457600e5481565b3480156106cb57600080fd5b5061048a611349565b3480156106e057600080fd5b5061048a6106ef366004612724565b6113f3565b34801561070057600080fd5b5061048a61070f366004612724565b611445565b34801561072057600080fd5b5061048a61072f366004612724565b6114eb565b34801561074057600080fd5b5061045760085481565b34801561075657600080fd5b506011546107649060ff1681565b6040519015158152602001610461565b34801561078057600080fd5b5061045761078f366004612785565b61155f565b3480156107a057600080fd5b5061048a6115a2565b3480156107b557600080fd5b5061045760075481565b61048a6107cd366004612785565b6115f4565b3480156107de57600080fd5b5061045760105481565b3480156107f457600080fd5b5061048a6118eb565b34801561080957600080fd5b5061048a610818366004612724565b611960565b34801561082957600080fd5b50610457600d5481565b34801561083f57600080fd5b5061045760155481565b34801561085557600080fd5b5061048a610864366004612724565b6119b2565b34801561087557600080fd5b50610457610884366004612724565b611a04565b34801561089557600080fd5b506106676108a4366004612724565b611a12565b3480156108b557600080fd5b5061048a6108c4366004612724565b611a3c565b3480156108d557600080fd5b506000546001600160a01b0316610667565b3480156108f357600080fd5b50610457610902366004612724565b611ae7565b34801561091357600080fd5b50610457601f5481565b34801561092957600080fd5b5061045760175481565b34801561093f57600080fd5b50602054610667906001600160a01b031681565b34801561095f57600080fd5b506109c661096e366004612785565b60226020526000908152604090208054600182015460028301546003840154600485015460058601546006870154600788015460099098015496979596949593946001600160a01b0390931693919290919060ff1689565b60408051998a5260208a01989098529688019590955260608701939093526001600160a01b03909116608086015260a085015260c084015260e083015260ff1661010082015261012001610461565b348015610a2157600080fd5b50610a55610a30366004612854565b602360205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b039093168352602083019190915201610461565b348015610a8057600080fd5b5061048a610a8f366004612724565b611af8565b348015610aa057600080fd5b50610457610aaf36600461286f565b6001600160a01b038216600090815260226020908152604080832061ffff8516845260080190915290205492915050565b348015610aec57600080fd5b5061048a611b6d565b61048a610b03366004612785565b611bd6565b348015610b1457600080fd5b50610b28610b23366004612724565b611c54565b60408051928352602083019190915201610461565b348015610b4957600080fd5b5061048a610b58366004612724565b611cc1565b348015610b6957600080fd5b5061045760035481565b348015610b7f57600080fd5b50610764610b8e366004612785565b60196020526000908152604090205460ff1681565b348015610baf57600080fd5b50610457600c5481565b348015610bc557600080fd5b50601454610bd49061ffff1681565b60405161ffff9091168152602001610461565b348015610bf357600080fd5b5061048a610c02366004612724565b611d35565b348015610c1357600080fd5b50610457610c223660046127a0565b611d72565b348015610c3357600080fd5b5061048a610c42366004612785565b611d87565b348015610c5357600080fd5b50610457600a5481565b348015610c6957600080fd5b5061045760055481565b348015610c7f57600080fd5b5061048a610c8e366004612724565b611fb0565b348015610c9f57600080fd5b50610457610cae366004612785565b612033565b348015610cbf57600080fd5b5042610457565b348015610cd257600080fd5b5061048a610ce1366004612724565b6120af565b348015610cf257600080fd5b50600154610667906001600160a01b031681565b348015610d1257600080fd5b5061048a610d21366004612724565b6120ec565b348015610d3257600080fd5b5061048a610d41366004612724565b61213e565b348015610d5257600080fd5b5061045760065481565b348015610d6857600080fd5b5061048a610d77366004612785565b61217b565b348015610d8857600080fd5b50610457600f5481565b348015610d9e57600080fd5b5061045760165481565b6000546001600160a01b03163314610ddb5760405162461bcd60e51b8152600401610dd29061288b565b60405180910390fd5b600a8110158015610ded575060648111155b610e2b5760405162461bcd60e51b815260206004820152600f60248201526e4d696e2031252c204d61782031302560881b6044820152606401610dd2565b600355565b6000546001600160a01b03163314610e5a5760405162461bcd60e51b8152600401610dd29061288b565b6064811115610e9e5760405162461bcd60e51b815260206004820152601060248201526f617661696c61626c6520746f2031302560801b6044820152606401610dd2565b600755565b600060165447610eb391906128ca565b905090565b601d5460ff16610eda5760405162461bcd60e51b8152600401610dd2906128e1565b336000908152602260205260409020601f5460038201544291610efc91612918565b1115610f0757600080fd5b6000610f11611322565b90506000610f1e82611ae7565b9050600f5483600701541015610f6057610f59610f52600454610f4c600e548561225290919063ffffffff16565b90612287565b8290612294565b9050610f68565b600060078401555b60006002840155426003840155600954610f9090610f87908490612287565b601a54906122b0565b601a55600983015460ff1615610fc857610fbb600454610f4c6005548461225290919063ffffffff16565b610fc59082612918565b90505b80610fd1610ea3565b1015610fe257610fdf610ea3565b90505b6000610ff7610ff0836122cf565b8390612294565b604051909150339082156108fc029083906000818181858888f19350505050158015611027573d6000803e3d6000fd5b5050505050565b6000546001600160a01b031633146110585760405162461bcd60e51b8152600401610dd29061288b565b601e81111561106657600080fd5b600c55565b60006110b061107c601b5484612252565b6110ab601c546110a06110a5611094601b548a612252565b6110a0601c548c612252565b6122b0565b89612287565b612287565b949350505050565b6020546001600160a01b031633146110e25760405162461bcd60e51b8152600401610dd29061288b565b602080546001600160a01b0319166001600160a01b0392909216919091179055565b60006111138383601a5461106b565b90505b92915050565b6021546001600160a01b031633146111465760405162461bcd60e51b8152600401610dd29061288b565b602180546001600160a01b0319166001600160a01b0392909216919091179055565b60608161ffff168361ffff161061117e57600080fd5b601854600090611190906001906128ca565b9050600061119e8583612344565b905060006111ac8584612344565b905060006111ba8383612930565b6111c5906001612953565b61ffff1667ffffffffffffffff8111156111e1576111e1612979565b60405190808252806020026020018201604052801561120a578160200160208202803683370190505b509050825b8261ffff168161ffff16116112935760188161ffff16815481106112355761123561298f565b6000918252602090912001546001600160a01b0316826112558a84612930565b61ffff16815181106112695761126961298f565b6001600160a01b03909216602092830291909101909101528061128b816129a5565b91505061120f565b509695505050505050565b6000546001600160a01b031633146112c85760405162461bcd60e51b8152600401610dd2906129c7565b6001600160a01b0381166000908152602260205260409020600901546112f29060ff1660016129ef565b6001600160a01b03919091166000908152602260205260409020600901805460ff191660ff909216919091179055565b6000610eb361133033612033565b33600090815260226020526040902060020154906122b0565b6021546004546016546001600160a01b03909216916108fc9161137191610f4c906096612252565b6040518115909202916000818181858888f19350505050158015611399573d6000803e3d6000fd5b506020546004546016546001600160a01b03909216916108fc916113c391610f4c90610352612252565b6040518115909202916000818181858888f193505050501580156113eb573d6000803e3d6000fd5b506000601655565b6000546001600160a01b0316331461141d5760405162461bcd60e51b8152600401610dd2906129c7565b621275008111156114405760405162461bcd60e51b8152600401610dd290612a14565b601f55565b6000546001600160a01b0316331461146f5760405162461bcd60e51b8152600401610dd2906129c7565b662386f26fc10000811015801561148e5750670de0b6b3a76400008111155b6114e65760405162461bcd60e51b815260206004820152602360248201527f617661696c61626c65206265747765656e20302e30312045544820616e64203160448201526208aa8960eb1b6064820152608401610dd2565b600a55565b6000546001600160a01b031633146115155760405162461bcd60e51b8152600401610dd29061288b565b6101f481111561155a5760405162461bcd60e51b815260206004820152601060248201526f617661696c61626c6520746f2035302560801b6044820152606401610dd2565b600555565b60008061159061156e84612033565b6001600160a01b038516600090815260226020526040902060020154906122b0565b905061159b81611ae7565b9392505050565b6000546001600160a01b031633146115cc5760405162461bcd60e51b8152600401610dd2906129c7565b60115460ff1615156001146115e057600080fd5b6115e8612362565b6011805460ff19169055565b601d5460ff166116165760405162461bcd60e51b8152600401610dd2906128e1565b33600090815260226020526040902060115460ff161561175557426010546013546116419190612918565b101561164f5761164f612362565b60006116666012543461228790919063ffffffff16565b60145461ffff16600090815260088401602052604090205490915061168b90826122b0565b6014805461ffff90811660009081526008860160209081526040808320959095558354831682526023808252858320865160608101885260018083015482528185018a815233838b0190815260029485018054808501825590895287892094516003909102909401938455905183830155519190920180546001600160a01b0319166001600160a01b03909216919091179055945490931682529190915291909120015461173a908290612918565b60145461ffff16600090815260236020526040902060010155505b600a543410156117a75760405162461bcd60e51b815260206004820152601b60248201527f4d696e696e756d20696e766573746d656e74206e6f74206d65742e00000000006044820152606401610dd2565b600b5481546117b690346122b0565b11156118045760405162461bcd60e51b815260206004820152601a60248201527f4d6178206465706f736974206c696d697420726561636865642e0000000000006044820152606401610dd2565b6000611814346105934782612294565b825490915061182390346122b0565b8255600282015461183490826122b0565b60028301553360009081526019602052604090205460ff1615801561186257508154670de0b6b3a764000011155b80156118715750601754601854105b156118d357336000818152601960205260408120805460ff191660019081179091556018805491820181559091527fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e0180546001600160a01b03191690911790555b6118dc346122cf565b506118e683611d87565b505050565b336118fe6000546001600160a01b031690565b6001600160a01b0316146119545760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610dd2565b61195e60006126c5565b565b6000546001600160a01b0316331461198a5760405162461bcd60e51b8152600401610dd2906129c7565b621275008111156119ad5760405162461bcd60e51b8152600401610dd290612a14565b601055565b6000546001600160a01b031633146119dc5760405162461bcd60e51b8152600401610dd2906129c7565b621275008111156119ff5760405162461bcd60e51b8152600401610dd290612a14565b601e55565b600061111682610593610ea3565b60188181548110611a2257600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b03163314611a665760405162461bcd60e51b8152600401610dd2906129c7565b600a8110158015611a78575060648111155b611acf5760405162461bcd60e51b815260206004820152602260248201527f617661696c61626c65206265747765656e20313045544820616e6420313030456044820152610a8960f31b6064820152608401610dd2565b611ae181670de0b6b3a7640000612a4b565b600b5550565b600061111682601a54610553610ea3565b6000546001600160a01b03163314611b225760405162461bcd60e51b8152600401610dd29061288b565b6103e8811115611b685760405162461bcd60e51b8152602060048201526011602482015270617661696c61626c6520746f203130302560781b6044820152606401610dd2565b600655565b6000546001600160a01b03163314611b975760405162461bcd60e51b8152600401610dd2906129c7565b6011805460ff1916600190811790915542601355601454611bbe9161ffff90911690612953565b6014805461ffff191661ffff92909216919091179055565b601d5460ff16611c09576000546001600160a01b0316331415611c0c57601d805460ff19166001179055611c09816115f4565b50565b60405162461bcd60e51b815260206004820152601960248201527f436f6e7472616374206e6f742079657420737461727465642e000000000000006044820152606401610dd2565b6000806000611c798461059386611c7388611c6d610ea3565b906122b0565b90612294565b90506000611c926002548361228790919063ffffffff16565b9050620151806000611ca48284612252565b90506000611cb28289611d72565b93989397509295505050505050565b6000546001600160a01b03163314611ceb5760405162461bcd60e51b8152600401610dd29061288b565b610384811115611d305760405162461bcd60e51b815260206004820152601060248201526f617661696c61626c6520746f2039302560801b6044820152606401610dd2565b600e55565b6000546001600160a01b03163314611d5f5760405162461bcd60e51b8152600401610dd29061288b565b6032811115611d6d57600080fd5b600855565b600061111383601a5461055385611c6d610ea3565b601d5460ff16611da95760405162461bcd60e51b8152600401610dd2906128e1565b33600090815260226020526040902060048101546001600160a01b0316611e52576001600160a01b0382163314611df8576004810180546001600160a01b0319166001600160a01b0384161790555b60048101546001600160a01b03168015611e50576001600160a01b038116600090815260226020526040902060050154611e339060016122b0565b6001600160a01b0382166000908152602260205260409020600501555b505b6000611e5c611322565b9050600d54611e7883600301544261229490919063ffffffff16565b10158015611e8b5750600c548260070154105b15611ea6576007820154611ea09060016122b0565b60078301555b611ec9611ebe6002548361228790919063ffffffff16565b6001840154906122b0565b60018301556000600283015542600383015560048201546001600160a01b031615611f905760048083015490546003546001600160a01b0390921691600091611f1791610f4c908690612252565b6001600160a01b038316600090815260226020526040902060020154909150611f4090826122b0565b6001600160a01b0383166000908152602260205260409020600281019190915560060154611f6e90826122b0565b6001600160a01b03909216600090815260226020526040902060060191909155505b611fa8610f876008548361228790919063ffffffff16565b601a55505050565b6000546001600160a01b03163314611fda5760405162461bcd60e51b8152600401610dd29061288b565b622bf2008111158015611ff05750620afc808110155b61202e5760405162461bcd60e51b815260206004820152600f60248201526e4d696e2033252c204d61782031322560881b6044820152606401610dd2565b600255565b6001600160a01b038116600090815260226020526040812060030154819061205c904290612294565b9050600061206c82601e54612715565b9050600061207c60025483612715565b6001600160a01b0386166000908152602260205260409020600101549091506120a6908290612252565b95945050505050565b6000546001600160a01b031633146120d95760405162461bcd60e51b8152600401610dd29061288b565b60328111156120e757600080fd5b600955565b6000546001600160a01b031633146121165760405162461bcd60e51b8152600401610dd29061288b565b621275008111156121395760405162461bcd60e51b8152600401610dd290612a14565b600d55565b6000546001600160a01b031633146121685760405162461bcd60e51b8152600401610dd29061288b565b600c81111561217657600080fd5b600f55565b3361218e6000546001600160a01b031690565b6001600160a01b0316146121e45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610dd2565b6001600160a01b0381166122495760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610dd2565b611c09816126c5565b60008261226157506000611116565b600061226d8385612a4b565b90508261227a8583612a6a565b1461111357611113612a8c565b6000806110b08385612a6a565b6000828211156122a6576122a6612a8c565b61111382846128ca565b6000806122bd8385612918565b90508381101561111357611113612a8c565b6000806122ed600454610f4c6007548661225290919063ffffffff16565b33600090815260226020526040902060090154909150600160ff909116111561232e5761232b600454610f4c6006548461225290919063ffffffff16565b90505b60165461233b90826122b0565b60165592915050565b60008161ffff168361ffff161061235b5781611113565b5090919050565b6001805460145461ffff1660009081526023602052604090819020909201549151632cdc85e960e21b815260048101929092526001600160a01b03169063b37217a49060240160206040518083038186803b1580156123c057600080fd5b505afa1580156123d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123f89190612aa2565b60155560145461ffff16600090815260236020908152604080832060020180548251818502810185019093528083529192909190849084015b82821015612486576000848152602090819020604080516060810182526003860290920180548352600180820154848601526002909101546001600160a01b0316918301919091529083529092019101612431565b505050509050600080600090506000600184516124a391906128ca565b90505b8082116125c15760026124b983836128ca565b6124c39190612a6a565b6124cd9083612918565b92508383815181106124e1576124e161298f565b60200260200101516000015160155410158015612544575083838151811061250b5761250b61298f565b6020026020010151602001518484815181106125295761252961298f565b60200260200101516000015161253f9190612918565b601554105b1561254e576125c1565b8383815181106125605761256061298f565b6020026020010151600001516015541015612587576125806001846128ca565b90506124a6565b8383815181106125995761259961298f565b60200260200101516000015160155411156125bc576125b9836001612918565b91505b6124a6565b8383815181106125d3576125d361298f565b60209081029190910181015160409081015160145461ffff166000908152602390935290822080546001600160a01b0319166001600160a01b039092169190911790558451602290829087908790811061262f5761262f61298f565b6020908102919091018101516040908101516001600160a01b031683529082019290925201600020600981015490915061266d9060ff1660016129ef565b60098201805460ff191660ff929092169190911790556014546126959061ffff166001612953565b6014805461ffff191661ffff929092169190911790556010546013546126bb9190612918565b6013555050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600081831061235b5781611113565b60006020828403121561273657600080fd5b5035919050565b60008060006060848603121561275257600080fd5b505081359360208301359350604090920135919050565b80356001600160a01b038116811461278057600080fd5b919050565b60006020828403121561279757600080fd5b61111382612769565b600080604083850312156127b357600080fd5b50508035926020909101359150565b803561ffff8116811461278057600080fd5b600080604083850312156127e757600080fd5b6127f0836127c2565b91506127fe602084016127c2565b90509250929050565b6020808252825182820181905260009190848201906040850190845b818110156128485783516001600160a01b031683529284019291840191600101612823565b50909695505050505050565b60006020828403121561286657600080fd5b611113826127c2565b6000806040838503121561288257600080fd5b6127f083612769565b6020808252600f908201526e20b236b4b7103ab9b29037b7363c9760891b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000828210156128dc576128dc6128b4565b500390565b60208082526019908201527f436f6e7472616374206e6f742079657420537461727465642e00000000000000604082015260600190565b6000821982111561292b5761292b6128b4565b500190565b600061ffff8381169083168181101561294b5761294b6128b4565b039392505050565b600061ffff808316818516808303821115612970576129706128b4565b01949350505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600061ffff808316818114156129bd576129bd6128b4565b6001019392505050565b6020808252600e908201526d41646d696e20757365206f6e6c7960901b604082015260600190565b600060ff821660ff84168060ff03821115612a0c57612a0c6128b4565b019392505050565b6020808252601f908201527f617661696c61626c65206265747765656e203020616e64203134206461797300604082015260600190565b6000816000190483118215151615612a6557612a656128b4565b500290565b600082612a8757634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052600160045260246000fd5b600060208284031215612ab457600080fd5b505191905056fea2646970667358221220acade1b6d3bf5ffdcd34fa2b50e672bcfdd2f2771036c651068c3312178e3d9664736f6c63430008090033

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

000000000000000000000000f611314d2d6ef059d002e188650dcfc2197045ee0000000000000000000000005c45870100a00bfc10aa63f66c31287350e4fa2b00000000000000000000000017d71fb405a47669239f436598645405b8bda632

-----Decoded View---------------
Arg [0] : _marketingAddress (address): 0xF611314d2d6eF059D002e188650dcFC2197045ee
Arg [1] : _devAddress (address): 0x5c45870100A00Bfc10AA63F66C31287350E4FA2b
Arg [2] : _randomGenerator (address): 0x17d71Fb405a47669239f436598645405b8Bda632

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000f611314d2d6ef059d002e188650dcfc2197045ee
Arg [1] : 0000000000000000000000005c45870100a00bfc10aa63f66c31287350e4fa2b
Arg [2] : 00000000000000000000000017d71fb405a47669239f436598645405b8bda632


Deployed Bytecode Sourcemap

4053:18161:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4289:38;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;4289:38:0;;;;;;;;16370:215;;;;;;;;;;-1:-1:-1;16370:215:0;;;;;:::i;:::-;;:::i;:::-;;17007:183;;;;;;;;;;-1:-1:-1;17007:183:0;;;;;:::i;:::-;;:::i;12250:108::-;;;;;;;;;;;;;:::i;4969:33::-;;;;;;;;;;;;;;;;8187:1378;;;;;;;;;;;;;:::i;4606:47::-;;;;;;;;;;;;;;;;4202:45;;;;;;;;;;;;;;;;17835:210;;;;;;;;;;-1:-1:-1;17835:210:0;;;;;:::i;:::-;;:::i;12734:700::-;;;;;;;;;;-1:-1:-1;12734:700:0;;;;;:::i;:::-;;:::i;15589:184::-;;;;;;;;;;-1:-1:-1;15589:184:0;;;;;:::i;:::-;;:::i;13590:164::-;;;;;;;;;;-1:-1:-1;13590:164:0;;;;;:::i;:::-;;:::i;15781:166::-;;;;;;;;;;-1:-1:-1;15781:166:0;;;;;:::i;:::-;;:::i;20176:466::-;;;;;;;;;;-1:-1:-1;20176:466:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;5424:35::-;;;;;;;;;;;;;;;;5021:33;;;;;;;;;;;;;;;;15180:173;;;;;;;;;;-1:-1:-1;15180:173:0;;;;;:::i;:::-;;:::i;4489:43::-;;;;;;;;;;;;;;;;5611:33;;;;;;;;;;-1:-1:-1;5611:33:0;;;;-1:-1:-1;;;;;5611:33:0;;;;;;-1:-1:-1;;;;;2592:32:1;;;2574:51;;2562:2;2547:18;5611:33:0;2412:219:1;20650:107:0;;;;;;;;;;-1:-1:-1;20733:9:0;:16;20650:107;;14605:143;;;;;;;;;;;;;:::i;4770:41::-;;;;;;;;;;;;;;;;12016:226;;;;;;;;;;;;;:::i;18762:231::-;;;;;;;;;;-1:-1:-1;18762:231:0;;;;;:::i;:::-;;:::i;18285:242::-;;;;;;;;;;-1:-1:-1;18285:242:0;;;;;:::i;:::-;;:::i;17198:199::-;;;;;;;;;;-1:-1:-1;17198:199:0;;;;;:::i;:::-;;:::i;4444:38::-;;;;;;;;;;;;;;;;4928:34;;;;;;;;;;-1:-1:-1;4928:34:0;;;;;;;;;;;2801:14:1;;2794:22;2776:41;;2764:2;2749:18;4928:34:0;2636:187:1;12469:211:0;;;;;;;;;;-1:-1:-1;12469:211:0;;;;;:::i;:::-;;:::i;19727:204::-;;;;;;;;;;;;;:::i;4413:24::-;;;;;;;;;;;;;;;;9612:1551;;;;;;:::i;:::-;;:::i;4881:40::-;;;;;;;;;;;;;;;;2421:103;;;;;;;;;;;;;:::i;19939:229::-;;;;;;;;;;-1:-1:-1;19939:229:0;;;;;:::i;:::-;;:::i;4724:37::-;;;;;;;;;;;;;;;;5095:26;;;;;;;;;;;;;;;;18535:219;;;;;;;;;;-1:-1:-1;18535:219:0;;;;;:::i;:::-;;:::i;13762:132::-;;;;;;;;;;-1:-1:-1;13762:132:0;;;;;:::i;:::-;;:::i;5220:26::-;;;;;;;;;;-1:-1:-1;5220:26:0;;;;;:::i;:::-;;:::i;19001:259::-;;;;;;;;;;-1:-1:-1;19001:259:0;;;;;:::i;:::-;;:::i;1772:87::-;;;;;;;;;;-1:-1:-1;1818:7:0;1845:6;-1:-1:-1;;;;;1845:6:0;1772:87;;13442:140;;;;;;;;;;-1:-1:-1;13442:140:0;;;;;:::i;:::-;;:::i;5463:41::-;;;;;;;;;;;;;;;;5162:37;;;;;;;;;;;;;;;;5565:39;;;;;;;;;;-1:-1:-1;5565:39:0;;;;-1:-1:-1;;;;;5565:39:0;;;6002:37;;;;;;;;;;-1:-1:-1;6002:37:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6002:37:0;;;;;;;;;;;;;;;;;3403:25:1;;;3459:2;3444:18;;3437:34;;;;3487:18;;;3480:34;;;;3545:2;3530:18;;3523:34;;;;-1:-1:-1;;;;;3594:32:1;;;3588:3;3573:19;;3566:61;3614:3;3643:19;;3636:35;3702:3;3687:19;;3680:35;3746:3;3731:19;;3724:35;3808:4;3796:17;3790:3;3775:19;;3768:46;3390:3;3375:19;6002:37:0;3036:784:1;6412:49:0;;;;;;;;;;-1:-1:-1;6412:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6412:49:0;;;;;;;;;;-1:-1:-1;;;;;4206:32:1;;;4188:51;;4270:2;4255:18;;4248:34;;;;4161:18;6412:49:0;4014:274:1;17405:203:0;;;;;;;;;;-1:-1:-1;17405:203:0;;;;;:::i;:::-;;:::i;22055:156::-;;;;;;;;;;-1:-1:-1;22055:156:0;;;;;:::i;:::-;-1:-1:-1;;;;;22166:15:0;;22139:7;22166:15;;;:5;:15;;;;;;;;:37;;;;;:27;;:37;;;;;;22055:156;;;;;19496:223;;;;;;;;;;;;;:::i;11171:252::-;;;;;;:::i;:::-;;:::i;13975:440::-;;;;;;;;;;-1:-1:-1;13975:440:0;;;;;:::i;:::-;;:::i;:::-;;;;4730:25:1;;;4786:2;4771:18;;4764:34;;;;4703:18;13975:440:0;4556:248:1;17616:211:0;;;;;;;;;;-1:-1:-1;17616:211:0;;;;;:::i;:::-;;:::i;4254:28::-;;;;;;;;;;;;;;;;5253:43;;;;;;;;;;-1:-1:-1;5253:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4673:44;;;;;;;;;;;;;;;;5061:27;;;;;;;;;;-1:-1:-1;5061:27:0;;;;;;;;;;;4983:6:1;4971:19;;;4953:38;;4941:2;4926:18;5061:27:0;4809:188:1;16593:194:0;;;;;;;;;;-1:-1:-1;16593:194:0;;;;;:::i;:::-;;:::i;14423:174::-;;;;;;;;;;-1:-1:-1;14423:174:0;;;;;:::i;:::-;;:::i;6802:1377::-;;;;;;;;;;-1:-1:-1;6802:1377:0;;;;;:::i;:::-;;:::i;4541:42::-;;;;;;;;;;;;;;;;4334:32;;;;;;;;;;;;;;;;16123:239;;;;;;;;;;-1:-1:-1;16123:239:0;;;;;:::i;:::-;;:::i;14756:416::-;;;;;;;;;;-1:-1:-1;14756:416:0;;;;;:::i;:::-;;:::i;12366:95::-;;;;;;;;;;-1:-1:-1;12438:15:0;12366:95;;16795:204;;;;;;;;;;-1:-1:-1;16795:204:0;;;;;:::i;:::-;;:::i;4127:39::-;;;;;;;;;;-1:-1:-1;4127:39:0;;;;-1:-1:-1;;;;;4127:39:0;;;18053:224;;;;;;;;;;-1:-1:-1;18053:224:0;;;;;:::i;:::-;;:::i;19272:216::-;;;;;;;;;;-1:-1:-1;19272:216:0;;;;;:::i;:::-;;:::i;4373:33::-;;;;;;;;;;;;;;;;2679:201;;;;;;;;;;-1:-1:-1;2679:201:0;;;;;:::i;:::-;;:::i;4818:49::-;;;;;;;;;;;;;;;;5130:23;;;;;;;;;;;;;;;;16370:215;1818:7;1845:6;-1:-1:-1;;;;;1845:6:0;16443:10;:21;16435:49;;;;-1:-1:-1;;;16435:49:0;;;;;;;:::i;:::-;;;;;;;;;16512:2;16503:5;:11;;:27;;;;;16527:3;16518:5;:12;;16503:27;16495:55;;;;-1:-1:-1;;;16495:55:0;;5780:2:1;16495:55:0;;;5762:21:1;5819:2;5799:18;;;5792:30;-1:-1:-1;;;5838:18:1;;;5831:45;5893:18;;16495:55:0;5578:339:1;16495:55:0;16561:8;:16;16370:215::o;17007:183::-;1818:7;1845:6;-1:-1:-1;;;;;1845:6:0;17067:10;:21;17059:49;;;;-1:-1:-1;;;17059:49:0;;;;;;;:::i;:::-;17136:3;17127:5;:12;;17119:41;;;;-1:-1:-1;;;17119:41:0;;6124:2:1;17119:41:0;;;6106:21:1;6163:2;6143:18;;;6136:30;-1:-1:-1;;;6182:18:1;;;6175:46;6238:18;;17119:41:0;5922:340:1;17119:41:0;17171:3;:11;17007:183::o;12250:108::-;12292:7;12342:8;;12318:21;:32;;;;:::i;:::-;12311:39;;12250:108;:::o;8187:1378::-;8237:15;;;;8229:53;;;;-1:-1:-1;;;8229:53:0;;;;;;;:::i;:::-;8321:10;8295:17;8315;;;:5;:17;;;;;8368;;8351:14;;;;8389:15;;8351:34;;;:::i;:::-;:53;;8343:62;;;;;;8418:15;8436:11;:9;:11::i;:::-;8418:29;;8458:16;8477:25;8494:7;8477:16;:25::i;:::-;8458:44;;8629:30;;8603:4;:23;;;:56;8599:435;;;8796:70;8809:56;8848:16;;8809:34;8822:20;;8809:8;:12;;:34;;;;:::i;:::-;:38;;:56::i;:::-;8796:8;;:12;:70::i;:::-;8785:81;;8599:435;;;9021:1;8995:23;;;:27;8599:435;9073:1;9054:16;;;:20;9104:15;9087:14;;;:32;9170:24;;9143:53;;9158:37;;:7;;:11;:37::i;:::-;9143:10;;;:14;:53::i;:::-;9130:10;:66;9221:10;;;;;;:14;9217:116;;9274:47;9304:16;;9274:25;9287:11;;9274:8;:12;;:25;;;;:::i;:47::-;9263:58;;:8;:58;:::i;:::-;9252:69;;9217:116;9363:8;9348:12;:10;:12::i;:::-;:23;9345:78;;;9399:12;:10;:12::i;:::-;9388:23;;9345:78;9435:18;9456:31;9469:17;9477:8;9469:7;:17::i;:::-;9456:8;;:12;:31::i;:::-;9508:49;;9435:52;;-1:-1:-1;9524:10:0;;9508:49;;;;;9435:52;;9508:49;;;;9435:52;9524:10;9508:49;;;;;;;;;;;;;;;;;;;;;8218:1347;;;;8187:1378::o;17835:210::-;1818:7;1845:6;-1:-1:-1;;;;;1845:6:0;17922:10;:21;17914:49;;;;-1:-1:-1;;;17914:49:0;;;;;;;:::i;:::-;17991:2;17982:5;:11;;17974:20;;;;;;18005:24;:32;17835:210::o;12734:700::-;12813:7;13082:344;13113:21;13126:3;;13131:2;13113:12;:21::i;:::-;13158:267;13171:4;;13203:221;13246:131;13293:21;13306:3;;13311:2;13293:12;:21::i;:::-;13354:22;13367:4;;13373:2;13354:12;:22::i;:::-;13246:12;:131::i;:::-;13421:2;13203:12;:221::i;13158:267::-;13082:12;:344::i;:::-;13075:351;12734:700;-1:-1:-1;;;;12734:700:0:o;15589:184::-;15682:16;;-1:-1:-1;;;;;15682:16:0;15668:10;:30;15660:58;;;;-1:-1:-1;;;15660:58:0;;;;;;;:::i;:::-;15729:16;:36;;-1:-1:-1;;;;;;15729:36:0;-1:-1:-1;;;;;15729:36:0;;;;;;;;;;15589:184::o;13590:164::-;13672:7;13698:48;13713:3;13718:15;13735:10;;13698:14;:48::i;:::-;13691:55;;13590:164;;;;;:::o;15781:166::-;15868:10;;-1:-1:-1;;;;;15868:10:0;15854;:24;15846:52;;;;-1:-1:-1;;;15846:52:0;;;;;;;:::i;:::-;15909:10;:30;;-1:-1:-1;;;;;;15909:30:0;-1:-1:-1;;;;;15909:30:0;;;;;;;;;;15781:166::o;20176:466::-;20247:17;20293:4;20284:13;;:6;:13;;;20276:22;;;;;;20329:9;:16;20309:10;;20329:18;;20346:1;;20329:18;:::i;:::-;20309:39;;20359:12;20374:18;20380:6;20388:3;20374:5;:18::i;:::-;20359:33;;20403:10;20416:16;20422:4;20428:3;20416:5;:16::i;:::-;20403:29;-1:-1:-1;20445:24:0;20486:11;20492:5;20403:29;20486:11;:::i;:::-;:15;;20500:1;20486:15;:::i;:::-;20472:30;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20472:30:0;-1:-1:-1;20445:57:0;-1:-1:-1;20529:5:0;20513:98;20541:3;20536:8;;:1;:8;;;20513:98;;20586:9;20596:1;20586:12;;;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;20586:12:0;20566:6;20573:8;20575:6;20573:1;:8;:::i;:::-;20566:16;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;20566:33:0;;;:16;;;;;;;;;;;:33;20546:3;;;;:::i;:::-;;;;20513:98;;;-1:-1:-1;20628:6:0;20176:466;-1:-1:-1;;;;;;20176:466:0:o;15180:173::-;1818:7;1845:6;-1:-1:-1;;;;;1845:6:0;15245:10;:21;15237:48;;;;-1:-1:-1;;;15237:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15320:15:0;;;;;;:5;:15;;;;;:21;;;:25;;:21;;;:25;:::i;:::-;-1:-1:-1;;;;;15296:15:0;;;;;;;;:5;:15;;;;;:21;;:49;;-1:-1:-1;;15296:49:0;;;;;;;;;;;15180:173::o;14605:143::-;14646:7;14672:68;14706:33;14728:10;14706:21;:33::i;:::-;14678:10;14672:17;;;;:5;:17;;;;;:29;;;;:33;:68::i;12016:226::-;12064:10;;12107:16;;12085:8;;-1:-1:-1;;;;;12064:10:0;;;;12056:69;;12085:39;;:17;;12098:3;12085:12;:17::i;:39::-;12056:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12144:16:0;;12193;;12171:8;;-1:-1:-1;;;;;12144:16:0;;;;12136:75;;12171:39;;:17;;12184:3;12171:12;:17::i;:39::-;12136:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12233:1:0;12222:8;:12;12016:226::o;18762:231::-;1818:7;1845:6;-1:-1:-1;;;;;1845:6:0;18836:10;:21;18828:48;;;;-1:-1:-1;;;18828:48:0;;;;;;;:::i;:::-;18904:9;18895:5;:18;;18887:62;;;;-1:-1:-1;;;18887:62:0;;;;;;;:::i;:::-;18960:17;:25;18762:231::o;18285:242::-;1818:7;1845:6;-1:-1:-1;;;;;1845:6:0;18352:10;:21;18344:48;;;;-1:-1:-1;;;18344:48:0;;;;;;;:::i;:::-;18420:4;18411:5;:13;;:33;;;;;18437:7;18428:5;:16;;18411:33;18403:81;;;;-1:-1:-1;;;18403:81:0;;9047:2:1;18403:81:0;;;9029:21:1;9086:2;9066:18;;;9059:30;9125:34;9105:18;;;9098:62;-1:-1:-1;;;9176:18:1;;;9169:33;9219:19;;18403:81:0;8845:399:1;18403:81:0;18495:16;:24;18285:242::o;17198:199::-;1818:7;1845:6;-1:-1:-1;;;;;1845:6:0;17266:10;:21;17258:49;;;;-1:-1:-1;;;17258:49:0;;;;;;;:::i;:::-;17335:3;17326:5;:12;;17318:41;;;;-1:-1:-1;;;17318:41:0;;9451:2:1;17318:41:0;;;9433:21:1;9490:2;9470:18;;;9463:30;-1:-1:-1;;;9509:18:1;;;9502:46;9565:18;;17318:41:0;9249:340:1;17318:41:0;17370:11;:19;17198:199::o;12469:211::-;12533:7;12553:16;12572:56;12600:27;12622:4;12600:21;:27::i;:::-;-1:-1:-1;;;;;12572:11:0;;;;;;:5;:11;;;;;:23;;;;:27;:56::i;:::-;12553:75;;12646:26;12663:8;12646:16;:26::i;:::-;12639:33;12469:211;-1:-1:-1;;;12469:211:0:o;19727:204::-;1818:7;1845:6;-1:-1:-1;;;;;1845:6:0;19780:10;:21;19772:48;;;;-1:-1:-1;;;19772:48:0;;;;;;;:::i;:::-;19839:14;;;;:22;;:14;:22;19831:31;;;;;;19873:17;:15;:17::i;:::-;19901:14;:22;;-1:-1:-1;;19901:22:0;;;19727:204::o;9612:1551::-;9677:15;;;;9669:53;;;;-1:-1:-1;;;9669:53:0;;;;;;;:::i;:::-;9761:10;9735:17;9755;;;:5;:17;;;;;9787:14;;;;9783:674;;;9864:15;9845:16;;9824:18;;:37;;;;:::i;:::-;:55;9820:113;;;9900:17;:15;:17::i;:::-;9949;9969:26;9983:11;;9969:9;:13;;:26;;;;:::i;:::-;10061:13;;;;10044:31;;;;:16;;;:31;;;;;;9949:46;;-1:-1:-1;10044:46:0;;9949;10044:35;:46::i;:::-;10027:13;;;;;;;10010:31;;;;:16;;;:31;;;;;;;;:80;;;;10119:13;;;;10107:26;;:11;:26;;;;;;10152:178;;;;;;;10027:13;10198:41;;;;10152:178;;;;;;;;10304:10;10152:178;;;;;;10107:39;;;;:224;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10107:224:0;-1:-1:-1;;;;;10107:224:0;;;;;;;;;10404:13;;;;;10392:26;;;;;;;;;;:41;;:53;;10152:178;;10392:53;:::i;:::-;10360:13;;;;10348:26;;;;:11;:26;;;;;10360:13;10348:41;:97;-1:-1:-1;9783:674:0;10498:16;;10485:9;:29;;10477:69;;;;-1:-1:-1;;;10477:69:0;;9796:2:1;10477:69:0;;;9778:21:1;9835:2;9815:18;;;9808:30;9874:29;9854:18;;;9847:57;9921:18;;10477:69:0;9594:351:1;10477:69:0;10603:20;;10565:19;;:34;;10589:9;10565:23;:34::i;:::-;:58;;10557:97;;;;-1:-1:-1;;;10557:97:0;;10152:2:1;10557:97:0;;;10134:21:1;10191:2;10171:18;;;10164:30;10230:28;10210:18;;;10203:56;10276:18;;10557:97:0;9950:350:1;10557:97:0;10667:18;10688:64;10704:9;10715:36;:21;10704:9;10715:25;:36::i;10688:64::-;10785:19;;10667:85;;-1:-1:-1;10785:34:0;;10809:9;10785:23;:34::i;:::-;10763:56;;10849:16;;;;:32;;10870:10;10849:20;:32::i;:::-;10830:16;;;:51;10911:10;10899:23;;;;:11;:23;;;;;;;;10898:24;:58;;;;-1:-1:-1;10926:19:0;;10949:7;-1:-1:-1;10926:30:0;10898:58;:96;;;;-1:-1:-1;10979:15:0;;10960:9;:16;:34;10898:96;10894:200;;;11023:10;11011:23;;;;:11;:23;;;;;:30;;-1:-1:-1;;11011:30:0;11037:4;11011:30;;;;;;11056:9;:26;;;;;;;;;;;;;;-1:-1:-1;;;;;;11056:26:0;;;;;;10894:200;11106:18;11114:9;11106:7;:18::i;:::-;;11135:20;11151:3;11135:15;:20::i;:::-;9658:1505;;9612:1551;:::o;2421:103::-;2003:10;1992:7;1818;1845:6;-1:-1:-1;;;;;1845:6:0;;1772:87;1992:7;-1:-1:-1;;;;;1992:21:0;;1984:66;;;;-1:-1:-1;;;1984:66:0;;10507:2:1;1984:66:0;;;10489:21:1;;;10526:18;;;10519:30;10585:34;10565:18;;;10558:62;10637:18;;1984:66:0;10305:356:1;1984:66:0;2486:30:::1;2513:1;2486:18;:30::i;:::-;2421:103::o:0;19939:229::-;1818:7;1845:6;-1:-1:-1;;;;;1845:6:0;20012:10;:21;20004:48;;;;-1:-1:-1;;;20004:48:0;;;;;;;:::i;:::-;20080:9;20071:5;:18;;20063:62;;;;-1:-1:-1;;;20063:62:0;;;;;;;:::i;:::-;20136:16;:24;19939:229::o;18535:219::-;1818:7;1845:6;-1:-1:-1;;;;;1845:6:0;18603:10;:21;18595:48;;;;-1:-1:-1;;;18595:48:0;;;;;;;:::i;:::-;18671:9;18662:5;:18;;18654:62;;;;-1:-1:-1;;;18654:62:0;;;;;;;:::i;:::-;18727:11;:19;18535:219::o;13762:132::-;13826:7;13852:34;13868:3;13873:12;:10;:12::i;5220:26::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5220:26:0;;-1:-1:-1;5220:26:0;:::o;19001:259::-;1818:7;1845:6;-1:-1:-1;;;;;1845:6:0;19078:10;:21;19070:48;;;;-1:-1:-1;;;19070:48:0;;;;;;;:::i;:::-;19146:2;19137:5;:11;;:27;;;;;19161:3;19152:5;:12;;19137:27;19129:74;;;;-1:-1:-1;;;19129:74:0;;10868:2:1;19129:74:0;;;10850:21:1;10907:2;10887:18;;;10880:30;10946:34;10926:18;;;10919:62;-1:-1:-1;;;10997:18:1;;;10990:32;11039:19;;19129:74:0;10666:398:1;19129:74:0;19237:15;:5;19245:7;19237:15;:::i;:::-;19214:20;:38;-1:-1:-1;19001:259:0:o;13442:140::-;13502:7;13528:46;13543:4;13549:10;;13561:12;:10;:12::i;17405:203::-;1818:7;1845:6;-1:-1:-1;;;;;1845:6:0;17474:10;:21;17466:49;;;;-1:-1:-1;;;17466:49:0;;;;;;;:::i;:::-;17543:4;17534:5;:13;;17526:43;;;;-1:-1:-1;;;17526:43:0;;11444:2:1;17526:43:0;;;11426:21:1;11483:2;11463:18;;;11456:30;-1:-1:-1;;;11502:18:1;;;11495:47;11559:18;;17526:43:0;11242:341:1;17526:43:0;17580:12;:20;17405:203::o;19496:223::-;1818:7;1845:6;-1:-1:-1;;;;;1845:6:0;19548:10;:21;19540:48;;;;-1:-1:-1;;;19540:48:0;;;;;;;:::i;:::-;19599:14;:21;;-1:-1:-1;;19599:21:0;19616:4;19599:21;;;;;;19652:15;19631:18;:36;19694:13;;:17;;:13;;;;;:17;:::i;:::-;19678:13;:33;;-1:-1:-1;;19678:33:0;;;;;;;;;;;;19496:223::o;11171:252::-;11238:15;;;;11233:183;;1818:7;1845:6;-1:-1:-1;;;;;1845:6:0;11268:10;:21;11264:143;;;11301:15;:22;;-1:-1:-1;;11301:22:0;11319:4;11301:22;;;11342:14;11351:4;11342:8;:14::i;:::-;11171:252;:::o;11264:143::-;11372:35;;-1:-1:-1;;;11372:35:0;;11790:2:1;11372:35:0;;;11772:21:1;11829:2;11809:18;;;11802:30;11868:27;11848:18;;;11841:55;11913:18;;11372:35:0;11588:349:1;13975:440:0;14033:7;14041;14061:18;14082:62;14098:6;14107:36;14136:6;14107:24;14124:6;14107:12;:10;:12::i;:::-;:16;;:24::i;:::-;:28;;:36::i;14082:62::-;14061:83;;14155:14;14172:36;14187:20;;14172:10;:14;;:36;;;;:::i;:::-;14155:53;-1:-1:-1;14233:6:0;14219:11;14271:15;14233:6;14155:53;14271:7;:15::i;:::-;14250:36;;14297:22;14322:44;14347:10;14359:6;14322:24;:44::i;:::-;14384:6;;14297:69;;-1:-1:-1;13975:440:0;;-1:-1:-1;;;;;;13975:440:0:o;17616:211::-;1818:7;1845:6;-1:-1:-1;;;;;1845:6:0;17687:10;:21;17679:49;;;;-1:-1:-1;;;17679:49:0;;;;;;;:::i;:::-;17756:3;17747:5;:12;;17739:41;;;;-1:-1:-1;;;17739:41:0;;12144:2:1;17739:41:0;;;12126:21:1;12183:2;12163:18;;;12156:30;-1:-1:-1;;;12202:18:1;;;12195:46;12258:18;;17739:41:0;11942:340:1;17739:41:0;17791:20;:28;17616:211::o;16593:194::-;1818:7;1845:6;-1:-1:-1;;;;;1845:6:0;16669:10;:21;16661:49;;;;-1:-1:-1;;;16661:49:0;;;;;;;:::i;:::-;16738:2;16729:5;:11;;16721:20;;;;;;16752:19;:27;16593:194::o;14423:174::-;14506:7;14532:57;14547:4;14552:10;;14564:24;14581:6;14564:12;:10;:12::i;6802:1377::-;6866:15;;;;6858:53;;;;-1:-1:-1;;;6858:53:0;;;;;;;:::i;:::-;6950:10;6924:17;6944;;;:5;:17;;;;;6976:13;;;;-1:-1:-1;;;;;6976:13:0;6972:328;;-1:-1:-1;;;;;7024:17:0;;7031:10;7024:17;7020:77;;7062:13;;;:19;;-1:-1:-1;;;;;;7062:19:0;-1:-1:-1;;;;;7062:19:0;;;;;7020:77;7131:13;;;;-1:-1:-1;;;;;7131:13:0;7163:21;;7159:130;;-1:-1:-1;;;;;7237:14:0;;;;;;:5;:14;;;;;:29;;;:36;;7271:1;7237:33;:36::i;:::-;-1:-1:-1;;;;;7205:14:0;;;;;;:5;:14;;;;;:29;;:68;7159:130;7005:295;6972:328;7328:16;7347:11;:9;:11::i;:::-;7328:30;;7411:13;;7372:35;7392:4;:14;;;7372:15;:19;;:35;;;;:::i;:::-;:52;;:106;;;;;7454:24;;7428:4;:23;;;:50;7372:106;7369:194;;;7521:23;;;;:30;;7549:1;7521:27;:30::i;:::-;7495:23;;;:56;7369:194;7597:51;7613:34;7626:20;;7613:8;:12;;:34;;;;:::i;:::-;7597:11;;;;;:15;:51::i;:::-;7583:11;;;:65;7678:1;7659:16;;;:20;7707:15;7690:14;;;:32;7739:13;;;;-1:-1:-1;;;;;7739:13:0;:27;7735:362;;7800:13;;;;;7876:16;;7862:8;;-1:-1:-1;;;;;7800:13:0;;;;7783:14;;7849:44;;:22;;:8;;:12;:22::i;:44::-;-1:-1:-1;;;;;7949:13:0;;;;;;:5;:13;;;;;:25;;;7828:65;;-1:-1:-1;7936:51:0;;7828:65;7936:12;:51::i;:::-;-1:-1:-1;;;;;7908:13:0;;;;;;:5;:13;;;;;:25;;;:79;;;;8037:32;;;:48;;8074:10;8037:36;:48::i;:::-;-1:-1:-1;;;;;8002:13:0;;;;;;;:5;:13;;;;;:32;;:83;;;;-1:-1:-1;7735:362:0;8122:49;8137:33;8150:19;;8137:8;:12;;:33;;;;:::i;8122:49::-;8109:10;:62;-1:-1:-1;;;6802:1377:0:o;16123:239::-;1818:7;1845:6;-1:-1:-1;;;;;1845:6:0;16200:10;:21;16192:49;;;;-1:-1:-1;;;16192:49:0;;;;;;;:::i;:::-;16269:7;16260:5;:16;;:35;;;;;16289:6;16280:5;:15;;16260:35;16252:63;;;;-1:-1:-1;;;16252:63:0;;12489:2:1;16252:63:0;;;12471:21:1;12528:2;12508:18;;;12501:30;-1:-1:-1;;;12547:18:1;;;12540:45;12602:18;;16252:63:0;12287:339:1;16252:63:0;16326:20;:28;16123:239::o;14756:416::-;-1:-1:-1;;;;;14891:10:0;;14820:7;14891:10;;;:5;:10;;;;;:20;;;14820:7;;14871:41;;:15;;:19;:41::i;:::-;14839:73;;14972:18;14993:42;15000:21;15023:11;;14993:6;:42::i;:::-;14972:63;;15046:21;15070:40;15077:20;;15099:10;15070:6;:40::i;:::-;-1:-1:-1;;;;;15146:10:0;;;;;;:5;:10;;;;;:17;;;15046:64;;-1:-1:-1;15128:36:0;;15046:64;;15128:17;:36::i;:::-;15121:43;14756:416;-1:-1:-1;;;;;14756:416:0:o;16795:204::-;1818:7;1845:6;-1:-1:-1;;;;;1845:6:0;16876:10;:21;16868:49;;;;-1:-1:-1;;;16868:49:0;;;;;;;:::i;:::-;16945:2;16936:5;:11;;16928:20;;;;;;16959:24;:32;16795:204::o;18053:224::-;1818:7;1845:6;-1:-1:-1;;;;;1845:6:0;18123:10;:21;18115:49;;;;-1:-1:-1;;;18115:49:0;;;;;;;:::i;:::-;18192:9;18183:5;:18;;18175:62;;;;-1:-1:-1;;;18175:62:0;;;;;;;:::i;:::-;18248:13;:21;18053:224::o;19272:216::-;1818:7;1845:6;-1:-1:-1;;;;;1845:6:0;19359:10;:21;19351:49;;;;-1:-1:-1;;;19351:49:0;;;;;;;:::i;:::-;19428:2;19419:5;:11;;19411:20;;;;;;19442:30;:38;19272:216::o;2679:201::-;2003:10;1992:7;1818;1845:6;-1:-1:-1;;;;;1845:6:0;;1772:87;1992:7;-1:-1:-1;;;;;1992:21:0;;1984:66;;;;-1:-1:-1;;;1984:66:0;;10507:2:1;1984:66:0;;;10489:21:1;;;10526:18;;;10519:30;10585:34;10565:18;;;10558:62;10637:18;;1984:66:0;10305:356:1;1984:66:0;-1:-1:-1;;;;;2768:22:0;::::1;2760:73;;;::::0;-1:-1:-1;;;2760:73:0;;12833:2:1;2760:73:0::1;::::0;::::1;12815:21:1::0;12872:2;12852:18;;;12845:30;12911:34;12891:18;;;12884:62;-1:-1:-1;;;12962:18:1;;;12955:36;13008:19;;2760:73:0::1;12631:402:1::0;2760:73:0::1;2844:28;2863:8;2844:18;:28::i;3262:180::-:0;3320:7;3340:6;3336:37;;-1:-1:-1;3364:1:0;3357:8;;3336:37;3379:9;3391:5;3395:1;3391;:5;:::i;:::-;3379:17;-1:-1:-1;3419:1:0;3410:5;3414:1;3379:17;3410:5;:::i;:::-;:10;3403:18;;;;:::i;3448:112::-;3506:7;;3534:5;3538:1;3534;:5;:::i;3566:113::-;3624:7;3652:1;3647;:6;;3640:14;;;;:::i;:::-;3668:5;3672:1;3668;:5;:::i;3685:133::-;3743:7;;3771:5;3775:1;3771;:5;:::i;:::-;3759:17;;3795:1;3790;:6;;3783:14;;;;:::i;11527:481::-;11579:7;11599:11;11613:39;11635:16;;11613:17;11626:3;;11613:8;:12;;:17;;;;:::i;:39::-;11673:10;11667:17;;;;:5;:17;;;;;:23;;;11599:53;;-1:-1:-1;11693:1:0;11667:23;;;;:27;11663:109;;;11717:43;11743:16;;11717:21;11725:12;;11717:3;:7;;:21;;;;:::i;:43::-;11711:49;;11663:109;11793:8;;:17;;11806:3;11793:12;:17::i;:::-;11782:8;:28;11997:3;11527:481;-1:-1:-1;;11527:481:0:o;15477:104::-;15534:6;15564:1;15560:5;;:1;:5;;;:13;;15572:1;15560:13;;;-1:-1:-1;15568:1:0;;15477:104;-1:-1:-1;15477:104:0:o;20765:1282::-;20826:15;;;20870:13;;;;20826:15;20858:26;;;:11;:26;;;;;;;:41;;;;20826:74;;-1:-1:-1;;;20826:74:0;;;;;160:25:1;;;;-1:-1:-1;;;;;20826:15:0;;:31;;133:18:1;;20826:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20812:11;:88;20962:13;;;;20921:26;20950;;;:11;:26;;;;;;;;:39;;20921:68;;;;;;;;;;;;;;;;;;;20950:39;;20921:68;:26;;:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20921:68:0;;;;;;;;;;;;;;;;;;;;;;;;;21000:11;21022;21036:1;21022:15;;21048:12;21077:1;21063:4;:11;:15;;;;:::i;:::-;21048:30;;21128:618;21142:4;21135:3;:11;21128:618;;21188:1;21176:10;21183:3;21176:4;:10;:::i;:::-;21175:14;;;;:::i;:::-;21169:20;;:3;:20;:::i;:::-;21163:26;;21252:4;21257:3;21252:9;;;;;;;;:::i;:::-;;;;;;;:22;;;21237:11;;:37;;21236:119;;;;;21337:4;21342:3;21337:9;;;;;;;;:::i;:::-;;;;;;;:17;;;21312:4;21317:3;21312:9;;;;;;;;:::i;:::-;;;;;;;:22;;;:42;;;;:::i;:::-;21298:11;;:56;21236:119;21232:503;;;21376:5;;21232:503;21451:4;21456:3;21451:9;;;;;;;;:::i;:::-;;;;;;;:22;;;21437:11;;:36;21433:302;;;21533:7;21539:1;21533:3;:7;:::i;:::-;21526:14;;21128:618;;21433:302;21609:4;21614:3;21609:9;;;;;;;;:::i;:::-;;;;;;;:22;;;21595:11;;:36;21591:144;;;21691:7;:3;21697:1;21691:7;:::i;:::-;21685:13;;21591:144;21128:618;;;21799:4;21804:3;21799:9;;;;;;;;:::i;:::-;;;;;;;;;;;;:17;;;;;21768:13;;;;21756:26;;;;:11;:26;;;;;;:60;;-1:-1:-1;;;;;;21756:60:0;-1:-1:-1;;;;;21756:60:0;;;;;;;;;21855:9;;21849:5;;21756:26;;21855:9;;21860:3;;21855:9;;;;;;:::i;:::-;;;;;;;;;;;;:17;;;;;-1:-1:-1;;;;;21849:24:0;;;;;;;;;;;-1:-1:-1;21849:24:0;21899:12;;;;21849:24;;-1:-1:-1;21899:16:0;;:12;;;:16;:::i;:::-;21884:12;;;:31;;-1:-1:-1;;21884:31:0;;;;;;;;;;;;21953:13;;:17;;:13;;-1:-1:-1;21953:17:0;:::i;:::-;21937:13;:33;;-1:-1:-1;;21937:33:0;;;;;;;;;;;;22023:16;;22002:18;;:37;;22023:16;22002:37;:::i;:::-;21981:18;:58;-1:-1:-1;;;;;20765:1282:0:o;3040:191::-;3114:16;3133:6;;-1:-1:-1;;;;;3150:17:0;;;-1:-1:-1;;;;;;3150:17:0;;;;;;3183:40;;3133:6;;;;;;;3183:40;;3114:16;3183:40;3103:128;3040:191;:::o;15361:108::-;15421:7;15452:1;15448;:5;:13;;15460:1;15448:13;;196:180:1;255:6;308:2;296:9;287:7;283:23;279:32;276:52;;;324:1;321;314:12;276:52;-1:-1:-1;347:23:1;;196:180;-1:-1:-1;196:180:1:o;381:316::-;458:6;466;474;527:2;515:9;506:7;502:23;498:32;495:52;;;543:1;540;533:12;495:52;-1:-1:-1;;566:23:1;;;636:2;621:18;;608:32;;-1:-1:-1;687:2:1;672:18;;;659:32;;381:316;-1:-1:-1;381:316:1:o;702:173::-;770:20;;-1:-1:-1;;;;;819:31:1;;809:42;;799:70;;865:1;862;855:12;799:70;702:173;;;:::o;880:186::-;939:6;992:2;980:9;971:7;967:23;963:32;960:52;;;1008:1;1005;998:12;960:52;1031:29;1050:9;1031:29;:::i;1071:248::-;1139:6;1147;1200:2;1188:9;1179:7;1175:23;1171:32;1168:52;;;1216:1;1213;1206:12;1168:52;-1:-1:-1;;1239:23:1;;;1309:2;1294:18;;;1281:32;;-1:-1:-1;1071:248:1:o;1324:159::-;1391:20;;1451:6;1440:18;;1430:29;;1420:57;;1473:1;1470;1463:12;1488:256;1554:6;1562;1615:2;1603:9;1594:7;1590:23;1586:32;1583:52;;;1631:1;1628;1621:12;1583:52;1654:28;1672:9;1654:28;:::i;:::-;1644:38;;1701:37;1734:2;1723:9;1719:18;1701:37;:::i;:::-;1691:47;;1488:256;;;;;:::o;1749:658::-;1920:2;1972:21;;;2042:13;;1945:18;;;2064:22;;;1891:4;;1920:2;2143:15;;;;2117:2;2102:18;;;1891:4;2186:195;2200:6;2197:1;2194:13;2186:195;;;2265:13;;-1:-1:-1;;;;;2261:39:1;2249:52;;2356:15;;;;2321:12;;;;2297:1;2215:9;2186:195;;;-1:-1:-1;2398:3:1;;1749:658;-1:-1:-1;;;;;;1749:658:1:o;3825:184::-;3883:6;3936:2;3924:9;3915:7;3911:23;3907:32;3904:52;;;3952:1;3949;3942:12;3904:52;3975:28;3993:9;3975:28;:::i;4293:258::-;4360:6;4368;4421:2;4409:9;4400:7;4396:23;4392:32;4389:52;;;4437:1;4434;4427:12;4389:52;4460:29;4479:9;4460:29;:::i;5234:339::-;5436:2;5418:21;;;5475:2;5455:18;;;5448:30;-1:-1:-1;;;5509:2:1;5494:18;;5487:45;5564:2;5549:18;;5234:339::o;6267:127::-;6328:10;6323:3;6319:20;6316:1;6309:31;6359:4;6356:1;6349:15;6383:4;6380:1;6373:15;6399:125;6439:4;6467:1;6464;6461:8;6458:34;;;6472:18;;:::i;:::-;-1:-1:-1;6509:9:1;;6399:125::o;6529:349::-;6731:2;6713:21;;;6770:2;6750:18;;;6743:30;6809:27;6804:2;6789:18;;6782:55;6869:2;6854:18;;6529:349::o;6883:128::-;6923:3;6954:1;6950:6;6947:1;6944:13;6941:39;;;6960:18;;:::i;:::-;-1:-1:-1;6996:9:1;;6883:128::o;7016:217::-;7055:4;7084:6;7140:10;;;;7110;;7162:12;;;7159:38;;;7177:18;;:::i;:::-;7214:13;;7016:217;-1:-1:-1;;;7016:217:1:o;7238:224::-;7277:3;7305:6;7338:2;7335:1;7331:10;7368:2;7365:1;7361:10;7399:3;7395:2;7391:12;7386:3;7383:21;7380:47;;;7407:18;;:::i;:::-;7443:13;;7238:224;-1:-1:-1;;;;7238:224:1:o;7467:127::-;7528:10;7523:3;7519:20;7516:1;7509:31;7559:4;7556:1;7549:15;7583:4;7580:1;7573:15;7599:127;7660:10;7655:3;7651:20;7648:1;7641:31;7691:4;7688:1;7681:15;7715:4;7712:1;7705:15;7731:197;7769:3;7797:6;7838:2;7831:5;7827:14;7865:2;7856:7;7853:15;7850:41;;;7871:18;;:::i;:::-;7920:1;7907:15;;7731:197;-1:-1:-1;;;7731:197:1:o;7933:338::-;8135:2;8117:21;;;8174:2;8154:18;;;8147:30;-1:-1:-1;;;8208:2:1;8193:18;;8186:44;8262:2;8247:18;;7933:338::o;8276:204::-;8314:3;8350:4;8347:1;8343:12;8382:4;8379:1;8375:12;8417:3;8411:4;8407:14;8402:3;8399:23;8396:49;;;8425:18;;:::i;:::-;8461:13;;8276:204;-1:-1:-1;;;8276:204:1:o;8485:355::-;8687:2;8669:21;;;8726:2;8706:18;;;8699:30;8765:33;8760:2;8745:18;;8738:61;8831:2;8816:18;;8485:355::o;11069:168::-;11109:7;11175:1;11171;11167:6;11163:14;11160:1;11157:21;11152:1;11145:9;11138:17;11134:45;11131:71;;;11182:18;;:::i;:::-;-1:-1:-1;11222:9:1;;11069:168::o;13038:217::-;13078:1;13104;13094:132;;13148:10;13143:3;13139:20;13136:1;13129:31;13183:4;13180:1;13173:15;13211:4;13208:1;13201:15;13094:132;-1:-1:-1;13240:9:1;;13038:217::o;13260:127::-;13321:10;13316:3;13312:20;13309:1;13302:31;13352:4;13349:1;13342:15;13376:4;13373:1;13366:15;13392:184;13462:6;13515:2;13503:9;13494:7;13490:23;13486:32;13483:52;;;13531:1;13528;13521:12;13483:52;-1:-1:-1;13554:16:1;;13392:184;-1:-1:-1;13392:184:1:o

Swarm Source

ipfs://acade1b6d3bf5ffdcd34fa2b50e672bcfdd2f2771036c651068c3312178e3d96

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.