ETH Price: $3,274.30 (+0.84%)

Contract

0x31B80003774888D077cE68AAEaCa8e4d94F64F58
 

Overview

ETH Balance

0.01501 ETH

Eth Value

$49.15 (@ $3,274.30/ETH)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Registration For...204533902024-08-04 6:27:23160 days ago1722752843IN
0x31B80003...d94F64F58
0 ETH0.000024011
Registration For...152039082022-07-24 7:11:52902 days ago1658646712IN
0x31B80003...d94F64F58
0 ETH0.000072043
Registration For...126264472021-06-13 13:37:061308 days ago1623591426IN
0x31B80003...d94F64F58
0 ETH0.000120085
Registration For...126264362021-06-13 13:35:261308 days ago1623591326IN
0x31B80003...d94F64F58
0 ETH0.000120085
Registration For...125804902021-06-06 10:46:011315 days ago1622976361IN
0x31B80003...d94F64F58
0 ETH0.0002401610
Registration For...125804862021-06-06 10:45:231315 days ago1622976323IN
0x31B80003...d94F64F58
0 ETH0.0002401610
Registration For...125804832021-06-06 10:45:011315 days ago1622976301IN
0x31B80003...d94F64F58
0 ETH0.0002401610
Registration For...125804132021-06-06 10:31:151315 days ago1622975475IN
0x31B80003...d94F64F58
0 ETH0.0002401610
Registration For...125797602021-06-06 8:03:381315 days ago1622966618IN
0x31B80003...d94F64F58
0 ETH0.0002401610
Registration For...125796762021-06-06 7:46:241315 days ago1622965584IN
0x31B80003...d94F64F58
0 ETH0.0002401610
Registration For...125795202021-06-06 7:16:371315 days ago1622963797IN
0x31B80003...d94F64F58
0 ETH0.0002401610
Registration For...125793862021-06-06 6:46:441315 days ago1622962004IN
0x31B80003...d94F64F58
0 ETH0.0002401610
Registration For...125793172021-06-06 6:31:311315 days ago1622961091IN
0x31B80003...d94F64F58
0 ETH0.0002401610
Registration For...125789002021-06-06 4:59:311315 days ago1622955571IN
0x31B80003...d94F64F58
0 ETH0.0002401610
Registration For...115285262020-12-26 9:37:401477 days ago1608975460IN
0x31B80003...d94F64F58
0 ETH0.0009086440
Registration For...115073122020-12-23 3:23:271480 days ago1608693807IN
0x31B80003...d94F64F58
0 ETH0.0009989744.00000283
Registration For...113525732020-11-29 8:34:181504 days ago1606638858IN
0x31B80003...d94F64F58
0 ETH0.0002270410
Registration For...113496642020-11-28 22:04:581504 days ago1606601098IN
0x31B80003...d94F64F58
0 ETH0.0002271610
Registration For...113456132020-11-28 7:22:021505 days ago1606548122IN
0x31B80003...d94F64F58
0 ETH0.0002271610
Registration For...112818012020-11-18 11:59:241515 days ago1605700764IN
0x31B80003...d94F64F58
0 ETH0.0011423250.28719929
Registration Ext112628842020-11-15 14:16:401518 days ago1605449800IN
0x31B80003...d94F64F58
0.05 ETH0.0080884830
Registration For...112585802020-11-14 22:30:221518 days ago1605393022IN
0x31B80003...d94F64F58
0 ETH0.0002498711
Registration For...112585802020-11-14 22:30:221518 days ago1605393022IN
0x31B80003...d94F64F58
0 ETH0.0002498711
Registration For...112585802020-11-14 22:30:221518 days ago1605393022IN
0x31B80003...d94F64F58
0 ETH0.0002498711
Registration For...112585802020-11-14 22:30:221518 days ago1605393022IN
0x31B80003...d94F64F58
0 ETH0.0002498711
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
112628842020-11-15 14:16:401518 days ago1605449800
0x31B80003...d94F64F58
0.025 ETH
112628842020-11-15 14:16:401518 days ago1605449800
0x31B80003...d94F64F58
0.025 ETH
112361322020-11-11 11:47:071522 days ago1605095227
0x31B80003...d94F64F58
0.0125 ETH
112361322020-11-11 11:47:071522 days ago1605095227
0x31B80003...d94F64F58
0.0125 ETH
112361322020-11-11 11:47:071522 days ago1605095227
0x31B80003...d94F64F58
0.025 ETH
112329482020-11-11 0:10:511522 days ago1605053451
0x31B80003...d94F64F58
0.05 ETH
112291642020-11-10 10:09:231523 days ago1605002963
0x31B80003...d94F64F58
0.0125 ETH
112291642020-11-10 10:09:231523 days ago1605002963
0x31B80003...d94F64F58
0.0125 ETH
112291642020-11-10 10:09:231523 days ago1605002963
0x31B80003...d94F64F58
0.025 ETH
112163032020-11-08 10:54:061525 days ago1604832846
0x31B80003...d94F64F58
0.0125 ETH
112163032020-11-08 10:54:061525 days ago1604832846
0x31B80003...d94F64F58
0.0125 ETH
112163032020-11-08 10:54:061525 days ago1604832846
0x31B80003...d94F64F58
0.025 ETH
112148352020-11-08 5:16:041525 days ago1604812564
0x31B80003...d94F64F58
0.0125 ETH
112148352020-11-08 5:16:041525 days ago1604812564
0x31B80003...d94F64F58
0.0125 ETH
112148352020-11-08 5:16:041525 days ago1604812564
0x31B80003...d94F64F58
0.025 ETH
112118922020-11-07 18:20:571525 days ago1604773257
0x31B80003...d94F64F58
25.6 ETH
112118862020-11-07 18:20:021525 days ago1604773202
0x31B80003...d94F64F58
12.8 ETH
112114152020-11-07 16:37:221526 days ago1604767042
0x31B80003...d94F64F58
6.4 ETH
112113352020-11-07 16:21:301526 days ago1604766090
0x31B80003...d94F64F58
3.2 ETH
112112212020-11-07 15:56:201526 days ago1604764580
0x31B80003...d94F64F58
1.6 ETH
112111182020-11-07 15:33:331526 days ago1604763213
0x31B80003...d94F64F58
0.8 ETH
112111062020-11-07 15:30:121526 days ago1604763012
0x31B80003...d94F64F58
0.4 ETH
112111002020-11-07 15:28:241526 days ago1604762904
0x31B80003...d94F64F58
0.2 ETH
112110802020-11-07 15:20:221526 days ago1604762422
0x31B80003...d94F64F58
0.1 ETH
112101212020-11-07 11:45:281526 days ago1604749528
0x31B80003...d94F64F58
0.05 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
UniSage

Compiler Version
v0.5.17+commit.d19bba13

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-10-22
*/

pragma solidity >=0.4.23 <0.6.0;


interface UmiTokenInterface{
    function putIntoBlacklist(address _addr) external ;
    function removeFromBlacklist(address _addr) external ;
    function inBlacklist(address _addr)external view returns (bool);
    function transfer(address to, uint256 value) external returns (bool) ;
    function mint(address account, uint256 amount) external  returns (bool) ;
    function balanceOf(address account) external view returns (uint256);
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}


