ETH Price: $3,287.77 (+1.24%)
Gas: 2 Gwei

Contract

0x5fD3E66Dcc3915D24b9e6FC57720dc2835714CED
 

Overview

ETH Balance

0.000750842719538102 ETH

Eth Value

$2.47 (@ $3,287.77/ETH)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Drain129446922021-08-02 7:37:121091 days ago1627889832IN
0x5fD3E66D...835714CED
0 ETH0.0004951220
Drain129446662021-08-02 7:31:561091 days ago1627889516IN
0x5fD3E66D...835714CED
0 ETH0.000633320
Transfer105046892020-07-21 19:34:271468 days ago1595360067IN
0x5fD3E66D...835714CED
0 ETH0.0047037756
Transfer105026332020-07-21 12:07:321468 days ago1595333252IN
0x5fD3E66D...835714CED
0 ETH0.0091460199
Transfer105026272020-07-21 12:05:111468 days ago1595333111IN
0x5fD3E66D...835714CED
0 ETH0.009147299
Transfer104390512020-07-11 15:26:421478 days ago1594481202IN
0x5fD3E66D...835714CED
0 ETH0.0031913938
Transfer104300802020-07-10 6:11:311479 days ago1594361491IN
0x5fD3E66D...835714CED
0 ETH0.0006827427
Transfer104010032020-07-05 18:29:241484 days ago1593973764IN
0x5fD3E66D...835714CED
0 ETH0.0020900127
Transfer104009602020-07-05 18:20:021484 days ago1593973202IN
0x5fD3E66D...835714CED
0 ETH0.0021340723.1
Transfer103948872020-07-04 19:51:041485 days ago1593892264IN
0x5fD3E66D...835714CED
0 ETH0.0005332810
Buy103902632020-07-04 2:32:151485 days ago1593829935IN
0x5fD3E66D...835714CED
0.3 ETH0.002034624
Transfer103227382020-06-23 14:59:111496 days ago1592924351IN
0x5fD3E66D...835714CED
0 ETH0.0040648944
Transfer103227382020-06-23 14:59:111496 days ago1592924351IN
0x5fD3E66D...835714CED
0 ETH0.0040648944
Transfer103192382020-06-23 2:04:441496 days ago1592877884IN
0x5fD3E66D...835714CED
0 ETH0.0040805938
Stake Tokens103106162020-06-21 18:11:051498 days ago1592763065IN
0x5fD3E66D...835714CED
0 ETH0.0004939420
Stake Tokens103106162020-06-21 18:11:051498 days ago1592763065IN
0x5fD3E66D...835714CED
0 ETH0.0005186321
Stake Tokens103106162020-06-21 18:11:051498 days ago1592763065IN
0x5fD3E66D...835714CED
0 ETH0.0005186321
Stake Tokens103106162020-06-21 18:11:051498 days ago1592763065IN
0x5fD3E66D...835714CED
0 ETH0.0003951516
Stake Tokens103106162020-06-21 18:11:051498 days ago1592763065IN
0x5fD3E66D...835714CED
0 ETH0.0003951516
Stake Tokens103106162020-06-21 18:11:051498 days ago1592763065IN
0x5fD3E66D...835714CED
0 ETH0.0003704515
Transfer102758182020-06-16 8:49:481503 days ago1592297388IN
0x5fD3E66D...835714CED
0 ETH0.0041879739
Transfer102746822020-06-16 4:36:071503 days ago1592282167IN
0x5fD3E66D...835714CED
0 ETH0.0032334435
Transfer102680592020-06-15 4:07:261504 days ago1592194046IN
0x5fD3E66D...835714CED
0 ETH0.002268731
Transfer102677422020-06-15 2:51:161504 days ago1592189476IN
0x5fD3E66D...835714CED
0 ETH0.0017948422
Transfer102675452020-06-15 2:05:351504 days ago1592186735IN
0x5fD3E66D...835714CED
0 ETH0.0012655519
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
129446662021-08-02 7:31:561091 days ago1627889516
0x5fD3E66D...835714CED
0.017 ETH
105046892020-07-21 19:34:271468 days ago1595360067
0x5fD3E66D...835714CED
0.00834467 ETH
105026332020-07-21 12:07:321468 days ago1595333252
0x5fD3E66D...835714CED
0.00030374 ETH
105026272020-07-21 12:05:111468 days ago1595333111
0x5fD3E66D...835714CED
0.00892844 ETH
104390512020-07-11 15:26:421478 days ago1594481202
0x5fD3E66D...835714CED
0.00015509 ETH
104010032020-07-05 18:29:241484 days ago1593973764
0x5fD3E66D...835714CED
0.00194407 ETH
104009602020-07-05 18:20:021484 days ago1593973202
0x5fD3E66D...835714CED
0.00029722 ETH
103227382020-06-23 14:59:111496 days ago1592924351
0x5fD3E66D...835714CED
0.00095967 ETH
103227382020-06-23 14:59:111496 days ago1592924351
0x5fD3E66D...835714CED
0.00429991 ETH
103192382020-06-23 2:04:441496 days ago1592877884
0x5fD3E66D...835714CED
0.00000024 ETH
102758182020-06-16 8:49:481503 days ago1592297388
0x5fD3E66D...835714CED
0.00000044 ETH
102746822020-06-16 4:36:071503 days ago1592282167
0x5fD3E66D...835714CED
0.00000393 ETH
102680592020-06-15 4:07:261504 days ago1592194046
0x5fD3E66D...835714CED
0.0120314 ETH
102677422020-06-15 2:51:161504 days ago1592189476
0x5fD3E66D...835714CED
0.00591931 ETH
102675452020-06-15 2:05:351504 days ago1592186735
0x5fD3E66D...835714CED
0.00406086 ETH
102675092020-06-15 1:58:011504 days ago1592186281
0x5fD3E66D...835714CED
0.00000009 ETH
101854142020-06-02 8:54:421517 days ago1591088082
0x5fD3E66D...835714CED
175.99956847 ETH
101852912020-06-02 8:27:191517 days ago1591086439
0x5fD3E66D...835714CED
200 ETH
101852542020-06-02 8:20:031517 days ago1591086003
0x5fD3E66D...835714CED
100 ETH
101852082020-06-02 8:09:351517 days ago1591085375
0x5fD3E66D...835714CED
50 ETH
101851922020-06-02 8:05:461517 days ago1591085146
0x5fD3E66D...835714CED
10 ETH
101851432020-06-02 7:55:441517 days ago1591084544
0x5fD3E66D...835714CED
10 ETH
101850792020-06-02 7:41:221517 days ago1591083682
0x5fD3E66D...835714CED
1 ETH
101845942020-06-02 5:54:341517 days ago1591077274
0x5fD3E66D...835714CED
1 ETH
101837922020-06-02 2:47:121517 days ago1591066032
0x5fD3E66D...835714CED
0.11817178 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
XcelDream

Compiler Version
v0.4.20+commit.3155dd80

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-04-20
*/

