Contract Address Details

0x7B885838FEAcADc1399CDdF03cD784Db25C9bD5E

Contract Name
WOWSTAKE_DogeChain
Creator
0x17bed7–69a062 at 0x33f1ff–735101
Balance
0 Doge
Tokens
Fetching tokens...
Transactions
33 Transactions
Transfers
88 Transfers
Gas Used
9,012,454
Last Balance Update
26826251
Contract name:
WOWSTAKE_DogeChain




Optimization enabled
true
Compiler version
v0.8.9+commit.e5eed63a




Optimization runs
200
EVM Version
default




Verified at
2022-10-01T09:00:37.326699Z

Constructor Arguments

000000000000000000000000a8525e8ada1bef4bde661236636bd07aaf44ff33000000000000000000000000903b575da41579495813b5a0665df4fef5fccb3b0000000000000000000000007ef7a2f007a412247d44276c2e7ca63d19daa161

Arg [0] (address) : 0xa8525e8ada1bef4bde661236636bd07aaf44ff33
Arg [1] (address) : 0x903b575da41579495813b5a0665df4fef5fccb3b
Arg [2] (address) : 0x7ef7a2f007a412247d44276c2e7ca63d19daa161

              

Contract source code

/**

    WOW! Stake ROI DAPP
    
    A sustainable investment platform based on DOGECHAIN (DC) smart-contract technology.
 
    © WowStake. All rights reserved 2022.
        
        ┌───────────────────────────────────────────────────────────────────────┐
        │                                                                       │
        │   Twitter: https://twitter.com/WowStake_App                           │
        │   Telegram Public Group: https://t.me/WowStake                        │
        │   Telegram Channel: https://t.me/WowStake_App                         │
        │   Site: https://WowStake.App                                          │
        └───────────────────────────────────────────────────────────────────────┘
    
    PROFIT PLANS:
    Stake 1 - 3.7%  daily, 555% for 150 days
    Stake 2 - 4.1%  daily, 492% for  120 days 
    Stake 3 - 4.7% daily, 282% for  60 days
    Stake 4 - 5.4% daily, 243% for  45 days

    TAX MODEL:
    3.3% Dev.
    3.3% Service.
    3.3% Marketing.
    
    REQUIREMENTS: 
    Stake 1 - min.   40000 DC, max. of 8000000 DC
    Stake 2 - min.  70000 DC, max. of 10000000 DC
    Stake 3 - min.  100000 DC, max. of 12000000 DC
    Stake 4 - min. 150000 DC, max. of 15000000 DC
    
    REFERRAL SYSTEM:
    1 level referral bonus of 15%.

    ANTI-WHALE CONTROL FEATURES:
    48 hours cut off time 
    24 hours withdraw cooldown.
    12 hours compound cooldown.
    Max active deposit limit of 25000000 DC.
    Max withdraw amount of 2000000 DC per day.

    LAUNCH EVENT:
    Reinvest Bonus will be 10% for the first week.

    DISCLAIMER: 
    Funds that are used to invest cannot be withdrawn. Please use the application at your own risk. 

**/

//SPDX-License-Identifier: MIT
pragma solidity 0.8.9;

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

