ETH Price: $2,676.33 (+0.84%)
Gas: 19 Gwei

Contract

0xb28D2376112e5cC8790Cea2e2CD39a9Cf90578E9
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Registration Ext107902222020-09-03 19:37:101438 days ago1599161830IN
0xb28D2376...Cf90578E9
0.1684 ETH0.48123299406.5
Registration Ext107901342020-09-03 19:15:071438 days ago1599160507IN
0xb28D2376...Cf90578E9
0.1684 ETH0.35629984441.1
Registration Ext107898712020-09-03 18:13:501438 days ago1599156830IN
0xb28D2376...Cf90578E9
0.1684 ETH0.44437527466
Registration Ext107897222020-09-03 17:43:011438 days ago1599154981IN
0xb28D2376...Cf90578E9
0.1684 ETH0.3080268450
Allow Registrati...107896642020-09-03 17:31:091438 days ago1599154269IN
0xb28D2376...Cf90578E9
0 ETH0.01130329466
Allow Registrati...107896002020-09-03 17:16:531438 days ago1599153413IN
0xb28D2376...Cf90578E9
0 ETH0.0117399484
Registration Ext107836402020-09-02 19:09:441439 days ago1599073784IN
0xb28D2376...Cf90578E9
0.1684 ETH0.39161433484.25468164
Allow Registrati...107817642020-09-02 12:24:081439 days ago1599049448IN
0xb28D2376...Cf90578E9
0 ETH0.021728500
0x60806040107770632020-09-01 18:54:321440 days ago1598986472IN
 Create: SmartMatrixForsage
0 ETH2.29641557479

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
107902222020-09-03 19:37:101438 days ago1599161830
0xb28D2376...Cf90578E9
0.0226 ETH
107902222020-09-03 19:37:101438 days ago1599161830
0xb28D2376...Cf90578E9
0.0417 ETH
107902222020-09-03 19:37:101438 days ago1599161830
0xb28D2376...Cf90578E9
0.0417 ETH
107902222020-09-03 19:37:101438 days ago1599161830
0xb28D2376...Cf90578E9
0.0208 ETH
107902222020-09-03 19:37:101438 days ago1599161830
0xb28D2376...Cf90578E9
0.0208 ETH
107902222020-09-03 19:37:101438 days ago1599161830
0xb28D2376...Cf90578E9
0.0104 ETH
107902222020-09-03 19:37:101438 days ago1599161830
0xb28D2376...Cf90578E9
0.0104 ETH
107901342020-09-03 19:15:071438 days ago1599160507
0xb28D2376...Cf90578E9
0.0226 ETH
107901342020-09-03 19:15:071438 days ago1599160507
0xb28D2376...Cf90578E9
0.0417 ETH
107901342020-09-03 19:15:071438 days ago1599160507
0xb28D2376...Cf90578E9
0.0417 ETH
107901342020-09-03 19:15:071438 days ago1599160507
0xb28D2376...Cf90578E9
0.0208 ETH
107901342020-09-03 19:15:071438 days ago1599160507
0xb28D2376...Cf90578E9
0.0208 ETH
107901342020-09-03 19:15:071438 days ago1599160507
0xb28D2376...Cf90578E9
0.0104 ETH
107901342020-09-03 19:15:071438 days ago1599160507
0xb28D2376...Cf90578E9
0.0104 ETH
107898712020-09-03 18:13:501438 days ago1599156830
0xb28D2376...Cf90578E9
0.0226 ETH
107898712020-09-03 18:13:501438 days ago1599156830
0xb28D2376...Cf90578E9
0.0417 ETH
107898712020-09-03 18:13:501438 days ago1599156830
0xb28D2376...Cf90578E9
0.0417 ETH
107898712020-09-03 18:13:501438 days ago1599156830
0xb28D2376...Cf90578E9
0.0208 ETH
107898712020-09-03 18:13:501438 days ago1599156830
0xb28D2376...Cf90578E9
0.0208 ETH
107898712020-09-03 18:13:501438 days ago1599156830
0xb28D2376...Cf90578E9
0.0104 ETH
107898712020-09-03 18:13:501438 days ago1599156830
0xb28D2376...Cf90578E9
0.0104 ETH
107897222020-09-03 17:43:011438 days ago1599154981
0xb28D2376...Cf90578E9
0.0226 ETH
107897222020-09-03 17:43:011438 days ago1599154981
0xb28D2376...Cf90578E9
0.0417 ETH
107897222020-09-03 17:43:011438 days ago1599154981
0xb28D2376...Cf90578E9
0.0417 ETH
107897222020-09-03 17:43:011438 days ago1599154981
0xb28D2376...Cf90578E9
0.0208 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SmartMatrixForsage

Compiler Version
v0.4.26+commit.4563c3fc

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-09-01
*/

pragma solidity >=0.4.23 <0.6.0;

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;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        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;
    }
}

interface IMakerPriceFeed {
  function read() external view returns (bytes32);
}