pragma solidity ^0.4.20;

 /**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {
    function percent(uint value,uint numerator, uint denominator, uint precision) internal pure  returns(uint quotient) {
        uint _numerator  = numerator * 10 ** (precision+1);
        uint _quotient =  ((_numerator / denominator) + 5) / 10;
        return (value*_quotient/1000000000000000000);
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        assert(c / a == b);
        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        // assert(b > 0); // Solidity automatically throws when dividing by 0
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold
        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        assert(b <= a);
        return a - b;
    }
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        assert(c >= a);
        return c;
    }
}

contract XcelDream {
    
    /*=====================================
    =            CONFIGURABLES            =
    =====================================*/
    
    string public name                                      = "XcelDream";
    string public symbol                                    = "XDM";
    uint8 constant public decimals                          = 18;
    uint8 constant internal dividendFee_                    = 5;
    uint8 constant internal referralPer_                    = 20;
    uint8 constant internal developerFee_                   = 5;
    uint8 internal stakePer_                                = 1;
    uint256 constant internal tokenPriceInitial_            = 0.0001 ether;
    uint256 constant internal tokenPriceIncremental_        = 0.000001 ether;
    uint256 constant internal tokenPriceDecremental_        = 0.0000014 ether;
    uint256 constant internal magnitude                     = 2**64;
    
    // Proof of stake (defaults at 1 token)
    uint256 public stakingRequirement                       = 1e18;
    
    // Ambassador program
    mapping(address => bool) internal ambassadors_;
    uint256 constant internal ambassadorMaxPurchase_        = 1 ether;
    uint256 constant internal ambassadorQuota_              = 1 ether;
    
   /*================================
    =            DATASETS            =
    ================================*/
    
    mapping(address => uint256) internal tokenBalanceLedger_;
    mapping(address => uint256) internal stakeBalanceLedger_;
    mapping(address => uint256) internal stakingTime_;
    mapping(address => uint256) internal referralBalance_;
    
    mapping(address => address) internal referralLevel1Address;
    mapping(address => address) internal referralLevel2Address;
    mapping(address => address) internal referralLevel3Address;
    mapping(address => address) internal referralLevel4Address;
    mapping(address => address) internal referralLevel5Address;
    mapping(address => address) internal referralLevel6Address;
    mapping(address => address) internal referralLevel7Address;
    mapping(address => address) internal referralLevel8Address;
    mapping(address => address) internal referralLevel9Address;
    mapping(address => address) internal referralLevel10Address;
    
    mapping(address => int256) internal payoutsTo_;
    mapping(address => uint256) internal ambassadorAccumulatedQuota_;
    uint256 internal tokenSupply_                           = 0;
    uint256 internal developerBalance                       = 0;
    uint256 internal profitPerShare_;
    
    // administrator list (see above on what they can do)
    mapping(bytes32 => bool) public administrators;
    bool public onlyAmbassadors = false;
    
    /*=================================
    =            MODIFIERS            =
    =================================*/
    
    // Only people with tokens
    modifier onlybelievers () {
        require(myTokens() > 0);
        _;
    }
    
    // Only people with profits
    modifier onlyhodler() {
        require(myDividends(true) > 0);
        _;
    }
    
    // Only admin
    modifier onlyAdministrator(){
        address _customerAddress = msg.sender;
        require(administrators[keccak256(_customerAddress)]);
        _;
    }
    
    modifier antiEarlyWhale(uint256 _amountOfEthereum){
        address _customerAddress = msg.sender;
        if( onlyAmbassadors && ((totalEthereumBalance() - _amountOfEthereum) <= ambassadorQuota_ )){
            require(
                // is the customer in the ambassador list?
                ambassadors_[_customerAddress] == true &&
                // does the customer purchase exceed the max ambassador quota?
                (ambassadorAccumulatedQuota_[_customerAddress] + _amountOfEthereum) <= ambassadorMaxPurchase_
            );
            // updated the accumulated quota    
            ambassadorAccumulatedQuota_[_customerAddress] = SafeMath.add(ambassadorAccumulatedQuota_[_customerAddress], _amountOfEthereum);
            _;
        } else {
            // in case the ether count drops low, the ambassador phase won't reinitiate
            onlyAmbassadors = false;
            _;    
        }
    }
    
    /*==============================
    =            EVENTS            =
    ==============================*/
    
    event onTokenPurchase(
        address indexed customerAddress,
        uint256 incomingEthereum,
        uint256 tokensMinted,
        address indexed referredBy
    );
    
    event onTokenSell(
        address indexed customerAddress,
        uint256 tokensBurned,
        uint256 ethereumEarned
    );
    
    event onReinvestment(
        address indexed customerAddress,
        uint256 ethereumReinvested,
        uint256 tokensMinted
    );
    
    event onWithdraw(
        address indexed customerAddress,
        uint256 ethereumWithdrawn
    );
    
    event Transfer(
        address indexed from,
        address indexed to,
        uint256 tokens
    );
    
    /*=======================================
    =            PUBLIC FUNCTIONS            =
    =======================================*/
    /*
    * -- APPLICATION ENTRY POINTS --  
    */
    function XcelDream() public {
        // add administrators here
        administrators[0xd44dea3678f826c0c142f05bdfdf646d04def08a04620100e2778d78e59600f0] = true;
        ambassadors_[0x0000000000000000000000000000000000000000] = true;
    }
     
    /**
     * Converts all incoming Ethereum to tokens for the caller, and passes down the referral address (if any)
     */
    function buy(address _referredBy) public payable returns(uint256) {
        purchaseTokens(msg.value, _referredBy);
    }
    
    function() payable public {
        purchaseTokens(msg.value, 0x0);
    }
    
    /**
     * Converts all of caller's dividends to tokens.
     */
    function reinvest() onlyhodler() public {
        // fetch dividends
        uint256 _dividends                  = myDividends(false); // retrieve ref. bonus later in the code
        // pay out the dividends virtually
        address _customerAddress            = msg.sender;
        payoutsTo_[_customerAddress]        +=  (int256) (_dividends * magnitude);
        // retrieve ref. bonus
        _dividends                          += referralBalance_[_customerAddress];
        referralBalance_[_customerAddress]  = 0;
        // dispatch a buy order with the virtualized "withdrawn dividends"
        uint256 _tokens                     = purchaseTokens(_dividends, 0x0);
        // fire event
        onReinvestment(_customerAddress, _dividends, _tokens);
    }
    
    /**
     * Alias of sell() and withdraw().
     */
    function exit() public {
        // get token count for caller & sell them all
        address _customerAddress            = msg.sender;
        uint256 _tokens                     = tokenBalanceLedger_[_customerAddress];
        if(_tokens > 0) sell(_tokens);
        withdraw();
    }

    /**
     * Withdraws all of the callers earnings.
     */
    function withdraw() onlyhodler() public {
        // setup data
        address _customerAddress            = msg.sender;
        uint256 _dividends                  = myDividends(false); // get ref. bonus later in the code
        // update dividend tracker
        payoutsTo_[_customerAddress]        +=  (int256) (_dividends * magnitude);
        // add ref. bonus
        _dividends                          += referralBalance_[_customerAddress];
        referralBalance_[_customerAddress]  = 0;
        // delivery service
        _customerAddress.transfer(_dividends);
        // fire event
        onWithdraw(_customerAddress, _dividends);
    }
    
    /**
     * Liquifies tokens to ethereum.
     */
    function sell(uint256 _amountOfTokens) onlybelievers () public {
        address _customerAddress            = msg.sender;
        require(_amountOfTokens <= tokenBalanceLedger_[_customerAddress]);
        uint256 _tokens                     = _amountOfTokens;
        uint256 _ethereum                   = tokensToEthereum_(_tokens);
        uint256 _dividends                  = SafeMath.percent(_ethereum,dividendFee_,100,18);
        uint256 _taxedEthereum              = SafeMath.sub(_ethereum, _dividends);
        // burn the sold tokens
        tokenSupply_                        = SafeMath.sub(tokenSupply_, _tokens);
        tokenBalanceLedger_[_customerAddress] = SafeMath.sub(tokenBalanceLedger_[_customerAddress], _tokens);
        // update dividends tracker
        int256 _updatedPayouts              = (int256) (profitPerShare_ * _tokens + (_taxedEthereum * magnitude));
        payoutsTo_[_customerAddress]        -= _updatedPayouts;       
        // dividing by zero is a bad idea
        if (tokenSupply_ > 0) {
            // update the amount of dividends per token
            profitPerShare_                 = SafeMath.add(profitPerShare_, (_dividends * magnitude) / tokenSupply_);
        }
        // fire event
        onTokenSell(_customerAddress, _tokens, _taxedEthereum);
    }
    
    /**
     * Transfer tokens from the caller to a new holder.
     * Remember, there's a 10% fee here as well.
     */
    function transfer(address _toAddress, uint256 _amountOfTokens) onlybelievers () public returns(bool) {
        address _customerAddress            = msg.sender;
        // make sure we have the requested tokens
        require(!onlyAmbassadors && _amountOfTokens <= tokenBalanceLedger_[_customerAddress]);
        // withdraw all outstanding dividends first
        if(myDividends(true) > 0) withdraw();
        // liquify 10% of the tokens that are transfered
        // these are dispersed to shareholders
        uint256 _tokenFee                   = SafeMath.percent(_amountOfTokens,dividendFee_,100,18);
        uint256 _taxedTokens                = SafeMath.sub(_amountOfTokens, _tokenFee);
        uint256 _dividends                  = tokensToEthereum_(_tokenFee);
        // burn the fee tokens
        tokenSupply_                        = SafeMath.sub(tokenSupply_, _tokenFee);
        // exchange tokens
        tokenBalanceLedger_[_customerAddress] = SafeMath.sub(tokenBalanceLedger_[_customerAddress], _amountOfTokens);
        tokenBalanceLedger_[_toAddress]     = SafeMath.add(tokenBalanceLedger_[_toAddress], _taxedTokens);
        // update dividend trackers
        payoutsTo_[_customerAddress]        -= (int256) (profitPerShare_ * _amountOfTokens);
        payoutsTo_[_toAddress]              += (int256) (profitPerShare_ * _taxedTokens);
        // disperse dividends among holders
        profitPerShare_                     = SafeMath.add(profitPerShare_, (_dividends * magnitude) / tokenSupply_);
        // fire event
        Transfer(_customerAddress, _toAddress, _taxedTokens);
        return true;
    }
    
    /*----------  ADMINISTRATOR ONLY FUNCTIONS  ----------*/
    /**
     * administrator can manually disable the ambassador phase.
     */
    function disableInitialStage() onlyAdministrator() public {
        onlyAmbassadors                     = false;
    }
    
    function changeStakePercent(uint8 stakePercent) onlyAdministrator() public {
        stakePer_                           = stakePercent;
    }
    
    function setAdministrator(bytes32 _identifier, bool _status) onlyAdministrator() public {
        administrators[_identifier]         = _status;
    }
    
    function setStakingRequirement(uint256 _amountOfTokens) onlyAdministrator() public {
        stakingRequirement                  = _amountOfTokens;
    }
    
    function setName(string _name) onlyAdministrator() public {
        name                                = _name;
    }
    
    function setSymbol(string _symbol) onlyAdministrator() public {
        symbol                              = _symbol;
    }
    
    function drain(uint256 _ethereumToDrain) external onlyAdministrator {
        address _adminAddress = msg.sender;
        require(this.balance >= _ethereumToDrain);
        _adminAddress.transfer(_ethereumToDrain);
    }
    
    function drainDeveloperFees() external onlyAdministrator {
        address _adminAddress   = msg.sender;
        _adminAddress.transfer(developerBalance);
        developerBalance        = 0;
    }
    
    /*----------  HELPERS AND CALCULATORS  ----------*/
    /**
     * Method to view the current Ethereum stored in the contract
     * Example: totalEthereumBalance()
     */
    function totalEthereumBalance() public view returns(uint) {
        return this.balance;
    }
    /**
     * Retrieve the total developer fee balance.
     */
    function totalDeveloperBalance() public view returns(uint) {
        return developerBalance;
    }
    /**
     * Retrieve the total token supply.
     */
    function totalSupply() public view returns(uint256) {
        return tokenSupply_;
    }
    
    /**
     * Retrieve the tokens owned by the caller.
     */
    function myTokens() public view returns(uint256) {
        address _customerAddress            = msg.sender;
        return balanceOf(_customerAddress);
    }
    
    /**
     * Retrieve the dividends owned by the caller.
       */ 
    function myDividends(bool _includeReferralBonus) public view returns(uint256) {
        address _customerAddress            = msg.sender;
        return _includeReferralBonus ? dividendsOf(_customerAddress) + referralBalance_[_customerAddress] : dividendsOf(_customerAddress) ;
    }
    
    /**
     * Retrieve the token balance of any single address.
     */
    function balanceOf(address _customerAddress) view public returns(uint256) {
        return tokenBalanceLedger_[_customerAddress];
    }
    
    /**
     * Retrieve the dividend balance of any single address.
     */
    function dividendsOf(address _customerAddress) view public returns(uint256) {
        return (uint256) ((int256)(profitPerShare_ * (tokenBalanceLedger_[_customerAddress] + stakeBalanceLedger_[_customerAddress])) - payoutsTo_[_customerAddress]) / magnitude;
    }
    
    /**
     * Return the buy price of 1 individual token.
     */
    function sellPrice() public view returns(uint256) {
        if(tokenSupply_ == 0){
            return tokenPriceInitial_       - tokenPriceDecremental_;
        } else {
            uint256 _ethereum               = tokensToEthereum_(1e18);
            uint256 _dividends              = SafeMath.percent(_ethereum,dividendFee_,100,18);
            uint256 _taxedEthereum          = SafeMath.sub(_ethereum, _dividends);
            return _taxedEthereum;
        }
    }
    
    /**
     * Return the sell price of 1 individual token.
     */
    function buyPrice() public view returns(uint256) {
        if(tokenSupply_ == 0){
            return tokenPriceInitial_       + tokenPriceIncremental_;
        } else {
            uint256 _ethereum               = tokensToEthereum_(1e18);
            uint256 untotalDeduct           = developerFee_ + referralPer_ + dividendFee_;
            uint256 totalDeduct             = SafeMath.percent(_ethereum,untotalDeduct,100,18);
            uint256 _taxedEthereum          = SafeMath.add(_ethereum, totalDeduct);
            return _taxedEthereum;
        }
    }
   
    function calculateTokensReceived(uint256 _ethereumToSpend) public view returns(uint256) {
        uint256 untotalDeduct               = developerFee_ + referralPer_ + dividendFee_;
        uint256 totalDeduct                 = SafeMath.percent(_ethereumToSpend,untotalDeduct,100,18);
        uint256 _taxedEthereum              = SafeMath.sub(_ethereumToSpend, totalDeduct);
        uint256 _amountOfTokens             = ethereumToTokens_(_taxedEthereum);
        return _amountOfTokens;
    }
   
    function calculateEthereumReceived(uint256 _tokensToSell) public view returns(uint256) {
        require(_tokensToSell <= tokenSupply_);
        uint256 _ethereum                   = tokensToEthereum_(_tokensToSell);
        uint256 _dividends                  = SafeMath.percent(_ethereum,dividendFee_,100,18);
        uint256 _taxedEthereum              = SafeMath.sub(_ethereum, _dividends);
        return _taxedEthereum;
    }
    
    function stakeTokens(uint256 _amountOfTokens) onlybelievers () public returns(bool){
        address _customerAddress            = msg.sender;
        // make sure we have the requested tokens
        require(!onlyAmbassadors && _amountOfTokens <= tokenBalanceLedger_[_customerAddress]);
        uint256 _amountOfTokensWith1Token   = SafeMath.sub(_amountOfTokens, 1e18);
        stakingTime_[_customerAddress]      = now;
        stakeBalanceLedger_[_customerAddress] = SafeMath.add(stakeBalanceLedger_[_customerAddress], _amountOfTokensWith1Token);
        tokenBalanceLedger_[_customerAddress] = SafeMath.sub(tokenBalanceLedger_[_customerAddress], _amountOfTokensWith1Token);
    }
    
    // Add daily ROI
    function stakeTokensBalance(address _customerAddress) public view returns(uint256){
        uint256 timediff                    = SafeMath.sub(now, stakingTime_[_customerAddress]);
        uint256 dayscount                   = SafeMath.div(timediff, 86400); //86400 Sec for 1 Day
        uint256 roiPercent                  = SafeMath.mul(dayscount, stakePer_);
        uint256 roiTokens                   = SafeMath.percent(stakeBalanceLedger_[_customerAddress],roiPercent,100,18);
        uint256 finalBalance                = SafeMath.add(stakeBalanceLedger_[_customerAddress],roiTokens);
        return finalBalance;
    }
    
    function stakeTokensTime(address _customerAddress) public view returns(uint256){
        return stakingTime_[_customerAddress];
    }
    
    function releaseStake() onlybelievers () public returns(bool){
        address _customerAddress            = msg.sender;
        // make sure we have the requested tokens
        require(!onlyAmbassadors && stakingTime_[_customerAddress] > 0);
        uint256 _amountOfTokens             = stakeBalanceLedger_[_customerAddress];
        uint256 timediff                    = SafeMath.sub(now, stakingTime_[_customerAddress]);
        uint256 dayscount                   = SafeMath.div(timediff, 86400);
        uint256 roiPercent                  = SafeMath.mul(dayscount, stakePer_);
        uint256 roiTokens                   = SafeMath.percent(_amountOfTokens,roiPercent,100,18);
        uint256 finalBalance                = SafeMath.add(_amountOfTokens,roiTokens);
        
        // add tokens to the pool
        tokenSupply_                        = SafeMath.add(tokenSupply_, roiTokens);
        // transfer tokens back
        tokenBalanceLedger_[_customerAddress] = SafeMath.add(tokenBalanceLedger_[_customerAddress], finalBalance);
        stakeBalanceLedger_[_customerAddress] = 0;
        stakingTime_[_customerAddress]      = 0;
        
    }
    
    /*==========================================
    =            INTERNAL FUNCTIONS            =
    ==========================================*/
    
    uint256 developerFee;
    uint256 incETH;
    address _refAddress; 
    uint256 _referralBonus;
    
    uint256 bonusLv1;
    uint256 bonusLv2;
    uint256 bonusLv3;
    uint256 bonusLv4;
    uint256 bonusLv5;
    uint256 bonusLv6;
    uint256 bonusLv7;
    uint256 bonusLv8;
    uint256 bonusLv9;
    uint256 bonusLv10;
    
    address chkLv2;
    address chkLv3;
    address chkLv4;
    address chkLv5;
    address chkLv6;
    address chkLv7;
    address chkLv8;
    address chkLv9;
    address chkLv10;
    
    struct RefUserDetail {
        address refUserAddress;
        uint256 refLevel;
    }

    mapping(address => mapping (uint => RefUserDetail)) public RefUser;
    mapping(address => uint256) public referralCount_;
    
    function getDownlineRef(address senderAddress, uint dataId) external view returns (address,uint) { 
        return (RefUser[senderAddress][dataId].refUserAddress,RefUser[senderAddress][dataId].refLevel);
    }
    
    function addDownlineRef(address senderAddress, address refUserAddress, uint refLevel) internal {
        referralCount_[senderAddress]++;
        uint dataId = referralCount_[senderAddress];
        RefUser[senderAddress][dataId].refUserAddress = refUserAddress;
        RefUser[senderAddress][dataId].refLevel = refLevel;
    }

    function getref(address _customerAddress, uint _level) public view returns(address lv) {
        if(_level == 1) {
            lv = referralLevel1Address[_customerAddress];
        } else if(_level == 2) {
            lv = referralLevel2Address[_customerAddress];
        } else if(_level == 3) {
            lv = referralLevel3Address[_customerAddress];
        } else if(_level == 4) {
            lv = referralLevel4Address[_customerAddress];
        } else if(_level == 5) {
            lv = referralLevel5Address[_customerAddress];
        } else if(_level == 6) {
            lv = referralLevel6Address[_customerAddress];
        } else if(_level == 7) {
            lv = referralLevel7Address[_customerAddress];
        } else if(_level == 8) {
            lv = referralLevel8Address[_customerAddress];
        } else if(_level == 9) {
            lv = referralLevel9Address[_customerAddress];
        } else if(_level == 10) {
            lv = referralLevel10Address[_customerAddress];
        } 
        return lv;
    }
    
    function distributeRefBonus(uint256 _incomingEthereum, address _referredBy, address _sender, bool _newReferral) internal {
        address _customerAddress        = _sender;
        uint256 remainingRefBonus       = _incomingEthereum;
        _referralBonus                  = _incomingEthereum;
        
        bonusLv1                        = SafeMath.percent(_referralBonus,30,100,18);
        bonusLv2                        = SafeMath.percent(_referralBonus,20,100,18);
        bonusLv3                        = SafeMath.percent(_referralBonus,15,100,18);
        bonusLv4                        = SafeMath.percent(_referralBonus,10,100,18);
        bonusLv5                        = SafeMath.percent(_referralBonus,5,100,18);
        bonusLv6                        = SafeMath.percent(_referralBonus,5,100,18);
        bonusLv7                        = SafeMath.percent(_referralBonus,5,100,18);
        bonusLv8                        = SafeMath.percent(_referralBonus,3,100,18);
        bonusLv9                        = SafeMath.percent(_referralBonus,3,100,18);
        bonusLv10                       = SafeMath.percent(_referralBonus,2,100,18);
        
        // Level 1
        referralLevel1Address[_customerAddress]                     = _referredBy;
        referralBalance_[referralLevel1Address[_customerAddress]]   = SafeMath.add(referralBalance_[referralLevel1Address[_customerAddress]], bonusLv1);
        remainingRefBonus                                           = SafeMath.sub(remainingRefBonus, bonusLv1);
        if(_newReferral == true) {
            addDownlineRef(_referredBy, _customerAddress, 1);
        }
        
        chkLv2                          = referralLevel1Address[_referredBy];
        chkLv3                          = referralLevel2Address[_referredBy];
        chkLv4                          = referralLevel3Address[_referredBy];
        chkLv5                          = referralLevel4Address[_referredBy];
        chkLv6                          = referralLevel5Address[_referredBy];
        chkLv7                          = referralLevel6Address[_referredBy];
        chkLv8                          = referralLevel7Address[_referredBy];
        chkLv9                          = referralLevel8Address[_referredBy];
        chkLv10                         = referralLevel9Address[_referredBy];
        
        // Level 2
        if(chkLv2 != 0x0000000000000000000000000000000000000000) {
            referralLevel2Address[_customerAddress]                     = referralLevel1Address[_referredBy];
            referralBalance_[referralLevel2Address[_customerAddress]]   = SafeMath.add(referralBalance_[referralLevel2Address[_customerAddress]], bonusLv2);
            remainingRefBonus                                           = SafeMath.sub(remainingRefBonus, bonusLv2);
            if(_newReferral == true) {
                addDownlineRef(referralLevel1Address[_referredBy], _customerAddress, 2);
            }
        }
        
        // Level 3
        if(chkLv3 != 0x0000000000000000000000000000000000000000) {
            referralLevel3Address[_customerAddress]                     = referralLevel2Address[_referredBy];
            referralBalance_[referralLevel3Address[_customerAddress]]   = SafeMath.add(referralBalance_[referralLevel3Address[_customerAddress]], bonusLv3);
            remainingRefBonus                                           = SafeMath.sub(remainingRefBonus, bonusLv3);
            if(_newReferral == true) {
                addDownlineRef(referralLevel2Address[_referredBy], _customerAddress, 3);
            }
        }
        
        // Level 4
        if(chkLv4 != 0x0000000000000000000000000000000000000000) {
            referralLevel4Address[_customerAddress]                     = referralLevel3Address[_referredBy];
            referralBalance_[referralLevel4Address[_customerAddress]]   = SafeMath.add(referralBalance_[referralLevel4Address[_customerAddress]], bonusLv4);
            remainingRefBonus                                           = SafeMath.sub(remainingRefBonus, bonusLv4);
            if(_newReferral == true) {
                addDownlineRef(referralLevel3Address[_referredBy], _customerAddress, 4);
            }
        }
        
        // Level 5
        if(chkLv5 != 0x0000000000000000000000000000000000000000) {
            referralLevel5Address[_customerAddress]                     = referralLevel4Address[_referredBy];
            referralBalance_[referralLevel5Address[_customerAddress]]   = SafeMath.add(referralBalance_[referralLevel5Address[_customerAddress]], bonusLv5);
            remainingRefBonus                                           = SafeMath.sub(remainingRefBonus, bonusLv5);
            if(_newReferral == true) {
                addDownlineRef(referralLevel4Address[_referredBy], _customerAddress, 5);
            }
        }
        
        // Level 6
        if(chkLv6 != 0x0000000000000000000000000000000000000000) {
            referralLevel6Address[_customerAddress]                     = referralLevel5Address[_referredBy];
            referralBalance_[referralLevel6Address[_customerAddress]]   = SafeMath.add(referralBalance_[referralLevel6Address[_customerAddress]], bonusLv6);
            remainingRefBonus                                           = SafeMath.sub(remainingRefBonus, bonusLv6);
            if(_newReferral == true) {
                addDownlineRef(referralLevel5Address[_referredBy], _customerAddress, 6);
            }
        }
        
        // Level 7
        if(chkLv7 != 0x0000000000000000000000000000000000000000) {
            referralLevel7Address[_customerAddress]                     = referralLevel6Address[_referredBy];
            referralBalance_[referralLevel7Address[_customerAddress]]   = SafeMath.add(referralBalance_[referralLevel7Address[_customerAddress]], bonusLv7);
            remainingRefBonus                                           = SafeMath.sub(remainingRefBonus, bonusLv7);
            if(_newReferral == true) {
                addDownlineRef(referralLevel6Address[_referredBy], _customerAddress, 7);
            }
        }
        
        // Level 8
        if(chkLv8 != 0x0000000000000000000000000000000000000000) {
            referralLevel8Address[_customerAddress]                     = referralLevel7Address[_referredBy];
            referralBalance_[referralLevel8Address[_customerAddress]]   = SafeMath.add(referralBalance_[referralLevel8Address[_customerAddress]], bonusLv8);
            remainingRefBonus                                           = SafeMath.sub(remainingRefBonus, bonusLv8);
            if(_newReferral == true) {
                addDownlineRef(referralLevel7Address[_referredBy], _customerAddress, 8);
            }
        }
        
        // Level 9
        if(chkLv9 != 0x0000000000000000000000000000000000000000) {
            referralLevel9Address[_customerAddress]                     = referralLevel8Address[_referredBy];
            referralBalance_[referralLevel9Address[_customerAddress]]   = SafeMath.add(referralBalance_[referralLevel9Address[_customerAddress]], bonusLv9);
            remainingRefBonus                                           = SafeMath.sub(remainingRefBonus, bonusLv9);
            if(_newReferral == true) {
                addDownlineRef(referralLevel8Address[_referredBy], _customerAddress, 9);
            }
        }
        
        // Level 10
        if(chkLv10 != 0x0000000000000000000000000000000000000000) {
            referralLevel10Address[_customerAddress]                    = referralLevel9Address[_referredBy];
            referralBalance_[referralLevel10Address[_customerAddress]]  = SafeMath.add(referralBalance_[referralLevel10Address[_customerAddress]], bonusLv10);
            remainingRefBonus                                           = SafeMath.sub(remainingRefBonus, bonusLv10);
            if(_newReferral == true) {
                addDownlineRef(referralLevel9Address[_referredBy], _customerAddress, 10);
            }
        }
        
        developerBalance                    = SafeMath.add(developerBalance, remainingRefBonus);
    }

    function purchaseTokens(uint256 _incomingEthereum, address _referredBy) antiEarlyWhale(_incomingEthereum) internal returns(uint256) {
        // data setup
        address _customerAddress            = msg.sender;
        incETH                              = _incomingEthereum;
        // Developer Fees 2%
        developerFee                        = SafeMath.percent(incETH,developerFee_,100,18);
        developerBalance                    = SafeMath.add(developerBalance, developerFee);
        
        _referralBonus                      = SafeMath.percent(incETH,referralPer_,100,18);
        
        uint256 _dividends                  = SafeMath.percent(incETH,dividendFee_,100,18);
        
        uint256 untotalDeduct               = developerFee_ + referralPer_ + dividendFee_;
        uint256 totalDeduct                 = SafeMath.percent(incETH,untotalDeduct,100,18);
        
        uint256 _taxedEthereum              = SafeMath.sub(incETH, totalDeduct);
        uint256 _amountOfTokens             = ethereumToTokens_(_taxedEthereum);
        uint256 _fee                        = _dividends * magnitude;
        bool    _newReferral                = true;
        if(referralLevel1Address[_customerAddress] != 0x0000000000000000000000000000000000000000) {
            _referredBy                     = referralLevel1Address[_customerAddress];
            _newReferral                    = false;
        }
        
        require(_amountOfTokens > 0 && (SafeMath.add(_amountOfTokens,tokenSupply_) > tokenSupply_));
        // is the user referred by a link?
        if(
            // is this a referred purchase?
            _referredBy != 0x0000000000000000000000000000000000000000 &&
            // no cheating!
            _referredBy != _customerAddress &&
            tokenBalanceLedger_[_referredBy] >= stakingRequirement
        ){
            // wealth redistribution
            distributeRefBonus(_referralBonus,_referredBy,_customerAddress,_newReferral);
        } else {
            // no ref purchase
            // send referral bonus back to admin
            developerBalance                = SafeMath.add(developerBalance, _referralBonus);
        }
        // we can't give people infinite ethereum
        if(tokenSupply_ > 0){
            // add tokens to the pool
            tokenSupply_                    = SafeMath.add(tokenSupply_, _amountOfTokens);
            // take the amount of dividends gained through this transaction, and allocates them evenly to each shareholder
            profitPerShare_                 += (_dividends * magnitude / (tokenSupply_));
            // calculate the amount of tokens the customer receives over his purchase 
            _fee                            = _fee - (_fee-(_amountOfTokens * (_dividends * magnitude / (tokenSupply_))));
        } else {
            // add tokens to the pool
            tokenSupply_                    = _amountOfTokens;
        }
        // update circulating supply & the ledger address for the customer
        tokenBalanceLedger_[_customerAddress] = SafeMath.add(tokenBalanceLedger_[_customerAddress], _amountOfTokens);
        int256 _updatedPayouts              = (int256) ((profitPerShare_ * _amountOfTokens) - _fee);
        payoutsTo_[_customerAddress]        += _updatedPayouts;
        // fire event
        onTokenPurchase(_customerAddress, incETH, _amountOfTokens, _referredBy);
        return _amountOfTokens;
    }

    /**
     * Calculate Token price based on an amount of incoming ethereum
     * It's an algorithm, hopefully we gave you the whitepaper with it in scientific notation;
     * Some conversions occurred to prevent decimal errors or underflows / overflows in solidity code.
     */
    function ethereumToTokens_(uint256 _ethereum) internal view returns(uint256) {
        uint256 _tokenPriceInitial          = tokenPriceInitial_ * 1e18;
        uint256 _tokensReceived             = 
         (
            (
                SafeMath.sub(
                    (sqrt
                        (
                            (_tokenPriceInitial**2)
                            +
                            (2*(tokenPriceIncremental_ * 1e18)*(_ethereum * 1e18))
                            +
                            (((tokenPriceIncremental_)**2)*(tokenSupply_**2))
                            +
                            (2*(tokenPriceIncremental_)*_tokenPriceInitial*tokenSupply_)
                        )
                    ), _tokenPriceInitial
                )
            )/(tokenPriceIncremental_)
        )-(tokenSupply_)
        ;

        return _tokensReceived;
    }
    
    /**
     * Calculate token sell value.
     */
     function tokensToEthereum_(uint256 _tokens) internal view returns(uint256) {
        uint256 tokens_                     = (_tokens + 2e18);
        uint256 _tokenSupply                = (tokenSupply_ + 2e18);
        uint256 _etherReceived              =
        (
            SafeMath.sub(
                (
                    (
                        (
                            tokenPriceInitial_ +(tokenPriceDecremental_ * (_tokenSupply/2e18))
                        )-tokenPriceDecremental_
                    )*(tokens_ - 2e18)
                ),(tokenPriceDecremental_*((tokens_**2-tokens_)/2e18))/2
            )
        /2e18);
        return _etherReceived;
    }
    
    function sqrt(uint x) internal pure returns (uint y) {
        uint z = (x + 1) / 2;
        y = x;
        while (z < y) {
            y = z;
            z = (x / z + z) / 2;
        }
    }
    
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[{"name":"_customerAddress","type":"address"}],"name":"dividendsOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_ethereumToSpend","type":"uint256"}],"name":"calculateTokensReceived","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"stakePercent","type":"uint8"}],"name":"changeStakePercent","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokensToSell","type":"uint256"}],"name":"calculateEthereumReceived","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"onlyAmbassadors","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"senderAddress","type":"address"},{"name":"dataId","type":"uint256"}],"name":"getDownlineRef","outputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_customerAddress","type":"address"}],"name":"stakeTokensBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"administrators","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"RefUser","outputs":[{"name":"refUserAddress","type":"address"},{"name":"refLevel","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"sellPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"stakingRequirement","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"releaseStake","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalDeveloperBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_includeReferralBonus","type":"bool"}],"name":"myDividends","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalEthereumBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_customerAddress","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_amountOfTokens","type":"uint256"}],"name":"stakeTokens","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_customerAddress","type":"address"}],"name":"stakeTokensTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_amountOfTokens","type":"uint256"}],"name":"setStakingRequirement","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"buyPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_identifier","type":"bytes32"},{"name":"_status","type":"bool"}],"name":"setAdministrator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"myTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"drainDeveloperFees","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"disableInitialStage","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_toAddress","type":"address"},{"name":"_amountOfTokens","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_symbol","type":"string"}],"name":"setSymbol","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"string"}],"name":"setName","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_customerAddress","type":"address"},{"name":"_level","type":"uint256"}],"name":"getref","outputs":[{"name":"lv","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_amountOfTokens","type":"uint256"}],"name":"sell","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"referralCount_","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"exit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_referredBy","type":"address"}],"name":"buy","outputs":[{"name":"","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_ethereumToDrain","type":"uint256"}],"name":"drain","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"reinvest","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"incomingEthereum","type":"uint256"},{"indexed":false,"name":"tokensMinted","type":"uint256"},{"indexed":true,"name":"referredBy","type":"address"}],"name":"onTokenPurchase","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"tokensBurned","type":"uint256"},{"indexed":false,"name":"ethereumEarned","type":"uint256"}],"name":"onTokenSell","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"ethereumReinvested","type":"uint256"},{"indexed":false,"name":"tokensMinted","type":"uint256"}],"name":"onReinvestment","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"ethereumWithdrawn","type":"uint256"}],"name":"onWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"Transfer","type":"event"}]

