ETH Price: $2,641.67 (-1.40%)

Contract

0xb921BeF78ce96Fd1489C145363aA4848d0b4c472
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00
Transaction Hash
Method
Block
From
To
Deposit103274402020-06-24 8:38:251691 days ago1592987905IN
0xb921BeF7...8d0b4c472
0 ETH0.0110629534
Deposit103273582020-06-24 8:22:201691 days ago1592986940IN
0xb921BeF7...8d0b4c472
0 ETH0.0128567341
Deposit103273372020-06-24 8:18:111691 days ago1592986691IN
0xb921BeF7...8d0b4c472
0 ETH0.0114790141

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
EtherHives

Compiler Version
v0.6.8+commit.0bbfe453

Optimization Enabled:
Yes with 200 runs

Other Settings:
istanbul EvmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-06-23
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.6.0;


library Math {
    
    function max(uint256 a, uint256 b) internal pure returns (uint256) {
        return a >= b ? a : b;
    }

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

    
    function average(uint256 a, uint256 b) internal pure returns (uint256) {
        
        return (a / 2) + (b / 2) + ((a % 2 + b % 2) / 2);
    }
}

contract Context {
    
    
    constructor () internal { }

    function _msgSender() internal view virtual returns (address payable) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes memory) {
        this; 
        return msg.data;
    }
}

contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    
    constructor () internal {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    
    function owner() public view returns (address) {
        return _owner;
    }

    
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

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) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        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) {
        return div(a, b, "SafeMath: division by zero");
    }

    
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        
        require(b > 0, errorMessage);
        uint256 c = a / b;
        

        return c;
    }

    
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

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

contract UserBonus {

    using SafeMath for uint256;

    uint256 public constant BONUS_PERCENTS_PER_WEEK = 1;
    uint256 public constant BONUS_TIME = 1 weeks;

    struct UserBonusData {
        uint256 threadPaid;
        uint256 lastPaidTime;
        uint256 numberOfUsers;
        mapping(address => bool) userRegistered;
        mapping(address => uint256) userPaid;
    }

    UserBonusData public bonus;

    event BonusPaid(uint256 users, uint256 amount);
    event UserAddedToBonus(address indexed user);

    modifier payRepBonusIfNeeded {
        payRepresentativeBonus();
        _;
    }

    constructor() public {
        bonus.lastPaidTime = block.timestamp;
    }

    function payRepresentativeBonus() public {
        while (bonus.numberOfUsers > 0 && bonus.lastPaidTime.add(BONUS_TIME) <= block.timestamp) {
            uint256 reward = address(this).balance.mul(BONUS_PERCENTS_PER_WEEK).div(100);
            bonus.threadPaid = bonus.threadPaid.add(reward.div(bonus.numberOfUsers));
            bonus.lastPaidTime = bonus.lastPaidTime.add(BONUS_TIME);
            emit BonusPaid(bonus.numberOfUsers, reward);
        }
    }

    function userRegisteredForBonus(address user) public view returns(bool) {
        return bonus.userRegistered[user];
    }

    function userBonusPaid(address user) public view returns(uint256) {
        return bonus.userPaid[user];
    }

    function userBonusEarned(address user) public view returns(uint256) {
        return bonus.userRegistered[user] ? bonus.threadPaid.sub(bonus.userPaid[user]) : 0;
    }

    function retrieveBonus() public virtual payRepBonusIfNeeded {
        require(bonus.userRegistered[msg.sender], "User not registered for bonus");

        uint256 amount = Math.min(address(this).balance, userBonusEarned(msg.sender));
        bonus.userPaid[msg.sender] = bonus.userPaid[msg.sender].add(amount);
        msg.sender.transfer(amount);
    }

    function _addUserToBonus(address user) internal payRepBonusIfNeeded {
        require(!bonus.userRegistered[user], "User already registered for bonus");

        bonus.userRegistered[user] = true;
        bonus.userPaid[user] = bonus.threadPaid;
        bonus.numberOfUsers = bonus.numberOfUsers.add(1);
        emit UserAddedToBonus(user);
    }
}

contract Claimable is Ownable {

    address public pendingOwner;

    modifier onlyPendingOwner() {
        require(msg.sender == pendingOwner);
        _;
    }

    function renounceOwnership() public override(Ownable) onlyOwner {
        revert();
    }

    function transferOwnership(address newOwner) public override(Ownable) onlyOwner {
        pendingOwner = newOwner;
    }

    function claimOwnership() public virtual onlyPendingOwner {
        transferOwnership(pendingOwner);
        delete pendingOwner;
    }
}