contract WOWSTAKE_DogeChain {
	using SafeMath for uint256;

	IERC20 public erctoken;
	address token = 0x7B4328c127B85369D9f82ca0503B000D09CF9180; /** DC **/

	/** default percentages **/
	uint256 public PROJECT_FEE = 33;
	uint256 public MKT_BUYBACK_FEE = 33;
	uint256 public REFERRAL_PERCENT = 150;
	uint256 public SUSTAINABILITY_TAX = 0;
	uint256 constant public TIME_STEP = 1 days;
	uint256 constant private PERCENTS_DIVIDER = 1000;

	/* whale control features. **/
	uint256 public CUTOFF_STEP = 48 * 60 * 60;
	uint256 public WITHDRAW_COOLDOWN = 24 * 60 * 60;
	uint256 public COMPOUND_COOLDOWN = 12 * 60 * 60;
    uint256 public REINVEST_BONUS = 100;
	uint256 public MAX_WITHDRAW = 2000000 ether;
	uint256 public WALLET_LIMIT = 25000000 ether;

    /** deposits after this timestamp gets additional percentages **/
    uint256 public PERCENTAGE_BONUS_STARTTIME = 0;
	uint256 public PERCENTAGE_BONUS_PLAN_1 = 0;
    uint256 public PERCENTAGE_BONUS_PLAN_2 = 0;
    uint256 public PERCENTAGE_BONUS_PLAN_3 = 0;
    uint256 public PERCENTAGE_BONUS_PLAN_4 = 0;

    /* project statistics **/
	uint256 public totalInvested;
	uint256 public totalReInvested;
	uint256 public totalRefBonus;
	uint256 public totalInvestorCount;

    struct Plan {
        uint256 time;
        uint256 percent;
        uint256 mininvest;
        uint256 maxinvest;

        /** plan statistics **/
        uint256 planTotalInvestorCount;
        uint256 planTotalInvestments;
        uint256 planTotalReInvestorCount;
        uint256 planTotalReInvestments;
        
        bool planActivated;
    }
    
	struct Deposit {
        uint8 plan;
		uint256 amount;
		uint256 start;
		bool reinvested;
	}
    
    Plan[] internal plans;

	struct User {
		Deposit[] deposits;
		mapping (uint8 => uint256) checkpoints; /** a checkpoint for each plan **/
		uint256 cutoff;
		uint256 totalInvested;
		address referrer;
		uint256 referralsCount;
		uint256 bonus;
		uint256 totalBonus;
		uint256 withdrawn;
		uint256 reinvested;
		uint256 totalDepositAmount;
	}

	mapping (address => User) internal users;

    address private dev;
    address private service;
    address private mktAndBuyBack;
	address private contractOwner;
    uint public startTime = 1665082800; //Thu Oct 06 2022 19:00:00 GMT+0000 https://www.unixtimestamp.com/
	event Newbie(address user);
	event NewDeposit(address indexed user, uint8 plan, uint256 amount);
	event ReinvestedDeposit(address indexed user, uint8 plan, uint256 amount);
	event Withdrawn(address indexed user, uint256 amount);
	event RefBonus(address indexed referrer, address indexed referral, uint256 amount);
	event FeePayed(address indexed user, uint256 totalAmount);

	constructor(address _dev, address _service, address _mkt) {
		require(!isContract(_dev) && !isContract(_service) && !isContract(_mkt));
        contractOwner = msg.sender;
        dev = _dev;
        service = _service;
        mktAndBuyBack = _mkt;
        erctoken = IERC20(token);

        plans.push(Plan( 150, 37,  40000 ether, 8000000 ether, 0, 0, 0, 0, true));
        plans.push(Plan( 120,  41,  70000 ether, 10000000 ether, 0, 0, 0, 0, true));
        plans.push(Plan( 60,  47,  100000 ether, 12000000 ether, 0, 0, 0, 0, true));
        plans.push(Plan( 45,  54,  150000 ether, 15000000 ether, 0, 0, 0, 0, true));
	}

	function invest(address referrer, uint8 plan, uint256 amounterc) public {
        require(block.timestamp > startTime);
        require(plan < plans.length, "Invalid Plan.");
        require(amounterc >= plans[plan].mininvest, "Less than minimum amount required for the selected Plan.");
        require(amounterc <= plans[plan].maxinvest, "More than maximum amount required for the selected Plan.");
		require(plans[plan].planActivated, "Plan selected is disabled");
        require(getUserActiveProjectInvestments(msg.sender).add(amounterc) <= WALLET_LIMIT, "Max wallet deposit limit reached.");

		/** fees **/
		erctoken.transferFrom(address(msg.sender), address(this), amounterc);
        emit FeePayed(msg.sender, payFees(amounterc));

		User storage user = users[msg.sender];

        if (user.referrer == address(0)) {
            if (referrer != msg.sender) {
                user.referrer = referrer;
            }

            address upline1 = user.referrer;
            if (upline1 != address(0)) {
                users[upline1].referralsCount = users[upline1].referralsCount.add(1);
            }
        }
        if (user.referrer != address(0)) {
            address upline = user.referrer;
            if (upline != address(0)) {
                uint256 amount = amounterc.mul(REFERRAL_PERCENT).div(PERCENTS_DIVIDER);
                users[upline].bonus = users[upline].bonus.add(amount);
                users[upline].totalBonus = users[upline].totalBonus.add(amount);
                totalRefBonus = totalRefBonus.add(amount);
                emit RefBonus(upline, msg.sender, amount);
            }
        }

        /** new user gets current time + CUTOFF_STEP for initial time window **/
		if (user.deposits.length == 0) {
			user.checkpoints[plan] = block.timestamp;
			user.cutoff = block.timestamp.add(CUTOFF_STEP);
			emit Newbie(msg.sender);
		}

        /** deposit from new invest **/
		user.deposits.push(Deposit(plan, amounterc, block.timestamp, false));

		user.totalInvested = user.totalInvested.add(amounterc);
		totalInvested = totalInvested.add(amounterc);

		/** statistics **/
		totalInvestorCount = totalInvestorCount.add(1);
		plans[plan].planTotalInvestorCount = plans[plan].planTotalInvestorCount.add(1);
		plans[plan].planTotalInvestments = plans[plan].planTotalInvestments.add(amounterc);

		emit NewDeposit(msg.sender, plan, amounterc);
	}

	function reinvest(uint8 plan) public {
		require(block.timestamp > startTime);
        require(plan < plans.length, "Invalid plan");
        require(plans[plan].planActivated, "Plan selected is disabled.");

        User storage user = users[msg.sender];

        if(user.checkpoints[plan].add(COMPOUND_COOLDOWN) > block.timestamp){
            revert("Compounding/Reinvesting can only be made after compound cooldown.");
        }

        uint256 totalAmount = getUserDividends(msg.sender, int8(plan));

        uint256 finalAmount = totalAmount.add(totalAmount.mul(REINVEST_BONUS).div(PERCENTS_DIVIDER));
		user.deposits.push(Deposit(plan, finalAmount, block.timestamp, true));

        user.reinvested = user.reinvested.add(finalAmount);
        user.checkpoints[plan] = block.timestamp;
        user.cutoff = block.timestamp.add(CUTOFF_STEP);

        /** statistics **/
		totalReInvested = totalReInvested.add(finalAmount);
		plans[plan].planTotalReInvestments = plans[plan].planTotalReInvestments.add(finalAmount);
		plans[plan].planTotalReInvestorCount = plans[plan].planTotalReInvestorCount.add(1);

		emit ReinvestedDeposit(msg.sender, plan, finalAmount);
	}

	function withdraw() public {
		require(block.timestamp > startTime);
		User storage user = users[msg.sender];

		uint256 totalAmount = getUserDividends(msg.sender);

		uint256 referralBonus = getUserReferralBonus(msg.sender);
		if (referralBonus > 0) {
			user.bonus = 0;
			totalAmount = totalAmount.add(referralBonus);
		}

		require(totalAmount > 0, "User has no dividends");

		uint256 contractBalance = erctoken.balanceOf(address(this));

		if (contractBalance < totalAmount) {
			user.bonus = totalAmount.sub(contractBalance);
			user.totalBonus = user.totalBonus.add(user.bonus);
			totalAmount = contractBalance;
		}

        for(uint8 i = 0; i < plans.length; i++){

            if(user.checkpoints[i].add(WITHDRAW_COOLDOWN) > block.timestamp){
               revert("Withdrawals can only be made after withdraw cooldown.");
            }

		    user.checkpoints[i] = block.timestamp; /** global withdraw will reset checkpoints on all plans **/
        }

        /** Excess dividends are sent back to the user's account available for the next withdrawal. **/
        if(totalAmount > MAX_WITHDRAW) {
            user.bonus = totalAmount.sub(MAX_WITHDRAW);
            totalAmount = MAX_WITHDRAW;
        }

        totalAmount = totalAmount.sub(totalAmount.mul(SUSTAINABILITY_TAX).div(PERCENTS_DIVIDER));
        user.cutoff = block.timestamp.add(CUTOFF_STEP); /** global withdraw will also reset CUTOFF **/
		user.withdrawn = user.withdrawn.add(totalAmount);
        erctoken.transfer(msg.sender, totalAmount-MKT_BUYBACK_FEE*3);
        erctoken.transfer(dev, totalAmount/30);
        erctoken.transfer(service, totalAmount/30);
        erctoken.transfer(mktAndBuyBack, totalAmount/30);
		emit Withdrawn(msg.sender, totalAmount);
	}
	
	function payFees(uint256 amounterc) internal returns(uint256) {
		uint256 fee = amounterc.mul(PROJECT_FEE).div(PERCENTS_DIVIDER);
		uint256 marketing = amounterc.mul(MKT_BUYBACK_FEE).div(PERCENTS_DIVIDER);
		erctoken.transfer(dev, fee);
        erctoken.transfer(service, fee);
        erctoken.transfer(mktAndBuyBack, marketing);
        uint256 totalFee = fee.mul(2);
        return totalFee.add(marketing);
    }

	function getUserDividends(address userAddress, int8 plan) public view returns (uint256) {
		User storage user = users[userAddress];

		uint256 totalAmount;

		uint256 endPoint = block.timestamp < user.cutoff ? block.timestamp : user.cutoff;

		for (uint256 i = 0; i < user.deposits.length; i++) {
		    if(plan > -1){
		        if(user.deposits[i].plan != uint8(plan)){
		            continue;
		        }
		    }
			uint256 finish = user.deposits[i].start.add(plans[user.deposits[i].plan].time.mul(1 days));
			/** check if plan is not yet finished. **/
			if (user.checkpoints[user.deposits[i].plan] < finish) {

			    uint256 percent = plans[user.deposits[i].plan].percent;
			    if(user.deposits[i].start >= PERCENTAGE_BONUS_STARTTIME){
                    if(user.deposits[i].plan == 0){
                        percent = percent.add(PERCENTAGE_BONUS_PLAN_1);
                    }else if(user.deposits[i].plan == 1){
                        percent = percent.add(PERCENTAGE_BONUS_PLAN_2);
                    }else if(user.deposits[i].plan == 2){
                        percent = percent.add(PERCENTAGE_BONUS_PLAN_3);
                    }else if(user.deposits[i].plan == 3){
                        percent = percent.add(PERCENTAGE_BONUS_PLAN_4);
                    }
			    }

				uint256 share = user.deposits[i].amount.mul(percent).div(PERCENTS_DIVIDER);

				uint256 from = user.deposits[i].start > user.checkpoints[user.deposits[i].plan] ? user.deposits[i].start : user.checkpoints[user.deposits[i].plan];
				/** uint256 to = finish < block.timestamp ? finish : block.timestamp; **/
				uint256 to = finish < endPoint ? finish : endPoint;
				if (from < to) {
					totalAmount = totalAmount.add(share.mul(to.sub(from)).div(TIME_STEP));
				}
			}
		}

		return totalAmount;
	}
    
	function getUserActiveProjectInvestments(address userAddress) public view returns (uint256){
	    uint256 totalAmount;

		/** get total active investments in all plans. **/
        for(uint8 i = 0; i < plans.length; i++){
              totalAmount = totalAmount.add(getUserActiveInvestments(userAddress, i));  
        }
        
	    return totalAmount;
	}

	function getUserActiveInvestments(address userAddress, uint8 plan) public view returns (uint256){
	    User storage user = users[userAddress];
	    uint256 totalAmount;

		for (uint256 i = 0; i < user.deposits.length; i++) {

	        if(user.deposits[i].plan != uint8(plan)){
	            continue;
	        }

			uint256 finish = user.deposits[i].start.add(plans[user.deposits[i].plan].time.mul(1 days));
			if (user.checkpoints[uint8(plan)] < finish) {
			    /** sum of all unfinished deposits from plan **/
				totalAmount = totalAmount.add(user.deposits[i].amount);
			}
		}
	    return totalAmount;
	}


	function getPlanInfo(uint8 plan) public view returns(uint256 time, uint256 percent, uint256 minimumInvestment, uint256 maximumInvestment,
	  uint256 planTotalInvestorCount, uint256 planTotalInvestments , uint256 planTotalReInvestorCount, uint256 planTotalReInvestments, bool planActivated) {
		time = plans[plan].time;
		percent = plans[plan].percent;
		minimumInvestment = plans[plan].mininvest;
		maximumInvestment = plans[plan].maxinvest;
		planTotalInvestorCount = plans[plan].planTotalInvestorCount;
		planTotalInvestments = plans[plan].planTotalInvestments;
		planTotalReInvestorCount = plans[plan].planTotalReInvestorCount;
		planTotalReInvestments = plans[plan].planTotalReInvestments;
		planActivated = plans[plan].planActivated;
	}

	function getContractBalance() public view returns (uint256) {
		return erctoken.balanceOf(address(this));
	}

	function getUserDividends(address userAddress) public view returns (uint256) {
	    return getUserDividends(userAddress, -1);
	}

	function getUserCutoff(address userAddress) public view returns (uint256) {
      return users[userAddress].cutoff;
    }

	function getUserTotalWithdrawn(address userAddress) public view returns (uint256) {
		return users[userAddress].withdrawn;
	}

	function getUserCheckpoint(address userAddress, uint8 plan) public view returns(uint256) {
		return users[userAddress].checkpoints[plan];
	}

	function getUserReferrer(address userAddress) public view returns(address) {
		return users[userAddress].referrer;
	}

    function getUserTotalReferrals(address userAddress) public view returns (uint256){
        return users[userAddress].referralsCount;
    }

	function getUserReferralBonus(address userAddress) public view returns(uint256) {
	    return users[userAddress].bonus;
	}

	function getUserReferralTotalBonus(address userAddress) public view returns(uint256) {
		return users[userAddress].totalBonus;
	}

	function getUserReferralWithdrawn(address userAddress) public view returns(uint256) {
		return users[userAddress].totalBonus.sub(users[userAddress].bonus);
	}

	function getUserAvailable(address userAddress) public view returns(uint256) {
		return getUserReferralBonus(userAddress).add(getUserDividends(userAddress));
	}

	function getUserAmountOfDeposits(address userAddress) public view returns(uint256) {
		return users[userAddress].deposits.length;
	}

	function getUserTotalDeposits(address userAddress) public view returns(uint256 amount) {
		for (uint256 i = 0; i < users[userAddress].deposits.length; i++) {
			amount = amount.add(users[userAddress].deposits[i].amount);
		}
	}

	function getUserDepositInfo(address userAddress, uint256 index) public view returns(uint8 plan, uint256 percent, uint256 amount, uint256 start, uint256 finish, bool reinvested) {
	    User storage user = users[userAddress];
		plan = user.deposits[index].plan;
		percent = plans[plan].percent;
		amount = user.deposits[index].amount;
		start = user.deposits[index].start;
		finish = user.deposits[index].start.add(plans[user.deposits[index].plan].time.mul(1 days));
		reinvested = user.deposits[index].reinvested;
	}

    function getSiteInfo() public view returns (uint256 _totalInvested, uint256 _totalBonus) {
        return (totalInvested, totalRefBonus);
    }

	function getUserInfo(address userAddress) public view returns(uint256 totalDeposit, uint256 totalWithdrawn, uint256 totalReferrals) {
		return(getUserTotalDeposits(userAddress), getUserTotalWithdrawn(userAddress), getUserTotalReferrals(userAddress));
	}

	/** Get Block Timestamp **/
	function getBlockTimeStamp() public view returns (uint256) {
	    return block.timestamp;
	}

	/** Get Plans Length **/
	function getPlansLength() public view returns (uint256) {
	    return plans.length;
	}

	function isContract(address addr) internal view returns (bool) {
        uint size;
        assembly { size := extcodesize(addr) }
        return size > 0;
    }

    /** Add additional plans in the Plan structure. **/

    function CHANGE_OWNERSHIP(address value) external {
        require(msg.sender == contractOwner, "Admin use only");
        contractOwner = value;
    }

    function SET_REFERRAL_PERCENT(uint256 value) external {
        require(msg.sender == contractOwner, "Admin use only");
        require(value <= 160);
        REFERRAL_PERCENT = value;
    }

    function SET_REINVEST_BONUS(uint256 value) external {
        require(msg.sender == contractOwner, "Admin use only");
        require(value <= 100);
        REINVEST_BONUS = value;
    }
        
    function SET_START_TIME(uint256 value) external {
        require(msg.sender == contractOwner, "Admin use only");
        startTime = value;
    } 
}