60606040526040805190810160405280600981526020017f5863656c447265616d00000000000000000000000000000000000000000000008152506000908051906020019062000051929190620001aa565b506040805190810160405280600381526020017f58444d0000000000000000000000000000000000000000000000000000000000815250600190805190602001906200009f929190620001aa565b506001600260006101000a81548160ff021916908360ff160217905550670de0b6b3a7640000600355600060155560006016556000601960006101000a81548160ff0219169083151502179055503415620000f957600080fd5b6001601860007fd44dea3678f826c0c142f05bdfdf646d04def08a04620100e2778d78e59600f060010260001916815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000259565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001ed57805160ff19168380011785556200021e565b828001600101855582156200021e579182015b828111156200021d57825182559160200191906001019062000200565b5b5090506200022d919062000231565b5090565b6200025691905b808211156200025257600081600090555060010162000238565b5090565b90565b615ded80620002696000396000f3006060604052600436106101e2576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806265318b146101f057806306fdde031461023d57806310d0ffdd146102cb57806317ef4e921461030257806318160ddd14610328578063226093731461035157806327defa1f146103885780632b152e40146103b55780632fc2a5721461043e578063313ce5671461048b578063392efb52146104ba5780633ccfd60b146104f957806343360a8e1461050e5780634b7503341461059757806356d399e8146105c05780635c48c1fa146105e957806366b3fa6014610616578063688abbf71461063f5780636b2f46321461067857806370a08231146106a15780637547c7a3146106ee57806377e79b41146107295780638328b610146107765780638620410b1461079957806389135ae9146107c2578063949e8acd146107f457806395d89b411461081d578063a0156861146108ab578063a8e04f34146108c0578063a9059cbb146108d5578063b84c82461461092f578063c47f00271461098c578063e4735104146109e9578063e4849b3214610a6b578063e5deb30414610a8e578063e9fad8ee14610adb578063f088d54714610af0578063f6b19c7414610b32578063fdb5a03e14610b55575b6101ed346000610b6a565b50005b34156101fb57600080fd5b610227600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611621565b6040518082815260200191505060405180910390f35b341561024857600080fd5b610250611704565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610290578082015181840152602081019050610275565b50505050905090810190601f1680156102bd5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156102d657600080fd5b6102ec60048080359060200190919050506117a2565b6040518082815260200191505060405180910390f35b341561030d57600080fd5b610326600480803560ff169060200190919050506117ea565b005b341561033357600080fd5b61033b611892565b6040518082815260200191505060405180910390f35b341561035c57600080fd5b610372600480803590602001909190505061189c565b6040518082815260200191505060405180910390f35b341561039357600080fd5b61039b6118e9565b604051808215151515815260200191505060405180910390f35b34156103c057600080fd5b6103f5600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506118fc565b604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390f35b341561044957600080fd5b610475600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506119d2565b6040518082815260200191505060405180910390f35b341561049657600080fd5b61049e611afa565b604051808260ff1660ff16815260200191505060405180910390f35b34156104c557600080fd5b6104df600480803560001916906020019091905050611aff565b604051808215151515815260200191505060405180910390f35b341561050457600080fd5b61050c611b1f565b005b341561051957600080fd5b61054e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611cbc565b604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390f35b34156105a257600080fd5b6105aa611d0d565b6040518082815260200191505060405180910390f35b34156105cb57600080fd5b6105d3611d71565b6040518082815260200191505060405180910390f35b34156105f457600080fd5b6105fc611d77565b604051808215151515815260200191505060405180910390f35b341561062157600080fd5b61062961200b565b6040518082815260200191505060405180910390f35b341561064a57600080fd5b61066260048080351515906020019091905050612015565b6040518082815260200191505060405180910390f35b341561068357600080fd5b61068b612081565b6040518082815260200191505060405180910390f35b34156106ac57600080fd5b6106d8600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506120a0565b6040518082815260200191505060405180910390f35b34156106f957600080fd5b61070f60048080359060200190919050506120e9565b604051808215151515815260200191505060405180910390f35b341561073457600080fd5b610760600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506122e4565b6040518082815260200191505060405180910390f35b341561078157600080fd5b610797600480803590602001909190505061232d565b005b34156107a457600080fd5b6107ac6123c1565b6040518082815260200191505060405180910390f35b34156107cd57600080fd5b6107f2600480803560001916906020019091908035151590602001909190505061242f565b005b34156107ff57600080fd5b6108076124f0565b6040518082815260200191505060405180910390f35b341561082857600080fd5b610830612505565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610870578082015181840152602081019050610855565b50505050905090810190601f16801561089d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156108b657600080fd5b6108be6125a3565b005b34156108cb57600080fd5b6108d361267e565b005b34156108e057600080fd5b610915600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612725565b604051808215151515815260200191505060405180910390f35b341561093a57600080fd5b61098a600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050612a5b565b005b341561099757600080fd5b6109e7600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050612aff565b005b34156109f457600080fd5b610a29600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612ba3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610a7657600080fd5b610a8c6004808035906020019091905050613013565b005b3415610a9957600080fd5b610ac5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050613245565b6040518082815260200191505060405180910390f35b3415610ae657600080fd5b610aee61325d565b005b610b1c600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506132c4565b6040518082815260200191505060405180910390f35b3415610b3d57600080fd5b610b5360048080359060200190919050506132d6565b005b3415610b6057600080fd5b610b686133ce565b005b6000806000806000806000806000808b6000339050601960009054906101000a900460ff168015610bac5750670de0b6b3a764000082610ba8612081565b0311155b156111755760011515600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515148015610c5a5750670de0b6b3a764000082601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540111155b1515610c6557600080fd5b610cae601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613542565b601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550339a508d601b81905550610d0f601b54600560ff1660646012613560565b601a81905550610d23601654601a54613542565b601681905550610d3d601b54601460ff1660646012613560565b601d81905550610d57601b54600560ff1660646012613560565b9950600560146005010160ff169850610d76601b548a60646012613560565b9750610d84601b54896135af565b9650610d8f876135c8565b9550680100000000000000008a02945060019350600073ffffffffffffffffffffffffffffffffffffffff16600960008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610e9f57600960008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169c50600093505b600086118015610ebb5750601554610eb987601554613542565b115b1515610ec657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff1614158015610f2f57508a73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff1614155b8015610f7c5750600354600560008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b15610f9457610f8f601d548e8d87613656565b610fa9565b610fa2601654601d54613542565b6016819055505b6000601554111561101457610fc060155487613542565b601581905550601554680100000000000000008b02811515610fde57fe5b04601760008282540192505081905550601554680100000000000000008b0281151561100657fe5b04860285038503945061101c565b856015819055505b611065600560008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205487613542565b600560008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555084866017540203925082601360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508c73ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167f022c0d992e4d873a3748436d960d5140c1f9721cf73f7ca5ec679d3d9f4fe2d5601b5489604051808381526020018281526020019250505060405180910390a3859b50611610565b6000601960006101000a81548160ff021916908315150217905550339a508d601b819055506111ae601b54600560ff1660646012613560565b601a819055506111c2601654601a54613542565b6016819055506111dc601b54601460ff1660646012613560565b601d819055506111f6601b54600560ff1660646012613560565b9950600560146005010160ff169850611215601b548a60646012613560565b9750611223601b54896135af565b965061122e876135c8565b9550680100000000000000008a02945060019350600073ffffffffffffffffffffffffffffffffffffffff16600960008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561133e57600960008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169c50600093505b60008611801561135a575060155461135887601554613542565b115b151561136557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff16141580156113ce57508a73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff1614155b801561141b5750600354600560008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b156114335761142e601d548e8d87613656565b611448565b611441601654601d54613542565b6016819055505b600060155411156114b35761145f60155487613542565b601581905550601554680100000000000000008b0281151561147d57fe5b04601760008282540192505081905550601554680100000000000000008b028115156114a557fe5b0486028503850394506114bb565b856015819055505b611504600560008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205487613542565b600560008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555084866017540203925082601360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508c73ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167f022c0d992e4d873a3748436d960d5140c1f9721cf73f7ca5ec679d3d9f4fe2d5601b5489604051808381526020018281526020019250505060405180910390a3859b505b505050505050505050505092915050565b600068010000000000000000601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540160175402038115156116fc57fe5b049050919050565b60008054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561179a5780601f1061176f5761010080835404028352916020019161179a565b820191906000526020600020905b81548152906001019060200180831161177d57829003601f168201915b505050505081565b6000806000806000600560146005010160ff1693506117c5868560646012613560565b92506117d186846135af565b91506117dc826135c8565b905080945050505050919050565b60003390506018600082604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff16151561187357600080fd5b81600260006101000a81548160ff021916908360ff1602179055505050565b6000601554905090565b60008060008060155485111515156118b357600080fd5b6118bc85615a49565b92506118d083600560ff1660646012613560565b91506118dc83836135af565b9050809350505050919050565b601960009054906101000a900460ff1681565b600080603160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16603160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085815260200190815260200160002060010154915091509250929050565b600080600080600080611a2442600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135af565b9450611a338562015180615af8565b9350611a5184600260009054906101000a900460ff1660ff16615b13565b9250611aa0600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548460646012613560565b9150611aeb600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613542565b90508095505050505050919050565b601281565b60186020528060005260406000206000915054906101000a900460ff1681565b6000806000611b2e6001612015565b111515611b3a57600080fd5b339150611b476000612015565b9050680100000000000000008102601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054810190506000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515611c6a57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff167fccad973dcd043c7d680389db4378bd6b9775db7124092e9e0422c9e46d7985dc826040518082815260200191505060405180910390a25050565b6031602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154905082565b60008060008060006015541415611d3457650145f680b000655af3107a4000039350611d6b565b611d45670de0b6b3a7640000615a49565b9250611d5983600560ff1660646012613560565b9150611d6583836135af565b90508093505b50505090565b60035481565b6000806000806000806000806000611d8d6124f0565b111515611d9957600080fd5b339650601960009054906101000a900460ff16158015611df857506000600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1515611e0357600080fd5b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549550611e8e42600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135af565b9450611e9d8562015180615af8565b9350611ebb84600260009054906101000a900460ff1660ff16615b13565b9250611ecb868460646012613560565b9150611ed78683613542565b9050611ee560155483613542565b601581905550611f34600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482613542565b600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505050505090565b6000601654905090565b6000803390508261202e5761202981611621565b612079565b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461207782611621565b015b915050919050565b60003073ffffffffffffffffffffffffffffffffffffffff1631905090565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000806000806120f76124f0565b11151561210357600080fd5b339150601960009054906101000a900460ff161580156121625750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548411155b151561216d57600080fd5b61217f84670de0b6b3a76400006135af565b905042600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061220e600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482613542565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061229a600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826135af565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050919050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60003390506018600082604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff1615156123b657600080fd5b816003819055505050565b60008060008060008060155414156123e85764e8d4a51000655af3107a4000019450612428565b6123f9670de0b6b3a7640000615a49565b9350600560146005010160ff169250612416848460646012613560565b91506124228483613542565b90508094505b5050505090565b60003390506018600082604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff1615156124b857600080fd5b8160186000856000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b6000803390506124ff816120a0565b91505090565b60018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561259b5780601f106125705761010080835404028352916020019161259b565b820191906000526020600020905b81548152906001019060200180831161257e57829003601f168201915b505050505081565b6000803390506018600082604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff16151561262d57600080fd5b3391508173ffffffffffffffffffffffffffffffffffffffff166108fc6016549081150290604051600060405180830381858888f19350505050151561267257600080fd5b60006016819055505050565b60003390506018600082604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff16151561270757600080fd5b6000601960006101000a81548160ff02191690831515021790555050565b6000806000806000806127366124f0565b11151561274257600080fd5b339350601960009054906101000a900460ff161580156127a15750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548611155b15156127ac57600080fd5b60006127b86001612015565b11156127c7576127c6611b1f565b5b6127d986600560ff1660646012613560565b92506127e586846135af565b91506127f083615a49565b90506127fe601554846135af565b60158190555061284d600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054876135af565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128d9600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613542565b600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508560175402601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508160175402601360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506129e26017546015546801000000000000000084028115156129dc57fe5b04613542565b6017819055508673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600194505050505092915050565b60003390506018600082604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff161515612ae457600080fd5b8160019080519060200190612afa929190615d1c565b505050565b60003390506018600082604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff161515612b8857600080fd5b8160009080519060200190612b9e929190615d1c565b505050565b60006001821415612c1557600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061300a565b6002821415612c8557600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050613009565b6003821415612cf557600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050613008565b6004821415612d6557600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050613007565b6005821415612dd557600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050613006565b6006821415612e4557600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050613005565b6007821415612eb557600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050613004565b6008821415612f2557601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050613003565b6009821415612f9557601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050613002565b600a82141561300157601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b5b5b5b5b5b5b5b5b5b80905092915050565b60008060008060008060006130266124f0565b11151561303257600080fd5b339550600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054871115151561308357600080fd5b86945061308f85615a49565b93506130a384600560ff1660646012613560565b92506130af84846135af565b91506130bd601554866135af565b60158190555061310c600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054866135af565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550680100000000000000008202856017540201905080601360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550600060155411156131e6576131df6017546015546801000000000000000086028115156131d957fe5b04613542565b6017819055505b8573ffffffffffffffffffffffffffffffffffffffff167fc4823739c5787d2ca17e404aa47d5569ae71dfb49cbf21b3f6152ed238a311398684604051808381526020018281526020019250505060405180910390a250505050505050565b60326020528060005260406000206000915090505481565b600080339150600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008111156132b8576132b781613013565b5b6132c0611b1f565b5050565b60006132d03483610b6a565b50919050565b6000803390506018600082604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff16151561336057600080fd5b339150823073ffffffffffffffffffffffffffffffffffffffff16311015151561338957600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f1935050505015156133c957600080fd5b505050565b6000806000806133de6001612015565b1115156133ea57600080fd5b6133f46000612015565b9250339150680100000000000000008302601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054830192506000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506134e5836000610b6a565b90508173ffffffffffffffffffffffffffffffffffffffff167fbe339fc14b041c2b0e0f3dd2cd325d0c3668b78378001e53160eab36153264588483604051808381526020018281526020019250505060405180910390a2505050565b600080828401905083811015151561355657fe5b8091505092915050565b600080600060018401600a0a86029150600a6005868481151561357f57fe5b040181151561358a57fe5b049050670de0b6b3a76400008188028115156135a257fe5b0492505050949350505050565b60008282111515156135bd57fe5b818303905092915050565b6000806000670de0b6b3a7640000655af3107a400002915060155464e8d4a5100061363f6136396015548664e8d4a51000600202020260026015540a600264e8d4a510000a02670de0b6b3a76400008a02670de0b6b3a764000064e8d4a5100002600202026002890a010101615b4e565b856135af565b81151561364857fe5b040390508092505050919050565b60008083915085905085601d81905550613677601d54601e60646012613560565b601e8190555061368e601d54601460646012613560565b601f819055506136a5601d54600f60646012613560565b6020819055506136bc601d54600a60646012613560565b6021819055506136d3601d54600560646012613560565b6022819055506136ea601d54600560646012613560565b602381905550613701601d54600560646012613560565b602481905550613718601d54600360646012613560565b60258190555061372f601d54600360646012613560565b602681905550613746601d54600260646012613560565b60278190555084600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061387460086000600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601e54613542565b60086000600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061392281601e546135af565b905060011515831515141561393e5761393d85836001615b99565b5b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16602860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16602960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16602a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16602b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16602c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16602d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16602e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16602f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16603060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff16602860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156141e757600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506140bd60086000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601f54613542565b60086000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061416b81601f546135af565b90506001151583151514156141e6576141e5600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836002615b99565b5b5b600073ffffffffffffffffffffffffffffffffffffffff16602960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156144f057600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506143c660086000600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054602054613542565b60086000600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614474816020546135af565b90506001151583151514156144ef576144ee600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836003615b99565b5b5b600073ffffffffffffffffffffffffffffffffffffffff16602a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156147f957600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506146cf60086000600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054602154613542565b60086000600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061477d816021546135af565b90506001151583151514156147f8576147f7600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836004615b99565b5b5b600073ffffffffffffffffffffffffffffffffffffffff16602b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515614b0257600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506149d860086000600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054602254613542565b60086000600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614a86816022546135af565b9050600115158315151415614b0157614b00600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836005615b99565b5b5b600073ffffffffffffffffffffffffffffffffffffffff16602c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515614e0b57600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550614ce160086000600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054602354613542565b60086000600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614d8f816023546135af565b9050600115158315151415614e0a57614e09600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836006615b99565b5b5b600073ffffffffffffffffffffffffffffffffffffffff16602d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561511457600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550614fea60086000600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054602454613542565b60086000600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550615098816024546135af565b905060011515831515141561511357615112600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836007615b99565b5b5b600073ffffffffffffffffffffffffffffffffffffffff16602e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561541d57600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506152f360086000601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054602554613542565b60086000601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506153a1816025546135af565b905060011515831515141561541c5761541b600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836008615b99565b5b5b600073ffffffffffffffffffffffffffffffffffffffff16602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561572657601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506155fc60086000601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054602654613542565b60086000601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506156aa816026546135af565b905060011515831515141561572557615724601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836009615b99565b5b5b600073ffffffffffffffffffffffffffffffffffffffff16603060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515615a2f57601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061590560086000601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054602754613542565b60086000601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506159b3816027546135af565b9050600115158315151415615a2e57615a2d601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683600a615b99565b5b5b615a3b60165482613542565b601681905550505050505050565b600080600080671bc16d674ec8000085019250671bc16d674ec80000601554019150671bc16d674ec80000615ae1671bc16d674ec800008503650145f680b000671bc16d674ec8000086811515615a9c57fe5b04650145f680b00002655af3107a40000103026002671bc16d674ec80000876002890a03811515615ac957fe5b04650145f680b00002811515615adb57fe5b046135af565b811515615aea57fe5b049050809350505050919050565b6000808284811515615b0657fe5b0490508091505092915050565b6000806000841415615b285760009150615b47565b8284029050828482811515615b3957fe5b04141515615b4357fe5b8091505b5092915050565b600080600260018401811515615b6057fe5b0490508291505b81811015615b93578091506002818285811515615b8057fe5b0401811515615b8b57fe5b049050615b67565b50919050565b6000603260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550603260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082603160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081603160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206001018190555050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10615d5d57805160ff1916838001178555615d8b565b82800160010185558215615d8b579182015b82811115615d8a578251825591602001919060010190615d6f565b5b509050615d989190615d9c565b5090565b615dbe91905b80821115615dba576000816000905550600101615da2565b5090565b905600a165627a7a72305820b6c7f9ffbbbe91f964b767f5e90c14887508f2a67bafdf6a6acb41d6a68535810029