contract SmartMatrixForsage {
    
    struct User {
        uint id;
        address referrer;
        uint partnersCount;
        
        mapping(uint8 => bool) activeX3Levels;
        mapping(uint8 => bool) activeX6Levels;
        
        mapping(uint8 => X3) x3Matrix;
        mapping(uint8 => X6) x6Matrix;
    }
    
    struct X3 {
        address currentReferrer;
        address[] referrals;
        bool blocked;
        uint reinvestCount;
    }
    
    struct X6 {
        address currentReferrer;
        address[] firstLevelReferrals;
        address[] secondLevelReferrals;
        bool blocked;
        uint reinvestCount;

        address closedPart;
    }

    uint8 public constant LAST_LEVEL = 21;
    
    mapping(address => User) public users;
    mapping(uint => address) public idToAddress;
    mapping(uint => address) public userIds;
    mapping(address => uint) public balances; 

    uint public lastUserId = 2;
    address public owner;
    
    //mapping(uint8 => uint) public levelPrice;
    uint[22] public levelPrice;
    uint public regAmount = 0;
    uint public ethPrice;
    uint public initialFees = 0;
    uint public upgradeFees =0;
    ///////////////////////Daily Registration CountY/////////////////////////
    uint public dayReg=0;
    uint256 public distributeTime = now + 24 hours;
    function reg() private{
        if(now<distributeTime){
            dayReg++;
        }
        else{
            dayReg=1;
            distributeTime = now + 24 hours;
        }
    }
   ///////////////////////////////////////////////
    
    event Registration(address indexed user, address indexed referrer, uint indexed userId, uint referrerId);
    event Reinvest(address indexed user, address indexed currentReferrer, address indexed caller, uint8 matrix, uint8 level);
    event Upgrade(address indexed user, address indexed referrer, uint8 matrix, uint8 level);
    event NewUserPlace(address indexed user, address indexed referrer, uint8 matrix, uint8 level, uint8 place);
    event MissedEthReceive(address indexed receiver, address indexed from, uint8 matrix, uint8 level);
    event SentExtraEthDividends(address indexed from, address indexed receiver, uint8 matrix, uint8 level);
    event EarnedEth(address indexed user,uint8 matrix, uint amount);
    event EthLevelLost(address indexed user,uint matrix ,uint level);
    
    ////////////////////////////AUTO PRICE UPDATE///////////////////////////////////////////////////////////
    uint256 public updateTime= now + 6 hours;
    function upprice() private{
        if(now<updateTime){
            
        }
        else{
            updateEtherPrices();
        }
    }
    
    function updateEtherPrices() public{
        updateTime = now + 6 hours;
        
        ethPrice=getETHUSDPrice();
        initialFees = SafeMath.div(uint(3 *  10000000000000000000000),ethPrice)*100000000000000;
        upgradeFees = SafeMath.div(uint(2 *  10000000000000000000000),ethPrice)*100000000000000;
        levelPrice[1] = SafeMath.div(uint(5 *  10000000000000000000000),ethPrice)*100000000000000;
        levelPrice[2] = SafeMath.div(uint(10 * 10000000000000000000000),ethPrice)*100000000000000;
        levelPrice[3] = SafeMath.div(uint(20 * 10000000000000000000000),ethPrice)*100000000000000;
        levelPrice[4] = SafeMath.div(uint(30 * 10000000000000000000000),ethPrice)*100000000000000;
        levelPrice[5] = SafeMath.div(uint(40 * 10000000000000000000000),ethPrice)*100000000000000;
        levelPrice[6] = SafeMath.div(uint(50 * 10000000000000000000000),ethPrice)*100000000000000;
        levelPrice[7] = SafeMath.div(uint(75 * 10000000000000000000000),ethPrice)*100000000000000;
        levelPrice[8] = SafeMath.div(uint(100 * 10000000000000000000000),ethPrice)*100000000000000;
        levelPrice[9] = SafeMath.div(uint(125 * 10000000000000000000000),ethPrice)*100000000000000;
        levelPrice[10] = SafeMath.div(uint(150* 10000000000000000000000),ethPrice)*100000000000000;
        levelPrice[11] = SafeMath.div(uint(200* 10000000000000000000000),ethPrice)*100000000000000;
        levelPrice[12] = SafeMath.div(uint(250* 10000000000000000000000),ethPrice)*100000000000000;
        levelPrice[13] = SafeMath.div(uint(300* 10000000000000000000000),ethPrice)*100000000000000;
        levelPrice[14] = SafeMath.div(uint(400* 10000000000000000000000),ethPrice)*100000000000000;
        levelPrice[15] = SafeMath.div(uint(500* 10000000000000000000000),ethPrice)*100000000000000;
        levelPrice[16] = SafeMath.div(uint(750* 10000000000000000000000),ethPrice)*100000000000000;
        levelPrice[17] = SafeMath.div(uint(1000*10000000000000000000000),ethPrice)*100000000000000;
        levelPrice[18] = SafeMath.div(uint(1250*10000000000000000000000),ethPrice)*100000000000000;
        levelPrice[19] = SafeMath.div(uint(1500*10000000000000000000000),ethPrice)*100000000000000;
        levelPrice[20] = SafeMath.div(uint(2000*10000000000000000000000),ethPrice)*100000000000000;
        levelPrice[21] = SafeMath.div(uint(3000*10000000000000000000000),ethPrice)*100000000000000;
        regAmount= 2*(levelPrice[1]+levelPrice[2]+levelPrice[3]) + initialFees + 4*upgradeFees;
    }
    
  function getETHUSDPrice() public view returns (uint) {
    address ethUsdPriceFeed = 0x729D19f657BD0614b4985Cf1D82531c67569197B;
    return uint(
      IMakerPriceFeed(ethUsdPriceFeed).read()
    );
  }
    ////////////////////////////////////////////////////////////////////////////////////////////////////////
    constructor(address ownerAddress) public {
        //*********************\\
        updateEtherPrices();
        //*********************\\
        owner = ownerAddress;
        
        User memory user = User({
            id: 1,
            referrer: address(0),
            partnersCount: uint(0)
        });
        
        users[ownerAddress] = user;
        idToAddress[1] = ownerAddress;
        
        for (uint8 i = 1; i <= LAST_LEVEL; i++) {
            users[ownerAddress].activeX3Levels[i] = true;
            users[ownerAddress].activeX6Levels[i] = true;
        }
        
        userIds[1] = ownerAddress;
    }
    
    function() external payable {
        if(msg.data.length == 0) {
            return registration(msg.sender, owner);
        }
        
        registration(msg.sender, bytesToAddress(msg.data));
    }

    function registrationExt(address referrerAddress) external payable {
        registration(msg.sender, referrerAddress);
        reg();
    }
    
    function buyNewLevel(uint8 matrix, uint8 level) external payable {
        require(isUserExists(msg.sender), "user is not exists. Register first.");
        require(matrix == 1 || matrix == 2, "invalid matrix");
        require(msg.value == (levelPrice[level]+upgradeFees), "invalid price");
        require(level > 1 && level <= LAST_LEVEL, "invalid level");
        //////////////// check for price update time and update time////////////////////
        upprice();
        /////////////////////////////////////////////////////////////////////////////////

        if (matrix == 1) {
            require(!users[msg.sender].activeX3Levels[level], "level already activated");

            if (users[msg.sender].x3Matrix[level-1].blocked) {
                users[msg.sender].x3Matrix[level-1].blocked = false;
            }
    
            address freeX3Referrer = findFreeX3Referrer(msg.sender, level);
            users[msg.sender].x3Matrix[level].currentReferrer = freeX3Referrer;
            users[msg.sender].activeX3Levels[level] = true;
            updateX3Referrer(msg.sender, freeX3Referrer, level);
            
            emit Upgrade(msg.sender, freeX3Referrer, 1, level);

        } else {
            require(!users[msg.sender].activeX6Levels[level], "level already activated"); 

            if (users[msg.sender].x6Matrix[level-1].blocked) {
                users[msg.sender].x6Matrix[level-1].blocked = false;
            }

            address freeX6Referrer = findFreeX6Referrer(msg.sender, level);
            
            users[msg.sender].activeX6Levels[level] = true;
            updateX6Referrer(msg.sender, freeX6Referrer, level);
            
            emit Upgrade(msg.sender, freeX6Referrer, 2, level);
        }
    }  
    //////////////////////////////**************************///////////////////////////////////////////////
    bool public registrationAllowed=false;
    function allowRegistration(bool allowed) public{
        require(msg.sender==owner,"Only Admin Can Call");
        registrationAllowed = allowed;
        
    }
    function adminReg(address userAddress, address referrerAddress) public{
        require(msg.sender==owner,"Only Admin Can Call");
        require(!isUserExists(userAddress), "user exists");
        require(isUserExists(referrerAddress), "referrer not exists");
        User memory user = User({
            id: lastUserId,
            referrer: referrerAddress,
            partnersCount: 0
        });
        
        users[userAddress] = user;
        idToAddress[lastUserId] = userAddress;
        
        for (uint8 i = 1; i <= LAST_LEVEL; i++) {
            users[userAddress].activeX3Levels[i] = true;
            users[userAddress].activeX6Levels[i] = true;
        }
        
        userIds[lastUserId] = userAddress;
        lastUserId++;
        users[referrerAddress].partnersCount++;
    }
    ///////////////////////////////*****************************//////////////////////////////////////////////
    
    function registration(address userAddress, address referrerAddress) private {
        require(registrationAllowed==true,"Registration Not Started");
        require(msg.value == regAmount, "registration cost 10$");
        require(!isUserExists(userAddress), "user exists");
        require(isUserExists(referrerAddress), "referrer not exists");
        
        uint32 size;
        assembly {
            size := extcodesize(userAddress)
        }
        require(size == 0, "cannot be a contract");
        
        User memory user = User({
            id: lastUserId,
            referrer: referrerAddress,
            partnersCount: 0
        });
        
        users[userAddress] = user;
        idToAddress[lastUserId] = userAddress;
        
        users[userAddress].referrer = referrerAddress;
        
        users[userAddress].activeX3Levels[1] = true; 
        users[userAddress].activeX6Levels[1] = true;
        
        
        userIds[lastUserId] = userAddress;
        lastUserId++;
        
        users[referrerAddress].partnersCount++;

        address freeX3Referrer = findFreeX3Referrer(userAddress, 1);
        users[userAddress].x3Matrix[1].currentReferrer = freeX3Referrer;
        updateX3Referrer(userAddress, freeX3Referrer, 1);

        updateX6Referrer(userAddress, findFreeX6Referrer(userAddress, 1), 1);
        
         ///////////////////////////////////////////////////////////////////// Second Register//////////////////////////////
        users[userAddress].activeX3Levels[2] = true; 
        users[userAddress].activeX6Levels[2] = true;
        address freeX3Referrer2 = findFreeX3Referrer(userAddress, 2);
        users[userAddress].x3Matrix[2].currentReferrer = freeX3Referrer2;
        updateX3Referrer(userAddress, freeX3Referrer2, 2);

        updateX6Referrer(userAddress, findFreeX6Referrer(userAddress, 2), 2);
        //*******************************************///////////////////////// Third Register//////////////////////////////
        
        users[userAddress].activeX3Levels[3] = true; 
        users[userAddress].activeX6Levels[3] = true;
        address freeX3Referrer3 = findFreeX3Referrer(userAddress, 3);
        users[userAddress].x3Matrix[3].currentReferrer = freeX3Referrer3;
        updateX3Referrer(userAddress, freeX3Referrer3, 3);

        updateX6Referrer(userAddress, findFreeX6Referrer(userAddress, 3), 3);
        ////////////////SEND REMAINING BALANCE////////////////////////////////
        sendBalance();
        //////////////////////////////////////////////////////////////////////
        
        emit Registration(userAddress, referrerAddress, users[userAddress].id, users[referrerAddress].id);
    }
    
    function updateX3Referrer(address userAddress, address referrerAddress, uint8 level) private {
        users[referrerAddress].x3Matrix[level].referrals.push(userAddress);

        if (users[referrerAddress].x3Matrix[level].referrals.length < 3) {
            emit NewUserPlace(userAddress, referrerAddress, 1, level, uint8(users[referrerAddress].x3Matrix[level].referrals.length));
            return sendETHDividends(referrerAddress, userAddress, 1, level);
        }
        
        emit NewUserPlace(userAddress, referrerAddress, 1, level, 3);
        
        //close matrix
        /*
        users[referrerAddress].x3Matrix[level].referrals = new address[](0);
        if (!users[referrerAddress].activeX3Levels[level+1] && level != LAST_LEVEL) {
            users[referrerAddress].x3Matrix[level].blocked = true;
        }*/

        //create new one by recursion
        if (referrerAddress != owner) {
            //check referrer active level
            address freeReferrerAddress = findFreeX3Referrer(referrerAddress, level);
            if (users[referrerAddress].x3Matrix[level].currentReferrer != freeReferrerAddress) {
                users[referrerAddress].x3Matrix[level].currentReferrer = freeReferrerAddress;
            }
            
            users[referrerAddress].x3Matrix[level].reinvestCount++;
            emit Reinvest(referrerAddress, freeReferrerAddress, userAddress, 1, level);
            updateX3Referrer(referrerAddress, freeReferrerAddress, level);
        } else {
            sendETHDividends(owner, userAddress, 1, level);
            users[owner].x3Matrix[level].reinvestCount++;
            emit Reinvest(owner, address(0), userAddress, 1, level);
        }
    }

    function updateX6Referrer(address userAddress, address referrerAddress, uint8 level) private {
        require(users[referrerAddress].activeX6Levels[level], "500. Referrer level is inactive");
        
        if (users[referrerAddress].x6Matrix[level].firstLevelReferrals.length < 2) {
            users[referrerAddress].x6Matrix[level].firstLevelReferrals.push(userAddress);
            emit NewUserPlace(userAddress, referrerAddress, 2, level, uint8(users[referrerAddress].x6Matrix[level].firstLevelReferrals.length));
            
            //set current level
            users[userAddress].x6Matrix[level].currentReferrer = referrerAddress;

            if (referrerAddress == owner) {
                return sendETHDividends(referrerAddress, userAddress, 2, level);
            }
            
            address ref = users[referrerAddress].x6Matrix[level].currentReferrer;            
            users[ref].x6Matrix[level].secondLevelReferrals.push(userAddress); 
            
            uint len = users[ref].x6Matrix[level].firstLevelReferrals.length;
            
            if ((len == 2) && 
                (users[ref].x6Matrix[level].firstLevelReferrals[0] == referrerAddress) &&
                (users[ref].x6Matrix[level].firstLevelReferrals[1] == referrerAddress)) {
                if (users[referrerAddress].x6Matrix[level].firstLevelReferrals.length == 1) {
                    emit NewUserPlace(userAddress, ref, 2, level, 5);
                } else {
                    emit NewUserPlace(userAddress, ref, 2, level, 6);
                }
            }  else if ((len == 1 || len == 2) &&
                    users[ref].x6Matrix[level].firstLevelReferrals[0] == referrerAddress) {
                if (users[referrerAddress].x6Matrix[level].firstLevelReferrals.length == 1) {
                    emit NewUserPlace(userAddress, ref, 2, level, 3);
                } else {
                    emit NewUserPlace(userAddress, ref, 2, level, 4);
                }
            } else if (len == 2 && users[ref].x6Matrix[level].firstLevelReferrals[1] == referrerAddress) {
                if (users[referrerAddress].x6Matrix[level].firstLevelReferrals.length == 1) {
                    emit NewUserPlace(userAddress, ref, 2, level, 5);
                } else {
                    emit NewUserPlace(userAddress, ref, 2, level, 6);
                }
            }

            return updateX6ReferrerSecondLevel(userAddress, ref, level);
        }
        
        users[referrerAddress].x6Matrix[level].secondLevelReferrals.push(userAddress);

        if (users[referrerAddress].x6Matrix[level].closedPart != address(0)) {
            if ((users[referrerAddress].x6Matrix[level].firstLevelReferrals[0] == 
                users[referrerAddress].x6Matrix[level].firstLevelReferrals[1]) &&
                (users[referrerAddress].x6Matrix[level].firstLevelReferrals[0] ==
                users[referrerAddress].x6Matrix[level].closedPart)) {

                updateX6(userAddress, referrerAddress, level, true);
                return updateX6ReferrerSecondLevel(userAddress, referrerAddress, level);
            } else if (users[referrerAddress].x6Matrix[level].firstLevelReferrals[0] == 
                users[referrerAddress].x6Matrix[level].closedPart) {
                updateX6(userAddress, referrerAddress, level, true);
                return updateX6ReferrerSecondLevel(userAddress, referrerAddress, level);
            } else {
                updateX6(userAddress, referrerAddress, level, false);
                return updateX6ReferrerSecondLevel(userAddress, referrerAddress, level);
            }
        }

        if (users[referrerAddress].x6Matrix[level].firstLevelReferrals[1] == userAddress) {
            updateX6(userAddress, referrerAddress, level, false);
            return updateX6ReferrerSecondLevel(userAddress, referrerAddress, level);
        } else if (users[referrerAddress].x6Matrix[level].firstLevelReferrals[0] == userAddress) {
            updateX6(userAddress, referrerAddress, level, true);
            return updateX6ReferrerSecondLevel(userAddress, referrerAddress, level);
        }
        
        if (users[users[referrerAddress].x6Matrix[level].firstLevelReferrals[0]].x6Matrix[level].firstLevelReferrals.length <= 
            users[users[referrerAddress].x6Matrix[level].firstLevelReferrals[1]].x6Matrix[level].firstLevelReferrals.length) {
            updateX6(userAddress, referrerAddress, level, false);
        } else {
            updateX6(userAddress, referrerAddress, level, true);
        }
        
        updateX6ReferrerSecondLevel(userAddress, referrerAddress, level);
    }

    function updateX6(address userAddress, address referrerAddress, uint8 level, bool x2) private {
        if (!x2) {
            users[users[referrerAddress].x6Matrix[level].firstLevelReferrals[0]].x6Matrix[level].firstLevelReferrals.push(userAddress);
            emit NewUserPlace(userAddress, users[referrerAddress].x6Matrix[level].firstLevelReferrals[0], 2, level, uint8(users[users[referrerAddress].x6Matrix[level].firstLevelReferrals[0]].x6Matrix[level].firstLevelReferrals.length));
            emit NewUserPlace(userAddress, referrerAddress, 2, level, 2 + uint8(users[users[referrerAddress].x6Matrix[level].firstLevelReferrals[0]].x6Matrix[level].firstLevelReferrals.length));
            //set current level
            users[userAddress].x6Matrix[level].currentReferrer = users[referrerAddress].x6Matrix[level].firstLevelReferrals[0];
        } else {
            users[users[referrerAddress].x6Matrix[level].firstLevelReferrals[1]].x6Matrix[level].firstLevelReferrals.push(userAddress);
            emit NewUserPlace(userAddress, users[referrerAddress].x6Matrix[level].firstLevelReferrals[1], 2, level, uint8(users[users[referrerAddress].x6Matrix[level].firstLevelReferrals[1]].x6Matrix[level].firstLevelReferrals.length));
            emit NewUserPlace(userAddress, referrerAddress, 2, level, 4 + uint8(users[users[referrerAddress].x6Matrix[level].firstLevelReferrals[1]].x6Matrix[level].firstLevelReferrals.length));
            //set current level
            users[userAddress].x6Matrix[level].currentReferrer = users[referrerAddress].x6Matrix[level].firstLevelReferrals[1];
        }
    }
    
    function updateX6ReferrerSecondLevel(address userAddress, address referrerAddress, uint8 level) private {
        if (users[referrerAddress].x6Matrix[level].secondLevelReferrals.length < 4) {
            return sendETHDividends(referrerAddress, userAddress, 2, level);
        }
        
        address[] memory x6 = users[users[referrerAddress].x6Matrix[level].currentReferrer].x6Matrix[level].firstLevelReferrals;
        
        if (x6.length == 2) {
            if (x6[0] == referrerAddress ||
                x6[1] == referrerAddress) {
                users[users[referrerAddress].x6Matrix[level].currentReferrer].x6Matrix[level].closedPart = referrerAddress;
            } else if (x6.length == 1) {
                if (x6[0] == referrerAddress) {
                    users[users[referrerAddress].x6Matrix[level].currentReferrer].x6Matrix[level].closedPart = referrerAddress;
                }
            }
        }
        
        users[referrerAddress].x6Matrix[level].firstLevelReferrals = new address[](0);
        users[referrerAddress].x6Matrix[level].secondLevelReferrals = new address[](0);
        users[referrerAddress].x6Matrix[level].closedPart = address(0);

        //close matrix
        /*
        if (!users[referrerAddress].activeX6Levels[level+1] && level != LAST_LEVEL) {
            users[referrerAddress].x6Matrix[level].blocked = true;
        }
        */
        
        users[referrerAddress].x6Matrix[level].reinvestCount++;
        
        if (referrerAddress != owner) {
            address freeReferrerAddress = findFreeX6Referrer(referrerAddress, level);

            emit Reinvest(referrerAddress, freeReferrerAddress, userAddress, 2, level);
            updateX6Referrer(referrerAddress, freeReferrerAddress, level);
        } else {
            emit Reinvest(owner, address(0), userAddress, 2, level);
            sendETHDividends(owner, userAddress, 2, level);
        }
    }
    
    function findFreeX3Referrer(address userAddress, uint8 level) public returns(address) {
        int i=1;
        while (true) {
            if (users[users[userAddress].referrer].activeX3Levels[level]) {
                return users[userAddress].referrer;
            }
            else if(i==1){
                emit EthLevelLost(users[userAddress].referrer, 1 , level);
                i++;
            }
            
            userAddress = users[userAddress].referrer;
        }
    }
    
    function findFreeX6Referrer(address userAddress, uint8 level) public returns(address) {
        int i=1;
        while (true) {
            if (users[users[userAddress].referrer].activeX6Levels[level]) {
                return users[userAddress].referrer;
            }
            else if(i==1){
                emit EthLevelLost(users[userAddress].referrer, 2 , level);
                i++;
            }
            
            userAddress = users[userAddress].referrer;
        }
    }
    
    
    function usersActiveX3Levels(address userAddress, uint8 level) public view returns(bool) {
        return users[userAddress].activeX3Levels[level];
    }

    function usersActiveX6Levels(address userAddress, uint8 level) public view returns(bool) {
        return users[userAddress].activeX6Levels[level];
    }

    function usersX3Matrix(address userAddress, uint8 level) public view returns(address, address[] memory, bool) {
        return (users[userAddress].x3Matrix[level].currentReferrer,
                users[userAddress].x3Matrix[level].referrals,
                users[userAddress].x3Matrix[level].blocked);
    }

    function usersX6Matrix(address userAddress, uint8 level) public view returns(address, address[] memory, address[] memory, bool, address) {
        return (users[userAddress].x6Matrix[level].currentReferrer,
                users[userAddress].x6Matrix[level].firstLevelReferrals,
                users[userAddress].x6Matrix[level].secondLevelReferrals,
                users[userAddress].x6Matrix[level].blocked,
                users[userAddress].x6Matrix[level].closedPart);
    }
    
    function isUserExists(address user) public view returns (bool) {
        return (users[user].id != 0);
    }
    
    function prices() public constant returns(uint[22]){
        return levelPrice;
        
    }

    function findEthReceiver(address userAddress, address _from, uint8 matrix, uint8 level) private returns(address, bool) {
        
        address receiver = userAddress;
        bool isExtraDividends;
        if (matrix == 1) {
            while (true) {
                if (users[receiver].x3Matrix[level].blocked) {
                    emit MissedEthReceive(receiver, _from, 1, level);
                    isExtraDividends = true;
                    receiver = users[receiver].x3Matrix[level].currentReferrer;
                } else {
                    return (receiver, isExtraDividends);
                }
            }
        } else {
            while (true) {
                if (users[receiver].x6Matrix[level].blocked) {
                    emit MissedEthReceive(receiver, _from, 2, level);
                    isExtraDividends = true;
                    receiver = users[receiver].x6Matrix[level].currentReferrer;
                } else {
                    return (receiver, isExtraDividends);
                }
            }
        }
        
    }

    function sendETHDividends(address userAddress, address _from, uint8 matrix, uint8 level) private {
        (address receiver, bool isExtraDividends) = findEthReceiver(userAddress, _from, matrix, level);
        
        if(receiver==0x0000000000000000000000000000000000000000){
            return;
        }
        if (!address(uint160(receiver)).send(levelPrice[level])) {
            return address(uint160(receiver)).transfer(address(this).balance);
        }
       
        emit EarnedEth(receiver ,matrix, levelPrice[level]);
        if (isExtraDividends) {
            emit SentExtraEthDividends(_from, receiver, matrix, level);
        }
    }
    
    function bytesToAddress(bytes memory bys) private pure returns (address addr) {
        assembly {
            addr := mload(add(bys, 20))
        }
    }
    
    function getEthBalance() public view returns(uint) {
        return address(this).balance;
    }
    
    function sendBalance() private
    {
         if (!address(uint160(owner)).send(getEthBalance()))
         {
             
         }
    }
    
    function close() public { 
        require(msg.sender==owner,"Must Be Owner !");
        selfdestruct(owner);  
}
    
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[],"name":"updateEtherPrices","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"userAddress","type":"address"},{"name":"level","type":"uint8"}],"name":"usersActiveX3Levels","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"balances","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"LAST_LEVEL","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"idToAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lastUserId","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"close","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"userIds","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"user","type":"address"}],"name":"isUserExists","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"regAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getEthBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"referrerAddress","type":"address"}],"name":"registrationExt","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"upgradeFees","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"userAddress","type":"address"},{"name":"level","type":"uint8"}],"name":"usersX3Matrix","outputs":[{"name":"","type":"address"},{"name":"","type":"address[]"},{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"registrationAllowed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"userAddress","type":"address"},{"name":"level","type":"uint8"}],"name":"usersX6Matrix","outputs":[{"name":"","type":"address"},{"name":"","type":"address[]"},{"name":"","type":"address[]"},{"name":"","type":"bool"},{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"allowed","type":"bool"}],"name":"allowRegistration","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"users","outputs":[{"name":"id","type":"uint256"},{"name":"referrer","type":"address"},{"name":"partnersCount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"levelPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"userAddress","type":"address"},{"name":"referrerAddress","type":"address"}],"name":"adminReg","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"userAddress","type":"address"},{"name":"level","type":"uint8"}],"name":"usersActiveX6Levels","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"distributeTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"matrix","type":"uint8"},{"name":"level","type":"uint8"}],"name":"buyNewLevel","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"getETHUSDPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"dayReg","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"initialFees","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"prices","outputs":[{"name":"","type":"uint256[22]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"updateTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"userAddress","type":"address"},{"name":"level","type":"uint8"}],"name":"findFreeX6Referrer","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"userAddress","type":"address"},{"name":"level","type":"uint8"}],"name":"findFreeX3Referrer","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ethPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"ownerAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"user","type":"address"},{"indexed":true,"name":"referrer","type":"address"},{"indexed":true,"name":"userId","type":"uint256"},{"indexed":false,"name":"referrerId","type":"uint256"}],"name":"Registration","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"user","type":"address"},{"indexed":true,"name":"currentReferrer","type":"address"},{"indexed":true,"name":"caller","type":"address"},{"indexed":false,"name":"matrix","type":"uint8"},{"indexed":false,"name":"level","type":"uint8"}],"name":"Reinvest","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"user","type":"address"},{"indexed":true,"name":"referrer","type":"address"},{"indexed":false,"name":"matrix","type":"uint8"},{"indexed":false,"name":"level","type":"uint8"}],"name":"Upgrade","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"user","type":"address"},{"indexed":true,"name":"referrer","type":"address"},{"indexed":false,"name":"matrix","type":"uint8"},{"indexed":false,"name":"level","type":"uint8"},{"indexed":false,"name":"place","type":"uint8"}],"name":"NewUserPlace","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"receiver","type":"address"},{"indexed":true,"name":"from","type":"address"},{"indexed":false,"name":"matrix","type":"uint8"},{"indexed":false,"name":"level","type":"uint8"}],"name":"MissedEthReceive","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"receiver","type":"address"},{"indexed":false,"name":"matrix","type":"uint8"},{"indexed":false,"name":"level","type":"uint8"}],"name":"SentExtraEthDividends","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"user","type":"address"},{"indexed":false,"name":"matrix","type":"uint8"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"EarnedEth","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"user","type":"address"},{"indexed":false,"name":"matrix","type":"uint256"},{"indexed":false,"name":"level","type":"uint256"}],"name":"EthLevelLost","type":"event"}]