contract EtherHives is Claimable, UserBonus {

    struct Player {
        uint256 registeredDate;
        bool airdropCollected;
        address referrer;
        uint256 balanceHoney;
        uint256 balanceWax;
        uint256 points;
        uint256 medals;
        uint256 qualityLevel;
        uint256 lastTimeCollected;
        uint256 unlockedBee;
        uint256[BEES_COUNT] bees;

        uint256 totalDeposited;
        uint256 totalWithdrawed;
        uint256 referralsTotalDeposited;
        uint256 subreferralsCount;
        address[] referrals;
    }

    uint256 public constant BEES_COUNT = 8;
    uint256 public constant SUPER_BEE_INDEX = BEES_COUNT - 1;
    uint256 public constant TRON_BEE_INDEX = BEES_COUNT - 2;
    uint256 public constant MEDALS_COUNT = 10;
    uint256 public constant QUALITIES_COUNT = 6;
    uint256[BEES_COUNT] public BEES_PRICES = [0e18, 1500e18, 7500e18, 30000e18, 75000e18, 250000e18, 750000e18, 100000e18];
    uint256[BEES_COUNT] public BEES_LEVELS_PRICES = [0e18, 0e18, 11250e18, 45000e18, 112500e18, 375000e18, 1125000e18, 0];
    uint256[BEES_COUNT] public BEES_MONTHLY_PERCENTS = [0, 200, 204, 208, 212, 216, 220, 300];
    uint256[MEDALS_COUNT] public MEDALS_POINTS = [0e18, 50000e18, 190000e18, 510000e18, 1350000e18, 3225000e18, 5725000e18, 8850000e18, 12725000e18, 23500000e18];
    uint256[MEDALS_COUNT] public MEDALS_REWARDS = [0e18, 3500e18, 10500e18, 24000e18, 65000e18, 140000e18, 185000e18, 235000e18, 290000e18, 800000e18];
    uint256[QUALITIES_COUNT] public QUALITY_HONEY_PERCENT = [80, 82, 84, 86, 88, 90];
    uint256[QUALITIES_COUNT] public QUALITY_PRICE = [0e18, 15000e18, 50000e18, 120000e18, 250000e18, 400000e18];

    uint256 public constant COINS_PER_ETH = 250000;
    uint256 public constant MAX_BEES_PER_TARIFF = 32;
    uint256 public constant FIRST_BEE_AIRDROP_AMOUNT = 500e18;
    uint256 public constant ADMIN_PERCENT = 10;
    uint256 public constant HONEY_DISCOUNT_PERCENT = 10;
    uint256 public constant SUPERBEE_PERCENT_UNLOCK = 30;
    uint256 public constant SUPER_BEE_BUYER_PERIOD = 7 days;
    uint256[] public REFERRAL_PERCENT_PER_LEVEL = [5, 3, 2];
    uint256[] public REFERRAL_POINT_PERCENT = [50, 25, 0];

    uint256 public maxBalance;
    uint256 public totalPlayers;
    uint256 public totalDeposited;
    uint256 public totalWithdrawed;
    uint256 public totalBeesBought;
    mapping(address => Player) public players;

    event Registered(address indexed user, address indexed referrer);
    event Deposited(address indexed user, uint256 amount);
    event Withdrawed(address indexed user, uint256 amount);
    event ReferrerPaid(address indexed user, address indexed referrer, uint256 indexed level, uint256 amount);
    event MedalAwarded(address indexed user, uint256 indexed medal);
    event QualityUpdated(address indexed user, uint256 indexed quality);
    event RewardCollected(address indexed user, uint256 honeyReward, uint256 waxReward);
    event BeeUnlocked(address indexed user, uint256 bee);
    event BeesBought(address indexed user, uint256 bee, uint256 count);

    modifier payAdminIfNeeded {
        _;
        if (players[owner()].balanceHoney > 0) {
            _withdrawFor(
                address(uint160(owner())),
                players[owner()].balanceHoney
            );
        }
    }

    constructor() public {
        _register(owner(), address(0));
    }

    receive() external payable {
        if (msg.value == 0) {
            if (players[msg.sender].registeredDate > 0) {
                collect();
            }
        } else {
            deposit(address(0));
        }
    }

    function playerBees(address who) public view returns(uint256[BEES_COUNT] memory) {
        return players[who].bees;
    }

    function superBeeUnlocked() public view returns(bool) {
        return address(this).balance <= maxBalance.mul(100 - SUPERBEE_PERCENT_UNLOCK).div(100);
    }

    function referrals(address user) public view returns(address[] memory) {
        return players[user].referrals;
    }

    function referrerOf(address user, address ref) internal view returns(address) {
        if (players[user].registeredDate == 0 && ref != user) {
            return ref;
        }
        return players[user].referrer;
    }

    function transfer(address account, uint256 amount) public returns(bool) {
        require(msg.sender == owner());

        collect();

        _payWithWaxAndHoney(msg.sender, amount);
        players[account].balanceWax = players[account].balanceWax.add(amount);
        return true;
    }

    function deposit(address ref) public payable payRepBonusIfNeeded payAdminIfNeeded {
        Player storage player = players[msg.sender];
        address refAddress = referrerOf(msg.sender, ref);

        require((msg.value == 0) != player.registeredDate > 0, "Send 0 for registration");

        
        if (player.registeredDate == 0) {
            _register(msg.sender, refAddress);
        }

        collect();

        
        uint256 wax = msg.value.mul(COINS_PER_ETH);
        player.balanceWax = player.balanceWax.add(wax);
        player.totalDeposited = player.totalDeposited.add(msg.value);
        totalDeposited = totalDeposited.add(msg.value);
        player.points = player.points.add(wax);
        emit Deposited(msg.sender, msg.value);

        

        _distributeFees(msg.sender, wax, msg.value, refAddress);

        _addToBonusIfNeeded(msg.sender);

        uint256 adminWithdrawed = players[owner()].totalWithdrawed;
        maxBalance = Math.max(maxBalance, address(this).balance.add(adminWithdrawed));
    }

    function withdraw(uint256 amount) public {
        _withdrawFor(msg.sender, amount);
    }

    function _withdrawFor(address payable account, uint256 amount) public {
        Player storage player = players[account];

        collect();

        uint256 value = amount.div(COINS_PER_ETH);
        require(value > 0, "Trying to withdraw too small");
        player.balanceHoney = player.balanceHoney.sub(amount);
        player.totalWithdrawed = player.totalWithdrawed.add(value);
        totalWithdrawed = totalWithdrawed.add(value);
        account.transfer(value);
        emit Withdrawed(account, value);
    }

    function collect() public payRepBonusIfNeeded payAdminIfNeeded {
        Player storage player = players[msg.sender];
        require(player.registeredDate > 0, "Not registered yet");

        if (userBonusEarned(msg.sender) > 0) {
            retrieveBonus();
        }

        (uint256 balanceHoney, uint256 balanceWax) = instantBalance(msg.sender);
        emit RewardCollected(
            msg.sender,
            balanceHoney.sub(player.balanceHoney),
            balanceWax.sub(player.balanceWax)
        );

        if (!player.airdropCollected) {
            player.airdropCollected = true;
        }

        player.balanceHoney = balanceHoney;
        player.balanceWax = balanceWax;
        player.lastTimeCollected = block.timestamp;
    }

    function instantBalance(address account)
        public
        view
        returns(
            uint256 balanceHoney,
            uint256 balanceWax
        )
    {
        Player storage player = players[account];
        if (player.registeredDate == 0) {
            return (0, 0);
        }

        balanceHoney = player.balanceHoney;
        balanceWax = player.balanceWax;

        uint256 collected = earned(account);
        if (!player.airdropCollected) {
            collected = collected.sub(FIRST_BEE_AIRDROP_AMOUNT);
            balanceWax = balanceWax.add(FIRST_BEE_AIRDROP_AMOUNT);
        }

        uint256 honeyReward = collected.mul(QUALITY_HONEY_PERCENT[player.qualityLevel]).div(100);
        uint256 waxReward = collected.sub(honeyReward);

        balanceHoney = balanceHoney.add(honeyReward);
        balanceWax = balanceWax.add(waxReward);
    }

    function unlock(uint256 bee) public payable payRepBonusIfNeeded payAdminIfNeeded {
        Player storage player = players[msg.sender];

        if (msg.value > 0) {
            deposit(address(0));
        }

        collect();

        require(bee < SUPER_BEE_INDEX, "No more levels to unlock"); 
        require(player.bees[bee - 1] == MAX_BEES_PER_TARIFF, "Prev level must be filled");
        require(bee == player.unlockedBee + 1, "Trying to unlock wrong bee type");

        if (bee == TRON_BEE_INDEX) {
            require(player.medals >= 9);
        }
        _payWithWaxAndHoney(msg.sender, BEES_LEVELS_PRICES[bee]);
        player.unlockedBee = bee;
        player.bees[bee] = 1;
        emit BeeUnlocked(msg.sender, bee);
    }

    function buyBees(uint256 bee, uint256 count) public payable payRepBonusIfNeeded payAdminIfNeeded {
        Player storage player = players[msg.sender];

        if (msg.value > 0) {
            deposit(address(0));
        }

        collect();

        require(bee > 0 && bee < BEES_COUNT, "Don't try to buy bees of type 0");
        if (bee == SUPER_BEE_INDEX) {
            require(superBeeUnlocked(), "SuperBee is not unlocked yet");
            require(block.timestamp.sub(player.registeredDate) < SUPER_BEE_BUYER_PERIOD, "You should be registered less than 7 days ago");
        } else {
            require(bee <= player.unlockedBee, "This bee type not unlocked yet");
        }

        require(player.bees[bee].add(count) <= MAX_BEES_PER_TARIFF);
        player.bees[bee] = player.bees[bee].add(count);
        totalBeesBought = totalBeesBought.add(count);
        uint256 honeySpent = _payWithWaxAndHoney(msg.sender, BEES_PRICES[bee].mul(count));

        _distributeFees(msg.sender, honeySpent, 0, referrerOf(msg.sender, address(0)));

        emit BeesBought(msg.sender, bee, count);
    }

    function updateQualityLevel() public payRepBonusIfNeeded payAdminIfNeeded {
        Player storage player = players[msg.sender];

        collect();

        require(player.qualityLevel < QUALITIES_COUNT - 1);
        _payWithHoneyOnly(msg.sender, QUALITY_PRICE[player.qualityLevel + 1]);
        player.qualityLevel++;
        emit QualityUpdated(msg.sender, player.qualityLevel);
    }

    function earned(address user) public view returns(uint256) {
        Player storage player = players[user];
        if (player.registeredDate == 0) {
            return 0;
        }

        uint256 total = 0;
        for (uint i = 1; i < BEES_COUNT; i++) {
            total = total.add(
                player.bees[i].mul(BEES_PRICES[i]).mul(BEES_MONTHLY_PERCENTS[i]).div(100)
            );
        }

        return total
            .mul(block.timestamp.sub(player.lastTimeCollected))
            .div(30 days)
            .add(player.airdropCollected ? 0 : FIRST_BEE_AIRDROP_AMOUNT);
    }

    function collectMedals(address user) public payRepBonusIfNeeded payAdminIfNeeded {
        Player storage player = players[user];

        collect();

        for (uint i = player.medals; i < MEDALS_COUNT; i++) {
            if (player.points >= MEDALS_POINTS[i]) {
                player.balanceWax = player.balanceWax.add(MEDALS_REWARDS[i]);
                player.medals = i + 1;
                emit MedalAwarded(user, i + 1);
            }
        }
    }

    function retrieveBonus() public override(UserBonus) {
        totalWithdrawed = totalWithdrawed.add(userBonusEarned(msg.sender));
        super.retrieveBonus();
    }

    function claimOwnership() public override(Claimable) {
        super.claimOwnership();
        _register(owner(), address(0));
    }

    function _distributeFees(address user, uint256 wax, uint256 deposited, address refAddress) internal {
        
        address(uint160(owner())).transfer(wax * ADMIN_PERCENT / 100 / COINS_PER_ETH);

        
        if (refAddress != address(0)) {
            Player storage referrer = players[refAddress];
            referrer.referralsTotalDeposited = referrer.referralsTotalDeposited.add(deposited);
            _addToBonusIfNeeded(refAddress);

            
            address to = refAddress;
            for (uint i = 0; to != address(0) && i < REFERRAL_PERCENT_PER_LEVEL.length; i++) {
                uint256 reward = wax.mul(REFERRAL_PERCENT_PER_LEVEL[i]).div(100);
                players[to].balanceHoney = players[to].balanceHoney.add(reward);
                players[to].points = players[to].points.add(wax.mul(REFERRAL_POINT_PERCENT[i]).div(100));
                emit ReferrerPaid(user, to, i + 1, reward);
                

                to = players[to].referrer;
            }
        }
    }

    function _register(address user, address refAddress) internal {
        Player storage player = players[user];

        player.registeredDate = block.timestamp;
        player.bees[0] = MAX_BEES_PER_TARIFF;
        player.unlockedBee = 1;
        player.lastTimeCollected = block.timestamp;
        totalBeesBought = totalBeesBought.add(MAX_BEES_PER_TARIFF);
        totalPlayers++;

        if (refAddress != address(0)) {
            player.referrer = refAddress;
            players[refAddress].referrals.push(user);

            if (players[refAddress].referrer != address(0)) {
                players[players[refAddress].referrer].subreferralsCount++;
            }

            _addToBonusIfNeeded(refAddress);
        }
        emit Registered(user, refAddress);
    }

    function _payWithHoneyOnly(address user, uint256 amount) internal {
        Player storage player = players[user];
        player.balanceHoney = player.balanceHoney.sub(amount);
    }

    function _payWithWaxOnly(address user, uint256 amount) internal {
        Player storage player = players[user];
        player.balanceWax = player.balanceWax.sub(amount);
    }

    function _payWithWaxAndHoney(address user, uint256 amount) internal returns(uint256) {
        Player storage player = players[user];

        uint256 wax = Math.min(amount, player.balanceWax);
        uint256 honey = amount.sub(wax).mul(100 - HONEY_DISCOUNT_PERCENT).div(100);

        player.balanceWax = player.balanceWax.sub(wax);
        _payWithHoneyOnly(user, honey);

        return honey;
    }

    function _addToBonusIfNeeded(address user) internal {
        if (user != address(0) && !bonus.userRegistered[user]) {
            Player storage player = players[user];

            if (player.totalDeposited >= 5 ether &&
                player.referrals.length >= 10 &&
                player.referralsTotalDeposited >= 50 ether)
            {
                _addUserToBonus(user);
            }
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"bee","type":"uint256"}],"name":"BeeUnlocked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"bee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"count","type":"uint256"}],"name":"BeesBought","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"users","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BonusPaid","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Deposited","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"medal","type":"uint256"}],"name":"MedalAwarded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"quality","type":"uint256"}],"name":"QualityUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"referrer","type":"address"},{"indexed":true,"internalType":"uint256","name":"level","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ReferrerPaid","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"referrer","type":"address"}],"name":"Registered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"honeyReward","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"waxReward","type":"uint256"}],"name":"RewardCollected","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"}],"name":"UserAddedToBonus","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdrawed","type":"event"},{"inputs":[],"name":"ADMIN_PERCENT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BEES_COUNT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"BEES_LEVELS_PRICES","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"BEES_MONTHLY_PERCENTS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"BEES_PRICES","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BONUS_PERCENTS_PER_WEEK","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BONUS_TIME","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"COINS_PER_ETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FIRST_BEE_AIRDROP_AMOUNT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"HONEY_DISCOUNT_PERCENT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_BEES_PER_TARIFF","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MEDALS_COUNT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"MEDALS_POINTS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"MEDALS_REWARDS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"QUALITIES_COUNT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"QUALITY_HONEY_PERCENT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"QUALITY_PRICE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"REFERRAL_PERCENT_PER_LEVEL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"REFERRAL_POINT_PERCENT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SUPERBEE_PERCENT_UNLOCK","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SUPER_BEE_BUYER_PERIOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SUPER_BEE_INDEX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TRON_BEE_INDEX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"_withdrawFor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"bonus","outputs":[{"internalType":"uint256","name":"threadPaid","type":"uint256"},{"internalType":"uint256","name":"lastPaidTime","type":"uint256"},{"internalType":"uint256","name":"numberOfUsers","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"bee","type":"uint256"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"buyBees","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"claimOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"collect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"collectMedals","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"ref","type":"address"}],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"earned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"instantBalance","outputs":[{"internalType":"uint256","name":"balanceHoney","type":"uint256"},{"internalType":"uint256","name":"balanceWax","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"payRepresentativeBonus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"playerBees","outputs":[{"internalType":"uint256[8]","name":"","type":"uint256[8]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"players","outputs":[{"internalType":"uint256","name":"registeredDate","type":"uint256"},{"internalType":"bool","name":"airdropCollected","type":"bool"},{"internalType":"address","name":"referrer","type":"address"},{"internalType":"uint256","name":"balanceHoney","type":"uint256"},{"internalType":"uint256","name":"balanceWax","type":"uint256"},{"internalType":"uint256","name":"points","type":"uint256"},{"internalType":"uint256","name":"medals","type":"uint256"},{"internalType":"uint256","name":"qualityLevel","type":"uint256"},{"internalType":"uint256","name":"lastTimeCollected","type":"uint256"},{"internalType":"uint256","name":"unlockedBee","type":"uint256"},{"internalType":"uint256","name":"totalDeposited","type":"uint256"},{"internalType":"uint256","name":"totalWithdrawed","type":"uint256"},{"internalType":"uint256","name":"referralsTotalDeposited","type":"uint256"},{"internalType":"uint256","name":"subreferralsCount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"referrals","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"retrieveBonus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"superBeeUnlocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBeesBought","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDeposited","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalPlayers","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalWithdrawed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"bee","type":"uint256"}],"name":"unlock","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"updateQualityLevel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"userBonusEarned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"userBonusPaid","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"userRegisteredForBonus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