Deployed Bytecode

0x6060604052600436106101e2576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806265318b146101f057806306fdde031461023d57806310d0ffdd146102cb57806317ef4e921461030257806318160ddd14610328578063226093731461035157806327defa1f146103885780632b152e40146103b55780632fc2a5721461043e578063313ce5671461048b578063392efb52146104ba5780633ccfd60b146104f957806343360a8e1461050e5780634b7503341461059757806356d399e8146105c05780635c48c1fa146105e957806366b3fa6014610616578063688abbf71461063f5780636b2f46321461067857806370a08231146106a15780637547c7a3146106ee57806377e79b41146107295780638328b610146107765780638620410b1461079957806389135ae9146107c2578063949e8acd146107f457806395d89b411461081d578063a0156861146108ab578063a8e04f34146108c0578063a9059cbb146108d5578063b84c82461461092f578063c47f00271461098c578063e4735104146109e9578063e4849b3214610a6b578063e5deb30414610a8e578063e9fad8ee14610adb578063f088d54714610af0578063f6b19c7414610b32578063fdb5a03e14610b55575b6101ed346000610b6a565b50005b34156101fb57600080fd5b610227600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611621565b6040518082815260200191505060405180910390f35b341561024857600080fd5b610250611704565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610290578082015181840152602081019050610275565b50505050905090810190601f1680156102bd5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156102d657600080fd5b6102ec60048080359060200190919050506117a2565b6040518082815260200191505060405180910390f35b341561030d57600080fd5b610326600480803560ff169060200190919050506117ea565b005b341561033357600080fd5b61033b611892565b6040518082815260200191505060405180910390f35b341561035c57600080fd5b610372600480803590602001909190505061189c565b6040518082815260200191505060405180910390f35b341561039357600080fd5b61039b6118e9565b604051808215151515815260200191505060405180910390f35b34156103c057600080fd5b6103f5600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506118fc565b604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390f35b341561044957600080fd5b610475600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506119d2565b6040518082815260200191505060405180910390f35b341561049657600080fd5b61049e611afa565b604051808260ff1660ff16815260200191505060405180910390f35b34156104c557600080fd5b6104df600480803560001916906020019091905050611aff565b604051808215151515815260200191505060405180910390f35b341561050457600080fd5b61050c611b1f565b005b341561051957600080fd5b61054e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611cbc565b604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390f35b34156105a257600080fd5b6105aa611d0d565b6040518082815260200191505060405180910390f35b34156105cb57600080fd5b6105d3611d71565b6040518082815260200191505060405180910390f35b34156105f457600080fd5b6105fc611d77565b604051808215151515815260200191505060405180910390f35b341561062157600080fd5b61062961200b565b6040518082815260200191505060405180910390f35b341561064a57600080fd5b61066260048080351515906020019091905050612015565b6040518082815260200191505060405180910390f35b341561068357600080fd5b61068b612081565b6040518082815260200191505060405180910390f35b34156106ac57600080fd5b6106d8600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506120a0565b6040518082815260200191505060405180910390f35b34156106f957600080fd5b61070f60048080359060200190919050506120e9565b604051808215151515815260200191505060405180910390f35b341561073457600080fd5b610760600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506122e4565b6040518082815260200191505060405180910390f35b341561078157600080fd5b610797600480803590602001909190505061232d565b005b34156107a457600080fd5b6107ac6123c1565b6040518082815260200191505060405180910390f35b34156107cd57600080fd5b6107f2600480803560001916906020019091908035151590602001909190505061242f565b005b34156107ff57600080fd5b6108076124f0565b6040518082815260200191505060405180910390f35b341561082857600080fd5b610830612505565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610870578082015181840152602081019050610855565b50505050905090810190601f16801561089d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156108b657600080fd5b6108be6125a3565b005b34156108cb57600080fd5b6108d361267e565b005b34156108e057600080fd5b610915600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612725565b604051808215151515815260200191505060405180910390f35b341561093a57600080fd5b61098a600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050612a5b565b005b341561099757600080fd5b6109e7600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050612aff565b005b34156109f457600080fd5b610a29600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612ba3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610a7657600080fd5b610a8c6004808035906020019091905050613013565b005b3415610a9957600080fd5b610ac5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050613245565b6040518082815260200191505060405180910390f35b3415610ae657600080fd5b610aee61325d565b005b610b1c600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506132c4565b6040518082815260200191505060405180910390f35b3415610b3d57600080fd5b610b5360048080359060200190919050506132d6565b005b3415610b6057600080fd5b610b686133ce565b005b6000806000806000806000806000808b6000339050601960009054906101000a900460ff168015610bac5750670de0b6b3a764000082610ba8612081565b0311155b156111755760011515600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515148015610c5a5750670de0b6b3a764000082601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540111155b1515610c6557600080fd5b610cae601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613542565b601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550339a508d601b81905550610d0f601b54600560ff1660646012613560565b601a81905550610d23601654601a54613542565b601681905550610d3d601b54601460ff1660646012613560565b601d81905550610d57601b54600560ff1660646012613560565b9950600560146005010160ff169850610d76601b548a60646012613560565b9750610d84601b54896135af565b9650610d8f876135c8565b9550680100000000000000008a02945060019350600073ffffffffffffffffffffffffffffffffffffffff16600960008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610e9f57600960008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169c50600093505b600086118015610ebb5750601554610eb987601554613542565b115b1515610ec657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff1614158015610f2f57508a73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff1614155b8015610f7c5750600354600560008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b15610f9457610f8f601d548e8d87613656565b610fa9565b610fa2601654601d54613542565b6016819055505b6000601554111561101457610fc060155487613542565b601581905550601554680100000000000000008b02811515610fde57fe5b04601760008282540192505081905550601554680100000000000000008b0281151561100657fe5b04860285038503945061101c565b856015819055505b611065600560008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205487613542565b600560008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555084866017540203925082601360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508c73ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167f022c0d992e4d873a3748436d960d5140c1f9721cf73f7ca5ec679d3d9f4fe2d5601b5489604051808381526020018281526020019250505060405180910390a3859b50611610565b6000601960006101000a81548160ff021916908315150217905550339a508d601b819055506111ae601b54600560ff1660646012613560565b601a819055506111c2601654601a54613542565b6016819055506111dc601b54601460ff1660646012613560565b601d819055506111f6601b54600560ff1660646012613560565b9950600560146005010160ff169850611215601b548a60646012613560565b9750611223601b54896135af565b965061122e876135c8565b9550680100000000000000008a02945060019350600073ffffffffffffffffffffffffffffffffffffffff16600960008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561133e57600960008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169c50600093505b60008611801561135a575060155461135887601554613542565b115b151561136557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff16141580156113ce57508a73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff1614155b801561141b5750600354600560008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b156114335761142e601d548e8d87613656565b611448565b611441601654601d54613542565b6016819055505b600060155411156114b35761145f60155487613542565b601581905550601554680100000000000000008b0281151561147d57fe5b04601760008282540192505081905550601554680100000000000000008b028115156114a557fe5b0486028503850394506114bb565b856015819055505b611504600560008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205487613542565b600560008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555084866017540203925082601360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508c73ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167f022c0d992e4d873a3748436d960d5140c1f9721cf73f7ca5ec679d3d9f4fe2d5601b5489604051808381526020018281526020019250505060405180910390a3859b505b505050505050505050505092915050565b600068010000000000000000601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540160175402038115156116fc57fe5b049050919050565b60008054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561179a5780601f1061176f5761010080835404028352916020019161179a565b820191906000526020600020905b81548152906001019060200180831161177d57829003601f168201915b505050505081565b6000806000806000600560146005010160ff1693506117c5868560646012613560565b92506117d186846135af565b91506117dc826135c8565b905080945050505050919050565b60003390506018600082604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff16151561187357600080fd5b81600260006101000a81548160ff021916908360ff1602179055505050565b6000601554905090565b60008060008060155485111515156118b357600080fd5b6118bc85615a49565b92506118d083600560ff1660646012613560565b91506118dc83836135af565b9050809350505050919050565b601960009054906101000a900460ff1681565b600080603160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16603160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085815260200190815260200160002060010154915091509250929050565b600080600080600080611a2442600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135af565b9450611a338562015180615af8565b9350611a5184600260009054906101000a900460ff1660ff16615b13565b9250611aa0600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548460646012613560565b9150611aeb600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613542565b90508095505050505050919050565b601281565b60186020528060005260406000206000915054906101000a900460ff1681565b6000806000611b2e6001612015565b111515611b3a57600080fd5b339150611b476000612015565b9050680100000000000000008102601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054810190506000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515611c6a57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff167fccad973dcd043c7d680389db4378bd6b9775db7124092e9e0422c9e46d7985dc826040518082815260200191505060405180910390a25050565b6031602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154905082565b60008060008060006015541415611d3457650145f680b000655af3107a4000039350611d6b565b611d45670de0b6b3a7640000615a49565b9250611d5983600560ff1660646012613560565b9150611d6583836135af565b90508093505b50505090565b60035481565b6000806000806000806000806000611d8d6124f0565b111515611d9957600080fd5b339650601960009054906101000a900460ff16158015611df857506000600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1515611e0357600080fd5b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549550611e8e42600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135af565b9450611e9d8562015180615af8565b9350611ebb84600260009054906101000a900460ff1660ff16615b13565b9250611ecb868460646012613560565b9150611ed78683613542565b9050611ee560155483613542565b601581905550611f34600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482613542565b600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505050505090565b6000601654905090565b6000803390508261202e5761202981611621565b612079565b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461207782611621565b015b915050919050565b60003073ffffffffffffffffffffffffffffffffffffffff1631905090565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000806000806120f76124f0565b11151561210357600080fd5b339150601960009054906101000a900460ff161580156121625750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548411155b151561216d57600080fd5b61217f84670de0b6b3a76400006135af565b905042600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061220e600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482613542565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061229a600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826135af565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050919050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60003390506018600082604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff1615156123b657600080fd5b816003819055505050565b60008060008060008060155414156123e85764e8d4a51000655af3107a4000019450612428565b6123f9670de0b6b3a7640000615a49565b9350600560146005010160ff169250612416848460646012613560565b91506124228483613542565b90508094505b5050505090565b60003390506018600082604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff1615156124b857600080fd5b8160186000856000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b6000803390506124ff816120a0565b91505090565b60018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561259b5780601f106125705761010080835404028352916020019161259b565b820191906000526020600020905b81548152906001019060200180831161257e57829003601f168201915b505050505081565b6000803390506018600082604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff16151561262d57600080fd5b3391508173ffffffffffffffffffffffffffffffffffffffff166108fc6016549081150290604051600060405180830381858888f19350505050151561267257600080fd5b60006016819055505050565b60003390506018600082604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff16151561270757600080fd5b6000601960006101000a81548160ff02191690831515021790555050565b6000806000806000806127366124f0565b11151561274257600080fd5b339350601960009054906101000a900460ff161580156127a15750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548611155b15156127ac57600080fd5b60006127b86001612015565b11156127c7576127c6611b1f565b5b6127d986600560ff1660646012613560565b92506127e586846135af565b91506127f083615a49565b90506127fe601554846135af565b60158190555061284d600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054876135af565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128d9600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613542565b600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508560175402601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508160175402601360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506129e26017546015546801000000000000000084028115156129dc57fe5b04613542565b6017819055508673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600194505050505092915050565b60003390506018600082604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff161515612ae457600080fd5b8160019080519060200190612afa929190615d1c565b505050565b60003390506018600082604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff161515612b8857600080fd5b8160009080519060200190612b9e929190615d1c565b505050565b60006001821415612c1557600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061300a565b6002821415612c8557600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050613009565b6003821415612cf557600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050613008565b6004821415612d6557600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050613007565b6005821415612dd557600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050613006565b6006821415612e4557600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050613005565b6007821415612eb557600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050613004565b6008821415612f2557601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050613003565b6009821415612f9557601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050613002565b600a82141561300157601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b5b5b5b5b5b5b5b5b5b80905092915050565b60008060008060008060006130266124f0565b11151561303257600080fd5b339550600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054871115151561308357600080fd5b86945061308f85615a49565b93506130a384600560ff1660646012613560565b92506130af84846135af565b91506130bd601554866135af565b60158190555061310c600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054866135af565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550680100000000000000008202856017540201905080601360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550600060155411156131e6576131df6017546015546801000000000000000086028115156131d957fe5b04613542565b6017819055505b8573ffffffffffffffffffffffffffffffffffffffff167fc4823739c5787d2ca17e404aa47d5569ae71dfb49cbf21b3f6152ed238a311398684604051808381526020018281526020019250505060405180910390a250505050505050565b60326020528060005260406000206000915090505481565b600080339150600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008111156132b8576132b781613013565b5b6132c0611b1f565b5050565b60006132d03483610b6a565b50919050565b6000803390506018600082604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff16151561336057600080fd5b339150823073ffffffffffffffffffffffffffffffffffffffff16311015151561338957600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f1935050505015156133c957600080fd5b505050565b6000806000806133de6001612015565b1115156133ea57600080fd5b6133f46000612015565b9250339150680100000000000000008302601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054830192506000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506134e5836000610b6a565b90508173ffffffffffffffffffffffffffffffffffffffff167fbe339fc14b041c2b0e0f3dd2cd325d0c3668b78378001e53160eab36153264588483604051808381526020018281526020019250505060405180910390a2505050565b600080828401905083811015151561355657fe5b8091505092915050565b600080600060018401600a0a86029150600a6005868481151561357f57fe5b040181151561358a57fe5b049050670de0b6b3a76400008188028115156135a257fe5b0492505050949350505050565b60008282111515156135bd57fe5b818303905092915050565b6000806000670de0b6b3a7640000655af3107a400002915060155464e8d4a5100061363f6136396015548664e8d4a51000600202020260026015540a600264e8d4a510000a02670de0b6b3a76400008a02670de0b6b3a764000064e8d4a5100002600202026002890a010101615b4e565b856135af565b81151561364857fe5b040390508092505050919050565b60008083915085905085601d81905550613677601d54601e60646012613560565b601e8190555061368e601d54601460646012613560565b601f819055506136a5601d54600f60646012613560565b6020819055506136bc601d54600a60646012613560565b6021819055506136d3601d54600560646012613560565b6022819055506136ea601d54600560646012613560565b602381905550613701601d54600560646012613560565b602481905550613718601d54600360646012613560565b60258190555061372f601d54600360646012613560565b602681905550613746601d54600260646012613560565b60278190555084600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061387460086000600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601e54613542565b60086000600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061392281601e546135af565b905060011515831515141561393e5761393d85836001615b99565b5b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16602860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16602960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16602a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16602b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16602c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16602d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16602e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16602f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16603060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff16602860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156141e757600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506140bd60086000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601f54613542565b60086000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061416b81601f546135af565b90506001151583151514156141e6576141e5600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836002615b99565b5b5b600073ffffffffffffffffffffffffffffffffffffffff16602960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156144f057600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506143c660086000600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054602054613542565b60086000600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614474816020546135af565b90506001151583151514156144ef576144ee600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836003615b99565b5b5b600073ffffffffffffffffffffffffffffffffffffffff16602a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156147f957600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506146cf60086000600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054602154613542565b60086000600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061477d816021546135af565b90506001151583151514156147f8576147f7600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836004615b99565b5b5b600073ffffffffffffffffffffffffffffffffffffffff16602b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515614b0257600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506149d860086000600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054602254613542565b60086000600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614a86816022546135af565b9050600115158315151415614b0157614b00600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836005615b99565b5b5b600073ffffffffffffffffffffffffffffffffffffffff16602c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515614e0b57600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550614ce160086000600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054602354613542565b60086000600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614d8f816023546135af565b9050600115158315151415614e0a57614e09600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836006615b99565b5b5b600073ffffffffffffffffffffffffffffffffffffffff16602d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561511457600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550614fea60086000600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054602454613542565b60086000600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550615098816024546135af565b905060011515831515141561511357615112600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836007615b99565b5b5b600073ffffffffffffffffffffffffffffffffffffffff16602e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561541d57600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506152f360086000601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054602554613542565b60086000601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506153a1816025546135af565b905060011515831515141561541c5761541b600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836008615b99565b5b5b600073ffffffffffffffffffffffffffffffffffffffff16602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561572657601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506155fc60086000601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054602654613542565b60086000601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506156aa816026546135af565b905060011515831515141561572557615724601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836009615b99565b5b5b600073ffffffffffffffffffffffffffffffffffffffff16603060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515615a2f57601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061590560086000601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054602754613542565b60086000601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506159b3816027546135af565b9050600115158315151415615a2e57615a2d601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683600a615b99565b5b5b615a3b60165482613542565b601681905550505050505050565b600080600080671bc16d674ec8000085019250671bc16d674ec80000601554019150671bc16d674ec80000615ae1671bc16d674ec800008503650145f680b000671bc16d674ec8000086811515615a9c57fe5b04650145f680b00002655af3107a40000103026002671bc16d674ec80000876002890a03811515615ac957fe5b04650145f680b00002811515615adb57fe5b046135af565b811515615aea57fe5b049050809350505050919050565b6000808284811515615b0657fe5b0490508091505092915050565b6000806000841415615b285760009150615b47565b8284029050828482811515615b3957fe5b04141515615b4357fe5b8091505b5092915050565b600080600260018401811515615b6057fe5b0490508291505b81811015615b93578091506002818285811515615b8057fe5b0401811515615b8b57fe5b049050615b67565b50919050565b6000603260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550603260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082603160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081603160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206001018190555050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10615d5d57805160ff1916838001178555615d8b565b82800160010185558215615d8b579182015b82811115615d8a578251825591602001919060010190615d6f565b5b509050615d989190615d9c565b5090565b615dbe91905b80821115615dba576000816000905550600101615da2565b5090565b905600a165627a7a72305820b6c7f9ffbbbe91f964b767f5e90c14887508f2a67bafdf6a6acb41d6a68535810029