608060405260026004556000601c819055601e819055601f81905560205542620151808101602155615460016022556023805460ff191690553480156200004557600080fd5b506040516020806200419583398101604052516200006262000869565b600062000077640100000000620001c6810204565b505060058054600160a060020a03808416600160a060020a031992831681179093556040805160608101825260018082526000602080840182815284860183815289845283835295832085518155905181850180549190981690891617909655935160029095019490945592839052908290527fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f80549093169093179091555b601560ff8216116200017557600160a060020a03831660009081526020818152604080832060ff851684526003810183528184208054600160ff19918216811790925560049092019093529220805490921681179091550162000117565b5050600160005260026020527fe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e08054600160a060020a031916600160a060020a039290921691909117905562000894565b6154604201602255620001e1640100000000620006a5810204565b601d8190556200020b9069065a4da25d3016c000009064010000000062002a5c6200074b82021704565b655af3107a400002601e55601d546200023e9069043c33c19375648000009064010000000062002a5c6200074b82021704565b655af3107a400002601f55601d546200027190690a968163f0a57b4000009064010000000062002a5c6200074b82021704565b655af3107a400002600755601d54620002a49069152d02c7e14af6800000906401000000006200074b810262002a5c1704565b655af3107a400002600855601d54620002d790692a5a058fc295ed000000906401000000006200074b810262002a5c1704565b655af3107a400002600955601d546200030a90693f870857a3e0e3800000906401000000006200074b810262002a5c1704565b655af3107a400002600a55601d546200033d906954b40b1f852bda000000906401000000006200074b810262002a5c1704565b655af3107a400002600b55601d5462000370906969e10de76676d0800000906401000000006200074b810262002a5c1704565b655af3107a400002600c55601d54620003a390699ed194db19b238c00000906401000000006200074b810262002a5c1704565b655af3107a400002600d55601d54620003d69069d3c21bcecceda1000000906401000000006200074b810262002a5c1704565b655af3107a400002600e55601d546200040a906a0108b2a2c2802909400000906401000000006200074b810262002a5c1704565b655af3107a400002600f55601d546200043e906a013da329b6336471800000906401000000006200074b810262002a5c1704565b655af3107a400002601055601d5462000472906a01a784379d99db42000000906401000000006200074b810262002a5c1704565b655af3107a400002601155601d54620004a6906a0211654585005212800000906401000000006200074b810262002a5c1704565b655af3107a400002601255601d54620004da906a027b46536c66c8e3000000906401000000006200074b810262002a5c1704565b655af3107a400002601355601d546200050e906a034f086f3b33b684000000906401000000006200074b810262002a5c1704565b655af3107a400002601455601d5462000542906a0422ca8b0a00a425000000906401000000006200074b810262002a5c1704565b655af3107a400002601555601d5462000576906a06342fd08f00f637800000906401000000006200074b810262002a5c1704565b655af3107a400002601655601d54620005aa906a084595161401484a000000906401000000006200074b810262002a5c1704565b655af3107a400002601755601d54620005de906a0a56fa5b99019a5c800000906401000000006200074b810262002a5c1704565b655af3107a400002601855601d5462000612906a0c685fa11e01ec6f000000906401000000006200074b810262002a5c1704565b655af3107a400002601955601d5462000646906a108b2a2c28029094000000906401000000006200074b810262002a5c1704565b655af3107a400002601a55601d546200067a906a18d0bf423c03d8de000000906401000000006200074b810262002a5c1704565b655af3107a400002601b55601f54601e54600954600854600754010160020201600490910201601c55565b60008073729d19f657bd0614b4985cf1d82531c67569197b905080600160a060020a03166357de26a46040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156200071757600080fd5b505af11580156200072c573d6000803e3d6000fd5b505050506040513d60208110156200074357600080fd5b505191505090565b60006200079e83836040805190810160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620007a5640100000000026401000000009004565b9392505050565b6000808281851162000852576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101562000816578181015183820152602001620007fc565b50505050905090810190601f168015620008445780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5083858115156200085f57fe5b0495945050505050565b606060405190810160405280600081526020016000600160a060020a03168152602001600081525090565b6138f180620008a46000396000f3006080604052600436106101955763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630156a55481146101fd57806307279e2a1461021257806327e235e31461024d57806329c70400146102805780632a2d0c47146102ab578063348d4487146102df57806343d726d6146102f45780634635fd6814610309578063509222cd146103215780635128e6181461034257806370ed0ada14610357578063797eee241461036c5780637a77e65f1461038057806383ba31b2146103955780638da5cb5b146104295780638e72cfc91461043e5780639cc102fc14610453578063a21e4d1714610537578063a87430ba14610551578063aad049b314610598578063ae8ec052146105b0578063b2f7543a146105d7578063b76bf76b146105fe578063be389d5714610613578063bf4b199014610627578063c22ad75d1461063c578063c5b272a014610651578063d3419bf314610666578063dc555090146106b4578063e06e8dbd146106c9578063fa45323d146106f0578063ff186b2e14610717575b3615156101b8576005546101b3903390600160a060020a031661072c565b6101fb565b6101fb336101f66000368080601f01602080910402602001604051908101604052809392919081815260200183838082843750610c42945050505050565b61072c565b005b34801561020957600080fd5b506101fb610c49565b34801561021e57600080fd5b50610239600160a060020a036004351660ff60243516610fad565b604080519115158252519081900360200190f35b34801561025957600080fd5b5061026e600160a060020a0360043516610fdc565b60408051918252519081900360200190f35b34801561028c57600080fd5b50610295610fee565b6040805160ff9092168252519081900360200190f35b3480156102b757600080fd5b506102c3600435610ff3565b60408051600160a060020a039092168252519081900360200190f35b3480156102eb57600080fd5b5061026e61100e565b34801561030057600080fd5b506101fb611014565b34801561031557600080fd5b506102c3600435611084565b34801561032d57600080fd5b50610239600160a060020a036004351661109f565b34801561034e57600080fd5b5061026e6110bc565b34801561036357600080fd5b5061026e6110c2565b6101fb600160a060020a03600435166110c8565b34801561038c57600080fd5b5061026e6110dd565b3480156103a157600080fd5b506103bc600160a060020a036004351660ff602435166110e3565b60408051600160a060020a0385168152821515918101919091526060602080830182815285519284019290925284516080840191868101910280838360005b838110156104135781810151838201526020016103fb565b5050505090500194505050505060405180910390f35b34801561043557600080fd5b506102c3611190565b34801561044a57600080fd5b5061023961119f565b34801561045f57600080fd5b5061047a600160a060020a036004351660ff602435166111a8565b60408051600160a060020a03808816825284151560608301528316608082015260a060208083018281528851928401929092528751929391929184019160c0850191898101910280838360005b838110156104df5781810151838201526020016104c7565b50505050905001838103825286818151815260200191508051906020019060200280838360005b8381101561051e578181015183820152602001610506565b5050505090500197505050505050505060405180910390f35b34801561054357600080fd5b506101fb60043515156112c7565b34801561055d57600080fd5b50610572600160a060020a036004351661133c565b60408051938452600160a060020a03909216602084015282820152519081900360600190f35b3480156105a457600080fd5b5061026e600435611366565b3480156105bc57600080fd5b506101fb600160a060020a036004358116906024351661137a565b3480156105e357600080fd5b50610239600160a060020a036004351660ff602435166115d2565b34801561060a57600080fd5b5061026e611601565b6101fb60ff60043581169060243516611607565b34801561063357600080fd5b5061026e611adb565b34801561064857600080fd5b5061026e611b7f565b34801561065d57600080fd5b5061026e611b85565b34801561067257600080fd5b5061067b611b8b565b60405180826102c080838360005b838110156106a1578181015183820152602001610689565b5050505090500191505060405180910390f35b3480156106c057600080fd5b5061026e611bc7565b3480156106d557600080fd5b506102c3600160a060020a036004351660ff60243516611bcd565b3480156106fc57600080fd5b506102c3600160a060020a036004351660ff60243516611cd0565b34801561072357600080fd5b5061026e611dcd565b60006107366137bb565b6023546000908190819060ff16151560011461079c576040805160e560020a62461bcd02815260206004820152601860248201527f526567697374726174696f6e204e6f7420537461727465640000000000000000604482015290519081900360640190fd5b601c5434146107f5576040805160e560020a62461bcd02815260206004820152601560248201527f726567697374726174696f6e20636f7374203130240000000000000000000000604482015290519081900360640190fd5b6107fe8761109f565b15610853576040805160e560020a62461bcd02815260206004820152600b60248201527f7573657220657869737473000000000000000000000000000000000000000000604482015290519081900360640190fd5b61085c8661109f565b15156108b2576040805160e560020a62461bcd02815260206004820152601360248201527f7265666572726572206e6f742065786973747300000000000000000000000000604482015290519081900360640190fd5b863b945063ffffffff851615610912576040805160e560020a62461bcd02815260206004820152601460248201527f63616e6e6f74206265206120636f6e7472616374000000000000000000000000604482015290519081900360640190fd5b60408051606081018252600480548252600160a060020a03808a16602080850182815260008688018181528f86168083528285528983208951815593516001808601805492909916600160a060020a03199283161789559251600280870191909155895485528387528b852080548316841790558854821688179098558284526003850186528a8420805460ff19908116851790915583855294890186528a8420805490951683179094558754835286855289832080549094161790925585548201909555918452839052939091200180548301905594506109f5908890611cd0565b600160a060020a03888116600090815260208181526040808320600180855260059091019092529091208054600160a060020a03191692841692909217909155909350610a459088908590611dd3565b610a5b87610a54896001611bcd565b600161207a565b600160a060020a03871660009081526020818152604080832060028085526003820184528285208054600160ff1991821681179092556004909301909452919093208054909316909117909155610ab3908890611cd0565b600160a060020a03888116600090815260208181526040808320600280855260059091019092529091208054600160a060020a03191692841692909217909155909250610b039088908490611dd3565b610b1987610b12896002611bcd565b600261207a565b600160a060020a038716600090815260208181526040808320600380855280820184528285208054600160ff1991821681179092556004909301909452919093208054909316909117909155610b70908890611cd0565b600160a060020a03888116600090815260208181526040808320600380855260059091019092529091208054600160a060020a03191692841692909217909155909150610bc09088908390611dd3565b610bd687610bcf896003611bcd565b600361207a565b610bde612a2b565b600160a060020a0380881660008181526020818152604080832054948b168084529281902054815190815290519293927f309bb360e8b69c23937ccc5fb01f9aeeead1c95a99604e175113ff82f2b1723a929181900390910190a450505050505050565b6014015190565b6154604201602255610c59611adb565b601d819055610c739069065a4da25d3016c0000090612a5c565b655af3107a400002601e55601d54610c969069043c33c193756480000090612a5c565b655af3107a400002601f55601d54610cb990690a968163f0a57b40000090612a5c565b655af3107a400002600755601d54610cdc9069152d02c7e14af680000090612a5c565b655af3107a400002600855601d54610cff90692a5a058fc295ed00000090612a5c565b655af3107a400002600955601d54610d2290693f870857a3e0e380000090612a5c565b655af3107a400002600a55601d54610d45906954b40b1f852bda00000090612a5c565b655af3107a400002600b55601d54610d68906969e10de76676d080000090612a5c565b655af3107a400002600c55601d54610d8b90699ed194db19b238c0000090612a5c565b655af3107a400002600d55601d54610dae9069d3c21bcecceda100000090612a5c565b655af3107a400002600e55601d54610dd2906a0108b2a2c280290940000090612a5c565b655af3107a400002600f55601d54610df6906a013da329b633647180000090612a5c565b655af3107a400002601055601d54610e1a906a01a784379d99db4200000090612a5c565b655af3107a400002601155601d54610e3e906a021165458500521280000090612a5c565b655af3107a400002601255601d54610e62906a027b46536c66c8e300000090612a5c565b655af3107a400002601355601d54610e86906a034f086f3b33b68400000090612a5c565b655af3107a400002601455601d54610eaa906a0422ca8b0a00a42500000090612a5c565b655af3107a400002601555601d54610ece906a06342fd08f00f63780000090612a5c565b655af3107a400002601655601d54610ef2906a084595161401484a00000090612a5c565b655af3107a400002601755601d54610f16906a0a56fa5b99019a5c80000090612a5c565b655af3107a400002601855601d54610f3a906a0c685fa11e01ec6f00000090612a5c565b655af3107a400002601955601d54610f5e906a108b2a2c2802909400000090612a5c565b655af3107a400002601a55601d54610f82906a18d0bf423c03d8de00000090612a5c565b655af3107a400002601b55601f54601e54600954600854600754010160020201600490910201601c55565b600160a060020a039190911660009081526020818152604080832060ff94851684526003019091529020541690565b60036020526000908152604090205481565b601581565b600160205260009081526040902054600160a060020a031681565b60045481565b600554600160a060020a03163314611076576040805160e560020a62461bcd02815260206004820152600f60248201527f4d757374204265204f776e657220210000000000000000000000000000000000604482015290519081900360640190fd5b600554600160a060020a0316ff5b600260205260009081526040902054600160a060020a031681565b600160a060020a0316600090815260208190526040902054151590565b601c5481565b30315b90565b6110d2338261072c565b6110da612aa5565b50565b601f5481565b600160a060020a0382811660009081526020818152604080832060ff868116855260059091018352818420805460028201546001909201805485518188028101880190965280865296976060978997939091169591949390931692909184919083018282801561117c57602002820191906000526020600020905b8154600160a060020a0316815260019091019060200180831161115e575b505050505091509250925092509250925092565b600554600160a060020a031681565b60235460ff1681565b600160a060020a0382811660009081526020818152604080832060ff8681168552600690910183528184208054600382015460058301546001840180548751818a0281018a0190985280885298996060998a998c998a9997841698949760029095019690941694909216929186919083018282801561125057602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311611232575b50505050509350828054806020026020016040519081016040528092919081815260200182805480156112ac57602002820191906000526020600020905b8154600160a060020a0316815260019091019060200180831161128e575b50505050509250945094509450945094509295509295909350565b600554600160a060020a03163314611329576040805160e560020a62461bcd02815260206004820152601360248201527f4f6e6c792041646d696e2043616e2043616c6c00000000000000000000000000604482015290519081900360640190fd5b6023805460ff1916911515919091179055565b6000602081905290815260409020805460018201546002909201549091600160a060020a03169083565b6006816016811061137357fe5b0154905081565b6113826137bb565b600554600090600160a060020a031633146113e7576040805160e560020a62461bcd02815260206004820152601360248201527f4f6e6c792041646d696e2043616e2043616c6c00000000000000000000000000604482015290519081900360640190fd5b6113f08461109f565b15611445576040805160e560020a62461bcd02815260206004820152600b60248201527f7573657220657869737473000000000000000000000000000000000000000000604482015290519081900360640190fd5b61144e8361109f565b15156114a4576040805160e560020a62461bcd02815260206004820152601360248201527f7265666572726572206e6f742065786973747300000000000000000000000000604482015290519081900360640190fd5b505060408051606081018252600480548252600160a060020a03808516602080850191825260008587018181528985168083528284528883208851815594516001808701805492909816600160a060020a031992831617909755915160029095019490945594548152908390529490942080549092169093179055905b601560ff82161161157d57600160a060020a03841660009081526020818152604080832060ff851684526003810183528184208054600160ff199182168117909255600490920190935292208054909216811790915501611521565b50506004805460009081526002602081815260408084208054600160a060020a031916600160a060020a0398891617905584546001908101909555949095168252938190529190912090910180549091019055565b600160a060020a039190911660009081526020818152604080832060ff94851684526004019091529020541690565b60215481565b6000806116133361109f565b151561168f576040805160e560020a62461bcd02815260206004820152602360248201527f75736572206973206e6f74206578697374732e2052656769737465722066697260448201527f73742e0000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b8360ff16600114806116a457508360ff166002145b15156116fa576040805160e560020a62461bcd02815260206004820152600e60248201527f696e76616c6964206d6174726978000000000000000000000000000000000000604482015290519081900360640190fd5b601f54600660ff85166016811061170d57fe5b0154013414611766576040805160e560020a62461bcd02815260206004820152600d60248201527f696e76616c696420707269636500000000000000000000000000000000000000604482015290519081900360640190fd5b60018360ff1611801561177d5750601560ff841611155b15156117d3576040805160e560020a62461bcd02815260206004820152600d60248201527f696e76616c6964206c6576656c00000000000000000000000000000000000000604482015290519081900360640190fd5b6117db612acd565b8360ff1660011415611971573360009081526020818152604080832060ff80881685526003909101909252909120541615611860576040805160e560020a62461bcd02815260206004820152601760248201527f6c6576656c20616c726561647920616374697661746564000000000000000000604482015290519081900360640190fd5b3360009081526020818152604080832060ff60001988018116855260059091019092529091206002015416156118be573360009081526020818152604080832060ff60001988011684526005019091529020600201805460ff191690555b6118c83384611cd0565b3360008181526020818152604080832060ff891684526005810183528184208054600160a060020a031916600160a060020a0388161790556003019091529020805460ff19166001179055909250611921908385611dd3565b604080516001815260ff851660208201528151600160a060020a0385169233927f18a92df19fd94d6cfff209966673a5ca05a1c8e2bb68e097fce2bdc2ed811119929081900390910190a3611ad5565b3360009081526020818152604080832060ff808816855260049091019092529091205416156119ea576040805160e560020a62461bcd02815260206004820152601760248201527f6c6576656c20616c726561647920616374697661746564000000000000000000604482015290519081900360640190fd5b3360009081526020818152604080832060ff6000198801811685526006909101909252909120600301541615611a48573360009081526020818152604080832060ff60001988011684526006019091529020600301805460ff191690555b611a523384611bcd565b3360008181526020818152604080832060ff891684526004019091529020805460ff19166001179055909150611a8990828561207a565b604080516002815260ff851660208201528151600160a060020a0384169233927f18a92df19fd94d6cfff209966673a5ca05a1c8e2bb68e097fce2bdc2ed811119929081900390910190a35b50505050565b60008073729d19f657bd0614b4985cf1d82531c67569197b905080600160a060020a03166357de26a46040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015611b4c57600080fd5b505af1158015611b60573d6000803e3d6000fd5b505050506040513d6020811015611b7657600080fd5b505191505b5090565b60205481565b601e5481565b611b936137e6565b604080516102c08101918290529060069060169082845b815481526020019060010190808311611baa575050505050905090565b60225481565b600060015b600160a060020a0380851660009081526020818152604080832060010154909316825282822060ff80881684526004909101909152919020541615611c3657600160a060020a03808516600090815260208190526040902060010154169150611cc9565b8060011415611ca357600160a060020a03808516600090815260208181526040918290206001015482516002815260ff88169281019290925282519316927f108f3db291e5f72d72fba7c811faf7af763e2d79d5b5887cfd2291bbbbe7231d929181900390910190a26001015b600160a060020a0393841660009081526020819052604090206001015490931692611bd2565b5092915050565b600060015b600160a060020a0380851660009081526020818152604080832060010154909316825282822060ff80881684526003909101909152919020541615611d3957600160a060020a03808516600090815260208190526040902060010154169150611cc9565b8060011415611da757600160a060020a0380851660009081526020818152604091829020600190810154835191825260ff881692820192909252825191909316927f108f3db291e5f72d72fba7c811faf7af763e2d79d5b5887cfd2291bbbbe7231d92908290030190a26001015b600160a060020a0393841660009081526020819052604090206001015490931692611cd5565b601d5481565b600160a060020a0382811660009081526020818152604080832060ff861680855260059091018352908320600190810180549182018155808552928420018054600160a060020a03191694881694909417909355918152905460031115611eac57600160a060020a0380841660008181526020818152604080832060ff80891680865260059092018452938290206001908101548351918252938101919091529190921681830152905191928716916000805160206138868339815191529181900360600190a3611ea78385600185612ae4565b611ad5565b604080516001815260ff841660208201526003818301529051600160a060020a0380861692908716916000805160206138868339815191529181900360600190a3600554600160a060020a03848116911614611ff057611f0c8383611cd0565b600160a060020a0384811660009081526020818152604080832060ff88168452600501909152902054919250828116911614611f8057600160a060020a0383811660009081526020818152604080832060ff8716845260050190915290208054600160a060020a0319169183169190911790555b600160a060020a0380841660008181526020818152604080832060ff8816808552600590910183529281902060030180546001908101909155815190815291820192909252815188851694861693926000805160206138a6833981519152928290030190a4611ea7838284611dd3565b60055461200990600160a060020a031685600185612ae4565b60058054600160a060020a0390811660009081526020818152604080832060ff88168085529086018352818420600301805460019081019091559554825196875292860152805189851695939492909216926000805160206138a6833981519152929081900390910190a450505050565b600160a060020a03821660009081526020818152604080832060ff8086168552600490910190925282205482911615156120fe576040805160e560020a62461bcd02815260206004820152601f60248201527f3530302e205265666572726572206c6576656c20697320696e61637469766500604482015290519081900360640190fd5b600160a060020a03841660009081526020818152604080832060ff871684526006019091529020600101546002111561266757600160a060020a0384811660008181526020818152604080832060ff898116808652600690920184528285206001908101805491820181558087528587209091018054600160a060020a031916988e16988917905594829052935482516002815293840191909152909216818301529051919291600080516020613886833981519152916060908290030190a3600160a060020a0385811660009081526020818152604080832060ff8816845260060190915290208054600160a060020a0319168683169081179091556005549091161415612219576122148486600286612ae4565b612a24565b5050600160a060020a0382811660009081526020818152604080832060ff861680855260069182018452828520548616808652858552838620828752909201845291842060028082018054600180820183559188529587209095018054600160a060020a031916978b16979097179096559190935201549091811480156122ee5750600160a060020a0382811660009081526020818152604080832060ff88168452600601909152812060010180549287169290919081106122d757fe5b600091825260209091200154600160a060020a0316145b801561234a5750600160a060020a0382811660009081526020818152604080832060ff8816845260060190915290206001908101805492871692909190811061233357fe5b600091825260209091200154600160a060020a0316145b1561240f57600160a060020a03841660009081526020818152604080832060ff87168452600601909152902060019081015414156123c857604080516002815260ff851660208201526005818301529051600160a060020a0380851692908816916000805160206138868339815191529181900360600190a361240a565b604080516002815260ff851660208201526006818301529051600160a060020a0380851692908816916000805160206138868339815191529181900360600190a35b61265c565b806001148061241e5750806002145b80156124785750600160a060020a0382811660009081526020818152604080832060ff881684526006019091528120600101805492871692909190811061246157fe5b600091825260209091200154600160a060020a0316145b1561253c57600160a060020a03841660009081526020818152604080832060ff87168452600601909152902060019081015414156124f657604080516002815260ff851660208201526003818301529051600160a060020a0380851692908816916000805160206138868339815191529181900360600190a361240a565b604080516002815260ff851660208201526004818301529051600160a060020a0380851692908816916000805160206138868339815191529181900360600190a361265c565b80600214801561259c5750600160a060020a0382811660009081526020818152604080832060ff8816845260060190915290206001908101805492871692909190811061258557fe5b600091825260209091200154600160a060020a0316145b1561265c57600160a060020a03841660009081526020818152604080832060ff871684526006019091529020600190810154141561261a57604080516002815260ff851660208201526005818301529051600160a060020a0380851692908816916000805160206138868339815191529181900360600190a361265c565b604080516002815260ff851660208201526006818301529051600160a060020a0380851692908816916000805160206138868339815191529181900360600190a35b612214858385612c3d565b600160a060020a0384811660009081526020818152604080832060ff8816808552600690910183529083206002810180546001810182559085529284209092018054600160a060020a0319168a861617905590915260050154161561285157600160a060020a03841660009081526020818152604080832060ff8716845260060190915290206001908101805490919081106126ff57fe5b6000918252602080832090910154600160a060020a038781168452838352604080852060ff89168652600601909352918320600101805492909116929091811061274557fe5b600091825260209091200154600160a060020a03161480156127bc5750600160a060020a0384811660009081526020818152604080832060ff8816845260060190915281206005810154600190910180549190931692919081106127a557fe5b600091825260209091200154600160a060020a0316145b156127d9576127ce8585856001613007565b612214858585612c3d565b600160a060020a0384811660009081526020818152604080832060ff88168452600601909152812060058101546001909101805491909316929190811061281c57fe5b600091825260209091200154600160a060020a03161415612844576127ce8585856001613007565b6127ce8585856000613007565b600160a060020a0384811660009081526020818152604080832060ff8816845260060190915290206001908101805492881692909190811061288f57fe5b600091825260209091200154600160a060020a031614156128b7576127ce8585856000613007565b600160a060020a0384811660009081526020818152604080832060ff88168452600601909152812060010180549288169290919081106128f357fe5b600091825260209091200154600160a060020a0316141561291b576127ce8585856001613007565b600160a060020a03841660009081526020818152604080832060ff87168452600601909152812060019081018054839290811061295457fe5b6000918252602080832090910154600160a060020a039081168452838201949094526040928301822060ff881680845260069182018352848420600190810154968b16855284845285852091855291019091529181209091018054829190829081106129bc57fe5b6000918252602080832090910154600160a060020a03168352828101939093526040918201812060ff8816825260060190925290206001015411612a0c57612a078585856000613007565b612a19565b612a198585856001613007565b612a24858585612c3d565b5050505050565b600554600160a060020a03166108fc612a426110c2565b6040518115909202916000818181858888f150505050505b565b6000612a9e83836040805190810160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061357c565b9392505050565b602154421015612abd57602080546001019055612a5a565b6001602055620151804201602155565b602254421015612adc57612a5a565b612a5a610c49565b600080612af386868686613624565b9092509050600160a060020a0382161515612b0d57612c35565b600160a060020a0382166108fc600660ff861660168110612b2a57fe5b01546040518115909202916000818181858888f193505050501515612b8557604051600160a060020a03831690303180156108fc02916000818181858888f19350505050158015612b7f573d6000803e3d6000fd5b50612c35565b600160a060020a0382167f8e177b352bd57d78ee6a47e5d24d8b165427ffe12c74f9f9495d77402cbd6f2a85600660ff871660168110612bc157fe5b01546040805160ff909316835260208301919091528051918290030190a28015612c35576040805160ff8087168252851660208201528151600160a060020a0380861693908916927ff0ddc65c0d411f042f723dcfa1b7d13e85a35b7b70761d447c6500411cacf328929081900390910190a35b505050505050565b600160a060020a03821660009081526020818152604080832060ff851684526006019091528120600201546060919060041115612c81576122148486600286612ae4565b600160a060020a0380851660009081526020818152604080832060ff8816808552600691820184528285205490951684528383528184209484529390930181529082902060010180548351818402810184019094528084529091830182828015612d1457602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311612cf6575b50505050509150815160021415612e7d5783600160a060020a0316826000815181101515612d3e57fe5b90602001906020020151600160a060020a03161480612d86575083600160a060020a0316826001815181101515612d7157fe5b90602001906020020151600160a060020a0316145b15612de857600160a060020a0380851660008181526020818152604080832060ff891680855260069182018452828520549096168452838352818420958452949094019052919091206005018054600160a060020a0319169091179055612e7d565b815160011415612e7d5783600160a060020a0316826000815181101515612e0b57fe5b90602001906020020151600160a060020a03161415612e7d57600160a060020a0380851660008181526020818152604080832060ff891680855260069182018452828520549096168452838352818420958452949094019052919091206005018054600160a060020a03191690911790555b6040805160008082526020808301808552600160a060020a038916835282825284832060ff891684526006019091529290209051612ec19260019092019190613806565b506040805160008082526020808301808552600160a060020a038916835282825284832060ff891684526006019091529290209051612f069260029092019190613806565b50600160a060020a0384811660008181526020818152604080832060ff89168452600601909152902060058082018054600160a060020a03191690556004909101805460010190555490911614612fad57612f618484611bcd565b604080516002815260ff861660208201528151929350600160a060020a038089169381861693918916926000805160206138a683398151915292908290030190a461221484828561207a565b600554604080516002815260ff861660208201528151600160a060020a03808a16946000949116926000805160206138a6833981519152929081900390910190a4600554612a2490600160a060020a031686600286612ae4565b8015156132c357600160a060020a03831660009081526020818152604080832060ff86168452600601909152812060010180548291908290811061304757fe5b600091825260208083209190910154600160a060020a039081168452838201949094526040928301822060ff871680845260069182018352848420600190810180548083018255908652848620018054600160a060020a0319168c89161790559589168452838352848420908452019052908120909101805490919081106130cb57fe5b6000918252602080832090910154600160a060020a038681168452838352604080852060ff8816865260060190935291832060010180549183169392881692600080516020613886833981519152926002928892918291908290811061312d57fe5b6000918252602080832090910154600160a060020a03168352828101939093526040918201812060ff808c1683526006909101845290829020600101548251958216865293811692850192909252911682820152519081900360600190a3600160a060020a0380841660008181526020818152604080832060ff88168452600601909152812060010180549293881692600080516020613886833981519152926002928892829190829081106131df57fe5b6000918252602080832090910154600160a060020a03168352828101939093526040918201812060ff808c168352600690910184529082902060010154825195821686529381169285019290925260029092011682820152519081900360600190a3600160a060020a03831660009081526020818152604080832060ff8616845260060190915281206001018054909190811061327857fe5b6000918252602080832090910154600160a060020a038781168452838352604080852060ff88168652600601909352919092208054600160a060020a03191691909216179055611ad5565b600160a060020a03831660009081526020818152604080832060ff8616845260060190915281206001908101805483929081106132fc57fe5b600091825260208083209190910154600160a060020a039081168452838201949094526040928301822060ff871680845260069182018352848420600190810180548083018255908652848620018054600160a060020a0319168c891617905595891684528383528484209084520190522081018054909190811061337d57fe5b6000918252602080832090910154600160a060020a038681168452838352604080852060ff88168652600601909352918320600190810180549284169493891693600080516020613886833981519152936002938993839290919081106133e057fe5b6000918252602080832090910154600160a060020a03168352828101939093526040918201812060ff808c1683526006909101845290829020600101548251958216865293811692850192909252911682820152519081900360600190a3600160a060020a0380841660008181526020818152604080832060ff881684526006019091528120600190810180549394891693600080516020613886833981519152936002938993919283929190811061349557fe5b6000918252602080832090910154600160a060020a03168352828101939093526040918201812060ff808c168352600690910184529082902060010154825195821686529381169285019290925260049092011682820152519081900360600190a3600160a060020a03831660009081526020818152604080832060ff86168452600601909152902060019081018054909190811061353057fe5b6000918252602080832090910154600160a060020a038781168452838352604080852060ff88168652600601909352919092208054600160a060020a0319169190921617905550505050565b6000808281851161360e5760405160e560020a62461bcd0281526004018080602001828103825283818151815260200191508051906020019080838360005b838110156135d35781810151838201526020016135bb565b50505050905090810190601f1680156136005780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50838581151561361a57fe5b0495945050505050565b6000808581600160ff871614156136fb575b600160a060020a03821660009081526020818152604080832060ff808a16855260059091019092529091206002015416156136eb57604080516001815260ff871660208201528151600160a060020a03808b1693908616927ffc0cb63f8dbd6b20ceb84a3c5358a41576a1479e6ecd040b4b985525dc09a709929081900390910190a350600160a060020a0390811660009081526020818152604080832060ff881684526005019091529020541660016136f6565b8181935093506137b0565b613636565b600160a060020a03821660009081526020818152604080832060ff808a16855260069091019092529091206003015416156136eb57604080516002815260ff871660208201528151600160a060020a03808b1693908616927ffc0cb63f8dbd6b20ceb84a3c5358a41576a1479e6ecd040b4b985525dc09a709929081900390910190a350600160a060020a0390811660009081526020818152604080832060ff881684526006019091529020541660016136fb565b505094509492505050565b606060405190810160405280600081526020016000600160a060020a03168152602001600081525090565b6102c0604051908101604052806016906020820280388339509192915050565b82805482825590600052602060002090810192821561385b579160200282015b8281111561385b5782518254600160a060020a031916600160a060020a03909116178255602090920191600190910190613826565b50611b7b926110c59250905b80821115611b7b578054600160a060020a0319168155600101613867560068062c5925c4317adf3a7095478d28b33fd8b41458bc7620b61bc46bf1b24d82a00c953eff38ec1b71e7fe060b2ab8df0bbe5354319fbdde4fbdafd6324386a6a165627a7a7230582046684b420218423cf3f479c2187ec2be2399590cdfdcae865ded8fb17261ec4100290000000000000000000000000158f0eef402a7c05df412a5751415c542805531