61018060405260006080908152685150ae84a8cdf0000060a0526901969368974c05b0000060c05269065a4da25d3016c0000060e052690fe1c215e8f838e00000610100526934f086f3b33b6840000061012052699ed194db19b238c000006101405269152d02c7e14af6800000610160526200008190600790600862000a59565b506040805161010081018252600080825260208201819052690261dd1ce2f2088800009282019290925269098774738bc82220000060608201526917d2a320dd74555000006080820152694f68ca6d8cd91c60000060a082015269ee3a5f48a68b5520000060c082015260e08101919091526200010390600f90600862000a59565b5060408051610100810182526000815260c8602082015260cc9181019190915260d0606082015260d4608082015260d860a082015260dc60c082015261012c60e08201526200015790601790600862000aa7565b50604080516101408101825260008152690a968163f0a57b400000602082015269283bebaef8db3ac0000091810191909152696bff27c8303182c0000060608201526a011ddfa58a6173ffc0000060808201526a02aaeb99ae21b18da0000060a08201526a04bc50df332203a020000060c08201526a07520f7619626a3740000060e08201526a0a869fa1dabc83072000006101008201526a1370518d7bcfd0478000006101208201526200021190601f90600a62000ade565b5060408051610140810182526000815268bdbc41e0348b300000602082015269023934c5a09da1900000918101919091526905150ae84a8cdf0000006060820152690dc3a8351f3d86a000006080820152691da56a4b0835bf80000060a082015269272cdebe93fde1a0000060c08201526931c3602284a35ce0000060e0820152693d68ee76da263140000061010082015269a968163f0a57b4000000610120820152620002c490602990600a62000b1a565b506040805160c08101825260508152605260208201526054918101919091526056606082015260586080820152605a60a08201526200030890603390600662000b55565b506040805160c0810182526000815269032d26d12e980b6000006020820152690a968163f0a57b40000091810191909152691969368974c05b00000060608201526934f086f3b33b6840000060808201526954b40b1f852bda00000060a08201526200037990603990600662000b8b565b506040805160608101825260058152600360208201819052600292820192909252620003a991603f919062000bc6565b50604080516060810182526032815260196020820152600081830152620003d39190600362000bc6565b50348015620003e157600080fd5b506000620003f76001600160e01b036200047316565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350426003556200046d6200045c6001600160e01b036200047816565b60006001600160e01b036200048716565b62000c25565b335b90565b6000546001600160a01b031690565b6001600160a01b038216600090815260466020908152604082204281559160098301015560016008820155426007820155604554620004d190602062001e11620005ee821b17811c565b6045556042805460010190556001600160a01b03821615620005a95760018181018054610100600160a81b0319166101006001600160a01b038681168281029390931790935560008281526046602090815260408220601581018054808901825590845291832090910180546001600160a01b0319168a871617905592905292015491909104161562000595576001600160a01b03808316600090815260466020526040808220600190810154610100900490931682529020601401805490910190555b620005a9826001600160e01b036200065216565b816001600160a01b0316836001600160a01b03167f0a31ee9d46a828884b81003c8498156ea6aa15b9b54bdd0ef0b533d9eba57e5560405160405180910390a3505050565b60008282018381101562000649576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b6001600160a01b038116158015906200068457506001600160a01b03811660009081526005602052604090205460ff16155b15620006fa576001600160a01b03811660009081526046602052604090206011810154674563918244f4000011801590620006c457506015810154600a11155b8015620006de57506802b5e3af16b1880000816013015410155b15620006f857620006f8826001600160e01b03620006fd16565b505b50565b620007106001600160e01b03620007f216565b6001600160a01b03811660009081526005602052604090205460ff16156200076a5760405162461bcd60e51b8152600401808060200182810382526021815260200180620034a76021913960400191505060405180910390fd5b6001600160a01b0381166000908152600560209081526040808320805460ff19166001908117909155600254600684529190932055600454620007b892909162001e11620005ee821b17901c565b6004556040516001600160a01b038216907fffe88a5f59af245d336238ae39a54e562c15024f255db787524f9abd61c8765a90600090a250565b60045415801590620008255750426200082262093a80600260010154620005ee60201b62001e111790919060201c565b11155b15620009085760006200086260646200084e6001476200090a60201b62001e721790919060201c565b6200096860201b62001ecb1790919060201c565b9050620008a0620008866002800154836200096860201b62001ecb1790919060201c565b600260000154620005ee60201b62001e111790919060201c565b600255600354620008c19062093a80620005ee602090811b62001e1117901c565b600355600454604080519182526020820183905280517f51e794b4ff7ffc1b303e757fa6fc3d0b3e162556cc78d07914238fe3c3f96d8f9281900390910190a150620007f2565b565b6000826200091b575060006200064c565b828202828482816200092957fe5b0414620006495760405162461bcd60e51b8152600401808060200182810382526021815260200180620034c86021913960400191505060405180910390fd5b60006200064983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620009b260201b60201c565b6000818362000a425760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101562000a06578181015183820152602001620009ec565b50505050905090810190601f16801562000a345780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858162000a4f57fe5b0495945050505050565b826008810192821562000a95579160200282015b8281111562000a9557825182906001600160501b031690559160200191906001019062000a6d565b5062000aa392915062000c08565b5090565b826008810192821562000a95579160200282015b8281111562000a95578251829061ffff1690559160200191906001019062000abb565b82600a810192821562000a95579160200282015b8281111562000a9557825182906001600160581b031690559160200191906001019062000af2565b82600a810192821562000a95579160200282018281111562000a9557825182906001600160501b031690559160200191906001019062000a6d565b826006810192821562000a95579160200282015b8281111562000a95578251829060ff1690559160200191906001019062000b69565b826006810192821562000a95579160200282018281111562000a9557825182906001600160501b031690559160200191906001019062000a6d565b82805482825590600052602060002090810192821562000a95579160200282018281111562000a95578251829060ff1690559160200191906001019062000b69565b6200047591905b8082111562000aa3576000815560010162000c0f565b6128728062000c356000396000f3fe6080604052600436106103385760003560e01c80639e95452b116101ab578063cfbeb83e116100f7578063e5d6c33a11610095578063f340fa011161006f578063f340fa0114610afa578063f60cdcf614610b20578063f7620b1614610b35578063ff50abdc14610b5f57610370565b8063e5d6c33a14610a9d578063eeb851a214610ab2578063f2fde38b14610ac757610370565b8063dec107d1116100d1578063dec107d11461060b578063e2eb41ff146109ca578063e30c397814610a73578063e522538114610a8857610370565b8063cfbeb83e1461096d578063d9c282f014610982578063dacfbd79146109b557610370565b8063b5affb0511610164578063be6c588a1161013e578063be6c588a146108af578063bfaed58a146108c4578063bfd3dc93146108f7578063c7d88b051461092157610370565b8063b5affb0514610846578063b74126cc14610870578063b913ee4f1461088557610370565b80639e95452b146107aa578063a0484e1b146107bf578063a155b1d414610555578063a35bc9af1461056a578063a9059cbb146107f8578063b2da61b41461083157610370565b806347ee29921161028557806372392890116102235780637e990772116101fd5780637e9907721461056a578063894af783146106af5780638da5cb5b146106f65780639ca423b31461072757610370565b8063723928901461065257806373ad468a1461066757806375b4d78c1461067c57610370565b80635b3730921161025f5780635b373092146105f65780635ec1ddfc1461060b5780636198e33914610620578063715018a61461063d57610370565b806347ee2992146105a25780634ab0cac9146105b75780634e71e0c8146105e157610370565b806321f45653116102f25780633128aa86116102cc5780633128aa861461052257806336fe15e614610555578063435f220c1461056a57806346a837851461057f57610370565b806321f45653146104625780632ab291c1146104ce5780632e1a7d4d146104f857610370565b80628cc262146103755780630486916d146103ba5780630542061e146103cf57806310f230dc146103e4578063127fcac71461040e57806321d378f51461043857610370565b36610370573461036457336000908152604660205260409020541561035f5761035f610b74565b61036e565b61036e6000610d16565b005b600080fd5b34801561038157600080fd5b506103a86004803603602081101561039857600080fd5b50356001600160a01b0316610f0d565b60408051918252519081900360200190f35b3480156103c657600080fd5b506103a8611022565b3480156103db57600080fd5b5061036e611027565b3480156103f057600080fd5b506103a86004803603602081101561040757600080fd5b50356110bd565b34801561041a57600080fd5b506103a86004803603602081101561043157600080fd5b50356110d1565b34801561044457600080fd5b506103a86004803603602081101561045b57600080fd5b50356110de565b34801561046e57600080fd5b506104956004803603602081101561048557600080fd5b50356001600160a01b03166110eb565b604051808261010080838360005b838110156104bb5781810151838201526020016104a3565b5050505090500191505060405180910390f35b3480156104da57600080fd5b506103a8600480360360208110156104f157600080fd5b5035611146565b34801561050457600080fd5b5061036e6004803603602081101561051b57600080fd5b5035611153565b34801561052e57600080fd5b506103a86004803603602081101561054557600080fd5b50356001600160a01b031661115d565b34801561056157600080fd5b506103a86111b5565b34801561057657600080fd5b506103a86111ba565b61036e6004803603604081101561059557600080fd5b50803590602001356111bf565b3480156105ae57600080fd5b506103a8611483565b3480156105c357600080fd5b506103a8600480360360208110156105da57600080fd5b503561148a565b3480156105ed57600080fd5b5061036e611497565b34801561060257600080fd5b5061036e6114b1565b34801561061757600080fd5b506103a86114d7565b61036e6004803603602081101561063657600080fd5b50356114de565b34801561064957600080fd5b5061036e6116ba565b34801561065e57600080fd5b506103a8611724565b34801561067357600080fd5b506103a8611729565b34801561068857600080fd5b5061069161172f565b60408051938452602084019290925282820152519081900360600190f35b3480156106bb57600080fd5b506106e2600480360360208110156106d257600080fd5b50356001600160a01b031661173b565b604080519115158252519081900360200190f35b34801561070257600080fd5b5061070b611759565b604080516001600160a01b039092168252519081900360200190f35b34801561073357600080fd5b5061075a6004803603602081101561074a57600080fd5b50356001600160a01b0316611768565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561079657818101518382015260200161077e565b505050509050019250505060405180910390f35b3480156107b657600080fd5b5061036e6117e0565b3480156107cb57600080fd5b5061036e600480360360408110156107e257600080fd5b506001600160a01b0381351690602001356118ad565b34801561080457600080fd5b506106e26004803603604081101561081b57600080fd5b506001600160a01b0381351690602001356119ff565b34801561083d57600080fd5b506103a8611a8a565b34801561085257600080fd5b506103a86004803603602081101561086957600080fd5b5035611a8f565b34801561087c57600080fd5b506103a8611a9c565b34801561089157600080fd5b506103a8600480360360208110156108a857600080fd5b5035611aa2565b3480156108bb57600080fd5b506103a8611ac0565b3480156108d057600080fd5b5061036e600480360360208110156108e757600080fd5b50356001600160a01b0316611ac5565b34801561090357600080fd5b506103a86004803603602081101561091a57600080fd5b5035611b95565b34801561092d57600080fd5b506109546004803603602081101561094457600080fd5b50356001600160a01b0316611ba2565b6040805192835260208301919091528051918290030190f35b34801561097957600080fd5b506103a8611c9d565b34801561098e57600080fd5b506103a8600480360360208110156109a557600080fd5b50356001600160a01b0316611caa565b3480156109c157600080fd5b506103a8611cc5565b3480156109d657600080fd5b506109fd600480360360208110156109ed57600080fd5b50356001600160a01b0316611cca565b604080519e8f529c151560208f01526001600160a01b03909b168d8d015260608d019990995260808c019790975260a08b019590955260c08a019390935260e08901919091526101008801526101208701526101408601526101608501526101808401526101a083015251908190036101c00190f35b348015610a7f57600080fd5b5061070b611d31565b348015610a9457600080fd5b5061036e610b74565b348015610aa957600080fd5b506106e2611d40565b348015610abe57600080fd5b506103a8611d66565b348015610ad357600080fd5b5061036e60048036036020811015610aea57600080fd5b50356001600160a01b0316611d6c565b61036e60048036036020811015610b1057600080fd5b50356001600160a01b0316610d16565b348015610b2c57600080fd5b506103a8611df8565b348015610b4157600080fd5b506103a860048036036020811015610b5857600080fd5b5035611dfe565b348015610b6b57600080fd5b506103a8611e0b565b610b7c6117e0565b3360009081526046602052604090208054610bd3576040805162461bcd60e51b8152602060048201526012602482015271139bdd081c9959da5cdd195c9959081e595d60721b604482015290519081900360640190fd5b6000610bde3361115d565b1115610bec57610bec6114b1565b600080610bf833611ba2565b91509150336001600160a01b03167f175de791cae106394f6c9daa00b9b55b3c2babff16f57c56b89a8c66601ec59e610c3e856002015485611f0d90919063ffffffff16565b6003860154610c5490859063ffffffff611f0d16565b6040805192835260208301919091528051918290030190a2600183015460ff16610c89576001838101805460ff191690911790555b60028301919091556003820155426007909101556000604681610caa611759565b6001600160a01b03166001600160a01b03168152602001908152602001600020600201541115610d1457610d14610cdf611759565b60466000610ceb611759565b6001600160a01b03166001600160a01b03168152602001908152602001600020600201546118ad565b565b610d1e6117e0565b33600081815260466020526040812091610d389084611f4f565b8254909150151534151415610d94576040805162461bcd60e51b815260206004820152601760248201527f53656e64203020666f7220726567697374726174696f6e000000000000000000604482015290519081900360640190fd5b8154610da457610da43382611fbb565b610dac610b74565b6000610dc1346203d09063ffffffff611e7216565b6003840154909150610dd9908263ffffffff611e1116565b60038401556011830154610df3903463ffffffff611e1116565b6011840155604354610e0b903463ffffffff611e1116565b6043556004830154610e23908263ffffffff611e1116565b600484015560408051348152905133917f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4919081900360200190a2610e6a33823485612110565b610e7333612344565b600060466000610e81611759565b6001600160a01b03168152602081019190915260400160002060120154604154909150610ebd90610eb8478463ffffffff611e1116565b6123da565b60418190555050505050600060466000610ed5611759565b6001600160a01b03166001600160a01b03168152602001908152602001600020600201541115610f0a57610f0a610cdf611759565b50565b6001600160a01b03811660009081526046602052604081208054610f3557600091505061101d565b600060015b6008811015610fbb57610fb1610fa46064610f9860178560088110610f5b57fe5b0154610f8c60078760088110610f6d57fe5b0154896009018860088110610f7e57fe5b01549063ffffffff611e7216565b9063ffffffff611e7216565b9063ffffffff611ecb16565b839063ffffffff611e1116565b9150600101610f3a565b5060018201546110189060ff16610fdb57681b1ae4d6e2ef500000610fde565b60005b61100c62278d00610f98610fff876007015442611f0d90919063ffffffff16565b869063ffffffff611e7216565b9063ffffffff611e1116565b925050505b919050565b600881565b61102f6117e0565b336000908152604660205260409020611046610b74565b600681015460051161105757600080fd5b61107633603983600601546001016006811061106f57fe5b01546123f1565b6006810180546001019081905560405133907fab7da30456d497e9ccbd16778660ea62630c90e6eacce1f230887620f0449c8990600090a350600060466000610caa611759565b600781600881106110ca57fe5b0154905081565b600f81600881106110ca57fe5b603381600681106110ca57fe5b6110f36127ae565b6001600160a01b038216600090815260466020526040908190208151610100810190925260090160088282826020028201915b815481526020019060010190808311611126575b50505050509050919050565b601f81600a81106110ca57fe5b610f0a33826118ad565b6001600160a01b03811660009081526005602052604081205460ff166111845760006111af565b6001600160a01b0382166000908152600660205260409020546002546111af9163ffffffff611f0d16565b92915050565b600681565b600a81565b6111c76117e0565b33600090815260466020526040902034156111e6576111e66000610d16565b6111ee610b74565b6000831180156111fe5750600883105b61124f576040805162461bcd60e51b815260206004820152601f60248201527f446f6e27742074727920746f206275792062656573206f662074797065203000604482015290519081900360640190fd5b600783141561130a57611260611d40565b6112b1576040805162461bcd60e51b815260206004820152601c60248201527f5375706572426565206973206e6f7420756e6c6f636b65642079657400000000604482015290519081900360640190fd5b805462093a80906112c990429063ffffffff611f0d16565b106113055760405162461bcd60e51b815260040180806020018281038252602d8152602001806127ce602d913960400191505060405180910390fd5b611363565b8060080154831115611363576040805162461bcd60e51b815260206004820152601e60248201527f54686973206265652074797065206e6f7420756e6c6f636b6564207965740000604482015290519081900360640190fd5b60206113868383600901866008811061137857fe5b01549063ffffffff611e1116565b111561139157600080fd5b6113a48282600901856008811061137857fe5b8160090184600881106113b357fe5b01556045546113c8908363ffffffff611e1116565b60455560006113e7336113e28560078860088110610f7e57fe5b612428565b9050611400338260006113fb336000611f4f565b612110565b6040805185815260208101859052815133927f3b8efbf8f2c0dcb58c5082344b6573cf15279f2be6c0415141060f747fd8bab1928290030190a2505060006046600061144a611759565b6001600160a01b03166001600160a01b0316815260200190815260200160002060020154111561147f5761147f610cdf611759565b5050565b6203d09081565b602981600a81106110ca57fe5b61149f6124a0565b610d146114aa611759565b6000611fbb565b6114cc6114bd3361115d565b6044549063ffffffff611e1116565b604455610d146124de565b62093a8081565b6114e66117e0565b3360009081526046602052604090203415611505576115056000610d16565b61150d610b74565b60078210611562576040805162461bcd60e51b815260206004820152601860248201527f4e6f206d6f7265206c6576656c7320746f20756e6c6f636b0000000000000000604482015290519081900360640190fd5b602081600901600184036008811061157657fe5b0154146115ca576040805162461bcd60e51b815260206004820152601960248201527f50726576206c6576656c206d7573742062652066696c6c656400000000000000604482015290519081900360640190fd5b80600801546001018214611625576040805162461bcd60e51b815260206004820152601f60248201527f547279696e6720746f20756e6c6f636b2077726f6e6720626565207479706500604482015290519081900360640190fd5b60068214156116405760098160050154101561164057600080fd5b61165833600f846008811061165157fe5b0154612428565b50818160080181905550600181600901836008811061167357fe5b015560408051838152905133917f9314809af08e4ddf0214b2248c8ea28466a17bcf8283d48cebe52b0f1386af0f919081900360200190a250600060466000610ed5611759565b6116c26125bf565b6000546001600160a01b03908116911614610370576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600781565b60415481565b60025460035460045483565b6001600160a01b031660009081526005602052604090205460ff1690565b6000546001600160a01b031690565b6001600160a01b03811660009081526046602090815260409182902060150180548351818402810184019094528084526060939283018282801561113a57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116117b75750505050509050919050565b60045415801590611807575060035442906118049062093a8063ffffffff611e1116565b11155b15610d145760006118246064610f9847600163ffffffff611e7216565b60045490915061184e9061183f90839063ffffffff611ecb16565b6002549063ffffffff611e1116565b6002556003546118679062093a8063ffffffff611e1116565b600355600454604080519182526020820183905280517f51e794b4ff7ffc1b303e757fa6fc3d0b3e162556cc78d07914238fe3c3f96d8f9281900390910190a1506117e0565b6001600160a01b03821660009081526046602052604090206118cd610b74565b60006118e2836203d09063ffffffff611ecb16565b905060008111611939576040805162461bcd60e51b815260206004820152601c60248201527f547279696e6720746f20776974686472617720746f6f20736d616c6c00000000604482015290519081900360640190fd5b600282015461194e908463ffffffff611f0d16565b60028301556012820154611968908263ffffffff611e1116565b6012830155604454611980908263ffffffff611e1116565b6044556040516001600160a01b0385169082156108fc029083906000818181858888f193505050501580156119b9573d6000803e3d6000fd5b506040805182815290516001600160a01b038616917f6cca423c6ffc06e62a0acc433965e074b11c28479b0449250ce3ff65ac9e39fe919081900360200190a250505050565b6000611a09611759565b6001600160a01b0316336001600160a01b031614611a2657600080fd5b611a2e610b74565b611a383383612428565b506001600160a01b038316600090815260466020526040902060030154611a65908363ffffffff611e1116565b6001600160a01b03841660009081526046602052604090206003015550600192915050565b602081565b603981600681106110ca57fe5b60445481565b60408181548110611aaf57fe5b600091825260209091200154905081565b601e81565b611acd6117e0565b6001600160a01b0381166000908152604660205260409020611aed610b74565b60058101545b600a811015611b8557601f81600a8110611b0957fe5b0154826004015410611b7d57611b38602982600a8110611b2557fe5b015460038401549063ffffffff611e1116565b600383015560018101600583018190556040516001600160a01b038516907f93135b83255eeccdefec3e312591c2743d0dc8bfac656f9773d7a132af4bb81f90600090a35b600101611af3565b5050600060466000610ed5611759565b603f8181548110611aaf57fe5b6001600160a01b03811660009081526046602052604081208054829190611bd0575060009150819050611c98565b80600201549250806003015491506000611be985610f0d565b600183015490915060ff16611c2f57611c1181681b1ae4d6e2ef50000063ffffffff611f0d16565b9050611c2c83681b1ae4d6e2ef50000063ffffffff611e1116565b92505b6000611c596064610f986033866006015460068110611c4a57fe5b0154859063ffffffff611e7216565b90506000611c6d838363ffffffff611f0d16565b9050611c7f868363ffffffff611e1116565b9550611c91858263ffffffff611e1116565b9450505050505b915091565b681b1ae4d6e2ef50000081565b6001600160a01b031660009081526006602052604090205490565b600181565b604660205260009081526040902080546001820154600283015460038401546004850154600586015460068701546007880154600889015460118a015460128b015460138c01546014909c01549a9b60ff8b169b610100909b046001600160a01b03169a8e565b6001546001600160a01b031681565b604154600090611d5e90606490610f9890604663ffffffff611e7216565b471115905090565b60455481565b611d746125bf565b6000546001600160a01b03908116911614611dd6576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60425481565b601781600881106110ca57fe5b60435481565b600082820183811015611e6b576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082611e81575060006111af565b82820282848281611e8e57fe5b0414611e6b5760405162461bcd60e51b815260040180806020018281038252602181526020018061281c6021913960400191505060405180910390fd5b6000611e6b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506125c3565b6000611e6b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612665565b6001600160a01b038216600090815260466020526040812054158015611f875750826001600160a01b0316826001600160a01b031614155b15611f935750806111af565b50506001600160a01b0390811660009081526046602052604090206001015461010090041690565b6001600160a01b03821660009081526046602090815260408220428155916009830101556001600882015542600782015560455461200090602063ffffffff611e1116565b6045556042805460010190556001600160a01b038216156120cb5760018181018054610100600160a81b0319166101006001600160a01b038681168281029390931790935560008281526046602090815260408220601581018054808901825590845291832090910180546001600160a01b0319168a87161790559290529201549190910416156120c2576001600160a01b03808316600090815260466020526040808220600190810154610100900490931682529020601401805490910190555b6120cb82612344565b816001600160a01b0316836001600160a01b03167f0a31ee9d46a828884b81003c8498156ea6aa15b9b54bdd0ef0b533d9eba57e5560405160405180910390a3505050565b612118611759565b6001600160a01b03166108fc6203d0906064600a870204049081150290604051600060405180830381858888f1935050505015801561215b573d6000803e3d6000fd5b506001600160a01b0381161561233e576001600160a01b03811660009081526046602052604090206013810154612198908463ffffffff611e1116565b60138201556121a682612344565b8160005b6001600160a01b038216158015906121c35750603f5481105b1561233a5760006121f96064610f98603f85815481106121df57fe5b90600052602060002001548a611e7290919063ffffffff16565b6001600160a01b038416600090815260466020526040902060020154909150612228908263ffffffff611e1116565b60466000856001600160a01b03166001600160a01b03168152602001908152602001600020600201819055506122ae6122866064610f986040868154811061226c57fe5b90600052602060002001548b611e7290919063ffffffff16565b6001600160a01b0385166000908152604660205260409020600401549063ffffffff611e1116565b6001600160a01b038085166000818152604660209081526040918290206004019490945580518581529051600187019492938d16927f8fa68a6a8e2fc9ff758a6e64afba8bc2f66fb082999a2c5225c8c49633faded4928290030190a4506001600160a01b039182166000908152604660205260409020600190810154610100900490921691016121aa565b5050505b50505050565b6001600160a01b0381161580159061237557506001600160a01b03811660009081526005602052604090205460ff16155b15610f0a576001600160a01b03811660009081526046602052604090206011810154674563918244f40000118015906123b357506015810154600a11155b80156123cc57506802b5e3af16b1880000816013015410155b1561147f5761147f826126bf565b6000818310156123ea5781611e6b565b5090919050565b6001600160a01b0382166000908152604660205260409020600281015461241e908363ffffffff611f0d16565b6002909101555050565b6001600160a01b03821660009081526046602052604081206003810154829061245290859061279f565b905060006124706064610f98605a610f8c898763ffffffff611f0d16565b6003840154909150612488908363ffffffff611f0d16565b600384015561249786826123f1565b95945050505050565b6001546001600160a01b031633146124b757600080fd5b6001546124cc906001600160a01b0316611d6c565b600180546001600160a01b0319169055565b6124e66117e0565b3360009081526005602052604090205460ff1661254a576040805162461bcd60e51b815260206004820152601d60248201527f55736572206e6f74207265676973746572656420666f7220626f6e7573000000604482015290519081900360640190fd5b600061255e476125593361115d565b61279f565b33600090815260066020526040902054909150612581908263ffffffff611e1116565b33600081815260066020526040808220939093559151909183156108fc02918491818181858888f1935050505015801561147f573d6000803e3d6000fd5b3390565b6000818361264f5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156126145781810151838201526020016125fc565b50505050905090810190601f1680156126415780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161265b57fe5b0495945050505050565b600081848411156126b75760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156126145781810151838201526020016125fc565b505050900390565b6126c76117e0565b6001600160a01b03811660009081526005602052604090205460ff161561271f5760405162461bcd60e51b81526004018080602001828103825260218152602001806127fb6021913960400191505060405180910390fd5b6001600160a01b0381166000908152600560209081526040808320805460ff1916600190811790915560025460069093529220556004546127659163ffffffff611e1116565b6004556040516001600160a01b038216907fffe88a5f59af245d336238ae39a54e562c15024f255db787524f9abd61c8765a90600090a250565b60008183106123ea5781611e6b565b604051806101000160405280600890602082028036833750919291505056fe596f752073686f756c642062652072656769737465726564206c657373207468616e203720646179732061676f5573657220616c7265616479207265676973746572656420666f7220626f6e7573536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220136bc7a10a52de7198cbec82b21e89b4b970bc823aefd2b98c5ac4bdb96285ba64736f6c634300060800335573657220616c7265616479207265676973746572656420666f7220626f6e7573536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77