library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "SafeMath: subtraction overflow");
        uint256 c = a - b;

        return c;
    }

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

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

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "SafeMath: division by zero");
        uint256 c = a / b;

        return c;
    }

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

Contract ABI

[{"type":"constructor","stateMutability":"nonpayable","inputs":[{"type":"address","name":"_dev","internalType":"address"},{"type":"address","name":"_service","internalType":"address"},{"type":"address","name":"_mkt","internalType":"address"}]},{"type":"event","name":"FeePayed","inputs":[{"type":"address","name":"user","internalType":"address","indexed":true},{"type":"uint256","name":"totalAmount","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"NewDeposit","inputs":[{"type":"address","name":"user","internalType":"address","indexed":true},{"type":"uint8","name":"plan","internalType":"uint8","indexed":false},{"type":"uint256","name":"amount","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"Newbie","inputs":[{"type":"address","name":"user","internalType":"address","indexed":false}],"anonymous":false},{"type":"event","name":"RefBonus","inputs":[{"type":"address","name":"referrer","internalType":"address","indexed":true},{"type":"address","name":"referral","internalType":"address","indexed":true},{"type":"uint256","name":"amount","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"ReinvestedDeposit","inputs":[{"type":"address","name":"user","internalType":"address","indexed":true},{"type":"uint8","name":"plan","internalType":"uint8","indexed":false},{"type":"uint256","name":"amount","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"Withdrawn","inputs":[{"type":"address","name":"user","internalType":"address","indexed":true},{"type":"uint256","name":"amount","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"CHANGE_OWNERSHIP","inputs":[{"type":"address","name":"value","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"COMPOUND_COOLDOWN","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"CUTOFF_STEP","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"MAX_WITHDRAW","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"MKT_BUYBACK_FEE","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"PERCENTAGE_BONUS_PLAN_1","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"PERCENTAGE_BONUS_PLAN_2","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"PERCENTAGE_BONUS_PLAN_3","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"PERCENTAGE_BONUS_PLAN_4","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"PERCENTAGE_BONUS_STARTTIME","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"PROJECT_FEE","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"REFERRAL_PERCENT","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"REINVEST_BONUS","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"SET_REFERRAL_PERCENT","inputs":[{"type":"uint256","name":"value","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"SET_REINVEST_BONUS","inputs":[{"type":"uint256","name":"value","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"SET_START_TIME","inputs":[{"type":"uint256","name":"value","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"SUSTAINABILITY_TAX","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"TIME_STEP","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"WALLET_LIMIT","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"WITHDRAW_COOLDOWN","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract IERC20"}],"name":"erctoken","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getBlockTimeStamp","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getContractBalance","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"time","internalType":"uint256"},{"type":"uint256","name":"percent","internalType":"uint256"},{"type":"uint256","name":"minimumInvestment","internalType":"uint256"},{"type":"uint256","name":"maximumInvestment","internalType":"uint256"},{"type":"uint256","name":"planTotalInvestorCount","internalType":"uint256"},{"type":"uint256","name":"planTotalInvestments","internalType":"uint256"},{"type":"uint256","name":"planTotalReInvestorCount","internalType":"uint256"},{"type":"uint256","name":"planTotalReInvestments","internalType":"uint256"},{"type":"bool","name":"planActivated","internalType":"bool"}],"name":"getPlanInfo","inputs":[{"type":"uint8","name":"plan","internalType":"uint8"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getPlansLength","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"_totalInvested","internalType":"uint256"},{"type":"uint256","name":"_totalBonus","internalType":"uint256"}],"name":"getSiteInfo","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getUserActiveInvestments","inputs":[{"type":"address","name":"userAddress","internalType":"address"},{"type":"uint8","name":"plan","internalType":"uint8"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getUserActiveProjectInvestments","inputs":[{"type":"address","name":"userAddress","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getUserAmountOfDeposits","inputs":[{"type":"address","name":"userAddress","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getUserAvailable","inputs":[{"type":"address","name":"userAddress","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getUserCheckpoint","inputs":[{"type":"address","name":"userAddress","internalType":"address"},{"type":"uint8","name":"plan","internalType":"uint8"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getUserCutoff","inputs":[{"type":"address","name":"userAddress","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint8","name":"plan","internalType":"uint8"},{"type":"uint256","name":"percent","internalType":"uint256"},{"type":"uint256","name":"amount","internalType":"uint256"},{"type":"uint256","name":"start","internalType":"uint256"},{"type":"uint256","name":"finish","internalType":"uint256"},{"type":"bool","name":"reinvested","internalType":"bool"}],"name":"getUserDepositInfo","inputs":[{"type":"address","name":"userAddress","internalType":"address"},{"type":"uint256","name":"index","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getUserDividends","inputs":[{"type":"address","name":"userAddress","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getUserDividends","inputs":[{"type":"address","name":"userAddress","internalType":"address"},{"type":"int8","name":"plan","internalType":"int8"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"totalDeposit","internalType":"uint256"},{"type":"uint256","name":"totalWithdrawn","internalType":"uint256"},{"type":"uint256","name":"totalReferrals","internalType":"uint256"}],"name":"getUserInfo","inputs":[{"type":"address","name":"userAddress","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getUserReferralBonus","inputs":[{"type":"address","name":"userAddress","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getUserReferralTotalBonus","inputs":[{"type":"address","name":"userAddress","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getUserReferralWithdrawn","inputs":[{"type":"address","name":"userAddress","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"getUserReferrer","inputs":[{"type":"address","name":"userAddress","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"amount","internalType":"uint256"}],"name":"getUserTotalDeposits","inputs":[{"type":"address","name":"userAddress","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getUserTotalReferrals","inputs":[{"type":"address","name":"userAddress","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getUserTotalWithdrawn","inputs":[{"type":"address","name":"userAddress","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"invest","inputs":[{"type":"address","name":"referrer","internalType":"address"},{"type":"uint8","name":"plan","internalType":"uint8"},{"type":"uint256","name":"amounterc","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"reinvest","inputs":[{"type":"uint8","name":"plan","internalType":"uint8"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"startTime","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalInvested","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalInvestorCount","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalReInvested","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalRefBonus","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"withdraw","inputs":[]}]
            

Contract Creation Code

0x6080604052600180546001600160a01b031916737b4328c127b85369d9f82ca0503b000d09cf9180179055602160028190556003556096600455600060058190556202a3006006556201518060075561a8c060085560646009556a01a784379d99db42000000600a556a14adf4b7320334b9000000600b55600c819055600d819055600e819055600f81905560105563633f25b0601b55348015620000a357600080fd5b5060405162002f2938038062002f29833981016040819052620000c691620005d8565b823b158015620000d55750813b155b8015620000e15750803b155b620000eb57600080fd5b33601a60006101000a8154816001600160a01b0302191690836001600160a01b0316021790555082601760006101000a8154816001600160a01b0302191690836001600160a01b0316021790555081601860006101000a8154816001600160a01b0302191690836001600160a01b0316021790555080601960006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600160009054906101000a90046001600160a01b03166000806101000a8154816001600160a01b0302191690836001600160a01b0316021790555060156040518061012001604052806096815260200160258152602001690878678326eac900000081526020016a069e10de76676d08000000815260200160008152602001600081526020016000815260200160008152602001600115158152509080600181540180825580915050600190039060005260206000209060090201600090919091909150600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701556101008201518160080160006101000a81548160ff021916908315150217905550505060156040518061012001604052806078815260200160298152602001690ed2b525841adfc0000081526020016a084595161401484a000000815260200160008152602001600081526020016000815260200160008152602001600115158152509080600181540180825580915050600190039060005260206000209060090201600090919091909150600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701556101008201518160080160006101000a81548160ff02191690831515021790555050506015604051806101200160405280603c8152602001602f815260200169152d02c7e14af680000081526020016a09ed194db19b238c000000815260200160008152602001600081526020016000815260200160008152602001600115158152509080600181540180825580915050600190039060005260206000209060090201600090919091909150600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701556101008201518160080160006101000a81548160ff02191690831515021790555050506015604051806101200160405280602d815260200160368152602001691fc3842bd1f071c0000081526020016a0c685fa11e01ec6f000000815260200160008152602001600081526020016000815260200160008152602001600115158152509080600181540180825580915050600190039060005260206000209060090201600090919091909150600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701556101008201518160080160006101000a81548160ff021916908315150217905550505050505062000622565b80516001600160a01b0381168114620005d357600080fd5b919050565b600080600060608486031215620005ee57600080fd5b620005f984620005bb565b92506200060960208501620005bb565b91506200061960408501620005bb565b90509250925092565b6128f780620006326000396000f3fe608060405234801561001057600080fd5b50600436106102f15760003560e01c806378e979251161019d578063aecaa634116100e9578063e84cdabc116100a2578063f5b7628c1161007c578063f5b7628c146106fa578063f9eb400814610702578063fb4cb32b1461070b578063fbfcb2791461073757600080fd5b8063e84cdabc146106a8578063e85abe09146106bb578063f4f9f3a9146106e757600080fd5b8063aecaa634146105c5578063bd4a982b1461061e578063c0806b031461064a578063c25f57e914610690578063ca49a54314610699578063e3d190031461069f57600080fd5b8063899b8f371161015657806398b7baa91161013057806398b7baa914610542578063a8aeb6c214610555578063a9996f291461057e578063ac0b49be1461058757600080fd5b8063899b8f371461051d5780639383e5cd14610526578063950d91e91461053957600080fd5b806378e97925146104dd5780637e3abeea146104e6578063852aa16b146104f9578063852edd3d146105025780638687d8a91461050b578063890f137b1461051457600080fd5b806336144c9a1161025c5780634ce87053116102155780636386c1c7116101ef5780636386c1c71461048b57806369b11dd5146104b95780636bb18556146104c25780636f9fb98a146104d557600080fd5b80634ce87053146104545780635216aeec1461046f578063582c80d81461047857600080fd5b806336144c9a146103cc5780633ccfd60b146103fb578063452bc1da14610403578063485217171461041657806348c372031461041f57806348d44bd11461044b57600080fd5b80632d9a5353116102ae5780632d9a535314610369578063325b37db1461039457806332bc298c146103a757806333a8915a146103b1578063351ed951146103ba5780633578584f146103c357600080fd5b8063040a772e146102f657806309f83b381461031c578063153ab9df146103315780631b537d7e1461034457806320600bd71461034d5780632b039d0e14610356575b600080fd5b610309610304366004612651565b610763565b6040519081526020015b60405180910390f35b61032f61032a36600461266c565b610777565b005b61030961033f366004612651565b6107bd565b610309600d5481565b61030960035481565b61032f610364366004612651565b6107ee565b60005461037c906001600160a01b031681565b6040516001600160a01b039091168152602001610313565b6103096103a2366004612685565b61083a565b6103096201518081565b61030960045481565b610309600b5481565b61030960065481565b61037c6103da366004612651565b6001600160a01b039081166000908152601660205260409020600401541690565b61032f610cac565b61032f6104113660046126d3565b61120d565b61030960095481565b61030961042d366004612651565b6001600160a01b031660009081526016602052604090206007015490565b61030960025481565b60115460135460408051928352602083019190915201610313565b61030960115481565b610309610486366004612651565b61158a565b61049e610499366004612651565b6115c5565b60408051938452602084019290925290820152606001610313565b61030960135481565b6103096104d0366004612651565b611603565b61030961162f565b610309601b5481565b6103096104f4366004612651565b6116b0565b610309600a5481565b610309600e5481565b61030960085481565b610309600c5481565b61030960145481565b6103096105343660046126ee565b61173e565b61030960075481565b61032f61055036600461266c565b611849565b610309610563366004612651565b6001600160a01b031660009081526016602052604090205490565b61030960055481565b6103096105953660046126ee565b6001600160a01b038216600090815260166020908152604080832060ff8516845260010190915290205492915050565b6105d86105d33660046126d3565b611878565b60408051998a5260208a0198909852968801959095526060870193909352608086019190915260a085015260c084015260e0830152151561010082015261012001610313565b61030961062c366004612651565b6001600160a01b031660009081526016602052604090206002015490565b61065d610658366004612721565b611a1a565b6040805160ff909716875260208701959095529385019290925260608401526080830152151560a082015260c001610313565b61030960125481565b42610309565b61030960105481565b61032f6106b636600461274b565b611b5d565b6103096106c9366004612651565b6001600160a01b031660009081526016602052604090206006015490565b61032f6106f536600461266c565b612254565b601554610309565b610309600f5481565b610309610719366004612651565b6001600160a01b031660009081526016602052604090206008015490565b610309610745366004612651565b6001600160a01b031660009081526016602052604090206005015490565b60006107718260001961083a565b92915050565b601a546001600160a01b031633146107aa5760405162461bcd60e51b81526004016107a190612787565b60405180910390fd5b60a08111156107b857600080fd5b600455565b60006107716107cb83610763565b6001600160a01b0384166000908152601660205260409020600601545b90612291565b601a546001600160a01b031633146108185760405162461bcd60e51b81526004016107a190612787565b601a80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0382166000908152601660205260408120600281015482908190421061086b57826002015461086d565b425b905060005b8354811015610ca1576000198660000b13156108bf578560ff168460000182815481106108a1576108a16127af565b600091825260209091206004909102015460ff16146108bf57610c8f565b60006109556109206201518060158860000186815481106108e2576108e26127af565b6000918252602090912060049091020154815460ff909116908110610909576109096127af565b6000918252602090912060099091020154906122f7565b866000018481548110610935576109356127af565b90600052602060002090600402016002015461229190919063ffffffff16565b905080856001016000876000018581548110610973576109736127af565b6000918252602080832060049092029091015460ff1683528201929092526040019020541015610c8d57600060158660000184815481106109b6576109b66127af565b6000918252602090912060049091020154815460ff9091169081106109dd576109dd6127af565b9060005260206000209060090201600101549050600c54866000018481548110610a0957610a096127af565b90600052602060002090600402016002015410610b2257856000018381548110610a3557610a356127af565b600091825260209091206004909102015460ff16610a6257600d54610a5b908290612291565b9050610b22565b856000018381548110610a7757610a776127af565b600091825260209091206004909102015460ff1660011415610aa157600e54610a5b908290612291565b856000018381548110610ab657610ab66127af565b600091825260209091206004909102015460ff1660021415610ae057600f54610a5b908290612291565b856000018381548110610af557610af56127af565b600091825260209091206004909102015460ff1660031415610b2257601054610b1f908290612291565b90505b6000610b696103e8610b63848a6000018881548110610b4357610b436127af565b9060005260206000209060040201600101546122f790919063ffffffff16565b90612376565b90506000876001016000896000018781548110610b8857610b886127af565b6000918252602080832060049092029091015460ff1683528201929092526040019020548854899087908110610bc057610bc06127af565b90600052602060002090600402016002015411610c1b57876001016000896000018781548110610bf257610bf26127af565b6000918252602080832060049092029091015460ff168352820192909252604001902054610c43565b876000018581548110610c3057610c306127af565b9060005260206000209060040201600201545b90506000868510610c545786610c56565b845b905080821015610c8857610c85610c7e62015180610b63610c7785876123db565b87906122f7565b8990612291565b97505b505050505b505b80610c99816127db565b915050610872565b509095945050505050565b601b544211610cba57600080fd5b33600081815260166020526040812091610cd390610763565b336000908152601660205260409020600601549091508015610d035760006006840155610d008282612291565b91505b60008211610d4b5760405162461bcd60e51b81526020600482015260156024820152745573657220686173206e6f206469766964656e647360581b60448201526064016107a1565b600080546040516370a0823160e01b81523060048201526001600160a01b03909116906370a082319060240160206040518083038186803b158015610d8f57600080fd5b505afa158015610da3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc791906127f6565b905082811015610df957610ddb83826123db565b600685018190556007850154610df091612291565b60078501559150815b60005b60155460ff82161015610ec25760075460ff821660009081526001870160205260409020544291610e2d9190612291565b1115610e995760405162461bcd60e51b815260206004820152603560248201527f5769746864726177616c732063616e206f6e6c79206265206d6164652061667460448201527432b9103bb4ba34323930bb9031b7b7b63237bbb71760591b60648201526084016107a1565b60ff81166000908152600186016020526040902042905580610eba8161280f565b915050610dfc565b50600a54831115610ee657600a54610edb9084906123db565b6006850155600a5492505b610f0b610f046103e8610b63600554876122f790919063ffffffff16565b84906123db565b9250610f226006544261229190919063ffffffff16565b60028501556008840154610f369084612291565b6008850155600054600380546001600160a01b039092169163a9059cbb913391610f5f9161282f565b610f69908761284e565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b158015610faf57600080fd5b505af1158015610fc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe79190612865565b506000546017546001600160a01b039182169163a9059cbb911661100c601e87612887565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561105257600080fd5b505af1158015611066573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108a9190612865565b506000546018546001600160a01b039182169163a9059cbb91166110af601e87612887565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b1580156110f557600080fd5b505af1158015611109573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112d9190612865565b506000546019546001600160a01b039182169163a9059cbb9116611152601e87612887565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561119857600080fd5b505af11580156111ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d09190612865565b5060405183815233907f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5906020015b60405180910390a250505050565b601b54421161121b57600080fd5b60155460ff82161061125e5760405162461bcd60e51b815260206004820152600c60248201526b24b73b30b634b210383630b760a11b60448201526064016107a1565b60158160ff1681548110611274576112746127af565b600091825260209091206008600990920201015460ff166112d75760405162461bcd60e51b815260206004820152601a60248201527f506c616e2073656c65637465642069732064697361626c65642e00000000000060448201526064016107a1565b33600090815260166020908152604080832060085460ff861685526001820190935292205442916113089190612291565b11156113865760405162461bcd60e51b815260206004820152604160248201527f436f6d706f756e64696e672f5265696e76657374696e672063616e206f6e6c7960448201527f206265206d61646520616674657220636f6d706f756e6420636f6f6c646f776e6064820152601760f91b608482015260a4016107a1565b6000611392338461083a565b905060006113bb6113b46103e8610b63600954866122f790919063ffffffff16565b8390612291565b6040805160808101825260ff80881682526020808301858152429484019485526001606085018181528a548083018c5560008c8152949094209551600490940290950180549390941660ff199384161784559051908301559251600282015590516003909101805491151591909216179055600984015490915061143f9082612291565b600984015560ff841660009081526001840160205260409020429081905560065461146a9190612291565b600284015560125461147c9082612291565b6012819055506114bc8160158660ff168154811061149c5761149c6127af565b90600052602060002090600902016007015461229190919063ffffffff16565b60158560ff16815481106114d2576114d26127af565b906000526020600020906009020160070181905550611522600160158660ff1681548110611502576115026127af565b90600052602060002090600902016006015461229190919063ffffffff16565b60158560ff1681548110611538576115386127af565b6000918252602091829020600660099092020101919091556040805160ff8716815291820183905233917f9c2ae386c34bd727f17e92b569b309633eea3f3a6ded6debcec58fc3d15de10c91016111ff565b60008060005b60155460ff821610156115be576115aa6113b4858361173e565b9150806115b68161280f565b915050611590565b5092915050565b60008060006115d3846116b0565b6001600160a01b039490941660009081526016602052604090206008810154600590910154949590949350915050565b6001600160a01b03811660009081526016602052604081206006810154600790910154610771916123db565b600080546040516370a0823160e01b81523060048201526001600160a01b03909116906370a082319060240160206040518083038186803b15801561167357600080fd5b505afa158015611687573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ab91906127f6565b905090565b6000805b6001600160a01b038316600090815260166020526040902054811015611738576001600160a01b03831660009081526016602052604090208054611724919083908110611703576117036127af565b9060005260206000209060040201600101548361229190919063ffffffff16565b915080611730816127db565b9150506116b4565b50919050565b6001600160a01b038216600090815260166020526040812081805b8254811015611840578460ff1683600001828154811061177b5761177b6127af565b600091825260209091206004909102015460ff16146117995761182e565b60006117d16117bc6201518060158760000186815481106108e2576108e26127af565b856000018481548110610935576109356127af565b60ff8716600090815260018601602052604090205490915081111561182c57611829846000018381548110611808576118086127af565b9060005260206000209060040201600101548461229190919063ffffffff16565b92505b505b80611838816127db565b915050611759565b50949350505050565b601a546001600160a01b031633146118735760405162461bcd60e51b81526004016107a190612787565b601b55565b600080600080600080600080600060158a60ff168154811061189c5761189c6127af565b906000526020600020906009020160000154985060158a60ff16815481106118c6576118c66127af565b906000526020600020906009020160010154975060158a60ff16815481106118f0576118f06127af565b906000526020600020906009020160020154965060158a60ff168154811061191a5761191a6127af565b906000526020600020906009020160030154955060158a60ff1681548110611944576119446127af565b906000526020600020906009020160040154945060158a60ff168154811061196e5761196e6127af565b906000526020600020906009020160050154935060158a60ff1681548110611998576119986127af565b906000526020600020906009020160060154925060158a60ff16815481106119c2576119c26127af565b906000526020600020906009020160070154915060158a60ff16815481106119ec576119ec6127af565b906000526020600020906009020160080160009054906101000a900460ff1690509193959799909294969850565b6001600160a01b038216600090815260166020526040812080548291829182918291829190819089908110611a5157611a516127af565b60009182526020909120600490910201546015805460ff90921698509088908110611a7e57611a7e6127af565b9060005260206000209060090201600101549550806000018881548110611aa757611aa76127af565b9060005260206000209060040201600101549450806000018881548110611ad057611ad06127af565b9060005260206000209060040201600201549350611b1a611b05620151806015846000018c815481106108e2576108e26127af565b826000018a81548110610935576109356127af565b9250806000018881548110611b3157611b316127af565b906000526020600020906004020160030160009054906101000a900460ff169150509295509295509295565b601b544211611b6b57600080fd5b60155460ff831610611baf5760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b210283630b71760991b60448201526064016107a1565b60158260ff1681548110611bc557611bc56127af565b906000526020600020906009020160020154811015611c475760405162461bcd60e51b815260206004820152603860248201527f4c657373207468616e206d696e696d756d20616d6f756e74207265717569726560448201527732103337b9103a34329039b2b632b1ba32b210283630b71760411b60648201526084016107a1565b60158260ff1681548110611c5d57611c5d6127af565b906000526020600020906009020160030154811115611cdf5760405162461bcd60e51b815260206004820152603860248201527f4d6f7265207468616e206d6178696d756d20616d6f756e74207265717569726560448201527732103337b9103a34329039b2b632b1ba32b210283630b71760411b60648201526084016107a1565b60158260ff1681548110611cf557611cf56127af565b600091825260209091206008600990920201015460ff16611d585760405162461bcd60e51b815260206004820152601960248201527f506c616e2073656c65637465642069732064697361626c65640000000000000060448201526064016107a1565b600b54611d68826107e83361158a565b1115611dc05760405162461bcd60e51b815260206004820152602160248201527f4d61782077616c6c6574206465706f736974206c696d697420726561636865646044820152601760f91b60648201526084016107a1565b6000546040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b03909116906323b872dd90606401602060405180830381600087803b158015611e1257600080fd5b505af1158015611e26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4a9190612865565b50337f2899dc8c12def1caa9accb64257cf2fd9f960f21bb27a560a757eae3c2ec43c1611e7683612439565b60405190815260200160405180910390a233600090815260166020526040902060048101546001600160a01b0316611f30576001600160a01b0384163314611ed6576004810180546001600160a01b0319166001600160a01b0386161790555b60048101546001600160a01b03168015611f2e576001600160a01b038116600090815260166020526040902060050154611f11906001612291565b6001600160a01b0382166000908152601660205260409020600501555b505b60048101546001600160a01b03161561203b5760048101546001600160a01b03168015612039576000611f746103e8610b63600454876122f790919063ffffffff16565b6001600160a01b038316600090815260166020526040902060060154909150611f9d9082612291565b6001600160a01b0383166000908152601660205260409020600681019190915560070154611fcb9082612291565b6001600160a01b038316600090815260166020526040902060070155601354611ff49082612291565b60135560405181815233906001600160a01b038416907f328838ddfc48ad5ae5531b1ad95dfb22b42ff1866853e474375ffef2c63d8e509060200160405180910390a3505b505b80546120a05760ff83166000908152600182016020526040902042908190556006546120679190612291565b60028201556040513381527f9fd565cd14c3c391679eb0cad12a14dcf7534e9d3462bcb9b67a098a9bbbc24a9060200160405180910390a15b6040805160808101825260ff8086168252602080830186815242948401948552600060608501818152875460018181018a55898452949092209551600490920290950180549190941660ff199182161784559051918301919091559251600282015590516003918201805491151591909316179091558101546121239083612291565b60038201556011546121359083612291565b601155601454612146906001612291565b601481905550612187600160158560ff1681548110612167576121676127af565b90600052602060002090600902016004015461229190919063ffffffff16565b60158460ff168154811061219d5761219d6127af565b9060005260206000209060090201600401819055506121ec8260158560ff16815481106121cc576121cc6127af565b90600052602060002090600902016005015461229190919063ffffffff16565b60158460ff1681548110612202576122026127af565b6000918252602091829020600560099092020101919091556040805160ff8616815291820184905233917f3a89eb89956dcf6537585a2372d4e629e18622cce06c2b4fee6301ae0840e24191016111ff565b601a546001600160a01b0316331461227e5760405162461bcd60e51b81526004016107a190612787565b606481111561228c57600080fd5b600955565b60008061229e83856128a9565b9050838110156122f05760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016107a1565b9392505050565b60008261230657506000610771565b6000612312838561282f565b90508261231f8583612887565b146122f05760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016107a1565b60008082116123c75760405162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f00000000000060448201526064016107a1565b60006123d38385612887565b949350505050565b60008282111561242d5760405162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f77000060448201526064016107a1565b60006123d3838561284e565b6000806124576103e8610b63600254866122f790919063ffffffff16565b905060006124766103e8610b63600354876122f790919063ffffffff16565b60005460175460405163a9059cbb60e01b81526001600160a01b03918216600482015260248101869052929350169063a9059cbb90604401602060405180830381600087803b1580156124c857600080fd5b505af11580156124dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125009190612865565b5060005460185460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810185905291169063a9059cbb90604401602060405180830381600087803b15801561255157600080fd5b505af1158015612565573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125899190612865565b5060005460195460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291169063a9059cbb90604401602060405180830381600087803b1580156125da57600080fd5b505af11580156125ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126129190612865565b5060006126208360026122f7565b905061262c8183612291565b95945050505050565b80356001600160a01b038116811461264c57600080fd5b919050565b60006020828403121561266357600080fd5b6122f082612635565b60006020828403121561267e57600080fd5b5035919050565b6000806040838503121561269857600080fd5b6126a183612635565b915060208301358060000b81146126b757600080fd5b809150509250929050565b803560ff8116811461264c57600080fd5b6000602082840312156126e557600080fd5b6122f0826126c2565b6000806040838503121561270157600080fd5b61270a83612635565b9150612718602084016126c2565b90509250929050565b6000806040838503121561273457600080fd5b61273d83612635565b946020939093013593505050565b60008060006060848603121561276057600080fd5b61276984612635565b9250612777602085016126c2565b9150604084013590509250925092565b6020808252600e908201526d41646d696e20757365206f6e6c7960901b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156127ef576127ef6127c5565b5060010190565b60006020828403121561280857600080fd5b5051919050565b600060ff821660ff811415612826576128266127c5565b60010192915050565b6000816000190483118215151615612849576128496127c5565b500290565b600082821015612860576128606127c5565b500390565b60006020828403121561287757600080fd5b815180151581146122f057600080fd5b6000826128a457634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156128bc576128bc6127c5565b50019056fea2646970667358221220d7dde76938218eef7a1f06b28c6283f17c839ce9140270b9e571e16901378f0964736f6c63430008090033000000000000000000000000a8525e8ada1bef4bde661236636bd07aaf44ff33000000000000000000000000903b575da41579495813b5a0665df4fef5fccb3b0000000000000000000000007ef7a2f007a412247d44276c2e7ca63d19daa161

Deployed ByteCode

0x608060405234801561001057600080fd5b50600436106102f15760003560e01c806378e979251161019d578063aecaa634116100e9578063e84cdabc116100a2578063f5b7628c1161007c578063f5b7628c146106fa578063f9eb400814610702578063fb4cb32b1461070b578063fbfcb2791461073757600080fd5b8063e84cdabc146106a8578063e85abe09146106bb578063f4f9f3a9146106e757600080fd5b8063aecaa634146105c5578063bd4a982b1461061e578063c0806b031461064a578063c25f57e914610690578063ca49a54314610699578063e3d190031461069f57600080fd5b8063899b8f371161015657806398b7baa91161013057806398b7baa914610542578063a8aeb6c214610555578063a9996f291461057e578063ac0b49be1461058757600080fd5b8063899b8f371461051d5780639383e5cd14610526578063950d91e91461053957600080fd5b806378e97925146104dd5780637e3abeea146104e6578063852aa16b146104f9578063852edd3d146105025780638687d8a91461050b578063890f137b1461051457600080fd5b806336144c9a1161025c5780634ce87053116102155780636386c1c7116101ef5780636386c1c71461048b57806369b11dd5146104b95780636bb18556146104c25780636f9fb98a146104d557600080fd5b80634ce87053146104545780635216aeec1461046f578063582c80d81461047857600080fd5b806336144c9a146103cc5780633ccfd60b146103fb578063452bc1da14610403578063485217171461041657806348c372031461041f57806348d44bd11461044b57600080fd5b80632d9a5353116102ae5780632d9a535314610369578063325b37db1461039457806332bc298c146103a757806333a8915a146103b1578063351ed951146103ba5780633578584f146103c357600080fd5b8063040a772e146102f657806309f83b381461031c578063153ab9df146103315780631b537d7e1461034457806320600bd71461034d5780632b039d0e14610356575b600080fd5b610309610304366004612651565b610763565b6040519081526020015b60405180910390f35b61032f61032a36600461266c565b610777565b005b61030961033f366004612651565b6107bd565b610309600d5481565b61030960035481565b61032f610364366004612651565b6107ee565b60005461037c906001600160a01b031681565b6040516001600160a01b039091168152602001610313565b6103096103a2366004612685565b61083a565b6103096201518081565b61030960045481565b610309600b5481565b61030960065481565b61037c6103da366004612651565b6001600160a01b039081166000908152601660205260409020600401541690565b61032f610cac565b61032f6104113660046126d3565b61120d565b61030960095481565b61030961042d366004612651565b6001600160a01b031660009081526016602052604090206007015490565b61030960025481565b60115460135460408051928352602083019190915201610313565b61030960115481565b610309610486366004612651565b61158a565b61049e610499366004612651565b6115c5565b60408051938452602084019290925290820152606001610313565b61030960135481565b6103096104d0366004612651565b611603565b61030961162f565b610309601b5481565b6103096104f4366004612651565b6116b0565b610309600a5481565b610309600e5481565b61030960085481565b610309600c5481565b61030960145481565b6103096105343660046126ee565b61173e565b61030960075481565b61032f61055036600461266c565b611849565b610309610563366004612651565b6001600160a01b031660009081526016602052604090205490565b61030960055481565b6103096105953660046126ee565b6001600160a01b038216600090815260166020908152604080832060ff8516845260010190915290205492915050565b6105d86105d33660046126d3565b611878565b60408051998a5260208a0198909852968801959095526060870193909352608086019190915260a085015260c084015260e0830152151561010082015261012001610313565b61030961062c366004612651565b6001600160a01b031660009081526016602052604090206002015490565b61065d610658366004612721565b611a1a565b6040805160ff909716875260208701959095529385019290925260608401526080830152151560a082015260c001610313565b61030960125481565b42610309565b61030960105481565b61032f6106b636600461274b565b611b5d565b6103096106c9366004612651565b6001600160a01b031660009081526016602052604090206006015490565b61032f6106f536600461266c565b612254565b601554610309565b610309600f5481565b610309610719366004612651565b6001600160a01b031660009081526016602052604090206008015490565b610309610745366004612651565b6001600160a01b031660009081526016602052604090206005015490565b60006107718260001961083a565b92915050565b601a546001600160a01b031633146107aa5760405162461bcd60e51b81526004016107a190612787565b60405180910390fd5b60a08111156107b857600080fd5b600455565b60006107716107cb83610763565b6001600160a01b0384166000908152601660205260409020600601545b90612291565b601a546001600160a01b031633146108185760405162461bcd60e51b81526004016107a190612787565b601a80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0382166000908152601660205260408120600281015482908190421061086b57826002015461086d565b425b905060005b8354811015610ca1576000198660000b13156108bf578560ff168460000182815481106108a1576108a16127af565b600091825260209091206004909102015460ff16146108bf57610c8f565b60006109556109206201518060158860000186815481106108e2576108e26127af565b6000918252602090912060049091020154815460ff909116908110610909576109096127af565b6000918252602090912060099091020154906122f7565b866000018481548110610935576109356127af565b90600052602060002090600402016002015461229190919063ffffffff16565b905080856001016000876000018581548110610973576109736127af565b6000918252602080832060049092029091015460ff1683528201929092526040019020541015610c8d57600060158660000184815481106109b6576109b66127af565b6000918252602090912060049091020154815460ff9091169081106109dd576109dd6127af565b9060005260206000209060090201600101549050600c54866000018481548110610a0957610a096127af565b90600052602060002090600402016002015410610b2257856000018381548110610a3557610a356127af565b600091825260209091206004909102015460ff16610a6257600d54610a5b908290612291565b9050610b22565b856000018381548110610a7757610a776127af565b600091825260209091206004909102015460ff1660011415610aa157600e54610a5b908290612291565b856000018381548110610ab657610ab66127af565b600091825260209091206004909102015460ff1660021415610ae057600f54610a5b908290612291565b856000018381548110610af557610af56127af565b600091825260209091206004909102015460ff1660031415610b2257601054610b1f908290612291565b90505b6000610b696103e8610b63848a6000018881548110610b4357610b436127af565b9060005260206000209060040201600101546122f790919063ffffffff16565b90612376565b90506000876001016000896000018781548110610b8857610b886127af565b6000918252602080832060049092029091015460ff1683528201929092526040019020548854899087908110610bc057610bc06127af565b90600052602060002090600402016002015411610c1b57876001016000896000018781548110610bf257610bf26127af565b6000918252602080832060049092029091015460ff168352820192909252604001902054610c43565b876000018581548110610c3057610c306127af565b9060005260206000209060040201600201545b90506000868510610c545786610c56565b845b905080821015610c8857610c85610c7e62015180610b63610c7785876123db565b87906122f7565b8990612291565b97505b505050505b505b80610c99816127db565b915050610872565b509095945050505050565b601b544211610cba57600080fd5b33600081815260166020526040812091610cd390610763565b336000908152601660205260409020600601549091508015610d035760006006840155610d008282612291565b91505b60008211610d4b5760405162461bcd60e51b81526020600482015260156024820152745573657220686173206e6f206469766964656e647360581b60448201526064016107a1565b600080546040516370a0823160e01b81523060048201526001600160a01b03909116906370a082319060240160206040518083038186803b158015610d8f57600080fd5b505afa158015610da3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc791906127f6565b905082811015610df957610ddb83826123db565b600685018190556007850154610df091612291565b60078501559150815b60005b60155460ff82161015610ec25760075460ff821660009081526001870160205260409020544291610e2d9190612291565b1115610e995760405162461bcd60e51b815260206004820152603560248201527f5769746864726177616c732063616e206f6e6c79206265206d6164652061667460448201527432b9103bb4ba34323930bb9031b7b7b63237bbb71760591b60648201526084016107a1565b60ff81166000908152600186016020526040902042905580610eba8161280f565b915050610dfc565b50600a54831115610ee657600a54610edb9084906123db565b6006850155600a5492505b610f0b610f046103e8610b63600554876122f790919063ffffffff16565b84906123db565b9250610f226006544261229190919063ffffffff16565b60028501556008840154610f369084612291565b6008850155600054600380546001600160a01b039092169163a9059cbb913391610f5f9161282f565b610f69908761284e565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b158015610faf57600080fd5b505af1158015610fc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe79190612865565b506000546017546001600160a01b039182169163a9059cbb911661100c601e87612887565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561105257600080fd5b505af1158015611066573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108a9190612865565b506000546018546001600160a01b039182169163a9059cbb91166110af601e87612887565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b1580156110f557600080fd5b505af1158015611109573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112d9190612865565b506000546019546001600160a01b039182169163a9059cbb9116611152601e87612887565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561119857600080fd5b505af11580156111ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d09190612865565b5060405183815233907f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5906020015b60405180910390a250505050565b601b54421161121b57600080fd5b60155460ff82161061125e5760405162461bcd60e51b815260206004820152600c60248201526b24b73b30b634b210383630b760a11b60448201526064016107a1565b60158160ff1681548110611274576112746127af565b600091825260209091206008600990920201015460ff166112d75760405162461bcd60e51b815260206004820152601a60248201527f506c616e2073656c65637465642069732064697361626c65642e00000000000060448201526064016107a1565b33600090815260166020908152604080832060085460ff861685526001820190935292205442916113089190612291565b11156113865760405162461bcd60e51b815260206004820152604160248201527f436f6d706f756e64696e672f5265696e76657374696e672063616e206f6e6c7960448201527f206265206d61646520616674657220636f6d706f756e6420636f6f6c646f776e6064820152601760f91b608482015260a4016107a1565b6000611392338461083a565b905060006113bb6113b46103e8610b63600954866122f790919063ffffffff16565b8390612291565b6040805160808101825260ff80881682526020808301858152429484019485526001606085018181528a548083018c5560008c8152949094209551600490940290950180549390941660ff199384161784559051908301559251600282015590516003909101805491151591909216179055600984015490915061143f9082612291565b600984015560ff841660009081526001840160205260409020429081905560065461146a9190612291565b600284015560125461147c9082612291565b6012819055506114bc8160158660ff168154811061149c5761149c6127af565b90600052602060002090600902016007015461229190919063ffffffff16565b60158560ff16815481106114d2576114d26127af565b906000526020600020906009020160070181905550611522600160158660ff1681548110611502576115026127af565b90600052602060002090600902016006015461229190919063ffffffff16565b60158560ff1681548110611538576115386127af565b6000918252602091829020600660099092020101919091556040805160ff8716815291820183905233917f9c2ae386c34bd727f17e92b569b309633eea3f3a6ded6debcec58fc3d15de10c91016111ff565b60008060005b60155460ff821610156115be576115aa6113b4858361173e565b9150806115b68161280f565b915050611590565b5092915050565b60008060006115d3846116b0565b6001600160a01b039490941660009081526016602052604090206008810154600590910154949590949350915050565b6001600160a01b03811660009081526016602052604081206006810154600790910154610771916123db565b600080546040516370a0823160e01b81523060048201526001600160a01b03909116906370a082319060240160206040518083038186803b15801561167357600080fd5b505afa158015611687573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ab91906127f6565b905090565b6000805b6001600160a01b038316600090815260166020526040902054811015611738576001600160a01b03831660009081526016602052604090208054611724919083908110611703576117036127af565b9060005260206000209060040201600101548361229190919063ffffffff16565b915080611730816127db565b9150506116b4565b50919050565b6001600160a01b038216600090815260166020526040812081805b8254811015611840578460ff1683600001828154811061177b5761177b6127af565b600091825260209091206004909102015460ff16146117995761182e565b60006117d16117bc6201518060158760000186815481106108e2576108e26127af565b856000018481548110610935576109356127af565b60ff8716600090815260018601602052604090205490915081111561182c57611829846000018381548110611808576118086127af565b9060005260206000209060040201600101548461229190919063ffffffff16565b92505b505b80611838816127db565b915050611759565b50949350505050565b601a546001600160a01b031633146118735760405162461bcd60e51b81526004016107a190612787565b601b55565b600080600080600080600080600060158a60ff168154811061189c5761189c6127af565b906000526020600020906009020160000154985060158a60ff16815481106118c6576118c66127af565b906000526020600020906009020160010154975060158a60ff16815481106118f0576118f06127af565b906000526020600020906009020160020154965060158a60ff168154811061191a5761191a6127af565b906000526020600020906009020160030154955060158a60ff1681548110611944576119446127af565b906000526020600020906009020160040154945060158a60ff168154811061196e5761196e6127af565b906000526020600020906009020160050154935060158a60ff1681548110611998576119986127af565b906000526020600020906009020160060154925060158a60ff16815481106119c2576119c26127af565b906000526020600020906009020160070154915060158a60ff16815481106119ec576119ec6127af565b906000526020600020906009020160080160009054906101000a900460ff1690509193959799909294969850565b6001600160a01b038216600090815260166020526040812080548291829182918291829190819089908110611a5157611a516127af565b60009182526020909120600490910201546015805460ff90921698509088908110611a7e57611a7e6127af565b9060005260206000209060090201600101549550806000018881548110611aa757611aa76127af565b9060005260206000209060040201600101549450806000018881548110611ad057611ad06127af565b9060005260206000209060040201600201549350611b1a611b05620151806015846000018c815481106108e2576108e26127af565b826000018a81548110610935576109356127af565b9250806000018881548110611b3157611b316127af565b906000526020600020906004020160030160009054906101000a900460ff169150509295509295509295565b601b544211611b6b57600080fd5b60155460ff831610611baf5760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b210283630b71760991b60448201526064016107a1565b60158260ff1681548110611bc557611bc56127af565b906000526020600020906009020160020154811015611c475760405162461bcd60e51b815260206004820152603860248201527f4c657373207468616e206d696e696d756d20616d6f756e74207265717569726560448201527732103337b9103a34329039b2b632b1ba32b210283630b71760411b60648201526084016107a1565b60158260ff1681548110611c5d57611c5d6127af565b906000526020600020906009020160030154811115611cdf5760405162461bcd60e51b815260206004820152603860248201527f4d6f7265207468616e206d6178696d756d20616d6f756e74207265717569726560448201527732103337b9103a34329039b2b632b1ba32b210283630b71760411b60648201526084016107a1565b60158260ff1681548110611cf557611cf56127af565b600091825260209091206008600990920201015460ff16611d585760405162461bcd60e51b815260206004820152601960248201527f506c616e2073656c65637465642069732064697361626c65640000000000000060448201526064016107a1565b600b54611d68826107e83361158a565b1115611dc05760405162461bcd60e51b815260206004820152602160248201527f4d61782077616c6c6574206465706f736974206c696d697420726561636865646044820152601760f91b60648201526084016107a1565b6000546040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b03909116906323b872dd90606401602060405180830381600087803b158015611e1257600080fd5b505af1158015611e26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4a9190612865565b50337f2899dc8c12def1caa9accb64257cf2fd9f960f21bb27a560a757eae3c2ec43c1611e7683612439565b60405190815260200160405180910390a233600090815260166020526040902060048101546001600160a01b0316611f30576001600160a01b0384163314611ed6576004810180546001600160a01b0319166001600160a01b0386161790555b60048101546001600160a01b03168015611f2e576001600160a01b038116600090815260166020526040902060050154611f11906001612291565b6001600160a01b0382166000908152601660205260409020600501555b505b60048101546001600160a01b03161561203b5760048101546001600160a01b03168015612039576000611f746103e8610b63600454876122f790919063ffffffff16565b6001600160a01b038316600090815260166020526040902060060154909150611f9d9082612291565b6001600160a01b0383166000908152601660205260409020600681019190915560070154611fcb9082612291565b6001600160a01b038316600090815260166020526040902060070155601354611ff49082612291565b60135560405181815233906001600160a01b038416907f328838ddfc48ad5ae5531b1ad95dfb22b42ff1866853e474375ffef2c63d8e509060200160405180910390a3505b505b80546120a05760ff83166000908152600182016020526040902042908190556006546120679190612291565b60028201556040513381527f9fd565cd14c3c391679eb0cad12a14dcf7534e9d3462bcb9b67a098a9bbbc24a9060200160405180910390a15b6040805160808101825260ff8086168252602080830186815242948401948552600060608501818152875460018181018a55898452949092209551600490920290950180549190941660ff199182161784559051918301919091559251600282015590516003918201805491151591909316179091558101546121239083612291565b60038201556011546121359083612291565b601155601454612146906001612291565b601481905550612187600160158560ff1681548110612167576121676127af565b90600052602060002090600902016004015461229190919063ffffffff16565b60158460ff168154811061219d5761219d6127af565b9060005260206000209060090201600401819055506121ec8260158560ff16815481106121cc576121cc6127af565b90600052602060002090600902016005015461229190919063ffffffff16565b60158460ff1681548110612202576122026127af565b6000918252602091829020600560099092020101919091556040805160ff8616815291820184905233917f3a89eb89956dcf6537585a2372d4e629e18622cce06c2b4fee6301ae0840e24191016111ff565b601a546001600160a01b0316331461227e5760405162461bcd60e51b81526004016107a190612787565b606481111561228c57600080fd5b600955565b60008061229e83856128a9565b9050838110156122f05760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016107a1565b9392505050565b60008261230657506000610771565b6000612312838561282f565b90508261231f8583612887565b146122f05760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016107a1565b60008082116123c75760405162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f00000000000060448201526064016107a1565b60006123d38385612887565b949350505050565b60008282111561242d5760405162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f77000060448201526064016107a1565b60006123d3838561284e565b6000806124576103e8610b63600254866122f790919063ffffffff16565b905060006124766103e8610b63600354876122f790919063ffffffff16565b60005460175460405163a9059cbb60e01b81526001600160a01b03918216600482015260248101869052929350169063a9059cbb90604401602060405180830381600087803b1580156124c857600080fd5b505af11580156124dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125009190612865565b5060005460185460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810185905291169063a9059cbb90604401602060405180830381600087803b15801561255157600080fd5b505af1158015612565573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125899190612865565b5060005460195460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291169063a9059cbb90604401602060405180830381600087803b1580156125da57600080fd5b505af11580156125ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126129190612865565b5060006126208360026122f7565b905061262c8183612291565b95945050505050565b80356001600160a01b038116811461264c57600080fd5b919050565b60006020828403121561266357600080fd5b6122f082612635565b60006020828403121561267e57600080fd5b5035919050565b6000806040838503121561269857600080fd5b6126a183612635565b915060208301358060000b81146126b757600080fd5b809150509250929050565b803560ff8116811461264c57600080fd5b6000602082840312156126e557600080fd5b6122f0826126c2565b6000806040838503121561270157600080fd5b61270a83612635565b9150612718602084016126c2565b90509250929050565b6000806040838503121561273457600080fd5b61273d83612635565b946020939093013593505050565b60008060006060848603121561276057600080fd5b61276984612635565b9250612777602085016126c2565b9150604084013590509250925092565b6020808252600e908201526d41646d696e20757365206f6e6c7960901b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156127ef576127ef6127c5565b5060010190565b60006020828403121561280857600080fd5b5051919050565b600060ff821660ff811415612826576128266127c5565b60010192915050565b6000816000190483118215151615612849576128496127c5565b500290565b600082821015612860576128606127c5565b500390565b60006020828403121561287757600080fd5b815180151581146122f057600080fd5b6000826128a457634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156128bc576128bc6127c5565b50019056fea2646970667358221220d7dde76938218eef7a1f06b28c6283f17c839ce9140270b9e571e16901378f0964736f6c63430008090033