Deployed Bytecode

0x6080604052600436106101955763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630156a55481146101fd57806307279e2a1461021257806327e235e31461024d57806329c70400146102805780632a2d0c47146102ab578063348d4487146102df57806343d726d6146102f45780634635fd6814610309578063509222cd146103215780635128e6181461034257806370ed0ada14610357578063797eee241461036c5780637a77e65f1461038057806383ba31b2146103955780638da5cb5b146104295780638e72cfc91461043e5780639cc102fc14610453578063a21e4d1714610537578063a87430ba14610551578063aad049b314610598578063ae8ec052146105b0578063b2f7543a146105d7578063b76bf76b146105fe578063be389d5714610613578063bf4b199014610627578063c22ad75d1461063c578063c5b272a014610651578063d3419bf314610666578063dc555090146106b4578063e06e8dbd146106c9578063fa45323d146106f0578063ff186b2e14610717575b3615156101b8576005546101b3903390600160a060020a031661072c565b6101fb565b6101fb336101f66000368080601f01602080910402602001604051908101604052809392919081815260200183838082843750610c42945050505050565b61072c565b005b34801561020957600080fd5b506101fb610c49565b34801561021e57600080fd5b50610239600160a060020a036004351660ff60243516610fad565b604080519115158252519081900360200190f35b34801561025957600080fd5b5061026e600160a060020a0360043516610fdc565b60408051918252519081900360200190f35b34801561028c57600080fd5b50610295610fee565b6040805160ff9092168252519081900360200190f35b3480156102b757600080fd5b506102c3600435610ff3565b60408051600160a060020a039092168252519081900360200190f35b3480156102eb57600080fd5b5061026e61100e565b34801561030057600080fd5b506101fb611014565b34801561031557600080fd5b506102c3600435611084565b34801561032d57600080fd5b50610239600160a060020a036004351661109f565b34801561034e57600080fd5b5061026e6110bc565b34801561036357600080fd5b5061026e6110c2565b6101fb600160a060020a03600435166110c8565b34801561038c57600080fd5b5061026e6110dd565b3480156103a157600080fd5b506103bc600160a060020a036004351660ff602435166110e3565b60408051600160a060020a0385168152821515918101919091526060602080830182815285519284019290925284516080840191868101910280838360005b838110156104135781810151838201526020016103fb565b5050505090500194505050505060405180910390f35b34801561043557600080fd5b506102c3611190565b34801561044a57600080fd5b5061023961119f565b34801561045f57600080fd5b5061047a600160a060020a036004351660ff602435166111a8565b60408051600160a060020a03808816825284151560608301528316608082015260a060208083018281528851928401929092528751929391929184019160c0850191898101910280838360005b838110156104df5781810151838201526020016104c7565b50505050905001838103825286818151815260200191508051906020019060200280838360005b8381101561051e578181015183820152602001610506565b5050505090500197505050505050505060405180910390f35b34801561054357600080fd5b506101fb60043515156112c7565b34801561055d57600080fd5b50610572600160a060020a036004351661133c565b60408051938452600160a060020a03909216602084015282820152519081900360600190f35b3480156105a457600080fd5b5061026e600435611366565b3480156105bc57600080fd5b506101fb600160a060020a036004358116906024351661137a565b3480156105e357600080fd5b50610239600160a060020a036004351660ff602435166115d2565b34801561060a57600080fd5b5061026e611601565b6101fb60ff60043581169060243516611607565b34801561063357600080fd5b5061026e611adb565b34801561064857600080fd5b5061026e611b7f565b34801561065d57600080fd5b5061026e611b85565b34801561067257600080fd5b5061067b611b8b565b60405180826102c080838360005b838110156106a1578181015183820152602001610689565b5050505090500191505060405180910390f35b3480156106c057600080fd5b5061026e611bc7565b3480156106d557600080fd5b506102c3600160a060020a036004351660ff60243516611bcd565b3480156106fc57600080fd5b506102c3600160a060020a036004351660ff60243516611cd0565b34801561072357600080fd5b5061026e611dcd565b60006107366137bb565b6023546000908190819060ff16151560011461079c576040805160e560020a62461bcd02815260206004820152601860248201527f526567697374726174696f6e204e6f7420537461727465640000000000000000604482015290519081900360640190fd5b601c5434146107f5576040805160e560020a62461bcd02815260206004820152601560248201527f726567697374726174696f6e20636f7374203130240000000000000000000000604482015290519081900360640190fd5b6107fe8761109f565b15610853576040805160e560020a62461bcd02815260206004820152600b60248201527f7573657220657869737473000000000000000000000000000000000000000000604482015290519081900360640190fd5b61085c8661109f565b15156108b2576040805160e560020a62461bcd02815260206004820152601360248201527f7265666572726572206e6f742065786973747300000000000000000000000000604482015290519081900360640190fd5b863b945063ffffffff851615610912576040805160e560020a62461bcd02815260206004820152601460248201527f63616e6e6f74206265206120636f6e7472616374000000000000000000000000604482015290519081900360640190fd5b60408051606081018252600480548252600160a060020a03808a16602080850182815260008688018181528f86168083528285528983208951815593516001808601805492909916600160a060020a03199283161789559251600280870191909155895485528387528b852080548316841790558854821688179098558284526003850186528a8420805460ff19908116851790915583855294890186528a8420805490951683179094558754835286855289832080549094161790925585548201909555918452839052939091200180548301905594506109f5908890611cd0565b600160a060020a03888116600090815260208181526040808320600180855260059091019092529091208054600160a060020a03191692841692909217909155909350610a459088908590611dd3565b610a5b87610a54896001611bcd565b600161207a565b600160a060020a03871660009081526020818152604080832060028085526003820184528285208054600160ff1991821681179092556004909301909452919093208054909316909117909155610ab3908890611cd0565b600160a060020a03888116600090815260208181526040808320600280855260059091019092529091208054600160a060020a03191692841692909217909155909250610b039088908490611dd3565b610b1987610b12896002611bcd565b600261207a565b600160a060020a038716600090815260208181526040808320600380855280820184528285208054600160ff1991821681179092556004909301909452919093208054909316909117909155610b70908890611cd0565b600160a060020a03888116600090815260208181526040808320600380855260059091019092529091208054600160a060020a03191692841692909217909155909150610bc09088908390611dd3565b610bd687610bcf896003611bcd565b600361207a565b610bde612a2b565b600160a060020a0380881660008181526020818152604080832054948b168084529281902054815190815290519293927f309bb360e8b69c23937ccc5fb01f9aeeead1c95a99604e175113ff82f2b1723a929181900390910190a450505050505050565b6014015190565b6154604201602255610c59611adb565b601d819055610c739069065a4da25d3016c0000090612a5c565b655af3107a400002601e55601d54610c969069043c33c193756480000090612a5c565b655af3107a400002601f55601d54610cb990690a968163f0a57b40000090612a5c565b655af3107a400002600755601d54610cdc9069152d02c7e14af680000090612a5c565b655af3107a400002600855601d54610cff90692a5a058fc295ed00000090612a5c565b655af3107a400002600955601d54610d2290693f870857a3e0e380000090612a5c565b655af3107a400002600a55601d54610d45906954b40b1f852bda00000090612a5c565b655af3107a400002600b55601d54610d68906969e10de76676d080000090612a5c565b655af3107a400002600c55601d54610d8b90699ed194db19b238c0000090612a5c565b655af3107a400002600d55601d54610dae9069d3c21bcecceda100000090612a5c565b655af3107a400002600e55601d54610dd2906a0108b2a2c280290940000090612a5c565b655af3107a400002600f55601d54610df6906a013da329b633647180000090612a5c565b655af3107a400002601055601d54610e1a906a01a784379d99db4200000090612a5c565b655af3107a400002601155601d54610e3e906a021165458500521280000090612a5c565b655af3107a400002601255601d54610e62906a027b46536c66c8e300000090612a5c565b655af3107a400002601355601d54610e86906a034f086f3b33b68400000090612a5c565b655af3107a400002601455601d54610eaa906a0422ca8b0a00a42500000090612a5c565b655af3107a400002601555601d54610ece906a06342fd08f00f63780000090612a5c565b655af3107a400002601655601d54610ef2906a084595161401484a00000090612a5c565b655af3107a400002601755601d54610f16906a0a56fa5b99019a5c80000090612a5c565b655af3107a400002601855601d54610f3a906a0c685fa11e01ec6f00000090612a5c565b655af3107a400002601955601d54610f5e906a108b2a2c2802909400000090612a5c565b655af3107a400002601a55601d54610f82906a18d0bf423c03d8de00000090612a5c565b655af3107a400002601b55601f54601e54600954600854600754010160020201600490910201601c55565b600160a060020a039190911660009081526020818152604080832060ff94851684526003019091529020541690565b60036020526000908152604090205481565b601581565b600160205260009081526040902054600160a060020a031681565b60045481565b600554600160a060020a03163314611076576040805160e560020a62461bcd02815260206004820152600f60248201527f4d757374204265204f776e657220210000000000000000000000000000000000604482015290519081900360640190fd5b600554600160a060020a0316ff5b600260205260009081526040902054600160a060020a031681565b600160a060020a0316600090815260208190526040902054151590565b601c5481565b30315b90565b6110d2338261072c565b6110da612aa5565b50565b601f5481565b600160a060020a0382811660009081526020818152604080832060ff868116855260059091018352818420805460028201546001909201805485518188028101880190965280865296976060978997939091169591949390931692909184919083018282801561117c57602002820191906000526020600020905b8154600160a060020a0316815260019091019060200180831161115e575b505050505091509250925092509250925092565b600554600160a060020a031681565b60235460ff1681565b600160a060020a0382811660009081526020818152604080832060ff8681168552600690910183528184208054600382015460058301546001840180548751818a0281018a0190985280885298996060998a998c998a9997841698949760029095019690941694909216929186919083018282801561125057602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311611232575b50505050509350828054806020026020016040519081016040528092919081815260200182805480156112ac57602002820191906000526020600020905b8154600160a060020a0316815260019091019060200180831161128e575b50505050509250945094509450945094509295509295909350565b600554600160a060020a03163314611329576040805160e560020a62461bcd02815260206004820152601360248201527f4f6e6c792041646d696e2043616e2043616c6c00000000000000000000000000604482015290519081900360640190fd5b6023805460ff1916911515919091179055565b6000602081905290815260409020805460018201546002909201549091600160a060020a03169083565b6006816016811061137357fe5b0154905081565b6113826137bb565b600554600090600160a060020a031633146113e7576040805160e560020a62461bcd02815260206004820152601360248201527f4f6e6c792041646d696e2043616e2043616c6c00000000000000000000000000604482015290519081900360640190fd5b6113f08461109f565b15611445576040805160e560020a62461bcd02815260206004820152600b60248201527f7573657220657869737473000000000000000000000000000000000000000000604482015290519081900360640190fd5b61144e8361109f565b15156114a4576040805160e560020a62461bcd02815260206004820152601360248201527f7265666572726572206e6f742065786973747300000000000000000000000000604482015290519081900360640190fd5b505060408051606081018252600480548252600160a060020a03808516602080850191825260008587018181528985168083528284528883208851815594516001808701805492909816600160a060020a031992831617909755915160029095019490945594548152908390529490942080549092169093179055905b601560ff82161161157d57600160a060020a03841660009081526020818152604080832060ff851684526003810183528184208054600160ff199182168117909255600490920190935292208054909216811790915501611521565b50506004805460009081526002602081815260408084208054600160a060020a031916600160a060020a0398891617905584546001908101909555949095168252938190529190912090910180549091019055565b600160a060020a039190911660009081526020818152604080832060ff94851684526004019091529020541690565b60215481565b6000806116133361109f565b151561168f576040805160e560020a62461bcd02815260206004820152602360248201527f75736572206973206e6f74206578697374732e2052656769737465722066697260448201527f73742e0000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b8360ff16600114806116a457508360ff166002145b15156116fa576040805160e560020a62461bcd02815260206004820152600e60248201527f696e76616c6964206d6174726978000000000000000000000000000000000000604482015290519081900360640190fd5b601f54600660ff85166016811061170d57fe5b0154013414611766576040805160e560020a62461bcd02815260206004820152600d60248201527f696e76616c696420707269636500000000000000000000000000000000000000604482015290519081900360640190fd5b60018360ff1611801561177d5750601560ff841611155b15156117d3576040805160e560020a62461bcd02815260206004820152600d60248201527f696e76616c6964206c6576656c00000000000000000000000000000000000000604482015290519081900360640190fd5b6117db612acd565b8360ff1660011415611971573360009081526020818152604080832060ff80881685526003909101909252909120541615611860576040805160e560020a62461bcd02815260206004820152601760248201527f6c6576656c20616c726561647920616374697661746564000000000000000000604482015290519081900360640190fd5b3360009081526020818152604080832060ff60001988018116855260059091019092529091206002015416156118be573360009081526020818152604080832060ff60001988011684526005019091529020600201805460ff191690555b6118c83384611cd0565b3360008181526020818152604080832060ff891684526005810183528184208054600160a060020a031916600160a060020a0388161790556003019091529020805460ff19166001179055909250611921908385611dd3565b604080516001815260ff851660208201528151600160a060020a0385169233927f18a92df19fd94d6cfff209966673a5ca05a1c8e2bb68e097fce2bdc2ed811119929081900390910190a3611ad5565b3360009081526020818152604080832060ff808816855260049091019092529091205416156119ea576040805160e560020a62461bcd02815260206004820152601760248201527f6c6576656c20616c726561647920616374697661746564000000000000000000604482015290519081900360640190fd5b3360009081526020818152604080832060ff6000198801811685526006909101909252909120600301541615611a48573360009081526020818152604080832060ff60001988011684526006019091529020600301805460ff191690555b611a523384611bcd565b3360008181526020818152604080832060ff891684526004019091529020805460ff19166001179055909150611a8990828561207a565b604080516002815260ff851660208201528151600160a060020a0384169233927f18a92df19fd94d6cfff209966673a5ca05a1c8e2bb68e097fce2bdc2ed811119929081900390910190a35b50505050565b60008073729d19f657bd0614b4985cf1d82531c67569197b905080600160a060020a03166357de26a46040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015611b4c57600080fd5b505af1158015611b60573d6000803e3d6000fd5b505050506040513d6020811015611b7657600080fd5b505191505b5090565b60205481565b601e5481565b611b936137e6565b604080516102c08101918290529060069060169082845b815481526020019060010190808311611baa575050505050905090565b60225481565b600060015b600160a060020a0380851660009081526020818152604080832060010154909316825282822060ff80881684526004909101909152919020541615611c3657600160a060020a03808516600090815260208190526040902060010154169150611cc9565b8060011415611ca357600160a060020a03808516600090815260208181526040918290206001015482516002815260ff88169281019290925282519316927f108f3db291e5f72d72fba7c811faf7af763e2d79d5b5887cfd2291bbbbe7231d929181900390910190a26001015b600160a060020a0393841660009081526020819052604090206001015490931692611bd2565b5092915050565b600060015b600160a060020a0380851660009081526020818152604080832060010154909316825282822060ff80881684526003909101909152919020541615611d3957600160a060020a03808516600090815260208190526040902060010154169150611cc9565b8060011415611da757600160a060020a0380851660009081526020818152604091829020600190810154835191825260ff881692820192909252825191909316927f108f3db291e5f72d72fba7c811faf7af763e2d79d5b5887cfd2291bbbbe7231d92908290030190a26001015b600160a060020a0393841660009081526020819052604090206001015490931692611cd5565b601d5481565b600160a060020a0382811660009081526020818152604080832060ff861680855260059091018352908320600190810180549182018155808552928420018054600160a060020a03191694881694909417909355918152905460031115611eac57600160a060020a0380841660008181526020818152604080832060ff80891680865260059092018452938290206001908101548351918252938101919091529190921681830152905191928716916000805160206138868339815191529181900360600190a3611ea78385600185612ae4565b611ad5565b604080516001815260ff841660208201526003818301529051600160a060020a0380861692908716916000805160206138868339815191529181900360600190a3600554600160a060020a03848116911614611ff057611f0c8383611cd0565b600160a060020a0384811660009081526020818152604080832060ff88168452600501909152902054919250828116911614611f8057600160a060020a0383811660009081526020818152604080832060ff8716845260050190915290208054600160a060020a0319169183169190911790555b600160a060020a0380841660008181526020818152604080832060ff8816808552600590910183529281902060030180546001908101909155815190815291820192909252815188851694861693926000805160206138a6833981519152928290030190a4611ea7838284611dd3565b60055461200990600160a060020a031685600185612ae4565b60058054600160a060020a0390811660009081526020818152604080832060ff88168085529086018352818420600301805460019081019091559554825196875292860152805189851695939492909216926000805160206138a6833981519152929081900390910190a450505050565b600160a060020a03821660009081526020818152604080832060ff8086168552600490910190925282205482911615156120fe576040805160e560020a62461bcd02815260206004820152601f60248201527f3530302e205265666572726572206c6576656c20697320696e61637469766500604482015290519081900360640190fd5b600160a060020a03841660009081526020818152604080832060ff871684526006019091529020600101546002111561266757600160a060020a0384811660008181526020818152604080832060ff898116808652600690920184528285206001908101805491820181558087528587209091018054600160a060020a031916988e16988917905594829052935482516002815293840191909152909216818301529051919291600080516020613886833981519152916060908290030190a3600160a060020a0385811660009081526020818152604080832060ff8816845260060190915290208054600160a060020a0319168683169081179091556005549091161415612219576122148486600286612ae4565b612a24565b5050600160a060020a0382811660009081526020818152604080832060ff861680855260069182018452828520548616808652858552838620828752909201845291842060028082018054600180820183559188529587209095018054600160a060020a031916978b16979097179096559190935201549091811480156122ee5750600160a060020a0382811660009081526020818152604080832060ff88168452600601909152812060010180549287169290919081106122d757fe5b600091825260209091200154600160a060020a0316145b801561234a5750600160a060020a0382811660009081526020818152604080832060ff8816845260060190915290206001908101805492871692909190811061233357fe5b600091825260209091200154600160a060020a0316145b1561240f57600160a060020a03841660009081526020818152604080832060ff87168452600601909152902060019081015414156123c857604080516002815260ff851660208201526005818301529051600160a060020a0380851692908816916000805160206138868339815191529181900360600190a361240a565b604080516002815260ff851660208201526006818301529051600160a060020a0380851692908816916000805160206138868339815191529181900360600190a35b61265c565b806001148061241e5750806002145b80156124785750600160a060020a0382811660009081526020818152604080832060ff881684526006019091528120600101805492871692909190811061246157fe5b600091825260209091200154600160a060020a0316145b1561253c57600160a060020a03841660009081526020818152604080832060ff87168452600601909152902060019081015414156124f657604080516002815260ff851660208201526003818301529051600160a060020a0380851692908816916000805160206138868339815191529181900360600190a361240a565b604080516002815260ff851660208201526004818301529051600160a060020a0380851692908816916000805160206138868339815191529181900360600190a361265c565b80600214801561259c5750600160a060020a0382811660009081526020818152604080832060ff8816845260060190915290206001908101805492871692909190811061258557fe5b600091825260209091200154600160a060020a0316145b1561265c57600160a060020a03841660009081526020818152604080832060ff871684526006019091529020600190810154141561261a57604080516002815260ff851660208201526005818301529051600160a060020a0380851692908816916000805160206138868339815191529181900360600190a361265c565b604080516002815260ff851660208201526006818301529051600160a060020a0380851692908816916000805160206138868339815191529181900360600190a35b612214858385612c3d565b600160a060020a0384811660009081526020818152604080832060ff8816808552600690910183529083206002810180546001810182559085529284209092018054600160a060020a0319168a861617905590915260050154161561285157600160a060020a03841660009081526020818152604080832060ff8716845260060190915290206001908101805490919081106126ff57fe5b6000918252602080832090910154600160a060020a038781168452838352604080852060ff89168652600601909352918320600101805492909116929091811061274557fe5b600091825260209091200154600160a060020a03161480156127bc5750600160a060020a0384811660009081526020818152604080832060ff8816845260060190915281206005810154600190910180549190931692919081106127a557fe5b600091825260209091200154600160a060020a0316145b156127d9576127ce8585856001613007565b612214858585612c3d565b600160a060020a0384811660009081526020818152604080832060ff88168452600601909152812060058101546001909101805491909316929190811061281c57fe5b600091825260209091200154600160a060020a03161415612844576127ce8585856001613007565b6127ce8585856000613007565b600160a060020a0384811660009081526020818152604080832060ff8816845260060190915290206001908101805492881692909190811061288f57fe5b600091825260209091200154600160a060020a031614156128b7576127ce8585856000613007565b600160a060020a0384811660009081526020818152604080832060ff88168452600601909152812060010180549288169290919081106128f357fe5b600091825260209091200154600160a060020a0316141561291b576127ce8585856001613007565b600160a060020a03841660009081526020818152604080832060ff87168452600601909152812060019081018054839290811061295457fe5b6000918252602080832090910154600160a060020a039081168452838201949094526040928301822060ff881680845260069182018352848420600190810154968b16855284845285852091855291019091529181209091018054829190829081106129bc57fe5b6000918252602080832090910154600160a060020a03168352828101939093526040918201812060ff8816825260060190925290206001015411612a0c57612a078585856000613007565b612a19565b612a198585856001613007565b612a24858585612c3d565b5050505050565b600554600160a060020a03166108fc612a426110c2565b6040518115909202916000818181858888f150505050505b565b6000612a9e83836040805190810160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061357c565b9392505050565b602154421015612abd57602080546001019055612a5a565b6001602055620151804201602155565b602254421015612adc57612a5a565b612a5a610c49565b600080612af386868686613624565b9092509050600160a060020a0382161515612b0d57612c35565b600160a060020a0382166108fc600660ff861660168110612b2a57fe5b01546040518115909202916000818181858888f193505050501515612b8557604051600160a060020a03831690303180156108fc02916000818181858888f19350505050158015612b7f573d6000803e3d6000fd5b50612c35565b600160a060020a0382167f8e177b352bd57d78ee6a47e5d24d8b165427ffe12c74f9f9495d77402cbd6f2a85600660ff871660168110612bc157fe5b01546040805160ff909316835260208301919091528051918290030190a28015612c35576040805160ff8087168252851660208201528151600160a060020a0380861693908916927ff0ddc65c0d411f042f723dcfa1b7d13e85a35b7b70761d447c6500411cacf328929081900390910190a35b505050505050565b600160a060020a03821660009081526020818152604080832060ff851684526006019091528120600201546060919060041115612c81576122148486600286612ae4565b600160a060020a0380851660009081526020818152604080832060ff8816808552600691820184528285205490951684528383528184209484529390930181529082902060010180548351818402810184019094528084529091830182828015612d1457602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311612cf6575b50505050509150815160021415612e7d5783600160a060020a0316826000815181101515612d3e57fe5b90602001906020020151600160a060020a03161480612d86575083600160a060020a0316826001815181101515612d7157fe5b90602001906020020151600160a060020a0316145b15612de857600160a060020a0380851660008181526020818152604080832060ff891680855260069182018452828520549096168452838352818420958452949094019052919091206005018054600160a060020a0319169091179055612e7d565b815160011415612e7d5783600160a060020a0316826000815181101515612e0b57fe5b90602001906020020151600160a060020a03161415612e7d57600160a060020a0380851660008181526020818152604080832060ff891680855260069182018452828520549096168452838352818420958452949094019052919091206005018054600160a060020a03191690911790555b6040805160008082526020808301808552600160a060020a038916835282825284832060ff891684526006019091529290209051612ec19260019092019190613806565b506040805160008082526020808301808552600160a060020a038916835282825284832060ff891684526006019091529290209051612f069260029092019190613806565b50600160a060020a0384811660008181526020818152604080832060ff89168452600601909152902060058082018054600160a060020a03191690556004909101805460010190555490911614612fad57612f618484611bcd565b604080516002815260ff861660208201528151929350600160a060020a038089169381861693918916926000805160206138a683398151915292908290030190a461221484828561207a565b600554604080516002815260ff861660208201528151600160a060020a03808a16946000949116926000805160206138a6833981519152929081900390910190a4600554612a2490600160a060020a031686600286612ae4565b8015156132c357600160a060020a03831660009081526020818152604080832060ff86168452600601909152812060010180548291908290811061304757fe5b600091825260208083209190910154600160a060020a039081168452838201949094526040928301822060ff871680845260069182018352848420600190810180548083018255908652848620018054600160a060020a0319168c89161790559589168452838352848420908452019052908120909101805490919081106130cb57fe5b6000918252602080832090910154600160a060020a038681168452838352604080852060ff8816865260060190935291832060010180549183169392881692600080516020613886833981519152926002928892918291908290811061312d57fe5b6000918252602080832090910154600160a060020a03168352828101939093526040918201812060ff808c1683526006909101845290829020600101548251958216865293811692850192909252911682820152519081900360600190a3600160a060020a0380841660008181526020818152604080832060ff88168452600601909152812060010180549293881692600080516020613886833981519152926002928892829190829081106131df57fe5b6000918252602080832090910154600160a060020a03168352828101939093526040918201812060ff808c168352600690910184529082902060010154825195821686529381169285019290925260029092011682820152519081900360600190a3600160a060020a03831660009081526020818152604080832060ff8616845260060190915281206001018054909190811061327857fe5b6000918252602080832090910154600160a060020a038781168452838352604080852060ff88168652600601909352919092208054600160a060020a03191691909216179055611ad5565b600160a060020a03831660009081526020818152604080832060ff8616845260060190915281206001908101805483929081106132fc57fe5b600091825260208083209190910154600160a060020a039081168452838201949094526040928301822060ff871680845260069182018352848420600190810180548083018255908652848620018054600160a060020a0319168c891617905595891684528383528484209084520190522081018054909190811061337d57fe5b6000918252602080832090910154600160a060020a038681168452838352604080852060ff88168652600601909352918320600190810180549284169493891693600080516020613886833981519152936002938993839290919081106133e057fe5b6000918252602080832090910154600160a060020a03168352828101939093526040918201812060ff808c1683526006909101845290829020600101548251958216865293811692850192909252911682820152519081900360600190a3600160a060020a0380841660008181526020818152604080832060ff881684526006019091528120600190810180549394891693600080516020613886833981519152936002938993919283929190811061349557fe5b6000918252602080832090910154600160a060020a03168352828101939093526040918201812060ff808c168352600690910184529082902060010154825195821686529381169285019290925260049092011682820152519081900360600190a3600160a060020a03831660009081526020818152604080832060ff86168452600601909152902060019081018054909190811061353057fe5b6000918252602080832090910154600160a060020a038781168452838352604080852060ff88168652600601909352919092208054600160a060020a0319169190921617905550505050565b6000808281851161360e5760405160e560020a62461bcd0281526004018080602001828103825283818151815260200191508051906020019080838360005b838110156135d35781810151838201526020016135bb565b50505050905090810190601f1680156136005780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50838581151561361a57fe5b0495945050505050565b6000808581600160ff871614156136fb575b600160a060020a03821660009081526020818152604080832060ff808a16855260059091019092529091206002015416156136eb57604080516001815260ff871660208201528151600160a060020a03808b1693908616927ffc0cb63f8dbd6b20ceb84a3c5358a41576a1479e6ecd040b4b985525dc09a709929081900390910190a350600160a060020a0390811660009081526020818152604080832060ff881684526005019091529020541660016136f6565b8181935093506137b0565b613636565b600160a060020a03821660009081526020818152604080832060ff808a16855260069091019092529091206003015416156136eb57604080516002815260ff871660208201528151600160a060020a03808b1693908616927ffc0cb63f8dbd6b20ceb84a3c5358a41576a1479e6ecd040b4b985525dc09a709929081900390910190a350600160a060020a0390811660009081526020818152604080832060ff881684526006019091529020541660016136fb565b505094509492505050565b606060405190810160405280600081526020016000600160a060020a03168152602001600081525090565b6102c0604051908101604052806016906020820280388339509192915050565b82805482825590600052602060002090810192821561385b579160200282015b8281111561385b5782518254600160a060020a031916600160a060020a03909116178255602090920191600190910190613826565b50611b7b926110c59250905b80821115611b7b578054600160a060020a0319168155600101613867560068062c5925c4317adf3a7095478d28b33fd8b41458bc7620b61bc46bf1b24d82a00c953eff38ec1b71e7fe060b2ab8df0bbe5354319fbdde4fbdafd6324386a6a165627a7a7230582046684b420218423cf3f479c2187ec2be2399590cdfdcae865ded8fb17261ec410029

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