Deployed Bytecode

0x6080604052600436106103385760003560e01c80639e95452b116101ab578063cfbeb83e116100f7578063e5d6c33a11610095578063f340fa011161006f578063f340fa0114610afa578063f60cdcf614610b20578063f7620b1614610b35578063ff50abdc14610b5f57610370565b8063e5d6c33a14610a9d578063eeb851a214610ab2578063f2fde38b14610ac757610370565b8063dec107d1116100d1578063dec107d11461060b578063e2eb41ff146109ca578063e30c397814610a73578063e522538114610a8857610370565b8063cfbeb83e1461096d578063d9c282f014610982578063dacfbd79146109b557610370565b8063b5affb0511610164578063be6c588a1161013e578063be6c588a146108af578063bfaed58a146108c4578063bfd3dc93146108f7578063c7d88b051461092157610370565b8063b5affb0514610846578063b74126cc14610870578063b913ee4f1461088557610370565b80639e95452b146107aa578063a0484e1b146107bf578063a155b1d414610555578063a35bc9af1461056a578063a9059cbb146107f8578063b2da61b41461083157610370565b806347ee29921161028557806372392890116102235780637e990772116101fd5780637e9907721461056a578063894af783146106af5780638da5cb5b146106f65780639ca423b31461072757610370565b8063723928901461065257806373ad468a1461066757806375b4d78c1461067c57610370565b80635b3730921161025f5780635b373092146105f65780635ec1ddfc1461060b5780636198e33914610620578063715018a61461063d57610370565b806347ee2992146105a25780634ab0cac9146105b75780634e71e0c8146105e157610370565b806321f45653116102f25780633128aa86116102cc5780633128aa861461052257806336fe15e614610555578063435f220c1461056a57806346a837851461057f57610370565b806321f45653146104625780632ab291c1146104ce5780632e1a7d4d146104f857610370565b80628cc262146103755780630486916d146103ba5780630542061e146103cf57806310f230dc146103e4578063127fcac71461040e57806321d378f51461043857610370565b36610370573461036457336000908152604660205260409020541561035f5761035f610b74565b61036e565b61036e6000610d16565b005b600080fd5b34801561038157600080fd5b506103a86004803603602081101561039857600080fd5b50356001600160a01b0316610f0d565b60408051918252519081900360200190f35b3480156103c657600080fd5b506103a8611022565b3480156103db57600080fd5b5061036e611027565b3480156103f057600080fd5b506103a86004803603602081101561040757600080fd5b50356110bd565b34801561041a57600080fd5b506103a86004803603602081101561043157600080fd5b50356110d1565b34801561044457600080fd5b506103a86004803603602081101561045b57600080fd5b50356110de565b34801561046e57600080fd5b506104956004803603602081101561048557600080fd5b50356001600160a01b03166110eb565b604051808261010080838360005b838110156104bb5781810151838201526020016104a3565b5050505090500191505060405180910390f35b3480156104da57600080fd5b506103a8600480360360208110156104f157600080fd5b5035611146565b34801561050457600080fd5b5061036e6004803603602081101561051b57600080fd5b5035611153565b34801561052e57600080fd5b506103a86004803603602081101561054557600080fd5b50356001600160a01b031661115d565b34801561056157600080fd5b506103a86111b5565b34801561057657600080fd5b506103a86111ba565b61036e6004803603604081101561059557600080fd5b50803590602001356111bf565b3480156105ae57600080fd5b506103a8611483565b3480156105c357600080fd5b506103a8600480360360208110156105da57600080fd5b503561148a565b3480156105ed57600080fd5b5061036e611497565b34801561060257600080fd5b5061036e6114b1565b34801561061757600080fd5b506103a86114d7565b61036e6004803603602081101561063657600080fd5b50356114de565b34801561064957600080fd5b5061036e6116ba565b34801561065e57600080fd5b506103a8611724565b34801561067357600080fd5b506103a8611729565b34801561068857600080fd5b5061069161172f565b60408051938452602084019290925282820152519081900360600190f35b3480156106bb57600080fd5b506106e2600480360360208110156106d257600080fd5b50356001600160a01b031661173b565b604080519115158252519081900360200190f35b34801561070257600080fd5b5061070b611759565b604080516001600160a01b039092168252519081900360200190f35b34801561073357600080fd5b5061075a6004803603602081101561074a57600080fd5b50356001600160a01b0316611768565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561079657818101518382015260200161077e565b505050509050019250505060405180910390f35b3480156107b657600080fd5b5061036e6117e0565b3480156107cb57600080fd5b5061036e600480360360408110156107e257600080fd5b506001600160a01b0381351690602001356118ad565b34801561080457600080fd5b506106e26004803603604081101561081b57600080fd5b506001600160a01b0381351690602001356119ff565b34801561083d57600080fd5b506103a8611a8a565b34801561085257600080fd5b506103a86004803603602081101561086957600080fd5b5035611a8f565b34801561087c57600080fd5b506103a8611a9c565b34801561089157600080fd5b506103a8600480360360208110156108a857600080fd5b5035611aa2565b3480156108bb57600080fd5b506103a8611ac0565b3480156108d057600080fd5b5061036e600480360360208110156108e757600080fd5b50356001600160a01b0316611ac5565b34801561090357600080fd5b506103a86004803603602081101561091a57600080fd5b5035611b95565b34801561092d57600080fd5b506109546004803603602081101561094457600080fd5b50356001600160a01b0316611ba2565b6040805192835260208301919091528051918290030190f35b34801561097957600080fd5b506103a8611c9d565b34801561098e57600080fd5b506103a8600480360360208110156109a557600080fd5b50356001600160a01b0316611caa565b3480156109c157600080fd5b506103a8611cc5565b3480156109d657600080fd5b506109fd600480360360208110156109ed57600080fd5b50356001600160a01b0316611cca565b604080519e8f529c151560208f01526001600160a01b03909b168d8d015260608d019990995260808c019790975260a08b019590955260c08a019390935260e08901919091526101008801526101208701526101408601526101608501526101808401526101a083015251908190036101c00190f35b348015610a7f57600080fd5b5061070b611d31565b348015610a9457600080fd5b5061036e610b74565b348015610aa957600080fd5b506106e2611d40565b348015610abe57600080fd5b506103a8611d66565b348015610ad357600080fd5b5061036e60048036036020811015610aea57600080fd5b50356001600160a01b0316611d6c565b61036e60048036036020811015610b1057600080fd5b50356001600160a01b0316610d16565b348015610b2c57600080fd5b506103a8611df8565b348015610b4157600080fd5b506103a860048036036020811015610b5857600080fd5b5035611dfe565b348015610b6b57600080fd5b506103a8611e0b565b610b7c6117e0565b3360009081526046602052604090208054610bd3576040805162461bcd60e51b8152602060048201526012602482015271139bdd081c9959da5cdd195c9959081e595d60721b604482015290519081900360640190fd5b6000610bde3361115d565b1115610bec57610bec6114b1565b600080610bf833611ba2565b91509150336001600160a01b03167f175de791cae106394f6c9daa00b9b55b3c2babff16f57c56b89a8c66601ec59e610c3e856002015485611f0d90919063ffffffff16565b6003860154610c5490859063ffffffff611f0d16565b6040805192835260208301919091528051918290030190a2600183015460ff16610c89576001838101805460ff191690911790555b60028301919091556003820155426007909101556000604681610caa611759565b6001600160a01b03166001600160a01b03168152602001908152602001600020600201541115610d1457610d14610cdf611759565b60466000610ceb611759565b6001600160a01b03166001600160a01b03168152602001908152602001600020600201546118ad565b565b610d1e6117e0565b33600081815260466020526040812091610d389084611f4f565b8254909150151534151415610d94576040805162461bcd60e51b815260206004820152601760248201527f53656e64203020666f7220726567697374726174696f6e000000000000000000604482015290519081900360640190fd5b8154610da457610da43382611fbb565b610dac610b74565b6000610dc1346203d09063ffffffff611e7216565b6003840154909150610dd9908263ffffffff611e1116565b60038401556011830154610df3903463ffffffff611e1116565b6011840155604354610e0b903463ffffffff611e1116565b6043556004830154610e23908263ffffffff611e1116565b600484015560408051348152905133917f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4919081900360200190a2610e6a33823485612110565b610e7333612344565b600060466000610e81611759565b6001600160a01b03168152602081019190915260400160002060120154604154909150610ebd90610eb8478463ffffffff611e1116565b6123da565b60418190555050505050600060466000610ed5611759565b6001600160a01b03166001600160a01b03168152602001908152602001600020600201541115610f0a57610f0a610cdf611759565b50565b6001600160a01b03811660009081526046602052604081208054610f3557600091505061101d565b600060015b6008811015610fbb57610fb1610fa46064610f9860178560088110610f5b57fe5b0154610f8c60078760088110610f6d57fe5b0154896009018860088110610f7e57fe5b01549063ffffffff611e7216565b9063ffffffff611e7216565b9063ffffffff611ecb16565b839063ffffffff611e1116565b9150600101610f3a565b5060018201546110189060ff16610fdb57681b1ae4d6e2ef500000610fde565b60005b61100c62278d00610f98610fff876007015442611f0d90919063ffffffff16565b869063ffffffff611e7216565b9063ffffffff611e1116565b925050505b919050565b600881565b61102f6117e0565b336000908152604660205260409020611046610b74565b600681015460051161105757600080fd5b61107633603983600601546001016006811061106f57fe5b01546123f1565b6006810180546001019081905560405133907fab7da30456d497e9ccbd16778660ea62630c90e6eacce1f230887620f0449c8990600090a350600060466000610caa611759565b600781600881106110ca57fe5b0154905081565b600f81600881106110ca57fe5b603381600681106110ca57fe5b6110f36127ae565b6001600160a01b038216600090815260466020526040908190208151610100810190925260090160088282826020028201915b815481526020019060010190808311611126575b50505050509050919050565b601f81600a81106110ca57fe5b610f0a33826118ad565b6001600160a01b03811660009081526005602052604081205460ff166111845760006111af565b6001600160a01b0382166000908152600660205260409020546002546111af9163ffffffff611f0d16565b92915050565b600681565b600a81565b6111c76117e0565b33600090815260466020526040902034156111e6576111e66000610d16565b6111ee610b74565b6000831180156111fe5750600883105b61124f576040805162461bcd60e51b815260206004820152601f60248201527f446f6e27742074727920746f206275792062656573206f662074797065203000604482015290519081900360640190fd5b600783141561130a57611260611d40565b6112b1576040805162461bcd60e51b815260206004820152601c60248201527f5375706572426565206973206e6f7420756e6c6f636b65642079657400000000604482015290519081900360640190fd5b805462093a80906112c990429063ffffffff611f0d16565b106113055760405162461bcd60e51b815260040180806020018281038252602d8152602001806127ce602d913960400191505060405180910390fd5b611363565b8060080154831115611363576040805162461bcd60e51b815260206004820152601e60248201527f54686973206265652074797065206e6f7420756e6c6f636b6564207965740000604482015290519081900360640190fd5b60206113868383600901866008811061137857fe5b01549063ffffffff611e1116565b111561139157600080fd5b6113a48282600901856008811061137857fe5b8160090184600881106113b357fe5b01556045546113c8908363ffffffff611e1116565b60455560006113e7336113e28560078860088110610f7e57fe5b612428565b9050611400338260006113fb336000611f4f565b612110565b6040805185815260208101859052815133927f3b8efbf8f2c0dcb58c5082344b6573cf15279f2be6c0415141060f747fd8bab1928290030190a2505060006046600061144a611759565b6001600160a01b03166001600160a01b0316815260200190815260200160002060020154111561147f5761147f610cdf611759565b5050565b6203d09081565b602981600a81106110ca57fe5b61149f6124a0565b610d146114aa611759565b6000611fbb565b6114cc6114bd3361115d565b6044549063ffffffff611e1116565b604455610d146124de565b62093a8081565b6114e66117e0565b3360009081526046602052604090203415611505576115056000610d16565b61150d610b74565b60078210611562576040805162461bcd60e51b815260206004820152601860248201527f4e6f206d6f7265206c6576656c7320746f20756e6c6f636b0000000000000000604482015290519081900360640190fd5b602081600901600184036008811061157657fe5b0154146115ca576040805162461bcd60e51b815260206004820152601960248201527f50726576206c6576656c206d7573742062652066696c6c656400000000000000604482015290519081900360640190fd5b80600801546001018214611625576040805162461bcd60e51b815260206004820152601f60248201527f547279696e6720746f20756e6c6f636b2077726f6e6720626565207479706500604482015290519081900360640190fd5b60068214156116405760098160050154101561164057600080fd5b61165833600f846008811061165157fe5b0154612428565b50818160080181905550600181600901836008811061167357fe5b015560408051838152905133917f9314809af08e4ddf0214b2248c8ea28466a17bcf8283d48cebe52b0f1386af0f919081900360200190a250600060466000610ed5611759565b6116c26125bf565b6000546001600160a01b03908116911614610370576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600781565b60415481565b60025460035460045483565b6001600160a01b031660009081526005602052604090205460ff1690565b6000546001600160a01b031690565b6001600160a01b03811660009081526046602090815260409182902060150180548351818402810184019094528084526060939283018282801561113a57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116117b75750505050509050919050565b60045415801590611807575060035442906118049062093a8063ffffffff611e1116565b11155b15610d145760006118246064610f9847600163ffffffff611e7216565b60045490915061184e9061183f90839063ffffffff611ecb16565b6002549063ffffffff611e1116565b6002556003546118679062093a8063ffffffff611e1116565b600355600454604080519182526020820183905280517f51e794b4ff7ffc1b303e757fa6fc3d0b3e162556cc78d07914238fe3c3f96d8f9281900390910190a1506117e0565b6001600160a01b03821660009081526046602052604090206118cd610b74565b60006118e2836203d09063ffffffff611ecb16565b905060008111611939576040805162461bcd60e51b815260206004820152601c60248201527f547279696e6720746f20776974686472617720746f6f20736d616c6c00000000604482015290519081900360640190fd5b600282015461194e908463ffffffff611f0d16565b60028301556012820154611968908263ffffffff611e1116565b6012830155604454611980908263ffffffff611e1116565b6044556040516001600160a01b0385169082156108fc029083906000818181858888f193505050501580156119b9573d6000803e3d6000fd5b506040805182815290516001600160a01b038616917f6cca423c6ffc06e62a0acc433965e074b11c28479b0449250ce3ff65ac9e39fe919081900360200190a250505050565b6000611a09611759565b6001600160a01b0316336001600160a01b031614611a2657600080fd5b611a2e610b74565b611a383383612428565b506001600160a01b038316600090815260466020526040902060030154611a65908363ffffffff611e1116565b6001600160a01b03841660009081526046602052604090206003015550600192915050565b602081565b603981600681106110ca57fe5b60445481565b60408181548110611aaf57fe5b600091825260209091200154905081565b601e81565b611acd6117e0565b6001600160a01b0381166000908152604660205260409020611aed610b74565b60058101545b600a811015611b8557601f81600a8110611b0957fe5b0154826004015410611b7d57611b38602982600a8110611b2557fe5b015460038401549063ffffffff611e1116565b600383015560018101600583018190556040516001600160a01b038516907f93135b83255eeccdefec3e312591c2743d0dc8bfac656f9773d7a132af4bb81f90600090a35b600101611af3565b5050600060466000610ed5611759565b603f8181548110611aaf57fe5b6001600160a01b03811660009081526046602052604081208054829190611bd0575060009150819050611c98565b80600201549250806003015491506000611be985610f0d565b600183015490915060ff16611c2f57611c1181681b1ae4d6e2ef50000063ffffffff611f0d16565b9050611c2c83681b1ae4d6e2ef50000063ffffffff611e1116565b92505b6000611c596064610f986033866006015460068110611c4a57fe5b0154859063ffffffff611e7216565b90506000611c6d838363ffffffff611f0d16565b9050611c7f868363ffffffff611e1116565b9550611c91858263ffffffff611e1116565b9450505050505b915091565b681b1ae4d6e2ef50000081565b6001600160a01b031660009081526006602052604090205490565b600181565b604660205260009081526040902080546001820154600283015460038401546004850154600586015460068701546007880154600889015460118a015460128b015460138c01546014909c01549a9b60ff8b169b610100909b046001600160a01b03169a8e565b6001546001600160a01b031681565b604154600090611d5e90606490610f9890604663ffffffff611e7216565b471115905090565b60455481565b611d746125bf565b6000546001600160a01b03908116911614611dd6576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60425481565b601781600881106110ca57fe5b60435481565b600082820183811015611e6b576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082611e81575060006111af565b82820282848281611e8e57fe5b0414611e6b5760405162461bcd60e51b815260040180806020018281038252602181526020018061281c6021913960400191505060405180910390fd5b6000611e6b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506125c3565b6000611e6b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612665565b6001600160a01b038216600090815260466020526040812054158015611f875750826001600160a01b0316826001600160a01b031614155b15611f935750806111af565b50506001600160a01b0390811660009081526046602052604090206001015461010090041690565b6001600160a01b03821660009081526046602090815260408220428155916009830101556001600882015542600782015560455461200090602063ffffffff611e1116565b6045556042805460010190556001600160a01b038216156120cb5760018181018054610100600160a81b0319166101006001600160a01b038681168281029390931790935560008281526046602090815260408220601581018054808901825590845291832090910180546001600160a01b0319168a87161790559290529201549190910416156120c2576001600160a01b03808316600090815260466020526040808220600190810154610100900490931682529020601401805490910190555b6120cb82612344565b816001600160a01b0316836001600160a01b03167f0a31ee9d46a828884b81003c8498156ea6aa15b9b54bdd0ef0b533d9eba57e5560405160405180910390a3505050565b612118611759565b6001600160a01b03166108fc6203d0906064600a870204049081150290604051600060405180830381858888f1935050505015801561215b573d6000803e3d6000fd5b506001600160a01b0381161561233e576001600160a01b03811660009081526046602052604090206013810154612198908463ffffffff611e1116565b60138201556121a682612344565b8160005b6001600160a01b038216158015906121c35750603f5481105b1561233a5760006121f96064610f98603f85815481106121df57fe5b90600052602060002001548a611e7290919063ffffffff16565b6001600160a01b038416600090815260466020526040902060020154909150612228908263ffffffff611e1116565b60466000856001600160a01b03166001600160a01b03168152602001908152602001600020600201819055506122ae6122866064610f986040868154811061226c57fe5b90600052602060002001548b611e7290919063ffffffff16565b6001600160a01b0385166000908152604660205260409020600401549063ffffffff611e1116565b6001600160a01b038085166000818152604660209081526040918290206004019490945580518581529051600187019492938d16927f8fa68a6a8e2fc9ff758a6e64afba8bc2f66fb082999a2c5225c8c49633faded4928290030190a4506001600160a01b039182166000908152604660205260409020600190810154610100900490921691016121aa565b5050505b50505050565b6001600160a01b0381161580159061237557506001600160a01b03811660009081526005602052604090205460ff16155b15610f0a576001600160a01b03811660009081526046602052604090206011810154674563918244f40000118015906123b357506015810154600a11155b80156123cc57506802b5e3af16b1880000816013015410155b1561147f5761147f826126bf565b6000818310156123ea5781611e6b565b5090919050565b6001600160a01b0382166000908152604660205260409020600281015461241e908363ffffffff611f0d16565b6002909101555050565b6001600160a01b03821660009081526046602052604081206003810154829061245290859061279f565b905060006124706064610f98605a610f8c898763ffffffff611f0d16565b6003840154909150612488908363ffffffff611f0d16565b600384015561249786826123f1565b95945050505050565b6001546001600160a01b031633146124b757600080fd5b6001546124cc906001600160a01b0316611d6c565b600180546001600160a01b0319169055565b6124e66117e0565b3360009081526005602052604090205460ff1661254a576040805162461bcd60e51b815260206004820152601d60248201527f55736572206e6f74207265676973746572656420666f7220626f6e7573000000604482015290519081900360640190fd5b600061255e476125593361115d565b61279f565b33600090815260066020526040902054909150612581908263ffffffff611e1116565b33600081815260066020526040808220939093559151909183156108fc02918491818181858888f1935050505015801561147f573d6000803e3d6000fd5b3390565b6000818361264f5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156126145781810151838201526020016125fc565b50505050905090810190601f1680156126415780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161265b57fe5b0495945050505050565b600081848411156126b75760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156126145781810151838201526020016125fc565b505050900390565b6126c76117e0565b6001600160a01b03811660009081526005602052604090205460ff161561271f5760405162461bcd60e51b81526004018080602001828103825260218152602001806127fb6021913960400191505060405180910390fd5b6001600160a01b0381166000908152600560209081526040808320805460ff1916600190811790915560025460069093529220556004546127659163ffffffff611e1116565b6004556040516001600160a01b038216907fffe88a5f59af245d336238ae39a54e562c15024f255db787524f9abd61c8765a90600090a250565b60008183106123ea5781611e6b565b604051806101000160405280600890602082028036833750919291505056fe596f752073686f756c642062652072656769737465726564206c657373207468616e203720646179732061676f5573657220616c7265616479207265676973746572656420666f7220626f6e7573536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220136bc7a10a52de7198cbec82b21e89b4b970bc823aefd2b98c5ac4bdb96285ba64736f6c63430006080033

