ETH Price: $2,845.56 (+2.35%)

Contract

0xFf8E926D0d92B5da930F5534a79E5B821f719F8A
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Withdraw My Divi...204533932024-08-04 6:27:59186 days ago1722752879IN
BillionMoney.live
0 ETH0.000065541
Withdraw My Divi...204090832024-07-29 1:57:35192 days ago1722218255IN
BillionMoney.live
0 ETH0.000065541
Withdraw My Divi...204027412024-07-28 4:45:35193 days ago1722141935IN
BillionMoney.live
0 ETH0.0006274910
Withdraw My Divi...204027412024-07-28 4:45:35193 days ago1722141935IN
BillionMoney.live
0 ETH0.000062741
Buy Level155596082022-09-18 9:41:47872 days ago1663494107IN
BillionMoney.live
0 ETH0.000310
Withdraw My Divi...155593212022-09-18 8:43:59872 days ago1663490639IN
BillionMoney.live
0 ETH0.000136692
Withdraw My Divi...155590842022-09-18 7:56:23872 days ago1663487783IN
BillionMoney.live
0 ETH0.000047342
Withdraw My Divi...144452122022-03-23 22:17:541050 days ago1648073874IN
BillionMoney.live
0 ETH0.0074819176.87084349
Change PA Xaddre...144451522022-03-23 22:01:191050 days ago1648072879IN
BillionMoney.live
0 ETH0.0019312966.01586404
Buy Level144428102022-03-23 13:22:451050 days ago1648041765IN
BillionMoney.live
0 ETH0.0118280424.77549908
Buy Level144428042022-03-23 13:20:301050 days ago1648041630IN
BillionMoney.live
0 ETH0.0050426216.99863874
Buy Level144428002022-03-23 13:19:501050 days ago1648041590IN
BillionMoney.live
0 ETH0.00512416.5666658
Buy Level144427872022-03-23 13:18:131050 days ago1648041493IN
BillionMoney.live
0 ETH0.0073998420.97972037
Buy Level144427752022-03-23 13:16:051050 days ago1648041365IN
BillionMoney.live
0 ETH0.009220626.93373777
Buy Level144427692022-03-23 13:14:121050 days ago1648041252IN
BillionMoney.live
0 ETH0.0085309722.66531184
Buy Level144427602022-03-23 13:12:101050 days ago1648041130IN
BillionMoney.live
0 ETH0.0100521418.60409235
Buy Level143731712022-03-12 17:04:321061 days ago1647104672IN
BillionMoney.live
0 ETH0.0190765628.82592669
Buy Level134269512021-10-16 4:44:521209 days ago1634359492IN
BillionMoney.live
0 ETH0.00893826146
Buy Level134269162021-10-16 4:32:411209 days ago1634358761IN
BillionMoney.live
0 ETH0.0045303574
Buy Level134268392021-10-16 4:14:361209 days ago1634357676IN
BillionMoney.live
0 ETH0.0048976880
Buy Level134268102021-10-16 4:06:181209 days ago1634357178IN
BillionMoney.live
0 ETH0.0050813483
Buy Level134267472021-10-16 3:54:261209 days ago1634356466IN
BillionMoney.live
0 ETH0.00765262125
Change PA Xaddre...134267302021-10-16 3:48:531209 days ago1634356133IN
BillionMoney.live
0 ETH0.002111572.17596874
Withdraw My Divi...130497602021-08-18 14:30:531267 days ago1629297053IN
BillionMoney.live
0 ETH0.0031634440.38407521
Change PA Xaddre...130497062021-08-18 14:18:171267 days ago1629296297IN
BillionMoney.live
0 ETH0.0013815547.22453376
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
billionMoney

Compiler Version
v0.5.16+commit.9c3226ce

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2020-03-27
*/

pragma solidity 0.5.16; /*


___________________________________________________________________
  _      _                                        ______           
  |  |  /          /                                /              
--|-/|-/-----__---/----__----__---_--_----__-------/-------__------
  |/ |/    /___) /   /   ' /   ) / /  ) /___)     /      /   )     
__/__|____(___ _/___(___ _(___/_/_/__/_(___ _____/______(___/__o_o_



 ██████╗ ██╗██╗     ██╗     ██╗ ██████╗ ███╗   ██╗    ███╗   ███╗ ██████╗ ███╗   ██╗███████╗██╗   ██╗
 ██╔══██╗██║██║     ██║     ██║██╔═══██╗████╗  ██║    ████╗ ████║██╔═══██╗████╗  ██║██╔════╝╚██╗ ██╔╝
 ██████╔╝██║██║     ██║     ██║██║   ██║██╔██╗ ██║    ██╔████╔██║██║   ██║██╔██╗ ██║█████╗   ╚████╔╝ 
 ██╔══██╗██║██║     ██║     ██║██║   ██║██║╚██╗██║    ██║╚██╔╝██║██║   ██║██║╚██╗██║██╔══╝    ╚██╔╝  
 ██████╔╝██║███████╗███████╗██║╚██████╔╝██║ ╚████║    ██║ ╚═╝ ██║╚██████╔╝██║ ╚████║███████╗   ██║   
 ╚═════╝ ╚═╝╚══════╝╚══════╝╚═╝ ╚═════╝ ╚═╝  ╚═══╝    ╚═╝     ╚═╝ ╚═════╝ ╚═╝  ╚═══╝╚══════╝   ╚═╝   
                                                                                            


-------------------------------------------------------------------
 Copyright (c) 2020 onwards Billion Money Inc. ( https://billionmoney.live )
-------------------------------------------------------------------
 */



//*******************************************************************//
//------------------ Contract to Manage Ownership -------------------//
//*******************************************************************//
    
contract owned {
    address payable public owner;
    address payable internal newOwner;

    event OwnershipTransferred(address indexed _from, address indexed _to);

    constructor() public {

    }

    modifier onlyOwner {
        require(msg.sender == owner);
        _;
    }

    function transferOwnership(address payable _newOwner) public onlyOwner {
        newOwner = _newOwner;
    }

    //this flow is to prevent transferring ownership to wrong wallet by mistake
    function acceptOwnership() public {
        require(msg.sender == newOwner);
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
        newOwner = address(0);
    }
}



//*******************************************************************//
//------------------         PAX interface        -------------------//
//*******************************************************************//

 interface paxInterface
 {
    function transfer(address _to, uint256 _amount) external returns (bool);
    function transferFrom(address _from, address _to, uint256 _amount) external returns (bool);
 }




//*******************************************************************//
//------------------        MAIN contract         -------------------//
//*******************************************************************//