0000000000000000000000000158f0eef402a7c05df412a5751415c542805531

-----Decoded View---------------
Arg [0] : ownerAddress (address): 0x0158F0EeF402a7C05dF412a5751415c542805531

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000000158f0eef402a7c05df412a5751415c542805531


Deployed Bytecode Sourcemap

1674:27341:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8011:8;:20;8008:90;;;8080:5;;8055:31;;8068:10;;-1:-1:-1;;;;;8080:5:0;8055:12;:31::i;:::-;8048:38;;8008:90;8118:50;8131:10;8143:24;8158:8;;8143:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8143:14:0;;-1:-1:-1;;;;;8143:24:0:i;:::-;8118:12;:50::i;:::-;1674:27341;4439:2533;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4439:2533:0;;;;25302:155;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;25302:155:0;-1:-1:-1;;;;;25302:155:0;;;;;;;;;;;;;;;;;;;;;;;;;;;2577:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2577:40:0;-1:-1:-1;;;;;2577:40:0;;;;;;;;;;;;;;;;;;;;;2387:37;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2387:37:0;;;;;;;;;;;;;;;;;;;;;;;2481:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2481:43:0;;;;;;;;;-1:-1:-1;;;;;2481:43:0;;;;;;;;;;;;;;2627:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2627:26:0;;;;28890:116;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28890:116:0;;;;2531:39;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2531:39:0;;;;;26447:110;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;26447:110:0;-1:-1:-1;;;;;26447:110:0;;;;;2775:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2775:25:0;;;;28623:98;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28623:98:0;;;;8184:143;;-1:-1:-1;;;;;8184:143:0;;;;;2868:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2868:26:0;;;;25628:312;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;25628:312:0;-1:-1:-1;;;;;25628:312:0;;;;;;;;;;;;;-1:-1:-1;;;;;25628:312:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-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;25628:312:0;;;;;;;;;;;;;;;;;;;2660:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2660:20:0;;;;10242:37;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10242:37:0;;;;25948:487;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;25948:487:0;-1:-1:-1;;;;;25948:487:0;;;;;;;;;;;;;-1:-1:-1;;;;;25948:487:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-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;25948:487: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;25948:487:0;;;;;;;;;;;;;;;;;;;;;;10286:164;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;10286:164:0;;;;;;;2437:37;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2437:37:0;-1:-1:-1;;;;;2437:37:0;;;;;;;;;;;;-1:-1:-1;;;;;2437:37:0;;;;;;;;;;;;;;;;;;;;2742:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2742:26:0;;;;;10456:825;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;10456:825:0;-1:-1:-1;;;;;10456:825:0;;;;;;;;;;25465:155;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;25465:155:0;-1:-1:-1;;;;;25465:155:0;;;;;;;;;3007:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3007:46:0;;;;8339:1786;;;;;;;;;;;;;6982:207;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6982:207:0;;;;2980:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2980:20:0;;;;2834:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2834:27:0;;;;26569:97;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26569:97: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;26569:97:0;;;;;;;;;;;;;;;;4232:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4232:40:0;;;;24781:503;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;24781:503:0;-1:-1:-1;;;;;24781:503:0;;;;;;;;;24266;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;24266:503:0;-1:-1:-1;;;;;24266:503:0;;;;;;;;;2807:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2807:20:0;;;;11405:2751;11774:11;11936:16;;:::i;:::-;11500:19;;12510:22;;;;;;11500:19;;:25;;:19;:25;11492:61;;;;;-1:-1:-1;;;;;11492:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;11585:9;;11572;:22;11564:56;;;;;-1:-1:-1;;;;;11564:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;11640:25;11653:11;11640:12;:25::i;:::-;11639:26;11631:50;;;;;-1:-1:-1;;;;;11631:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;11700:29;11713:15;11700:12;:29::i;:::-;11692:61;;;;;;;-1:-1:-1;;;;;11692:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;11828:24;;;-1:-1:-1;11881:9:0;;;;11873:42;;;;;-1:-1:-1;;;;;11873:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;11955:117;;;;;;;;11979:10;;;11955:117;;-1:-1:-1;;;;;11955:117:0;;;;;;;;;;-1:-1:-1;11955:117:0;;;;;;12093:18;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;12093:25:0;;;;;;;;;;;;;;;;12141:10;;12129:23;;;;;;;;:37;;;;;;;;12187:45;;;;;;;;;12253:36;;;:33;;;:36;;;;;:43;;-1:-1:-1;;12253:43:0;;;;;;;;12308:36;;;:33;;;:36;;;;;:43;;;;;;;;;;12390:10;;12382:19;;;;;;;;:33;;;;;;;;;12426:12;;;;;;;12459:22;;;;;;;;;;:36;:38;;;;;;11955:117;-1:-1:-1;12535:34:0;;12099:11;;12535:18;:34::i;:::-;-1:-1:-1;;;;;12580:18:0;;;:5;:18;;;;;;;;;;;12608:1;12580:30;;;:27;;;;:30;;;;;;:63;;-1:-1:-1;;;;;;12580:63:0;;;;;;;;;;;;;-1:-1:-1;12654:48:0;;12580:18;;:63;;12654:16;:48::i;:::-;12715:68;12732:11;12745:34;12764:11;12777:1;12745:18;:34::i;:::-;12781:1;12715:16;:68::i;:::-;-1:-1:-1;;;;;12930:18:0;;:5;:18;;;;;;;;;;;12964:1;12930:36;;;:33;;;:36;;;;;:43;;12969:4;-1:-1:-1;;12930:43:0;;;;;;;;12985:33;;;;:36;;;;;;;:43;;;;;;;;;;;13065:34;;12930:18;;13065;:34::i;:::-;-1:-1:-1;;;;;13110:18:0;;;:5;:18;;;;;;;;;;;13138:1;13110:30;;;:27;;;;:30;;;;;;:64;;-1:-1:-1;;;;;;13110:64:0;;;;;;;;;;;;;-1:-1:-1;13185:49:0;;13110:18;;:64;;13185:16;:49::i;:::-;13247:68;13264:11;13277:34;13296:11;13309:1;13277:18;:34::i;:::-;13313:1;13247:16;:68::i;:::-;-1:-1:-1;;;;;13461:18:0;;:5;:18;;;;;;;;;;;:33;:36;;;:33;;;:36;;;;;:43;;13500:4;-1:-1:-1;;13461:43:0;;;;;;;;13516:33;;;;:36;;;;;;;:43;;;;;;;;;;;13596:34;;13461:18;;13596;:34::i;:::-;-1:-1:-1;;;;;13641:18:0;;;:5;:18;;;;;;;;;;;13669:1;13641:30;;;:27;;;;:30;;;;;;:64;;-1:-1:-1;;;;;;13641:64:0;;;;;;;;;;;;;-1:-1:-1;13716:49:0;;13641:18;;:64;;13716:16;:49::i;:::-;13778:68;13795:11;13808:34;13827:11;13840:1;13808:18;:34::i;:::-;13844:1;13778:16;:68::i;:::-;13937:13;:11;:13::i;:::-;-1:-1:-1;;;;;14099:18:0;;;:5;:18;;;;;;;;;;;:21;14056:92;;;14122:22;;;;;;;:25;14056:92;;;;;;;;;14099:18;14056:92;;;;;;;;;;;11405:2751;;;;;;;:::o;28453:158::-;28589:2;28580:12;28574:19;;28551:53::o;4439:2533::-;4504:7;4498:3;:13;4485:10;:26;4541:16;:14;:16::i;:::-;4532:8;:25;;;4582:57;;4600:28;;4582:12;:57::i;:::-;4640:15;4582:73;4568:11;:87;4728:8;;4680:57;;4698:28;;4680:12;:57::i;:::-;4738:15;4680:73;4666:11;:87;4828:8;;4780:57;;4798:28;;4780:12;:57::i;:::-;4838:15;4780:73;4764:13;:89;4928:8;;4880:57;;4898:28;;4880:12;:57::i;:::-;4938:15;4880:73;4864:13;:89;5028:8;;4980:57;;4998:28;;4980:12;:57::i;:::-;5038:15;4980:73;4964:13;:89;5128:8;;5080:57;;5098:28;;5080:12;:57::i;:::-;5138:15;5080:73;5064:13;:89;5228:8;;5180:57;;5198:28;;5180:12;:57::i;:::-;5238:15;5180:73;5164:13;:89;5328:8;;5280:57;;5298:28;;5280:12;:57::i;:::-;5338:15;5280:73;5264:13;:89;5428:8;;5380:57;;5398:28;;5380:12;:57::i;:::-;5438:15;5380:73;5364:13;:89;5529:8;;5480:58;;5498:29;;5480:12;:58::i;:::-;5539:15;5480:74;5464:13;:90;5630:8;;5581:58;;5599:29;;5581:12;:58::i;:::-;5640:15;5581:74;5565:13;:90;5731:8;;5683:57;;5701:28;;5683:12;:57::i;:::-;5741:15;5683:73;5666:14;:90;5832:8;;5784:57;;5802:28;;5784:12;:57::i;:::-;5842:15;5784:73;5767:14;:90;5933:8;;5885:57;;5903:28;;5885:12;:57::i;:::-;5943:15;5885:73;5868:14;:90;6034:8;;5986:57;;6004:28;;5986:12;:57::i;:::-;6044:15;5986:73;5969:14;:90;6135:8;;6087:57;;6105:28;;6087:12;:57::i;:::-;6145:15;6087:73;6070:14;:90;6236:8;;6188:57;;6206:28;;6188:12;:57::i;:::-;6246:15;6188:73;6171:14;:90;6337:8;;6289:57;;6307:28;;6289:12;:57::i;:::-;6347:15;6289:73;6272:14;:90;6438:8;;6390:57;;6408:28;;6390:12;:57::i;:::-;6448:15;6390:73;6373:14;:90;6539:8;;6491:57;;6509:28;;6491:12;:57::i;:::-;6549:15;6491:73;6474:14;:90;6640:8;;6592:57;;6610:28;;6592:12;:57::i;:::-;6650:15;6592:73;6575:14;:90;6741:8;;6693:57;;6711:28;;6693:12;:57::i;:::-;6751:15;6693:73;6676:14;:90;6842:8;;6794:57;;6812:28;;6794:12;:57::i;:::-;6852:15;6794:73;6777:14;:90;6953:11;;6937;;6920:13;;6906;;6892;;:27;:41;6917:1;6889:45;:59;6951:1;:13;;;6889:75;6878:9;:86;4439:2533::o;25302:155::-;-1:-1:-1;;;;;25409:18:0;;;;25385:4;25409:18;;;;;;;;;;;:40;;;;;;:33;;:40;;;;;;;;25302:155::o;2577:40::-;;;;;;;;;;;;;:::o;2387:37::-;2422:2;2387:37;:::o;2481:43::-;;;;;;;;;;;;-1:-1:-1;;;;;2481:43:0;;:::o;2627:26::-;;;;:::o;28890:116::-;28946:5;;-1:-1:-1;;;;;28946:5:0;28934:10;:17;28926:44;;;;;-1:-1:-1;;;;;28926:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;28994:5;;-1:-1:-1;;;;;28994:5:0;28981:19;2531:39;;;;;;;;;;;;-1:-1:-1;;;;;2531:39:0;;:::o;26447:110::-;-1:-1:-1;;;;;26529:11:0;26504:4;26529:11;;;;;;;;;;:14;:19;;;26447:110::o;2775:25::-;;;;:::o;28623:98::-;28700:4;28692:21;28623:98;;:::o;8184:143::-;8262:41;8275:10;8287:15;8262:12;:41::i;:::-;8314:5;:3;:5::i;:::-;8184:143;:::o;2868:26::-;;;;:::o;25628:312::-;-1:-1:-1;;;;;25757:18:0;;;25705:7;25757:18;;;;;;;;;;;:34;;;;;;:27;;;;:34;;;;;:50;;25889:42;;;;25757:50;25826:44;;;25749:183;;;;;;;;;;;;;;;;;25705:7;;25714:9;;25705:7;;25757:50;;;;;25826:44;;25889:42;;;;;25749:183;;25826:44;;25749:183;;;25826:44;25749:183;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25749:183:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25628:312;;;;;:::o;2660:20::-;;;-1:-1:-1;;;;;2660:20:0;;:::o;10242:37::-;;;;;;:::o;25948:487::-;-1:-1:-1;;;;;26104:18:0;;;26025:7;26104:18;;;;;;;;;;;:34;;;;;;:27;;;;:34;;;;;:50;;26320:42;;;;26381:45;;;;26104:50;26173:54;;26096:331;;;;;;;;;;;;;;;;;26025:7;;26034:9;;;;26025:7;;;;26104:50;;;;26173:54;;26246:55;;;;;26320:42;;;;26381:45;;;;26096:331;26173:54;;26096:331;;;26173:54;26096:331;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26096:331:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26096:331:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25948:487;;;;;;;;:::o;10286:164::-;10364:5;;-1:-1:-1;;;;;10364:5:0;10352:10;:17;10344:48;;;;;-1:-1:-1;;;;;10344:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;10403:19;:29;;-1:-1:-1;;10403:29:0;;;;;;;;;;10286:164::o;2437:37::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2437:37:0;;;:::o;2742:26::-;;;;;;;;;;;;;-1:-1:-1;2742:26:0;:::o;10456:825::-;10729:16;;:::i;:::-;10557:5;;10985:7;;-1:-1:-1;;;;;10557:5:0;10545:10;:17;10537:48;;;;;-1:-1:-1;;;;;10537:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;10605:25;10618:11;10605:12;:25::i;:::-;10604:26;10596:50;;;;;-1:-1:-1;;;;;10596:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;10665:29;10678:15;10665:12;:29::i;:::-;10657:61;;;;;;;-1:-1:-1;;;;;10657:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10748:117:0;;;;;;;;10772:10;;;10748:117;;-1:-1:-1;;;;;10748:117:0;;;;;;;;;;-1:-1:-1;10748:117:0;;;;;;10886:18;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10886:25:0;;;;;;;;;;;;;;;;;10934:10;;10922:23;;;;;;;;;;:37;;;;;;;;;;10748:117;10980:168;2422:2;10998:15;;;;10980:168;;-1:-1:-1;;;;;11035:18:0;;:5;:18;;;;;;;;;;;:36;;;;;:33;;;:36;;;;;:43;;11074:4;-1:-1:-1;;11035:43:0;;;;;;;;11093:33;;;;:36;;;;;:43;;;;;;;;;;11015:3;10980:168;;;-1:-1:-1;;11176:10:0;;;11168:19;;;;:7;:19;;;;;;;;:33;;-1:-1:-1;;;;;;11168:33:0;-1:-1:-1;;;;;11168:33:0;;;;;;11212:12;;-1:-1:-1;11212:12:0;;;;;;11235:22;;;;;;;;;;;;;;:36;;;:38;;;;;;;10456:825::o;25465:155::-;-1:-1:-1;;;;;25572:18:0;;;;25548:4;25572:18;;;;;;;;;;;:40;;;;;;:33;;:40;;;;;;;;25465:155::o;3007:46::-;;;;:::o;8339:1786::-;9195:22;9824;8423:24;8436:10;8423:12;:24::i;:::-;8415:72;;;;;;;-1:-1:-1;;;;;8415:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8506:6;:11;;8516:1;8506:11;:26;;;;8521:6;:11;;8531:1;8521:11;8506:26;8498:53;;;;;;;-1:-1:-1;;;;;8498:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;8602:11;;8584:10;:17;;;;;;;;;;;;:29;8570:9;:44;8562:70;;;;;-1:-1:-1;;;;;8562:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;8659:1;8651:5;:9;;;:32;;;;-1:-1:-1;2422:2:0;8664:19;;;;;8651:32;8643:58;;;;;;;-1:-1:-1;;;;;8643:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;8802:9;:7;:9::i;:::-;8919:6;:11;;8929:1;8919:11;8915:1203;;;8962:10;8956:5;:17;;;;;;;;;;;:39;;;;;;:32;;;;:39;;;;;;;;8955:40;8947:76;;;;;-1:-1:-1;;;;;8947:76:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;9050:10;9044:5;:17;;;;;;;;;;;:35;-1:-1:-1;;9071:7:0;;9044:35;;;;:26;;;;:35;;;;;;:43;;;;9040:135;;;9114:10;9154:5;9108:17;;;;;;;;;;;:35;-1:-1:-1;;9135:7:0;;9108:35;;;:26;;:35;;;;;:43;;:51;;-1:-1:-1;;9108:51:0;;;9040:135;9220:37;9239:10;9251:5;9220:18;:37::i;:::-;9278:10;9272:5;:17;;;;;;;;;;;:33;;;;;:26;;;:33;;;;;:66;;-1:-1:-1;;;;;;9272:66:0;-1:-1:-1;;;;;9272:66:0;;;;;9353:32;;:39;;;;;:46;;-1:-1:-1;;9353:46:0;-1:-1:-1;9353:46:0;;;9272:66;;-1:-1:-1;9414:51:0;;9272:66;:33;9414:16;:51::i;:::-;9499:45;;;9535:1;9499:45;;;;;;;;;;;-1:-1:-1;;;;;9499:45:0;;;9507:10;;9499:45;;;;;;;;;;;8915:1203;;;9594:10;9588:5;:17;;;;;;;;;;;:39;;;;;;:32;;;;:39;;;;;;;;9587:40;9579:76;;;;;-1:-1:-1;;;;;9579:76:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;9683:10;9677:5;:17;;;;;;;;;;;:35;-1:-1:-1;;9704:7:0;;9677:35;;;;:26;;;;:35;;;;;;:43;;;;9673:135;;;9747:10;9787:5;9741:17;;;;;;;;;;;:35;-1:-1:-1;;9768:7:0;;9741:35;;;:26;;:35;;;;;:43;;:51;;-1:-1:-1;;9741:51:0;;;9673:135;9849:37;9868:10;9880:5;9849:18;:37::i;:::-;9921:10;9915:5;:17;;;;;;;;;;;:39;;;;;:32;;:39;;;;;:46;;-1:-1:-1;;9915:46:0;9957:4;9915:46;;;9824:62;;-1:-1:-1;9976:51:0;;9824:62;9948:5;9976:16;:51::i;:::-;10061:45;;;10097:1;10061:45;;;;;;;;;;;-1:-1:-1;;;;;10061:45:0;;;10069:10;;10061:45;;;;;;;;;;;8915:1203;8339:1786;;;;:::o;6982:207::-;7029:4;7042:23;7068:42;7042:68;;7153:15;-1:-1:-1;;;;;7137:37:0;;:39;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7137:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7137:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7137:39:0;;-1:-1:-1;6982:207:0;;;:::o;2980:20::-;;;;:::o;2834:27::-;;;;:::o;26569:97::-;26611:8;;:::i;:::-;26631:17;;;;;;;;;;;26638:10;;26631:17;;26638:10;26631:17;;;;;;;;;;;;;;;;;;;;;;;;26569:97;:::o;4232:40::-;;;;:::o;24781:503::-;24858:7;24884:1;24896:381;-1:-1:-1;;;;;24934:18:0;;;24928:5;24934:18;;;;;;;;;;;:27;;;;;;24928:34;;;;;:56;;;;;;:49;;;;:56;;;;;;;;24924:272;;;-1:-1:-1;;;;;25012:18:0;;;:5;:18;;;;;;;;;;:27;;;;;-1:-1:-1;25005:34:0;;24924:272;25077:1;25080;25077:4;25074:122;;;-1:-1:-1;;;;;25119:18:0;;;:5;:18;;;;;;;;;;;;:27;;;25106:52;;25148:1;25106:52;;;;;;;;;;;;;;25119:27;;;25106:52;;;;;;;;;;;25177:3;;25074:122;-1:-1:-1;;;;;25238:18:0;;;:5;:18;;;;;;;;;;:27;;;;;;;24896:381;;;24781:503;;;;;:::o;24266:::-;24343:7;24369:1;24381:381;-1:-1:-1;;;;;24419:18:0;;;24413:5;24419:18;;;;;;;;;;;:27;;;;;;24413:34;;;;;:56;;;;;;:49;;;;:56;;;;;;;;24409:272;;;-1:-1:-1;;;;;24497:18:0;;;:5;:18;;;;;;;;;;:27;;;;;-1:-1:-1;24490:34:0;;24409:272;24562:1;24565;24562:4;24559:122;;;-1:-1:-1;;;;;24604:18:0;;;:5;:18;;;;;;;;;;;;:27;;;;;24591:52;;;;;;;;;;;;;;;;;24604:27;;;;;24591:52;;;;;;;;;24662:3;;24559:122;-1:-1:-1;;;;;24723:18:0;;;:5;:18;;;;;;;;;;:27;;;;;;;24381:381;;2807:20;;;;:::o;14168:1741::-;-1:-1:-1;;;;;14272:22:0;;;15154:27;14272:22;;;;;;;;;;;:38;;;;;;:31;;;;:38;;;;;:48;;;;27:10:-1;;23:18;;;45:23;;14272:66:0;;;;;;;;;-1:-1:-1;;;;;;14272:66:0;;;;;;;;;;;14355:38;;;:55;;14413:1;-1:-1:-1;14351:291:0;;;-1:-1:-1;;;;;14436:116:0;;;14495:5;:22;;;;;;;;;;;:38;;;;;;;:31;;;;:38;;;;;;14479:1;14495:48;;;:55;14436:116;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;14436:116:0;;;;;;;;14574:56;14591:15;14608:11;14621:1;14624:5;14574:16;:56::i;:::-;14567:63;;14351:291;14667:55;;;14710:1;14667:55;;;;;;;;;14720:1;14667:55;;;;;;-1:-1:-1;;;;;14667:55:0;;;;;;;;-1:-1:-1;;;;;;;;;;;14667:55:0;;;;;;;;15089:5;;-1:-1:-1;;;;;15070:24:0;;;15089:5;;15070:24;15066:836;;15184:42;15203:15;15220:5;15184:18;:42::i;:::-;-1:-1:-1;;;;;15245:22:0;;;:5;:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:54;15154:72;;-1:-1:-1;15245:77:0;;;:54;;:77;15241:194;;-1:-1:-1;;;;;15343:22:0;;;:5;:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:76;;-1:-1:-1;;;;;;15343:76:0;;;;;;;;;;15241:194;-1:-1:-1;;;;;15463:22:0;;;:5;:22;;;;;;;;;;;:38;;;;;;:31;;;;:38;;;;;;:52;;:54;;;;;;;;;15537:69;;;;;;;;;;;;;;;;;;;;;15463:22;-1:-1:-1;;;;;;;;;;;15537:69:0;;;;;;;15621:61;15638:15;15655:19;15676:5;15621:16;:61::i;15066:836::-;15732:5;;15715:46;;-1:-1:-1;;;;;15732:5:0;15739:11;15732:5;15755;15715:16;:46::i;:::-;15782:5;;;-1:-1:-1;;;;;15782:5:0;;;15776;:12;;;;;;;;;;;:28;;;;;;:21;;;:28;;;;;:42;;:44;;15782:5;15776:44;;;;;;15849:5;;15840:50;;;;;;;;;;;;;;;15776:5;;15849;;;;;-1:-1:-1;;;;;;;;;;;15840:50:0;;;;;;;;;;14168:1741;;;;:::o;15917:4735::-;-1:-1:-1;;;;;16029:22:0;;16745:11;16029:22;;;;;;;;;;;:44;;;;;;:37;;;;:44;;;;;;16745:11;;16029:44;16021:88;;;;;;;-1:-1:-1;;;;;16021:88:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16134:22:0;;:5;:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:58;;:65;16202:1;-1:-1:-1;16130:2298:0;;;-1:-1:-1;;;;;16220:22:0;;;:5;:22;;;;;;;;;;;:38;;;;;;;:31;;;;:38;;;;;:58;;;;27:10:-1;;23:18;;;45:23;;16220:76:0;;;;;;;;;;;-1:-1:-1;;;;;;16220:76:0;;;;;;;;;16375:38;;;;:65;;16316:126;;16359:1;16316:126;;;;;;;;;;;;;;;;;;16220:22;;:76;-1:-1:-1;;;;;;;;;;;16316:126:0;;;;;;;;;-1:-1:-1;;;;;16504:18:0;;;:5;:18;;;;;;;;;;;:34;;;;;:27;;:34;;;;;:68;;-1:-1:-1;;;;;;16504:68:0;;;;;;;;;;16612:5;;;;;16593:24;16589:128;;;16645:56;16662:15;16679:11;16692:1;16695:5;16645:16;:56::i;:::-;16638:63;;16589:128;-1:-1:-1;;;;;;;16759:22:0;;;:5;:22;;;;;;;;;;;:38;;;;;;:31;;;;:38;;;;;:54;;;16840:10;;;;;;;;;:26;;;:19;;;:26;;;;;:47;;;;27:10:-1;;16759:54:0;23:18:-1;;;45:23;;16840:65:0;;;;;;;;;;;-1:-1:-1;;;;;;16840:65:0;;;;;;;;;;;16946:26;;;;:46;:53;16759:54;;17033:8;;17032:102;;;;-1:-1:-1;;;;;;17065:10:0;;;:5;:10;;;;;;;;;;;:26;;;;;:19;;:26;;;;;:46;;:49;;:68;;;;:46;;:5;:49;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17065:49:0;:68;17032:102;:193;;;;-1:-1:-1;;;;;;17156:10:0;;;:5;:10;;;;;;;;;;;:26;;;;;:19;;:26;;;;;:46;;;;:49;;:68;;;;:46;;;:49;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17156:49:0;:68;17032:193;17028:1313;;;-1:-1:-1;;;;;17250:22:0;;:5;:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:58;;;;:65;:70;17246:264;;;17350:43;;;17381:1;17350:43;;;;;;;;;17391:1;17350:43;;;;;;-1:-1:-1;;;;;17350:43:0;;;;;;;;-1:-1:-1;;;;;;;;;;;17350:43:0;;;;;;;;17246:264;;;17447:43;;;17478:1;17447:43;;;;;;;;;17488:1;17447:43;;;;;;-1:-1:-1;;;;;17447:43:0;;;;;;;;-1:-1:-1;;;;;;;;;;;17447:43:0;;;;;;;;17246:264;17028:1313;;;17537:3;17544:1;17537:8;:20;;;;17549:3;17556:1;17549:8;17537:20;17536:115;;;;-1:-1:-1;;;;;;17583:10:0;;;:5;:10;;;;;;;;;;;:26;;;;;:19;;:26;;;;;:46;;:49;;:68;;;;:46;;:5;:49;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17583:49:0;:68;17536:115;17532:809;;;-1:-1:-1;;;;;17676:22:0;;:5;:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:58;;;;:65;:70;17672:264;;;17776:43;;;17807:1;17776:43;;;;;;;;;17817:1;17776:43;;;;;;-1:-1:-1;;;;;17776:43:0;;;;;;;;-1:-1:-1;;;;;;;;;;;17776:43:0;;;;;;;;17672:264;;;17873:43;;;17904:1;17873:43;;;;;;;;;17914:1;17873:43;;;;;;-1:-1:-1;;;;;17873:43:0;;;;;;;;-1:-1:-1;;;;;;;;;;;17873:43:0;;;;;;;;17532:809;;;17961:3;17968:1;17961:8;:80;;;;-1:-1:-1;;;;;;17973:10:0;;;:5;:10;;;;;;;;;;;:26;;;;;:19;;:26;;;;;:46;;;;:49;;:68;;;;:46;;;:49;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17973:49:0;:68;17961:80;17957:384;;;-1:-1:-1;;;;;18066:22:0;;:5;:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:58;;;;:65;:70;18062:264;;;18166:43;;;18197:1;18166:43;;;;;;;;;18207:1;18166:43;;;;;;-1:-1:-1;;;;;18166:43:0;;;;;;;;-1:-1:-1;;;;;;;;;;;18166:43:0;;;;;;;;18062:264;;;18263:43;;;18294:1;18263:43;;;;;;;;;18304:1;18263:43;;;;;;-1:-1:-1;;;;;18263:43:0;;;;;;;;-1:-1:-1;;;;;;;;;;;18263:43:0;;;;;;;;18062:264;18364:52;18392:11;18405:3;18410:5;18364:27;:52::i;16130:2298::-;-1:-1:-1;;;;;18448:22:0;;;:5;:22;;;;;;;;;;;:38;;;;;;:31;;;;:38;;;;;:59;;;27:10:-1;;39:1;23:18;;45:23;;18448:77:0;;;;;;;;;;;-1:-1:-1;;;;;;18448:77:0;;;;;;;18542:38;;;:49;;;;:63;18538:1082;;-1:-1:-1;;;;;18710:22:0;;:5;:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:58;;;;:61;;:58;;;:61;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18627:22:0;;;;;;;;;;;;:38;;;;;:31;;:38;;;;;;18710:61;18627:58;:61;;18710;;;;;18627:58;;:61;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18627:61:0;:144;18626:300;;;;-1:-1:-1;;;;;;18876:22:0;;;:5;:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:49;;;;;18794:58;;;:61;;18876:49;;;;;18794:58;18876:5;18794:61;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18794:61:0;:131;18626:300;18622:987;;;18949:51;18958:11;18971:15;18988:5;18995:4;18949:8;:51::i;:::-;19026:64;19054:11;19067:15;19084:5;19026:27;:64::i;18622:987::-;-1:-1:-1;;;;;19199:22:0;;;:5;:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:49;;;;;19116:58;;;:61;;19199:49;;;;;19116:58;19199:5;19116:61;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19116:61:0;:132;19112:497;;;19269:51;19278:11;19291:15;19308:5;19315:4;19269:8;:51::i;19112:497::-;19451:52;19460:11;19473:15;19490:5;19497;19451:8;:52::i;19112:497::-;-1:-1:-1;;;;;19636:22:0;;;:5;:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:58;;;;:61;;:76;;;;:58;;;:61;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19636:61:0;:76;19632:499;;;19729:52;19738:11;19751:15;19768:5;19775;19729:8;:52::i;19632:499::-;-1:-1:-1;;;;;19889:22:0;;;:5;:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:58;;:61;;:76;;;;:58;;:5;:61;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19889:61:0;:76;19885:246;;;19982:51;19991:11;20004:15;20021:5;20028:4;19982:8;:51::i;19885:246::-;-1:-1:-1;;;;;20290:22:0;;20284:5;20290:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:58;;;;:61;;20284:5;;20290:58;:61;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20290:61:0;;;20284:68;;;;;;;;;;;;;;;:84;;;;;;:77;;;;:84;;;;;20290:61;20284:104;;;:111;20161:22;;;;;;;;;;;:38;;;:31;;:38;;;;;;:58;;;:61;;20290;;20161:58;20290:61;;20161;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20161:61:0;20155:68;;;;;;;;;;;;;;;:84;;;;;:77;;:84;;;;;20161:61;20155:104;:111;:240;20151:409;;20412:52;20421:11;20434:15;20451:5;20458;20412:8;:52::i;:::-;20151:409;;;20497:51;20506:11;20519:15;20536:5;20543:4;20497:8;:51::i;:::-;20580:64;20608:11;20621:15;20638:5;20580:27;:64::i;:::-;15917:4735;;;;;:::o;28733:145::-;28802:5;;-1:-1:-1;;;;;28802:5:0;28786:45;28815:15;:13;:15::i;:::-;28786:45;;;;;;;;;;;;;;;;-1:-1:-1;;;;;28781:90:0;28733:145::o;847:132::-;905:7;932:39;936:1;939;932:39;;;;;;;;;;;;;;;;;;:3;:39::i;:::-;925:46;847:132;-1:-1:-1;;;847:132:0:o;3060:192::-;3100:14;;3096:3;:18;3093:152;;;3130:6;:8;;;;;;3093:152;;;3186:1;3179:6;:8;3225;3219:3;:14;3202;:31;3060:192::o;4279:148::-;4323:10;;4319:3;:14;4316:104;;;;;;4389:19;:17;:19::i;27775:666::-;27884:16;27902:21;27927:50;27943:11;27956:5;27963:6;27971:5;27927:15;:50::i;:::-;27883:94;;-1:-1:-1;27883:94:0;-1:-1:-1;;;;;;28001:52:0;;;27998:89;;;28069:7;;27998:89;-1:-1:-1;;;;;28102:31:0;;:50;28134:10;:17;;;;;;;;;;;;28102:50;;;;;;;;;;;;28134:17;28102:50;;;;;;;;28101:51;28097:149;;;28176:58;;-1:-1:-1;;;;;28176:35:0;;;28220:4;28212:21;28176:58;;;;;;;;;28212:21;28176:35;:58;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;28176:58:0;28169:65;;28097:149;-1:-1:-1;;;;;28270:46:0;;;28290:6;28298:10;:17;;;;;;;;;;;;28270:46;;;;;;;;;;;;;;;;;;;;;;;;;28331:16;28327:107;;;28369:53;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;28369:53:0;;;;;;;;;;;;;;;;;;;28327:107;27775:666;;;;;;:::o;22289:1965::-;-1:-1:-1;;;;;22408:22:0;;23847:27;22408:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:59;;:66;22590:19;;23847:27;22477:1;-1:-1:-1;22404:166:0;;;22502:56;22519:15;22536:11;22549:1;22552:5;22502:16;:56::i;22404:166::-;-1:-1:-1;;;;;22618:22:0;;;22612:5;22618:22;;;;;;;;;;;:38;;;;;;:31;;;;:38;;;;;:54;;;;22612:61;;;;;;;;:77;;;:70;;;;:77;;;;;;22618:54;22612:97;22590:119;;;;;;;;;;;;;;;;;22612:97;;22590:119;;22612:97;22590:119;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22590:119:0;;;;;;;;;;;;;;;;;;;;;;;22734:2;:9;22747:1;22734:14;22730:501;;;22778:15;-1:-1:-1;;;;;22769:24:0;:2;22772:1;22769:5;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22769:24:0;;:69;;;;22823:15;-1:-1:-1;;;;;22814:24:0;:2;22817:1;22814:5;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22814:24:0;;22769:69;22765:455;;;-1:-1:-1;;;;;22865:22:0;;;22859:5;22865:22;;;;;;;;;;;:38;;;;;;:31;;;;:38;;;;;:54;;;;22859:61;;;;;;;;:77;;;:70;;;;:77;;;;;;:88;;:106;;-1:-1:-1;;;;;;22859:106:0;;;;;;22765:455;;;22991:2;:9;23004:1;22991:14;22987:233;;;23039:15;-1:-1:-1;;;;;23030:24:0;:2;23033:1;23030:5;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23030:24:0;;23026:179;;;-1:-1:-1;;;;;23085:22:0;;;23079:5;23085:22;;;;;;;;;;;:38;;;;;;:31;;;;:38;;;;;:54;;;;23079:61;;;;;;;;:77;;;:70;;;;:77;;;;;;:88;;:106;;-1:-1:-1;;;;;;23079:106:0;;;;;;23026:179;23312:16;;;23326:1;23312:16;;;;;;;;;;-1:-1:-1;;;;;23251:22:0;;;;;;;;;;:38;;;;;:31;;:38;;;;;;:77;;;;:58;;;;;23312:16;23251:77;:::i;:::-;-1:-1:-1;23401:16:0;;;23415:1;23401:16;;;;;;;;;;-1:-1:-1;;;;;23339:22:0;;;;;;;;;;:38;;;;;:31;;:38;;;;;;:78;;;;:59;;;;;23401:16;23339:78;:::i;:::-;-1:-1:-1;;;;;;23428:22:0;;;23488:1;23428:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:49;;;;:62;;-1:-1:-1;;;;;;23428:62:0;;;23727:52;;;;:54;;-1:-1:-1;23727:54:0;;;23825:5;;;;23806:24;23802:445;;23877:42;23896:15;23913:5;23877:18;:42::i;:::-;23941:69;;;24001:1;23941:69;;;;;;;;;;;23847:72;;-1:-1:-1;;;;;;23941:69:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23941:69:0;;;;;;;;24025:61;24042:15;24059:19;24080:5;24025:16;:61::i;23802:445::-;24133:5;;24124:50;;;24165:1;24124:50;;;;;;;;;;;-1:-1:-1;;;;;24124:50:0;;;;24148:1;;24133:5;;;-1:-1:-1;;;;;;;;;;;24124:50:0;;;;;;;;;;24206:5;;24189:46;;-1:-1:-1;;;;;24206:5:0;24213:11;24226:1;24229:5;24189:16;:46::i;20660:1617::-;20770:2;20769:3;20765:1505;;;-1:-1:-1;;;;;20795:22:0;;20789:5;20795:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:58;;:61;;20789:5;;20795:58;20789:5;;20795:61;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20795:61:0;;;20789:68;;;;;;;;;;;;;;;:84;;;;;;:77;;;;:84;;;;;20795:61;20789:104;;;27:10:-1;;23:18;;;45:23;;20789:122:0;;;;;;;;;-1:-1:-1;;;;;;20789:122:0;;;;;;;20957:22;;;;;;;;;;;:38;;;:31;:38;;;;;:58;;;:61;;:58;;20795:61;20957;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21042:22:0;;;;;;;;;;;;:38;;;;;:31;;:38;;;;;;20957:61;21042:58;:61;;20957;;;;20931:218;;;;-1:-1:-1;;;;;;;;;;;20931:218:0;21020:1;;21023:5;;20957:61;;;21042:58;20957:61;;21042;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21042:61:0;21036:68;;;;;;;;;;;;;;;:84;;;;;;:77;;;;:84;;;;;;21042:61;21036:104;:111;20931:218;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21169:176:0;;;21232:5;21238:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:58;;:61;;21169:176;;;;;-1:-1:-1;;;;;;;;;;;21169:176:0;21212:1;;21215:5;;21232;;21238:58;21232:5;;21238:61;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21238:61:0;21232:68;;;;;;;;;;;;;;;:84;;;;;;:77;;;;:84;;;;;;21238:61;21232:104;:111;21169:176;;;;;;;;;;;;;;;;;21222:1;:122;;;21169:176;;;;;;;;;;;;;;-1:-1:-1;;;;;21446:22:0;;:5;:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:58;;:61;;:58;;:5;:61;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21393:18:0;;;;;;;;;;;;:34;;;;;:27;;:34;;;;;;;:114;;-1:-1:-1;;;;;;21393:114:0;21446:61;;;;21393:114;;;20765:1505;;;-1:-1:-1;;;;;21546:22:0;;21540:5;21546:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:58;;;;:61;;21540:5;;21546:58;:61;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21546:61:0;;;21540:68;;;;;;;;;;;;;;;:84;;;;;;:77;;;;:84;;;;;21546:61;21540:104;;;27:10:-1;;23:18;;;45:23;;21540:122:0;;;;;;;;;-1:-1:-1;;;;;;21540:122:0;;;;;;;21708:22;;;;;;;;;;;:38;;;:31;:38;;;:58;;:61;;:58;;21546:61;21708;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21793:22:0;;;;;;;;;;;;:38;;;;;:31;;:38;;;;;;21708:61;21793:58;;;:61;;21708;;;;21682:218;;;;-1:-1:-1;;;;;;;;;;;21682:218:0;21771:1;;21774:5;;21708:61;;21793:58;;21708:61;21793;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21793:61:0;21787:68;;;;;;;;;;;;;;;:84;;;;;;:77;;;;:84;;;;;;21793:61;21787:104;:111;21682:218;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21920:176:0;;;21983:5;21989:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:58;;;;:61;;21920:176;;;;;-1:-1:-1;;;;;;;;;;;21920:176:0;21963:1;;21966:5;;21983;;;;21989:58;;:61;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21989:61:0;21983:68;;;;;;;;;;;;;;;:84;;;;;;:77;;;;:84;;;;;;21989:61;21983:104;:111;21920:176;;;;;;;;;;;;;;;;;21973:1;:122;;;21920:176;;;;;;;;;;;;;;-1:-1:-1;;;;;22197:22:0;;:5;:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:58;;;;:61;;:58;;;:61;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22144:18:0;;;;;;;;;;;;:34;;;;;:27;;:34;;;;;;;:114;;-1:-1:-1;;;;;;22144:114:0;22197:61;;;;22144:114;;;20660:1617;;;;:::o;987:278::-;1073:7;;1108:12;1101:5;;;1093:28;;;;-1:-1:-1;;;;;1093: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;1093:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1148:1;1144;:5;;;;;;;;;987:278;-1:-1:-1;;;;;987:278:0:o;26674:1093::-;26778:7;;26833:11;26778:7;26901:1;26891:11;;;;26887:863;;;26919:394;-1:-1:-1;;;;;26955:15:0;;:5;:15;;;;;;;;;;;:31;;;;;;:24;;;;:31;;;;;;:39;;;;26951:347;;;27024:43;;;27058:1;27024:43;;;;;;;;;;;-1:-1:-1;;;;;27024:43:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;27147:15:0;;;:5;:15;;;;;;;;;;;:31;;;;;:24;;:31;;;;;:47;;27109:4;26951:347;;;27251:8;27261:16;27243:35;;;;;;26951:347;26919:394;;26887:863;-1:-1:-1;;;;;27381:15:0;;:5;:15;;;;;;;;;;;:31;;;;;;:24;;;;:31;;;;;;:39;;;;27377:347;;;27450:43;;;27484:1;27450:43;;;;;;;;;;;-1:-1:-1;;;;;27450:43:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;27573:15:0;;;:5;:15;;;;;;;;;;;:31;;;;;:24;;:31;;;;;:47;;27535:4;27345:394;;;26674:1093;;;;;;;;;:::o;1674:27341::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1674:27341:0;;;;;;;;;;:::o;:::-;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;-1:-1;1674:27341:0;;;-1:-1:-1;;1674:27341:0:o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1674:27341:0;-1:-1:-1;;;;;1674:27341:0;;;;;;;;;;;-1:-1:-1;1674:27341:0;;;;;;;-1:-1:-1;1674:27341:0;;;;-1:-1:-1;1674:27341:0;;;;;;;;;;-1:-1:-1;;;;;;1674:27341:0;;;;;;

Swarm Source

bzzr://46684b420218423cf3f479c2187ec2be2399590cdfdcae865ded8fb17261ec41

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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