ETH Price: $3,135.35 (+1.93%)
 

Overview

ETH Balance

0.000968734964168966 ETH

Eth Value

$3.04 (@ $3,135.35/ETH)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Withdraw151649562022-07-18 6:13:26926 days ago1658124806IN
0xD962D9c7...3d13c208E
0 ETH0.0010199316.22012356
Withdraw127144082021-06-27 6:04:141312 days ago1624773854IN
0xD962D9c7...3d13c208E
0 ETH0.000216594
Withdraw126758402021-06-21 5:45:491318 days ago1624254349IN
0xD962D9c7...3d13c208E
0 ETH0.0010689717
Transfer125176082021-05-27 17:08:331343 days ago1622135313IN
0xD962D9c7...3d13c208E
0 ETH0.0033555634
Withdraw121223592021-03-27 17:09:451404 days ago1616864985IN
0xD962D9c7...3d13c208E
0 ETH0.00707031115
Transfer112028932020-11-06 9:09:591545 days ago1604653799IN
0xD962D9c7...3d13c208E
0 ETH0.0008553734
Transfer111468332020-10-28 18:36:191554 days ago1603910179IN
0xD962D9c7...3d13c208E
0 ETH0.0011069544
Withdraw103767252020-07-02 0:08:321672 days ago1593648512IN
0xD962D9c7...3d13c208E
0 ETH0.000620
Reinvest103615222020-06-29 15:23:281675 days ago1593444208IN
0xD962D9c7...3d13c208E
0 ETH0.0050589446
Reinvest103358602020-06-25 15:58:561679 days ago1593100736IN
0xD962D9c7...3d13c208E
0 ETH0.0037392134
Selling Withdraw103105982020-06-21 18:07:341683 days ago1592762854IN
0xD962D9c7...3d13c208E
0 ETH0.0010489529
Withdraw103105802020-06-21 18:03:581683 days ago1592762638IN
0xD962D9c7...3d13c208E
0 ETH0.0015644430
Sell103100622020-06-21 16:05:151683 days ago1592755515IN
0xD962D9c7...3d13c208E
0 ETH0.0036180945
Withdraw102137392020-06-06 18:24:231698 days ago1591467863IN
0xD962D9c7...3d13c208E
0 ETH0.001598526
Withdraw101867122020-06-02 13:38:191702 days ago1591105099IN
0xD962D9c7...3d13c208E
0 ETH0.0020903534
Withdraw101475762020-05-27 11:37:071708 days ago1590579427IN
0xD962D9c7...3d13c208E
0 ETH0.0018757642
Selling Withdraw101296222020-05-24 16:26:021711 days ago1590337562IN
0xD962D9c7...3d13c208E
0 ETH0.000868124
Buy101288672020-05-24 13:41:471711 days ago1590327707IN
0xD962D9c7...3d13c208E
0.001 ETH0.003297835
Reinvest101010342020-05-20 5:49:551715 days ago1589953795IN
0xD962D9c7...3d13c208E
0 ETH0.001429713
Reinvest101010342020-05-20 5:49:551715 days ago1589953795IN
0xD962D9c7...3d13c208E
0 ETH0.001429713
Reinvest100896782020-05-18 11:22:361717 days ago1589800956IN
0xD962D9c7...3d13c208E
0 ETH0.0025294723
Reinvest100846372020-05-17 16:18:271718 days ago1589732307IN
0xD962D9c7...3d13c208E
0 ETH0.0029693727
Withdraw100770562020-05-16 12:15:021719 days ago1589631302IN
0xD962D9c7...3d13c208E
0 ETH0.0009222115
Reinvest100769822020-05-16 11:57:311719 days ago1589630251IN
0xD962D9c7...3d13c208E
0 ETH0.0016496515
Reinvest100769632020-05-16 11:53:181719 days ago1589629998IN
0xD962D9c7...3d13c208E
0 ETH0.0016496515
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
151649562022-07-18 6:13:26926 days ago1658124806
0xD962D9c7...3d13c208E
0.00002015 ETH
151649562022-07-18 6:13:26926 days ago1658124806
0xD962D9c7...3d13c208E
0.00000251 ETH
151649562022-07-18 6:13:26926 days ago1658124806
0xD962D9c7...3d13c208E
0.00000251 ETH
127144082021-06-27 6:04:141312 days ago1624773854
0xD962D9c7...3d13c208E
0.00068007 ETH
126758402021-06-21 5:45:491318 days ago1624254349
0xD962D9c7...3d13c208E
0.00000776 ETH
126758402021-06-21 5:45:491318 days ago1624254349
0xD962D9c7...3d13c208E
0.00000097 ETH
126758402021-06-21 5:45:491318 days ago1624254349
0xD962D9c7...3d13c208E
0.00000097 ETH
121223592021-03-27 17:09:451404 days ago1616864985
0xD962D9c7...3d13c208E
0.00013044 ETH
121223592021-03-27 17:09:451404 days ago1616864985
0xD962D9c7...3d13c208E
0.0000163 ETH
121223592021-03-27 17:09:451404 days ago1616864985
0xD962D9c7...3d13c208E
0.0000163 ETH
103105802020-06-21 18:03:581683 days ago1592762638
0xD962D9c7...3d13c208E
0.00081252 ETH
102137392020-06-06 18:24:231698 days ago1591467863
0xD962D9c7...3d13c208E
0.00003512 ETH
102137392020-06-06 18:24:231698 days ago1591467863
0xD962D9c7...3d13c208E
0.00000439 ETH
102137392020-06-06 18:24:231698 days ago1591467863
0xD962D9c7...3d13c208E
0.00000439 ETH
101867122020-06-02 13:38:191702 days ago1591105099
0xD962D9c7...3d13c208E
0.00003246 ETH
101867122020-06-02 13:38:191702 days ago1591105099
0xD962D9c7...3d13c208E
0.00000405 ETH
101867122020-06-02 13:38:191702 days ago1591105099
0xD962D9c7...3d13c208E
0.00000405 ETH
100770562020-05-16 12:15:021719 days ago1589631302
0xD962D9c7...3d13c208E
0.00006164 ETH
100770562020-05-16 12:15:021719 days ago1589631302
0xD962D9c7...3d13c208E
0.0000077 ETH
100770562020-05-16 12:15:021719 days ago1589631302
0xD962D9c7...3d13c208E
0.0000077 ETH
100516332020-05-12 13:24:041723 days ago1589289844
0xD962D9c7...3d13c208E
0.00016505 ETH
100440722020-05-11 9:15:591724 days ago1589188559
0xD962D9c7...3d13c208E
0.00311414 ETH
100346962020-05-09 22:26:291726 days ago1589063189
0xD962D9c7...3d13c208E
0.00172145 ETH
100263062020-05-08 15:10:501727 days ago1588950650
0xD962D9c7...3d13c208E
0.85238397 ETH
100261662020-05-08 14:38:351727 days ago1588948715
0xD962D9c7...3d13c208E
0.02530143 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TREASURE