contract billionMoney is owned {

    // Replace below address with main PAX token
    address public paxTokenAddress;
    uint public maxDownLimit = 2;
    uint public levelLifeTime = 15552000;  // =180 days;
    uint public lastIDCount = 0;
    uint public defaultRefID = 1;   //this ref ID will be used if user joins without any ref ID
    
    address public specialAddress1;
    address public specialAddress2;


    struct userInfo {
        bool joined;
        uint id;
        uint referrerID;
        address[] referral;
        mapping(uint => uint) levelExpired;
    }

    mapping(uint => uint) public priceOfLevel;
    mapping(uint => uint) public distForLevel;
    mapping(uint => uint) public autoPoolDist;
    mapping(uint => uint) public uniLevelDistPart;
    uint256 public totalDivCollection;
    uint public globalDivDistPart = 0.6 ether;
    uint public systemDistPart = 1 ether;
    
    uint public oneMonthDuration = 2592000; // = 30 days
    uint public thisMonthEnd;
    struct divPoolRecord
    {
        uint totalDividendCollection;
        uint totalEligibleCount;
    }
    divPoolRecord[] public divPoolRecords;
    mapping ( address => uint) public eligibleUser; // if val > 0 then user is eligible from this divPoolRecords;
    mapping(uint => mapping ( address => bool)) public dividendReceived; // dividend index => user => true/false

    struct autoPool
    {
        uint userID;
        uint autoPoolParent;
    }
    mapping(uint => autoPool[]) public autoPoolLevel;  // users lavel records under auto pool scheme
    mapping(address => mapping(uint => uint)) public autoPoolIndex; //to find index of user inside auto pool
    uint[10] public nextMemberFillIndex;  // which auto pool index is in top of queue to fill in 
    uint[10] public nextMemberFillBox;   // 3 downline to each, so which downline need to fill in

    uint[10][10] public autoPoolSubDist;

    

    mapping (address => userInfo) public userInfos;
    mapping (uint => address payable) public userAddressByID;

    mapping(address => uint256) public totalGainInMainNetwork; //Main lavel income system income will go here with owner mapping
    mapping(address => uint256) public totalGainInUniLevel; 
    mapping(address => uint256) public totalGainInAutoPool;
    mapping(address => uint256) public netTotalUserWithdrawable;  //Dividend is not included in it


    event regLevelEv(address indexed _userWallet, uint indexed _userID, uint indexed _referrerID, uint _time, address _refererWallet, uint _originalReferrer);
    event levelBuyEv(address indexed _user, uint _level, uint _amount, uint _time);
    event paidForLevelEv(address indexed _user, address indexed _referral, uint _level, uint _amount, uint _time);
    event lostForLevelEv(address indexed _user, address indexed _referral, uint _level, uint _amount, uint _time);
    event payDividendEv(uint timeNow,uint payAmount,address paitTo);
    event updateAutoPoolEv(uint timeNow,uint autoPoolLevelIndex,uint userIndexInAutoPool, address user);
    event autoPoolPayEv(uint timeNow,address paidTo,uint paidForLevel, uint paidAmount, address paidAgainst);
    event paidForUniLevelEv(uint timeNow,address PaitTo,uint Amount);
    
    constructor(address payable ownerAddress, address payable ID1address, address _specialAddress1, address _specialAddress2) public {
        owner = ownerAddress;
        specialAddress1 = _specialAddress1;
        specialAddress2 = _specialAddress2;
        emit OwnershipTransferred(address(0), owner);
        address payable ownerWallet = ID1address;
        priceOfLevel[1] = 20 ether;
        priceOfLevel[2] = 20 ether;
        priceOfLevel[3] = 40 ether;
        priceOfLevel[4] = 140 ether;
        priceOfLevel[5] = 600 ether;
        priceOfLevel[6] = 5000 ether;
        priceOfLevel[7] = 5500 ether;
        priceOfLevel[8] = 10000 ether;
        priceOfLevel[9] = 20000 ether;
        priceOfLevel[10] = 40000 ether;

        distForLevel[1] = 10 ether;
        distForLevel[2] = 15 ether;
        distForLevel[3] = 30 ether;
        distForLevel[4] = 120 ether;
        distForLevel[5] = 500 ether;
        distForLevel[6] = 4700 ether;
        distForLevel[7] = 5000 ether;
        distForLevel[8] = 9000 ether;
        distForLevel[9] = 18000 ether;
        distForLevel[10] = 35000 ether;

        autoPoolDist[1] = 4 ether;
        autoPoolDist[2] = 5 ether;
        autoPoolDist[3] = 10 ether;
        autoPoolDist[4] = 20 ether;
        autoPoolDist[5] = 100 ether;
        autoPoolDist[6] = 300 ether;
        autoPoolDist[7] = 500 ether;
        autoPoolDist[8] = 1000 ether;
        autoPoolDist[9] = 2000 ether;
        autoPoolDist[10] = 5000 ether;        

        uniLevelDistPart[1] = 1 ether;
        uniLevelDistPart[2] = 0.6 ether;
        uniLevelDistPart[3] = 0.4 ether;

        for (uint i = 4 ; i < 11; i++)
        {
           uniLevelDistPart[i] =  0.2 ether;
        } 

        userInfo memory UserInfo;
        lastIDCount++;

        UserInfo = userInfo({
            joined: true,
            id: lastIDCount,
            referrerID: 0,
            referral: new address[](0)
        });
        userInfos[ownerWallet] = UserInfo;
        userAddressByID[lastIDCount] = ownerWallet;

        for(uint i = 1; i <= 10; i++) {
            userInfos[ownerWallet].levelExpired[i] = 99999999999;
            emit paidForLevelEv(address(0), ownerWallet, i, distForLevel[i], now);
        }

        autoPool memory temp;
        for (uint i = 11 ; i < 21; i++)
        {
           uniLevelDistPart[i] =  0.1 ether;
           uint a = i-11;
           temp.userID = lastIDCount;  
           autoPoolLevel[a].push(temp);
         
           autoPoolIndex[ownerWallet][a] = 0;
           uint distPart = autoPoolDist[a+1];
           autoPoolSubDist[a][0] = distPart * 1250 / 10000;
           autoPoolSubDist[a][1] = distPart * 1250 / 10000;
           autoPoolSubDist[a][2] = distPart * 1000 / 10000;
           autoPoolSubDist[a][3] = distPart * 750 / 10000;
           autoPoolSubDist[a][4] = distPart * 750 / 10000;
           autoPoolSubDist[a][5] = distPart * 750 / 10000;
           autoPoolSubDist[a][6] = distPart * 750 / 10000;
           autoPoolSubDist[a][7] = distPart * 1000 / 10000;
           autoPoolSubDist[a][8] = distPart * 1250 / 10000;                                                                             
           autoPoolSubDist[a][9] = distPart * 1250 / 10000;
        } 

        startNextMonth();
        eligibleUser[ownerWallet] = 1;
        emit regLevelEv(ownerWallet, 1, 0, now, address(this), 0);

    }

    function () payable external {
        regUser(defaultRefID);
    }

    function regUser(uint _referrerID) public returns(bool) 
    {
        //this saves gas while using this multiple times
        address msgSender = msg.sender; 
        uint originalReferrer = _referrerID;

        //checking all conditions
        require(!userInfos[msgSender].joined, 'User exist');
        if(!(_referrerID > 0 && _referrerID <= lastIDCount)) _referrerID = defaultRefID;
        uint fct = 1;
        if(userInfos[userAddressByID[_referrerID]].referral.length >= maxDownLimit) _referrerID = userInfos[findFreeReferrer(userAddressByID[_referrerID])].id;


        //transferring PAX tokens from smart user to smart contract for level 1
        if(!(msgSender==specialAddress1 || msgSender == specialAddress2)){
            require( paxInterface(paxTokenAddress).transferFrom(msgSender, address(this), priceOfLevel[1]),"token transfer failed");
        }
        else
        {
            fct = 0;
        }
        
        //update variables
        userInfo memory UserInfo;
        lastIDCount++;

        UserInfo = userInfo({
            joined: true,
            id: lastIDCount,
            referrerID: _referrerID,
            referral: new address[](0)
        });

        userInfos[msgSender] = UserInfo;
        userAddressByID[lastIDCount] = msg.sender;

        userInfos[msgSender].levelExpired[1] = now + levelLifeTime;

        userInfos[userAddressByID[_referrerID]].referral.push(msgSender);

        totalGainInMainNetwork[owner] += systemDistPart * fct;
        netTotalUserWithdrawable[owner] += systemDistPart * fct;

        if(thisMonthEnd < now) startNextMonth();

        uint lastDivPoolIndex = divPoolRecords.length -1;
        divPoolRecords[lastDivPoolIndex].totalDividendCollection += globalDivDistPart * fct;
        totalDivCollection += globalDivDistPart * fct;

        address usr = userAddressByID[_referrerID];
        if(eligibleUser[usr] == 0)
        {
            if(userInfos[usr].referral.length > 9)
            {
                eligibleUser[usr] = lastDivPoolIndex;
                divPoolRecords[lastDivPoolIndex + 1].totalEligibleCount++;
            }
        }

        require(payForLevel(1, msgSender,fct),"pay for level fail");
        emit regLevelEv(msgSender, lastIDCount, _referrerID, now,userAddressByID[_referrerID], originalReferrer );
        emit levelBuyEv(msgSender, 1, priceOfLevel[1] * fct, now);
        require(updateNPayAutoPool(1,msgSender,fct),"auto pool update fail");
        return true;
    }

    function viewCurrentMonthDividend() public view returns(uint256 amount, uint256 indexCount)
    {
        uint256 length = divPoolRecords.length;
        return (divPoolRecords[length-1].totalDividendCollection,length);
    }

    function buyLevel(uint _level) public returns(bool){
        
        //this saves gas while using this multiple times
        address msgSender = msg.sender;   
        
        
        //checking conditions
        require(userInfos[msgSender].joined, 'User not exist'); 
        uint fct=1;
        require(_level >= 1 && _level <= 10, 'Incorrect level');
        
        //transfer tokens
        if(!(msgSender==specialAddress1 || msgSender == specialAddress2)){
            require( paxInterface(paxTokenAddress).transferFrom(msgSender, address(this), priceOfLevel[_level]),"token transfer failed");
        }
        else
        {
            fct = 0;
        }
        
        
        //updating variables
        if(_level == 1) {
            userInfos[msgSender].levelExpired[1] += levelLifeTime;
        }
        else {
            for(uint l =_level - 1; l > 0; l--) require(userInfos[msgSender].levelExpired[l] >= now, 'Buy the previous level');

            if(userInfos[msgSender].levelExpired[_level] == 0) userInfos[msgSender].levelExpired[_level] = now + levelLifeTime;
            else userInfos[msgSender].levelExpired[_level] += levelLifeTime;
        }

        require(payForLevel(_level, msgSender,fct),"pay for level fail");
        emit levelBuyEv(msgSender, _level, priceOfLevel[_level] * fct, now);
        require(updateNPayAutoPool(_level,msgSender,fct),"auto pool update fail");
        return true;
    }
    

    function payForLevel(uint _level, address _user,uint fct) internal returns (bool){
        address referer;
        address referer1;
        address referer2;
        address referer3;
        address referer4;

        if(_level == 1 || _level == 6) {
            referer = userAddressByID[userInfos[_user].referrerID];
            payForUniLevel(userInfos[_user].referrerID,fct);
            totalGainInMainNetwork[owner] += systemDistPart * fct;
            netTotalUserWithdrawable[owner] += systemDistPart * fct;
        }
        else if(_level == 2 || _level == 7) {
            referer1 = userAddressByID[userInfos[_user].referrerID];
            referer = userAddressByID[userInfos[referer1].referrerID];
        }
        else if(_level == 3 || _level == 8) {
            referer1 = userAddressByID[userInfos[_user].referrerID];
            referer2 = userAddressByID[userInfos[referer1].referrerID];
            referer = userAddressByID[userInfos[referer2].referrerID];
        }
        else if(_level == 4 || _level == 9) {
            referer1 = userAddressByID[userInfos[_user].referrerID];
            referer2 = userAddressByID[userInfos[referer1].referrerID];
            referer3 = userAddressByID[userInfos[referer2].referrerID];
            referer = userAddressByID[userInfos[referer3].referrerID];
        }
        else if(_level == 5 || _level == 10) {
            referer1 = userAddressByID[userInfos[_user].referrerID];
            referer2 = userAddressByID[userInfos[referer1].referrerID];
            referer3 = userAddressByID[userInfos[referer2].referrerID];
            referer4 = userAddressByID[userInfos[referer3].referrerID];
            referer = userAddressByID[userInfos[referer4].referrerID];
        }


        if(!userInfos[referer].joined) referer = userAddressByID[defaultRefID];

       
        if(userInfos[referer].levelExpired[_level] >= now) {
            totalGainInMainNetwork[referer] += distForLevel[_level] * fct;
            netTotalUserWithdrawable[referer] += distForLevel[_level] * fct;
            emit paidForLevelEv(referer, msg.sender, _level, distForLevel[_level] * fct, now);

        }
        else{

            emit lostForLevelEv(referer, msg.sender, _level, distForLevel[_level] * fct, now);
            payForLevel(_level, referer,fct);

        }
        return true;

    }

    function findFreeReferrer(address _user) public view returns(address) {
        if(userInfos[_user].referral.length < maxDownLimit) return _user;

        address[] memory referrals = new address[](126);
        referrals[0] = userInfos[_user].referral[0];
        referrals[1] = userInfos[_user].referral[1];

        address freeReferrer;
        bool noFreeReferrer = true;

        for(uint i = 0; i < 126; i++) {
            if(userInfos[referrals[i]].referral.length == maxDownLimit) {
                if(i < 62) {
                    referrals[(i+1)*2] = userInfos[referrals[i]].referral[0];
                    referrals[(i+1)*2+1] = userInfos[referrals[i]].referral[1];
                }
            }
            else {
                noFreeReferrer = false;
                freeReferrer = referrals[i];
                break;
            }
        }

        require(!noFreeReferrer, 'No Free Referrer');

        return freeReferrer;
    }

    function payForUniLevel(uint _referrerID, uint fct) internal returns(bool)
    {
        uint256 endID = 21;
        for (uint i = 0 ; i < endID; i++)
        {
            address usr = userAddressByID[_referrerID];
            _referrerID = userInfos[usr].referrerID;
            if(usr == address(0)) usr = userAddressByID[defaultRefID];
            uint Amount = uniLevelDistPart[i + 1 ]  * fct;
            totalGainInUniLevel[usr] += Amount;
            netTotalUserWithdrawable[usr] += Amount;
            emit paidForUniLevelEv(now,usr, Amount);
        }
        return true;
    }

    event withdrawMyGainEv(uint timeNow,address caller,uint totalAmount);
    function withdrawMyDividendNAll() public returns(uint)
    {
        address payable caller = msg.sender;
        require(userInfos[caller].joined, 'User not exist');
        uint from = eligibleUser[caller];
        uint totalAmount;
        if(from > 0)
        {
            from --;
            uint lastDivPoolIndex = divPoolRecords.length;
            if( lastDivPoolIndex > 1 )
            {
                lastDivPoolIndex = lastDivPoolIndex -2;

                for(uint i=0;i<150;i++)
                {
                    if(lastDivPoolIndex < i) break;
                    uint curIndex = lastDivPoolIndex - i;
                    if( curIndex >= from && !dividendReceived[curIndex][caller] )
                    {
                        totalAmount +=  ( divPoolRecords[curIndex].totalDividendCollection * 10000000000 /  divPoolRecords[curIndex].totalEligibleCount ) / 10000000000;
                        dividendReceived[curIndex][caller] = true;
                    }

                }
            }
        }
        if(totalAmount > 0)
        {
            totalDivCollection -= totalAmount;
            emit payDividendEv(now, totalAmount, caller);
        }
        totalAmount = totalAmount + netTotalUserWithdrawable[caller];
        netTotalUserWithdrawable[caller] = 0;
        totalGainInAutoPool[caller] = 0;
        totalGainInMainNetwork[caller] = 0;
        totalGainInUniLevel[caller] = 0;
        require(paxInterface(paxTokenAddress).transfer(msg.sender, totalAmount),"token transfer failed");
        emit withdrawMyGainEv(now, caller, totalAmount);
        
    }

    function viewMyDividendPotential(address user) public view returns(uint256 totalDivPotential, uint256 lastUnPaidIndex)
    {
        if (eligibleUser[user] > 0 )
        {
            uint256 i;
            uint256 lastIndex = divPoolRecords.length -1;
            for(i=1;i<50;i++)
            {
                lastUnPaidIndex = lastIndex - i;
                if(dividendReceived[lastUnPaidIndex][user] == true) break;
                totalDivPotential = totalDivPotential + ( divPoolRecords[lastUnPaidIndex].totalDividendCollection * 10000000000 /  divPoolRecords[lastUnPaidIndex].totalEligibleCount);               
            }
            return (totalDivPotential, lastUnPaidIndex + 1);
        }
        return (0,0);
    }

    function viewTimestampSinceJoined(address usr) public view returns(uint256[10] memory timeSinceJoined )
    {
        if(userInfos[usr].joined)
        {
            for(uint256 i=0;i<10;i++)
            {
                uint256 t = userInfos[usr].levelExpired[i+1];
                if(t>now)
                {
                    timeSinceJoined[i] = (t-now);
                }
            }
        }
        return timeSinceJoined;
    }

    
    
    function divPoolAllLevel() public view returns (uint256[10] memory divPoolArray)
    {
        for(uint256 i=0;i<10;i++)
        {
            divPoolArray[i] = divPoolRecords[i].totalDividendCollection;
        }
        return divPoolArray;
    }
    

    function startNextMonth() public returns(bool)
    {
        require(thisMonthEnd < now,"month end not reached");
        thisMonthEnd = now + oneMonthDuration;
        divPoolRecord memory temp;
        temp.totalEligibleCount = 1;
        divPoolRecords.push(temp);
        uint lastDivPoolIndex = divPoolRecords.length -1;
        if (lastDivPoolIndex > 0)
        {
            divPoolRecords[lastDivPoolIndex].totalEligibleCount = divPoolRecords[lastDivPoolIndex -1].totalEligibleCount;
        }
        return (true);
    }

    function updateNPayAutoPool(uint _level,address _user, uint fct) internal returns (bool)
    {
        uint a = _level -1;
        uint len = autoPoolLevel[a].length;
        autoPool memory temp;
        temp.userID = userInfos[_user].id;
        temp.autoPoolParent = nextMemberFillIndex[a];       
        autoPoolLevel[a].push(temp);        
        uint idx = nextMemberFillIndex[a];

        address payable usr = userAddressByID[autoPoolLevel[a][idx].userID];
        if(usr == address(0)) usr = userAddressByID[defaultRefID];
        for(uint i=0;i<10;i++)
        {
            uint amount = autoPoolSubDist[a][i]  * fct;
            totalGainInAutoPool[usr] += amount;
            netTotalUserWithdrawable[usr] += amount;
            emit autoPoolPayEv(now, usr,a+1, amount, _user);
            idx = autoPoolLevel[a][idx].autoPoolParent; 
            usr = userAddressByID[autoPoolLevel[a][idx].userID];
            if(usr == address(0)) usr = userAddressByID[defaultRefID];
        }

        if(nextMemberFillBox[a] == 0)
        {
            nextMemberFillBox[a] = 1;
        }   
        else if (nextMemberFillBox[a] == 1)
        {
            nextMemberFillBox[a] = 2;
        }
        else
        {
            nextMemberFillIndex[a]++;
            nextMemberFillBox[a] = 0;
        }
        autoPoolIndex[_user][_level - 1] = len;
        emit updateAutoPoolEv(now, _level, len, _user);
        return true;
    }


    function viewUserReferral(address _user) public view returns(address[] memory) {
        return userInfos[_user].referral;
    }

    function viewUserLevelExpired(address _user, uint _level) public view returns(uint) {
        return userInfos[_user].levelExpired[_level];
    }

    function bytesToAddress(bytes memory bys) private pure returns (address addr) {
        assembly {
            addr := mload(add(bys, 20))
        }
    }
    
    
    /*======================================
    =            ADMIN FUNCTIONS           =
    ======================================*/
    
    function changePAXaddress(address newPAXaddress) onlyOwner public returns(string memory){
        //if owner makes this 0x0 address, then it will halt all the operation of the contract. This also serves as security feature.
        //so owner can halt it in any problematic situation. Owner can then input correct address to make it all come back to normal.
        paxTokenAddress = newPAXaddress;
        return("PAX address updated successfully");
    }
    
    function changeDefaultRefID(uint newDefaultRefID) onlyOwner public returns(string memory){
        //this ref ID will be assigned to user who joins without any referral ID.
        defaultRefID = newDefaultRefID;
        return("Default Ref ID updated successfully");
    }





}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address payable","name":"ownerAddress","type":"address"},{"internalType":"address payable","name":"ID1address","type":"address"},{"internalType":"address","name":"_specialAddress1","type":"address"},{"internalType":"address","name":"_specialAddress2","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timeNow","type":"uint256"},{"indexed":false,"internalType":"address","name":"paidTo","type":"address"},{"indexed":false,"internalType":"uint256","name":"paidForLevel","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"paidAmount","type":"uint256"},{"indexed":false,"internalType":"address","name":"paidAgainst","type":"address"}],"name":"autoPoolPayEv","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_user","type":"address"},{"indexed":false,"internalType":"uint256","name":"_level","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_time","type":"uint256"}],"name":"levelBuyEv","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_user","type":"address"},{"indexed":true,"internalType":"address","name":"_referral","type":"address"},{"indexed":false,"internalType":"uint256","name":"_level","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_time","type":"uint256"}],"name":"lostForLevelEv","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_user","type":"address"},{"indexed":true,"internalType":"address","name":"_referral","type":"address"},{"indexed":false,"internalType":"uint256","name":"_level","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_time","type":"uint256"}],"name":"paidForLevelEv","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timeNow","type":"uint256"},{"indexed":false,"internalType":"address","name":"PaitTo","type":"address"},{"indexed":false,"internalType":"uint256","name":"Amount","type":"uint256"}],"name":"paidForUniLevelEv","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timeNow","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"payAmount","type":"uint256"},{"indexed":false,"internalType":"address","name":"paitTo","type":"address"}],"name":"payDividendEv","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_userWallet","type":"address"},{"indexed":true,"internalType":"uint256","name":"_userID","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"_referrerID","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_time","type":"uint256"},{"indexed":false,"internalType":"address","name":"_refererWallet","type":"address"},{"indexed":false,"internalType":"uint256","name":"_originalReferrer","type":"uint256"}],"name":"regLevelEv","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timeNow","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"autoPoolLevelIndex","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"userIndexInAutoPool","type":"uint256"},{"indexed":false,"internalType":"address","name":"user","type":"address"}],"name":"updateAutoPoolEv","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timeNow","type":"uint256"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"totalAmount","type":"uint256"}],"name":"withdrawMyGainEv","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"autoPoolDist","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":"autoPoolIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"autoPoolLevel","outputs":[{"internalType":"uint256","name":"userID","type":"uint256"},{"internalType":"uint256","name":"autoPoolParent","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"autoPoolSubDist","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_level","type":"uint256"}],"name":"buyLevel","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"newDefaultRefID","type":"uint256"}],"name":"changeDefaultRefID","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newPAXaddress","type":"address"}],"name":"changePAXaddress","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"defaultRefID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"distForLevel","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"divPoolAllLevel","outputs":[{"internalType":"uint256[10]","name":"divPoolArray","type":"uint256[10]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"divPoolRecords","outputs":[{"internalType":"uint256","name":"totalDividendCollection","type":"uint256"},{"internalType":"uint256","name":"totalEligibleCount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"dividendReceived","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"eligibleUser","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"findFreeReferrer","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"globalDivDistPart","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lastIDCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"levelLifeTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxDownLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"netTotalUserWithdrawable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"nextMemberFillBox","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"nextMemberFillIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"oneMonthDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address payable","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paxTokenAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"priceOfLevel","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_referrerID","type":"uint256"}],"name":"regUser","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"specialAddress1","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"specialAddress2","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"startNextMonth","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"systemDistPart","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"thisMonthEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalDivCollection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"totalGainInAutoPool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"totalGainInMainNetwork","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"totalGainInUniLevel","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address payable","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"uniLevelDistPart","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"userAddressByID","outputs":[{"internalType":"address payable","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userInfos","outputs":[{"internalType":"bool","name":"joined","type":"bool"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"referrerID","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"viewCurrentMonthDividend","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"indexCount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"viewMyDividendPotential","outputs":[{"internalType":"uint256","name":"totalDivPotential","type":"uint256"},{"internalType":"uint256","name":"lastUnPaidIndex","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"viewTimestampSinceJoined","outputs":[{"internalType":"uint256[10]","name":"timeSinceJoined","type":"uint256[10]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint256","name":"_level","type":"uint256"}],"name":"viewUserLevelExpired","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"viewUserReferral","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdrawMyDividendNAll","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"}]

6080604052600260035562ed4e0060045560006005556001600655670853a0d2313c0000600e55670de0b6b3a7640000600f5562278d006010553480156200004657600080fd5b50604051620039ad380380620039ad833981810160405260808110156200006c57600080fd5b5080516020820151604080840151606090940151600080546001600160a01b038087166001600160a01b03199283161780845560078054838b1690851617905560088054838716941693909317909255935195969495929316917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36801158e460913d000007f92e85d02570a8092d09a6e3a57665bc3815a2699a4074001bf1ccabf660f5a368190557f6cde3cea4b3a3fb2488b2808bae7556f4a405e50f65e1794383bc026131b13c381905568022b1c8c1227a000007fc575c31fea594a6eb97c8e9d3f9caee4c16218c6ef37e923234c0fe9014a61e755680796e3ea3f8ab000007f8dc18c4ccfd75f5c815b63770fa542fd953e8fef7e0e44bbdd4913470ce7e9cb55682086ac3510526000007f74b05292d1d4b2b48b65261b07099d24244bcb069f138d9a6bfdcf776becac4c5569010f0cf064dd592000007fbb6daa0c283751197dfdc76590680f9005e97d6f23870deb1164ab60b28b9f5f81905569012a27d53bc0487000007fae6299332bcd708cd60e3a8defa55de28078a50a4cf2b3de3a546253240ff9e15569021e19e0c9bab24000007fc7694af312c4f286114180fd0ba6a52461fcee8a381636770b19a343af92538a5569043c33c19375648000007f87e8a52529e8ece4ef759037313542a6429ff494a9fab9027fb79db90124eba655690878678326eac90000007f502e20e4e219e0c509d693958f17384c185f07a810a5d31c46c2be981e979c2555678ac7230489e800007fbbc70db1b6c7afd11e79c0fb0051300458f1a3acb8ee9789d9b6b26c61ad9bc781905567d02ab486cedc00007fbff4442b8ed600beeb8e26b1279a0f0d14c6edfaec26d968ee13c86f7d4c2ba8556801a055690d9db800007fa856840544dc26124927add067d799967eac11be13e14d82cc281ea46fa397595568068155a43676e000007fe1eb2b2161a492c07c5a334e48012567cba93ec021043f53c1955516a3c5a84155681b1ae4d6e2ef5000007ff35035bc2b01d44bd35a1dcdc552315cffb73da35cfd60570b7b777f98036f9f81905568fec99a4a552ff000007f10d9dd018e4cae503383c9f804c1c1603ada5856ee7894375d9b97cd8c8b27db557f22e39f61d1e4986b4f116cea9067f62cc77d74dff1780ae9c8b5166d1dd288298390556901e7e4171bf4d3a000007f2c1fd36ba11b13b555f58753742999069764391f450ca8727fe8a3eeffe67775556903cfc82e37e9a74000007f825eb4cda6b8b44578c55770496c59e6dc3cf2235f690bcdaf51a61898ceb284556907695a92c20d6fe000007f3e57c57b03145299956be61386751c5b285d460d484d5c2403a6be086d9d6baa55673782dace9d9000007f72c6bfb7988af3a1efa6568f02a999bc52252641c659d85961ca3d372b57d5cf55674563918244f400007fa50eece07c7db1631545c0069bd8f5f54d5935e215d59097edf258a44ba91634557f64c15cc42be7899b001f818cf4433057002112c418d1d3a67cd5cb453051d33e919091557f12d0c11577e2f0950f57c455c117796550b79f444811db8ba2f69c57b646c7849290925568056bc75e2d631000007febae6141bae5521e99e0a8d610356b0f501fea54980b59c84841db43ba7204f455681043561a88293000007f0387e9d1203691d8e3362a7e4c6723de358a4010d7f31ecbec3fbfc61d1c75fc557ff5559028dc9ba50d75343c779b2f75e13a84a14662932fc67a486f263ca31a9691909155683635c9adc5dea000007f71f482bdabd1ea844d62c952b094e632959690d7448ca2aab34034ec9856935855686c6b935b8bbd4000007fe12d5ff10640a555479d85b7ab5f83b5dbd3cf6ac615eec77e24e0984b75a038557fc47c2f4ab42fe2617dd76ca1eb9781d09fced5e5671df71824e2f8a8f694e02455600c602052670de0b6b3a76400007fd421a5181c571bba3f01190c922c3b2a896fc1d84e86c9f17ac10e67ebef8b5c55670853a0d2313c00007f5d6016397a73f5e079297ac5a36fef17b4d9c3831618e63ab105738020ddd72055600360005267058d15e1762800007fc0da782485e77ae272268ae0a3ff44c1552ecb60b3743924de17a815e0a3cfd7558260045b600b811015620006ab576000818152600c602052604090206702c68af0bb14000090556001016200067f565b50620006b662000b87565b5060058054600190810191829055604080516080810182528281526020808201948552600082840181815284518281528084018652606085019081526001600160a01b0389168352608f8452949091208351815460ff1916901515178155955194860194909455925160028501559051805191938493909262000740926003850192019062000bb1565b5050600554600090815260906020526040902080546001600160a01b0319166001600160a01b0385161790555060015b600a8111620007f1576001600160a01b0383166000818152608f60209081526040808320858452600401825280832064174876e7ff9055600a8252808320548151868152928301524282820152517f0734110f42782e4b9e753c59dd68a1c5a95d493d0055b9e2ac5bf868a7d3e4ca9181900360600190a360010162000770565b50620007fc62000c1b565b600b5b6015811015620009c9576000818152600c6020908152604080832067016345785d8a000090556005548552600a198401808452601583528184208054600181810183559186528486208851600290920201908155878501519101556001600160a01b038816845260168352818420818552835281842084905560091985018452600b909252909120546127106104e2820204602b83600a81106200089f57fe5b600a0201600001556127106104e2820204602b83600a8110620008be57fe5b600a0201600101556127106103e8820204602b83600a8110620008dd57fe5b600a0201600201556127106102ee820204602b83600a8110620008fc57fe5b600a0201600301556127106102ee820204602b83600a81106200091b57fe5b600a0201600401556127106102ee820204602b83600a81106200093a57fe5b600a0201600501556127106102ee820204602b83600a81106200095957fe5b600a0201600601556127106103e8820204602b83600a81106200097857fe5b600a0201600701556127106104e2820204602b83600a81106200099757fe5b600a0201600801556127106104e2820204602b83600a8110620009b657fe5b600a0201600901555050600101620007ff565b50620009dd6001600160e01b0362000a5216565b506001600160a01b03831660008181526013602090815260408083206001908190558151428152309381019390935282820184905290519293909290917f3763287bad057fbb8d9daa3d5b43669cf979ff2e772207bb964aac646d3bcf5e919081900360600190a45050505050505062000c5c565b6000426011541062000aab576040805162461bcd60e51b815260206004820152601560248201527f6d6f6e746820656e64206e6f7420726561636865640000000000000000000000604482015290519081900360640190fd5b601054420160115562000abd62000c1b565b600160208201818152601280549283018155600081905283517fbb8a6a4669ba250d26cd7a459eca9d215f8307e33aebe50379bc5a3617ec344460029094029384015590517fbb8a6a4669ba250d26cd7a459eca9d215f8307e33aebe50379bc5a3617ec3445909201919091555460001901801562000b7d576012600182038154811062000b4757fe5b9060005260206000209060020201600101546012828154811062000b6757fe5b9060005260206000209060020201600101819055505b6001925050505b90565b60405180608001604052806000151581526020016000815260200160008152602001606081525090565b82805482825590600052602060002090810192821562000c09579160200282015b8281111562000c0957825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019062000bd2565b5062000c1792915062000c35565b5090565b604051806040016040528060008152602001600081525090565b62000b8491905b8082111562000c175780546001600160a01b031916815560010162000c3c565b612d418062000c6c6000396000f3fe60806040526004361061027d5760003560e01c80638845ab211161014f578063c2afdda7116100c1578063ef3c31e51161007a578063ef3c31e5146109ee578063f1e1e13f14610a21578063f2dd372d14610a36578063f2fde38b14610a4b578063f6838a7214610a7e578063fd89acb914610aa85761027d565b8063c2afdda7146108f5578063cb7bcbb11461090a578063d1ddc6a31461093a578063d28400731461094f578063d96256be14610988578063e87bf925146109bb5761027d565b8063908f4cc811610113578063908f4cc8146107fc578063987099cf146108265780639a9ad93a14610859578063ad5a6f3914610883578063b234ba2a14610898578063b8e295b2146108c25761027d565b80638845ab21146107455780638853b53e1461075a57806388e728d4146107845780638b569b2b146107bd5780638da5cb5b146107e75761027d565b806349447fb9116101f3578063641c108f116101ac578063641c108f1461060457806364e6ad3f146106195780636554266c146106655780637042bd211461067a57806379ba50971461068f578063813d2714146106a65761027d565b806349447fb9146104da5780634a4baa8f146105045780634c480a88146105875780634d26f67a146105b05780634dcae947146105c5578063578fd681146105ef5761027d565b806322fc8f391161024557806322fc8f39146103ac57806324a6862a146103df5780633a1fd1ca146104095780633ee662351461044257806343b0215f146104725780634926439f146104c55761027d565b8063064cc9641461028b5780631215ca9b146102f7578063132c8c9b1461031e578063146aaf251461036d5780631c317d8314610397575b610288600654610abd565b50005b34801561029757600080fd5b506102be600480360360208110156102ae57600080fd5b50356001600160a01b03166111a8565b604051808261014080838360005b838110156102e45781810151838201526020016102cc565b5050505090500191505060405180910390f35b34801561030357600080fd5b5061030c611233565b60408051918252519081900360200190f35b34801561032a57600080fd5b506103516004803603602081101561034157600080fd5b50356001600160a01b0316611239565b604080516001600160a01b039092168252519081900360200190f35b34801561037957600080fd5b5061030c6004803603602081101561039057600080fd5b503561155b565b3480156103a357600080fd5b5061035161156d565b3480156103b857600080fd5b5061030c600480360360208110156103cf57600080fd5b50356001600160a01b031661157c565b3480156103eb57600080fd5b5061030c6004803603602081101561040257600080fd5b503561158e565b34801561041557600080fd5b5061030c6004803603604081101561042c57600080fd5b506001600160a01b0381351690602001356115a0565b34801561044e57600080fd5b5061030c6004803603604081101561046557600080fd5b50803590602001356115bd565b34801561047e57600080fd5b506104a56004803603602081101561049557600080fd5b50356001600160a01b03166115e2565b604080519315158452602084019290925282820152519081900360600190f35b3480156104d157600080fd5b5061030c611607565b3480156104e657600080fd5b5061030c600480360360208110156104fd57600080fd5b503561192b565b34801561051057600080fd5b506105376004803603602081101561052757600080fd5b50356001600160a01b031661193d565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561057357818101518382015260200161055b565b505050509050019250505060405180910390f35b34801561059357600080fd5b5061059c6119b6565b604080519115158252519081900360200190f35b3480156105bc57600080fd5b5061030c611add565b3480156105d157600080fd5b50610351600480360360208110156105e857600080fd5b5035611ae3565b3480156105fb57600080fd5b5061030c611afe565b34801561061057600080fd5b5061030c611b04565b34801561062557600080fd5b5061064c6004803603602081101561063c57600080fd5b50356001600160a01b0316611b0a565b6040805192835260208301919091528051918290030190f35b34801561067157600080fd5b5061030c611bec565b34801561068657600080fd5b506102be611bf2565b34801561069b57600080fd5b506106a4611c42565b005b3480156106b257600080fd5b506106d0600480360360208110156106c957600080fd5b5035611cbd565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561070a5781810151838201526020016106f2565b50505050905090810190601f1680156107375780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561075157600080fd5b50610351611cfa565b34801561076657600080fd5b5061059c6004803603602081101561077d57600080fd5b5035610abd565b34801561079057600080fd5b5061059c600480360360408110156107a757600080fd5b50803590602001356001600160a01b0316611d09565b3480156107c957600080fd5b5061030c600480360360208110156107e057600080fd5b5035611d29565b3480156107f357600080fd5b50610351611d3d565b34801561080857600080fd5b5061064c6004803603602081101561081f57600080fd5b5035611d4c565b34801561083257600080fd5b506106d06004803603602081101561084957600080fd5b50356001600160a01b0316611d77565b34801561086557600080fd5b5061030c6004803603602081101561087c57600080fd5b5035611de8565b34801561088f57600080fd5b5061064c611dfa565b3480156108a457600080fd5b5061030c600480360360208110156108bb57600080fd5b5035611e2b565b3480156108ce57600080fd5b5061030c600480360360208110156108e557600080fd5b50356001600160a01b0316611e38565b34801561090157600080fd5b5061030c611e4a565b34801561091657600080fd5b5061064c6004803603604081101561092d57600080fd5b5080359060200135611e50565b34801561094657600080fd5b5061030c611e89565b34801561095b57600080fd5b5061030c6004803603604081101561097257600080fd5b506001600160a01b038135169060200135611e8f565b34801561099457600080fd5b5061030c600480360360208110156109ab57600080fd5b50356001600160a01b0316611ebb565b3480156109c757600080fd5b5061030c600480360360208110156109de57600080fd5b50356001600160a01b0316611ecd565b3480156109fa57600080fd5b5061030c60048036036020811015610a1157600080fd5b50356001600160a01b0316611edf565b348015610a2d57600080fd5b5061030c611ef1565b348015610a4257600080fd5b50610351611ef7565b348015610a5757600080fd5b506106a460048036036020811015610a6e57600080fd5b50356001600160a01b0316611f06565b348015610a8a57600080fd5b5061059c60048036036020811015610aa157600080fd5b5035611f3f565b348015610ab457600080fd5b5061030c61236c565b336000818152608f6020526040812054909190839060ff1615610b14576040805162461bcd60e51b815260206004820152600a602482015269155cd95c88195e1a5cdd60b21b604482015290519081900360640190fd5b600084118015610b2657506005548411155b610b305760065493505b600380546000868152609060209081526040808320546001600160a01b03168352608f90915290209091015460019111610bb057600085815260906020526040812054608f9190610b89906001600160a01b0316611239565b6001600160a01b03166001600160a01b031681526020019081526020016000206001015494505b6007546001600160a01b0384811691161480610bd957506008546001600160a01b038481169116145b610ce15760025460016000908152600960209081527f92e85d02570a8092d09a6e3a57665bc3815a2699a4074001bf1ccabf660f5a3654604080516323b872dd60e01b81526001600160a01b0389811660048301523060248301526044820193909352905191909416936323b872dd9360648083019493928390030190829087803b158015610c6757600080fd5b505af1158015610c7b573d6000803e3d6000fd5b505050506040513d6020811015610c9157600080fd5b5051610cdc576040805162461bcd60e51b81526020600482015260156024820152741d1bdad95b881d1c985b9cd9995c8819985a5b1959605a1b604482015290519081900360640190fd5b610ce5565b5060005b610ced612c01565b50600580546001908101918290556040805160808101825282815260208082019485528183018a8152835160008082528184018652606085019182526001600160a01b038b168152608f8452949094208351815460ff19169015151781559551948601949094559251600285015590518051919384939092610d759260038501920190612c2b565b509050503360906000600554815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055506004544201608f6000866001600160a01b03166001600160a01b0316815260200190815260200160002060040160006001815260200190815260200160002081905550608f60006090600089815260200190815260200160002060009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206003018490806001815401808255809150509060018203906000526020600020016000909192909190916101000a8154816001600160a01b0302191690836001600160a01b031602179055505081600f5402609160008060009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000828254019250508190555081600f5402609460008060009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060008282540192505081905550426011541015610f3857610f366119b6565b505b60128054600e546000198201929085029183908110610f5357fe5b6000918252602080832060029092029091018054909301909255600e54600d8054918702919091019055888152609082526040808220546001600160a01b0316808352601390935290205461100e576001600160a01b0381166000908152608f60205260409020600301546009101561100e576001600160a01b03811660009081526013602052604090208290556012805460018401908110610ff257fe5b6000918252602090912060016002909202018101805490910190555b61101a60018786612372565b611060576040805162461bcd60e51b81526020600482015260126024820152711c185e48199bdc881b195d995b0819985a5b60721b604482015290519081900360640190fd5b6005546000898152609060209081526040918290205482514281526001600160a01b039182169281019290925281830189905291518b93928a16917f3763287bad057fbb8d9daa3d5b43669cf979ff2e772207bb964aac646d3bcf5e919081900360600190a460016000819052600960209081527f92e85d02570a8092d09a6e3a57665bc3815a2699a4074001bf1ccabf660f5a365460408051938452908702918301919091524282820152516001600160a01b038816917ff5f484ee3d635738bdec948ed09f313573438a5cd84840aa0c1991eaf37df54a919081900360600190a261114f600187866127ba565b611198576040805162461bcd60e51b8152602060048201526015602482015274185d5d1bc81c1bdbdb081d5c19185d194819985a5b605a1b604482015290519081900360640190fd5b600196505050505050505b919050565b6111b0612c8c565b6001600160a01b0382166000908152608f602052604090205460ff16156111a35760005b600a81101561122d576001600160a01b0383166000908152608f6020908152604080832060018501845260040190915290205442811115611224574281038383600a811061121e57fe5b60200201525b506001016111d4565b50919050565b600f5481565b600380546001600160a01b0383166000908152608f602052604081209092015410156112665750806111a3565b60408051607e808252610fe0820190925260609160208201610fc0803883395050506001600160a01b0384166000908152608f602052604081206003018054929350916112af57fe5b600091825260208220015482516001600160a01b039091169183916112d057fe5b6001600160a01b039283166020918202929092018101919091529084166000908152608f909152604090206003018054600190811061130b57fe5b9060005260206000200160009054906101000a90046001600160a01b03168160018151811061133657fe5b6001600160a01b039092166020928302919091019091015260006001815b607e81101561150c57600354608f600086848151811061137057fe5b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206003018054905014156114e557603e8110156114e057608f60008583815181106113be57fe5b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206003016000815481106113f557fe5b9060005260206000200160009054906101000a90046001600160a01b031684826001016002028151811061142557fe5b60200260200101906001600160a01b031690816001600160a01b031681525050608f600085838151811061145557fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060030160018154811061148c57fe5b9060005260206000200160009054906101000a90046001600160a01b03168482600101600202600101815181106114bf57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250505b611504565b600091508381815181106114f557fe5b6020026020010151925061150c565b600101611354565b508015611553576040805162461bcd60e51b815260206004820152601060248201526f273790233932b2902932b332b93932b960811b604482015290519081900360640190fd5b509392505050565b600b6020526000908152604090205481565b6002546001600160a01b031681565b60936020526000908152604090205481565b60096020526000908152604090205481565b601660209081526000928352604080842090915290825290205481565b602b82600a81106115ca57fe5b600a020181600a81106115d957fe5b01549150829050565b608f6020526000908152604090208054600182015460029092015460ff909116919083565b336000818152608f602052604081205490919060ff1661165f576040805162461bcd60e51b815260206004820152600e60248201526d155cd95c881b9bdd08195e1a5cdd60921b604482015290519081900360640190fd5b6001600160a01b03811660009081526013602052604081205490811561178557601254600019909201916001811115611783576001190160005b609681101561178157808210156116af57611781565b8082038481108015906116e5575060008181526014602090815260408083206001600160a01b038a16845290915290205460ff16155b15611778576402540be400601282815481106116fd57fe5b9060005260206000209060020201600101546012838154811061171c57fe5b9060005260206000209060020201600001546402540be400028161173c57fe5b048161174457fe5b60008381526014602090815260408083206001600160a01b038c1684529091529020805460ff191660011790550493909301925b50600101611699565b505b505b80156117dd57600d8054829003905560408051428152602081018390526001600160a01b0385168183015290517ff86a5f4f664205be040e231a13fe4bab83d73162e342466f28add589d96a67059181900360600190a15b6001600160a01b038084166000908152609460209081526040808320805490849055609383528184208490556091835281842084905560928352818420849055600254825163a9059cbb60e01b815233600482015296909101602487018190529151919594169363a9059cbb9360448083019493928390030190829087803b15801561186857600080fd5b505af115801561187c573d6000803e3d6000fd5b505050506040513d602081101561189257600080fd5b50516118dd576040805162461bcd60e51b81526020600482015260156024820152741d1bdad95b881d1c985b9cd9995c8819985a5b1959605a1b604482015290519081900360640190fd5b604080514281526001600160a01b038516602082015280820183905290517f4138698e26d5a55a4329005375bb423b22fbff4076ce7aa6dd8b44eed41d9e049181900360600190a150505090565b600a6020526000908152604090205481565b6001600160a01b0381166000908152608f60209081526040918290206003018054835181840281018401909452808452606093928301828280156119aa57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161198c575b50505050509050919050565b60004260115410611a06576040805162461bcd60e51b81526020600482015260156024820152741b5bdb9d1a08195b99081b9bdd081c995858da1959605a1b604482015290519081900360640190fd5b6010544201601155611a16612cab565b600160208201818152601280549283018155600081905283517fbb8a6a4669ba250d26cd7a459eca9d215f8307e33aebe50379bc5a3617ec344460029094029384015590517fbb8a6a4669ba250d26cd7a459eca9d215f8307e33aebe50379bc5a3617ec34459092019190915554600019018015611ad35760126001820381548110611a9e57fe5b90600052602060002090600202016001015460128281548110611abd57fe5b9060005260206000209060020201600101819055505b6001925050505b90565b600d5481565b6090602052600090815260409020546001600160a01b031681565b60105481565b60055481565b6001600160a01b038116600090815260136020526040812054819015611be057601254600190600019015b6032821015611bd65781810360008181526014602090815260408083206001600160a01b038a16845290915290205490935060ff16151560011415611b7957611bd6565b60128381548110611b8657fe5b90600052602060002090600202016001015460128481548110611ba557fe5b9060005260206000209060020201600001546402540be4000281611bc557fe5b049390930192600190910190611b35565b5050600101611be7565b5060009050805b915091565b60035481565b611bfa612c8c565b60005b600a811015611c3e5760128181548110611c1357fe5b9060005260206000209060020201600001548282600a8110611c3157fe5b6020020152600101611bfd565b5090565b6001546001600160a01b03163314611c5957600080fd5b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6000546060906001600160a01b03163314611cd757600080fd5b600682905560408051606081019091526023808252612cea602083013992915050565b6008546001600160a01b031681565b601460209081526000928352604080842090915290825290205460ff1681565b602181600a8110611d3657fe5b0154905081565b6000546001600160a01b031681565b60128181548110611d5957fe5b60009182526020909120600290910201805460019091015490915082565b6000546060906001600160a01b03163314611d9157600080fd5b50600280546001600160a01b0383166001600160a01b03199091161790556040805180820190915260208082527f50415820616464726573732075706461746564207375636365737366756c6c7990820152919050565b600c6020526000908152604090205481565b601280546000918291906000198201828110611e1257fe5b6000918252602090912060029091020154925090509091565b601781600a8110611d3657fe5b60136020526000908152604090205481565b60045481565b60156020528160005260406000208181548110611e6957fe5b600091825260209091206002909102018054600190910154909250905082565b600e5481565b6001600160a01b03919091166000908152608f6020908152604080832093835260049093019052205490565b60916020526000908152604090205481565b60946020526000908152604090205481565b60926020526000908152604090205481565b60065481565b6007546001600160a01b031681565b6000546001600160a01b03163314611f1d57600080fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b336000818152608f602052604081205490919060ff16611f97576040805162461bcd60e51b815260206004820152600e60248201526d155cd95c881b9bdd08195e1a5cdd60921b604482015290519081900360640190fd5b6001808410801590611faa5750600a8411155b611fed576040805162461bcd60e51b815260206004820152600f60248201526e125b98dbdc9c9958dd081b195d995b608a1b604482015290519081900360640190fd5b6007546001600160a01b038381169116148061201657506008546001600160a01b038381169116145b6120fb5760025460008581526009602090815260408083205481516323b872dd60e01b81526001600160a01b038881166004830152306024830152604482019290925291519416936323b872dd93606480840194938390030190829087803b15801561208157600080fd5b505af1158015612095573d6000803e3d6000fd5b505050506040513d60208110156120ab57600080fd5b50516120f6576040805162461bcd60e51b81526020600482015260156024820152741d1bdad95b881d1c985b9cd9995c8819985a5b1959605a1b604482015290519081900360640190fd5b6120ff565b5060005b836001141561214057600480546001600160a01b0384166000908152608f60209081526040808320600184529094019052919091208054909101905561225e565b60001984015b80156121c9576001600160a01b0383166000908152608f602090815260408083208484526004019091529020544211156121c0576040805162461bcd60e51b8152602060048201526016602482015275109d5e481d1a19481c1c995d9a5bdd5cc81b195d995b60521b604482015290519081900360640190fd5b60001901612146565b506001600160a01b0382166000908152608f6020908152604080832087845260040190915290205461222b57600480546001600160a01b0384166000908152608f6020908152604080832089845290940190529190912042909101905561225e565b600480546001600160a01b0384166000908152608f60209081526040808320898452909401905291909120805490910190555b612269848383612372565b6122af576040805162461bcd60e51b81526020600482015260126024820152711c185e48199bdc881b195d995b0819985a5b60721b604482015290519081900360640190fd5b60008481526009602090815260409182902054825187815290840291810191909152428183015290516001600160a01b038416917ff5f484ee3d635738bdec948ed09f313573438a5cd84840aa0c1991eaf37df54a919081900360600190a26123198483836127ba565b612362576040805162461bcd60e51b8152602060048201526015602482015274185d5d1bc81c1bdbdb081d5c19185d194819985a5b605a1b604482015290519081900360640190fd5b5060019392505050565b60115481565b600080600080600080886001148061238a5750886006145b15612418576001600160a01b038089166000818152608f602081815260408084206002015480855260908352908420549490935252911695506123cd9088612b12565b50600f8054600080546001600160a01b0390811682526091602090815260408084208054958e029095019094559354825490911682526094909352208054918902909101905561263c565b88600214806124275750886007145b1561247d576001600160a01b038089166000908152608f6020818152604080842060029081015485526090808452828620548716808752948452828620909101548552909152909120549091169550935061263c565b886003148061248c5750886008145b156124fb576001600160a01b038089166000908152608f602081815260408084206002908101548552609080845282862054871680875285855283872083015487528185528387205488168088529585528387209092015486529092529092205490921696509450925061263c565b886004148061250a5750886009145b15612591576001600160a01b038089166000908152608f602081815260408084206002908101548552609080845282862054871680875285855283872083015487528185528387205488168088528686528488208401548852828652848820548916808952968652848820909301548752935293205490931697509195509350915061263c565b88600514806125a0575088600a145b1561263c575050506001600160a01b038086166000908152608f6020818152604080842060029081015485526090808452828620548716808752858552838720830154875281855283872054881680885286865284882084015488528286528488205489168089528787528589208501548952838752858920548a16808a52978752858920909401548852919094529190942054909416955093505b6001600160a01b0385166000908152608f602052604090205460ff1661267a576006546000908152609060205260409020546001600160a01b031694505b6001600160a01b0385166000908152608f602090815260408083208c8452600401909152902054421161273e576000898152600a6020818152604080842080546001600160a01b038b16808752609185528387208054928f029092019091558154609485528387208054918f029091019055948e9052928252915482518d8152908b0291810191909152428183015290513392917f0734110f42782e4b9e753c59dd68a1c5a95d493d0055b9e2ac5bf868a7d3e4ca919081900360600190a36127ab565b6000898152600a60209081526040918290205482518c8152908a02918101919091524281830152905133916001600160a01b038816917f066de3bfb518a0ab80b46247552cd821402c26802e462195762d8696dbb27f5f9181900360600190a36127a9898689612372565b505b50600198975050505050505050565b60001983016000818152601560205260408120549091906127d9612cab565b6001600160a01b0386166000908152608f60205260409020600101548152601783600a811061280457fe5b0154602080830191825260008581526015825260408120805460018181018355918352928220855160029094020192835592519190920155601784600a811061284957fe5b0154905060006090600060156000888152602001908152602001600020848154811061287157fe5b6000918252602080832060029092029091015483528201929092526040019020546001600160a01b03169050806128bf57506006546000908152609060205260409020546001600160a01b03165b60005b600a811015612a1d57600088602b88600a81106128db57fe5b600a020183600a81106128ea57fe5b01546001600160a01b038086166000818152609360209081526040808320805497909602968701909555609481529084902080548601905583514281529081019190915260018b018184015260608101849052908d16608082015290519192507f48fc38f6edf90a47053931ebbbe8ccb13ec20d565a2a70156b76ba327efd61b0919081900360a00190a1600087815260156020526040902080548590811061298f57fe5b906000526020600020906002020160010154935060906000601560008a815260200190815260200160002086815481106129c557fe5b6000918252602080832060029092029091015483528201929092526040019020546001600160a01b0316925082612a14576006546000908152609060205260409020546001600160a01b031692505b506001016128c2565b50602185600a8110612a2b57fe5b0154612a47576001602186600a8110612a4057fe5b0155612a94565b602185600a8110612a5457fe5b015460011415612a6d576002602186600a8110612a4057fe5b601785600a8110612a7a57fe5b01805460010190556000602186600a8110612a9157fe5b01555b6001600160a01b03881660008181526016602090815260408083206000198e01845282529182902087905581514281529081018c90528082018790526060810192909252517fb6bcaf1aa4fdbceaba6a9ddeaee5b2c72b424fb8f6a92e7cf036d73e4e453ead9181900360800190a150600198975050505050505050565b60006015815b81811015612bf6576000948552609060209081526040808720546001600160a01b0316808852608f909252909520600201549480612b6d57506006546000908152609060205260409020546001600160a01b03165b600182016000908152600c60209081526040808320546001600160a01b038516808552609284528285208054928b0292830190556094845293829020805482019055815142815292830193909352818101839052517fad55d0dd3030e6fbcfa4c70bb06457f0c59741e04a62b466af1e0d8ce050f68e9181900360600190a15050600101612b18565b506001949350505050565b60405180608001604052806000151581526020016000815260200160008152602001606081525090565b828054828255906000526020600020908101928215612c80579160200282015b82811115612c8057825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190612c4b565b50611c3e929150612cc5565b604051806101400160405280600a906020820280388339509192915050565b604051806040016040528060008152602001600081525090565b611ada91905b80821115611c3e5780546001600160a01b0319168155600101612ccb56fe44656661756c74205265662049442075706461746564207375636365737366756c6c79a265627a7a72315820b24c3080c79b78b696e0610f9c2e110d9f6e11d842949e5a74256660bbd6c78664736f6c634300051000320000000000000000000000009cbf6bba891afa3f68059e03846e18bb54537cc30000000000000000000000009cbf6bba891afa3f68059e03846e18bb54537cc300000000000000000000000033038ab4c05a514355cdf3a133b8e3b6cd36dfb2000000000000000000000000c7916a8c7c2ba713f6010ef4aa5453188563ac6c

Deployed Bytecode

0x60806040526004361061027d5760003560e01c80638845ab211161014f578063c2afdda7116100c1578063ef3c31e51161007a578063ef3c31e5146109ee578063f1e1e13f14610a21578063f2dd372d14610a36578063f2fde38b14610a4b578063f6838a7214610a7e578063fd89acb914610aa85761027d565b8063c2afdda7146108f5578063cb7bcbb11461090a578063d1ddc6a31461093a578063d28400731461094f578063d96256be14610988578063e87bf925146109bb5761027d565b8063908f4cc811610113578063908f4cc8146107fc578063987099cf146108265780639a9ad93a14610859578063ad5a6f3914610883578063b234ba2a14610898578063b8e295b2146108c25761027d565b80638845ab21146107455780638853b53e1461075a57806388e728d4146107845780638b569b2b146107bd5780638da5cb5b146107e75761027d565b806349447fb9116101f3578063641c108f116101ac578063641c108f1461060457806364e6ad3f146106195780636554266c146106655780637042bd211461067a57806379ba50971461068f578063813d2714146106a65761027d565b806349447fb9146104da5780634a4baa8f146105045780634c480a88146105875780634d26f67a146105b05780634dcae947146105c5578063578fd681146105ef5761027d565b806322fc8f391161024557806322fc8f39146103ac57806324a6862a146103df5780633a1fd1ca146104095780633ee662351461044257806343b0215f146104725780634926439f146104c55761027d565b8063064cc9641461028b5780631215ca9b146102f7578063132c8c9b1461031e578063146aaf251461036d5780631c317d8314610397575b610288600654610abd565b50005b34801561029757600080fd5b506102be600480360360208110156102ae57600080fd5b50356001600160a01b03166111a8565b604051808261014080838360005b838110156102e45781810151838201526020016102cc565b5050505090500191505060405180910390f35b34801561030357600080fd5b5061030c611233565b60408051918252519081900360200190f35b34801561032a57600080fd5b506103516004803603602081101561034157600080fd5b50356001600160a01b0316611239565b604080516001600160a01b039092168252519081900360200190f35b34801561037957600080fd5b5061030c6004803603602081101561039057600080fd5b503561155b565b3480156103a357600080fd5b5061035161156d565b3480156103b857600080fd5b5061030c600480360360208110156103cf57600080fd5b50356001600160a01b031661157c565b3480156103eb57600080fd5b5061030c6004803603602081101561040257600080fd5b503561158e565b34801561041557600080fd5b5061030c6004803603604081101561042c57600080fd5b506001600160a01b0381351690602001356115a0565b34801561044e57600080fd5b5061030c6004803603604081101561046557600080fd5b50803590602001356115bd565b34801561047e57600080fd5b506104a56004803603602081101561049557600080fd5b50356001600160a01b03166115e2565b604080519315158452602084019290925282820152519081900360600190f35b3480156104d157600080fd5b5061030c611607565b3480156104e657600080fd5b5061030c600480360360208110156104fd57600080fd5b503561192b565b34801561051057600080fd5b506105376004803603602081101561052757600080fd5b50356001600160a01b031661193d565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561057357818101518382015260200161055b565b505050509050019250505060405180910390f35b34801561059357600080fd5b5061059c6119b6565b604080519115158252519081900360200190f35b3480156105bc57600080fd5b5061030c611add565b3480156105d157600080fd5b50610351600480360360208110156105e857600080fd5b5035611ae3565b3480156105fb57600080fd5b5061030c611afe565b34801561061057600080fd5b5061030c611b04565b34801561062557600080fd5b5061064c6004803603602081101561063c57600080fd5b50356001600160a01b0316611b0a565b6040805192835260208301919091528051918290030190f35b34801561067157600080fd5b5061030c611bec565b34801561068657600080fd5b506102be611bf2565b34801561069b57600080fd5b506106a4611c42565b005b3480156106b257600080fd5b506106d0600480360360208110156106c957600080fd5b5035611cbd565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561070a5781810151838201526020016106f2565b50505050905090810190601f1680156107375780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561075157600080fd5b50610351611cfa565b34801561076657600080fd5b5061059c6004803603602081101561077d57600080fd5b5035610abd565b34801561079057600080fd5b5061059c600480360360408110156107a757600080fd5b50803590602001356001600160a01b0316611d09565b3480156107c957600080fd5b5061030c600480360360208110156107e057600080fd5b5035611d29565b3480156107f357600080fd5b50610351611d3d565b34801561080857600080fd5b5061064c6004803603602081101561081f57600080fd5b5035611d4c565b34801561083257600080fd5b506106d06004803603602081101561084957600080fd5b50356001600160a01b0316611d77565b34801561086557600080fd5b5061030c6004803603602081101561087c57600080fd5b5035611de8565b34801561088f57600080fd5b5061064c611dfa565b3480156108a457600080fd5b5061030c600480360360208110156108bb57600080fd5b5035611e2b565b3480156108ce57600080fd5b5061030c600480360360208110156108e557600080fd5b50356001600160a01b0316611e38565b34801561090157600080fd5b5061030c611e4a565b34801561091657600080fd5b5061064c6004803603604081101561092d57600080fd5b5080359060200135611e50565b34801561094657600080fd5b5061030c611e89565b34801561095b57600080fd5b5061030c6004803603604081101561097257600080fd5b506001600160a01b038135169060200135611e8f565b34801561099457600080fd5b5061030c600480360360208110156109ab57600080fd5b50356001600160a01b0316611ebb565b3480156109c757600080fd5b5061030c600480360360208110156109de57600080fd5b50356001600160a01b0316611ecd565b3480156109fa57600080fd5b5061030c60048036036020811015610a1157600080fd5b50356001600160a01b0316611edf565b348015610a2d57600080fd5b5061030c611ef1565b348015610a4257600080fd5b50610351611ef7565b348015610a5757600080fd5b506106a460048036036020811015610a6e57600080fd5b50356001600160a01b0316611f06565b348015610a8a57600080fd5b5061059c60048036036020811015610aa157600080fd5b5035611f3f565b348015610ab457600080fd5b5061030c61236c565b336000818152608f6020526040812054909190839060ff1615610b14576040805162461bcd60e51b815260206004820152600a602482015269155cd95c88195e1a5cdd60b21b604482015290519081900360640190fd5b600084118015610b2657506005548411155b610b305760065493505b600380546000868152609060209081526040808320546001600160a01b03168352608f90915290209091015460019111610bb057600085815260906020526040812054608f9190610b89906001600160a01b0316611239565b6001600160a01b03166001600160a01b031681526020019081526020016000206001015494505b6007546001600160a01b0384811691161480610bd957506008546001600160a01b038481169116145b610ce15760025460016000908152600960209081527f92e85d02570a8092d09a6e3a57665bc3815a2699a4074001bf1ccabf660f5a3654604080516323b872dd60e01b81526001600160a01b0389811660048301523060248301526044820193909352905191909416936323b872dd9360648083019493928390030190829087803b158015610c6757600080fd5b505af1158015610c7b573d6000803e3d6000fd5b505050506040513d6020811015610c9157600080fd5b5051610cdc576040805162461bcd60e51b81526020600482015260156024820152741d1bdad95b881d1c985b9cd9995c8819985a5b1959605a1b604482015290519081900360640190fd5b610ce5565b5060005b610ced612c01565b50600580546001908101918290556040805160808101825282815260208082019485528183018a8152835160008082528184018652606085019182526001600160a01b038b168152608f8452949094208351815460ff19169015151781559551948601949094559251600285015590518051919384939092610d759260038501920190612c2b565b509050503360906000600554815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055506004544201608f6000866001600160a01b03166001600160a01b0316815260200190815260200160002060040160006001815260200190815260200160002081905550608f60006090600089815260200190815260200160002060009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206003018490806001815401808255809150509060018203906000526020600020016000909192909190916101000a8154816001600160a01b0302191690836001600160a01b031602179055505081600f5402609160008060009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000828254019250508190555081600f5402609460008060009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060008282540192505081905550426011541015610f3857610f366119b6565b505b60128054600e546000198201929085029183908110610f5357fe5b6000918252602080832060029092029091018054909301909255600e54600d8054918702919091019055888152609082526040808220546001600160a01b0316808352601390935290205461100e576001600160a01b0381166000908152608f60205260409020600301546009101561100e576001600160a01b03811660009081526013602052604090208290556012805460018401908110610ff257fe5b6000918252602090912060016002909202018101805490910190555b61101a60018786612372565b611060576040805162461bcd60e51b81526020600482015260126024820152711c185e48199bdc881b195d995b0819985a5b60721b604482015290519081900360640190fd5b6005546000898152609060209081526040918290205482514281526001600160a01b039182169281019290925281830189905291518b93928a16917f3763287bad057fbb8d9daa3d5b43669cf979ff2e772207bb964aac646d3bcf5e919081900360600190a460016000819052600960209081527f92e85d02570a8092d09a6e3a57665bc3815a2699a4074001bf1ccabf660f5a365460408051938452908702918301919091524282820152516001600160a01b038816917ff5f484ee3d635738bdec948ed09f313573438a5cd84840aa0c1991eaf37df54a919081900360600190a261114f600187866127ba565b611198576040805162461bcd60e51b8152602060048201526015602482015274185d5d1bc81c1bdbdb081d5c19185d194819985a5b605a1b604482015290519081900360640190fd5b600196505050505050505b919050565b6111b0612c8c565b6001600160a01b0382166000908152608f602052604090205460ff16156111a35760005b600a81101561122d576001600160a01b0383166000908152608f6020908152604080832060018501845260040190915290205442811115611224574281038383600a811061121e57fe5b60200201525b506001016111d4565b50919050565b600f5481565b600380546001600160a01b0383166000908152608f602052604081209092015410156112665750806111a3565b60408051607e808252610fe0820190925260609160208201610fc0803883395050506001600160a01b0384166000908152608f602052604081206003018054929350916112af57fe5b600091825260208220015482516001600160a01b039091169183916112d057fe5b6001600160a01b039283166020918202929092018101919091529084166000908152608f909152604090206003018054600190811061130b57fe5b9060005260206000200160009054906101000a90046001600160a01b03168160018151811061133657fe5b6001600160a01b039092166020928302919091019091015260006001815b607e81101561150c57600354608f600086848151811061137057fe5b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206003018054905014156114e557603e8110156114e057608f60008583815181106113be57fe5b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206003016000815481106113f557fe5b9060005260206000200160009054906101000a90046001600160a01b031684826001016002028151811061142557fe5b60200260200101906001600160a01b031690816001600160a01b031681525050608f600085838151811061145557fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060030160018154811061148c57fe5b9060005260206000200160009054906101000a90046001600160a01b03168482600101600202600101815181106114bf57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250505b611504565b600091508381815181106114f557fe5b6020026020010151925061150c565b600101611354565b508015611553576040805162461bcd60e51b815260206004820152601060248201526f273790233932b2902932b332b93932b960811b604482015290519081900360640190fd5b509392505050565b600b6020526000908152604090205481565b6002546001600160a01b031681565b60936020526000908152604090205481565b60096020526000908152604090205481565b601660209081526000928352604080842090915290825290205481565b602b82600a81106115ca57fe5b600a020181600a81106115d957fe5b01549150829050565b608f6020526000908152604090208054600182015460029092015460ff909116919083565b336000818152608f602052604081205490919060ff1661165f576040805162461bcd60e51b815260206004820152600e60248201526d155cd95c881b9bdd08195e1a5cdd60921b604482015290519081900360640190fd5b6001600160a01b03811660009081526013602052604081205490811561178557601254600019909201916001811115611783576001190160005b609681101561178157808210156116af57611781565b8082038481108015906116e5575060008181526014602090815260408083206001600160a01b038a16845290915290205460ff16155b15611778576402540be400601282815481106116fd57fe5b9060005260206000209060020201600101546012838154811061171c57fe5b9060005260206000209060020201600001546402540be400028161173c57fe5b048161174457fe5b60008381526014602090815260408083206001600160a01b038c1684529091529020805460ff191660011790550493909301925b50600101611699565b505b505b80156117dd57600d8054829003905560408051428152602081018390526001600160a01b0385168183015290517ff86a5f4f664205be040e231a13fe4bab83d73162e342466f28add589d96a67059181900360600190a15b6001600160a01b038084166000908152609460209081526040808320805490849055609383528184208490556091835281842084905560928352818420849055600254825163a9059cbb60e01b815233600482015296909101602487018190529151919594169363a9059cbb9360448083019493928390030190829087803b15801561186857600080fd5b505af115801561187c573d6000803e3d6000fd5b505050506040513d602081101561189257600080fd5b50516118dd576040805162461bcd60e51b81526020600482015260156024820152741d1bdad95b881d1c985b9cd9995c8819985a5b1959605a1b604482015290519081900360640190fd5b604080514281526001600160a01b038516602082015280820183905290517f4138698e26d5a55a4329005375bb423b22fbff4076ce7aa6dd8b44eed41d9e049181900360600190a150505090565b600a6020526000908152604090205481565b6001600160a01b0381166000908152608f60209081526040918290206003018054835181840281018401909452808452606093928301828280156119aa57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161198c575b50505050509050919050565b60004260115410611a06576040805162461bcd60e51b81526020600482015260156024820152741b5bdb9d1a08195b99081b9bdd081c995858da1959605a1b604482015290519081900360640190fd5b6010544201601155611a16612cab565b600160208201818152601280549283018155600081905283517fbb8a6a4669ba250d26cd7a459eca9d215f8307e33aebe50379bc5a3617ec344460029094029384015590517fbb8a6a4669ba250d26cd7a459eca9d215f8307e33aebe50379bc5a3617ec34459092019190915554600019018015611ad35760126001820381548110611a9e57fe5b90600052602060002090600202016001015460128281548110611abd57fe5b9060005260206000209060020201600101819055505b6001925050505b90565b600d5481565b6090602052600090815260409020546001600160a01b031681565b60105481565b60055481565b6001600160a01b038116600090815260136020526040812054819015611be057601254600190600019015b6032821015611bd65781810360008181526014602090815260408083206001600160a01b038a16845290915290205490935060ff16151560011415611b7957611bd6565b60128381548110611b8657fe5b90600052602060002090600202016001015460128481548110611ba557fe5b9060005260206000209060020201600001546402540be4000281611bc557fe5b049390930192600190910190611b35565b5050600101611be7565b5060009050805b915091565b60035481565b611bfa612c8c565b60005b600a811015611c3e5760128181548110611c1357fe5b9060005260206000209060020201600001548282600a8110611c3157fe5b6020020152600101611bfd565b5090565b6001546001600160a01b03163314611c5957600080fd5b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6000546060906001600160a01b03163314611cd757600080fd5b600682905560408051606081019091526023808252612cea602083013992915050565b6008546001600160a01b031681565b601460209081526000928352604080842090915290825290205460ff1681565b602181600a8110611d3657fe5b0154905081565b6000546001600160a01b031681565b60128181548110611d5957fe5b60009182526020909120600290910201805460019091015490915082565b6000546060906001600160a01b03163314611d9157600080fd5b50600280546001600160a01b0383166001600160a01b03199091161790556040805180820190915260208082527f50415820616464726573732075706461746564207375636365737366756c6c7990820152919050565b600c6020526000908152604090205481565b601280546000918291906000198201828110611e1257fe5b6000918252602090912060029091020154925090509091565b601781600a8110611d3657fe5b60136020526000908152604090205481565b60045481565b60156020528160005260406000208181548110611e6957fe5b600091825260209091206002909102018054600190910154909250905082565b600e5481565b6001600160a01b03919091166000908152608f6020908152604080832093835260049093019052205490565b60916020526000908152604090205481565b60946020526000908152604090205481565b60926020526000908152604090205481565b60065481565b6007546001600160a01b031681565b6000546001600160a01b03163314611f1d57600080fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b336000818152608f602052604081205490919060ff16611f97576040805162461bcd60e51b815260206004820152600e60248201526d155cd95c881b9bdd08195e1a5cdd60921b604482015290519081900360640190fd5b6001808410801590611faa5750600a8411155b611fed576040805162461bcd60e51b815260206004820152600f60248201526e125b98dbdc9c9958dd081b195d995b608a1b604482015290519081900360640190fd5b6007546001600160a01b038381169116148061201657506008546001600160a01b038381169116145b6120fb5760025460008581526009602090815260408083205481516323b872dd60e01b81526001600160a01b038881166004830152306024830152604482019290925291519416936323b872dd93606480840194938390030190829087803b15801561208157600080fd5b505af1158015612095573d6000803e3d6000fd5b505050506040513d60208110156120ab57600080fd5b50516120f6576040805162461bcd60e51b81526020600482015260156024820152741d1bdad95b881d1c985b9cd9995c8819985a5b1959605a1b604482015290519081900360640190fd5b6120ff565b5060005b836001141561214057600480546001600160a01b0384166000908152608f60209081526040808320600184529094019052919091208054909101905561225e565b60001984015b80156121c9576001600160a01b0383166000908152608f602090815260408083208484526004019091529020544211156121c0576040805162461bcd60e51b8152602060048201526016602482015275109d5e481d1a19481c1c995d9a5bdd5cc81b195d995b60521b604482015290519081900360640190fd5b60001901612146565b506001600160a01b0382166000908152608f6020908152604080832087845260040190915290205461222b57600480546001600160a01b0384166000908152608f6020908152604080832089845290940190529190912042909101905561225e565b600480546001600160a01b0384166000908152608f60209081526040808320898452909401905291909120805490910190555b612269848383612372565b6122af576040805162461bcd60e51b81526020600482015260126024820152711c185e48199bdc881b195d995b0819985a5b60721b604482015290519081900360640190fd5b60008481526009602090815260409182902054825187815290840291810191909152428183015290516001600160a01b038416917ff5f484ee3d635738bdec948ed09f313573438a5cd84840aa0c1991eaf37df54a919081900360600190a26123198483836127ba565b612362576040805162461bcd60e51b8152602060048201526015602482015274185d5d1bc81c1bdbdb081d5c19185d194819985a5b605a1b604482015290519081900360640190fd5b5060019392505050565b60115481565b600080600080600080886001148061238a5750886006145b15612418576001600160a01b038089166000818152608f602081815260408084206002015480855260908352908420549490935252911695506123cd9088612b12565b50600f8054600080546001600160a01b0390811682526091602090815260408084208054958e029095019094559354825490911682526094909352208054918902909101905561263c565b88600214806124275750886007145b1561247d576001600160a01b038089166000908152608f6020818152604080842060029081015485526090808452828620548716808752948452828620909101548552909152909120549091169550935061263c565b886003148061248c5750886008145b156124fb576001600160a01b038089166000908152608f602081815260408084206002908101548552609080845282862054871680875285855283872083015487528185528387205488168088529585528387209092015486529092529092205490921696509450925061263c565b886004148061250a5750886009145b15612591576001600160a01b038089166000908152608f602081815260408084206002908101548552609080845282862054871680875285855283872083015487528185528387205488168088528686528488208401548852828652848820548916808952968652848820909301548752935293205490931697509195509350915061263c565b88600514806125a0575088600a145b1561263c575050506001600160a01b038086166000908152608f6020818152604080842060029081015485526090808452828620548716808752858552838720830154875281855283872054881680885286865284882084015488528286528488205489168089528787528589208501548952838752858920548a16808a52978752858920909401548852919094529190942054909416955093505b6001600160a01b0385166000908152608f602052604090205460ff1661267a576006546000908152609060205260409020546001600160a01b031694505b6001600160a01b0385166000908152608f602090815260408083208c8452600401909152902054421161273e576000898152600a6020818152604080842080546001600160a01b038b16808752609185528387208054928f029092019091558154609485528387208054918f029091019055948e9052928252915482518d8152908b0291810191909152428183015290513392917f0734110f42782e4b9e753c59dd68a1c5a95d493d0055b9e2ac5bf868a7d3e4ca919081900360600190a36127ab565b6000898152600a60209081526040918290205482518c8152908a02918101919091524281830152905133916001600160a01b038816917f066de3bfb518a0ab80b46247552cd821402c26802e462195762d8696dbb27f5f9181900360600190a36127a9898689612372565b505b50600198975050505050505050565b60001983016000818152601560205260408120549091906127d9612cab565b6001600160a01b0386166000908152608f60205260409020600101548152601783600a811061280457fe5b0154602080830191825260008581526015825260408120805460018181018355918352928220855160029094020192835592519190920155601784600a811061284957fe5b0154905060006090600060156000888152602001908152602001600020848154811061287157fe5b6000918252602080832060029092029091015483528201929092526040019020546001600160a01b03169050806128bf57506006546000908152609060205260409020546001600160a01b03165b60005b600a811015612a1d57600088602b88600a81106128db57fe5b600a020183600a81106128ea57fe5b01546001600160a01b038086166000818152609360209081526040808320805497909602968701909555609481529084902080548601905583514281529081019190915260018b018184015260608101849052908d16608082015290519192507f48fc38f6edf90a47053931ebbbe8ccb13ec20d565a2a70156b76ba327efd61b0919081900360a00190a1600087815260156020526040902080548590811061298f57fe5b906000526020600020906002020160010154935060906000601560008a815260200190815260200160002086815481106129c557fe5b6000918252602080832060029092029091015483528201929092526040019020546001600160a01b0316925082612a14576006546000908152609060205260409020546001600160a01b031692505b506001016128c2565b50602185600a8110612a2b57fe5b0154612a47576001602186600a8110612a4057fe5b0155612a94565b602185600a8110612a5457fe5b015460011415612a6d576002602186600a8110612a4057fe5b601785600a8110612a7a57fe5b01805460010190556000602186600a8110612a9157fe5b01555b6001600160a01b03881660008181526016602090815260408083206000198e01845282529182902087905581514281529081018c90528082018790526060810192909252517fb6bcaf1aa4fdbceaba6a9ddeaee5b2c72b424fb8f6a92e7cf036d73e4e453ead9181900360800190a150600198975050505050505050565b60006015815b81811015612bf6576000948552609060209081526040808720546001600160a01b0316808852608f909252909520600201549480612b6d57506006546000908152609060205260409020546001600160a01b03165b600182016000908152600c60209081526040808320546001600160a01b038516808552609284528285208054928b0292830190556094845293829020805482019055815142815292830193909352818101839052517fad55d0dd3030e6fbcfa4c70bb06457f0c59741e04a62b466af1e0d8ce050f68e9181900360600190a15050600101612b18565b506001949350505050565b60405180608001604052806000151581526020016000815260200160008152602001606081525090565b828054828255906000526020600020908101928215612c80579160200282015b82811115612c8057825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190612c4b565b50611c3e929150612cc5565b604051806101400160405280600a906020820280388339509192915050565b604051806040016040528060008152602001600081525090565b611ada91905b80821115611c3e5780546001600160a01b0319168155600101612ccb56fe44656661756c74205265662049442075706461746564207375636365737366756c6c79a265627a7a72315820b24c3080c79b78b696e0610f9c2e110d9f6e11d842949e5a74256660bbd6c78664736f6c63430005100032

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

0000000000000000000000009cbf6bba891afa3f68059e03846e18bb54537cc30000000000000000000000009cbf6bba891afa3f68059e03846e18bb54537cc300000000000000000000000033038ab4c05a514355cdf3a133b8e3b6cd36dfb2000000000000000000000000c7916a8c7c2ba713f6010ef4aa5453188563ac6c

-----Decoded View---------------
Arg [0] : ownerAddress (address): 0x9Cbf6bbA891AfA3f68059e03846E18bb54537cc3
Arg [1] : ID1address (address): 0x9Cbf6bbA891AfA3f68059e03846E18bb54537cc3
Arg [2] : _specialAddress1 (address): 0x33038AB4c05A514355Cdf3A133b8E3B6cD36dfB2
Arg [3] : _specialAddress2 (address): 0xC7916a8C7C2BA713F6010Ef4AA5453188563AC6C

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000009cbf6bba891afa3f68059e03846e18bb54537cc3
Arg [1] : 0000000000000000000000009cbf6bba891afa3f68059e03846e18bb54537cc3
Arg [2] : 00000000000000000000000033038ab4c05a514355cdf3a133b8e3b6cd36dfb2
Arg [3] : 000000000000000000000000c7916a8c7c2ba713f6010ef4aa5453188563ac6c


Deployed Bytecode Sourcemap

3905:21781:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10712:21;10720:12;;10712:7;:21::i;:::-;;3905:21781;21529:455;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21529:455:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21529:455:0;-1:-1:-1;;;;;21529:455:0;;:::i;:::-;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;21529:455:0;;;;;;;;;;;;;;;;4796:36;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4796:36:0;;;:::i;:::-;;;;;;;;;;;;;;;;17451:979;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17451:979:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17451:979:0;-1:-1:-1;;;;;17451:979:0;;:::i;:::-;;;;-1:-1:-1;;;;;17451:979:0;;;;;;;;;;;;;;4608:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4608:41:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4608:41:0;;:::i;3995:30::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3995:30:0;;;:::i;6183:54::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6183:54:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6183:54:0;-1:-1:-1;;;;;6183:54:0;;:::i;4512:41::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4512:41:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4512:41:0;;:::i;5511:62::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5511:62:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;5511:62:0;;;;;;;;:::i;5821:35::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5821:35:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5821:35:0;;;;;;;:::i;5873:46::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5873:46:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5873:46:0;-1:-1:-1;;;;;5873:46:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19125:1641;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19125:1641:0;;;:::i;4560:41::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4560:41:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4560:41:0;;:::i;24310:130::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24310:130:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24310:130:0;-1:-1:-1;;;;;24310:130:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;24310:130:0;;;;;;;;;;;;;;;;;22273:543;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22273:543:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;4708:33;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4708:33:0;;;:::i;5926:56::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5926:56:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5926:56:0;;:::i;4845:38::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4845:38:0;;;:::i;4125:27::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4125:27:0;;;:::i;20774:747::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20774:747:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20774:747:0;-1:-1:-1;;;;;20774:747:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4032:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4032:28:0;;;:::i;22004:255::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22004:255:0;;;:::i;3040:196::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3040:196:0;;;:::i;:::-;;25396:277;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25396:277:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25396:277:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;25396:277:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4299:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4299:30:0;;;:::i;10749:2553::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10749:2553:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10749:2553:0;;:::i;5206:67::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5206:67:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5206:67:0;;;;;;-1:-1:-1;;;;;5206:67:0;;:::i;5720:33::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5720:33:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5720:33:0;;:::i;2560:28::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2560:28:0;;;:::i;5047:37::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5047:37:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5047:37:0;;:::i;24923:461::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24923:461:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24923:461:0;-1:-1:-1;;;;;24923:461:0;;:::i;4656:45::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4656:45:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4656:45:0;;:::i;13310:229::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13310:229:0;;;:::i;5621:35::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5621:35:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5621:35:0;;:::i;5091:46::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5091:46:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5091:46:0;-1:-1:-1;;;;;5091:46:0;;:::i;4067:36::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4067:36:0;;;:::i;5409:48::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5409:48:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5409:48:0;;;;;;;:::i;4748:41::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4748:41:0;;;:::i;24448:147::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24448:147:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;24448:147:0;;;;;;;;:::i;5991:57::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5991:57:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5991:57:0;-1:-1:-1;;;;;5991:57:0;;:::i;6244:59::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6244:59:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6244:59:0;-1:-1:-1;;;;;6244:59:0;;:::i;6121:54::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6121:54:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6121:54:0;-1:-1:-1;;;;;6121:54:0;;:::i;4159:28::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4159:28:0;;;:::i;4262:30::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4262:30:0;;;:::i;2841:110::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2841:110:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2841:110:0;-1:-1:-1;;;;;2841:110:0;;:::i;13547:1478::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13547:1478:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13547:1478:0;;:::i;4903:24::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4903:24:0;;;:::i;10749:2553::-;10900:10;10799:4;11014:20;;;:9;:20;;;;;:27;10799:4;;10900:10;10946:11;;11014:27;;11013:28;11005:51;;;;;-1:-1:-1;;;11005:51:0;;;;;;;;;;;;-1:-1:-1;;;11005:51:0;;;;;;;;;;;;;;;11086:1;11072:11;:15;:45;;;;;11106:11;;11091;:26;;11072:45;11067:79;;11134:12;;11120:26;;11067:79;11242:12;;;11157:8;11193:28;;;:15;:28;;;;;;;;;-1:-1:-1;;;;;11193:28:0;11183:39;;:9;:39;;;;;:48;;;:55;11168:1;;-1:-1:-1;11180:150:0;;11270:57;11297:28;;;:15;:28;;;;;;11270:9;;:57;11280:46;;-1:-1:-1;;;;;11297:28:0;11280:16;:46::i;:::-;-1:-1:-1;;;;;11270:57:0;-1:-1:-1;;;;;11270:57:0;;;;;;;;;;;;:60;;;11256:74;;11180:150;11442:15;;-1:-1:-1;;;;;11431:26:0;;;11442:15;;11431:26;;:58;;-1:-1:-1;11474:15:0;;-1:-1:-1;;;;;11461:28:0;;;11474:15;;11461:28;11431:58;11426:269;;11528:15;;;;11584;;;:12;:15;;;;;;;11515:85;;-1:-1:-1;;;11515:85:0;;-1:-1:-1;;;;;11515:85:0;;;;;;;11577:4;11515:85;;;;;;;;;;;;;11528:15;;;;;11515:42;;:85;;;;;11584:15;11515:85;;;;;;;;11528:15;11515:85;;;5:2:-1;;;;30:1;27;20:12;5:2;11515:85:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11515:85:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11515:85:0;11506:119;;;;;-1:-1:-1;;;11506:119:0;;;;;;;;;;;;-1:-1:-1;;;11506:119:0;;;;;;;;;;;;;;;11426:269;;;-1:-1:-1;11682:1:0;11426:269;11743:24;;:::i;:::-;-1:-1:-1;11778:11:0;:13;;;;;;;;;;11815:157;;;;;;;;;;;;;;;;;;;;;;;;11944:16;;-1:-1:-1;11944:16:0;;;;;;;;11815:157;;;;;;-1:-1:-1;;;;;11985:20:0;;;;:9;:20;;;;;;:31;;;;-1:-1:-1;;11985:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;11815:157;;;;11985:20;;:31;;;;;;;;;:::i;:::-;;;;;12058:10;12027:15;:28;12043:11;;12027:28;;;;;;;;;;;;:41;;;;;-1:-1:-1;;;;;12027:41:0;;;;;-1:-1:-1;;;;;12027:41:0;;;;;;12126:13;;12120:3;:19;12081:9;:20;12091:9;-1:-1:-1;;;;;12081:20:0;-1:-1:-1;;;;;12081:20:0;;;;;;;;;;;;:33;;:36;12115:1;12081:36;;;;;;;;;;;:58;;;;12152:9;:39;12162:15;:28;12178:11;12162:28;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12162:28:0;-1:-1:-1;;;;;12152:39:0;-1:-1:-1;;;;;12152:39:0;;;;;;;;;;;;:48;;12206:9;12152:64;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;12152:64:0;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12152:64:0;;;;;-1:-1:-1;;;;;12152:64:0;;;;;;;12279:3;12262:14;;:20;12229:22;:29;12252:5;;;;;;;;;-1:-1:-1;;;;;12252:5:0;-1:-1:-1;;;;;12229:29:0;-1:-1:-1;;;;;12229:29:0;;;;;;;;;;;;;:53;;;;;;;;;;;12345:3;12328:14;;:20;12293:24;:31;12318:5;;;;;;;;;-1:-1:-1;;;;;12318:5:0;-1:-1:-1;;;;;12293:31:0;-1:-1:-1;;;;;12293:31:0;;;;;;;;;;;;;:55;;;;;;;;;;;12379:3;12364:12;;:18;12361:39;;;12384:16;:14;:16::i;:::-;;12361:39;12437:14;:21;;12532:17;;-1:-1:-1;;12437:24:0;;;12532:23;;;;12437:24;;12472:32;;;;;;;;;;;;;;;;;;;;;:83;;;;;;;;12588:17;;12566:18;:45;;12588:23;;;12566:45;;;;;;12638:28;;;:15;:28;;;;;;;-1:-1:-1;;;;;12638:28:0;12680:17;;;:12;:17;;;;;;12677:261;;-1:-1:-1;;;;;12731:14:0;;;;;;:9;:14;;;;;:23;;:30;12764:1;-1:-1:-1;12728:199:0;;;-1:-1:-1;;;;;12799:17:0;;;;;;:12;:17;;;;;:36;;;12854:14;:36;;12888:1;12869:20;;;12854:36;;;;;;;;;;;;;;:55;:36;;;;;:55;;:57;;;;;;;12728:199;12958:29;12970:1;12973:9;12983:3;12958:11;:29::i;:::-;12950:59;;;;;-1:-1:-1;;;12950:59:0;;;;;;;;;;;;-1:-1:-1;;;12950:59:0;;;;;;;;;;;;;;;13047:11;;13077:28;;;;:15;:28;;;;;;;;;;13025:100;;13073:3;13025:100;;-1:-1:-1;;;;;13077:28:0;;;13025:100;;;;;;;;;;;;;;;13060:11;;13047;13025:100;;;;;;;;;;;;;13163:1;13166:15;;;;:12;:15;;;;;;;13141:52;;;;;13166:21;;;13141:52;;;;;;;13189:3;13141:52;;;;;-1:-1:-1;;;;;13141:52:0;;;;;;;;;;;;;13212:35;13231:1;13233:9;13243:3;13212:18;:35::i;:::-;13204:68;;;;;-1:-1:-1;;;13204:68:0;;;;;;;;;;;;-1:-1:-1;;;13204:68:0;;;;;;;;;;;;;;;13290:4;13283:11;;;;;;;;10749:2553;;;;:::o;21529:455::-;21596:34;;:::i;:::-;-1:-1:-1;;;;;21652:14:0;;;;;;:9;:14;;;;;:21;;;21649:295;;;21703:9;21699:234;21717:2;21715:1;:4;21699:234;;;-1:-1:-1;;;;;21769:14:0;;21757:9;21769:14;;;:9;:14;;;;;;;;21799:1;21797:3;;21769:32;;:27;;:32;;;;;;21825:3;21823:5;;21820:98;;;21894:3;21892:1;:5;21870:15;21886:1;21870:18;;;;;;;;;;:28;21820:98;-1:-1:-1;21720:3:0;;21699:234;;;;21529:455;;;:::o;4796:36::-;;;;:::o;17451:979::-;17570:12;;;-1:-1:-1;;;;;17535:16:0;;17512:7;17535:16;;;:9;:16;;;;;:25;;;:32;:47;17532:64;;;-1:-1:-1;17591:5:0;17584:12;;17532:64;17638:18;;;17652:3;17638:18;;;;;;;;;17609:26;;17638:18;;;17:15:-1;;105:10;17638:18:0;88:34:-1;-1:-1;;;;;;;;17682:16:0;;;;;;:9;:16;;;;;:25;;:28;;17609:47;;-1:-1:-1;17682:25:0;:28;;;;;;;;;;;;;17667:12;;-1:-1:-1;;;;;17682:28:0;;;;17667:9;;:12;;;;-1:-1:-1;;;;;17667:43:0;;;:12;;;;;;;;;;:43;;;;17736:16;;;;;;;:9;:16;;;;;;:25;;:28;;17762:1;;17736:28;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17736:28:0;17721:9;17731:1;17721:12;;;;;;;;-1:-1:-1;;;;;17721:43:0;;;:12;;;;;;;;;;;:43;17777:20;17830:4;17777:20;17847:487;17867:3;17863:1;:7;17847:487;;;17938:12;;17895:9;:23;17905:9;17915:1;17905:12;;;;;;;;;;;;;;-1:-1:-1;;;;;17895:23:0;-1:-1:-1;;;;;17895:23:0;;;;;;;;;;;;:32;;:39;;;;:55;17892:431;;;17978:2;17974:1;:6;17971:191;;;18026:9;:23;18036:9;18046:1;18036:12;;;;;;;;;;;;;;-1:-1:-1;;;;;18026:23:0;-1:-1:-1;;;;;18026:23:0;;;;;;;;;;;;:32;;18059:1;18026:35;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18026:35:0;18005:9;18016:1;18018;18016:3;18021:1;18015:7;18005:18;;;;;;;;;;;;;:56;-1:-1:-1;;;;;18005:56:0;;;-1:-1:-1;;;;;18005:56:0;;;;;18107:9;:23;18117:9;18127:1;18117:12;;;;;;;;;;;;;;-1:-1:-1;;;;;18107:23:0;-1:-1:-1;;;;;18107:23:0;;;;;;;;;;;;:32;;18140:1;18107:35;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18107:35:0;18084:9;18095:1;18097;18095:3;18100:1;18094:7;18102:1;18094:9;18084:20;;;;;;;;;;;;;:58;-1:-1:-1;;;;;18084:58:0;;;-1:-1:-1;;;;;18084:58:0;;;;;17971:191;17892:431;;;18232:5;18215:22;;18271:9;18281:1;18271:12;;;;;;;;;;;;;;18256:27;;18302:5;;17892:431;17872:3;;17847:487;;;;18355:14;18354:15;18346:44;;;;;-1:-1:-1;;;18346:44:0;;;;;;;;;;;;-1:-1:-1;;;18346:44:0;;;;;;;;;;;;;;;-1:-1:-1;18410:12:0;17451:979;-1:-1:-1;;;17451:979:0:o;4608:41::-;;;;;;;;;;;;;:::o;3995:30::-;;;-1:-1:-1;;;;;3995:30:0;;:::o;6183:54::-;;;;;;;;;;;;;:::o;4512:41::-;;;;;;;;;;;;;:::o;5511:62::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;5821:35::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5821:35:0;;-1:-1:-1;5821:35:0:o;5873:46::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;19125:1641::-;19221:10;19174:4;19250:17;;;:9;:17;;;;;:24;19174:4;;19221:10;19250:24;;19242:51;;;;;-1:-1:-1;;;19242:51:0;;;;;;;;;;;;-1:-1:-1;;;19242:51:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;19316:20:0;;19304:9;19316:20;;;:12;:20;;;;;;;19377:8;;19374:805;;19457:14;:21;-1:-1:-1;;19411:7:0;;;;;19497:20;;19493:675;;;-1:-1:-1;;19571:19:0;19615:6;19611:542;19626:3;19624:1;:5;19611:542;;;19697:1;19678:16;:20;19675:30;;;19700:5;;19675:30;19744:20;;;19791:16;;;;;;:55;;-1:-1:-1;19812:26:0;;;;:16;:26;;;;;;;;-1:-1:-1;;;;;19812:34:0;;;;;;;;;;;;19811:35;19791:55;19787:345;;;20029:11;19981:14;19996:8;19981:24;;;;;;;;;;;;;;;;;;:43;;;19915:14;19930:8;19915:24;;;;;;;;;;;;;;;;;;:48;;;19966:11;19915:62;:109;;;;;;19913:127;;;;;20067:26;;;;:16;:26;;;;;;;;-1:-1:-1;;;;;20067:34:0;;;;;;;;;:41;;-1:-1:-1;;20067:41:0;20104:4;20067:41;;;19913:127;19897:143;;;;;19787:345;-1:-1:-1;19630:3:0;;19611:542;;;;19493:675;19374:805;;20192:15;;20189:148;;20233:18;:33;;;;;;;20286:39;;;20300:3;20286:39;;;;;;;;-1:-1:-1;;;;;20286:39:0;;;;;;;;;;;;;;;;;20189:148;-1:-1:-1;;;;;20375:32:0;;;;;;;:24;:32;;;;;;;;;;20418:36;;;;20465:19;:27;;;;;:31;;;20507:22;:30;;;;;:34;;;20552:19;:27;;;;;:31;;;20615:15;;20602:63;;-1:-1:-1;;;20602:63:0;;20641:10;20602:63;;;;20361:46;;;;20602:63;;;;;;;;20361:46;;20615:15;;;20602:38;;:63;;;;;20375:32;20602:63;;;;;;;;20615:15;20602:63;;;5:2:-1;;;;30:1;27;20:12;5:2;20602:63:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20602:63:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20602:63:0;20594:96;;;;;-1:-1:-1;;;20594:96:0;;;;;;;;;;;;-1:-1:-1;;;20594:96:0;;;;;;;;;;;;;;;20706:42;;;20723:3;20706:42;;-1:-1:-1;;;;;20706:42:0;;;;;;;;;;;;;;;;;;;;;;;19125:1641;;;;:::o;4560:41::-;;;;;;;;;;;;;:::o;24310:130::-;-1:-1:-1;;;;;24407:16:0;;;;;;:9;:16;;;;;;;;;:25;;24400:32;;;;;;;;;;;;;;;;;24371:16;;24400:32;;;24407:25;24400:32;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;24400:32:0;;;;;;;;;;;;;;;;;;;;;;;24310:130;;;:::o;22273:543::-;22314:4;22359:3;22344:12;;:18;22336:51;;;;;-1:-1:-1;;;22336:51:0;;;;;;;;;;;;-1:-1:-1;;;22336:51:0;;;;;;;;;;;;;;;22419:16;;22413:3;:22;22398:12;:37;22446:25;;:::i;:::-;22508:1;22482:23;;;:27;;;22520:14;27:10:-1;;23:18;;;45:23;;-1:-1;22520:25:0;;;;;;;;;;;;;;;;;;;;;;;;22580:21;-1:-1:-1;;22580:24:0;22619:20;;22615:170;;22719:14;22752:1;22734:16;:19;22719:35;;;;;;;;;;;;;;;;;;:54;;;22665:14;22680:16;22665:32;;;;;;;;;;;;;;;;;;:51;;:108;;;;22615:170;22803:4;22795:13;;;;22273:543;;:::o;4708:33::-;;;;:::o;5926:56::-;;;;;;;;;;;;-1:-1:-1;;;;;5926:56:0;;:::o;4845:38::-;;;;:::o;4125:27::-;;;;:::o;20774:747::-;-1:-1:-1;;;;;20913:18:0;;20841:25;20913:18;;;:12;:18;;;;;;20841:25;;20913:22;20909:582;;21006:14;:21;21029:1;;-1:-1:-1;;21006:24:0;21045:373;21055:2;21053:1;:4;21045:373;;;21113:13;;;21148:33;;;;:16;:33;;;;;;;;-1:-1:-1;;;;;21148:39:0;;;;;;;;;;21113:13;;-1:-1:-1;21148:39:0;;:47;;:39;:47;21145:57;;;21197:5;;21145:57;21336:14;21351:15;21336:31;;;;;;;;;;;;;;;;;;:50;;;21263:14;21278:15;21263:31;;;;;;;;;;;;;;;;;;:55;;;21321:11;21263:69;:123;;;;;;21241:146;;;;;21058:3;;;;;21045:373;;;-1:-1:-1;;21477:1:0;21459:19;21432:47;;20909:582;-1:-1:-1;21509:1:0;;-1:-1:-1;21509:1:0;20774:747;;;;:::o;4032:28::-;;;;:::o;22004:255::-;22052:31;;:::i;:::-;22105:9;22101:121;22119:2;22117:1;:4;22101:121;;;22169:14;22184:1;22169:17;;;;;;;;;;;;;;;;;;:41;;;22151:12;22164:1;22151:15;;;;;;;;;;:59;22122:3;;22101:121;;;-1:-1:-1;22004:255:0;:::o;3040:196::-;3107:8;;-1:-1:-1;;;;;3107:8:0;3093:10;:22;3085:31;;;;;;3160:8;;;3153:5;;3132:37;;-1:-1:-1;;;;;3160:8:0;;;;3153:5;;;;3132:37;;;3188:8;;;;3180:16;;-1:-1:-1;;;;;;3180:16:0;;;-1:-1:-1;;;;;3188:8:0;;3180:16;;;;3207:21;;;3040:196::o;25396:277::-;2807:5;;25471:13;;-1:-1:-1;;;;;2807:5:0;2793:10;:19;2785:28;;;;;;25579:12;:30;;;25620:45;;;;;;;;;;;;;;;;;;;25396:277;-1:-1:-1;;25396:277:0:o;4299:30::-;;;-1:-1:-1;;;;;4299:30:0;;:::o;5206:67::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5720:33::-;;;;;;;;;;;;;-1:-1:-1;5720:33:0;:::o;2560:28::-;;;-1:-1:-1;;;;;2560:28:0;;:::o;5047:37::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5047:37:0;:::o;24923:461::-;2807:5;;24997:13;;-1:-1:-1;;;;;2807:5:0;2793:10;:19;2785:28;;;;;;-1:-1:-1;25292:15:0;:31;;-1:-1:-1;;;;;25292:31:0;;-1:-1:-1;;;;;;25292:31:0;;;;;;25334:42;;;;;;;;;;;;;;;;;;24923:461;;;:::o;4656:45::-;;;;;;;;;;;;;:::o;13310:229::-;13435:14;:21;;13366:14;;;;13435:21;-1:-1:-1;;13490:8:0;;13475:24;;;;;;;;;;;;;;;;;;;;:48;;-1:-1:-1;13524:6:0;-1:-1:-1;13310:229:0;;:::o;5621:35::-;;;;;;;;;5091:46;;;;;;;;;;;;;:::o;4067:36::-;;;;:::o;5409:48::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5409:48:0;-1:-1:-1;5409:48:0;:::o;4748:41::-;;;;:::o;24448:147::-;-1:-1:-1;;;;;24550:16:0;;;;24526:4;24550:16;;;:9;:16;;;;;;;;:37;;;:29;;;;:37;;;;;24448:147::o;5991:57::-;;;;;;;;;;;;;:::o;6244:59::-;;;;;;;;;;;;;:::o;6121:54::-;;;;;;;;;;;;;:::o;4159:28::-;;;;:::o;4262:30::-;;;-1:-1:-1;;;;;4262:30:0;;:::o;2841:110::-;2807:5;;-1:-1:-1;;;;;2807:5:0;2793:10;:19;2785:28;;;;;;2923:8;:20;;-1:-1:-1;;;;;;2923:20:0;-1:-1:-1;;;;;2923:20:0;;;;;;;;;;2841:110::o;13547:1478::-;13697:10;13593:4;13780:20;;;:9;:20;;;;;:27;13593:4;;13697:10;13780:27;;13772:54;;;;;-1:-1:-1;;;13772:54:0;;;;;;;;;;;;-1:-1:-1;;;13772:54:0;;;;;;;;;;;;;;;13847:1;13867:11;;;;;;:27;;;13892:2;13882:6;:12;;13867:27;13859:55;;;;;-1:-1:-1;;;13859:55:0;;;;;;;;;;;;-1:-1:-1;;;13859:55:0;;;;;;;;;;;;;;;13978:15;;-1:-1:-1;;;;;13967:26:0;;;13978:15;;13967:26;;:58;;-1:-1:-1;14010:15:0;;-1:-1:-1;;;;;13997:28:0;;;14010:15;;13997:28;13967:58;13962:274;;14064:15;;;14120:20;;;:12;:20;;;;;;;;;14051:90;;-1:-1:-1;;;14051:90:0;;-1:-1:-1;;;;;14051:90:0;;;;;;;14113:4;14051:90;;;;;;;;;;;;;14064:15;;;14051:42;;:90;;;;;14120:20;14051:90;;;;;;;14064:15;14051:90;;;5:2:-1;;;;30:1;27;20:12;5:2;14051:90:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14051:90:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14051:90:0;14042:124;;;;;-1:-1:-1;;;14042:124:0;;;;;;;;;;;;-1:-1:-1;;;14042:124:0;;;;;;;;;;;;;;;13962:274;;;-1:-1:-1;14223:1:0;13962:274;14299:6;14309:1;14299:11;14296:461;;;14367:13;;;-1:-1:-1;;;;;14327:20:0;;;;;;:9;:20;;;;;;;;14361:1;14327:36;;:33;;;:36;;;;;;:53;;;;;;;14296:461;;;-1:-1:-1;;14434:10:0;;14422:114;14446:5;;14422:114;;-1:-1:-1;;;;;14466:20:0;;;;;;:9;:20;;;;;;;;:36;;;:33;;:36;;;;;;14506:3;-1:-1:-1;14466:43:0;14458:78;;;;;-1:-1:-1;;;14458:78:0;;;;;;;;;;;;-1:-1:-1;;;14458:78:0;;;;;;;;;;;;;;;-1:-1:-1;;14453:3:0;14422:114;;;-1:-1:-1;;;;;;14556:20:0;;;;;;:9;:20;;;;;;;;:41;;;:33;;:41;;;;;;14553:192;;14654:13;;;-1:-1:-1;;;;;14604:20:0;;;;;;:9;:20;;;;;;;;:41;;;:33;;;:41;;;;;;14648:3;:19;;;14604:63;;14553:192;;;14732:13;;;-1:-1:-1;;;;;14687:20:0;;;;;;:9;:20;;;;;;;;:41;;;:33;;;:41;;;;;;:58;;;;;;;14553:192;14777:34;14789:6;14797:9;14807:3;14777:11;:34::i;:::-;14769:64;;;;;-1:-1:-1;;;14769:64:0;;;;;;;;;;;;-1:-1:-1;;;14769:64:0;;;;;;;;;;;;;;;14879:20;;;;:12;:20;;;;;;;;;;14849:62;;;;;14879:26;;;14849:62;;;;;;;14907:3;14849:62;;;;;;-1:-1:-1;;;;;14849:62:0;;;;;;;;;;;;;14930:40;14949:6;14956:9;14966:3;14930:18;:40::i;:::-;14922:73;;;;;-1:-1:-1;;;14922:73:0;;;;;;;;;;;;-1:-1:-1;;;14922:73:0;;;;;;;;;;;;;;;-1:-1:-1;15013:4:0;;13547:1478;-1:-1:-1;;;13547:1478:0:o;4903:24::-;;;;:::o;15039:2404::-;15115:4;15131:15;15157:16;15184;15211;15238;15270:6;15280:1;15270:11;:26;;;;15285:6;15295:1;15285:11;15270:26;15267:1551;;;-1:-1:-1;;;;;15339:16:0;;;15323:44;15339:16;;;:9;:16;;;;;;;;:27;;;15323:44;;;:15;:44;;;;;;15397:16;;;;;15323:44;;;-1:-1:-1;15382:47:0;;15425:3;15382:14;:47::i;:::-;-1:-1:-1;15477:14:0;;;15444:29;15467:5;;-1:-1:-1;;;;;15467:5:0;;;15444:29;;:22;:29;;;;;;;;:53;;15477:20;;;15444:53;;;;;;15547:14;;15537:5;;;;;15512:31;;:24;:31;;;;:55;;15547:20;;;15512:55;;;;;15267:1551;;;15597:6;15607:1;15597:11;:26;;;;15612:6;15622:1;15612:11;15597:26;15594:1224;;;-1:-1:-1;;;;;15667:16:0;;;15651:44;15667:16;;;:9;:16;;;;;;;;:27;;;;;15651:44;;:15;:44;;;;;;;;;15736:19;;;;;;;;;:30;;;;15720:47;;;;;;;;;;;;;-1:-1:-1;15651:44:0;-1:-1:-1;15594:1224:0;;;15797:6;15807:1;15797:11;:26;;;;15812:6;15822:1;15812:11;15797:26;15794:1024;;;-1:-1:-1;;;;;15867:16:0;;;15851:44;15867:16;;;:9;:16;;;;;;;;:27;;;;;15851:44;;:15;:44;;;;;;;;;15937:19;;;;;;;;;:30;;;15921:47;;;;;;;;;;;16009:19;;;;;;;;;:30;;;;15993:47;;;;;;;;;;;;;-1:-1:-1;15851:44:0;-1:-1:-1;15921:47:0;-1:-1:-1;15794:1024:0;;;16070:6;16080:1;16070:11;:26;;;;16085:6;16095:1;16085:11;16070:26;16067:751;;;-1:-1:-1;;;;;16140:16:0;;;16124:44;16140:16;;;:9;:16;;;;;;;;:27;;;;;16124:44;;:15;:44;;;;;;;;;16210:19;;;;;;;;;:30;;;16194:47;;;;;;;;;;;16283:19;;;;;;;;;:30;;;16267:47;;;;;;;;;;;16355:19;;;;;;;;;:30;;;;16339:47;;;;;;;;;;;-1:-1:-1;16124:44:0;;-1:-1:-1;16194:47:0;-1:-1:-1;16267:47:0;-1:-1:-1;16067:751:0;;;16416:6;16426:1;16416:11;:27;;;;16431:6;16441:2;16431:12;16416:27;16413:405;;;-1:-1:-1;;;;;;;;16487:16:0;;;16471:44;16487:16;;;:9;:16;;;;;;;;:27;;;;;16471:44;;:15;:44;;;;;;;;;16557:19;;;;;;;;;:30;;;16541:47;;;;;;;;;;;16630:19;;;;;;;;;:30;;;16614:47;;;;;;;;;;;16703:19;;;;;;;;;:30;;;16687:47;;;;;;;;;;;16775:19;;;;;;;;;:30;;;;16759:47;;;;;;;;;;;;;;;-1:-1:-1;16471:44:0;-1:-1:-1;16413:405:0;-1:-1:-1;;;;;16836:18:0;;;;;;:9;:18;;;;;:25;;;16832:70;;16889:12;;16873:29;;;;:15;:29;;;;;;-1:-1:-1;;;;;16873:29:0;;-1:-1:-1;16832:70:0;-1:-1:-1;;;;;16927:18:0;;;;;;:9;:18;;;;;;;;:39;;;:31;;:39;;;;;;16970:3;-1:-1:-1;16924:488:0;;17025:20;;;;:12;:20;;;;;;;;;;-1:-1:-1;;;;;16990:31:0;;;;;:22;:31;;;;;:61;;17025:26;;;16990:61;;;;;;17103:20;;17066:24;:33;;;;;:63;;17103:26;;;17066:63;;;;;17193:20;;;;;;;;;17149:76;;;;;17193:26;;;17149:76;;;;;;;17221:3;17149:76;;;;;;17173:10;;16990:31;17149:76;;;;;;;;;;16924:488;;;17319:20;;;;:12;:20;;;;;;;;;;17275:76;;;;;17319:26;;;17275:76;;;;;;;17347:3;17275:76;;;;;;17299:10;;-1:-1:-1;;;;;17275:76:0;;;;;;;;;;;;17366:32;17378:6;17386:7;17394:3;17366:11;:32::i;:::-;;16924:488;-1:-1:-1;17429:4:0;;15039:2404;-1:-1:-1;;;;;;;;15039:2404:0:o;22824:1476::-;-1:-1:-1;;22938:9:0;;22907:4;22969:16;;;:13;:16;;;;;:23;22907:4;;22938:9;23003:20;;:::i;:::-;-1:-1:-1;;;;;23048:16:0;;;;;;:9;:16;;;;;:19;;;23034:33;;23100:19;23120:1;23100:22;;;;;;;;;23078:19;;;;:44;;;23140:16;;;;:13;:16;;;;;27:10:-1;;39:1;23:18;;;45:23;;23140:27:0;;;;;;;;;;;;;;;;;;;;;;;23197:19;23154:1;23197:22;;;;;;;;;23186:33;;23232:19;23254:15;:45;23270:13;:16;23284:1;23270:16;;;;;;;;;;;23287:3;23270:21;;;;;;;;;;;;;;;;;;;;;;;:28;23254:45;;;;;;;;;;;;;-1:-1:-1;;;;;23254:45:0;;-1:-1:-1;23313:17:0;23310:57;;-1:-1:-1;23354:12:0;;23338:29;;;;:15;:29;;;;;;-1:-1:-1;;;;;23338:29:0;23310:57;23382:6;23378:462;23393:2;23391:1;:4;23378:462;;;23425:11;23464:3;23439:15;23455:1;23439:18;;;;;;;;;;23458:1;23439:21;;;;;;;;;-1:-1:-1;;;;;23482:24:0;;;;;;;:19;:24;;;;;;;;:34;;23439:28;;;;23482:34;;;;;;23531:24;:29;;;;;;:39;;;;;;23590:42;;23604:3;23590:42;;;;;;;;;-1:-1:-1;23613:3:0;;23590:42;;;;;;;;;;;;;;;;;;;23439:28;;-1:-1:-1;23590:42:0;;;;;;;;;;23653:16;;;;:13;:16;;;;;:21;;23670:3;;23653:21;;;;;;;;;;;;;;;;:36;;;23647:42;;23711:15;:45;23727:13;:16;23741:1;23727:16;;;;;;;;;;;23744:3;23727:21;;;;;;;;;;;;;;;;;;;;;;;:28;23711:45;;;;;;;;;;;;;-1:-1:-1;;;;;23711:45:0;;-1:-1:-1;23774:17:0;23771:57;;23815:12;;23799:29;;;;:15;:29;;;;;;-1:-1:-1;;;;;23799:29:0;;-1:-1:-1;23771:57:0;-1:-1:-1;23396:3:0;;23378:462;;;;23855:17;23873:1;23855:20;;;;;;;;;23852:313;;23929:1;23906:17;23924:1;23906:20;;;;;;;;:24;23852:313;;;23964:17;23982:1;23964:20;;;;;;;;;23988:1;23964:25;23960:205;;;24038:1;24015:17;24033:1;24015:20;;;;;;23960:205;24090:19;24110:1;24090:22;;;;;;;;:24;;;;;;:22;24129:17;24147:1;24129:20;;;;;;;;:24;23960:205;-1:-1:-1;;;;;24175:20:0;;;;;;:13;:20;;;;;;;;-1:-1:-1;;24196:10:0;;24175:32;;;;;;;;:38;;;24229:41;;24246:3;24229:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24288:4:0;;22824:1476;-1:-1:-1;;;;;;;;22824:1476:0:o;18438:604::-;18507:4;18545:2;18507:4;18558:455;18580:5;18576:1;:9;18558:455;;;18616:11;18630:28;;;:15;:28;;;;;;;;;-1:-1:-1;;;;;18630:28:0;18687:14;;;:9;:14;;;;;;:25;;;;18730:17;18727:57;;-1:-1:-1;18771:12:0;;18755:29;;;;:15;:29;;;;;;-1:-1:-1;;;;;18755:29:0;18727:57;18834:1;18830:5;;18799:11;18813:24;;;:16;:24;;;;;;;;;-1:-1:-1;;;;;18859:24:0;;;;;:19;:24;;;;;:34;;18813:31;;;18859:34;;;;;18908:24;:29;;;;;;:39;;;;;;18967:34;;18985:3;18967:34;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18587:3:0;;18558:455;;;-1:-1:-1;19030:4:0;;18438:604;-1:-1:-1;;;;18438:604:0:o;3905:21781::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3905:21781:0;-1:-1:-1;;;;;3905:21781:0;;;;;;;;;;;-1:-1:-1;3905:21781:0;;;;;;;-1:-1:-1;3905:21781:0;;;-1:-1:-1;3905:21781:0;:::i;:::-;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;-1:-1;3905:21781:0;;;-1:-1:-1;;3905:21781:0:o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;;3905:21781:0;;;;;;

Swarm Source

bzzr://b24c3080c79b78b696e0610f9c2e110d9f6e11d842949e5a74256660bbd6c786

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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