Deployed Bytecode Sourcemap

1250:35843:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7166:30;7181:9;7192:3;7166:14;:30::i;:::-;;1250:35843;15388:264;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1423:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1423:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16877:499;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12647:144;;;;;;;;;;;;;;;;;;;;;;;;;;;;14371:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17387:437;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4006:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21474:211;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18561:633;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1569:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3953:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8503:665;;;;;;;;;;;;;;21339:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15734:478;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2258:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19353:1178;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14205:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14786:286;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14035:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15160:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17836:691;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19206:135;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12967:155;;;;;;;;;;;;;;;;;;;;;;;;;;16295:571;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12803:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14540:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1499:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1499:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13640:201;;;;;;;;;;;;;;12515:120;;;;;;;;;;;;;;10702:1656;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13266:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13134:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22038:1052;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9236:1329;;;;;;;;;;;;;;;;;;;;;;;;;;21412:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8138:292;;;;;;;;;;;;;;6994:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13404:224;;;;;;;;;;;;;;;;;;;;;;;;;;7288:780;;;;;;;;;;;;;;31385:3511;31508:7;31551:24;32006:18;32109:21;32201:19;32305:22;32387:23;32469:12;32540:20;34594:22;31472:17;4686:24;4713:10;4686:37;;4738:15;;;;;;;;;;;:86;;;;;2543:7;4784:17;4759:22;:20;:22::i;:::-;:42;4758:64;;4738:86;4734:823;;;4960:4;4926:38;;:12;:30;4939:16;4926:30;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;:232;;;;;2471:7;5114:17;5066:27;:45;5094:16;5066:45;;;;;;;;;;;;;;;;:65;5065:93;;4926:232;4840:333;;;;;;;;5286:78;5299:27;:45;5327:16;5299:45;;;;;;;;;;;;;;;;5346:17;5286:12;:78::i;:::-;5238:27;:45;5266:16;5238:45;;;;;;;;;;;;;;;:126;;;;31589:10;31551:48;;31648:17;31610:6;:55;;;;31744:45;31761:6;;1827:1;31744:45;;31782:3;31786:2;31744:16;:45::i;:::-;31706:12;:83;;;;31838:44;31851:16;;31869:12;;31838;:44::i;:::-;31800:16;:82;;;;31941:44;31958:6;;1760:2;31941:44;;31978:3;31982:2;31941:16;:44::i;:::-;31903:14;:82;;;;32044:44;32061:6;;1694:1;32044:44;;32081:3;32085:2;32044:16;:44::i;:::-;32006:82;;1694:1;1760:2;1827:1;32147:28;:43;32109:81;;;;32239:45;32256:6;;32263:13;32277:3;32281:2;32239:16;:45::i;:::-;32201:83;;32343:33;32356:6;;32364:11;32343:12;:33::i;:::-;32305:71;;32425:33;32443:14;32425:17;:33::i;:::-;32387:71;;2195:5;32507:10;:22;32469:60;;32578:4;32540:42;;32639;32596:85;;:21;:39;32618:16;32596:39;;;;;;;;;;;;;;;;;;;;;;;;;:85;;;;32593:244;;;32732:21;:39;32754:16;32732:39;;;;;;;;;;;;;;;;;;;;;;;;;32698:73;;32820:5;32786:39;;32593:244;32883:1;32865:15;:19;:82;;;;;32934:12;;32889:42;32902:15;32918:12;;32889;:42::i;:::-;:57;32865:82;32857:91;;;;;;;;33080:42;33065:57;;:11;:57;;;;:134;;;;;33183:16;33168:31;;:11;:31;;;;33065:134;:205;;;;;33252:18;;33216:19;:32;33236:11;33216:32;;;;;;;;;;;;;;;;:54;;33065:205;33003:614;;;33334:76;33353:14;;33368:11;33380:16;33397:12;33334:18;:76::i;:::-;33003:614;;;33559:46;33572:16;;33590:14;;33559:12;:46::i;:::-;33525:16;:80;;;;33003:614;33696:1;33681:12;;:16;33678:711;;;33786:43;33799:12;;33813:15;33786:12;:43::i;:::-;33752:12;:77;;;;34030:12;;2195:5;34004:10;:22;:39;;;;;;;;33968:15;;:76;;;;;;;;;;;34240:12;;2195:5;34214:10;:22;:39;;;;;;;;34195:15;:59;34189:4;:66;34181:4;:75;34147:109;;33678:711;;;34362:15;34328:12;:49;;;;33678:711;34515:68;34528:19;:37;34548:16;34528:37;;;;;;;;;;;;;;;;34567:15;34515:12;:68::i;:::-;34475:19;:37;34495:16;34475:37;;;;;;;;;;;;;;;:108;;;;34680:4;34661:15;34643;;:33;34642:42;34594:91;;34735:15;34696:10;:28;34707:16;34696:28;;;;;;;;;;;;;;;;:54;;;;;;;;;;;34843:11;34784:71;;34800:16;34784:71;;;34818:6;;34826:15;34784:71;;;;;;;;;;;;;;;;;;;;;;;;34873:15;34866:22;;4734:823;;;5520:5;5502:15;;:23;;;;;;;;;;;;;;;;;;31589:10;31551:48;;31648:17;31610:6;:55;;;;31744:45;31761:6;;1827:1;31744:45;;31782:3;31786:2;31744:16;:45::i;:::-;31706:12;:83;;;;31838:44;31851:16;;31869:12;;31838;:44::i;:::-;31800:16;:82;;;;31941:44;31958:6;;1760:2;31941:44;;31978:3;31982:2;31941:16;:44::i;:::-;31903:14;:82;;;;32044:44;32061:6;;1694:1;32044:44;;32081:3;32085:2;32044:16;:44::i;:::-;32006:82;;1694:1;1760:2;1827:1;32147:28;:43;32109:81;;;;32239:45;32256:6;;32263:13;32277:3;32281:2;32239:16;:45::i;:::-;32201:83;;32343:33;32356:6;;32364:11;32343:12;:33::i;:::-;32305:71;;32425:33;32443:14;32425:17;:33::i;:::-;32387:71;;2195:5;32507:10;:22;32469:60;;32578:4;32540:42;;32639;32596:85;;:21;:39;32618:16;32596:39;;;;;;;;;;;;;;;;;;;;;;;;;:85;;;;32593:244;;;32732:21;:39;32754:16;32732:39;;;;;;;;;;;;;;;;;;;;;;;;;32698:73;;32820:5;32786:39;;32593:244;32883:1;32865:15;:19;:82;;;;;32934:12;;32889:42;32902:15;32918:12;;32889;:42::i;:::-;:57;32865:82;32857:91;;;;;;;;33080:42;33065:57;;:11;:57;;;;:134;;;;;33183:16;33168:31;;:11;:31;;;;33065:134;:205;;;;;33252:18;;33216:19;:32;33236:11;33216:32;;;;;;;;;;;;;;;;:54;;33065:205;33003:614;;;33334:76;33353:14;;33368:11;33380:16;33397:12;33334:18;:76::i;:::-;33003:614;;;33559:46;33572:16;;33590:14;;33559:12;:46::i;:::-;33525:16;:80;;;;33003:614;33696:1;33681:12;;:16;33678:711;;;33786:43;33799:12;;33813:15;33786:12;:43::i;:::-;33752:12;:77;;;;34030:12;;2195:5;34004:10;:22;:39;;;;;;;;33968:15;;:76;;;;;;;;;;;34240:12;;2195:5;34214:10;:22;:39;;;;;;;;34195:15;:59;34189:4;:66;34181:4;:75;34147:109;;33678:711;;;34362:15;34328:12;:49;;;;33678:711;34515:68;34528:19;:37;34548:16;34528:37;;;;;;;;;;;;;;;;34567:15;34515:12;:68::i;:::-;34475:19;:37;34495:16;34475:37;;;;;;;;;;;;;;;:108;;;;34680:4;34661:15;34643;;:33;34642:42;34594:91;;34735:15;34696:10;:28;34707:16;34696:28;;;;;;;;;;;;;;;;:54;;;;;;;;;;;34843:11;34784:71;;34800:16;34784:71;;;34818:6;;34826:15;34784:71;;;;;;;;;;;;;;;;;;;;;;;;34873:15;34866:22;;4734:823;31385:3511;;;;;;;;;;;;;;;:::o;15388:264::-;15455:7;2195:5;15603:10;:28;15614:16;15603:28;;;;;;;;;;;;;;;;15561:19;:37;15581:16;15561:37;;;;;;;;;;;;;;;;15521:19;:37;15541:16;15521:37;;;;;;;;;;;;;;;;:77;15502:15;;:97;15493:138;15482:162;;;;;;;;15475:169;;15388:264;;;:::o;1423:69::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;16877:499::-;16956:7;16976:21;17068:19;17172:22;17264:23;1694:1;1760:2;1827:1;17014:28;:43;16976:81;;;;17106:55;17123:16;17140:13;17154:3;17158:2;17106:16;:55::i;:::-;17068:93;;17210:43;17223:16;17241:11;17210:12;:43::i;:::-;17172:81;;17302:33;17320:14;17302:17;:33::i;:::-;17264:71;;17353:15;17346:22;;16877:499;;;;;;;:::o;12647:144::-;4493:24;4520:10;4493:37;;4549:14;:43;4574:16;4564:27;;;;;;;;;;;;;;;;;;;;;;;;4549:43;;;;;;;;;;;;;;;;;;;;;;;;;;;4541:52;;;;;;;;12771:12;12733:9;;:50;;;;;;;;;;;;;;;;;;12647:144;;:::o;14371:90::-;14414:7;14441:12;;14434:19;;14371:90;:::o;17387:437::-;17465:7;17534:17;17615:18;17711:22;17510:12;;17493:13;:29;;17485:38;;;;;;;;17572:32;17590:13;17572:17;:32::i;:::-;17534:70;;17653:47;17670:9;1694:1;17653:47;;17693:3;17697:2;17653:16;:47::i;:::-;17615:85;;17749:35;17762:9;17773:10;17749:12;:35::i;:::-;17711:73;;17802:14;17795:21;;17387:437;;;;;;:::o;4006:35::-;;;;;;;;;;;;;:::o;21474:211::-;21557:7;21565:4;21591:7;:22;21599:13;21591:22;;;;;;;;;;;;;;;:30;21614:6;21591:30;;;;;;;;;;;:45;;;;;;;;;;;;21637:7;:22;21645:13;21637:22;;;;;;;;;;;;;;;:30;21660:6;21637:30;;;;;;;;;;;:39;;;21583:94;;;;21474:211;;;;;:::o;18561:633::-;18635:7;18654:16;18752:17;18852:18;18935:17;19057:20;18692:49;18705:3;18710:12;:30;18723:16;18710:30;;;;;;;;;;;;;;;;18692:12;:49::i;:::-;18654:87;;18790:29;18803:8;18813:5;18790:12;:29::i;:::-;18752:67;;18890:34;18903:9;18914;;;;;;;;;;;18890:34;;:12;:34::i;:::-;18852:72;;18973:73;18990:19;:37;19010:16;18990:37;;;;;;;;;;;;;;;;19028:10;19039:3;19043:2;18973:16;:73::i;:::-;18935:111;;19095:61;19108:19;:37;19128:16;19108:37;;;;;;;;;;;;;;;;19146:9;19095:12;:61::i;:::-;19057:99;;19174:12;19167:19;;18561:633;;;;;;;;:::o;1569:60::-;1627:2;1569:60;:::o;3953:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;8503:665::-;8577:24;8636:18;4401:1;4381:17;4393:4;4381:11;:17::i;:::-;:21;4373:30;;;;;;;;8615:10;8577:48;;8674:18;8686:5;8674:11;:18::i;:::-;8636:56;;2195:5;8825:10;:22;8775:10;:28;8786:16;8775:28;;;;;;;;;;;;;;;;:73;;;;;;;;;;;8925:16;:34;8942:16;8925:34;;;;;;;;;;;;;;;;8886:73;;;;9008:1;8970:16;:34;8987:16;8970:34;;;;;;;;;;;;;;;:39;;;;9049:16;:25;;:37;9075:10;9049:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9131:16;9120:40;;;9149:10;9120:40;;;;;;;;;;;;;;;;;;8503:665;;:::o;21339:66::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;15734:478::-;15775:7;15920:17;15992:18;16088:22;15814:1;15798:12;;:17;15795:410;;;2115:15;1959:12;15838:49;15831:56;;;;15795:410;15954:23;15972:4;15954:17;:23::i;:::-;15920:57;;16026:47;16043:9;1694:1;16026:47;;16066:3;16070:2;16026:16;:47::i;:::-;15992:81;;16122:35;16135:9;16146:10;16122:12;:35::i;:::-;16088:69;;16179:14;16172:21;;15734:478;;;;;:::o;2258:62::-;;;;:::o;19353:1178::-;19409:4;19425:24;19609:23;19695:16;19793:17;19871:18;19954:17;20054:20;4273:1;4260:10;:8;:10::i;:::-;:14;4252:23;;;;;;;;19463:10;19425:48;;19544:15;;;;;;;;;;;19543:16;:54;;;;;19596:1;19563:12;:30;19576:16;19563:30;;;;;;;;;;;;;;;;:34;19543:54;19535:63;;;;;;;;19647:19;:37;19667:16;19647:37;;;;;;;;;;;;;;;;19609:75;;19733:49;19746:3;19751:12;:30;19764:16;19751:30;;;;;;;;;;;;;;;;19733:12;:49::i;:::-;19695:87;;19831:29;19844:8;19854:5;19831:12;:29::i;:::-;19793:67;;19909:34;19922:9;19933;;;;;;;;;;;19909:34;;:12;:34::i;:::-;19871:72;;19992:51;20009:15;20025:10;20036:3;20040:2;19992:16;:51::i;:::-;19954:89;;20092:39;20105:15;20121:9;20092:12;:39::i;:::-;20054:77;;20225:37;20238:12;;20252:9;20225:12;:37::i;:::-;20187:12;:75;;;;20346:65;20359:19;:37;20379:16;20359:37;;;;;;;;;;;;;;;;20398:12;20346;:65::i;:::-;20306:19;:37;20326:16;20306:37;;;;;;;;;;;;;;;:105;;;;20462:1;20422:19;:37;20442:16;20422:37;;;;;;;;;;;;;;;:41;;;;20512:1;20474:12;:30;20487:16;20474:30;;;;;;;;;;;;;;;:39;;;;19353:1178;;;;;;;;:::o;14205:101::-;14258:4;14282:16;;14275:23;;14205:101;:::o;14786:286::-;14855:7;14875:24;14913:10;14875:48;;14941:21;:122;;15034:29;15046:16;15034:11;:29::i;:::-;14941:122;;;14997:16;:34;15014:16;14997:34;;;;;;;;;;;;;;;;14965:29;14977:16;14965:11;:29::i;:::-;:66;14941:122;14934:129;;14786:286;;;;:::o;14035:96::-;14087:4;14111;:12;;;14104:19;;14035:96;:::o;15160:137::-;15225:7;15252:19;:37;15272:16;15252:37;;;;;;;;;;;;;;;;15245:44;;15160:137;;;:::o;17836:691::-;17914:4;17930:24;18136:33;4273:1;4260:10;:8;:10::i;:::-;:14;4252:23;;;;;;;;17968:10;17930:48;;18049:15;;;;;;;;;;;18048:16;:76;;;;;18087:19;:37;18107:16;18087:37;;;;;;;;;;;;;;;;18068:15;:56;;18048:76;18040:85;;;;;;;;18174:35;18187:15;18204:4;18174:12;:35::i;:::-;18136:73;;18258:3;18220:12;:30;18233:16;18220:30;;;;;;;;;;;;;;;:41;;;;18312:78;18325:19;:37;18345:16;18325:37;;;;;;;;;;;;;;;;18364:25;18312:12;:78::i;:::-;18272:19;:37;18292:16;18272:37;;;;;;;;;;;;;;;:118;;;;18441:78;18454:19;:37;18474:16;18454:37;;;;;;;;;;;;;;;;18493:25;18441:12;:78::i;:::-;18401:19;:37;18421:16;18401:37;;;;;;;;;;;;;;;:118;;;;17836:691;;;;;:::o;19206:135::-;19277:7;19303:12;:30;19316:16;19303:30;;;;;;;;;;;;;;;;19296:37;;19206:135;;;:::o;12967:155::-;4493:24;4520:10;4493:37;;4549:14;:43;4574:16;4564:27;;;;;;;;;;;;;;;;;;;;;;;;4549:43;;;;;;;;;;;;;;;;;;;;;;;;;;;4541:52;;;;;;;;13099:15;13061:18;:53;;;;12967:155;;:::o;16295:571::-;16335:7;16480:17;16552:21;16644:19;16741:22;16374:1;16358:12;;:17;16355:504;;;2036:14;1959:12;16398:49;16391:56;;;;16355:504;16514:23;16532:4;16514:17;:23::i;:::-;16480:57;;1694:1;1760:2;1827:1;16586:28;:43;16552:77;;;;16678:48;16695:9;16705:13;16719:3;16723:2;16678:16;:48::i;:::-;16644:82;;16775:36;16788:9;16799:11;16775:12;:36::i;:::-;16741:70;;16833:14;16826:21;;16295:571;;;;;;:::o;12803:152::-;4493:24;4520:10;4493:37;;4549:14;:43;4574:16;4564:27;;;;;;;;;;;;;;;;;;;;;;;;4549:43;;;;;;;;;;;;;;;;;;;;;;;;;;;4541:52;;;;;;;;12940:7;12902:14;:27;12917:11;12902:27;;;;;;;;;;;;;;;;;;:45;;;;;;;;;;;;;;;;;;12803:152;;;:::o;14540:161::-;14580:7;14600:24;14638:10;14600:48;;14666:27;14676:16;14666:9;:27::i;:::-;14659:34;;14540:161;;:::o;1499:63::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;13640:201::-;13708:21;4493:24;4520:10;4493:37;;4549:14;:43;4574:16;4564:27;;;;;;;;;;;;;;;;;;;;;;;;4549:43;;;;;;;;;;;;;;;;;;;;;;;;;;;4541:52;;;;;;;;13734:10;13708:36;;13755:13;:22;;:40;13778:16;;13755:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13832:1;13806:16;:27;;;;13640:201;;:::o;12515:120::-;4493:24;4520:10;4493:37;;4549:14;:43;4574:16;4564:27;;;;;;;;;;;;;;;;;;;;;;;;4549:43;;;;;;;;;;;;;;;;;;;;;;;;;;;4541:52;;;;;;;;12622:5;12584:15;;:43;;;;;;;;;;;;;;;;;;12515:120;:::o;10702:1656::-;10797:4;10814:24;11226:17;11328:20;11417:18;4273:1;4260:10;:8;:10::i;:::-;:14;4252:23;;;;;;;;10852:10;10814:48;;10933:15;;;;;;;;;;;10932:16;:76;;;;;10971:19;:37;10991:16;10971:37;;;;;;;;;;;;;;;;10952:15;:56;;10932:76;10924:85;;;;;;;;11096:1;11076:17;11088:4;11076:11;:17::i;:::-;:21;11073:36;;;11099:10;:8;:10::i;:::-;11073:36;11264:53;11281:15;1694:1;11264:53;;11310:3;11314:2;11264:16;:53::i;:::-;11226:91;;11366:40;11379:15;11396:9;11366:12;:40::i;:::-;11328:78;;11455:28;11473:9;11455:17;:28::i;:::-;11417:66;;11564:37;11577:12;;11591:9;11564:12;:37::i;:::-;11526:12;:75;;;;11680:68;11693:19;:37;11713:16;11693:37;;;;;;;;;;;;;;;;11732:15;11680:12;:68::i;:::-;11640:19;:37;11660:16;11640:37;;;;;;;;;;;;;;;:108;;;;11797:59;11810:19;:31;11830:10;11810:31;;;;;;;;;;;;;;;;11843:12;11797;:59::i;:::-;11759:19;:31;11779:10;11759:31;;;;;;;;;;;;;;;:97;;;;11971:15;11953;;:33;11904:10;:28;11915:16;11904:28;;;;;;;;;;;;;;;;:83;;;;;;;;;;;12065:12;12047:15;;:30;11998:10;:22;12009:10;11998:22;;;;;;;;;;;;;;;;:80;;;;;;;;;;;12172:70;12185:15;;12229:12;;2195:5;12203:10;:22;12202:39;;;;;;;;12172:12;:70::i;:::-;12134:15;:108;;;;12303:10;12276:52;;12285:16;12276:52;;;12315:12;12276:52;;;;;;;;;;;;;;;;;;12346:4;12339:11;;10702:1656;;;;;;;;:::o;13266:126::-;4493:24;4520:10;4493:37;;4549:14;:43;4574:16;4564:27;;;;;;;;;;;;;;;;;;;;;;;;4549:43;;;;;;;;;;;;;;;;;;;;;;;;;;;4541:52;;;;;;;;13377:7;13339:6;:45;;;;;;;;;;;;:::i;:::-;;13266:126;;:::o;13134:120::-;4493:24;4520:10;4493:37;;4549:14;:43;4574:16;4564:27;;;;;;;;;;;;;;;;;;;;;;;;4549:43;;;;;;;;;;;;;;;;;;;;;;;;;;;4541:52;;;;;;;;13241:5;13203:4;:43;;;;;;;;;;;;:::i;:::-;;13134:120;;:::o;22038:1052::-;22113:10;22149:1;22139:6;:11;22136:926;;;22172:21;:39;22194:16;22172:39;;;;;;;;;;;;;;;;;;;;;;;;;22167:44;;22136:926;;;22242:1;22232:6;:11;22229:833;;;22265:21;:39;22287:16;22265:39;;;;;;;;;;;;;;;;;;;;;;;;;22260:44;;22229:833;;;22335:1;22325:6;:11;22322:740;;;22358:21;:39;22380:16;22358:39;;;;;;;;;;;;;;;;;;;;;;;;;22353:44;;22322:740;;;22428:1;22418:6;:11;22415:647;;;22451:21;:39;22473:16;22451:39;;;;;;;;;;;;;;;;;;;;;;;;;22446:44;;22415:647;;;22521:1;22511:6;:11;22508:554;;;22544:21;:39;22566:16;22544:39;;;;;;;;;;;;;;;;;;;;;;;;;22539:44;;22508:554;;;22614:1;22604:6;:11;22601:461;;;22637:21;:39;22659:16;22637:39;;;;;;;;;;;;;;;;;;;;;;;;;22632:44;;22601:461;;;22707:1;22697:6;:11;22694:368;;;22730:21;:39;22752:16;22730:39;;;;;;;;;;;;;;;;;;;;;;;;;22725:44;;22694:368;;;22800:1;22790:6;:11;22787:275;;;22823:21;:39;22845:16;22823:39;;;;;;;;;;;;;;;;;;;;;;;;;22818:44;;22787:275;;;22893:1;22883:6;:11;22880:182;;;22916:21;:39;22938:16;22916:39;;;;;;;;;;;;;;;;;;;;;;;;;22911:44;;22880:182;;;22986:2;22976:6;:12;22973:89;;;23010:22;:40;23033:16;23010:40;;;;;;;;;;;;;;;;;;;;;;;;;23005:45;;22973:89;22880:182;22787:275;22694:368;22601:461;22508:554;22415:647;22322:740;22229:833;22136:926;23080:2;23073:9;;22038:1052;;;;:::o;9236:1329::-;9310:24;9445:15;9509:17;9584:18;9680:22;10029;4273:1;4260:10;:8;:10::i;:::-;:14;4252:23;;;;;;;;9348:10;9310:48;;9396:19;:37;9416:16;9396:37;;;;;;;;;;;;;;;;9377:15;:56;;9369:65;;;;;;;;9483:15;9445:53;;9547:26;9565:7;9547:17;:26::i;:::-;9509:64;;9622:47;9639:9;1694:1;9622:47;;9662:3;9666:2;9622:16;:47::i;:::-;9584:85;;9718:35;9731:9;9742:10;9718:12;:35::i;:::-;9680:73;;9835:35;9848:12;;9862:7;9835:12;:35::i;:::-;9797:12;:73;;;;9921:60;9934:19;:37;9954:16;9934:37;;;;;;;;;;;;;;;;9973:7;9921:12;:60::i;:::-;9881:19;:37;9901:16;9881:37;;;;;;;;;;;;;;;:100;;;;2195:5;10106:14;:26;10095:7;10077:15;;:25;:56;10029:105;;10184:15;10145:10;:28;10156:16;10145:28;;;;;;;;;;;;;;;;:54;;;;;;;;;;;10279:1;10264:12;;:16;10260:210;;;10388:70;10401:15;;10445:12;;2195:5;10419:10;:22;10418:39;;;;;;;;10388:12;:70::i;:::-;10354:15;:104;;;;10260:210;10515:16;10503:54;;;10533:7;10542:14;10503:54;;;;;;;;;;;;;;;;;;;;;;;;9236:1329;;;;;;;:::o;21412:49::-;;;;;;;;;;;;;;;;;:::o;8138:292::-;8227:24;8286:15;8265:10;8227:48;;8324:19;:37;8344:16;8324:37;;;;;;;;;;;;;;;;8286:75;;8385:1;8375:7;:11;8372:29;;;8388:13;8393:7;8388:4;:13::i;:::-;8372:29;8412:10;:8;:10::i;:::-;8138:292;;:::o;6994:123::-;7051:7;7071:38;7086:9;7097:11;7071:14;:38::i;:::-;;6994:123;;;:::o;13404:224::-;13483:21;4493:24;4520:10;4493:37;;4549:14;:43;4574:16;4564:27;;;;;;;;;;;;;;;;;;;;;;;;4549:43;;;;;;;;;;;;;;;;;;;;;;;;;;;4541:52;;;;;;;;13507:10;13483:34;;13552:16;13536:4;:12;;;:32;;13528:41;;;;;;;;13580:13;:22;;:40;13603:16;13580:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13404:224;;;:::o;7288:780::-;7367:18;7519:24;7904:15;4401:1;4381:17;4393:4;4381:11;:17::i;:::-;:21;4373:30;;;;;;;;7405:18;7417:5;7405:11;:18::i;:::-;7367:56;;7557:10;7519:48;;2195:5;7628:10;:22;7578:10;:28;7589:16;7578:28;;;;;;;;;;;;;;;;:73;;;;;;;;;;;7733:16;:34;7750:16;7733:34;;;;;;;;;;;;;;;;7694:73;;;;7816:1;7778:16;:34;7795:16;7778:34;;;;;;;;;;;;;;;:39;;;;7942:31;7957:10;7969:3;7942:14;:31::i;:::-;7904:69;;8022:16;8007:53;;;8040:10;8052:7;8007:53;;;;;;;;;;;;;;;;;;;;;;;;7288:780;;;:::o;1096:147::-;1154:7;1174:9;1190:1;1186;:5;1174:17;;1214:1;1209;:6;;1202:14;;;;;;1234:1;1227:8;;1096:147;;;;;:::o;147:306::-;248:13;274:15;335:14;322:1;312:9;:11;305:2;:19;293:9;:31;274:50;;388:2;383:1;368:11;355:10;:24;;;;;;;;354:30;353:37;;;;;;;;335:55;;425:19;415:9;409:5;:15;:35;;;;;;;;401:44;;147:306;;;;;;;;:::o;967:123::-;1025:7;1057:1;1052;:6;;1045:14;;;;;;1081:1;1077;:5;1070:12;;967:123;;;;:::o;35192:919::-;35260:7;35280:26;35354:23;35339:4;1959:12;35318:25;35280:63;;36045:12;;2036:14;35437:555;35473:457;35890:12;;35871:18;2036:14;35844:1;:26;:45;:58;35779:1;35765:12;;:15;35761:1;2036:14;35735:27;35734:47;35666:4;35654:9;:16;35647:4;2036:14;35622:29;35619:1;:33;:52;35555:1;35535:18;:21;35534:138;:248;:369;35473:4;:457::i;:::-;35955:18;35437:12;:555::i;:::-;35418:614;;;;;;;;35403:655;35354:704;;36088:15;36081:22;;35192:919;;;;;:::o;23102:8275::-;23234:24;23286:25;23268:7;23234:41;;23320:17;23286:51;;23382:17;23348:14;:51;;;;23454:42;23471:14;;23486:2;23489:3;23493:2;23454:16;:42::i;:::-;23420:8;:76;;;;23541:42;23558:14;;23573:2;23576:3;23580:2;23541:16;:42::i;:::-;23507:8;:76;;;;23628:42;23645:14;;23660:2;23663:3;23667:2;23628:16;:42::i;:::-;23594:8;:76;;;;23715:42;23732:14;;23747:2;23750:3;23754:2;23715:16;:42::i;:::-;23681:8;:76;;;;23802:41;23819:14;;23834:1;23836:3;23840:2;23802:16;:41::i;:::-;23768:8;:75;;;;23888:41;23905:14;;23920:1;23922:3;23926:2;23888:16;:41::i;:::-;23854:8;:75;;;;23974:41;23991:14;;24006:1;24008:3;24012:2;23974:16;:41::i;:::-;23940:8;:75;;;;24060:41;24077:14;;24092:1;24094:3;24098:2;24060:16;:41::i;:::-;24026:8;:75;;;;24146:41;24163:14;;24178:1;24180:3;24184:2;24146:16;:41::i;:::-;24112:8;:75;;;;24232:41;24249:14;;24264:1;24266:3;24270:2;24232:16;:41::i;:::-;24198:9;:75;;;;24376:11;24314:21;:39;24336:16;24314:39;;;;;;;;;;;;;;;;:73;;;;;;;;;;;;;;;;;;24460:81;24473:16;:57;24490:21;:39;24512:16;24490:39;;;;;;;;;;;;;;;;;;;;;;;;;24473:57;;;;;;;;;;;;;;;;24532:8;;24460:12;:81::i;:::-;24398:16;:57;24415:21;:39;24437:16;24415:39;;;;;;;;;;;;;;;;;;;;;;;;;24398:57;;;;;;;;;;;;;;;:143;;;;24614:41;24627:17;24646:8;;24614:12;:41::i;:::-;24552:103;;24685:4;24669:20;;:12;:20;;;24666:100;;;24706:48;24721:11;24734:16;24752:1;24706:14;:48::i;:::-;24666:100;24820:21;:34;24842:11;24820:34;;;;;;;;;;;;;;;;;;;;;;;;;24786:6;;:68;;;;;;;;;;;;;;;;;;24899:21;:34;24921:11;24899:34;;;;;;;;;;;;;;;;;;;;;;;;;24865:6;;:68;;;;;;;;;;;;;;;;;;24978:21;:34;25000:11;24978:34;;;;;;;;;;;;;;;;;;;;;;;;;24944:6;;:68;;;;;;;;;;;;;;;;;;25057:21;:34;25079:11;25057:34;;;;;;;;;;;;;;;;;;;;;;;;;25023:6;;:68;;;;;;;;;;;;;;;;;;25136:21;:34;25158:11;25136:34;;;;;;;;;;;;;;;;;;;;;;;;;25102:6;;:68;;;;;;;;;;;;;;;;;;25215:21;:34;25237:11;25215:34;;;;;;;;;;;;;;;;;;;;;;;;;25181:6;;:68;;;;;;;;;;;;;;;;;;25294:21;:34;25316:11;25294:34;;;;;;;;;;;;;;;;;;;;;;;;;25260:6;;:68;;;;;;;;;;;;;;;;;;25373:21;:34;25395:11;25373:34;;;;;;;;;;;;;;;;;;;;;;;;;25339:6;;:68;;;;;;;;;;;;;;;;;;25452:21;:34;25474:11;25452:34;;;;;;;;;;;;;;;;;;;;;;;;;25418:7;;:68;;;;;;;;;;;;;;;;;;25540:42;25530:52;;:6;;;;;;;;;;;:52;;;;25527:601;;;25661:21;:34;25683:11;25661:34;;;;;;;;;;;;;;;;;;;;;;;;;25599:21;:39;25621:16;25599:39;;;;;;;;;;;;;;;;:96;;;;;;;;;;;;;;;;;;25772:81;25785:16;:57;25802:21;:39;25824:16;25802:39;;;;;;;;;;;;;;;;;;;;;;;;;25785:57;;;;;;;;;;;;;;;;25844:8;;25772:12;:81::i;:::-;25710:16;:57;25727:21;:39;25749:16;25727:39;;;;;;;;;;;;;;;;;;;;;;;;;25710:57;;;;;;;;;;;;;;;:143;;;;25930:41;25943:17;25962:8;;25930:12;:41::i;:::-;25868:103;;26005:4;25989:20;;:12;:20;;;25986:131;;;26030:71;26045:21;:34;26067:11;26045:34;;;;;;;;;;;;;;;;;;;;;;;;;26081:16;26099:1;26030:14;:71::i;:::-;25986:131;25527:601;26181:42;26171:52;;:6;;;;;;;;;;;:52;;;;26168:601;;;26302:21;:34;26324:11;26302:34;;;;;;;;;;;;;;;;;;;;;;;;;26240:21;:39;26262:16;26240:39;;;;;;;;;;;;;;;;:96;;;;;;;;;;;;;;;;;;26413:81;26426:16;:57;26443:21;:39;26465:16;26443:39;;;;;;;;;;;;;;;;;;;;;;;;;26426:57;;;;;;;;;;;;;;;;26485:8;;26413:12;:81::i;:::-;26351:16;:57;26368:21;:39;26390:16;26368:39;;;;;;;;;;;;;;;;;;;;;;;;;26351:57;;;;;;;;;;;;;;;:143;;;;26571:41;26584:17;26603:8;;26571:12;:41::i;:::-;26509:103;;26646:4;26630:20;;:12;:20;;;26627:131;;;26671:71;26686:21;:34;26708:11;26686:34;;;;;;;;;;;;;;;;;;;;;;;;;26722:16;26740:1;26671:14;:71::i;:::-;26627:131;26168:601;26822:42;26812:52;;:6;;;;;;;;;;;:52;;;;26809:601;;;26943:21;:34;26965:11;26943:34;;;;;;;;;;;;;;;;;;;;;;;;;26881:21;:39;26903:16;26881:39;;;;;;;;;;;;;;;;:96;;;;;;;;;;;;;;;;;;27054:81;27067:16;:57;27084:21;:39;27106:16;27084:39;;;;;;;;;;;;;;;;;;;;;;;;;27067:57;;;;;;;;;;;;;;;;27126:8;;27054:12;:81::i;:::-;26992:16;:57;27009:21;:39;27031:16;27009:39;;;;;;;;;;;;;;;;;;;;;;;;;26992:57;;;;;;;;;;;;;;;:143;;;;27212:41;27225:17;27244:8;;27212:12;:41::i;:::-;27150:103;;27287:4;27271:20;;:12;:20;;;27268:131;;;27312:71;27327:21;:34;27349:11;27327:34;;;;;;;;;;;;;;;;;;;;;;;;;27363:16;27381:1;27312:14;:71::i;:::-;27268:131;26809:601;27463:42;27453:52;;:6;;;;;;;;;;;:52;;;;27450:601;;;27584:21;:34;27606:11;27584:34;;;;;;;;;;;;;;;;;;;;;;;;;27522:21;:39;27544:16;27522:39;;;;;;;;;;;;;;;;:96;;;;;;;;;;;;;;;;;;27695:81;27708:16;:57;27725:21;:39;27747:16;27725:39;;;;;;;;;;;;;;;;;;;;;;;;;27708:57;;;;;;;;;;;;;;;;27767:8;;27695:12;:81::i;:::-;27633:16;:57;27650:21;:39;27672:16;27650:39;;;;;;;;;;;;;;;;;;;;;;;;;27633:57;;;;;;;;;;;;;;;:143;;;;27853:41;27866:17;27885:8;;27853:12;:41::i;:::-;27791:103;;27928:4;27912:20;;:12;:20;;;27909:131;;;27953:71;27968:21;:34;27990:11;27968:34;;;;;;;;;;;;;;;;;;;;;;;;;28004:16;28022:1;27953:14;:71::i;:::-;27909:131;27450:601;28104:42;28094:52;;:6;;;;;;;;;;;:52;;;;28091:601;;;28225:21;:34;28247:11;28225:34;;;;;;;;;;;;;;;;;;;;;;;;;28163:21;:39;28185:16;28163:39;;;;;;;;;;;;;;;;:96;;;;;;;;;;;;;;;;;;28336:81;28349:16;:57;28366:21;:39;28388:16;28366:39;;;;;;;;;;;;;;;;;;;;;;;;;28349:57;;;;;;;;;;;;;;;;28408:8;;28336:12;:81::i;:::-;28274:16;:57;28291:21;:39;28313:16;28291:39;;;;;;;;;;;;;;;;;;;;;;;;;28274:57;;;;;;;;;;;;;;;:143;;;;28494:41;28507:17;28526:8;;28494:12;:41::i;:::-;28432:103;;28569:4;28553:20;;:12;:20;;;28550:131;;;28594:71;28609:21;:34;28631:11;28609:34;;;;;;;;;;;;;;;;;;;;;;;;;28645:16;28663:1;28594:14;:71::i;:::-;28550:131;28091:601;28745:42;28735:52;;:6;;;;;;;;;;;:52;;;;28732:601;;;28866:21;:34;28888:11;28866:34;;;;;;;;;;;;;;;;;;;;;;;;;28804:21;:39;28826:16;28804:39;;;;;;;;;;;;;;;;:96;;;;;;;;;;;;;;;;;;28977:81;28990:16;:57;29007:21;:39;29029:16;29007:39;;;;;;;;;;;;;;;;;;;;;;;;;28990:57;;;;;;;;;;;;;;;;29049:8;;28977:12;:81::i;:::-;28915:16;:57;28932:21;:39;28954:16;28932:39;;;;;;;;;;;;;;;;;;;;;;;;;28915:57;;;;;;;;;;;;;;;:143;;;;29135:41;29148:17;29167:8;;29135:12;:41::i;:::-;29073:103;;29210:4;29194:20;;:12;:20;;;29191:131;;;29235:71;29250:21;:34;29272:11;29250:34;;;;;;;;;;;;;;;;;;;;;;;;;29286:16;29304:1;29235:14;:71::i;:::-;29191:131;28732:601;29386:42;29376:52;;:6;;;;;;;;;;;:52;;;;29373:601;;;29507:21;:34;29529:11;29507:34;;;;;;;;;;;;;;;;;;;;;;;;;29445:21;:39;29467:16;29445:39;;;;;;;;;;;;;;;;:96;;;;;;;;;;;;;;;;;;29618:81;29631:16;:57;29648:21;:39;29670:16;29648:39;;;;;;;;;;;;;;;;;;;;;;;;;29631:57;;;;;;;;;;;;;;;;29690:8;;29618:12;:81::i;:::-;29556:16;:57;29573:21;:39;29595:16;29573:39;;;;;;;;;;;;;;;;;;;;;;;;;29556:57;;;;;;;;;;;;;;;:143;;;;29776:41;29789:17;29808:8;;29776:12;:41::i;:::-;29714:103;;29851:4;29835:20;;:12;:20;;;29832:131;;;29876:71;29891:21;:34;29913:11;29891:34;;;;;;;;;;;;;;;;;;;;;;;;;29927:16;29945:1;29876:14;:71::i;:::-;29832:131;29373:601;30027:42;30017:52;;:6;;;;;;;;;;;:52;;;;30014:601;;;30148:21;:34;30170:11;30148:34;;;;;;;;;;;;;;;;;;;;;;;;;30086:21;:39;30108:16;30086:39;;;;;;;;;;;;;;;;:96;;;;;;;;;;;;;;;;;;30259:81;30272:16;:57;30289:21;:39;30311:16;30289:39;;;;;;;;;;;;;;;;;;;;;;;;;30272:57;;;;;;;;;;;;;;;;30331:8;;30259:12;:81::i;:::-;30197:16;:57;30214:21;:39;30236:16;30214:39;;;;;;;;;;;;;;;;;;;;;;;;;30197:57;;;;;;;;;;;;;;;:143;;;;30417:41;30430:17;30449:8;;30417:12;:41::i;:::-;30355:103;;30492:4;30476:20;;:12;:20;;;30473:131;;;30517:71;30532:21;:34;30554:11;30532:34;;;;;;;;;;;;;;;;;;;;;;;;;30568:16;30586:1;30517:14;:71::i;:::-;30473:131;30014:601;30670:42;30659:53;;:7;;;;;;;;;;;:53;;;;30656:606;;;30791:21;:34;30813:11;30791:34;;;;;;;;;;;;;;;;;;;;;;;;;30729:22;:40;30752:16;30729:40;;;;;;;;;;;;;;;;:96;;;;;;;;;;;;;;;;;;30902:83;30915:16;:58;30932:22;:40;30955:16;30932:40;;;;;;;;;;;;;;;;;;;;;;;;;30915:58;;;;;;;;;;;;;;;;30975:9;;30902:12;:83::i;:::-;30840:16;:58;30857:22;:40;30880:16;30857:40;;;;;;;;;;;;;;;;;;;;;;;;;30840:58;;;;;;;;;;;;;;;:145;;;;31062:42;31075:17;31094:9;;31062:12;:42::i;:::-;31000:104;;31138:4;31122:20;;:12;:20;;;31119:132;;;31163:72;31178:21;:34;31200:11;31178:34;;;;;;;;;;;;;;;;;;;;;;;;;31214:16;31232:2;31163:14;:72::i;:::-;31119:132;30656:606;31320:49;31333:16;;31351:17;31320:12;:49::i;:::-;31282:16;:87;;;;23102:8275;;;;;;:::o;36178:696::-;36244:7;36264:15;36329:20;36399:22;36313:4;36303:7;:14;36264:54;;36383:4;36368:12;;:19;36329:59;;36829:4;36461:357;36724:4;36714:7;:14;2115:15;36633:4;36620:12;:17;;;;;;;;2115:15;36594:44;1959:12;36573:66;36542:147;36515:214;36802:1;36795:4;36786:7;36784:1;36775:7;:10;:18;36774:25;;;;;;;;2115:15;36750:50;36749:54;;;;;;;;36461:12;:357::i;:::-;:372;;;;;;;;36399:435;;36852:14;36845:21;;36178:696;;;;;;:::o;673:288::-;731:7;830:9;846:1;842;:5;;;;;;;;830:17;;952:1;945:8;;673:288;;;;;:::o;459:208::-;517:7;594:9;546:1;541;:6;537:47;;;571:1;564:8;;;;537:47;610:1;606;:5;594:17;;638:1;633;629;:5;;;;;;;;:10;622:18;;;;;;658:1;651:8;;459:208;;;;;;:::o;36886:198::-;36931:6;36950;36969:1;36964;36960;:5;36959:11;;;;;;;;36950:20;;36985:1;36981:5;;36997:80;37008:1;37004;:5;36997:80;;;37030:1;37026:5;;37064:1;37059;37055;37051;:5;;;;;;;;:9;37050:15;;;;;;;;37046:19;;36997:80;;;36886:198;;;;:::o;21697:333::-;21845:11;21803:14;:29;21818:13;21803:29;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;21859:14;:29;21874:13;21859:29;;;;;;;;;;;;;;;;21845:43;;21947:14;21899:7;:22;21907:13;21899:22;;;;;;;;;;;;;;;:30;21922:6;21899:30;;;;;;;;;;;:45;;;:62;;;;;;;;;;;;;;;;;;22014:8;21972:7;:22;21980:13;21972:22;;;;;;;;;;;;;;;:30;21995:6;21972:30;;;;;;;;;;;:39;;:50;;;;21697:333;;;;:::o;1250:35843::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

bzzr://b6c7f9ffbbbe91f964b767f5e90c14887508f2a67bafdf6a6acb41d6a6853581

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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