Compiler Version
v0.4.20+commit.3155dd80

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2019-05-31
*/

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 TREASURE {
    
    /*=====================================
    =       CONTRACT CONFIGURABLES        =
    =====================================*/
    
    // Token Details
    string public name                                      = "TREASURE";
    string public symbol                                    = "TRS";
    uint8 constant public decimals                          = 18;
    uint256 constant internal tokenPriceInitial             = 0.000000001 ether;
    
    // Token Price Increment & Decrement By 1Gwei
    uint256 constant internal tokenPriceIncDec              = 0.000000001 ether;
    
    // Proof of Stake (Default at 1 Token)
    uint256 public stakingReq                               = 1e18;
    uint256 constant internal magnitude                     = 2**64;
    
    // Dividend/Distribution Percentage
    uint8 constant internal referralFeePercent              = 5;
    uint8 constant internal dividendFeePercent              = 10;
    uint8 constant internal tradingFundWalletFeePercent     = 10;
    uint8 constant internal communityWalletFeePercent       = 10;
    
    /*================================
    =            DATASETS            =
    ================================*/
    
    // amount of shares for each address (scaled number)
    mapping(address => uint256) internal tokenBalanceLedger_;
    mapping(address => uint256) internal referralBalance_;
    mapping(address => int256) internal payoutsTo_;
    mapping(address => uint256) internal sellingWithdrawBalance_;
    mapping(address => uint256) internal ambassadorAccumulatedQuota_;
    mapping(address => string) internal contractTokenHolderAddresses;

    uint256 internal tokenTotalSupply                       = 0;
    uint256 internal calReferralPercentage                  = 0;
    uint256 internal calDividendPercentage                  = 0;
    uint256 internal calculatedPercentage                   = 0;
    uint256 internal soldTokens                             = 0;
    uint256 internal tempIncomingEther                      = 0;
    uint256 internal tempProfitPerShare                     = 0;
    uint256 internal tempIf                                 = 0;
    uint256 internal tempCalculatedDividends                = 0;
    uint256 internal tempReferall                           = 0;
    uint256 internal tempSellingWithdraw                    = 0;
    uint256 internal profitPerShare_;
    
    // When this is set to true, only ambassadors can purchase tokens
    bool public onlyAmbassadors = false;
    
    // Community Wallet Address
    address internal constant CommunityWalletAddr           = address(0xa6ac94e896fBB8A2c27692e20B301D54D954071E);
    // Trading Fund Wallet Address
    address internal constant TradingWalletAddr             = address(0x40E68DF89cAa6155812225F12907960608A0B9dd);  

    // Administrator of this contract                        
    mapping(bytes32 => bool) public admin;
    
    /*=================================
    =            MODIFIERS            =
    =================================*/
    
    // Only people with tokens
    modifier onlybelievers() {
        require(myTokens() > 0);
        _;
    }
    
    // Only people with profits
    modifier onlyhodler() {
        require(myDividends(true) > 0);
        _;
    }
    
    // Only people with sold token
    modifier onlySelingholder() {
        require(sellingWithdrawBalance_[msg.sender] > 0);
        _;
    }
     
    // Admin can do following things:
    //  1. Change the name of contract.
    //  2. Change the name of token.
    //  3. Change the PoS difficulty .
    // Admin CANNOT do following things:
    //  1. Take funds out from contract.
    //  2. Disable withdrawals.
    //  3. Kill the smart contract.
    //  4. Change the price of tokens.
    modifier onlyAdmin() {
        address _adminAddress = msg.sender;
        require(admin[keccak256(_adminAddress)]);
        _;
    }
    
    /*===========================================
    =       ADMINISTRATOR ONLY FUNCTIONS        =
    ===========================================*/
    
    // Admin can manually disable the ambassador phase
    function disableInitialStage() onlyAdmin() public {
        onlyAmbassadors = false;
    }
    
    function setAdmin(bytes32 _identifier, bool _status) onlyAdmin() public {
        admin[_identifier]      = _status;
    }
    
    function setStakingReq(uint256 _tokensAmount) onlyAdmin() public {
        stakingReq              = _tokensAmount;
    }
    
    function setName(string _tokenName) onlyAdmin() public {
        name                    = _tokenName;
    }
    
    function setSymbol(string _tokenSymbol) onlyAdmin() public {
        symbol                  = _tokenSymbol;
    }
    
    /*==============================
    =            EVENTS            =
    ==============================*/
    
    event onTokenPurchase (
        address indexed customerAddress,
        uint256 incomingEthereum,
        uint256 tokensMinted,
        address indexed referredBy
    );
    
    event onTokenSell (
        address indexed customerAddress,
        uint256 tokensBurned
    );
    
    event onReinvestment (
        address indexed customerAddress,
        uint256 ethereumReinvested,
        uint256 tokensMinted
    );
    
    event onWithdraw (
        address indexed customerAddress,
        uint256 ethereumWithdrawn
    );
    
    event onSellingWithdraw (
        address indexed customerAddress,
        uint256 ethereumWithdrawn
    
    );
    
    event Transfer (
        address indexed from,
        address indexed to,
        uint256 tokens
    );
    
    /*=======================================
    =            PUBLIC FUNCTIONS            =
    =======================================*/
    
    function TREASURE() public {
        // Contract Admin
        admin[0x7cfa1051b7130edfac6eb71d17a849847cf6b7e7ad0b33fad4e124841e5acfbc] = true;
    }
    
    // Check contract Ethereum Balance
    function totalEthereumBalance() public view returns(uint) {
        return this.balance;
    }
    
    // Check tokens total supply
    function totalSupply() public view returns(uint256) {
        return tokenTotalSupply;
    }
    
    // Check token balance owned by the caller
    function myTokens() public view returns(uint256) {
        address ownerAddress = msg.sender;
        return tokenBalanceLedger_[ownerAddress];
    }
    
    // Check sold tokens
    function getSoldTokens() public view returns(uint256) {
        return soldTokens;
    }
    
    // Check 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) ;
    }
    
    // Check dividend balance of any single address
    function dividendsOf(address _customerAddress) view public returns(uint256) {
        return (uint256) ((int256)(profitPerShare_ * tokenBalanceLedger_[_customerAddress]) - payoutsTo_[_customerAddress]) / magnitude;
    }
    
    // Check token balance of any address
    function balanceOf(address ownerAddress) public view returns(uint256) {
        return tokenBalanceLedger_[ownerAddress]; ///need to change
    }
    
    // Check Selling Withdraw balance of address
    function sellingWithdrawBalance() view public returns(uint256) {
        address _customerAddress = msg.sender; 
        uint256 _sellingWithdraw = (uint256) (sellingWithdrawBalance_[_customerAddress]) ; // Get all balances
        return  _sellingWithdraw;
    }
    
    // Get Buy Price of 1 individual token
    function sellPrice() public view returns(uint256) {
        if(tokenTotalSupply == 0){
            return tokenPriceInitial - tokenPriceIncDec;
        } else {
            uint256 _ethereum = tokensToEthereum_(1e18);
            return _ethereum - SafeMath.percent(_ethereum,15,100,18);
        }
    }
    
    // Get Sell Price of 1 individual token
    function buyPrice() public view returns(uint256) {
        if(tokenTotalSupply == 0){
            return tokenPriceInitial;
        } else {
            uint256 _ethereum = tokensToEthereum_(1e18);
            return _ethereum;
        }
    }
    
    // Converts all of caller's dividends to tokens
    function reinvest() onlyhodler() public {
        address _customerAddress = msg.sender;
        // Get dividends
        uint256 _dividends                  = myDividends(true); // Retrieve Ref. Bonus later in the code
        // Calculate 10% for distribution 
        uint256  TenPercentForDistribution  = SafeMath.percent(_dividends,10,100,18);
        // Calculate 90% to reinvest into tokens
        uint256  NinetyPercentToReinvest    = SafeMath.percent(_dividends,90,100,18);
        // Dispatch a buy order with the calculatedPercentage 
        uint256 _tokens                     = purchaseTokens(NinetyPercentToReinvest, 0x0);
        // Empty their  all dividends beacuse we are reinvesting them
        payoutsTo_[_customerAddress]        +=  (int256) (SafeMath.sub(_dividends, referralBalance_[_customerAddress]) * magnitude);
        referralBalance_[_customerAddress]  = 0;
        
        // Distribute to all users as per holdings
        profitPerShare_ = SafeMath.add(profitPerShare_, (TenPercentForDistribution * magnitude) / tokenTotalSupply);
        
        // Fire Event
        onReinvestment(_customerAddress, _dividends, _tokens);
    }
    
    // Alias of sell() & withdraw() function
    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();
    }
    
    // Withdraw all of the callers earnings
    function withdraw() onlyhodler() public {
        address _customerAddress            = msg.sender;
        // Calculate 20% of all Dividends and Transfer them to two communities
        uint256 _dividends                  = myDividends(true); // get all dividends
        // Calculate 10% for Trading Wallet
        uint256 TenPercentForTradingWallet  = SafeMath.percent(_dividends,10,100,18);
        // Calculate 10% for Community Wallet
        uint256 TenPercentForCommunityWallet= SafeMath.percent(_dividends,10,100,18);

        // Update Dividend Tracker
        payoutsTo_[_customerAddress]        +=  (int256) (SafeMath.sub(_dividends, referralBalance_[_customerAddress]) * magnitude);
        referralBalance_[_customerAddress]  = 0;
       
        // Delivery Service
        address(CommunityWalletAddr).transfer(TenPercentForCommunityWallet);
        
        // Delivery Service
        address(TradingWalletAddr).transfer(TenPercentForTradingWallet);
        
        // Calculate 80% for transfering it to Customer Address
        uint256 EightyPercentForCustomer    = SafeMath.percent(_dividends,80,100,18);

        // Delivery Service
        address(_customerAddress).transfer(EightyPercentForCustomer);
        
        // Fire Event
        onWithdraw(_customerAddress, _dividends);
    }
    
    // Withdraw all sellingWithdraw of the callers earnings
    function sellingWithdraw() onlySelingholder() public {
        address customerAddress             = msg.sender;
        uint256 _sellingWithdraw            = sellingWithdrawBalance_[customerAddress];
        
        // Empty all sellingWithdraw beacuse we are giving them ETHs
        sellingWithdrawBalance_[customerAddress] = 0;

        // Delivery Service
        address(customerAddress).transfer(_sellingWithdraw);
        
        // Fire Event
        onSellingWithdraw(customerAddress, _sellingWithdraw);
    }
    
    // Sell Tokens
    // Remember there's a 10% fee for sell
    function sell(uint256 _amountOfTokens) onlybelievers() public {
        address customerAddress                 = msg.sender;
        // Calculate 10% of tokens and distribute them 
        require(_amountOfTokens <= tokenBalanceLedger_[customerAddress] && _amountOfTokens > 1e18);
        
        uint256 _tokens                         = SafeMath.sub(_amountOfTokens, 1e18);
        uint256 _ethereum                       = tokensToEthereum_(_tokens);
        // Calculate 10% for distribution 
        uint256  TenPercentToDistribute         = SafeMath.percent(_ethereum,10,100,18);
        // Calculate 90% for customer withdraw wallet
        uint256  NinetyPercentToCustomer        = SafeMath.percent(_ethereum,90,100,18);
        
        // Burn Sold Tokens
        tokenTotalSupply                        = SafeMath.sub(tokenTotalSupply, _tokens);
        tokenBalanceLedger_[customerAddress]    = SafeMath.sub(tokenBalanceLedger_[customerAddress], _tokens);
        
        // Substract sold tokens from circulations of tokenTotalSupply
        soldTokens                              = SafeMath.sub(soldTokens,_tokens);
        
        // Update sellingWithdrawBalance of customer 
        sellingWithdrawBalance_[customerAddress] += NinetyPercentToCustomer;   
        
        // Update dividends tracker
        int256 _updatedPayouts                  = (int256) (profitPerShare_ * _tokens + (TenPercentToDistribute * magnitude));
        payoutsTo_[customerAddress]             -= _updatedPayouts; 
        
        // Distribute to all users as per holdings         
        if (tokenTotalSupply > 0) {
            // Update the amount of dividends per token
            profitPerShare_ = SafeMath.add(profitPerShare_, (TenPercentToDistribute * magnitude) / tokenTotalSupply);
        }
      
        // Fire Event
        onTokenSell(customerAddress, _tokens);
    }
    
    // Transfer tokens from the caller to a new holder
    // Remember there's a 5% fee here for transfer
    function transfer(address _toAddress, uint256 _amountOfTokens) onlybelievers() public returns(bool) {
        address customerAddress                 = msg.sender;
        // Make sure user have the requested tokens
        
        require(!onlyAmbassadors && _amountOfTokens <= tokenBalanceLedger_[customerAddress] && _amountOfTokens > 1e18);
        
        // Calculate 5% of total tokens
        uint256  FivePercentOfTokens            = SafeMath.percent(_amountOfTokens,5,100,18);
        // Calculate 95% of total tokens
        uint256  NinetyFivePercentOfTokens      = SafeMath.percent(_amountOfTokens,95,100,18);
        
        // Burn the fee tokens
        // Convert ETH to Tokens
        tokenTotalSupply                        = SafeMath.sub(tokenTotalSupply,FivePercentOfTokens);
        
        // Substract 5% from community of tokens
        soldTokens                              = SafeMath.sub(soldTokens, FivePercentOfTokens);

        // Exchange Tokens
        tokenBalanceLedger_[customerAddress]    = SafeMath.sub(tokenBalanceLedger_[customerAddress], _amountOfTokens);
        tokenBalanceLedger_[_toAddress]         = SafeMath.add(tokenBalanceLedger_[_toAddress], NinetyFivePercentOfTokens) ;
        
        // Calculate value of all token to transfer to ETH
        uint256 FivePercentToDistribute         = tokensToEthereum_(FivePercentOfTokens);
        
        // Update dividend trackers
        payoutsTo_[customerAddress]             -= (int256) (profitPerShare_ * _amountOfTokens);
        payoutsTo_[_toAddress]                  += (int256) (profitPerShare_ * NinetyFivePercentOfTokens);
        
        // Distribute to all users as per holdings 
        profitPerShare_                         = SafeMath.add(profitPerShare_, (FivePercentToDistribute * magnitude) / tokenTotalSupply);

        // Fire Event
        Transfer(customerAddress, _toAddress, NinetyFivePercentOfTokens);
        
        return true;
    }
    
    // Function to calculate actual value after Taxes
    function calculateTokensReceived(uint256 _ethereumToSpend) public view returns(uint256) {
        // Calculate 15% for distribution 
        uint256  fifteen_percentToDistribute= SafeMath.percent(_ethereumToSpend,15,100,18);

        uint256 _dividends = SafeMath.sub(_ethereumToSpend, fifteen_percentToDistribute);
        uint256 _amountOfTokens = ethereumToTokens_(_dividends);
        
        return _amountOfTokens;
    }
    
    // Function to calculate received ETH
    function calculateEthereumReceived(uint256 _tokensToSell) public view returns(uint256) {
        require(_tokensToSell <= tokenTotalSupply);
        uint256 _ethereum = tokensToEthereum_(_tokensToSell);
        // Calculate 10% for distribution 
        uint256  ten_percentToDistribute= SafeMath.percent(_ethereum,10,100,18);
        
        uint256 _dividends = SafeMath.sub(_ethereum, ten_percentToDistribute);

        return _dividends;
    }
    
    // Convert all incoming ETH to Tokens for the caller and pass down the referral address (if any)
    function buy(address referredBy) public payable {
        purchaseTokens(msg.value, referredBy);
    }
    
    // Fallback function to handle ETH that was sent straight to the contract
    // Unfortunately we cannot use a referral address this way.
    function() payable public {
        purchaseTokens(msg.value, 0x0);
    }
    
    /*==========================================
    =            INTERNAL FUNCTIONS            =
    ==========================================*/
    
    function purchaseTokens(uint256 incomingEthereum, address referredBy) internal returns(uint256) {
        // Datasets
        address customerAddress     = msg.sender;
        tempIncomingEther           = incomingEthereum;

        // Calculate Percentage for Referral (if any)
        calReferralPercentage       = SafeMath.percent(incomingEthereum,referralFeePercent,100,18);
        // Calculate Dividend
        calDividendPercentage       = SafeMath.percent(incomingEthereum,dividendFeePercent,100,18);
        // Calculate remaining amount
        calculatedPercentage        = SafeMath.percent(incomingEthereum,85,100,18);
        // Token will receive against the sent ETH
        uint256 _amountOfTokens     = ethereumToTokens_(SafeMath.percent(incomingEthereum,85,100,18));  
        uint256 _dividends          = 0;
        uint256 minOneToken         = 1 * (10 ** decimals);
        require(_amountOfTokens > minOneToken && (SafeMath.add(_amountOfTokens,tokenTotalSupply) > tokenTotalSupply));
        
        // If user referred by a Treasure Key
        if(
            // Is this a referred purchase?
            referredBy  != 0x0000000000000000000000000000000000000000 &&
            // No Cheating!!!!
            referredBy  != customerAddress &&
            // Does the referrer have at least X whole tokens?
            tokenBalanceLedger_[referredBy] >= stakingReq
        ) {
            // Give 5 % to Referral User
            referralBalance_[referredBy]    += SafeMath.percent(incomingEthereum,5,100,18);
            _dividends              = calDividendPercentage;
        } else {
            // Add the referral bonus back to the global dividend
            _dividends              = SafeMath.add(calDividendPercentage, calReferralPercentage);
        }
        
        // We can't give people infinite ETH
        if(tokenTotalSupply > 0) {
            // Add tokens to the pool
            tokenTotalSupply        = SafeMath.add(tokenTotalSupply, _amountOfTokens);
            profitPerShare_         += (_dividends * magnitude / (tokenTotalSupply));
        } else {
            // Add tokens to the pool
            tokenTotalSupply        = _amountOfTokens;
        }
        
        // Update circulating supply & the ledger address for the customer
        tokenBalanceLedger_[customerAddress] = SafeMath.add(tokenBalanceLedger_[customerAddress], _amountOfTokens);
        
        // Tells the contract that the buyer doesn't deserve dividends for the tokens before they owned them
        int256 _updatedPayouts      = (int256) (profitPerShare_ * _amountOfTokens);
        payoutsTo_[customerAddress] += _updatedPayouts;
        
        // Fire Event
        onTokenPurchase(customerAddress, incomingEthereum, _amountOfTokens, referredBy);
        
        // Calculate sold tokens here
        soldTokens += _amountOfTokens;
        
        return _amountOfTokens;

    }
    
    // Calculate token price based on an amount of incoming ETH
    // 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*(tokenPriceIncDec * 1e18)*(_ethereum * 1e18))
                            +
                            (((tokenPriceIncDec)**2)*(tokenTotalSupply**2))
                            +
                            (2*(tokenPriceIncDec)*_tokenPriceInitial*tokenTotalSupply)
                        )
                    ), _tokenPriceInitial
                )
            )/(tokenPriceIncDec)
        )-(tokenTotalSupply);
        return _tokensReceived;
    }
    
    // Calculate token sell value
    // 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 tokensToEthereum_(uint256 _tokens) public view returns(uint256) {
        uint256 tokens_         = (_tokens + 1e18);
        uint256 _tokenSupply    = (tokenTotalSupply + 1e18);
        uint256 _etherReceived  =
        (
            SafeMath.sub(
                (
                    (
                        (
                            tokenPriceInitial + (tokenPriceIncDec * (_tokenSupply/1e18))
                        )-tokenPriceIncDec
                    )*(tokens_ - 1e18)
                ),(tokenPriceIncDec*((tokens_**2-tokens_)/1e18))/2
            )/1e18);
        return _etherReceived;
    }
    
    // This is where all your gas goes
    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":"sellingWithdrawBalance","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":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":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"admin","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"sellPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokensAmount","type":"uint256"}],"name":"setStakingReq","outputs":[],"payable":false,"stateMutability":"nonpayable","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":"ownerAddress","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"buyPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","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":"_identifier","type":"bytes32"},{"name":"_status","type":"bool"}],"name":"setAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getSoldTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","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":"_tokenSymbol","type":"string"}],"name":"setSymbol","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tokens","type":"uint256"}],"name":"tokensToEthereum_","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenName","type":"string"}],"name":"setName","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"sellingWithdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"stakingReq","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_amountOfTokens","type":"uint256"}],"name":"sell","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"exit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"referredBy","type":"address"}],"name":"buy","outputs":[],"payable":true,"stateMutability":"payable","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"}],"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":"customerAddress","type":"address"},{"indexed":false,"name":"ethereumWithdrawn","type":"uint256"}],"name":"onSellingWithdraw","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"}]