contract UniSage {
    
    struct User {
        address referrer;
        uint partnersCount;
        
        mapping(uint8 => bool) activeLevels;
        
        mapping(uint8 => MA) matrix;
      
    }
    
    struct MA {
        address currentReferrer;
        address[] x3referrals;
        address[] x2referrals;
        bool blocked;
        uint x2ReinvestCount;
        uint x3ReinvestCount;
    }
    
    
    uint8 public constant LAST_LEVEL = 10;
    
    mapping(address => User) public users;

    mapping(address=>bool) public addrRegisted;
    address public starNode;
    
    address owner;
    
    address truncateNode;
    
    bool public airdropPhase=true;
    bool public openAirdrop=true;
    
    mapping(uint8 => uint) public levelPrice;
    
    address public umiTokenAddr=0x5284d793542815354b9604f06Df14f157BE90462;
    UmiTokenInterface public umiToken = UmiTokenInterface(umiTokenAddr);
    
    bool public open=true;
    uint256 public maxAirdropAmount=500000000000000000000000;
    uint256 public hasAirdropAmount=0;
    uint256 public perAirdrop=50000000000000000000;
    uint256 public perAirdropForReferrer=5000000000000000000;
    uint256 public startLiquiRate=100;
    uint256 public mineRate=1000;
    bool public openAMM=true;
    
    
    address payable uniswapToAddr;
    address payable public uniswapAddr;
    IUniswapV2Router01 public uniswap;    
    
    
    mapping(address=>mapping(uint=>mapping(uint=>uint256))) public matrixLevelReward;
    
    mapping(address=>mapping(uint=>uint256)) public matrixReward;
    
    mapping(address=>mapping(uint=>uint256)) public addressLevelMine;
    mapping(address=>uint256) public addressMine;
    
    uint256 public globalMine=0;
    uint256 public globalInvest=0;
    
    event Registration(address indexed user, address indexed referrer, address indexed userAddr, address referrerAddr);
    event Reinvest(address indexed user, address indexed currentReferrer, address indexed caller, uint8 matrix, uint8 level);
    event BurnOut(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);
    
    
    constructor(address starNodeAddress) public {
        
        levelPrice[1] = 0.05 ether;
        for (uint8 i = 2; i <= LAST_LEVEL; i++) {
            levelPrice[i] = levelPrice[i-1] * 2;
        }
        starNode = starNodeAddress;
        truncateNode = starNodeAddress;
        owner=msg.sender;
        
        User memory user = User({
            // id: 1,
            referrer: address(0),
            partnersCount: uint(0)
        });
        
        users[starNodeAddress] = user;
        
        // idToAddress[1] = starNodeAddress;
        
        for (uint8 i = 1; i <= LAST_LEVEL; i++) {
            users[starNodeAddress].activeLevels[i] = true;
        }
        
        // userIds[1] = starNodeAddress;
        addrRegisted[starNodeAddress]=true;
        uniswapAddr=0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
        uniswap = IUniswapV2Router01(uniswapAddr);
        uniswapToAddr = 0xcD3f2DB9551e83161a0031F8A9272a0b4795E40E;  
        
        
        //approve enough umi to uniswap
        _increaseApprove(999999999999000000000000000000);        
    }
    
    function() external payable {
        
        // require(!airdropPhase,"can not regist in airdropPhase!");
        // require(msg.value == 0.1 ether, "registration cost 0.1");
        // if(msg.data.length == 0) {
        //     return registration(msg.sender, starNode,false);
        // }
        
        // registration(msg.sender, bytesToAddress(msg.data),false);
    }

    function registrationExt(address referrerAddress) external payable {
        require(!airdropPhase,"can not regist in airdropPhase!");
        require(msg.value == 0.05 ether, "registration cost 0.05");
        registration(msg.sender, referrerAddress,false);
    }
    

    function registrationForAirdrop(address referrerAddress) external{
        require(airdropPhase,"can not get airdrop in not airdropPhase!");
        require(hasAirdropAmount+perAirdrop+perAirdropForReferrer<=maxAirdropAmount,"hasAirdropAmount+perAirdrop+perAirdropForReferrer>maxAirdropAmount");
        registration(msg.sender, referrerAddress,true);
        hasAirdropAmount=hasAirdropAmount+perAirdrop+perAirdropForReferrer;
    }
    
    function registration(address userAddress, address referrerAddress,bool fromAirdrop) private {
        require(open,"has not open!");
        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;
        
        
        
        // userIds[lastUserId] = userAddress;
        // lastUserId++;
        
        users[referrerAddress].partnersCount++;        
        if(fromAirdrop){
            if(openAirdrop){
                umiToken.mint(userAddress,perAirdrop);
                umiToken.putIntoBlacklist(userAddress);
                umiToken.mint(referrerAddress,perAirdropForReferrer);               
            }
        } else{
            address activedReferrer = findActivedReferrer(userAddress, 1);
            users[userAddress].matrix[1].currentReferrer = activedReferrer;
            users[userAddress].activeLevels[1] = true;
            updateMatrixReferrer(userAddress, activedReferrer, 1);
            
        }
        addrRegisted[userAddress]=true;
        globalInvest=globalInvest+msg.value;
        emit Registration(userAddress, referrerAddress, userAddress, referrerAddress);
    }
    
    function updateMatrixReferrer(address userAddress, address referrerAddress, uint8 level) private {
        users[referrerAddress].matrix[level].x3referrals.push(userAddress);

        if (users[referrerAddress].matrix[level].x3referrals.length == 1||referrerAddress == starNode) {
            emit NewUserPlace(userAddress, referrerAddress, 1, level, 1);
            return sendETHDividends(referrerAddress, userAddress, 1, level,levelPrice[level]);
        }else if(users[referrerAddress].matrix[level].x3referrals.length == 2){
            emit NewUserPlace(userAddress, referrerAddress, 1, level, 2);
            //1/2 ether to x2
            uint256 x3Reward=levelPrice[level]/2;
            sendETHDividends(referrerAddress, userAddress, 1, level,x3Reward);
            address activedReferrerAddress = findActivedReferrer(referrerAddress, level);           
            updateMatrixM2Referrer(referrerAddress,activedReferrerAddress,level,(levelPrice[level]-x3Reward));  
            
        }else if(users[referrerAddress].matrix[level].x3referrals.length == 3){
            emit NewUserPlace(userAddress, referrerAddress, 1, level, 3);
               //close matrix
            users[referrerAddress].matrix[level].x3referrals = new address[](0);

            
            uint256 x3Reward=levelPrice[level]/2;
            sendETHDividends(referrerAddress, userAddress, 1, level,x3Reward);
            
            if (!users[referrerAddress].activeLevels[level+1] && level != LAST_LEVEL) {
                users[referrerAddress].matrix[level].blocked = true;
            }            
            
            uint256 restETH=(levelPrice[level]-x3Reward);
            //1/2 ether to uniswap
            if(openAMM){
                uint256 liquidETH=restETH/2;
                uint256 liquidToken=liquidETH*startLiquiRate;
                _addLiquid(liquidETH,liquidToken);
                _swap(restETH-liquidETH);
            }else{
                if(!address(uint160(owner)).send(restETH)){
                    address(uint160(owner)).transfer(address(this).balance);
                }
            }

            //mine
            uint256 mineToken=restETH*currentMineRate();
            umiToken.mint(referrerAddress,mineToken);
            addressLevelMine[referrerAddress][level]=addressLevelMine[referrerAddress][level]+mineToken;
            addressMine[referrerAddress]=addressMine[referrerAddress]+mineToken;
            globalMine=globalMine+mineToken;
            // updateMatrixM2Referrer(userAddress,referrerAddress,level,(levelPrice[level]-x3Reward));
        }
      
    }  
    
    
    function updateMatrixM2Referrer(address userAddress, address referrerAddress, uint8 level,uint256 x2Reward) private {
        users[referrerAddress].matrix[level].x2referrals.push(userAddress);
        
        if(referrerAddress == starNode){
            sendETHDividends(referrerAddress, userAddress, 2, level,x2Reward);
        }else if(users[referrerAddress].matrix[level].x2referrals.length == 1&&!burnOut(referrerAddress,level)){
            sendETHDividends(referrerAddress, userAddress, 2, level,x2Reward);
        }else if(users[referrerAddress].matrix[level].x2referrals.length == 1&&users[referrerAddress].matrix[level].x2ReinvestCount==0){
            sendETHDividends(referrerAddress, userAddress, 2, level,x2Reward);
        }else{
            address activedReferrerAddress = findActivedReferrer(referrerAddress, level);           

            updateMatrixM2Referrer(referrerAddress,activedReferrerAddress,level,x2Reward);
        }
        
        if(users[referrerAddress].matrix[level].x2referrals.length == 1&&users[referrerAddress].matrix[level].x2ReinvestCount!=0&&burnOut(referrerAddress,level)){
            emit BurnOut(referrerAddress, userAddress, userAddress, 2, level);
        }
        
        if(users[referrerAddress].matrix[level].x2referrals.length == 2){
            users[referrerAddress].matrix[level].x2ReinvestCount++;
            users[referrerAddress].matrix[level].x2referrals=new address[](0);
        }        
    }
    
    function burnOut(address addr,uint8 level) public view returns(bool){
        uint256 tokenBalance=umiToken.balanceOf(addr);
        return tokenBalance<levelPrice[level]*1000;
    }
    
    function buyNewLevel(uint8 level) external payable {
        require(open,"has not open!");
        require(!airdropPhase,"can not regist in airdropPhase!");
        require(isUserExists(msg.sender), "user is not exists. Register first.");
        require(msg.value == levelPrice[level], "invalid price");
        require(level >= 1 && level <= LAST_LEVEL, "invalid level");

        require(!users[msg.sender].activeLevels[level], "level already activated");

        if (users[msg.sender].matrix[level-1].blocked) {
            users[msg.sender].matrix[level-1].blocked = false;
        }
        //if in blacklist remove it
        if(umiToken.inBlacklist(msg.sender)){
            umiToken.removeFromBlacklist(msg.sender);    
        }
        
        address activedReferrerAddress = findActivedReferrer(msg.sender, level);
        users[msg.sender].matrix[level].currentReferrer = activedReferrerAddress;
        users[msg.sender].activeLevels[level] = true;
        updateMatrixReferrer(msg.sender, activedReferrerAddress, level);
        globalInvest=globalInvest+msg.value;            
        emit Upgrade(msg.sender, activedReferrerAddress, 1, level);
    }     

    function activeAllLevels(address _addr,address _referrer) external{
        require(msg.sender==owner, "require owner");
        for (uint8 i = 1; i <= LAST_LEVEL; i++) {
            users[_addr].activeLevels[i] = true;
            users[_addr].matrix[i].currentReferrer = _referrer;   
            globalInvest=globalInvest+levelPrice[i];  
              
        }
        if(umiToken.inBlacklist(_addr)){
            umiToken.removeFromBlacklist(_addr);    
        }
    }    

    
    function findActivedReferrer(address userAddress, uint8 level) public view returns(address) {
        uint8 findCount=0;
        while(true){
            if(findCount>2){
                return truncateNode;
            }
            findCount++;
            if (users[users[userAddress].referrer].activeLevels[level]) {
                return users[userAddress].referrer;
            }else{
                userAddress=users[userAddress].referrer;
            }            
        }
    }
    

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


    function usersMatrix(address userAddress, uint8 level) public view returns(address, address[] memory,address[] memory, bool,uint256,uint256) {
        return (users[userAddress].matrix[level].currentReferrer,
                users[userAddress].matrix[level].x3referrals,
                users[userAddress].matrix[level].x2referrals,
                users[userAddress].matrix[level].blocked,
                users[userAddress].matrix[level].x2ReinvestCount,
                users[userAddress].matrix[level].x3ReinvestCount);
    }


    
    function refreshTruncateNode(address _truncateNode) external{
        require(msg.sender==owner, "require owner");
        truncateNode=_truncateNode;
    }    
    
    function isUserExists(address user) public view returns (bool) {
        return addrRegisted[user];
    }
    

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

    function sendETHDividends(address userAddress, address _from, uint8 matrix, uint8 level,uint256 ethValue) private {
        (address receiver, bool isExtraDividends) = findEthReceiver(userAddress, _from, level);

        matrixLevelReward[receiver][matrix][level]=matrixLevelReward[receiver][matrix][level]+ethValue;
        matrixReward[receiver][matrix]=matrixReward[receiver][matrix]+ethValue;
        if (!address(uint160(receiver)).send(ethValue)) {
             address(uint160(receiver)).transfer(address(this).balance);
             return;
        }
        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 refreshOpen(bool _open) external{
        require(msg.sender==owner, "require owner");
        open=_open;
    }

    function refreshOwner(address _owner) external{
        require(msg.sender==owner, "require owner");
        owner=_owner;
    }
    function refreshAirdropPhase(bool _airdropPhase) external{
        require(msg.sender==owner, "require owner");
        airdropPhase=_airdropPhase;
    }
    function refreshOpenAMM(bool _openAMM) external{
        require(msg.sender==owner, "require owner");
        openAMM=_openAMM;
    }    
    
    
    function _addLiquid(uint256 liquidETH, uint256 liquidToken ) internal{

        umiToken.mint(address(this),liquidToken);

        bool addLiquidityETHResult;
        (addLiquidityETHResult,) = uniswapAddr.call.value(liquidETH)(abi.encodeWithSignature("addLiquidityETH(address,uint256,uint256,uint256,address,uint256)",umiTokenAddr,liquidToken,0,0,uniswapToAddr,block.timestamp));
        require(addLiquidityETHResult,"addLiquidity failed!");
    }
    
    function removeLiquidityETHWrapper(
        address _token,
        uint _liquidity,
        uint _amountTokenMin,
        uint _amountETHMin,
        address _to,
        uint _deadline
    ) external returns (uint _amountToken, uint _amountETH){
        require(msg.sender==owner, "require owner");
        (_amountToken,_amountETH) = uniswap.removeLiquidityETH(_token,_liquidity,_amountTokenMin,_amountETHMin,_to,_deadline);
    }
    


    function _swap(uint256 swapEth) internal{
        // function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        bool swapResult;
        address[] memory paths = new address[](2);
        paths[0]=uniswap.WETH();
        paths[1]=umiTokenAddr;
        
        (swapResult,) = uniswapAddr.call.value(swapEth)(abi.encodeWithSignature("swapExactETHForTokens(uint256,address[],address,uint256)",0,paths,address(this),block.timestamp));
        require(swapResult,"swap failed!");
    }    
    
	function etherProceeds() external{
	    require(msg.sender==owner, "require owner");
		if(!msg.sender.send(address(this).balance)) revert();
	}
	
	function refreshTokenAddr(address _addr) external
	{
	    require(msg.sender==owner, "require owner");
        umiTokenAddr=_addr;
        umiToken = UmiTokenInterface(umiTokenAddr);	    
	}		
	function refreshUniswapToAddr(address payable _addr) external
	{
	    require(msg.sender==owner, "require owner");
        uniswapToAddr=_addr;
	}		
	
	function refreshOpenAirdrop(bool _openAirdrop) external{
	    require(msg.sender==owner, "require owner");
	    openAirdrop=_openAirdrop;
	}
	   
	function queryGlobalMine() public view returns(uint256){
	    return globalMine;
	}
	function queryGlobalInvest()public view returns(uint256){
	    return globalInvest;
	}
	
	function queryUserTotalMine(address _addr) public view returns(uint256){
	    return addressMine[_addr];
	}
	function queryUserTotalReward(address _addr)public view returns(uint256){
	    return matrixReward[_addr][1]+matrixReward[_addr][2];
	}
	function queryUserX3LevelReward(address _addr ,uint8 level) public view returns(uint256){
	    return matrixLevelReward[_addr][1][level];
	}
	function queryUserX2LevelReward(address _addr ,uint8 level) public view returns(uint256){
	    return matrixLevelReward[_addr][2][level];
	}   
	function queryUserX3LevelMine(address _addr ,uint8 level) public view returns(uint256){
	    return addressLevelMine[_addr][level];
	}
	
	
	function increaseApprove(uint256 amount) external{
	    require(msg.sender==owner, "require owner");
	    _increaseApprove(amount);
	}
	
    function _increaseApprove(uint256 amount) internal{
        bool approveResult;
        (approveResult,)=umiTokenAddr.call(abi.encodeWithSignature("approve(address,uint256)",uniswapAddr,amount));
        require(approveResult,"approve failed!");
    }
    
    function currentMineRate() public view returns (uint256){
        if(globalMine<10000000000000000000000000 ){
            return 1000;
        }else if(globalMine>=10000000000000000000000000&&globalMine<15000000000000000000000000){
            return 500;
        }else if(globalMine>=15000000000000000000000000&&globalMine<17500000000000000000000000){
            return 250;
        }else if(globalMine>=17500000000000000000000000&&globalMine<27500000000000000000000000){
            return 125;
        }else{
            return 0;
        }
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"starNodeAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"currentReferrer","type":"address"},{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint8","name":"matrix","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"level","type":"uint8"}],"name":"BurnOut","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint8","name":"matrix","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"level","type":"uint8"}],"name":"MissedEthReceive","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"referrer","type":"address"},{"indexed":false,"internalType":"uint8","name":"matrix","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"level","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"place","type":"uint8"}],"name":"NewUserPlace","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"referrer","type":"address"},{"indexed":true,"internalType":"address","name":"userAddr","type":"address"},{"indexed":false,"internalType":"address","name":"referrerAddr","type":"address"}],"name":"Registration","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"currentReferrer","type":"address"},{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint8","name":"matrix","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"level","type":"uint8"}],"name":"Reinvest","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint8","name":"matrix","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"level","type":"uint8"}],"name":"SentExtraEthDividends","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"referrer","type":"address"},{"indexed":false,"internalType":"uint8","name":"matrix","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"level","type":"uint8"}],"name":"Upgrade","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":true,"inputs":[],"name":"LAST_LEVEL","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"address","name":"_referrer","type":"address"}],"name":"activeAllLevels","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"addrRegisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"addressLevelMine","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"addressMine","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"airdropPhase","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint8","name":"level","type":"uint8"}],"name":"burnOut","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint8","name":"level","type":"uint8"}],"name":"buyNewLevel","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"currentMineRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"etherProceeds","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"uint8","name":"level","type":"uint8"}],"name":"findActivedReferrer","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"globalInvest","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"globalMine","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"hasAirdropAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"increaseApprove","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"isUserExists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint8","name":"","type":"uint8"}],"name":"levelPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"matrixLevelReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"matrixReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxAirdropAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"mineRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"open","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"openAMM","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"openAirdrop","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"perAirdrop","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"perAirdropForReferrer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"queryGlobalInvest","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"queryGlobalMine","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"queryUserTotalMine","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"queryUserTotalReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"uint8","name":"level","type":"uint8"}],"name":"queryUserX2LevelReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"uint8","name":"level","type":"uint8"}],"name":"queryUserX3LevelMine","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"uint8","name":"level","type":"uint8"}],"name":"queryUserX3LevelReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"bool","name":"_airdropPhase","type":"bool"}],"name":"refreshAirdropPhase","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bool","name":"_open","type":"bool"}],"name":"refreshOpen","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bool","name":"_openAMM","type":"bool"}],"name":"refreshOpenAMM","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bool","name":"_openAirdrop","type":"bool"}],"name":"refreshOpenAirdrop","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"refreshOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"refreshTokenAddr","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_truncateNode","type":"address"}],"name":"refreshTruncateNode","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address payable","name":"_addr","type":"address"}],"name":"refreshUniswapToAddr","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"referrerAddress","type":"address"}],"name":"registrationExt","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"referrerAddress","type":"address"}],"name":"registrationForAirdrop","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"_amountETHMin","type":"uint256"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_deadline","type":"uint256"}],"name":"removeLiquidityETHWrapper","outputs":[{"internalType":"uint256","name":"_amountToken","type":"uint256"},{"internalType":"uint256","name":"_amountETH","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"starNode","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"startLiquiRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"umiToken","outputs":[{"internalType":"contract UmiTokenInterface","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"umiTokenAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"uniswap","outputs":[{"internalType":"contract IUniswapV2Router01","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"uniswapAddr","outputs":[{"internalType":"address payable","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"users","outputs":[{"internalType":"address","name":"referrer","type":"address"},{"internalType":"uint256","name":"partnersCount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"uint8","name":"level","type":"uint8"}],"name":"usersActiveLevels","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"uint8","name":"level","type":"uint8"}],"name":"usersMatrix","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address[]","name":"","type":"address[]"},{"internalType":"address[]","name":"","type":"address[]"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"}]

608060405260048054600160a81b600160a01b60ff60a01b19928316811760ff60a81b19169190911790925560068054735284d793542815354b9604f06df14f157be904626001600160a01b03199182161791829055600780546001600160a01b03909316929091169190911790911690911790556969e10de76676d0800000600855600060098190556802b5e3af16b1880000600a55674563918244f40000600b556064600c556103e8600d55600e805460ff191660011790556015819055601655348015620000cf57600080fd5b50604051620037e3380380620037e383398181016040526020811015620000f557600080fd5b50516001600052600560205266b1a2bc2ec500007f1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b5560025b600a60ff8216116200016a5760ff600019820181166000908152600560205260408082205492841682529020600290910290556001016200012e565b50600280546001600160a01b0383166001600160a01b031991821681179092556004805482169092179091556003805490911633179055620001ab62000423565b50604080518082018252600080825260208083018281526001600160a01b0386811684529183905293909120825181546001600160a01b03191692169190911781559151600192830155905b600a60ff8216116200023f576001600160a01b03831660009081526020818152604080832060ff851684526002019091529020805460ff1916600190811790915501620001f7565b506001600160a01b038281166000908152600160208190526040909120805460ff19169091179055600f8054737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0319918216179182905560108054929093169116179055600e8054610100600160a81b03191674cd3f2db9551e83161a0031f8a9272a0b4795e40e00179055620002de6c0c9f2c9cd038943736989c0000620002e6565b50506200043a565b600654600f54604080516001600160a01b039283166024820152604480820186905282518083039091018152606490910182526020810180516001600160e01b031663095ea7b360e01b178152915181516000959490941693919290918291908083835b602083106200036b5780518252601f1990920191602091820191016200034a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114620003cf576040519150601f19603f3d011682016040523d82523d6000602084013e620003d4565b606091505b505080915050806200041f576040805162461bcd60e51b815260206004820152600f60248201526e617070726f7665206661696c65642160881b604482015290519081900360640190fd5b5050565b604080518082019091526000808252602082015290565b613399806200044a6000396000f3fe6080604052600436106103195760003560e01c806385c5efe4116101ab578063aa2ccffc116100f7578063de272cbd11610095578063ecabdf791161006f578063ecabdf7914610c3d578063f686f76d14610c6a578063fcfff16f14610c7f578063fd99e63214610c9457610319565b8063de272cbd14610b0c578063e39a36ef14610b21578063eb75bf6f14610c2857610319565b8063b94e923b116100d1578063b94e923b14610a3d578063ba7d50db14610a52578063c670df6714610a67578063db9a872914610aa057610319565b8063aa2ccffc1461099b578063ad29ce84146109d7578063b032ebe914610a0a57610319565b8063974f252411610164578063a61f28ae1161013e578063a61f28ae146108c1578063a67d72b0146108fd578063a7e257d214610912578063a87430ba1461094557610319565b8063974f252414610836578063a45e0fbb14610862578063a55a53941461089557610319565b806385c5efe414610700578063876cb2171461073c5780638a210bf91461075c5780638b152bc9146107865780638ee4cfca146107c25780638eea08dc146107fb57610319565b806334a924091161026a57806355bb60eb11610223578063801aba56116101fd578063801aba56146106ac578063819826cf146106c1578063839bf1b6146106d657806385167ad2146106eb57610319565b806355bb60eb1461063e5780636a2e0c1c14610653578063797eee241461068657610319565b806334a924091461051557806337628de81461052a57806340b5c8751461056957806345e792351461059c5780634d08ed97146105d8578063509222cd1461060b57610319565b806323efeb12116102d757806329c70400116102b157806329c70400146104765780632d5ad7a9146104a15780632fcaaa76146104b657806330247469146104e257610319565b806323efeb12146104375780632681f7e41461044c5780632966b0f91461046157610319565b806296f46a1461031b57806303b8283d1461034457806308f62349146103775780630dd09200146103b3578063128a8b05146103df5780631de97f0214610410575b005b34801561032757600080fd5b50610330610ca9565b604080519115158252519081900360200190f35b34801561035057600080fd5b506103196004803603602081101561036757600080fd5b50356001600160a01b0316610cb2565b34801561038357600080fd5b506103306004803603604081101561039a57600080fd5b5080356001600160a01b0316906020013560ff16610d30565b3480156103bf57600080fd5b50610319600480360360208110156103d657600080fd5b50351515610dcd565b3480156103eb57600080fd5b506103f4610e3a565b604080516001600160a01b039092168252519081900360200190f35b34801561041c57600080fd5b50610425610e49565b60408051918252519081900360200190f35b34801561044357600080fd5b50610425610e50565b34801561045857600080fd5b506103f4610e56565b34801561046d57600080fd5b50610425610e65565b34801561048257600080fd5b5061048b610e6b565b6040805160ff9092168252519081900360200190f35b3480156104ad57600080fd5b506103f4610e70565b3480156104c257600080fd5b50610319600480360360208110156104d957600080fd5b50351515610e7f565b3480156104ee57600080fd5b506104256004803603602081101561050557600080fd5b50356001600160a01b0316610ee1565b34801561052157600080fd5b50610425610f11565b34801561053657600080fd5b506104256004803603606081101561054d57600080fd5b506001600160a01b038135169060208101359060400135610f17565b34801561057557600080fd5b506104256004803603602081101561058c57600080fd5b50356001600160a01b0316610f3a565b3480156105a857600080fd5b50610425600480360360408110156105bf57600080fd5b5080356001600160a01b0316906020013560ff16610f4c565b3480156105e457600080fd5b50610330600480360360208110156105fb57600080fd5b50356001600160a01b0316610f82565b34801561061757600080fd5b506103306004803603602081101561062e57600080fd5b50356001600160a01b0316610f97565b34801561064a57600080fd5b50610425610fb5565b34801561065f57600080fd5b506103196004803603602081101561067657600080fd5b50356001600160a01b0316611080565b6103196004803603602081101561069c57600080fd5b50356001600160a01b03166110f7565b3480156106b857600080fd5b506103196111b9565b3480156106cd57600080fd5b506103f461122e565b3480156106e257600080fd5b5061042561123d565b3480156106f757600080fd5b50610425611243565b34801561070c57600080fd5b506103f46004803603604081101561072357600080fd5b5080356001600160a01b0316906020013560ff16611249565b6103196004803603602081101561075257600080fd5b503560ff166112f3565b34801561076857600080fd5b506103196004803603602081101561077f57600080fd5b5035611702565b34801561079257600080fd5b50610425600480360360408110156107a957600080fd5b5080356001600160a01b0316906020013560ff1661175a565b3480156107ce57600080fd5b50610425600480360360408110156107e557600080fd5b506001600160a01b038135169060200135611790565b34801561080757600080fd5b506103196004803603604081101561081e57600080fd5b506001600160a01b03813581169160200135166117ad565b34801561084257600080fd5b506103196004803603602081101561085957600080fd5b50351515611961565b34801561086e57600080fd5b506103196004803603602081101561088557600080fd5b50356001600160a01b03166119ce565b3480156108a157600080fd5b50610319600480360360208110156108b857600080fd5b50351515611a3f565b3480156108cd57600080fd5b50610330600480360360408110156108e457600080fd5b5080356001600160a01b0316906020013560ff16611aac565b34801561090957600080fd5b50610330611adb565b34801561091e57600080fd5b506103196004803603602081101561093557600080fd5b50356001600160a01b0316611aeb565b34801561095157600080fd5b506109786004803603602081101561096857600080fd5b50356001600160a01b0316611b9e565b604080516001600160a01b03909316835260208301919091528051918290030190f35b3480156109a757600080fd5b50610425600480360360408110156109be57600080fd5b5080356001600160a01b0316906020013560ff16611bc3565b3480156109e357600080fd5b50610319600480360360208110156109fa57600080fd5b50356001600160a01b0316611bf0565b348015610a1657600080fd5b5061042560048036036020811015610a2d57600080fd5b50356001600160a01b0316611c61565b348015610a4957600080fd5b50610425611c7c565b348015610a5e57600080fd5b50610330611c82565b348015610a7357600080fd5b5061042560048036036040811015610a8a57600080fd5b506001600160a01b038135169060200135611c92565b348015610aac57600080fd5b50610af3600480360360c0811015610ac357600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135611caf565b6040805192835260208301919091528051918290030190f35b348015610b1857600080fd5b50610425611db3565b348015610b2d57600080fd5b50610b5d60048036036040811015610b4457600080fd5b5080356001600160a01b0316906020013560ff16611db9565b60405180876001600160a01b03166001600160a01b03168152602001806020018060200186151515158152602001858152602001848152602001838103835288818151815260200191508051906020019060200280838360005b83811015610bcf578181015183820152602001610bb7565b50505050905001838103825287818151815260200191508051906020019060200280838360005b83811015610c0e578181015183820152602001610bf6565b505050509050019850505050505050505060405180910390f35b348015610c3457600080fd5b50610425611edc565b348015610c4957600080fd5b5061042560048036036020811015610c6057600080fd5b503560ff16611ee2565b348015610c7657600080fd5b506103f4611ef4565b348015610c8b57600080fd5b50610330611f03565b348015610ca057600080fd5b50610425611f13565b600e5460ff1681565b6003546001600160a01b03163314610d01576040805162461bcd60e51b815260206004820152600d60248201526c3932b8bab4b9329037bbb732b960991b604482015290519081900360640190fd5b600680546001600160a01b03199081166001600160a01b03938416179182905560078054929093169116179055565b600754604080516370a0823160e01b81526001600160a01b0385811660048301529151600093849316916370a08231916024808301926020929190829003018186803b158015610d7f57600080fd5b505afa158015610d93573d6000803e3d6000fd5b505050506040513d6020811015610da957600080fd5b505160ff84166000908152600560205260409020546103e802119150505b92915050565b6003546001600160a01b03163314610e1c576040805162461bcd60e51b815260206004820152600d60248201526c3932b8bab4b9329037bbb732b960991b604482015290519081900360640190fd5b60078054911515600160a01b0260ff60a01b19909216919091179055565b600f546001600160a01b031681565b6015545b90565b60085481565b6010546001600160a01b031681565b60095481565b600a81565b6002546001600160a01b031681565b6003546001600160a01b03163314610ece576040805162461bcd60e51b815260206004820152600d60248201526c3932b8bab4b9329037bbb732b960991b604482015290519081900360640190fd5b600e805460ff1916911515919091179055565b6001600160a01b031660009081526012602090815260408083206002845290915280822054600183529120540190565b600d5481565b601160209081526000938452604080852082529284528284209052825290205481565b60146020526000908152604090205481565b6001600160a01b038216600090815260116020908152604080832060028452825280832060ff8516845290915290205492915050565b60016020526000908152604090205460ff1681565b6001600160a01b031660009081526001602052604090205460ff1690565b60006a084595161401484a0000006015541015610fd557506103e8610e4d565b6a084595161401484a00000060155410158015610ffe57506a0c685fa11e01ec6f000000601554105b1561100c57506101f4610e4d565b6a0c685fa11e01ec6f0000006015541015801561103557506a0e79c4e6a3023e81800000601554105b15611042575060fa610e4d565b6a0e79c4e6a3023e818000006015541015801561106b57506a16bf59fcb70386cb800000601554105b156110785750607d610e4d565b506000610e4d565b6003546001600160a01b031633146110cf576040805162461bcd60e51b815260206004820152600d60248201526c3932b8bab4b9329037bbb732b960991b604482015290519081900360640190fd5b600e80546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600454600160a01b900460ff1615611156576040805162461bcd60e51b815260206004820152601f60248201527f63616e206e6f742072656769737420696e2061697264726f7050686173652100604482015290519081900360640190fd5b3466b1a2bc2ec50000146111aa576040805162461bcd60e51b8152602060048201526016602482015275726567697374726174696f6e20636f737420302e303560501b604482015290519081900360640190fd5b6111b633826000611f19565b50565b6003546001600160a01b03163314611208576040805162461bcd60e51b815260206004820152600d60248201526c3932b8bab4b9329037bbb732b960991b604482015290519081900360640190fd5b60405133904780156108fc02916000818181858888f1935050505061122c57600080fd5b565b6006546001600160a01b031681565b60165481565b600a5481565b6000805b60028160ff16111561126c5750506004546001600160a01b0316610dc7565b6001600160a01b0380851660009081526020818152604080832054909316825282822060ff808816845260029091019091529190205460019092019116156112d05750506001600160a01b0380831660009081526020819052604090205416610dc7565b6001600160a01b039384166000908152602081905260409020549093169261124d565b600754600160a01b900460ff16611341576040805162461bcd60e51b815260206004820152600d60248201526c686173206e6f74206f70656e2160981b604482015290519081900360640190fd5b600454600160a01b900460ff16156113a0576040805162461bcd60e51b815260206004820152601f60248201527f63616e206e6f742072656769737420696e2061697264726f7050686173652100604482015290519081900360640190fd5b6113a933610f97565b6113e45760405162461bcd60e51b81526004018080602001828103825260238152602001806133006023913960400191505060405180910390fd5b60ff8116600090815260056020526040902054341461143a576040805162461bcd60e51b815260206004820152600d60248201526c696e76616c696420707269636560981b604482015290519081900360640190fd5b60018160ff16101580156114525750600a60ff821611155b611493576040805162461bcd60e51b815260206004820152600d60248201526c1a5b9d985b1a59081b195d995b609a1b604482015290519081900360640190fd5b3360009081526020818152604080832060ff80861685526002909101909252909120541615611509576040805162461bcd60e51b815260206004820152601760248201527f6c6576656c20616c726561647920616374697661746564000000000000000000604482015290519081900360640190fd5b3360009081526020818152604080832060ff60001986018116855260039182019093529220909101541615611567573360009081526020818152604080832060ff6000198601168452600390810190925290912001805460ff191690555b6007546040805162433c3760e11b815233600482015290516001600160a01b03909216916286786e91602480820192602092909190829003018186803b1580156115b057600080fd5b505afa1580156115c4573d6000803e3d6000fd5b505050506040513d60208110156115da57600080fd5b50511561164657600754604080516329bef9db60e11b815233600482015290516001600160a01b039092169163537df3b69160248082019260009290919082900301818387803b15801561162d57600080fd5b505af1158015611641573d6000803e3d6000fd5b505050505b60006116523383611249565b3360008181526020818152604080832060ff8816845260038101835281842080546001600160a01b0319166001600160a01b0388161790556002019091529020805460ff191660011790559091506116ab90828461232e565b6016805434019055604080516001815260ff8416602082015281516001600160a01b0384169233927f18a92df19fd94d6cfff209966673a5ca05a1c8e2bb68e097fce2bdc2ed811119929081900390910190a35050565b6003546001600160a01b03163314611751576040805162461bcd60e51b815260206004820152600d60248201526c3932b8bab4b9329037bbb732b960991b604482015290519081900360640190fd5b6111b681612806565b6001600160a01b038216600090815260116020908152604080832060018452825280832060ff8516845290915290205492915050565b601360209081526000928352604080842090915290825290205481565b6003546001600160a01b031633146117fc576040805162461bcd60e51b815260206004820152600d60248201526c3932b8bab4b9329037bbb732b960991b604482015290519081900360640190fd5b60015b600a60ff821611611879576001600160a01b0383811660009081526020818152604080832060ff861684526002810183528184208054600160ff1990911681179091556003909101835281842080546001600160a01b031916958816959095179094556005909152902054601680549091019055016117ff565b506007546040805162433c3760e11b81526001600160a01b038581166004830152915191909216916286786e916024808301926020929190829003018186803b1580156118c557600080fd5b505afa1580156118d9573d6000803e3d6000fd5b505050506040513d60208110156118ef57600080fd5b50511561195d57600754604080516329bef9db60e11b81526001600160a01b0385811660048301529151919092169163537df3b691602480830192600092919082900301818387803b15801561194457600080fd5b505af1158015611958573d6000803e3d6000fd5b505050505b5050565b6003546001600160a01b031633146119b0576040805162461bcd60e51b815260206004820152600d60248201526c3932b8bab4b9329037bbb732b960991b604482015290519081900360640190fd5b60048054911515600160a81b0260ff60a81b19909216919091179055565b6003546001600160a01b03163314611a1d576040805162461bcd60e51b815260206004820152600d60248201526c3932b8bab4b9329037bbb732b960991b604482015290519081900360640190fd5b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6003546001600160a01b03163314611a8e576040805162461bcd60e51b815260206004820152600d60248201526c3932b8bab4b9329037bbb732b960991b604482015290519081900360640190fd5b60048054911515600160a01b0260ff60a01b19909216919091179055565b6001600160a01b039190911660009081526020818152604080832060ff94851684526002019091529020541690565b600454600160a01b900460ff1681565b600454600160a01b900460ff16611b335760405162461bcd60e51b81526004018080602001828103825260288152602001806132d86028913960400191505060405180910390fd5b600854600b54600a5460095401011115611b7e5760405162461bcd60e51b81526004018080602001828103825260428152602001806133236042913960600191505060405180910390fd5b611b8a33826001611f19565b600b54600a54600954010160098190555050565b600060208190529081526040902080546001909101546001600160a01b039091169082565b6001600160a01b038216600090815260136020908152604080832060ff8516845290915290205492915050565b6003546001600160a01b03163314611c3f576040805162461bcd60e51b815260206004820152600d60248201526c3932b8bab4b9329037bbb732b960991b604482015290519081900360640190fd5b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b031660009081526014602052604090205490565b60165490565b600454600160a81b900460ff1681565b601260209081526000928352604080842090915290825290205481565b60035460009081906001600160a01b03163314611d03576040805162461bcd60e51b815260206004820152600d60248201526c3932b8bab4b9329037bbb732b960991b604482015290519081900360640190fd5b60105460408051629d473b60e21b81526001600160a01b038b81166004830152602482018b9052604482018a905260648201899052878116608483015260a4820187905282519316926302751cec9260c4808401939192918290030181600087803b158015611d7157600080fd5b505af1158015611d85573d6000803e3d6000fd5b505050506040513d6040811015611d9b57600080fd5b50805160209091015190999098509650505050505050565b60155481565b6001600160a01b0382811660009081526020818152604080832060ff868116855260039182018452828520805492810154600482015460058301546001840180548851818b0281018b01909952808952999a60609a8b9a8d9a8b9a8b9a9416989497600290950196949093169492918791830182828015611e6357602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611e45575b5050505050945083805480602002602001604051908101604052809291908181526020018280548015611ebf57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611ea1575b505050505093509550955095509550955095509295509295509295565b600b5481565b60056020526000908152604090205481565b6007546001600160a01b031681565b600754600160a01b900460ff1681565b600c5481565b600754600160a01b900460ff16611f67576040805162461bcd60e51b815260206004820152600d60248201526c686173206e6f74206f70656e2160981b604482015290519081900360640190fd5b611f7083610f97565b15611fb0576040805162461bcd60e51b815260206004820152600b60248201526a757365722065786973747360a81b604482015290519081900360640190fd5b611fb982610f97565b612000576040805162461bcd60e51b81526020600482015260136024820152727265666572726572206e6f742065786973747360681b604482015290519081900360640190fd5b823b63ffffffff811615612052576040805162461bcd60e51b815260206004820152601460248201527318d85b9b9bdd08189948184818dbdb9d1c9858dd60621b604482015290519081900360640190fd5b61205a613237565b506040805180820182526001600160a01b03808616808352600060208085018281528a851683529082905285822085518154925160018084019190915595166001600160a01b031992831617909116831790559081529290922082018054909201909155821561224e57600454600160a81b900460ff161561224957600754600a54604080516340c10f1960e01b81526001600160a01b0389811660048301526024820193909352905191909216916340c10f199160448083019260209291908290030181600087803b15801561213057600080fd5b505af1158015612144573d6000803e3d6000fd5b505050506040513d602081101561215a57600080fd5b50506007546040805163bb77b16f60e01b81526001600160a01b0388811660048301529151919092169163bb77b16f91602480830192600092919082900301818387803b1580156121aa57600080fd5b505af11580156121be573d6000803e3d6000fd5b5050600754600b54604080516340c10f1960e01b81526001600160a01b038a81166004830152602482019390935290519190921693506340c10f19925060448083019260209291908290030181600087803b15801561221c57600080fd5b505af1158015612230573d6000803e3d6000fd5b505050506040513d602081101561224657600080fd5b50505b6122bd565b600061225b866001611249565b6001600160a01b03878116600090815260208181526040808320600180855260038201845282852080546001600160a01b031916968816969096179095556002019091529020805460ff1916821790559091506122bb908790839061232e565b505b6001600160a01b03808616600081815260016020818152604092839020805460ff19169092179091556016805434019055815193881680855291519293919284927f0d8758c12ea412599670f538cb3743d26051486b4e68ae4c3504b908a2c5d4ae92908290030190a45050505050565b6001600160a01b0382811660009081526020818152604080832060ff86168085526003909101835290832060019081018054808301825581865293852090930180546001600160a01b031916958916959095179094559091525414806123a157506002546001600160a01b038381169116145b156124245760408051600180825260ff841660208301528183015290516001600160a01b0380851692908616917f68062c5925c4317adf3a7095478d28b33fd8b41458bc7620b61bc46bf1b24d829181900360600190a361241f8284600184600560008760ff1660ff1681526020019081526020016000205461293a565b612801565b6001600160a01b03821660009081526020818152604080832060ff851684526003019091529020600101546002141561250b57604080516001815260ff8316602082015260028183015290516001600160a01b0380851692908616917f68062c5925c4317adf3a7095478d28b33fd8b41458bc7620b61bc46bf1b24d829181900360600190a360ff8116600090815260056020526040902054600290046124cf83856001858561293a565b60006124db8484611249565b905061250484828585600560008960ff1660ff1681526020019081526020016000205403612a59565b5050612801565b6001600160a01b03821660009081526020818152604080832060ff85168452600390810190925290912060010154141561280157604080516001815260ff8316602082015260038183015290516001600160a01b0380851692908616917f68062c5925c4317adf3a7095478d28b33fd8b41458bc7620b61bc46bf1b24d829181900360600190a360408051600080825260208083018085526001600160a01b038716835282825284832060ff8716845260030190915292902090516125d6926001909201919061324e565b5060ff8116600090815260056020526040902054600290046125fc83856001858561293a565b6001600160a01b03831660009081526020818152604080832060ff60018701811685526002909101909252909120541615801561263d575060ff8216600a14155b15612679576001600160a01b03831660009081526020818152604080832060ff86168452600390810190925290912001805460ff191660011790555b60ff808316600090815260056020526040902054600e54908390039116156126c157600c54600282049081026126af8282612d04565b6126ba828403612ee7565b5050612729565b6003546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050612729576003546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015612727573d6000803e3d6000fd5b505b6000612733610fb5565b600754604080516340c10f1960e01b81526001600160a01b03898116600483015293860260248201819052915191945092909116916340c10f199160448083019260209291908290030181600087803b15801561278f57600080fd5b505af11580156127a3573d6000803e3d6000fd5b505050506040513d60208110156127b957600080fd5b50506001600160a01b038516600081815260136020908152604080832060ff891684528252808320805486019055928252601490522080548201905560158054909101905550505b505050565b600654600f54604080516001600160a01b039283166024820152604480820186905282518083039091018152606490910182526020810180516001600160e01b031663095ea7b360e01b178152915181516000959490941693919290918291908083835b602083106128895780518252601f19909201916020918201910161286a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146128eb576040519150601f19603f3d011682016040523d82523d6000602084013e6128f0565b606091505b5050809150508061195d576040805162461bcd60e51b815260206004820152600f60248201526e617070726f7665206661696c65642160881b604482015290519081900360640190fd5b600080612948878786613189565b6001600160a01b038216600081815260116020908152604080832060ff8c8116808652918452828520908c168552835281842080548b0190558484526012835281842090845290915280822080548901905551939550919350916108fc86150291869190818181858888f193505050506129f9576040516001600160a01b038316904780156108fc02916000818181858888f193505050501580156129f1573d6000803e3d6000fd5b505050612a52565b8015612a4f576040805160ff80881682528616602082015281516001600160a01b0380861693908a16927ff0ddc65c0d411f042f723dcfa1b7d13e85a35b7b70761d447c6500411cacf328929081900390910190a35b50505b5050505050565b6001600160a01b0383811660008181526020818152604080832060ff881684526003018252822060029081018054600181018255908452919092200180546001600160a01b031916888516179055549091161415612ac457612abf83856002858561293a565b612ba9565b6001600160a01b03831660009081526020818152604080832060ff861684526003019091529020600201546001148015612b055750612b038383610d30565b155b15612b1857612abf83856002858561293a565b6001600160a01b03831660009081526020818152604080832060ff861684526003019091529020600201546001148015612b7a57506001600160a01b03831660009081526020818152604080832060ff86168452600301909152902060040154155b15612b8d57612abf83856002858561293a565b6000612b998484611249565b9050612ba784828585612a59565b505b6001600160a01b03831660009081526020818152604080832060ff861684526003019091529020600201546001148015612c0c57506001600160a01b03831660009081526020818152604080832060ff8616845260030190915290206004015415155b8015612c1d5750612c1d8383610d30565b15612c7257604080516002815260ff8416602082015281516001600160a01b03808816938493918816927f339330e0afe2658d8446e7e8a95fa3544bb5185a9395c5b01c6a1651865b058b9281900390910190a45b6001600160a01b03831660009081526020818152604080832060ff8616845260030190915290206002908101541415612cfe576001600160a01b03831660009081526020818152604080832060ff861680855260039091018084528285206004810180546001019055835186815280860194859052929095529092529051612a5292600201919061324e565b50505050565b600754604080516340c10f1960e01b81523060048201526024810184905290516001600160a01b03909216916340c10f19916044808201926020929091908290030181600087803b158015612d5857600080fd5b505af1158015612d6c573d6000803e3d6000fd5b505050506040513d6020811015612d8257600080fd5b5050600f54600654600e54604080516001600160a01b0393841660248201526044810186905260006064820181905260848201819052610100909304841660a48201524260c4808301919091528251808303909101815260e490910182526020810180516001600160e01b031663f305d71960e01b17815291518151939594909416938793919290918291908083835b60208310612e315780518252601f199092019160209182019101612e12565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114612e93576040519150601f19603f3d011682016040523d82523d6000602084013e612e98565b606091505b50508091505080612801576040805162461bcd60e51b81526020600482015260146024820152736164644c6971756964697479206661696c65642160601b604482015290519081900360640190fd5b60408051600280825260608083018452600093909291906020830190803883395050601054604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b158015612f5157600080fd5b505afa158015612f65573d6000803e3d6000fd5b505050506040513d6020811015612f7b57600080fd5b505181518290600090612f8a57fe5b6001600160a01b039283166020918202929092010152600654825191169082906001908110612fb557fe5b60200260200101906001600160a01b031690816001600160a01b031681525050600f60009054906101000a90046001600160a01b03166001600160a01b0316836000833042604051602401808560ff16815260200180602001846001600160a01b03166001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561306457818101518382015260200161304c565b5050505090500195505050505050604051602081830303815290604052637ff36ab560e01b6001600160e01b0319166020820180516001600160e01b0383818316178352505050506040518082805190602001908083835b602083106130db5780518252601f1990920191602091820191016130bc565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461313d576040519150601f19603f3d011682016040523d82523d6000602084013e613142565b606091505b50508092505081612801576040805162461bcd60e51b815260206004820152600c60248201526b73776170206661696c65642160a01b604482015290519081900360640190fd5b6001600160a01b03831660009081526020818152604080832060ff808616855260039182019093529083200154829186918391161561322957604080516001815260ff8716602082015281516001600160a01b03808a1693908616927ffc0cb63f8dbd6b20ceb84a3c5358a41576a1479e6ecd040b4b985525dc09a709929081900390910190a350506003546001600160a01b031691506001905061322f565b90925090505b935093915050565b604080518082019091526000808252602082015290565b8280548282559060005260206000209081019282156132a3579160200282015b828111156132a357825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019061326e565b506132af9291506132b3565b5090565b610e4d91905b808211156132af5780546001600160a01b03191681556001016132b956fe63616e206e6f74206765742061697264726f7020696e206e6f742061697264726f7050686173652175736572206973206e6f74206578697374732e2052656769737465722066697273742e68617341697264726f70416d6f756e742b70657241697264726f702b70657241697264726f70466f7252656665727265723e6d617841697264726f70416d6f756e74a265627a7a72315820d34878f79fbef641e1c29102b1532bf9e7fa5cd151566b48adab025c8facfc7164736f6c63430005110032000000000000000000000000b4ddb836bde4165e60b72f72bfb2630a25b607c8

Deployed Bytecode

0x6080604052600436106103195760003560e01c806385c5efe4116101ab578063aa2ccffc116100f7578063de272cbd11610095578063ecabdf791161006f578063ecabdf7914610c3d578063f686f76d14610c6a578063fcfff16f14610c7f578063fd99e63214610c9457610319565b8063de272cbd14610b0c578063e39a36ef14610b21578063eb75bf6f14610c2857610319565b8063b94e923b116100d1578063b94e923b14610a3d578063ba7d50db14610a52578063c670df6714610a67578063db9a872914610aa057610319565b8063aa2ccffc1461099b578063ad29ce84146109d7578063b032ebe914610a0a57610319565b8063974f252411610164578063a61f28ae1161013e578063a61f28ae146108c1578063a67d72b0146108fd578063a7e257d214610912578063a87430ba1461094557610319565b8063974f252414610836578063a45e0fbb14610862578063a55a53941461089557610319565b806385c5efe414610700578063876cb2171461073c5780638a210bf91461075c5780638b152bc9146107865780638ee4cfca146107c25780638eea08dc146107fb57610319565b806334a924091161026a57806355bb60eb11610223578063801aba56116101fd578063801aba56146106ac578063819826cf146106c1578063839bf1b6146106d657806385167ad2146106eb57610319565b806355bb60eb1461063e5780636a2e0c1c14610653578063797eee241461068657610319565b806334a924091461051557806337628de81461052a57806340b5c8751461056957806345e792351461059c5780634d08ed97146105d8578063509222cd1461060b57610319565b806323efeb12116102d757806329c70400116102b157806329c70400146104765780632d5ad7a9146104a15780632fcaaa76146104b657806330247469146104e257610319565b806323efeb12146104375780632681f7e41461044c5780632966b0f91461046157610319565b806296f46a1461031b57806303b8283d1461034457806308f62349146103775780630dd09200146103b3578063128a8b05146103df5780631de97f0214610410575b005b34801561032757600080fd5b50610330610ca9565b604080519115158252519081900360200190f35b34801561035057600080fd5b506103196004803603602081101561036757600080fd5b50356001600160a01b0316610cb2565b34801561038357600080fd5b506103306004803603604081101561039a57600080fd5b5080356001600160a01b0316906020013560ff16610d30565b3480156103bf57600080fd5b50610319600480360360208110156103d657600080fd5b50351515610dcd565b3480156103eb57600080fd5b506103f4610e3a565b604080516001600160a01b039092168252519081900360200190f35b34801561041c57600080fd5b50610425610e49565b60408051918252519081900360200190f35b34801561044357600080fd5b50610425610e50565b34801561045857600080fd5b506103f4610e56565b34801561046d57600080fd5b50610425610e65565b34801561048257600080fd5b5061048b610e6b565b6040805160ff9092168252519081900360200190f35b3480156104ad57600080fd5b506103f4610e70565b3480156104c257600080fd5b50610319600480360360208110156104d957600080fd5b50351515610e7f565b3480156104ee57600080fd5b506104256004803603602081101561050557600080fd5b50356001600160a01b0316610ee1565b34801561052157600080fd5b50610425610f11565b34801561053657600080fd5b506104256004803603606081101561054d57600080fd5b506001600160a01b038135169060208101359060400135610f17565b34801561057557600080fd5b506104256004803603602081101561058c57600080fd5b50356001600160a01b0316610f3a565b3480156105a857600080fd5b50610425600480360360408110156105bf57600080fd5b5080356001600160a01b0316906020013560ff16610f4c565b3480156105e457600080fd5b50610330600480360360208110156105fb57600080fd5b50356001600160a01b0316610f82565b34801561061757600080fd5b506103306004803603602081101561062e57600080fd5b50356001600160a01b0316610f97565b34801561064a57600080fd5b50610425610fb5565b34801561065f57600080fd5b506103196004803603602081101561067657600080fd5b50356001600160a01b0316611080565b6103196004803603602081101561069c57600080fd5b50356001600160a01b03166110f7565b3480156106b857600080fd5b506103196111b9565b3480156106cd57600080fd5b506103f461122e565b3480156106e257600080fd5b5061042561123d565b3480156106f757600080fd5b50610425611243565b34801561070c57600080fd5b506103f46004803603604081101561072357600080fd5b5080356001600160a01b0316906020013560ff16611249565b6103196004803603602081101561075257600080fd5b503560ff166112f3565b34801561076857600080fd5b506103196004803603602081101561077f57600080fd5b5035611702565b34801561079257600080fd5b50610425600480360360408110156107a957600080fd5b5080356001600160a01b0316906020013560ff1661175a565b3480156107ce57600080fd5b50610425600480360360408110156107e557600080fd5b506001600160a01b038135169060200135611790565b34801561080757600080fd5b506103196004803603604081101561081e57600080fd5b506001600160a01b03813581169160200135166117ad565b34801561084257600080fd5b506103196004803603602081101561085957600080fd5b50351515611961565b34801561086e57600080fd5b506103196004803603602081101561088557600080fd5b50356001600160a01b03166119ce565b3480156108a157600080fd5b50610319600480360360208110156108b857600080fd5b50351515611a3f565b3480156108cd57600080fd5b50610330600480360360408110156108e457600080fd5b5080356001600160a01b0316906020013560ff16611aac565b34801561090957600080fd5b50610330611adb565b34801561091e57600080fd5b506103196004803603602081101561093557600080fd5b50356001600160a01b0316611aeb565b34801561095157600080fd5b506109786004803603602081101561096857600080fd5b50356001600160a01b0316611b9e565b604080516001600160a01b03909316835260208301919091528051918290030190f35b3480156109a757600080fd5b50610425600480360360408110156109be57600080fd5b5080356001600160a01b0316906020013560ff16611bc3565b3480156109e357600080fd5b50610319600480360360208110156109fa57600080fd5b50356001600160a01b0316611bf0565b348015610a1657600080fd5b5061042560048036036020811015610a2d57600080fd5b50356001600160a01b0316611c61565b348015610a4957600080fd5b50610425611c7c565b348015610a5e57600080fd5b50610330611c82565b348015610a7357600080fd5b5061042560048036036040811015610a8a57600080fd5b506001600160a01b038135169060200135611c92565b348015610aac57600080fd5b50610af3600480360360c0811015610ac357600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135611caf565b6040805192835260208301919091528051918290030190f35b348015610b1857600080fd5b50610425611db3565b348015610b2d57600080fd5b50610b5d60048036036040811015610b4457600080fd5b5080356001600160a01b0316906020013560ff16611db9565b60405180876001600160a01b03166001600160a01b03168152602001806020018060200186151515158152602001858152602001848152602001838103835288818151815260200191508051906020019060200280838360005b83811015610bcf578181015183820152602001610bb7565b50505050905001838103825287818151815260200191508051906020019060200280838360005b83811015610c0e578181015183820152602001610bf6565b505050509050019850505050505050505060405180910390f35b348015610c3457600080fd5b50610425611edc565b348015610c4957600080fd5b5061042560048036036020811015610c6057600080fd5b503560ff16611ee2565b348015610c7657600080fd5b506103f4611ef4565b348015610c8b57600080fd5b50610330611f03565b348015610ca057600080fd5b50610425611f13565b600e5460ff1681565b6003546001600160a01b03163314610d01576040805162461bcd60e51b815260206004820152600d60248201526c3932b8bab4b9329037bbb732b960991b604482015290519081900360640190fd5b600680546001600160a01b03199081166001600160a01b03938416179182905560078054929093169116179055565b600754604080516370a0823160e01b81526001600160a01b0385811660048301529151600093849316916370a08231916024808301926020929190829003018186803b158015610d7f57600080fd5b505afa158015610d93573d6000803e3d6000fd5b505050506040513d6020811015610da957600080fd5b505160ff84166000908152600560205260409020546103e802119150505b92915050565b6003546001600160a01b03163314610e1c576040805162461bcd60e51b815260206004820152600d60248201526c3932b8bab4b9329037bbb732b960991b604482015290519081900360640190fd5b60078054911515600160a01b0260ff60a01b19909216919091179055565b600f546001600160a01b031681565b6015545b90565b60085481565b6010546001600160a01b031681565b60095481565b600a81565b6002546001600160a01b031681565b6003546001600160a01b03163314610ece576040805162461bcd60e51b815260206004820152600d60248201526c3932b8bab4b9329037bbb732b960991b604482015290519081900360640190fd5b600e805460ff1916911515919091179055565b6001600160a01b031660009081526012602090815260408083206002845290915280822054600183529120540190565b600d5481565b601160209081526000938452604080852082529284528284209052825290205481565b60146020526000908152604090205481565b6001600160a01b038216600090815260116020908152604080832060028452825280832060ff8516845290915290205492915050565b60016020526000908152604090205460ff1681565b6001600160a01b031660009081526001602052604090205460ff1690565b60006a084595161401484a0000006015541015610fd557506103e8610e4d565b6a084595161401484a00000060155410158015610ffe57506a0c685fa11e01ec6f000000601554105b1561100c57506101f4610e4d565b6a0c685fa11e01ec6f0000006015541015801561103557506a0e79c4e6a3023e81800000601554105b15611042575060fa610e4d565b6a0e79c4e6a3023e818000006015541015801561106b57506a16bf59fcb70386cb800000601554105b156110785750607d610e4d565b506000610e4d565b6003546001600160a01b031633146110cf576040805162461bcd60e51b815260206004820152600d60248201526c3932b8bab4b9329037bbb732b960991b604482015290519081900360640190fd5b600e80546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600454600160a01b900460ff1615611156576040805162461bcd60e51b815260206004820152601f60248201527f63616e206e6f742072656769737420696e2061697264726f7050686173652100604482015290519081900360640190fd5b3466b1a2bc2ec50000146111aa576040805162461bcd60e51b8152602060048201526016602482015275726567697374726174696f6e20636f737420302e303560501b604482015290519081900360640190fd5b6111b633826000611f19565b50565b6003546001600160a01b03163314611208576040805162461bcd60e51b815260206004820152600d60248201526c3932b8bab4b9329037bbb732b960991b604482015290519081900360640190fd5b60405133904780156108fc02916000818181858888f1935050505061122c57600080fd5b565b6006546001600160a01b031681565b60165481565b600a5481565b6000805b60028160ff16111561126c5750506004546001600160a01b0316610dc7565b6001600160a01b0380851660009081526020818152604080832054909316825282822060ff808816845260029091019091529190205460019092019116156112d05750506001600160a01b0380831660009081526020819052604090205416610dc7565b6001600160a01b039384166000908152602081905260409020549093169261124d565b600754600160a01b900460ff16611341576040805162461bcd60e51b815260206004820152600d60248201526c686173206e6f74206f70656e2160981b604482015290519081900360640190fd5b600454600160a01b900460ff16156113a0576040805162461bcd60e51b815260206004820152601f60248201527f63616e206e6f742072656769737420696e2061697264726f7050686173652100604482015290519081900360640190fd5b6113a933610f97565b6113e45760405162461bcd60e51b81526004018080602001828103825260238152602001806133006023913960400191505060405180910390fd5b60ff8116600090815260056020526040902054341461143a576040805162461bcd60e51b815260206004820152600d60248201526c696e76616c696420707269636560981b604482015290519081900360640190fd5b60018160ff16101580156114525750600a60ff821611155b611493576040805162461bcd60e51b815260206004820152600d60248201526c1a5b9d985b1a59081b195d995b609a1b604482015290519081900360640190fd5b3360009081526020818152604080832060ff80861685526002909101909252909120541615611509576040805162461bcd60e51b815260206004820152601760248201527f6c6576656c20616c726561647920616374697661746564000000000000000000604482015290519081900360640190fd5b3360009081526020818152604080832060ff60001986018116855260039182019093529220909101541615611567573360009081526020818152604080832060ff6000198601168452600390810190925290912001805460ff191690555b6007546040805162433c3760e11b815233600482015290516001600160a01b03909216916286786e91602480820192602092909190829003018186803b1580156115b057600080fd5b505afa1580156115c4573d6000803e3d6000fd5b505050506040513d60208110156115da57600080fd5b50511561164657600754604080516329bef9db60e11b815233600482015290516001600160a01b039092169163537df3b69160248082019260009290919082900301818387803b15801561162d57600080fd5b505af1158015611641573d6000803e3d6000fd5b505050505b60006116523383611249565b3360008181526020818152604080832060ff8816845260038101835281842080546001600160a01b0319166001600160a01b0388161790556002019091529020805460ff191660011790559091506116ab90828461232e565b6016805434019055604080516001815260ff8416602082015281516001600160a01b0384169233927f18a92df19fd94d6cfff209966673a5ca05a1c8e2bb68e097fce2bdc2ed811119929081900390910190a35050565b6003546001600160a01b03163314611751576040805162461bcd60e51b815260206004820152600d60248201526c3932b8bab4b9329037bbb732b960991b604482015290519081900360640190fd5b6111b681612806565b6001600160a01b038216600090815260116020908152604080832060018452825280832060ff8516845290915290205492915050565b601360209081526000928352604080842090915290825290205481565b6003546001600160a01b031633146117fc576040805162461bcd60e51b815260206004820152600d60248201526c3932b8bab4b9329037bbb732b960991b604482015290519081900360640190fd5b60015b600a60ff821611611879576001600160a01b0383811660009081526020818152604080832060ff861684526002810183528184208054600160ff1990911681179091556003909101835281842080546001600160a01b031916958816959095179094556005909152902054601680549091019055016117ff565b506007546040805162433c3760e11b81526001600160a01b038581166004830152915191909216916286786e916024808301926020929190829003018186803b1580156118c557600080fd5b505afa1580156118d9573d6000803e3d6000fd5b505050506040513d60208110156118ef57600080fd5b50511561195d57600754604080516329bef9db60e11b81526001600160a01b0385811660048301529151919092169163537df3b691602480830192600092919082900301818387803b15801561194457600080fd5b505af1158015611958573d6000803e3d6000fd5b505050505b5050565b6003546001600160a01b031633146119b0576040805162461bcd60e51b815260206004820152600d60248201526c3932b8bab4b9329037bbb732b960991b604482015290519081900360640190fd5b60048054911515600160a81b0260ff60a81b19909216919091179055565b6003546001600160a01b03163314611a1d576040805162461bcd60e51b815260206004820152600d60248201526c3932b8bab4b9329037bbb732b960991b604482015290519081900360640190fd5b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6003546001600160a01b03163314611a8e576040805162461bcd60e51b815260206004820152600d60248201526c3932b8bab4b9329037bbb732b960991b604482015290519081900360640190fd5b60048054911515600160a01b0260ff60a01b19909216919091179055565b6001600160a01b039190911660009081526020818152604080832060ff94851684526002019091529020541690565b600454600160a01b900460ff1681565b600454600160a01b900460ff16611b335760405162461bcd60e51b81526004018080602001828103825260288152602001806132d86028913960400191505060405180910390fd5b600854600b54600a5460095401011115611b7e5760405162461bcd60e51b81526004018080602001828103825260428152602001806133236042913960600191505060405180910390fd5b611b8a33826001611f19565b600b54600a54600954010160098190555050565b600060208190529081526040902080546001909101546001600160a01b039091169082565b6001600160a01b038216600090815260136020908152604080832060ff8516845290915290205492915050565b6003546001600160a01b03163314611c3f576040805162461bcd60e51b815260206004820152600d60248201526c3932b8bab4b9329037bbb732b960991b604482015290519081900360640190fd5b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b031660009081526014602052604090205490565b60165490565b600454600160a81b900460ff1681565b601260209081526000928352604080842090915290825290205481565b60035460009081906001600160a01b03163314611d03576040805162461bcd60e51b815260206004820152600d60248201526c3932b8bab4b9329037bbb732b960991b604482015290519081900360640190fd5b60105460408051629d473b60e21b81526001600160a01b038b81166004830152602482018b9052604482018a905260648201899052878116608483015260a4820187905282519316926302751cec9260c4808401939192918290030181600087803b158015611d7157600080fd5b505af1158015611d85573d6000803e3d6000fd5b505050506040513d6040811015611d9b57600080fd5b50805160209091015190999098509650505050505050565b60155481565b6001600160a01b0382811660009081526020818152604080832060ff868116855260039182018452828520805492810154600482015460058301546001840180548851818b0281018b01909952808952999a60609a8b9a8d9a8b9a8b9a9416989497600290950196949093169492918791830182828015611e6357602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611e45575b5050505050945083805480602002602001604051908101604052809291908181526020018280548015611ebf57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611ea1575b505050505093509550955095509550955095509295509295509295565b600b5481565b60056020526000908152604090205481565b6007546001600160a01b031681565b600754600160a01b900460ff1681565b600c5481565b600754600160a01b900460ff16611f67576040805162461bcd60e51b815260206004820152600d60248201526c686173206e6f74206f70656e2160981b604482015290519081900360640190fd5b611f7083610f97565b15611fb0576040805162461bcd60e51b815260206004820152600b60248201526a757365722065786973747360a81b604482015290519081900360640190fd5b611fb982610f97565b612000576040805162461bcd60e51b81526020600482015260136024820152727265666572726572206e6f742065786973747360681b604482015290519081900360640190fd5b823b63ffffffff811615612052576040805162461bcd60e51b815260206004820152601460248201527318d85b9b9bdd08189948184818dbdb9d1c9858dd60621b604482015290519081900360640190fd5b61205a613237565b506040805180820182526001600160a01b03808616808352600060208085018281528a851683529082905285822085518154925160018084019190915595166001600160a01b031992831617909116831790559081529290922082018054909201909155821561224e57600454600160a81b900460ff161561224957600754600a54604080516340c10f1960e01b81526001600160a01b0389811660048301526024820193909352905191909216916340c10f199160448083019260209291908290030181600087803b15801561213057600080fd5b505af1158015612144573d6000803e3d6000fd5b505050506040513d602081101561215a57600080fd5b50506007546040805163bb77b16f60e01b81526001600160a01b0388811660048301529151919092169163bb77b16f91602480830192600092919082900301818387803b1580156121aa57600080fd5b505af11580156121be573d6000803e3d6000fd5b5050600754600b54604080516340c10f1960e01b81526001600160a01b038a81166004830152602482019390935290519190921693506340c10f19925060448083019260209291908290030181600087803b15801561221c57600080fd5b505af1158015612230573d6000803e3d6000fd5b505050506040513d602081101561224657600080fd5b50505b6122bd565b600061225b866001611249565b6001600160a01b03878116600090815260208181526040808320600180855260038201845282852080546001600160a01b031916968816969096179095556002019091529020805460ff1916821790559091506122bb908790839061232e565b505b6001600160a01b03808616600081815260016020818152604092839020805460ff19169092179091556016805434019055815193881680855291519293919284927f0d8758c12ea412599670f538cb3743d26051486b4e68ae4c3504b908a2c5d4ae92908290030190a45050505050565b6001600160a01b0382811660009081526020818152604080832060ff86168085526003909101835290832060019081018054808301825581865293852090930180546001600160a01b031916958916959095179094559091525414806123a157506002546001600160a01b038381169116145b156124245760408051600180825260ff841660208301528183015290516001600160a01b0380851692908616917f68062c5925c4317adf3a7095478d28b33fd8b41458bc7620b61bc46bf1b24d829181900360600190a361241f8284600184600560008760ff1660ff1681526020019081526020016000205461293a565b612801565b6001600160a01b03821660009081526020818152604080832060ff851684526003019091529020600101546002141561250b57604080516001815260ff8316602082015260028183015290516001600160a01b0380851692908616917f68062c5925c4317adf3a7095478d28b33fd8b41458bc7620b61bc46bf1b24d829181900360600190a360ff8116600090815260056020526040902054600290046124cf83856001858561293a565b60006124db8484611249565b905061250484828585600560008960ff1660ff1681526020019081526020016000205403612a59565b5050612801565b6001600160a01b03821660009081526020818152604080832060ff85168452600390810190925290912060010154141561280157604080516001815260ff8316602082015260038183015290516001600160a01b0380851692908616917f68062c5925c4317adf3a7095478d28b33fd8b41458bc7620b61bc46bf1b24d829181900360600190a360408051600080825260208083018085526001600160a01b038716835282825284832060ff8716845260030190915292902090516125d6926001909201919061324e565b5060ff8116600090815260056020526040902054600290046125fc83856001858561293a565b6001600160a01b03831660009081526020818152604080832060ff60018701811685526002909101909252909120541615801561263d575060ff8216600a14155b15612679576001600160a01b03831660009081526020818152604080832060ff86168452600390810190925290912001805460ff191660011790555b60ff808316600090815260056020526040902054600e54908390039116156126c157600c54600282049081026126af8282612d04565b6126ba828403612ee7565b5050612729565b6003546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050612729576003546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015612727573d6000803e3d6000fd5b505b6000612733610fb5565b600754604080516340c10f1960e01b81526001600160a01b03898116600483015293860260248201819052915191945092909116916340c10f199160448083019260209291908290030181600087803b15801561278f57600080fd5b505af11580156127a3573d6000803e3d6000fd5b505050506040513d60208110156127b957600080fd5b50506001600160a01b038516600081815260136020908152604080832060ff891684528252808320805486019055928252601490522080548201905560158054909101905550505b505050565b600654600f54604080516001600160a01b039283166024820152604480820186905282518083039091018152606490910182526020810180516001600160e01b031663095ea7b360e01b178152915181516000959490941693919290918291908083835b602083106128895780518252601f19909201916020918201910161286a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146128eb576040519150601f19603f3d011682016040523d82523d6000602084013e6128f0565b606091505b5050809150508061195d576040805162461bcd60e51b815260206004820152600f60248201526e617070726f7665206661696c65642160881b604482015290519081900360640190fd5b600080612948878786613189565b6001600160a01b038216600081815260116020908152604080832060ff8c8116808652918452828520908c168552835281842080548b0190558484526012835281842090845290915280822080548901905551939550919350916108fc86150291869190818181858888f193505050506129f9576040516001600160a01b038316904780156108fc02916000818181858888f193505050501580156129f1573d6000803e3d6000fd5b505050612a52565b8015612a4f576040805160ff80881682528616602082015281516001600160a01b0380861693908a16927ff0ddc65c0d411f042f723dcfa1b7d13e85a35b7b70761d447c6500411cacf328929081900390910190a35b50505b5050505050565b6001600160a01b0383811660008181526020818152604080832060ff881684526003018252822060029081018054600181018255908452919092200180546001600160a01b031916888516179055549091161415612ac457612abf83856002858561293a565b612ba9565b6001600160a01b03831660009081526020818152604080832060ff861684526003019091529020600201546001148015612b055750612b038383610d30565b155b15612b1857612abf83856002858561293a565b6001600160a01b03831660009081526020818152604080832060ff861684526003019091529020600201546001148015612b7a57506001600160a01b03831660009081526020818152604080832060ff86168452600301909152902060040154155b15612b8d57612abf83856002858561293a565b6000612b998484611249565b9050612ba784828585612a59565b505b6001600160a01b03831660009081526020818152604080832060ff861684526003019091529020600201546001148015612c0c57506001600160a01b03831660009081526020818152604080832060ff8616845260030190915290206004015415155b8015612c1d5750612c1d8383610d30565b15612c7257604080516002815260ff8416602082015281516001600160a01b03808816938493918816927f339330e0afe2658d8446e7e8a95fa3544bb5185a9395c5b01c6a1651865b058b9281900390910190a45b6001600160a01b03831660009081526020818152604080832060ff8616845260030190915290206002908101541415612cfe576001600160a01b03831660009081526020818152604080832060ff861680855260039091018084528285206004810180546001019055835186815280860194859052929095529092529051612a5292600201919061324e565b50505050565b600754604080516340c10f1960e01b81523060048201526024810184905290516001600160a01b03909216916340c10f19916044808201926020929091908290030181600087803b158015612d5857600080fd5b505af1158015612d6c573d6000803e3d6000fd5b505050506040513d6020811015612d8257600080fd5b5050600f54600654600e54604080516001600160a01b0393841660248201526044810186905260006064820181905260848201819052610100909304841660a48201524260c4808301919091528251808303909101815260e490910182526020810180516001600160e01b031663f305d71960e01b17815291518151939594909416938793919290918291908083835b60208310612e315780518252601f199092019160209182019101612e12565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114612e93576040519150601f19603f3d011682016040523d82523d6000602084013e612e98565b606091505b50508091505080612801576040805162461bcd60e51b81526020600482015260146024820152736164644c6971756964697479206661696c65642160601b604482015290519081900360640190fd5b60408051600280825260608083018452600093909291906020830190803883395050601054604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b158015612f5157600080fd5b505afa158015612f65573d6000803e3d6000fd5b505050506040513d6020811015612f7b57600080fd5b505181518290600090612f8a57fe5b6001600160a01b039283166020918202929092010152600654825191169082906001908110612fb557fe5b60200260200101906001600160a01b031690816001600160a01b031681525050600f60009054906101000a90046001600160a01b03166001600160a01b0316836000833042604051602401808560ff16815260200180602001846001600160a01b03166001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561306457818101518382015260200161304c565b5050505090500195505050505050604051602081830303815290604052637ff36ab560e01b6001600160e01b0319166020820180516001600160e01b0383818316178352505050506040518082805190602001908083835b602083106130db5780518252601f1990920191602091820191016130bc565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461313d576040519150601f19603f3d011682016040523d82523d6000602084013e613142565b606091505b50508092505081612801576040805162461bcd60e51b815260206004820152600c60248201526b73776170206661696c65642160a01b604482015290519081900360640190fd5b6001600160a01b03831660009081526020818152604080832060ff808616855260039182019093529083200154829186918391161561322957604080516001815260ff8716602082015281516001600160a01b03808a1693908616927ffc0cb63f8dbd6b20ceb84a3c5358a41576a1479e6ecd040b4b985525dc09a709929081900390910190a350506003546001600160a01b031691506001905061322f565b90925090505b935093915050565b604080518082019091526000808252602082015290565b8280548282559060005260206000209081019282156132a3579160200282015b828111156132a357825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019061326e565b506132af9291506132b3565b5090565b610e4d91905b808211156132af5780546001600160a01b03191681556001016132b956fe63616e206e6f74206765742061697264726f7020696e206e6f742061697264726f7050686173652175736572206973206e6f74206578697374732e2052656769737465722066697273742e68617341697264726f70416d6f756e742b70657241697264726f702b70657241697264726f70466f7252656665727265723e6d617841697264726f70416d6f756e74a265627a7a72315820d34878f79fbef641e1c29102b1532bf9e7fa5cd151566b48adab025c8facfc7164736f6c63430005110032

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

000000000000000000000000b4ddb836bde4165e60b72f72bfb2630a25b607c8

-----Decoded View---------------
Arg [0] : starNodeAddress (address): 0xb4DDb836bDE4165E60b72F72BFB2630a25b607C8

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000b4ddb836bde4165e60b72f72bfb2630a25b607c8


Deployed Bytecode Sourcemap

4086:20219:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5384:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5384:24:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;21943:195;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21943:195:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21943:195:0;-1:-1:-1;;;;;21943:195:0;;:::i;14871:185::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14871:185:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14871:185:0;;-1:-1:-1;;;;;14871:185:0;;;;;;;;:::i;19720:124::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19720:124:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19720:124:0;;;;:::i;5463:34::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5463:34:0;;;:::i;:::-;;;;-1:-1:-1;;;;;5463:34:0;;;;;;;;;;;;;;22453:85;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22453:85:0;;;:::i;:::-;;;;;;;;;;;;;;;;5090:56;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5090:56:0;;;:::i;5504:33::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5504:33:0;;;:::i;5153:::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5153:33:0;;;:::i;4535:37::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4535:37:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4680:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4680:23:0;;;:::i;20151:136::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20151:136:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20151:136:0;;;;:::i;22747:137::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22747:137:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22747:137:0;-1:-1:-1;;;;;22747:137:0;;:::i;5349:28::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5349:28:0;;;:::i;5560:80::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5560:80:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;5560:80:0;;;;;;;;;;;;;:::i;5797:44::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5797:44:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5797:44:0;-1:-1:-1;;;;;5797:44:0;;:::i;23032:142::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23032:142:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23032:142:0;;-1:-1:-1;;;;;23032:142:0;;;;;;;;:::i;4631:42::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4631:42:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4631:42:0;-1:-1:-1;;;;;4631:42:0;;:::i;18194:107::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18194:107:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18194:107:0;-1:-1:-1;;;;;18194:107:0;;:::i;23738:562::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23738:562:0;;;:::i;22143:150::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22143:150:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22143:150:0;-1:-1:-1;;;;;22143:150:0;;:::i;8266:269::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8266:269:0;-1:-1:-1;;;;;8266:269:0;;:::i;21791:146::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21791:146:0;;;:::i;4905:70::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4905:70:0;;;:::i;5888:29::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5888:29:0;;;:::i;5193:46::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5193:46:0;;;:::i;16779:503::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16779:503:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16779:503:0;;-1:-1:-1;;;;;16779:503:0;;;;;;;;:::i;15068:1193::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15068:1193:0;;;;:::i;23325:137::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23325:137:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23325:137:0;;:::i;22887:142::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22887:142:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22887:142:0;;-1:-1:-1;;;;;22887:142:0;;;;;;;;:::i;5726:64::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5726:64:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;5726:64:0;;;;;;;;:::i;16274:487::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16274:487:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;16274:487:0;;;;;;;;;;:::i;22301:143::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22301:143:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22301:143:0;;;;:::i;18019:159::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18019:159:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18019:159:0;-1:-1:-1;;;;;18019:159:0;;:::i;19989:156::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19989:156:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19989:156:0;;;;:::i;17306:151::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17306:151:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17306:151:0;;-1:-1:-1;;;;;17306:151:0;;;;;;;;:::i;4775:29::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4775:29:0;;;:::i;8549:438::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8549:438:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8549:438:0;-1:-1:-1;;;;;8549:438:0;;:::i;4585:37::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4585:37:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4585:37:0;-1:-1:-1;;;;;4585:37:0;;:::i;:::-;;;;-1:-1:-1;;;;;4585:37:0;;;;;;;;;;;;;;;;;;;;;23180:136;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23180:136:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23180:136:0;;-1:-1:-1;;;;;23180:136:0;;;;;;;;:::i;19852:131::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19852:131:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19852:131:0;-1:-1:-1;;;;;19852:131:0;;:::i;22635:109::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22635:109:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22635:109:0;-1:-1:-1;;;;;22635:109:0;;:::i;22541:88::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22541:88:0;;;:::i;4811:28::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4811:28:0;;;:::i;5653:60::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5653:60:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;5653:60:0;;;;;;;;:::i;20777:443::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20777:443:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;20777:443:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5854:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5854:27:0;;;:::i;17467:536::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17467:536:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17467:536:0;;-1:-1:-1;;;;;17467:536:0;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;17467:536:0;-1:-1:-1;;;;;17467:536: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;17467:536: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;17467:536:0;;;;;;;;;;;;;;;;;;;;;;;5246:56;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5246:56:0;;;:::i;4852:40::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4852:40:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4852:40:0;;;;:::i;4982:67::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4982:67:0;;;:::i;5062:21::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5062:21:0;;;:::i;5309:33::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5309:33:0;;;:::i;5384:24::-;;;;;;:::o;21943:195::-;22023:5;;-1:-1:-1;;;;;22023:5:0;22011:10;:17;22003:43;;;;;-1:-1:-1;;;22003:43:0;;;;;;;;;;;;-1:-1:-1;;;22003:43:0;;;;;;;;;;;;;;;22057:12;:18;;-1:-1:-1;;;;;;22057:18:0;;;-1:-1:-1;;;;;22057:18:0;;;;;;;;22086:8;:42;;22115:12;;;;22086:42;;;;;21943:195::o;14871:185::-;14971:8;;:24;;;-1:-1:-1;;;14971:24:0;;-1:-1:-1;;;;;14971:24:0;;;;;;;;;14934:4;;;;14971:8;;:18;;:24;;;;;;;;;;;;;;:8;:24;;;5:2:-1;;;;30:1;27;20:12;5:2;14971:24:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14971:24:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14971:24:0;15026:17;;;;;;;:10;14971:24;15026:17;;;;;15044:4;15026:22;-1:-1:-1;15013:35:0;-1:-1:-1;;14871:185:0;;;;;:::o;19720:124::-;19792:5;;-1:-1:-1;;;;;19792:5:0;19780:10;:17;19772:43;;;;;-1:-1:-1;;;19772:43:0;;;;;;;;;;;;-1:-1:-1;;;19772:43:0;;;;;;;;;;;;;;;19826:4;:10;;;;;-1:-1:-1;;;19826:10:0;-1:-1:-1;;;;19826:10:0;;;;;;;;;19720:124::o;5463:34::-;;;-1:-1:-1;;;;;5463:34:0;;:::o;22453:85::-;22523:10;;22453:85;;:::o;5090:56::-;;;;:::o;5504:33::-;;;-1:-1:-1;;;;;5504:33:0;;:::o;5153:::-;;;;:::o;4535:37::-;4570:2;4535:37;:::o;4680:23::-;;;-1:-1:-1;;;;;4680:23:0;;:::o;20151:136::-;20229:5;;-1:-1:-1;;;;;20229:5:0;20217:10;:17;20209:43;;;;;-1:-1:-1;;;20209:43:0;;;;;;;;;;;;-1:-1:-1;;;20209:43:0;;;;;;;;;;;;;;;20263:7;:16;;-1:-1:-1;;20263:16:0;;;;;;;;;;20151:136::o;22747:137::-;-1:-1:-1;;;;;22857:19:0;22811:7;22857:19;;;:12;:19;;;;;;;;22877:1;22857:22;;;;;;;;;22854:1;22834:22;;;;;:45;;22747:137::o;5349:28::-;;;;:::o;5560:80::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5797:44::-;;;;;;;;;;;;;:::o;23032:142::-;-1:-1:-1;;;;;23135:24:0;;23112:7;23135:24;;;:17;:24;;;;;;;;23160:1;23135:27;;;;;;;:34;;;;;;;;;;;23032:142;;;;:::o;4631:42::-;;;;;;;;;;;;;;;:::o;18194:107::-;-1:-1:-1;;;;;18275:18:0;18251:4;18275:18;;;:12;:18;;;;;;;;;18194:107::o;23738:562::-;23786:7;23819:26;23808:10;;:37;23805:488;;;-1:-1:-1;23869:4:0;23862:11;;23805:488;23905:26;23893:10;;:38;;:77;;;;;23944:26;23933:10;;:37;23893:77;23890:403;;;-1:-1:-1;23993:3:0;23986:10;;23890:403;24028:26;24016:10;;:38;;:77;;;;;24067:26;24056:10;;:37;24016:77;24013:280;;;-1:-1:-1;24116:3:0;24109:10;;24013:280;24151:26;24139:10;;:38;;:77;;;;;24190:26;24179:10;;:37;24139:77;24136:157;;;-1:-1:-1;24239:3:0;24232:10;;24136:157;-1:-1:-1;24280:1:0;24273:8;;22143:150;22235:5;;-1:-1:-1;;;;;22235:5:0;22223:10;:17;22215:43;;;;;-1:-1:-1;;;22215:43:0;;;;;;;;;;;;-1:-1:-1;;;22215:43:0;;;;;;;;;;;;;;;22269:13;:19;;-1:-1:-1;;;;;22269:19:0;;;;;-1:-1:-1;;;;;;22269:19:0;;;;;;;;;22143:150::o;8266:269::-;8353:12;;-1:-1:-1;;;8353:12:0;;;;8352:13;8344:56;;;;;-1:-1:-1;;;8344:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;8419:9;8432:10;8419:23;8411:58;;;;;-1:-1:-1;;;8411:58:0;;;;;;;;;;;;-1:-1:-1;;;8411:58:0;;;;;;;;;;;;;;;8480:47;8493:10;8505:15;8521:5;8480:12;:47::i;:::-;8266:269;:::o;21791:146::-;21852:5;;-1:-1:-1;;;;;21852:5:0;21840:10;:17;21832:43;;;;;-1:-1:-1;;;21832:43:0;;;;;;;;;;;;-1:-1:-1;;;21832:43:0;;;;;;;;;;;;;;;21884:38;;:10;;21900:21;21884:38;;;;;;;;;21900:21;21884:10;:38;;;;;;;21880:52;;21924:8;;;21880:52;21791:146::o;4905:70::-;;;-1:-1:-1;;;;;4905:70:0;;:::o;5888:29::-;;;;:::o;5193:46::-;;;;:::o;16779:503::-;16862:7;;16910:365;16949:1;16939:9;:11;;;16936:69;;;-1:-1:-1;;16977:12:0;;-1:-1:-1;;;;;16977:12:0;16970:19;;16936:69;-1:-1:-1;;;;;17055:18:0;;;17049:5;17055:18;;;;;;;;;;;:27;;;;17049:34;;;;;:54;;;;;;:47;;;;:54;;;;;;;17019:11;;;;;17049:54;17045:207;;;-1:-1:-1;;;;;;;17131:18:0;;;:5;:18;;;;;;;;;;:27;;17124:34;;17045:207;-1:-1:-1;;;;;17209:18:0;;;:5;:18;;;;;;;;;;:27;;;;;16910:365;;15068:1193;15138:4;;-1:-1:-1;;;15138:4:0;;;;15130:29;;;;;-1:-1:-1;;;15130:29:0;;;;;;;;;;;;-1:-1:-1;;;15130:29:0;;;;;;;;;;;;;;;15179:12;;-1:-1:-1;;;15179:12:0;;;;15178:13;15170:56;;;;;-1:-1:-1;;;15170:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;15245:24;15258:10;15245:12;:24::i;:::-;15237:72;;;;-1:-1:-1;;;15237:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15341:17;;;;;;;:10;:17;;;;;;15328:9;:30;15320:56;;;;;-1:-1:-1;;;15320:56:0;;;;;;;;;;;;-1:-1:-1;;;15320:56:0;;;;;;;;;;;;;;;15404:1;15395:5;:10;;;;:33;;;;-1:-1:-1;4570:2:0;15409:19;;;;;15395:33;15387:59;;;;;-1:-1:-1;;;15387:59:0;;;;;;;;;;;;-1:-1:-1;;;15387:59:0;;;;;;;;;;;;;;;15474:10;15468:5;:17;;;;;;;;;;;:37;;;;;;:30;;;;:37;;;;;;;;15467:38;15459:74;;;;;-1:-1:-1;;;15459:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;15556:10;15550:5;:17;;;;;;;;;;;:33;-1:-1:-1;;15575:7:0;;15550:33;;;;:24;;;;:33;;;;;:41;;;;;15546:123;;;15614:10;15652:5;15608:17;;;;;;;;;;;:33;-1:-1:-1;;15633:7:0;;15608:33;;;:24;;;;:33;;;;;;:41;:49;;-1:-1:-1;;15608:49:0;;;15546:123;15719:8;;:32;;;-1:-1:-1;;;15719:32:0;;15740:10;15719:32;;;;;;-1:-1:-1;;;;;15719:8:0;;;;:20;;:32;;;;;;;;;;;;;;;:8;:32;;;5:2:-1;;;;30:1;27;20:12;5:2;15719:32:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15719:32:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15719:32:0;15716:107;;;15767:8;;:40;;;-1:-1:-1;;;15767:40:0;;15796:10;15767:40;;;;;;-1:-1:-1;;;;;15767:8:0;;;;:28;;:40;;;;;:8;;:40;;;;;;;;:8;;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;15767:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15767:40:0;;;;15716:107;15843:30;15876:38;15896:10;15908:5;15876:19;:38::i;:::-;15931:10;15925:5;:17;;;;;;;;;;;:31;;;;;:24;;;:31;;;;;:72;;-1:-1:-1;;;;;;15925:72:0;-1:-1:-1;;;;;15925:72:0;;;;;16008:30;;:37;;;;;:44;;-1:-1:-1;;16008:44:0;-1:-1:-1;16008:44:0;;;15925:72;;-1:-1:-1;16063:63:0;;15925:72;:31;16063:20;:63::i;:::-;16150:12;;;16163:9;16150:22;16137:35;;16200:53;;;-1:-1:-1;16200:53:0;;;;;;;;;;;-1:-1:-1;;;;;16200:53:0;;;16208:10;;16200:53;;;;;;;;;;;15068:1193;;:::o;23325:137::-;23402:5;;-1:-1:-1;;;;;23402:5:0;23390:10;:17;23382:43;;;;;-1:-1:-1;;;23382:43:0;;;;;;;;;;;;-1:-1:-1;;;23382:43:0;;;;;;;;;;;;;;;23433:24;23450:6;23433:16;:24::i;22887:142::-;-1:-1:-1;;;;;22990:24:0;;22967:7;22990:24;;;:17;:24;;;;;;;;23015:1;22990:27;;;;;;;:34;;;;;;;;;;;22887:142;;;;:::o;5726:64::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;16274:487::-;16371:5;;-1:-1:-1;;;;;16371:5:0;16359:10;:17;16351:43;;;;;-1:-1:-1;;;16351:43:0;;;;;;;;;;;;-1:-1:-1;;;16351:43:0;;;;;;;;;;;;;;;16420:1;16405:242;4570:2;16423:15;;;;16405:242;;-1:-1:-1;;;;;16460:12:0;;;:5;:12;;;;;;;;;;;:28;;;;;:25;;;:28;;;;;:35;;16491:4;-1:-1:-1;;16460:35:0;;;;;;;;16510:19;;;;:22;;;;;:50;;-1:-1:-1;;;;;;16510:50:0;;;;;;;;;;;16604:10;:13;;;;;;16591:12;;;:26;;;16578:39;;16440:3;16405:242;;;-1:-1:-1;16660:8:0;;:27;;;-1:-1:-1;;;16660:27:0;;-1:-1:-1;;;;;16660:27:0;;;;;;;;;:8;;;;;:20;;:27;;;;;;;;;;;;;;:8;:27;;;5:2:-1;;;;30:1;27;20:12;5:2;16660:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16660:27:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16660:27:0;16657:97;;;16703:8;;:35;;;-1:-1:-1;;;16703:35:0;;-1:-1:-1;;;;;16703:35:0;;;;;;;;;:8;;;;;:28;;:35;;;;;:8;;:35;;;;;;;:8;;:35;;;5:2:-1;;;;30:1;27;20:12;5:2;16703:35:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16703:35:0;;;;16657:97;16274:487;;:::o;22301:143::-;22384:5;;-1:-1:-1;;;;;22384:5:0;22372:10;:17;22364:43;;;;;-1:-1:-1;;;22364:43:0;;;;;;;;;;;;-1:-1:-1;;;22364:43:0;;;;;;;;;;;;;;;22415:11;:24;;;;;-1:-1:-1;;;22415:24:0;-1:-1:-1;;;;22415:24:0;;;;;;;;;22301:143::o;18019:159::-;18110:5;;-1:-1:-1;;;;;18110:5:0;18098:10;:17;18090:43;;;;;-1:-1:-1;;;18090:43:0;;;;;;;;;;;;-1:-1:-1;;;18090:43:0;;;;;;;;;;;;;;;18144:12;:26;;-1:-1:-1;;;;;;18144:26:0;-1:-1:-1;;;;;18144:26:0;;;;;;;;;;18019:159::o;19989:156::-;20077:5;;-1:-1:-1;;;;;20077:5:0;20065:10;:17;20057:43;;;;;-1:-1:-1;;;20057:43:0;;;;;;;;;;;;-1:-1:-1;;;20057:43:0;;;;;;;;;;;;;;;20111:12;:26;;;;;-1:-1:-1;;;20111:26:0;-1:-1:-1;;;;20111:26:0;;;;;;;;;19989:156::o;17306:151::-;-1:-1:-1;;;;;17411:18:0;;;;17387:4;17411:18;;;;;;;;;;;:38;;;;;;:31;;:38;;;;;;;;17306:151::o;4775:29::-;;;-1:-1:-1;;;4775:29:0;;;;;:::o;8549:438::-;8633:12;;-1:-1:-1;;;8633:12:0;;;;8625:64;;;;-1:-1:-1;;;8625:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8759:16;;8736:21;;8725:10;;8708:16;;:27;:49;:67;;8700:145;;;;-1:-1:-1;;;8700:145:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8856:46;8869:10;8881:15;8897:4;8856:12;:46::i;:::-;8958:21;;8947:10;;8930:16;;:27;:49;8913:16;:66;;;;8549:438;:::o;4585:37::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4585:37:0;;;;;:::o;23180:136::-;-1:-1:-1;;;;;23281:23:0;;23258:7;23281:23;;;:16;:23;;;;;;;;:30;;;;;;;;;;;23180:136;;;;:::o;19852:131::-;19929:5;;-1:-1:-1;;;;;19929:5:0;19917:10;:17;19909:43;;;;;-1:-1:-1;;;19909:43:0;;;;;;;;;;;;-1:-1:-1;;;19909:43:0;;;;;;;;;;;;;;;19963:5;:12;;-1:-1:-1;;;;;;19963:12:0;-1:-1:-1;;;;;19963:12:0;;;;;;;;;;19852:131::o;22635:109::-;-1:-1:-1;;;;;22721:18:0;22698:7;22721:18;;;:11;:18;;;;;;;22635:109::o;22541:88::-;22612:12;;22541:88;:::o;4811:28::-;;;-1:-1:-1;;;4811:28:0;;;;;:::o;5653:60::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;20777:443::-;21061:5;;20995:17;;;;-1:-1:-1;;;;;21061:5:0;21049:10;:17;21041:43;;;;;-1:-1:-1;;;21041:43:0;;;;;;;;;;;;-1:-1:-1;;;21041:43:0;;;;;;;;;;;;;;;21123:7;;:89;;;-1:-1:-1;;;21123:89:0;;-1:-1:-1;;;;;21123:89:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:7;;;:26;;:89;;;;;;;;;;;;;:7;;:89;;;5:2:-1;;;;30:1;27;20:12;5:2;21123:89:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21123:89:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21123:89:0;;;;;;;;;;;-1:-1:-1;20777:443:0;-1:-1:-1;;;;;;;20777:443:0:o;5854:27::-;;;;:::o;17467:536::-;-1:-1:-1;;;;;17627:18:0;;;17542:7;17627:18;;;;;;;;;;;:32;;;;;;:25;;;;:32;;;;;:48;;17820:40;;;;17879:48;;;;17946;;;;17627;17694:44;;17619:376;;;;;;;;;;;;;;;;;17542:7;;17551:16;;;;17542:7;;;;;;17627:48;;;17694:44;;17757;;;;;17820:40;;;;;17946:48;17619:376;17694:44;;17619:376;;17694:44;17619:376;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17619:376:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17619:376:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17467:536;;;;;;;;:::o;5246:56::-;;;;:::o;4852:40::-;;;;;;;;;;;;;:::o;4982:67::-;;;-1:-1:-1;;;;;4982:67:0;;:::o;5062:21::-;;;-1:-1:-1;;;5062:21:0;;;;;:::o;5309:33::-;;;;:::o;8999:1693::-;9111:4;;-1:-1:-1;;;9111:4:0;;;;9103:29;;;;;-1:-1:-1;;;9103:29:0;;;;;;;;;;;;-1:-1:-1;;;9103:29:0;;;;;;;;;;;;;;;9152:25;9165:11;9152:12;:25::i;:::-;9151:26;9143:50;;;;;-1:-1:-1;;;9143:50:0;;;;;;;;;;;;-1:-1:-1;;;9143:50:0;;;;;;;;;;;;;;;9212:29;9225:15;9212:12;:29::i;:::-;9204:61;;;;;-1:-1:-1;;;9204:61:0;;;;;;;;;;;;-1:-1:-1;;;9204:61:0;;;;;;;;;;;;;;;9340:24;;9393:9;;;;9385:42;;;;;-1:-1:-1;;;9385:42:0;;;;;;;;;;;;-1:-1:-1;;;9385:42:0;;;;;;;;;;;;;;;9448:16;;:::i;:::-;-1:-1:-1;9467:120:0;;;;;;;;-1:-1:-1;;;;;9467:120:0;;;;;;-1:-1:-1;9467:120:0;;;;;;;9608:18;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;9608:25:0;;;;9705:45;;;;;;;9874:22;;;;;;;:36;;:38;;;;;;;;9931:579;;;;9964:11;;-1:-1:-1;;;9964:11:0;;;;9961:230;;;9995:8;;10021:10;;9995:37;;;-1:-1:-1;;;9995:37:0;;-1:-1:-1;;;;;9995:37:0;;;;;;;;;;;;;;;;:8;;;;;:13;;:37;;;;;;;;;;;;;;:8;;:37;;;5:2:-1;;;;30:1;27;20:12;5:2;9995:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9995:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;10051:8:0;;:38;;;-1:-1:-1;;;10051:38:0;;-1:-1:-1;;;;;10051:38:0;;;;;;;;;:8;;;;;:25;;:38;;;;;:8;;:38;;;;;;;:8;;:38;;;5:2:-1;;;;30:1;27;20:12;5:2;10051:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;10108:8:0;;10138:21;;10108:52;;;-1:-1:-1;;;10108:52:0;;-1:-1:-1;;;;;10108:52:0;;;;;;;;;;;;;;;;:8;;;;;-1:-1:-1;10108:13:0;;-1:-1:-1;10108:52:0;;;;;;;;;;;;;;:8;;:52;;;5:2:-1;;;;30:1;27;20:12;5:2;10108:52:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10108:52:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;9961:230:0;9931:579;;;10222:23;10248:35;10268:11;10281:1;10248:19;:35::i;:::-;-1:-1:-1;;;;;10298:18:0;;;:5;:18;;;;;;;;;;;10324:1;10298:28;;;:25;;;:28;;;;;:62;;-1:-1:-1;;;;;;10298:62:0;;;;;;;;;;;10375:31;;:34;;;;;:41;;-1:-1:-1;;10375:41:0;;;;;10298:62;;-1:-1:-1;10431:53:0;;10298:18;;:62;;10431:20;:53::i;:::-;9931:579;;-1:-1:-1;;;;;10520:25:0;;;;;;;10546:4;10520:25;;;;;;;;;:30;;-1:-1:-1;;10520:30:0;;;;;;;10574:12;;;10587:9;10574:22;10561:35;;10612:72;;;;;;;;;;10520:25;;10612:72;;10520:25;;10612:72;;;;;;;;;8999:1693;;;;;:::o;10704:2649::-;-1:-1:-1;;;;;10812:22:0;;;:5;:22;;;;;;;;;;;:36;;;;;;:29;;;;:36;;;;;:48;;;;27:10:-1;;23:18;;;45:23;;10812:66:0;;;;;;;;;;;-1:-1:-1;;;;;;10812:66:0;;;;;;;;;;;10895:36;;;:55;:60;;:89;;-1:-1:-1;10976:8:0;;-1:-1:-1;;;;;10957:27:0;;;10976:8;;10957:27;10895:89;10891:2447;;;11006:55;;;11049:1;11006:55;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11006:55:0;;;;;;;;;;;;;;;;;11083:74;11100:15;11117:11;11130:1;11133:5;11139:10;:17;11150:5;11139:17;;;;;;;;;;;;;;;;11083:16;:74::i;:::-;11076:81;;10891:2447;-1:-1:-1;;;;;11177:22:0;;:5;:22;;;;;;;;;;;:36;;;;;:29;;:36;;;;;:48;;:55;11236:1;11177:60;11174:2164;;;11258:55;;;11301:1;11258:55;;;;;;;;;11311:1;11258:55;;;;;;-1:-1:-1;;;;;11258:55:0;;;;;;;;;;;;;;;;;11376:17;;;11359:16;11376:17;;;:10;:17;;;;;;11394:1;11376:19;;11410:65;11427:15;11444:11;11457:1;11376:17;:19;11410:16;:65::i;:::-;11490:30;11523:43;11543:15;11560:5;11523:19;:43::i;:::-;11490:76;;11592:97;11615:15;11631:22;11654:5;11679:8;11661:10;:17;11672:5;11661:17;;;;;;;;;;;;;;;;:26;11592:22;:97::i;:::-;11174:2164;;;;;-1:-1:-1;;;;;11725:22:0;;:5;:22;;;;;;;;;;;:36;;;;;:29;;;;:36;;;;;;:48;;:55;:60;11722:1616;;;11806:55;;;11849:1;11806:55;;;;;;;;;11859:1;11806:55;;;;;;-1:-1:-1;;;;;11806:55:0;;;;;;;;;;;;;;;;;11958:16;;;11972:1;11958:16;;;;;;;;;;-1:-1:-1;;;;;11907:22:0;;;;;;;;;;:36;;;;;:29;;:36;;;;;;:67;;;;:48;;;;;11958:16;11907:67;:::i;:::-;-1:-1:-1;12022:17:0;;;12005:16;12022:17;;;:10;:17;;;;;;12040:1;12022:19;;12056:65;12073:15;12090:11;12103:1;12022:17;:19;12056:16;:65::i;:::-;-1:-1:-1;;;;;12155:22:0;;:5;:22;;;;;;;;;;;:44;12197:1;12191:7;;12155:44;;;;:35;;;;:44;;;;;;;;12154:45;:68;;;;-1:-1:-1;12203:19:0;;;4570:2;12203:19;;12154:68;12150:160;;;-1:-1:-1;;;;;12243:22:0;;:5;:22;;;;;;;;;;;:36;;;;;:29;;;;:36;;;;;;:44;:51;;-1:-1:-1;;12243:51:0;12290:4;12243:51;;;12150:160;12367:17;;;;12350:15;12367:17;;;:10;:17;;;;;;12448:7;;12367:26;;;;;12448:7;12445:409;;;12551:14;;12501:1;12493:9;;;12541:24;;12584:33;12493:9;12541:24;12584:10;:33::i;:::-;12636:24;12650:9;12642:7;:17;12636:5;:24::i;:::-;12445:409;;;;;12719:5;;12703:37;;-1:-1:-1;;;;;12719:5:0;;;;12703:37;;;;;12732:7;;12719:5;12703:37;12719:5;12703:37;12732:7;12719:5;12703:37;;;;;;;12699:140;;12780:5;;12764:55;;-1:-1:-1;;;;;12780:5:0;;;;12797:21;12764:55;;;;;12780:5;12764:55;12780:5;12764:55;12797:21;12780:5;12764:55;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12764:55:0;12699:140;12890:17;12916;:15;:17::i;:::-;12948:8;;:40;;;-1:-1:-1;;;12948:40:0;;-1:-1:-1;;;;;12948:40:0;;;;;;;12908:25;;;12948:40;;;;;;;;12908:25;;-1:-1:-1;12948:8:0;;;;;:13;;:40;;;;;;;;;;;;;;:8;;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;12948:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12948:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;;13044:33:0;;;;;;:16;12948:40;13044:33;;;;;;;:40;;;;;;;;;;;;:50;;13003:91;;13138:28;;;:11;:28;;;;;:38;;13109:67;;13202:10;;;:20;;;13191:31;;-1:-1:-1;;11722:1616:0;10704:2649;;;:::o;23471:255::-;23578:12;;23647:11;;23596:70;;;-1:-1:-1;;;;;23647:11:0;;;23596:70;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;23596:70:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;23578:89:0;;;;23532:18;;23578:12;;;;;23596:70;;23578:89;;;;25:18:-1;23578:89:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;23578:89:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;23561:106:0;;;;;23686:13;23678:40;;;;;-1:-1:-1;;;23678:40:0;;;;;;;;;;;;-1:-1:-1;;;23678:40:0;;;;;;;;;;;;;;18828:710;18954:16;18972:21;18997:42;19013:11;19026:5;19033;18997:15;:42::i;:::-;-1:-1:-1;;;;;19095:27:0;;;;;;:17;:27;;;;;;;;:35;;;;;;;;;;;;;:42;;;;;;;;;;;;:51;;19052:94;;19188:22;;;:12;:22;;;;;:30;;;;;;;;;;;:39;;19157:70;;19243:41;19095:27;;-1:-1:-1;18953:86:0;;-1:-1:-1;19095:27:0;19243:41;;;;;19095:51;;19243:41;;19095:27;19243:41;19095:51;:27;19243:41;;;;;;;19238:156;;19302:58;;-1:-1:-1;;;;;19302:35:0;;;19338:21;19302:58;;;;;;;;;19338:21;19302:35;:58;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19302:58:0;19376:7;;;;19238:156;19408:16;19404:107;;;19446:53;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19446:53:0;;;;;;;;;;;;;;;;;;;19404:107;18828:710;;;;;;;;:::o;13373:1486::-;-1:-1:-1;;;;;13500:22:0;;;:5;:22;;;;;;;;;;;:36;;;;;:29;;:36;;;;:48;;;;27:10:-1;;39:1;23:18;;45:23;;13500:66:0;;;;;;;;;;-1:-1:-1;;;;;;13500:66:0;;;;;;;13609:8;;;;13590:27;13587:747;;;13633:65;13650:15;13667:11;13680:1;13683:5;13689:8;13633:16;:65::i;:::-;13587:747;;;-1:-1:-1;;;;;13718:22:0;;:5;:22;;;;;;;;;;;:36;;;;;:29;;:36;;;;;:48;;:55;13777:1;13718:60;:93;;;;;13781:30;13789:15;13805:5;13781:7;:30::i;:::-;13780:31;13718:93;13715:619;;;13827:65;13844:15;13861:11;13874:1;13877:5;13883:8;13827:16;:65::i;13715:619::-;-1:-1:-1;;;;;13912:22:0;;:5;:22;;;;;;;;;;;:36;;;;;:29;;:36;;;;;:48;;:55;13971:1;13912:60;:117;;;;-1:-1:-1;;;;;;13974:22:0;;:5;:22;;;;;;;;;;;:36;;;;;:29;;:36;;;;;:52;;;:55;13912:117;13909:425;;;14045:65;14062:15;14079:11;14092:1;14095:5;14101:8;14045:16;:65::i;13909:425::-;14141:30;14174:43;14194:15;14211:5;14174:19;:43::i;:::-;14141:76;;14245:77;14268:15;14284:22;14307:5;14313:8;14245:22;:77::i;:::-;13909:425;;-1:-1:-1;;;;;14357:22:0;;:5;:22;;;;;;;;;;;:36;;;;;:29;;:36;;;;;:48;;:55;14416:1;14357:60;:117;;;;-1:-1:-1;;;;;;14419:22:0;;:5;:22;;;;;;;;;;;:36;;;;;:29;;:36;;;;;:52;;;:55;;14357:117;:149;;;;;14476:30;14484:15;14500:5;14476:7;:30::i;:::-;14354:245;;;14527:60;;;14578:1;14527:60;;;;;;;;;;;-1:-1:-1;;;;;14527:60:0;;;;;;;;;;;;;;;;;;;;14354:245;-1:-1:-1;;;;;14622:22:0;;:5;:22;;;;;;;;;;;:36;;;;;:29;;:36;;;;;:48;;;;:55;:60;14619:225;;;-1:-1:-1;;;;;14698:22:0;;:5;:22;;;;;;;;;;;:36;;;;;;:29;;;;:36;;;;;;:52;;;:54;;;;;;14816:16;;;;;;;;;;;;14767:36;;;;;;;:65;;;;:48;;;14816:16;14767:65;:::i;14619:225::-;13373:1486;;;;:::o;20309:456::-;20391:8;;:40;;;-1:-1:-1;;;20391:40:0;;20413:4;20391:40;;;;;;;;;;;;-1:-1:-1;;;;;20391:8:0;;;;:13;;:40;;;;;;;;;;;;;;;:8;;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;20391:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20391:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;20508:11:0;;20633:12;;20662:13;;20542:150;;;-1:-1:-1;;;;;20633:12:0;;;20542:150;;;;;;;;;;20444:26;20542:150;;;;;;;;;;;;20508:11;20662:13;;;;;20542:150;;;;20676:15;20542:150;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;20542:150:0;;;;;;20391:40;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;20508:185:0;;;;20444:26;;20508:11;;;;;20531:9;;20542:150;;20508:185;;;;25:18:-1;20508:185:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;20508:185:0;;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;20481:212:0;;;;;20712:21;20704:53;;;;;-1:-1:-1;;;20704:53:0;;;;;;;;;;;;-1:-1:-1;;;20704:53:0;;;;;;;;;;;;;;21236:542;21452:16;;;21466:1;21452:16;;;21427:22;21452:16;;;;;21401:15;;21427:22;;21452:16;21466:1;21452:16;;;;;105:10:-1;21452:16:0;88:34:-1;-1:-1;;21488:7:0;;:14;;;-1:-1:-1;;;21488:14:0;;;;21427:41;;-1:-1:-1;;;;;;21488:7:0;;;;:12;;-1:-1:-1;21488:14:0;;;;;;;;;;;;;;:7;:14;;;5:2:-1;;;;30:1;27;20:12;5:2;21488:14:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21488:14:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21488:14:0;21479:8;;:5;;21485:1;;21479:8;;;;-1:-1:-1;;;;;21479:23:0;;;:8;;;;;;;;;:23;21522:12;;21513:8;;21522:12;;;21513:5;;21522:12;;21513:8;;;;;;;;;;;:21;-1:-1:-1;;;;;21513:21:0;;;-1:-1:-1;;;;;21513:21:0;;;;;21571:11;;;;;;;;;-1:-1:-1;;;;;21571:11:0;-1:-1:-1;;;;;21571:16:0;21594:7;21686:1;21688:5;21702:4;21708:15;21603:121;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21603:121:0;-1:-1:-1;;;;;21603:121: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;21603:121:0;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;21603:121:0;;;-1:-1:-1;;;;;;;;21603:121:0;;38:4:-1;29:7;25:18;67:10;61:17;-1:-1;;;;;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;21603:121:0;21571:154;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;21571:154:0;;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;21555:170:0;;;;;21744:10;21736:34;;;;;-1:-1:-1;;;21736:34:0;;;;;;;;;;;;-1:-1:-1;;;21736:34:0;;;;;;;;;;;;;;18321:493;-1:-1:-1;;;;;18521:15:0;;18411:7;18521:15;;;;;;;;;;;:29;;;;;;:22;;;;:29;;;;;;:37;;18411:7;;18456:11;;18411:7;;18521:37;18517:271;;;18580:43;;;18614:1;18580:43;;;;;;;;;;;-1:-1:-1;;;;;18580:43:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18684:5:0;;-1:-1:-1;;;;;18684:5:0;;-1:-1:-1;18657:4:0;;-1:-1:-1;18676:32:0;;18517:271;18749:8;;-1:-1:-1;18759:16:0;-1:-1:-1;18321:493:0;;;;;;;:::o;4086:20219::-;;;;;;;;;;-1:-1:-1;4086:20219:0;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4086:20219:0;-1:-1:-1;;;;;4086:20219:0;;;;;;;;;;;-1:-1:-1;4086:20219:0;;;;;;;-1:-1:-1;4086:20219:0;;;-1:-1:-1;4086:20219:0;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;;4086:20219:0;;;;;;

Swarm Source

bzzr://d34878f79fbef641e1c29102b1532bf9e7fa5cd151566b48adab025c8facfc71

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.