Deployed Bytecode Sourcemap

6234:14885:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9752:9;9748:186;;9795:10;9824:1;9787:19;;;:7;:19;;;;;:34;:38;9783:88;;9846:9;:7;:9::i;:::-;9748:186;;;9903:19;9919:1;9903:7;:19::i;:::-;6234:14885;;12:1:-1;9;2:12;16620:612:0;;5:9:-1;2:2;;;27:1;24;17:12;2:2;16620:612:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;16620:612:0;-1:-1:-1;;;;;16620:612:0;;:::i;:::-;;;;;;;;;;;;;;;;6828:38;;5:9:-1;2:2;;;27:1;24;17:12;2:2;6828:38:0;;;:::i;16216:396::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;16216:396:0;;;:::i;7096:118::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;7096:118:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;7096:118:0;;:::i;7221:117::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;7221:117:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;7221:117:0;;:::i;7758:80::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;7758:80:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;7758:80:0;;:::i;9949:124::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;9949:124:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;9949:124:0;-1:-1:-1;;;;;9949:124:0;;:::i;:::-;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;9949:124:0;;;;;;;;;;;;;;;;7441:157;;5:9:-1;2:2;;;27:1;24;17:12;2:2;7441:157:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;7441:157:0;;:::i;11987:92::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;11987:92:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;11987:92:0;;:::i;4779:169::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;4779:169:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;4779:169:0;-1:-1:-1;;;;;4779:169:0;;:::i;7046:43::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;7046:43:0;;;:::i;6998:41::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;6998:41:0;;;:::i;15082:1126::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;15082:1126:0;;;;;;;:::i;7961:46::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;7961:46:0;;;:::i;7605:146::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;7605:146:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;7605:146:0;;:::i;17897:135::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;17897:135:0;;;:::i;17720:169::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;17720:169:0;;;:::i;3457:44::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;3457:44:0;;;:::i;14314:760::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;14314:760:0;;:::i;5860:91::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;5860:91:0;;;:::i;6873:56::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;6873:56:0;;;:::i;8485:25::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;8485:25:0;;;:::i;3736:26::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;3736:26:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;4527:124;;5:9:-1;2:2;;;27:1;24;17:12;2:2;4527:124:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;4527:124:0;-1:-1:-1;;;;;4527:124:0;;:::i;:::-;;;;;;;;;;;;;;;;;;1134:79;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1134:79:0;;;:::i;:::-;;;;-1:-1:-1;;;;;1134:79:0;;;;;;;;;;;;;;10248:120;;5:9:-1;2:2;;;27:1;24;17:12;2:2;10248:120:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;10248:120:0;-1:-1:-1;;;;;10248:120:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;10248:120:0;;;;;;;;;;;;;;;;;4053:466;;5:9:-1;2:2;;;27:1;24;17:12;2:2;4053:466:0;;;:::i;12087:530::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;12087:530:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;12087:530:0;;;;;;;;:::i;10611:297::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;10611:297:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;10611:297:0;;;;;;;;:::i;8014:48::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;8014:48:0;;;:::i;7845:107::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;7845:107:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;7845:107:0;;:::i;8587:30::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;8587:30:0;;;:::i;8423:53::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;8423:53:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;8423:53:0;;:::i;8240:52::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;8240:52:0;;;:::i;17240:472::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;17240:472:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;17240:472:0;-1:-1:-1;;;;;17240:472:0;;:::i;8361:55::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;8361:55:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;8361:55:0;;:::i;13407:899::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;13407:899:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;13407:899:0;-1:-1:-1;;;;;13407:899:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8069:57;;5:9:-1;2:2;;;27:1;24;17:12;2:2;8069:57:0;;;:::i;4659:112::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;4659:112:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;4659:112:0;-1:-1:-1;;;;;4659:112:0;;:::i;3399:51::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;3399:51:0;;;:::i;8661:41::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;8661:41:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;8661:41:0;-1:-1:-1;;;;;8661:41:0;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;8661:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5722:27;;5:9:-1;2:2;;;27:1;24;17:12;2:2;5722:27:0;;;:::i;12625:774::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;12625:774:0;;;:::i;10081:159::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;10081:159:0;;;:::i;8624:30::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;8624:30:0;;;:::i;5959:122::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;5959:122:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;5959:122:0;-1:-1:-1;;;;;5959:122:0;;:::i;10916:1063::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;10916:1063:0;-1:-1:-1;;;;;10916:1063:0;;:::i;8517:27::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;8517:27:0;;;:::i;7345:89::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;7345:89:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;7345:89:0;;:::i;8551:29::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;8551:29:0;;;:::i;12625:774::-;3917:24;:22;:24::i;:::-;12731:10:::2;12699:21;12723:19:::0;;;:7:::2;:19;::::0;;;;12761:21;;12753:56:::2;;;::::0;;-1:-1:-1;;;12753:56:0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;-1:-1:-1;;;12753:56:0;;;;;;;;;;;;;::::2;;12856:1;12826:27;12842:10;12826:15;:27::i;:::-;:31;12822:79;;;12874:15;:13;:15::i;:::-;12914:20;12936:18:::0;12958:26:::2;12973:10;12958:14;:26::i;:::-;12913:71;;;;13030:10;-1:-1:-1::0;;;;;13000:151:0::2;;13055:37;13072:6;:19;;;13055:12;:16;;:37;;;;:::i;:::-;13122:17;::::0;::::2;::::0;13107:33:::2;::::0;:10;;:33:::2;:14;:33;:::i;:::-;13000:151;::::0;;;;;::::2;::::0;::::2;::::0;;;;;;;;;;;;::::2;13169:23;::::0;::::2;::::0;::::2;;13164:87;;13235:4;13209:23:::0;;::::2;:30:::0;;-1:-1:-1;;13209:30:0::2;::::0;;::::2;::::0;;13164:87:::2;13263:19;::::0;::::2;:34:::0;;;;13308:17:::2;::::0;::::2;:30:::0;13376:15:::2;13349:24;::::0;;::::2;:42:::0;-1:-1:-1;9436:7:0::1;-1:-1:-1::0;9444:7:0::1;:5;:7::i;:::-;-1:-1:-1::0;;;;;9436:16:0::1;-1:-1:-1::0;;;;;9436:16:0::1;;;;;;;;;;;;:29;;;:33;9432:185;;;9486:119;9533:7;:5;:7::i;:::-;9561;:16;9569:7;:5;:7::i;:::-;-1:-1:-1::0;;;;;9561:16:0::1;-1:-1:-1::0;;;;;9561:16:0::1;;;;;;;;;;;;:29;;;9486:12;:119::i;:::-;12625:774::o:0;10916:1063::-;3917:24;:22;:24::i;:::-;11041:10:::2;11009:21;11033:19:::0;;;:7:::2;:19;::::0;;;;;11084:27:::2;::::0;11107:3;11084:10:::2;:27::i;:::-;11152:21:::0;;11063:48;;-1:-1:-1;11152:25:0;;11133:9:::2;:14:::0;11132:45:::2;;11124:81;;;::::0;;-1:-1:-1;;;11124:81:0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;::::2;::::0;;;;;;;;;;;;;::::2;;11232:21:::0;;11228:92:::2;;11275:33;11285:10;11297;11275:9;:33::i;:::-;11332:9;:7;:9::i;:::-;11364:11;11378:28;:9;8001:6;11378:28;:13;:28;:::i;:::-;11437:17;::::0;::::2;::::0;11364:42;;-1:-1:-1;11437:26:0::2;::::0;11364:42;11437:26:::2;:21;:26;:::i;:::-;11417:17;::::0;::::2;:46:::0;11498:21:::2;::::0;::::2;::::0;:36:::2;::::0;11524:9:::2;11498:36;:25;:36;:::i;:::-;11474:21;::::0;::::2;:60:::0;11562:14:::2;::::0;:29:::2;::::0;11581:9:::2;11562:29;:18;:29;:::i;:::-;11545:14;:46:::0;11618:13:::2;::::0;::::2;::::0;:22:::2;::::0;11636:3;11618:22:::2;:17;:22;:::i;:::-;11602:13;::::0;::::2;:38:::0;11656:32:::2;::::0;;11678:9:::2;11656:32:::0;;;;11666:10:::2;::::0;11656:32:::2;::::0;;;;;::::2;::::0;;::::2;11713:55;11729:10;11741:3;11746:9;11757:10;11713:15;:55::i;:::-;11781:31;11801:10;11781:19;:31::i;:::-;11825:23;11851:7;:16;11859:7;:5;:7::i;:::-;-1:-1:-1::0;;;;;11851:16:0::2;::::0;;::::2;::::0;::::2;::::0;;;;;;-1:-1:-1;11851:16:0;:32:::2;;::::0;11916:10:::2;::::0;11851:32;;-1:-1:-1;11907:64:0::2;::::0;11928:42:::2;:21;11851:32:::0;11928:42:::2;:25;:42;:::i;:::-;11907:8;:64::i;:::-;11894:10;:77;;;;9420:1;;;;9468::::1;9436:7;:16;9444:7;:5;:7::i;:::-;-1:-1:-1::0;;;;;9436:16:0::1;-1:-1:-1::0;;;;;9436:16:0::1;;;;;;;;;;;;:29;;;:33;9432:185;;;9486:119;9533:7;:5;:7::i;9486:119::-;10916:1063:::0;:::o;16620:612::-;-1:-1:-1;;;;;16714:13:0;;16670:7;16714:13;;;:7;:13;;;;;16742:21;;16738:67;;16792:1;16785:8;;;;;16738:67;16817:13;16859:1;16845:189;6865:1;16862;:14;16845:189;;;16906:116;16934:73;17003:3;16934:64;16973:21;16995:1;16973:24;;;;;;;;;16934:34;16953:11;16965:1;16953:14;;;;;;;;;16934:6;:11;;16946:1;16934:14;;;;;;;;;;:34;:18;:34;:::i;:::-;:38;:64;:38;:64;:::i;:::-;:68;:73;:68;:73;:::i;:::-;16906:5;;:116;:9;:116;:::i;:::-;16898:124;-1:-1:-1;16878:3:0;;16845:189;;;-1:-1:-1;17169:23:0;;;;17053:171;;17169:23;;:54;;8120:6;17169:54;;;17195:1;17169:54;17053:97;17142:7;17053:70;17077:45;17097:6;:24;;;17077:15;:19;;:45;;;;:::i;:::-;17053:5;;:70;:23;:70;:::i;:97::-;:115;:171;:115;:171;:::i;:::-;17046:178;;;;16620:612;;;;:::o;6828:38::-;6865:1;6828:38;:::o;16216:396::-;3917:24;:22;:24::i;:::-;16333:10:::2;16301:21;16325:19:::0;;;:7:::2;:19;::::0;;;;16357:9:::2;:7;:9::i;:::-;7088:1;16387:19:::0;::::2;::::0;16409;-1:-1:-1;16379:50:0::2;;12:1:-1;9::::0;2:12:::2;16379:50:0;16440:69;16458:10;16470:13;16484:6;:19;;;16506:1;16484:23;16470:38;;;;;;;;;16440:17;:69::i;:::-;16520:19;::::0;::::2;:21:::0;;::::2;;::::0;;;;16557:47:::2;::::0;16572:10:::2;::::0;16557:47:::2;::::0;16520:19:::2;::::0;16557:47:::2;9420:1;9468::::1;9436:7;:16;9444:7;:5;:7::i;7096:118::-:0;;;;;;;;;;;;;-1:-1:-1;7096:118:0;:::o;7221:117::-;;;;;;;;;7758:80;;;;;;;;;9949:124;10002:26;;:::i;:::-;-1:-1:-1;;;;;10048:12:0;;;;;;:7;:12;;;;;;;10041:24;;;;;;;;10048:17;;10041:24;;10048:17;10041:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9949:124;;;:::o;7441:157::-;;;;;;;;;11987:92;12039:32;12052:10;12064:6;12039:12;:32::i;4779:169::-;-1:-1:-1;;;;;4865:26:0;;4838:7;4865:26;;;:20;:26;;;;;;;;:75;;4939:1;4865:75;;;-1:-1:-1;;;;;4915:20:0;;;;;;:14;:20;;;;;;:5;4894:16;:42;;;:20;:42;:::i;:::-;4858:82;4779:169;-1:-1:-1;;4779:169:0:o;7046:43::-;7088:1;7046:43;:::o;6998:41::-;7037:2;6998:41;:::o;15082:1126::-;3917:24;:22;:24::i;:::-;15222:10:::2;15190:21;15214:19:::0;;;:7:::2;:19;::::0;;;;15250:9:::2;:13:::0;15246:65:::2;;15280:19;15296:1;15280:7;:19::i;:::-;15323:9;:7;:9::i;:::-;15359:1;15353:3;:7;:27;;;;;6865:1;15364:3;:16;15353:27;15345:71;;;::::0;;-1:-1:-1;;;15345:71:0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;::::2;::::0;;;;;;;;;;;;;::::2;;6915:14:::0;15431:22;::::2;15427:355;;;15478:18;:16;:18::i;:::-;15470:59;;;::::0;;-1:-1:-1;;;15470:59:0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;::::2;::::0;;;;;;;;;;;;;::::2;;15572:21:::0;;8348:6:::2;::::0;15552:42:::2;::::0;:15:::2;::::0;:42:::2;:19;:42;:::i;:::-;:67;15544:125;;;;-1:-1:-1::0;;;15544:125:0::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15427:355;;;15717:6;:18;;;15710:3;:25;;15702:68;;;::::0;;-1:-1:-1;;;15702:68:0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;::::2;::::0;;;;;;;;;;;;;::::2;;8060:2;15802:27;15823:5;15802:6;:11;;15814:3;15802:16;;;;;;;;::::0;;:27:::2;:20;:27;:::i;:::-;:50;;15794:59;;12:1:-1;9::::0;2:12:::2;15794:59:0;15883:27;15904:5;15883:6;:11;;15895:3;15883:16;;;;;;:27;15864:6;:11;;15876:3;15864:16;;;;;;;;:46:::0;15939:15:::2;::::0;:26:::2;::::0;15959:5;15939:26:::2;:19;:26;:::i;:::-;15921:15;:44:::0;15976:18:::2;15997:60;16017:10;16029:27;16050:5:::0;16029:11:::2;16041:3:::0;16029:16:::2;::::0;::::2;;;;:27;15997:19;:60::i;:::-;15976:81;;16070:78;16086:10;16098;16110:1;16113:34;16124:10;16144:1;16113:10;:34::i;:::-;16070:15;:78::i;:::-;16166:34;::::0;;;;;::::2;::::0;::::2;::::0;;;;;16177:10:::2;::::0;16166:34:::2;::::0;;;;;;::::2;9420:1;;9468::::1;9436:7;:16;9444:7;:5;:7::i;:::-;-1:-1:-1::0;;;;;9436:16:0::1;-1:-1:-1::0;;;;;9436:16:0::1;;;;;;;;;;;;:29;;;:33;9432:185;;;9486:119;9533:7;:5;:7::i;9486:119::-;15082:1126:::0;;:::o;7961:46::-;8001:6;7961:46;:::o;7605:146::-;;;;;;;;;17897:135;17961:22;:20;:22::i;:::-;17994:30;18004:7;:5;:7::i;:::-;18021:1;17994:9;:30::i;17720:169::-;17801:48;17821:27;17837:10;17821:15;:27::i;:::-;17801:15;;;:48;:19;:48;:::i;:::-;17783:15;:66;17860:21;:19;:21::i;3457:44::-;3494:7;3457:44;:::o;14314:760::-;3917:24;:22;:24::i;:::-;14438:10:::2;14406:21;14430:19:::0;;;:7:::2;:19;::::0;;;;14466:9:::2;:13:::0;14462:65:::2;;14496:19;14512:1;14496:7;:19::i;:::-;14539:9;:7;:9::i;:::-;6915:14:::0;14569:21;::::2;14561:58;;;::::0;;-1:-1:-1;;;14561:58:0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;::::2;::::0;;;;;;;;;;;;;::::2;;8060:2;14639:6;:11;;14657:1;14651:3;:7;14639:20;;;;;;;;;:43;14631:81;;;::::0;;-1:-1:-1;;;14631:81:0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;::::2;::::0;;;;;;;;;;;;;::::2;;14738:6;:18;;;14759:1;14738:22;14731:3;:29;14723:73;;;::::0;;-1:-1:-1;;;14723:73:0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;::::2;::::0;;;;;;;;;;;;;::::2;;6977:14:::0;14813:21;::::2;14809:81;;;14876:1;14859:6;:13;;;:18;;14851:27;;12:1:-1;9::::0;2:12:::2;14851:27:0;14900:56;14920:10;14932:18;14951:3;14932:23;;;;;;;;;14900:19;:56::i;:::-;;14988:3;14967:6;:18;;:24;;;;15021:1;15002:6;:11;;15014:3;15002:16;;;;;;;;:20:::0;15038:28:::2;::::0;;;;;;;15050:10:::2;::::0;15038:28:::2;::::0;;;;;::::2;::::0;;::::2;9420:1;9468::::1;9436:7;:16;9444:7;:5;:7::i;5860:91::-:0;1277:12;:10;:12::i;:::-;1267:6;;-1:-1:-1;;;;;1267:6:0;;;:22;;;1259:67;;;;;-1:-1:-1;;;1259:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;6873:56;6915:14;6873:56;:::o;8485:25::-;;;;:::o;3736:26::-;;;;;;;;:::o;4527:124::-;-1:-1:-1;;;;;4617:26:0;4593:4;4617:26;;;:20;:26;;;;;;;;;4527:124::o;1134:79::-;1172:7;1199:6;-1:-1:-1;;;;;1199:6:0;1134:79;:::o;10248:120::-;-1:-1:-1;;;;;10337:13:0;;;;;;:7;:13;;;;;;;;;:23;;10330:30;;;;;;;;;;;;;;;;;10301:16;;10330:30;;;10337:23;10330:30;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10330:30:0;;;;;;;;;;;;;;;;;;;;;;10248:120;;;:::o;4053:466::-;4112:19;;:23;;;;:80;;-1:-1:-1;4139:18:0;;4177:15;;4139:34;;3494:7;4139:34;:22;:34;:::i;:::-;:53;;4112:80;4105:407;;;4209:14;4226:59;4281:3;4226:50;:21;3449:1;4226:50;:25;:50;:::i;:59::-;4351:19;;4209:76;;-1:-1:-1;4319:53:0;;4340:31;;4209:76;;4340:31;:10;:31;:::i;:::-;4319:5;:16;;:53;:20;:53;:::i;:::-;4300:5;:72;4408:18;;:34;;3494:7;4408:34;:22;:34;:::i;:::-;4387:18;:55;4472:19;;4462:38;;;;;;;;;;;;;;;;;;;;;;;;4105:407;;;12087:530;-1:-1:-1;;;;;12192:16:0;;12168:21;12192:16;;;:7;:16;;;;;12221:9;:7;:9::i;:::-;12243:13;12259:25;:6;8001;12259:25;:10;:25;:::i;:::-;12243:41;;12311:1;12303:5;:9;12295:50;;;;;-1:-1:-1;;;12295:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;12378:19;;;;:31;;12402:6;12378:31;:23;:31;:::i;:::-;12356:19;;;:53;12445:22;;;;:33;;12472:5;12445:33;:26;:33;:::i;:::-;12420:22;;;:58;12507:15;;:26;;12527:5;12507:26;:19;:26;:::i;:::-;12489:15;:44;12544:23;;-1:-1:-1;;;;;12544:16:0;;;:23;;;;;12561:5;;12544:23;;;;12561:5;12544:16;:23;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;12583:26:0;;;;;;;;-1:-1:-1;;;;;12583:26:0;;;;;;;;;;;;;12087:530;;;;:::o;10611:297::-;10677:4;10716:7;:5;:7::i;:::-;-1:-1:-1;;;;;10702:21:0;:10;-1:-1:-1;;;;;10702:21:0;;10694:30;;12:1:-1;9;2:12;10694:30:0;10737:9;:7;:9::i;:::-;10759:39;10779:10;10791:6;10759:19;:39::i;:::-;-1:-1:-1;;;;;;10839:16:0;;;;;;:7;:16;;;;;:27;;;:39;;10871:6;10839:39;:31;:39;:::i;:::-;-1:-1:-1;;;;;10809:16:0;;;;;;:7;:16;;;;;:27;;:69;-1:-1:-1;10896:4:0;10611:297;;;;:::o;8014:48::-;8060:2;8014:48;:::o;7845:107::-;;;;;;;;;8587:30;;;;:::o;8423:53::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8423:53:0;:::o;8240:52::-;8290:2;8240:52;:::o;17240:472::-;3917:24;:22;:24::i;:::-;-1:-1:-1;;;;;17356:13:0;::::2;17332:21;17356:13:::0;;;:7:::2;:13;::::0;;;;17382:9:::2;:7;:9::i;:::-;17418:13;::::0;::::2;::::0;17404:301:::2;7037:2;17433:1;:16;17404:301;;;17492:13;17506:1;17492:16;;;;;;;;;17475:6;:13;;;:33;17471:223;;17549:40;17571:14;17586:1;17571:17;;;;;;;;::::0;17549::::2;::::0;::::2;::::0;;:40:::2;:21;:40;:::i;:::-;17529:17;::::0;::::2;:60:::0;17628:1:::2;17624:5:::0;::::2;17608:13;::::0;::::2;:21:::0;;;17653:25:::2;::::0;-1:-1:-1;;;;;17653:25:0;::::2;::::0;::::2;::::0;-1:-1:-1;;17653:25:0::2;17471:223;17451:3;;17404:301;;;;9420:1;9468::::1;9436:7;:16;9444:7;:5;:7::i;8361:55::-:0;;;;;;;;;;13407:899;-1:-1:-1;;;;;13614:16:0;;13509:20;13614:16;;;:7;:16;;;;;13645:21;;13509:20;;13614:16;13641:72;;-1:-1:-1;13696:1:0;;-1:-1:-1;13696:1:0;;-1:-1:-1;13688:13:0;;13641:72;13740:6;:19;;;13725:34;;13783:6;:17;;;13770:30;;13813:17;13833:15;13840:7;13833:6;:15::i;:::-;13864:23;;;;13813:35;;-1:-1:-1;13864:23:0;;13859:176;;13916:39;:9;8120:6;13916:39;:13;:39;:::i;:::-;13904:51;-1:-1:-1;13983:40:0;:10;8120:6;13983:40;:14;:40;:::i;:::-;13970:53;;13859:176;14047:19;14069:66;14131:3;14069:57;14083:21;14105:6;:19;;;14083:42;;;;;;;;;14069:9;;:57;:13;:57;:::i;:66::-;14047:88;-1:-1:-1;14146:17:0;14166:26;:9;14047:88;14166:26;:13;:26;:::i;:::-;14146:46;-1:-1:-1;14220:29:0;:12;14237:11;14220:29;:16;:29;:::i;:::-;14205:44;-1:-1:-1;14273:25:0;:10;14288:9;14273:25;:14;:25;:::i;:::-;14260:38;;13407:899;;;;;;;;:::o;8069:57::-;8120:6;8069:57;:::o;4659:112::-;-1:-1:-1;;;;;4743:20:0;4716:7;4743:20;;;:14;:20;;;;;;;4659:112::o;3399:51::-;3449:1;3399:51;:::o;8661:41::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8661:41:0;;;:::o;5722:27::-;;;-1:-1:-1;;;;;5722:27:0;;:::o;10081:159::-;10178:10;;10129:4;;10178:54;;10228:3;;10178:45;;10193:29;10178:45;:14;:45;:::i;:54::-;10153:21;:79;;10146:86;;10081:159;:::o;8624:30::-;;;;:::o;5959:122::-;1277:12;:10;:12::i;:::-;1267:6;;-1:-1:-1;;;;;1267:6:0;;;:22;;;1259:67;;;;;-1:-1:-1;;;1259:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6050:12:::1;:23:::0;;-1:-1:-1;;;;;;6050:23:0::1;-1:-1:-1::0;;;;;6050:23:0;;;::::1;::::0;;;::::1;::::0;;5959:122::o;8517:27::-;;;;:::o;7345:89::-;;;;;;;;;8551:29;;;;:::o;1803:181::-;1861:7;1893:5;;;1917:6;;;;1909:46;;;;;-1:-1:-1;;;1909:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;1975:1;1803:181;-1:-1:-1;;;1803:181:0:o;2354:280::-;2412:7;2466:6;2462:47;;-1:-1:-1;2496:1:0;2489:8;;2462:47;2533:5;;;2537:1;2533;:5;:1;2557:5;;;;;:10;2549:56;;;;-1:-1:-1;;;2549:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2648:132;2706:7;2733:39;2737:1;2740;2733:39;;;;;;;;;;;;;;;;;:3;:39::i;1998:136::-;2056:7;2083:43;2087:1;2090;2083:43;;;;;;;;;;;;;;;;;:3;:43::i;10376:227::-;-1:-1:-1;;;;;10469:13:0;;10445:7;10469:13;;;:7;:13;;;;;:28;:33;:48;;;;;10513:4;-1:-1:-1;;;;;10506:11:0;:3;-1:-1:-1;;;;;10506:11:0;;;10469:48;10465:91;;;-1:-1:-1;10541:3:0;10534:10;;10465:91;-1:-1:-1;;;;;;;10573:13:0;;;;;;;:7;:13;;;;;:22;;;;;;;;10376:227::o;19083:797::-;-1:-1:-1;;;;;19180:13:0;;19156:21;19180:13;;;:7;:13;;;;;;;19230:15;19206:39;;19180:13;19256:11;;;:14;:36;19324:1;19303:18;;;:22;19363:15;19336:24;;;:42;19407:15;;:40;;8060:2;19407:40;:19;:40;:::i;:::-;19389:15;:58;19458:12;:14;;;;;;-1:-1:-1;;;;;19489:24:0;;;19485:344;;19530:15;;;;:28;;-1:-1:-1;;;;;;19530:28:0;;-1:-1:-1;;;;;19530:28:0;;;;;;;;;;;;;-1:-1:-1;19573:19:0;;;:7;:19;;;;;;;:29;;;27:10:-1;;23:18;;;45:23;;19573:40:0;;;;;;;;;;;-1:-1:-1;;;;;;19573:40:0;;;;;;;19634:19;;;:28;;;;;;;;:42;19630:140;;-1:-1:-1;;;;;19705:19:0;;;19697:37;19705:19;;;19697:7;19705:19;;;;;;:28;;;;;;;;;;;19697:37;;;;:55;;:57;;;;;;;19630:140;19786:31;19806:10;19786:19;:31::i;:::-;19861:10;-1:-1:-1;;;;;19844:28:0;19855:4;-1:-1:-1;;;;;19844:28:0;;;;;;;;;;;19083:797;;;:::o;18040:1035::-;18177:7;:5;:7::i;:::-;-1:-1:-1;;;;;18161:34:0;:77;8001:6;18218:3;8173:2;18196:19;;:25;:41;18161:77;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;;;;;18265:24:0;;;18261:807;;-1:-1:-1;;;;;18332:19:0;;18306:23;18332:19;;;:7;:19;;;;;18401:32;;;;:47;;18438:9;18401:47;:36;:47;:::i;:::-;18366:32;;;:82;18463:31;18483:10;18463:19;:31::i;:::-;18538:10;18525;18563:494;-1:-1:-1;;;;;18580:16:0;;;;;;:57;;-1:-1:-1;18604:26:0;:33;18600:37;;18580:57;18563:494;;;18663:14;18680:47;18723:3;18680:38;18688:26;18715:1;18688:29;;;;;;;;;;;;;;;;18680:3;:7;;:38;;;;:::i;:47::-;-1:-1:-1;;;;;18773:11:0;;;;;;:7;:11;;;;;:24;;;18663:64;;-1:-1:-1;18773:36:0;;18663:64;18773:36;:28;:36;:::i;:::-;18746:7;:11;18754:2;-1:-1:-1;;;;;18746:11:0;-1:-1:-1;;;;;18746:11:0;;;;;;;;;;;;:24;;:63;;;;18849:67;18872:43;18911:3;18872:34;18880:22;18903:1;18880:25;;;;;;;;;;;;;;;;18872:3;:7;;:34;;;;:::i;:43::-;-1:-1:-1;;;;;18849:11:0;;;;;;:7;:11;;;;;:18;;;;:67;:22;:67;:::i;:::-;-1:-1:-1;;;;;18828:11:0;;;;;;;:7;:11;;;;;;;;;:18;;:88;;;;18940:37;;;;;;;18967:1;18963:5;;;18828:11;;18940:37;;;;;;;;;;;-1:-1:-1;;;;;;19021:11:0;;;;;;;:7;:11;;;;;:20;;;;;;;;;;;;18639:3;18563:494;;;;18261:807;;;18040:1035;;;;:::o;20691:425::-;-1:-1:-1;;;;;20758:18:0;;;;;;:49;;-1:-1:-1;;;;;;20781:26:0;;;;;;:20;:26;;;;;;;;20780:27;20758:49;20754:355;;;-1:-1:-1;;;;;20848:13:0;;20824:21;20848:13;;;:7;:13;;;;;20882:21;;;;20907:7;-1:-1:-1;20882:32:0;;;:82;;-1:-1:-1;20935:16:0;;;:23;20962:2;-1:-1:-1;20935:29:0;20882:82;:145;;;;;21019:8;20985:6;:30;;;:42;;20882:145;20878:220;;;21061:21;21077:4;21061:15;:21::i;90:107::-;148:7;180:1;175;:6;;:14;;188:1;175:14;;;-1:-1:-1;184:1:0;;90:107;-1:-1:-1;90:107:0:o;19888:186::-;-1:-1:-1;;;;;19989:13:0;;19965:21;19989:13;;;:7;:13;;;;;20035:19;;;;:31;;20059:6;20035:31;:23;:31;:::i;:::-;20013:19;;;;:53;-1:-1:-1;;19888:186:0:o;20270:413::-;-1:-1:-1;;;;;20390:13:0;;20346:7;20390:13;;;:7;:13;;;;;20447:17;;;;20346:7;;20430:35;;20439:6;;20430:8;:35::i;:::-;20416:49;-1:-1:-1;20476:13:0;20492:58;20546:3;20492:49;20512:28;20492:15;:6;20416:49;20492:15;:10;:15;:::i;:58::-;20583:17;;;;20476:74;;-1:-1:-1;20583:26:0;;20605:3;20583:26;:21;:26;:::i;:::-;20563:17;;;:46;20620:30;20638:4;20644:5;20620:17;:30::i;:::-;20670:5;20270:413;-1:-1:-1;;;;;20270:413:0:o;6089:138::-;5819:12;;-1:-1:-1;;;;;5819:12:0;5805:10;:26;5797:35;;12:1:-1;9;2:12;5797:35:0;6176:12:::1;::::0;6158:31:::1;::::0;-1:-1:-1;;;;;6176:12:0::1;6158:17;:31::i;:::-;6207:12;6200:19:::0;;-1:-1:-1;;;;;;6200:19:0::1;::::0;;6089:138::o;4956:359::-;3917:24;:22;:24::i;:::-;5056:10:::1;5035:32;::::0;;;:20;:32:::1;::::0;;;;;::::1;;5027:74;;;::::0;;-1:-1:-1;;;5027:74:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;5114:14;5131:60;5140:21;5163:27;5179:10;5163:15;:27::i;:::-;5131:8;:60::i;:::-;5246:10;5231:26;::::0;;;:14;:26:::1;::::0;;;;;5114:77;;-1:-1:-1;5231:38:0::1;::::0;5114:77;5231:38:::1;:30;:38;:::i;:::-;5217:10;5202:26;::::0;;;:14;:26:::1;::::0;;;;;:67;;;;5280:27;;5217:10;;5280:27;::::1;;;::::0;5300:6;;5280:27;5202:26;5280:27;5300:6;5217:10;5280:27;::::1;;;;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;557:106:0::0;645:10;557:106;:::o;2794:211::-;2880:7;2925:12;2918:5;2910:28;;;;-1:-1:-1;;;2910:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2910:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2949:9;2965:1;2961;:5;;;;;;;2794:211;-1:-1:-1;;;;;2794:211:0:o;2148:192::-;2234:7;2270:12;2262:6;;;;2254:29;;;;-1:-1:-1;;;2254:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;2254:29:0;-1:-1:-1;;;2306:5:0;;;2148:192::o;5323:353::-;3917:24;:22;:24::i;:::-;-1:-1:-1;;;;;5411:26:0;::::1;;::::0;;;:20;:26:::1;::::0;;;;;::::1;;5410:27;5402:73;;;;-1:-1:-1::0;;;5402:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;5488:26:0;::::1;;::::0;;;:20;:26:::1;::::0;;;;;;;:33;;-1:-1:-1;;5488:33:0::1;5517:4;5488:33:::0;;::::1;::::0;;;:5:::1;5555:16:::0;5532:14;:20;;;;;:39;:14:::1;5604:19:::0;:26:::1;::::0;::::1;:23;:26;:::i;:::-;5582:19:::0;:48;5646:22:::1;::::0;-1:-1:-1;;;;;5646:22:0;::::1;::::0;::::1;::::0;;;::::1;5323:353:::0;:::o;211:106::-;269:7;300:1;296;:5;:13;;308:1;296:13;;-1:-1:-1;;;;;;;;;;;29:2;21:6;17:15;125:4;109:14;101:6;88:42;-1:-1;;;;;;:::o

Swarm Source

ipfs://136bc7a10a52de7198cbec82b21e89b4b970bc823aefd2b98c5ac4bdb96285ba

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  ]

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.