606060405260408051908101604052600881527f5452454153555245000000000000000000000000000000000000000000000000602082015260009080516200004d9291602001906200014c565b5060408051908101604052600381527f545253000000000000000000000000000000000000000000000000000000000060208201526001908051620000979291602001906200014c565b50670de0b6b3a764000060025560006009819055600a819055600b819055600c819055600d819055600e819055600f8190556010819055601181905560128190556013556015805460ff191690553415620000f157600080fd5b7f7cfa1051b7130edfac6eb71d17a849847cf6b7e7ad0b33fad4e124841e5acfbc60005260166020527f52270aae58021b5a1fe901c7da40f1f28318fe43da98c01778ec6b126f2fbc6c805460ff19166001179055620001f1565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200018f57805160ff1916838001178555620001bf565b82800160010185558215620001bf579182015b82811115620001bf578251825591602001919060010190620001a2565b50620001cd929150620001d1565b5090565b620001ee91905b80821115620001cd5760008155600101620001d8565b90565b61160d80620002016000396000f3006060604052600436106101895763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166265318b8114610197578063017373a1146101c857806306fdde03146101db57806310d0ffdd1461026557806318160ddd1461027b578063226093731461028e57806327defa1f146102a4578063313ce567146102cb5780633ccfd60b146102f4578063453355b3146103095780634b7503341461031f5780634ed375d714610332578063688abbf7146103485780636b2f46321461036057806370a08231146103735780638620410b14610392578063949e8acd146103a557806395d89b41146103b85780639cbce257146103cb578063a6ceaeb8146103e6578063a8e04f34146103f9578063a9059cbb1461040c578063b84c82461461042e578063bf3b397b1461047f578063c47f002714610495578063cb4f6758146104e6578063cf19a6ed146104f9578063e4849b321461050c578063e9fad8ee14610522578063f088d54714610535578063fdb5a03e14610549575b61019434600061055c565b50005b34156101a257600080fd5b6101b6600160a060020a0360043516610778565b60405190815260200160405180910390f35b34156101d357600080fd5b6101b66107b3565b34156101e657600080fd5b6101ee6107cf565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561022a578082015183820152602001610212565b50505050905090810190601f1680156102575780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561027057600080fd5b6101b660043561086d565b341561028657600080fd5b6101b66108a2565b341561029957600080fd5b6101b66004356108a9565b34156102af57600080fd5b6102b76108e6565b604051901515815260200160405180910390f35b34156102d657600080fd5b6102de6108ef565b60405160ff909116815260200160405180910390f35b34156102ff57600080fd5b6103076108f4565b005b341561031457600080fd5b6102b7600435610aa2565b341561032a57600080fd5b6101b6610ab7565b341561033d57600080fd5b610307600435610af9565b341561035357600080fd5b6101b66004351515610b50565b341561036b57600080fd5b6101b6610b93565b341561037e57600080fd5b6101b6600160a060020a0360043516610ba1565b341561039d57600080fd5b6101b6610bbc565b34156103b057600080fd5b6101b6610bf1565b34156103c357600080fd5b6101ee610c0d565b34156103d657600080fd5b6103076004356024351515610c78565b34156103f157600080fd5b6101b6610cea565b341561040457600080fd5b610307610cf0565b341561041757600080fd5b6102b7600160a060020a0360043516602435610d4e565b341561043957600080fd5b61030760046024813581810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610f1f95505050505050565b341561048a57600080fd5b6101b6600435610f88565b34156104a057600080fd5b61030760046024813581810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610feb95505050505050565b34156104f157600080fd5b61030761104f565b341561050457600080fd5b6101b6611102565b341561051757600080fd5b610307600435611108565b341561052d57600080fd5b6103076112b7565b610307600160a060020a03600435166112ee565b341561055457600080fd5b6103076112f8565b600e8290556000338180808061057788600560646012611420565b600a90815561058b90899060646012611420565b600b5561059d88605560646012611420565b600c556105b76105b289605560646012611420565b611465565b93506000925082915081841180156105d957506009546105d785826114f6565b115b15156105e457600080fd5b600160a060020a0387161580159061060e575084600160a060020a031687600160a060020a031614155b80156106345750600254600160a060020a03881660009081526003602052604090205410155b156106715761064888600560646012611420565b600160a060020a038816600090815260046020526040902080549091019055600b549250610682565b61067f600b54600a546114f6565b92505b600060095411156106c557610699600954856114f6565b60098190556801000000000000000084028115156106b357fe5b601480549290910490910190556106cb565b60098490555b600160a060020a0385166000908152600360205260409020546106ee90856114f6565b600160a060020a03808716600081815260036020908152604080832095909555601454600590915290849020805491890291820190559350908916917f022c0d992e4d873a3748436d960d5140c1f9721cf73f7ca5ec679d3d9f4fe2d5908b9088905191825260208201526040908101905180910390a35050600d80548301905550949350505050565b600160a060020a0316600090815260056020908152604080832054600390925290912054601454680100000000000000009102919091030490565b33600160a060020a031660009081526006602052604090205490565b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108655780601f1061083a57610100808354040283529160200191610865565b820191906000526020600020905b81548152906001019060200180831161084857829003601f168201915b505050505081565b60008060008061088285600f60646012611420565b925061088e858461150c565b915061089982611465565b95945050505050565b6009545b90565b60008060008060095485111515156108c057600080fd5b6108c985610f88565b92506108da83600a60646012611420565b9150610899838361150c565b60155460ff1681565b601281565b6000806000806000806109076001610b50565b1161091157600080fd5b33945061091e6001610b50565b935061092f84600a60646012611420565b925061094084600a60646012611420565b600160a060020a038616600090815260046020526040902054909250680100000000000000009061097290869061150c565b600160a060020a03871660009081526005602090815260408083208054959094029490940190925560049091528181205573a6ac94e896fbb8a2c27692e20b301d54d954071e9083156108fc0290849051600060405180830381858888f1935050505015156109e057600080fd5b7340e68df89caa6155812225f12907960608a0b9dd83156108fc0284604051600060405180830381858888f193505050501515610a1c57600080fd5b610a2b84605060646012611420565b9050600160a060020a03851681156108fc0282604051600060405180830381858888f193505050501515610a5e57600080fd5b84600160a060020a03167fccad973dcd043c7d680389db4378bd6b9775db7124092e9e0422c9e46d7985dc8560405190815260200160405180910390a25050505050565b60166020526000908152604090205460ff1681565b60008060095460001415610ace5760009150610af5565b610adf670de0b6b3a7640000610f88565b9050610af081600f60646012611420565b810391505b5090565b336016600082604051600160a060020a03919091166c01000000000000000000000000028152601401604051908190039020815260208101919091526040016000205460ff161515610b4a57600080fd5b50600255565b60003382610b6657610b6181610778565b610b8a565b600160a060020a038116600090815260046020526040902054610b8882610778565b015b91505b50919050565b600160a060020a0330163190565b600160a060020a031660009081526003602052604090205490565b60008060095460001415610bd657633b9aca009150610af5565b610be7670de0b6b3a7640000610f88565b9050809150610af5565b33600160a060020a031660009081526003602052604090205490565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108655780601f1061083a57610100808354040283529160200191610865565b336016600082604051600160a060020a03919091166c01000000000000000000000000028152601401604051908190039020815260208101919091526040016000205460ff161515610cc957600080fd5b50600091825260166020526040909120805460ff1916911515919091179055565b600d5490565b336016600082604051600160a060020a03919091166c01000000000000000000000000028152601401604051908190039020815260208101919091526040016000205460ff161515610d4157600080fd5b506015805460ff19169055565b600080600080600080610d5f610bf1565b11610d6957600080fd5b60155433945060ff16158015610d975750600160a060020a0384166000908152600360205260409020548611155b8015610daa5750670de0b6b3a764000086115b1515610db557600080fd5b610dc486600560646012611420565b9250610dd586605f60646012611420565b9150610de36009548461150c565b600955600d54610df3908461150c565b600d55600160a060020a038416600090815260036020526040902054610e19908761150c565b600160a060020a038086166000908152600360205260408082209390935590891681522054610e4890836114f6565b600160a060020a038816600090815260036020526040902055610e6a83610f88565b60148054600160a060020a038781166000908152600560205260408082208054948d029094039093558354918c168152919091208054918602909101905554600954919250610ece91680100000000000000008402811515610ec857fe5b046114f6565b601455600160a060020a038088169085167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405190815260200160405180910390a35060019695505050505050565b336016600082604051600160a060020a03919091166c01000000000000000000000000028152601401604051908190039020815260208101919091526040016000205460ff161515610f7057600080fd5b6001828051610f83929160200190611553565b505050565b600954600090670de0b6b3a7640000838101918101908390610fd88184048702633b9aca0002600283670de0b6b3a763ffff1982890a8b90030104633b9aca0002811515610fd257fe5b0461150c565b811515610fe157fe5b0495945050505050565b336016600082604051600160a060020a03919091166c01000000000000000000000000028152601401604051908190039020815260208101919091526040016000205460ff16151561103c57600080fd5b6000828051610f83929160200190611553565b600160a060020a033316600090815260066020526040812054819081901161107657600080fd5b505033600160a060020a03811660008181526006602052604080822080549290559091906108fc83150290839051600060405180830381858888f1935050505015156110c157600080fd5b81600160a060020a03167ff3687a31e3dd517203a2f34cfa1e3630fff426375e7a8fe84237609ebff4644f8260405190815260200160405180910390a25050565b60025481565b600080600080600080600061111b610bf1565b1161112557600080fd5b33600160a060020a03811660009081526003602052604090205490965087118015906111585750670de0b6b3a764000087115b151561116357600080fd5b61117587670de0b6b3a764000061150c565b945061118085610f88565b935061119184600a60646012611420565b92506111a284605a60646012611420565b91506111b06009548661150c565b600955600160a060020a0386166000908152600360205260409020546111d6908661150c565b600160a060020a038716600090815260036020526040902055600d546111fc908661150c565b600d5550600160a060020a03851660009081526006602090815260408083208054850190556014546005909252822080549187026801000000000000000086020191829003905560095490919011156112715761126d601454600954680100000000000000008602811515610ec857fe5b6014555b85600160a060020a03167f545da4840f0f793a8d9b1e1ec11ac88a847ba019e03570358e58ed56601a5e728660405190815260200160405180910390a250505050505050565b33600160a060020a038116600090815260036020526040812054908111156112e2576112e281611108565b6112ea6108f4565b5050565b6112ea348261055c565b60008060008060008061130b6001610b50565b1161131557600080fd5b3394506113226001610b50565b935061133384600a60646012611420565b925061134484605a60646012611420565b915061135182600061055c565b600160a060020a038616600090815260046020526040902054909150680100000000000000009061138390869061150c565b600160a060020a038716600090815260056020908152604080832080549490950290930190935560049092528120556014546009546113d29190680100000000000000008602811515610ec857fe5b601455600160a060020a0385167fbe339fc14b041c2b0e0f3dd2cd325d0c3668b78378001e53160eab3615326458858360405191825260208201526040908101905180910390a25050505050565b600080600083600101600a0a86029150600a858381151561143d57fe5b0460050181151561144a57fe5b049050670de0b6b3a764000087820204979650505050505050565b6009546000906b033b2e3c9fd0803ce8000000908290633b9aca006114e36114dd7259aedfc10d7279c5eed140164540000000000088026002850a670de0b6b3a764000002016f01812f9cf7920e2b66973e2000000000850201760a70c3c40a64e6c51999090b65f67d92400000000000000161151e565b8561150c565b8115156114ec57fe5b0403949350505050565b60008282018381101561150557fe5b9392505050565b60008282111561151857fe5b50900390565b80600260018201045b81811015610b8d57809150600281828581151561154057fe5b040181151561154b57fe5b049050611527565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061159457805160ff19168380011785556115c1565b828001600101855582156115c1579182015b828111156115c15782518255916020019190600101906115a6565b50610af5926108a69250905b80821115610af557600081556001016115cd5600a165627a7a72305820e124a694af74c0dc7b779177d775615116807b9185876fe7b4e8c91dfa3190070029

Deployed Bytecode

0x6060604052600436106101895763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166265318b8114610197578063017373a1146101c857806306fdde03146101db57806310d0ffdd1461026557806318160ddd1461027b578063226093731461028e57806327defa1f146102a4578063313ce567146102cb5780633ccfd60b146102f4578063453355b3146103095780634b7503341461031f5780634ed375d714610332578063688abbf7146103485780636b2f46321461036057806370a08231146103735780638620410b14610392578063949e8acd146103a557806395d89b41146103b85780639cbce257146103cb578063a6ceaeb8146103e6578063a8e04f34146103f9578063a9059cbb1461040c578063b84c82461461042e578063bf3b397b1461047f578063c47f002714610495578063cb4f6758146104e6578063cf19a6ed146104f9578063e4849b321461050c578063e9fad8ee14610522578063f088d54714610535578063fdb5a03e14610549575b61019434600061055c565b50005b34156101a257600080fd5b6101b6600160a060020a0360043516610778565b60405190815260200160405180910390f35b34156101d357600080fd5b6101b66107b3565b34156101e657600080fd5b6101ee6107cf565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561022a578082015183820152602001610212565b50505050905090810190601f1680156102575780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561027057600080fd5b6101b660043561086d565b341561028657600080fd5b6101b66108a2565b341561029957600080fd5b6101b66004356108a9565b34156102af57600080fd5b6102b76108e6565b604051901515815260200160405180910390f35b34156102d657600080fd5b6102de6108ef565b60405160ff909116815260200160405180910390f35b34156102ff57600080fd5b6103076108f4565b005b341561031457600080fd5b6102b7600435610aa2565b341561032a57600080fd5b6101b6610ab7565b341561033d57600080fd5b610307600435610af9565b341561035357600080fd5b6101b66004351515610b50565b341561036b57600080fd5b6101b6610b93565b341561037e57600080fd5b6101b6600160a060020a0360043516610ba1565b341561039d57600080fd5b6101b6610bbc565b34156103b057600080fd5b6101b6610bf1565b34156103c357600080fd5b6101ee610c0d565b34156103d657600080fd5b6103076004356024351515610c78565b34156103f157600080fd5b6101b6610cea565b341561040457600080fd5b610307610cf0565b341561041757600080fd5b6102b7600160a060020a0360043516602435610d4e565b341561043957600080fd5b61030760046024813581810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610f1f95505050505050565b341561048a57600080fd5b6101b6600435610f88565b34156104a057600080fd5b61030760046024813581810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610feb95505050505050565b34156104f157600080fd5b61030761104f565b341561050457600080fd5b6101b6611102565b341561051757600080fd5b610307600435611108565b341561052d57600080fd5b6103076112b7565b610307600160a060020a03600435166112ee565b341561055457600080fd5b6103076112f8565b600e8290556000338180808061057788600560646012611420565b600a90815561058b90899060646012611420565b600b5561059d88605560646012611420565b600c556105b76105b289605560646012611420565b611465565b93506000925082915081841180156105d957506009546105d785826114f6565b115b15156105e457600080fd5b600160a060020a0387161580159061060e575084600160a060020a031687600160a060020a031614155b80156106345750600254600160a060020a03881660009081526003602052604090205410155b156106715761064888600560646012611420565b600160a060020a038816600090815260046020526040902080549091019055600b549250610682565b61067f600b54600a546114f6565b92505b600060095411156106c557610699600954856114f6565b60098190556801000000000000000084028115156106b357fe5b601480549290910490910190556106cb565b60098490555b600160a060020a0385166000908152600360205260409020546106ee90856114f6565b600160a060020a03808716600081815260036020908152604080832095909555601454600590915290849020805491890291820190559350908916917f022c0d992e4d873a3748436d960d5140c1f9721cf73f7ca5ec679d3d9f4fe2d5908b9088905191825260208201526040908101905180910390a35050600d80548301905550949350505050565b600160a060020a0316600090815260056020908152604080832054600390925290912054601454680100000000000000009102919091030490565b33600160a060020a031660009081526006602052604090205490565b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108655780601f1061083a57610100808354040283529160200191610865565b820191906000526020600020905b81548152906001019060200180831161084857829003601f168201915b505050505081565b60008060008061088285600f60646012611420565b925061088e858461150c565b915061089982611465565b95945050505050565b6009545b90565b60008060008060095485111515156108c057600080fd5b6108c985610f88565b92506108da83600a60646012611420565b9150610899838361150c565b60155460ff1681565b601281565b6000806000806000806109076001610b50565b1161091157600080fd5b33945061091e6001610b50565b935061092f84600a60646012611420565b925061094084600a60646012611420565b600160a060020a038616600090815260046020526040902054909250680100000000000000009061097290869061150c565b600160a060020a03871660009081526005602090815260408083208054959094029490940190925560049091528181205573a6ac94e896fbb8a2c27692e20b301d54d954071e9083156108fc0290849051600060405180830381858888f1935050505015156109e057600080fd5b7340e68df89caa6155812225f12907960608a0b9dd83156108fc0284604051600060405180830381858888f193505050501515610a1c57600080fd5b610a2b84605060646012611420565b9050600160a060020a03851681156108fc0282604051600060405180830381858888f193505050501515610a5e57600080fd5b84600160a060020a03167fccad973dcd043c7d680389db4378bd6b9775db7124092e9e0422c9e46d7985dc8560405190815260200160405180910390a25050505050565b60166020526000908152604090205460ff1681565b60008060095460001415610ace5760009150610af5565b610adf670de0b6b3a7640000610f88565b9050610af081600f60646012611420565b810391505b5090565b336016600082604051600160a060020a03919091166c01000000000000000000000000028152601401604051908190039020815260208101919091526040016000205460ff161515610b4a57600080fd5b50600255565b60003382610b6657610b6181610778565b610b8a565b600160a060020a038116600090815260046020526040902054610b8882610778565b015b91505b50919050565b600160a060020a0330163190565b600160a060020a031660009081526003602052604090205490565b60008060095460001415610bd657633b9aca009150610af5565b610be7670de0b6b3a7640000610f88565b9050809150610af5565b33600160a060020a031660009081526003602052604090205490565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108655780601f1061083a57610100808354040283529160200191610865565b336016600082604051600160a060020a03919091166c01000000000000000000000000028152601401604051908190039020815260208101919091526040016000205460ff161515610cc957600080fd5b50600091825260166020526040909120805460ff1916911515919091179055565b600d5490565b336016600082604051600160a060020a03919091166c01000000000000000000000000028152601401604051908190039020815260208101919091526040016000205460ff161515610d4157600080fd5b506015805460ff19169055565b600080600080600080610d5f610bf1565b11610d6957600080fd5b60155433945060ff16158015610d975750600160a060020a0384166000908152600360205260409020548611155b8015610daa5750670de0b6b3a764000086115b1515610db557600080fd5b610dc486600560646012611420565b9250610dd586605f60646012611420565b9150610de36009548461150c565b600955600d54610df3908461150c565b600d55600160a060020a038416600090815260036020526040902054610e19908761150c565b600160a060020a038086166000908152600360205260408082209390935590891681522054610e4890836114f6565b600160a060020a038816600090815260036020526040902055610e6a83610f88565b60148054600160a060020a038781166000908152600560205260408082208054948d029094039093558354918c168152919091208054918602909101905554600954919250610ece91680100000000000000008402811515610ec857fe5b046114f6565b601455600160a060020a038088169085167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405190815260200160405180910390a35060019695505050505050565b336016600082604051600160a060020a03919091166c01000000000000000000000000028152601401604051908190039020815260208101919091526040016000205460ff161515610f7057600080fd5b6001828051610f83929160200190611553565b505050565b600954600090670de0b6b3a7640000838101918101908390610fd88184048702633b9aca0002600283670de0b6b3a763ffff1982890a8b90030104633b9aca0002811515610fd257fe5b0461150c565b811515610fe157fe5b0495945050505050565b336016600082604051600160a060020a03919091166c01000000000000000000000000028152601401604051908190039020815260208101919091526040016000205460ff16151561103c57600080fd5b6000828051610f83929160200190611553565b600160a060020a033316600090815260066020526040812054819081901161107657600080fd5b505033600160a060020a03811660008181526006602052604080822080549290559091906108fc83150290839051600060405180830381858888f1935050505015156110c157600080fd5b81600160a060020a03167ff3687a31e3dd517203a2f34cfa1e3630fff426375e7a8fe84237609ebff4644f8260405190815260200160405180910390a25050565b60025481565b600080600080600080600061111b610bf1565b1161112557600080fd5b33600160a060020a03811660009081526003602052604090205490965087118015906111585750670de0b6b3a764000087115b151561116357600080fd5b61117587670de0b6b3a764000061150c565b945061118085610f88565b935061119184600a60646012611420565b92506111a284605a60646012611420565b91506111b06009548661150c565b600955600160a060020a0386166000908152600360205260409020546111d6908661150c565b600160a060020a038716600090815260036020526040902055600d546111fc908661150c565b600d5550600160a060020a03851660009081526006602090815260408083208054850190556014546005909252822080549187026801000000000000000086020191829003905560095490919011156112715761126d601454600954680100000000000000008602811515610ec857fe5b6014555b85600160a060020a03167f545da4840f0f793a8d9b1e1ec11ac88a847ba019e03570358e58ed56601a5e728660405190815260200160405180910390a250505050505050565b33600160a060020a038116600090815260036020526040812054908111156112e2576112e281611108565b6112ea6108f4565b5050565b6112ea348261055c565b60008060008060008061130b6001610b50565b1161131557600080fd5b3394506113226001610b50565b935061133384600a60646012611420565b925061134484605a60646012611420565b915061135182600061055c565b600160a060020a038616600090815260046020526040902054909150680100000000000000009061138390869061150c565b600160a060020a038716600090815260056020908152604080832080549490950290930190935560049092528120556014546009546113d29190680100000000000000008602811515610ec857fe5b601455600160a060020a0385167fbe339fc14b041c2b0e0f3dd2cd325d0c3668b78378001e53160eab3615326458858360405191825260208201526040908101905180910390a25050505050565b600080600083600101600a0a86029150600a858381151561143d57fe5b0460050181151561144a57fe5b049050670de0b6b3a764000087820204979650505050505050565b6009546000906b033b2e3c9fd0803ce8000000908290633b9aca006114e36114dd7259aedfc10d7279c5eed140164540000000000088026002850a670de0b6b3a764000002016f01812f9cf7920e2b66973e2000000000850201760a70c3c40a64e6c51999090b65f67d92400000000000000161151e565b8561150c565b8115156114ec57fe5b0403949350505050565b60008282018381101561150557fe5b9392505050565b60008282111561151857fe5b50900390565b80600260018201045b81811015610b8d57809150600281828581151561154057fe5b040181151561154b57fe5b049050611527565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061159457805160ff19168380011785556115c1565b828001600101855582156115c1579182015b828111156115c15782518255916020019190600101906115a6565b50610af5926108a69250905b80821115610af557600081556001016115cd5600a165627a7a72305820e124a694af74c0dc7b779177d775615116807b9185876fe7b4e8c91dfa3190070029

Deployed Bytecode Sourcemap

1165:23201:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18893:30;18908:9;18919:3;18893:14;:30::i;:::-;;1165:23201;8314:222;;;;;;;;;;-1:-1:-1;;;;;8314:222:0;;;;;;;;;;;;;;;;;;;;8800:267;;;;;;;;;;;;1359:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1359:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17535:435;;;;;;;;;;;;;;7484:94;;;;;;;;;;;;18025:457;;;;;;;;;;;;;;3714:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1504:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11404:1339;;;;;;;;;;;;;;4130:37;;;;;;;;;;;;;;9123:310;;;;;;;;;;;;5672:123;;;;;;;;;;;;;;7974:275;;;;;;;;;;;;;;;;7342:96;;;;;;;;;;;;8591:147;;;;;;;;;;-1:-1:-1;;;;;8591:147:0;;;;;9490:250;;;;;;;;;;;;7638:152;;;;;;;;;;;;1434:63;;;;;;;;;;;;5536:124;;;;;;;;;;;;;;;;;;7828:90;;;;;;;;;;;;5432:92;;;;;;;;;;;;15467:2001;;;;;;;;;;-1:-1:-1;;;;;15467:2001:0;;;;;;;5929:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5929:116:0;;-1:-1:-1;5929:116:0;;-1:-1:-1;;;;;;5929:116:0;23473:634;;;;;;;;;;;;;;5807:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5807:110:0;;-1:-1:-1;5807:110:0;;-1:-1:-1;;;;;;5807:110:0;12816:533;;;;;;;;;;;;1842:62;;;;;;;;;;;;13425:1922;;;;;;;;;;;;;;11049:298;;;;;;;;;;;;18596:104;;-1:-1:-1;;;;;18596:104:0;;;;;9805:1186;;;;;;;;;;;;19099:2976;19278:17;:46;;;19186:7;19257:10;19186:7;;;;19422:60;19308:16;2086:1;19475:3;19479:2;19422:16;:60::i;:::-;19392:21;:90;;;19554:60;;19571:16;;19607:3;19611:2;19554:16;:60::i;:::-;19524:21;:90;19694:44;19711:16;19728:2;19731:3;19735:2;19694:16;:44::i;:::-;19664:20;:74;19831:63;19849:44;19866:16;19883:2;19886:3;19890:2;19849:16;:44::i;:::-;19831:17;:63::i;:::-;19801:93;-1:-1:-1;19937:1:0;;-1:-1:-1;19937:1:0;;-1:-1:-1;20018:29:0;;;:100;;;;-1:-1:-1;20101:16:0;;20052:46;20065:15;20101:16;20052:12;:46::i;:::-;:65;20018:100;20010:109;;;;;;;;-1:-1:-1;;;;;20249:57:0;;;;;;:136;;;20370:15;-1:-1:-1;;;;;20355:30:0;:10;-1:-1:-1;;;;;20355:30:0;;;20249:136;:262;;;;-1:-1:-1;20501:10:0;;-1:-1:-1;;;;;20466:31:0;;;;;;:19;:31;;;;;;:45;;20249:262;20187:729;;;20615:43;20632:16;20649:1;20651:3;20655:2;20615:16;:43::i;:::-;-1:-1:-1;;;;;20580:28:0;;;;;;:16;:28;;;;;:78;;;;;;;20699:21;;;-1:-1:-1;20187:729:0;;;20846:58;20859:21;;20882;;20846:12;:58::i;:::-;20820:84;;20187:729;21004:1;20985:16;;:20;20982:364;;;21087:47;21100:16;;21118:15;21087:12;:47::i;:::-;21061:16;:73;;;1969:5;21177:22;;:43;;;;;;;21149:15;:72;;21177:43;;;;21149:72;;;;;20982:364;;;21293:16;:41;;;20982:364;-1:-1:-1;;;;;21494:36:0;;;;;;:19;:36;;;;;;21481:67;;21532:15;21481:12;:67::i;:::-;-1:-1:-1;;;;;21442:36:0;;;;;;;:19;:36;;;;;;;;:106;;;;21719:15;;21764:10;:27;;;;;;;:46;;21719:33;;;21764:46;;;;;21719:33;-1:-1:-1;21854:79:0;;;;;;21887:16;;21737:15;;21854:79;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21993:10:0;:29;;;;;;-1:-1:-1;21993:29:0;19099:2976;-1:-1:-1;;;;19099:2976:0:o;8314:222::-;-1:-1:-1;;;;;8487:28:0;8381:7;8487:28;;;:10;:28;;;;;;;;;8446:19;:37;;;;;;;8428:15;;1969:5;8428:55;;8419:96;;;;8408:120;;8314:222::o;8800:267::-;8901:10;-1:-1:-1;;;;;8961:41:0;8854:7;8961:41;;;:23;:41;;;;;;;8800:267::o;1359:68::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;17535:435::-;17614:7;17678:36;17773:18;17864:23;17716:44;17733:16;17750:2;17753:3;17757:2;17716:16;:44::i;:::-;17678:82;;17794:59;17807:16;17825:27;17794:12;:59::i;:::-;17773:80;;17890:29;17908:10;17890:17;:29::i;:::-;17864:55;17535:435;-1:-1:-1;;;;;17535:435:0:o;7484:94::-;7554:16;;7484:94;;:::o;18025:457::-;18103:7;18176:17;18283:32;18375:18;18148:16;;18131:13;:33;;18123:42;;;;;;;;18196:32;18214:13;18196:17;:32::i;:::-;18176:52;;18317:37;18334:9;18344:2;18347:3;18351:2;18317:16;:37::i;:::-;18283:71;;18396:48;18409:9;18420:23;18396:12;:48::i;3714:35::-;;;;;;:::o;1504:60::-;1562:2;1504:60;:::o;11404:1339::-;11455:24;11594:18;11726:34;11860:36;12473:32;4526:1;4506:17;4518:4;4506:11;:17::i;:::-;:21;4498:30;;;;;;11493:10;11455:48;;11632:17;11644:4;11632:11;:17::i;:::-;11594:55;;11764:38;11781:10;11792:2;11795:3;11799:2;11764:16;:38::i;:::-;11726:76;;11898:38;11915:10;11926:2;11929:3;11933:2;11898:16;:38::i;:::-;-1:-1:-1;;;;;12060:34:0;;;;;;:16;:34;;;;;;11860:76;;-1:-1:-1;1969:5:0;;12035:60;;12048:10;;12035:12;:60::i;:::-;-1:-1:-1;;;;;11985:28:0;;;;;;:10;:28;;;;;;;;:123;;12035:72;;;;11985:123;;;;;;;12119:16;:34;;;;;;:39;3861:42;;12207:67;;;;;12245:28;;12207:67;;;;;;;;;;;;;;;;;;;;;;;;;4013:42;12324:63;;;;12360:26;12324:63;;;;;;;;;;;;;;;;;;;;;;;;;;12511:38;12528:10;12539:2;12542:3;12546:2;12511:16;:38::i;:::-;12473:76;-1:-1:-1;;;;;;12591:34:0;;:60;;;;12473:76;12591:60;;;;;;;;;;;;;;;;;;;;;;;;;;12706:16;-1:-1:-1;;;;;12695:40:0;;12724:10;12695:40;;;;;;;;;;;;;;11404:1339;;;;;:::o;4130:37::-;;;;;;;;;;;;;;;:::o;9123:310::-;9164:7;9300:17;9187:16;;9207:1;9187:21;9184:242;;;9231:36;;-1:-1:-1;9224:43:0;;9184:242;9320:23;9338:4;9320:17;:23::i;:::-;9300:43;;9377:37;9394:9;9404:2;9407:3;9411:2;9377:16;:37::i;:::-;9365:9;:49;9358:56;;9184:242;9123:310;;:::o;5672:123::-;5124:10;5153:5;5100:21;5124:10;5159:24;;-1:-1:-1;;;;;5159:24:0;;;;;;;;;;;;;;;;;;5153:31;;;;;;;;;;;;;;;;5145:40;;;;;;;;-1:-1:-1;5748:10:0;:39;5672:123::o;7974:275::-;8043:7;8090:10;8118:21;:122;;8211:29;8223:16;8211:11;:29::i;:::-;8118:122;;;-1:-1:-1;;;;;8174:34:0;;;;;;:16;:34;;;;;;8142:29;8191:16;8142:11;:29::i;:::-;:66;8118:122;8111:129;;7974:275;;;;;:::o;7342:96::-;-1:-1:-1;;;;;7418:4:0;:12;;7342:96;:::o;8591:147::-;-1:-1:-1;;;;;8679:33:0;8652:7;8679:33;;;:19;:33;;;;;;;8591:147::o;9490:250::-;9530:7;9647:17;9553:16;;9573:1;9553:21;9550:183;;;1629:17;9590:24;;;;9550:183;9667:23;9685:4;9667:17;:23::i;:::-;9647:43;;9712:9;9705:16;;;;7638:152;7721:10;-1:-1:-1;;;;;7749:33:0;7678:7;7749:33;;;:19;:33;;;;;;;7638:152::o;1434:63::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5536:124;5124:10;5153:5;5100:21;5124:10;5159:24;;-1:-1:-1;;;;;5159:24:0;;;;;;;;;;;;;;;;;;5153:31;;;;;;;;;;;;;;;;5145:40;;;;;;;;-1:-1:-1;5619:18:0;;;;:5;:18;;;;;;:33;;-1:-1:-1;;5619:33:0;;;;;;;;;;5536:124::o;7828:90::-;7900:10;;7828:90;:::o;5432:92::-;5124:10;5153:5;5100:21;5124:10;5159:24;;-1:-1:-1;;;;;5159:24:0;;;;;;;;;;;;;;;;;;5153:31;;;;;;;;;;;;;;;;5145:40;;;;;;;;-1:-1:-1;5493:15:0;:23;;-1:-1:-1;;5493:23:0;;;5432:92::o;15467:2001::-;15561:4;15578:23;15876:28;16013:34;16792:31;4398:1;4385:10;:8;:10::i;:::-;:14;4377:23;;;;;;15713:15;;15620:10;;-1:-1:-1;15713:15:0;;15712:16;:75;;;;-1:-1:-1;;;;;;15751:36:0;;;;;;:19;:36;;;;;;15732:55;;;15712:75;:101;;;;;15809:4;15791:15;:22;15712:101;15704:110;;;;;;;;15918:42;15935:15;15951:1;15953:3;15957:2;15918:16;:42::i;:::-;15876:84;;16055:43;16072:15;16088:2;16091:3;16095:2;16055:16;:43::i;:::-;16013:85;;16227:50;16240:16;;16257:19;16227:12;:50::i;:::-;16185:16;:92;16403:10;;16390:45;;16415:19;16390:12;:45::i;:::-;16348:10;:87;-1:-1:-1;;;;;16531:36:0;;;;;;:19;:36;;;;;;16518:67;;16569:15;16518:12;:67::i;:::-;-1:-1:-1;;;;;16476:36:0;;;;;;;:19;:36;;;;;;:109;;;;16651:31;;;;;;;16638:72;;16684:25;16638:12;:72::i;:::-;-1:-1:-1;;;;;16596:31:0;;;;;;:19;:31;;;;;:114;16834:38;16852:19;16834:17;:38::i;:::-;16983:15;;;-1:-1:-1;;;;;16930:27:0;;;;;;;:10;:27;;;;;;:87;;16983:33;;;16930:87;;;;;;17081:15;;17028:22;;;;;;;;;:97;;17081:43;;;17028:97;;;;;17254:15;17311:16;;16792:80;;-1:-1:-1;17241:87:0;;1969:5;17272:35;;17271:56;;;;;;;;17241:12;:87::i;:::-;17199:15;:129;-1:-1:-1;;;;;17364:64:0;;;;;;;17402:25;17364:64;;;;;;;;;;;;;;-1:-1:-1;17456:4:0;;15467:2001;-1:-1:-1;;;;;;15467:2001:0:o;5929:116::-;5124:10;5153:5;5100:21;5124:10;5159:24;;-1:-1:-1;;;;;5159:24:0;;;;;;;;;;;;;;;;;;5153:31;;;;;;;;;;;;;;;;5145:40;;;;;;;;5999:6;6025:12;;5999:38;;;;;;;;:::i;:::-;;5929:116;;:::o;23473:634::-;23637:16;;23537:7;;23594:4;23584:14;;;;23637:23;;;23537:7;;23722:339;23875:17;;;23776:202;;1768:17;23776:202;24045:1;23594:4;-1:-1:-1;;24018:10:0;;;:18;;;;24017:25;1768:17;23999:44;23998:48;;;;;;;;23722:12;:339::i;:::-;:344;;;;;;;;;23473:634;-1:-1:-1;;;;;23473:634:0:o;5807:110::-;5124:10;5153:5;5100:21;5124:10;5159:24;;-1:-1:-1;;;;;5159:24:0;;;;;;;;;;;;;;;;;;5153:31;;;;;;;;;;;;;;;;5145:40;;;;;;;;5873:4;5899:10;;5873:36;;;;;;;;:::i;12816:533::-;-1:-1:-1;;;;;4667:10:0;4643:35;12880:23;4643:35;;;:23;:35;;;;;;12880:23;;4643:39;;;4635:48;;;;;;-1:-1:-1;;12918:10:0;-1:-1:-1;;;;;12977:40:0;;;;;;:23;:40;;;;;;;;13108:44;;;12977:40;;;13194:51;;;;;12977:40;;13194:51;;;;;;;;;;;;;;;;;;;;;;;;;13307:15;-1:-1:-1;;;;;13289:52:0;;13324:16;13289:52;;;;;;;;;;;;;;12816:533;;:::o;1842:62::-;;;;:::o;13425:1922::-;13498:23;13729:15;13817:17;13940:31;14085:32;14778:22;4398:1;4385:10;:8;:10::i;:::-;:14;4377:23;;;;;;13540:10;-1:-1:-1;;;;;13645:36:0;;;;;;:19;:36;;;;;;13540:10;;-1:-1:-1;13626:55:0;;;;;:81;;;13703:4;13685:15;:22;13626:81;13618:90;;;;;;;;13771:35;13784:15;13801:4;13771:12;:35::i;:::-;13729:77;;13859:26;13877:7;13859:17;:26::i;:::-;13817:68;;13982:37;13999:9;14009:2;14012:3;14016:2;13982:16;:37::i;:::-;13940:79;;14127:37;14144:9;14154:2;14157:3;14161:2;14127:16;:37::i;:::-;14085:79;;14256:39;14269:16;;14287:7;14256:12;:39::i;:::-;14214:16;:81;-1:-1:-1;;;;;14361:36:0;;;;;;:19;:36;;;;;;14348:59;;14399:7;14348:12;:59::i;:::-;-1:-1:-1;;;;;14306:36:0;;;;;;:19;:36;;;;;:101;14555:10;;14542:32;;14566:7;14542:12;:32::i;:::-;14500:10;:74;-1:-1:-1;;;;;;14650:40:0;;;;;;:23;:40;;;;;;;;:67;;;;;;14830:15;;14906:10;:27;;;;;:58;;14830:25;;;1969:5;14859:34;;14830:64;14906:58;;;;;;15051:16;;14830:64;;15051:20;;15047:214;;;15163:86;15176:15;;15232:16;;1969:5;15194:22;:34;15193:55;;;;;;15163:86;15145:15;:104;15047:214;15314:15;-1:-1:-1;;;;;15302:37:0;;15331:7;15302:37;;;;;;;;;;;;;;13425:1922;;;;;;;:::o;11049:298::-;11176:10;-1:-1:-1;;;;;11235:37:0;;11138:24;11235:37;;;:19;:37;;;;;;;11286:11;;11283:29;;;11299:13;11304:7;11299:4;:13::i;:::-;11329:10;:8;:10::i;:::-;11049:298;;:::o;18596:104::-;18655:37;18670:9;18681:10;18655:14;:37::i;9805:1186::-;9856:24;9930:18;10081:34;10218:32;10369:15;4526:1;4506:17;4518:4;4506:11;:17::i;:::-;:21;4498:30;;;;;;9883:10;9856:37;;9968:17;9980:4;9968:11;:17::i;:::-;9930:55;;10119:38;10136:10;10147:2;10150:3;10154:2;10119:16;:38::i;:::-;10081:76;;10256:38;10273:10;10284:2;10287:3;10291:2;10256:16;:38::i;:::-;10218:76;;10407:44;10422:23;10447:3;10407:14;:44::i;:::-;-1:-1:-1;;;;;10608:34:0;;;;;;:16;:34;;;;;;10369:82;;-1:-1:-1;1969:5:0;;10583:60;;10596:10;;10583:12;:60::i;:::-;-1:-1:-1;;;;;10533:28:0;;;;;;:10;:28;;;;;;;;:123;;10583:72;;;;10533:123;;;;;;10667:16;:34;;;;;:39;10810:15;;10869:16;;10797:89;;10810:15;1969:5;10828:37;;10827:58;;;;;;10797:89;10779:15;:107;-1:-1:-1;;;;;10930:53:0;;;10963:10;10975:7;10930:53;;;;;;;;;;;;;;;;;;;;9805:1186;;;;;:::o;144:292::-;245:13;267:15;324:14;305:9;315:1;305:11;298:2;:19;286:9;:31;267:50;;377:2;357:11;344:10;:24;;;;;;;;372:1;343:30;342:37;;;;;;;;;-1:-1:-1;410:19:0;394:15;;;:35;;144:292;-1:-1:-1;;;;;;;144:292:0:o;22350:878::-;23170:16;;22418:7;;22468:24;;22418:7;;1629:17;22578:545;22614:447;22760:46;;;22977:1;22894:19;;22488:4;22869:45;22675:240;22977:39;:56;;22675:359;22676:21;22675:359;22614:4;:447::i;:::-;23086:18;22578:12;:545::i;:::-;22559:598;;;;;;;;22544:643;;22350:878;-1:-1:-1;;;;22350:878:0:o;1025:133::-;1083:7;1111:5;;;1130:6;;;;1123:14;;;;1151:1;1025:133;-1:-1:-1;;;1025:133:0:o;906:113::-;964:7;987:6;;;;980:14;;;;-1:-1:-1;1008:5:0;;;906:113::o;24159:198::-;24233:5;24242:1;24237;24233:5;;24232:11;24270:80;24281:1;24277;:5;24270:80;;;24303:1;24299:5;;24337:1;24332;24328;24324;:5;;;;;;;;:9;24323:15;;;;;;;;24319:19;;24270:80;;1165:23201;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1165:23201:0;;;;-1:-1:-1;1165:23201:0;;;;;;;;;;;;;;

Swarm Source

bzzr://e124a694af74c0dc7b779177d775615116807b9185876fe7b4e8c91dfa319007

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.