Overview
ETH Balance
2.954337773147288155 ETH
Eth Value
$10,263.38 (@ $3,474.00/ETH)Token Holdings
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 220 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Pay Fund | 15765177 | 637 days ago | IN | 0 ETH | 0.00043535 | ||||
Transfer | 15765145 | 637 days ago | IN | 0 ETH | 0.00117045 | ||||
Transfer | 15765062 | 637 days ago | IN | 0.0000001 ETH | 0.00026035 | ||||
Buy | 15764804 | 637 days ago | IN | 0.0001 ETH | 0.00102499 | ||||
Sell | 15764753 | 637 days ago | IN | 0 ETH | 0.00030187 | ||||
Exit | 15764728 | 637 days ago | IN | 0 ETH | 0.00081551 | ||||
Sell | 15764719 | 637 days ago | IN | 0 ETH | 0.00061768 | ||||
Reinvest | 15764712 | 637 days ago | IN | 0 ETH | 0.00034814 | ||||
Transfer | 15764655 | 637 days ago | IN | 0 ETH | 0.00104156 | ||||
Set Symbol | 15764557 | 637 days ago | IN | 0 ETH | 0.00037242 | ||||
Set Staking Requ... | 15764554 | 637 days ago | IN | 0 ETH | 0.00030651 | ||||
Pay Fund | 15764370 | 638 days ago | IN | 0 ETH | 0.00054804 | ||||
Withdraw | 15764343 | 638 days ago | IN | 0 ETH | 0.00060096 | ||||
Buy | 15764310 | 638 days ago | IN | 0.002 ETH | 0.00104822 | ||||
Pay Fund | 15763993 | 638 days ago | IN | 0 ETH | 0.00048871 | ||||
Withdraw | 15763979 | 638 days ago | IN | 0 ETH | 0.0005006 | ||||
Sell | 15763959 | 638 days ago | IN | 0 ETH | 0.00061933 | ||||
Buy | 15763954 | 638 days ago | IN | 0.001 ETH | 0.0011394 | ||||
Sell | 15763770 | 638 days ago | IN | 0 ETH | 0.00060098 | ||||
Withdraw | 15763732 | 638 days ago | IN | 0 ETH | 0.00055946 | ||||
Pay Fund | 15763699 | 638 days ago | IN | 0.0001 ETH | 0.00056149 | ||||
Buy | 15763680 | 638 days ago | IN | 0.000001 ETH | 0.00118715 | ||||
Exit | 15763646 | 638 days ago | IN | 0 ETH | 0.00047205 | ||||
Pay Fund | 15763644 | 638 days ago | IN | 0.00001 ETH | 0.00037072 | ||||
Set Can Accept T... | 15763640 | 638 days ago | IN | 0 ETH | 0.00034823 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
15765177 | 637 days ago | 0.00015913 ETH | ||||
15765145 | 637 days ago | 0.00000103 ETH | ||||
15764728 | 637 days ago | 0.00115726 ETH | ||||
15764370 | 638 days ago | 0.0002 ETH | ||||
15764343 | 638 days ago | 0.0001522 ETH | ||||
15763993 | 638 days ago | 0.00017482 ETH | ||||
15763979 | 638 days ago | 0.00061733 ETH | ||||
15763732 | 638 days ago | 0 ETH | ||||
15763699 | 638 days ago | 0.0000001 ETH | ||||
15761463 | 638 days ago | 0.00000717 ETH | ||||
15761426 | 638 days ago | 0.00005378 ETH | ||||
15760315 | 638 days ago | 0.0000024 ETH | ||||
15760302 | 638 days ago | 0.00002524 ETH | ||||
15759958 | 638 days ago | 0.00011629 ETH | ||||
15756342 | 639 days ago | 0.00000189 ETH | ||||
15756337 | 639 days ago | 0.00001 ETH | ||||
15756325 | 639 days ago | 0.00000103 ETH | ||||
15756318 | 639 days ago | 0.00001 ETH | ||||
15755943 | 639 days ago | 0.0000002 ETH | ||||
15755934 | 639 days ago | 0.0000015 ETH | ||||
15755736 | 639 days ago | 0.01922214 ETH | ||||
15755704 | 639 days ago | 0.00000023 ETH | ||||
15755636 | 639 days ago | 0.00003151 ETH | ||||
15755233 | 639 days ago | 0.0000032 ETH | ||||
15755030 | 639 days ago | 0.0000597 ETH |
Loading...
Loading
Contract Name:
CryptoSurge
Compiler Version
v0.4.21+commit.dfe3193c
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2019-10-04 */ pragma solidity ^0.4.21; /**Decentralized Immutable & Unstoppable Ethereum Staking Smart Contract. THE NEXT BIG THING! * Definition of contract accepting CST tokens * Games, casinos, anything can reuse this contract to support CST tokens */ contract AcceptsCryptoSurge { CryptoSurge public tokenContract; function AcceptsCryptoSurg(address _tokenContract) public { tokenContract = CryptoSurge(_tokenContract); } modifier onlyTokenContract { require(msg.sender == address(tokenContract)); _; } /** * @dev Standard ERC677 function that will handle incoming token transfers. * * @param _from Token sender address. * @param _value Amount of tokens. * @param _data Transaction metadata. */ function tokenFallback(address _from, uint256 _value, bytes _data) external returns (bool); } contract CryptoSurge { /*================================= = MODIFIERS = =================================*/ // only people with tokens modifier onlyBagholders() { require(myTokens() > 0); _; } // only people with profits modifier onlyStronghands() { require(myDividends(true) > 0); _; } modifier notContract() { require (msg.sender == tx.origin); _; } // administrators can: // -> change the name of the contract // -> change the name of the token // -> change the PoS difficulty (How many tokens it costs to hold a masternode, in case it gets crazy high later) // they CANNOT: // -> take funds // -> disable withdrawals // -> kill the contract // -> change the price of tokens modifier onlyAdministrator(){ address _customerAddress = msg.sender; require(administrators[_customerAddress]); _; } uint ACTIVATION_TIME = 1537743500; // ensures that the first tokens in the contract will be equally distributed // meaning, no divine dump will be ever possible // result: healthy longevity. modifier antiEarlyWhale(uint256 _amountOfEthereum){ address _customerAddress = msg.sender; if (now >= ACTIVATION_TIME) { onlyAmbassadors = false; } // are we still in the vulnerable phase? // if so, enact anti early whale protocol 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); // execute _; } 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 ); // ERC20 event Transfer( address indexed from, address indexed to, uint256 tokens ); /*===================================== = CONFIGURABLES = =====================================*/ string public name = "CRYPTO SURGE"; string public symbol = "CST"; uint8 constant public decimals = 18; uint8 constant internal dividendFee_ = 15; // 10% dividend fee on each buy and sell uint8 constant internal fundFee_ = 10; // 10% investment fund fee on each buy and sell (FUND CRYPTO GAMES) uint256 constant internal tokenPriceInitial_ = 0.0000001 ether; uint256 constant internal tokenPriceIncremental_ = 0.00000001 ether; uint256 constant internal magnitude = 2**64; // Address to send // crypto games Fund address constant public giveEthFundAddress = 0x64Ac3D88DFEbf351A49ae34EF52009da5F4EeFbd; uint256 public totalEthFundRecieved; // uint256 public totalEthFundCollected; // // proof of stake (defaults at 100 tokens) uint256 public stakingRequirement = 25e18; // ambassador program mapping(address => bool) internal ambassadors_; uint256 constant internal ambassadorMaxPurchase_ = 1 ether; uint256 constant internal ambassadorQuota_ = 2 ether; /*================================ = 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 ambassadorAccumulatedQuota_; uint256 internal tokenSupply_ = 0; uint256 internal profitPerShare_; // administrator list (see above on what they can do) mapping(address => bool) public administrators; // when this is set to true, only ambassadors can purchase tokens (this prevents a whale premine, it ensures a fairly distributed upper pyramid) bool public onlyAmbassadors = false; mapping(address => bool) public canAcceptTokens_; mapping(address => address) public stickyRef; /*======================================= = PUBLIC FUNCTIONS = =======================================*/ /* * -- APPLICATION ENTRY POINTS -- */ function CryptoSurge() public { // add administrators here administrators[0xC5676f1EE6421A0458cC1F955a5e0100adEb01D3] = true; // add the ambassadors here - Tokens will be distributed to these addresses from main premine ambassadors_[0x0000000000000000000000000000000000000000] = true; } /** * Converts all incoming ethereum to tokens for the caller, and passes down the referral addy (if any) */ function buy(address _referredBy) public payable returns(uint256) { require(tx.gasprice <= 0.05 szabo); purchaseTokens(msg.value, _referredBy); } /** * Fallback function to handle ethereum that was send straight to the contract * Unfortunately we cannot use a referral address this way. */ function() public payable { } /** * Sends FUND money to the 70/30 Contract */ function payFund() payable public { uint256 ethToPay = SafeMath.sub(totalEthFundCollected, totalEthFundRecieved); require(ethToPay > 1); totalEthFundRecieved = SafeMath.add(totalEthFundRecieved, ethToPay); if(!giveEthFundAddress.call.value(ethToPay).gas(400000)()) { totalEthFundRecieved = SafeMath.sub(totalEthFundRecieved, ethToPay); } } /** * Converts all of caller's dividends to tokens. */ function reinvest() onlyStronghands() 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); // lambo delivery service withdraw(); } /** * Withdraws all of the callers earnings. */ function withdraw() onlyStronghands() 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; // lambo delivery service _customerAddress.transfer(_dividends); // fire event onWithdraw(_customerAddress, _dividends); } /** * Liquifies tokens to ethereum. */ function sell(uint256 _amountOfTokens) onlyBagholders() public { // setup data address _customerAddress = msg.sender; // russian hackers BTFO require(_amountOfTokens <= tokenBalanceLedger_[_customerAddress]); uint256 _tokens = _amountOfTokens; uint256 _ethereum = tokensToEthereum_(_tokens); uint256 _dividends = SafeMath.div(SafeMath.mul(_ethereum, dividendFee_), 100); uint256 _fundPayout = SafeMath.div(SafeMath.mul(_ethereum, fundFee_), 100); uint256 _refPayout = _dividends / 3; _dividends = SafeMath.sub(_dividends, _refPayout); (_dividends,) = handleRef(stickyRef[msg.sender], _refPayout, _dividends, 0); // Take out dividends and then _fundPayout uint256 _taxedEthereum = SafeMath.sub(SafeMath.sub(_ethereum, _dividends), _fundPayout); // Add ethereum to send to fund totalEthFundCollected = SafeMath.add(totalEthFundCollected, _fundPayout); // 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 THIS IS 0% TRANSFER FEE */ function transfer(address _toAddress, uint256 _amountOfTokens) onlyBagholders() public returns(bool) { // setup address _customerAddress = msg.sender; // make sure we have the requested tokens // also disables transfers until ambassador phase is over // ( we dont want whale premines ) require(_amountOfTokens <= tokenBalanceLedger_[_customerAddress]); // withdraw all outstanding dividends first if(myDividends(true) > 0) withdraw(); // exchange tokens tokenBalanceLedger_[_customerAddress] = SafeMath.sub(tokenBalanceLedger_[_customerAddress], _amountOfTokens); tokenBalanceLedger_[_toAddress] = SafeMath.add(tokenBalanceLedger_[_toAddress], _amountOfTokens); // update dividend trackers payoutsTo_[_customerAddress] -= (int256) (profitPerShare_ * _amountOfTokens); payoutsTo_[_toAddress] += (int256) (profitPerShare_ * _amountOfTokens); // fire event Transfer(_customerAddress, _toAddress, _amountOfTokens); // ERC20 return true; } /** * Transfer token to a specified address and forward the data to recipient * ERC-677 standard * https://github.com/ethereum/EIPs/issues/677 * @param _to Receiver address. * @param _value Amount of tokens that will be transferred. * @param _data Transaction metadata. */ function transferAndCall(address _to, uint256 _value, bytes _data) external returns (bool) { require(_to != address(0)); require(canAcceptTokens_[_to] == true); // security check that contract approved by CST platform require(transfer(_to, _value)); // do a normal token transfer to the contract if (isContract(_to)) { AcceptsCryptoSurge receiver = AcceptsCryptoSurge(_to); require(receiver.tokenFallback(msg.sender, _value, _data)); } return true; } /** * Additional check that the game address we are sending tokens to is a contract * assemble the given address bytecode. If bytecode exists then the _addr is a contract. */ function isContract(address _addr) private constant returns (bool is_contract) { // retrieve the size of the code on target address, this needs assembly uint length; assembly { length := extcodesize(_addr) } return length > 0; } /*---------- ADMINISTRATOR ONLY FUNCTIONS ----------*/ /** * In case the amassador quota is not met, the administrator can manually disable the ambassador phase. */ //function disableInitialStage() // onlyAdministrator() // public //{ // onlyAmbassadors = false; //} /** * In case one of us dies, we need to replace ourselves. */ function setAdministrator(address _identifier, bool _status) onlyAdministrator() public { administrators[_identifier] = _status; } /** * Precautionary measures in case we need to adjust the masternode rate. */ function setStakingRequirement(uint256 _amountOfTokens) onlyAdministrator() public { stakingRequirement = _amountOfTokens; } /** * Add or remove game contract, which can accept Crypto Surge Tokens tokens */ function setCanAcceptTokens(address _address, bool _value) onlyAdministrator() public { canAcceptTokens_[_address] = _value; } /** * If we want to rebrand, we can. */ function setName(string _name) onlyAdministrator() public { name = _name; } /** * If we want to rebrand, we can. */ function setSymbol(string _symbol) onlyAdministrator() public { symbol = _symbol; } /*---------- 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 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. * If `_includeReferralBonus` is to to 1/true, the referral bonus will be included in the calculations. * The reason for this, is that in the frontend, we will want to get the total divs (global + ref) * But in the internal calculations, we want them separate. */ 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]) - payoutsTo_[_customerAddress]) / magnitude; } /** * Return the buy price of 1 individual token. */ function sellPrice() public view returns(uint256) { // our calculation relies on the token supply, so we need supply. Doh. if(tokenSupply_ == 0){ return tokenPriceInitial_ - tokenPriceIncremental_; } else { uint256 _ethereum = tokensToEthereum_(1e18); uint256 _dividends = SafeMath.div(SafeMath.mul(_ethereum, dividendFee_), 100); uint256 _fundPayout = SafeMath.div(SafeMath.mul(_ethereum, fundFee_), 100); uint256 _taxedEthereum = SafeMath.sub(SafeMath.sub(_ethereum, _dividends), _fundPayout); return _taxedEthereum; } } /** * Return the sell price of 1 individual token. */ function buyPrice() public view returns(uint256) { // our calculation relies on the token supply, so we need supply. Doh. if(tokenSupply_ == 0){ return tokenPriceInitial_ + tokenPriceIncremental_; } else { uint256 _ethereum = tokensToEthereum_(1e18); uint256 _dividends = SafeMath.div(SafeMath.mul(_ethereum, dividendFee_), 100); uint256 _fundPayout = SafeMath.div(SafeMath.mul(_ethereum, fundFee_), 100); uint256 _taxedEthereum = SafeMath.add(SafeMath.add(_ethereum, _dividends), _fundPayout); return _taxedEthereum; } } /** * Function for the frontend to dynamically retrieve the price scaling of buy orders. */ function calculateTokensReceived(uint256 _ethereumToSpend) public view returns(uint256) { uint256 _dividends = SafeMath.div(SafeMath.mul(_ethereumToSpend, dividendFee_), 100); uint256 _fundPayout = SafeMath.div(SafeMath.mul(_ethereumToSpend, fundFee_), 100); uint256 _taxedEthereum = SafeMath.sub(SafeMath.sub(_ethereumToSpend, _dividends), _fundPayout); uint256 _amountOfTokens = ethereumToTokens_(_taxedEthereum); return _amountOfTokens; } /** * Function for the frontend to dynamically retrieve the price scaling of sell orders. */ function calculateEthereumReceived(uint256 _tokensToSell) public view returns(uint256) { require(_tokensToSell <= tokenSupply_); uint256 _ethereum = tokensToEthereum_(_tokensToSell); uint256 _dividends = SafeMath.div(SafeMath.mul(_ethereum, dividendFee_), 100); uint256 _fundPayout = SafeMath.div(SafeMath.mul(_ethereum, fundFee_), 100); uint256 _taxedEthereum = SafeMath.sub(SafeMath.sub(_ethereum, _dividends), _fundPayout); return _taxedEthereum; } /** * Function for the frontend to show ether waiting to be send to fund in contract */ function etherToSendFund() public view returns(uint256) { return SafeMath.sub(totalEthFundCollected, totalEthFundRecieved); } /*========================================== = INTERNAL FUNCTIONS = ==========================================*/ // Make sure we will send back excess if user sends more then 5 ether before 100 ETH in contract function purchaseInternal(uint256 _incomingEthereum, address _referredBy) notContract()// no contracts allowed internal returns(uint256) { uint256 purchaseEthereum = _incomingEthereum; uint256 excess; if(purchaseEthereum > 2.5 ether) { // check if the transaction is over 2.5 ether if (SafeMath.sub(address(this).balance, purchaseEthereum) <= 100 ether) { // if so check the contract is less then 100 ether purchaseEthereum = 2.5 ether; excess = SafeMath.sub(_incomingEthereum, purchaseEthereum); } } purchaseTokens(purchaseEthereum, _referredBy); if (excess > 0) { msg.sender.transfer(excess); } } function handleRef(address _ref, uint _referralBonus, uint _currentDividends, uint _currentFee) internal returns (uint, uint){ uint _dividends = _currentDividends; uint _fee = _currentFee; address _referredBy = stickyRef[msg.sender]; if (_referredBy == address(0x0)){ _referredBy = _ref; } // is the user referred by a masternode? if( // is this a referred purchase? _referredBy != 0x0000000000000000000000000000000000000000 && // no cheating! _referredBy != msg.sender && // does the referrer have at least X whole tokens? // i.e is the referrer a godly chad masternode tokenBalanceLedger_[_referredBy] >= stakingRequirement ){ // wealth redistribution if (stickyRef[msg.sender] == address(0x0)){ stickyRef[msg.sender] = _referredBy; } referralBalance_[_referredBy] = SafeMath.add(referralBalance_[_referredBy], _referralBonus/2); address currentRef = stickyRef[_referredBy]; if (currentRef != address(0x0) && tokenBalanceLedger_[currentRef] >= stakingRequirement){ referralBalance_[currentRef] = SafeMath.add(referralBalance_[currentRef], (_referralBonus/10)*3); currentRef = stickyRef[currentRef]; if (currentRef != address(0x0) && tokenBalanceLedger_[currentRef] >= stakingRequirement){ referralBalance_[currentRef] = SafeMath.add(referralBalance_[currentRef], (_referralBonus/10)*2); } else{ _dividends = SafeMath.add(_dividends, _referralBonus - _referralBonus/2 - (_referralBonus/10)*3); _fee = _dividends * magnitude; } } else{ _dividends = SafeMath.add(_dividends, _referralBonus - _referralBonus/2); _fee = _dividends * magnitude; } } else { // no ref purchase // add the referral bonus back to the global dividends cake _dividends = SafeMath.add(_dividends, _referralBonus); _fee = _dividends * magnitude; } return (_dividends, _fee); } function purchaseTokens(uint256 _incomingEthereum, address _referredBy) antiEarlyWhale(_incomingEthereum) internal returns(uint256) { // data setup uint256 _undividedDividends = SafeMath.div(SafeMath.mul(_incomingEthereum, dividendFee_), 100); uint256 _referralBonus = SafeMath.div(_undividedDividends, 3); uint256 _fundPayout = SafeMath.div(SafeMath.mul(_incomingEthereum, fundFee_), 100); uint256 _dividends = SafeMath.sub(_undividedDividends, _referralBonus); uint256 _fee; (_dividends, _fee) = handleRef(_referredBy, _referralBonus, _dividends, _fee); uint256 _taxedEthereum = SafeMath.sub(SafeMath.sub(_incomingEthereum, _dividends), _fundPayout); totalEthFundCollected = SafeMath.add(totalEthFundCollected, _fundPayout); uint256 _amountOfTokens = ethereumToTokens_(_taxedEthereum); // no point in continuing execution if OP is a poorfag russian hacker // prevents overflow in the case that the pyramid somehow magically starts being used by everyone in the world // (or hackers) // and yes we know that the safemath function automatically rules out the "greater then" equasion. require(_amountOfTokens > 0 && (SafeMath.add(_amountOfTokens,tokenSupply_) > tokenSupply_)); // 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_[msg.sender] = SafeMath.add(tokenBalanceLedger_[msg.sender], _amountOfTokens); // Tells the contract that the buyer doesn't deserve dividends for the tokens before they owned them; //really i know you think you do but you don't int256 _updatedPayouts = (int256) ((profitPerShare_ * _amountOfTokens) - _fee); payoutsTo_[msg.sender] += _updatedPayouts; // fire event onTokenPurchase(msg.sender, _incomingEthereum, _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 = ( ( // underflow attempts BTFO 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. * 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) internal view returns(uint256) { uint256 tokens_ = (_tokens + 1e18); uint256 _tokenSupply = (tokenSupply_ + 1e18); uint256 _etherReceived = ( // underflow attempts BTFO SafeMath.sub( ( ( ( tokenPriceInitial_ +(tokenPriceIncremental_ * (_tokenSupply/1e18)) )-tokenPriceIncremental_ )*(tokens_ - 1e18) ),(tokenPriceIncremental_*((tokens_**2-tokens_)/1e18))/2 ) /1e18); return _etherReceived; } //This is where all your gas goes, sorry //Not sorry, you probably only paid 1 gwei 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; } } } /** * @title SafeMath * @dev Math operations with safety checks that throw on error */ library SafeMath { /** * @dev Multiplies two numbers, throws on overflow. */ 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; } /** * @dev Integer division of two numbers, truncating the quotient. */ 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; } /** * @dev Substracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend). */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } /** * @dev Adds two numbers, throws on overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; assert(c >= a); return c; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"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":"","type":"address"}],"name":"canAcceptTokens_","outputs":[{"name":"","type":"bool"}],"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":false,"inputs":[{"name":"_address","type":"address"},{"name":"_value","type":"bool"}],"name":"setCanAcceptTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","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":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_data","type":"bytes"}],"name":"transferAndCall","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"sellPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"stickyRef","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"stakingRequirement","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"giveEthFundAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"etherToSendFund","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":true,"inputs":[{"name":"","type":"address"}],"name":"administrators","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalEthFundCollected","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":"address"},{"name":"_status","type":"bool"}],"name":"setAdministrator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"payFund","outputs":[],"payable":true,"stateMutability":"payable","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":true,"inputs":[],"name":"totalEthFundRecieved","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","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":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":[{"name":"","type":"uint256"}],"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"},{"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"}]
Contract Creation Code
6060604052635ba81a8c6000556040805190810160405280600c81526020017f43525950544f20535552474500000000000000000000000000000000000000008152506001908051906020019062000059929190620001ab565b506040805190810160405280600381526020017f435354000000000000000000000000000000000000000000000000000000000081525060029080519060200190620000a7929190620001ab565b5068015af1d78b58c400006005556000600b556000600e60006101000a81548160ff0219169083151502179055503415620000e157600080fd5b6001600d600073c5676f1ee6421a0458cc1f955a5e0100adeb01d373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200025a565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001ee57805160ff19168380011785556200021f565b828001600101855582156200021f579182015b828111156200021e57825182559160200191906001019062000201565b5b5090506200022e919062000232565b5090565b6200025791905b808211156200025357600081600090555060010162000239565b5090565b90565b612ea5806200026a6000396000f3006060604052600436106101b6576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806265318b146101b857806306fdde03146102055780630f34dc161461029357806310d0ffdd146102e457806318160ddd1461031b578063226093731461034457806327defa1f1461037b578063294205b4146103a8578063313ce567146103ec5780633ccfd60b1461041b5780634000aea0146104305780634b7503341461049e5780634d6352e5146104c757806356d399e8146105405780635e079aa51461056957806366042e7a146105be578063688abbf7146105e75780636b2f46321461062057806370a082311461064957806376be1585146106965780637ff276bd146106e75780638328b610146107105780638620410b1461073357806387c950581461075c5780638974372d146107a0578063949e8acd146107aa57806395d89b41146107d3578063a4d5568614610861578063a9059cbb1461088a578063b84c8246146108e4578063c47f002714610941578063e4849b321461099e578063e9fad8ee146109c1578063f088d547146109d6578063fdb5a03e14610a18575b005b34156101c357600080fd5b6101ef600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610a2d565b6040518082815260200191505060405180910390f35b341561021057600080fd5b610218610acf565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561025857808201518184015260208101905061023d565b50505050905090810190601f1680156102855780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561029e57600080fd5b6102ca600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610b6d565b604051808215151515815260200191505060405180910390f35b34156102ef57600080fd5b6103056004808035906020019091905050610b8d565b6040518082815260200191505060405180910390f35b341561032657600080fd5b61032e610bf5565b6040518082815260200191505060405180910390f35b341561034f57600080fd5b6103656004808035906020019091905050610bff565b6040518082815260200191505060405180910390f35b341561038657600080fd5b61038e610c78565b604051808215151515815260200191505060405180910390f35b34156103b357600080fd5b6103ea600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080351515906020019091905050610c8b565b005b34156103f757600080fd5b6103ff610d44565b604051808260ff1660ff16815260200191505060405180910390f35b341561042657600080fd5b61042e610d49565b005b341561043b57600080fd5b610484600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919080359060200190820180359060200191909192905050610ee6565b604051808215151515815260200191505060405180910390f35b34156104a957600080fd5b6104b161109e565b6040518082815260200191505060405180910390f35b34156104d257600080fd5b6104fe600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061112b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561054b57600080fd5b61055361115e565b6040518082815260200191505060405180910390f35b341561057457600080fd5b61057c611164565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156105c957600080fd5b6105d161117c565b6040518082815260200191505060405180910390f35b34156105f257600080fd5b61060a60048080351515906020019091905050611191565b6040518082815260200191505060405180910390f35b341561062b57600080fd5b6106336111fd565b6040518082815260200191505060405180910390f35b341561065457600080fd5b610680600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061121c565b6040518082815260200191505060405180910390f35b34156106a157600080fd5b6106cd600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611265565b604051808215151515815260200191505060405180910390f35b34156106f257600080fd5b6106fa611285565b6040518082815260200191505060405180910390f35b341561071b57600080fd5b610731600480803590602001909190505061128b565b005b341561073e57600080fd5b6107466112f3565b6040518082815260200191505060405180910390f35b341561076757600080fd5b61079e600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080351515906020019091905050611380565b005b6107a8611439565b005b34156107b557600080fd5b6107bd6114ce565b6040518082815260200191505060405180910390f35b34156107de57600080fd5b6107e66114e3565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561082657808201518184015260208101905061080b565b50505050905090810190601f1680156108535780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561086c57600080fd5b610874611581565b6040518082815260200191505060405180910390f35b341561089557600080fd5b6108ca600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611587565b604051808215151515815260200191505060405180910390f35b34156108ef57600080fd5b61093f600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611836565b005b341561094c57600080fd5b61099c600480803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506118ae565b005b34156109a957600080fd5b6109bf6004808035906020019091905050611926565b005b34156109cc57600080fd5b6109d4611c24565b005b610a02600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611c8b565b6040518082815260200191505060405180910390f35b3415610a2357600080fd5b610a2b611cb1565b005b600068010000000000000000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600c540203811515610ac757fe5b049050919050565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b655780601f10610b3a57610100808354040283529160200191610b65565b820191906000526020600020905b815481529060010190602001808311610b4857829003601f168201915b505050505081565b600f6020528060005260406000206000915054906101000a900460ff1681565b6000806000806000610bad610ba687600f60ff16611e25565b6064611e60565b9350610bc7610bc087600a60ff16611e25565b6064611e60565b9250610bdc610bd68786611e7b565b84611e7b565b9150610be782611e94565b905080945050505050919050565b6000600b54905090565b6000806000806000600b548611151515610c1857600080fd5b610c2186611f21565b9350610c3b610c3485600f60ff16611e25565b6064611e60565b9250610c55610c4e85600a60ff16611e25565b6064611e60565b9150610c6a610c648585611e7b565b83611e7b565b905080945050505050919050565b600e60009054906101000a900460ff1681565b6000339050600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610ce857600080fd5b81600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b601281565b6000806000610d586001611191565b111515610d6457600080fd5b339150610d716000611191565b9050680100000000000000008102600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054810190506000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515610e9457600080fd5b8173ffffffffffffffffffffffffffffffffffffffff167fccad973dcd043c7d680389db4378bd6b9775db7124092e9e0422c9e46d7985dc826040518082815260200191505060405180910390a25050565b600080600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614151515610f2557600080fd5b60011515600f60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141515610f8457600080fd5b610f8e8686611587565b1515610f9957600080fd5b610fa286611fcc565b15611091578590508073ffffffffffffffffffffffffffffffffffffffff1663c0ee0b8a338787876040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001806020018281038252848482818152602001925080828437820191505095505050505050602060405180830381600087803b151561106e57600080fd5b5af1151561107b57600080fd5b50505060405180519050151561109057600080fd5b5b6001915050949350505050565b600080600080600080600b5414156110c4576402540be40064174876e800039450611124565b6110d5670de0b6b3a7640000611f21565b93506110ef6110e885600f60ff16611e25565b6064611e60565b925061110961110285600a60ff16611e25565b6064611e60565b915061111e6111188585611e7b565b83611e7b565b90508094505b5050505090565b60106020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b7364ac3d88dfebf351a49ae34ef52009da5f4eefbd81565b600061118c600454600354611e7b565b905090565b600080339050826111aa576111a581610a2d565b6111f5565b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111f382610a2d565b015b915050919050565b60003073ffffffffffffffffffffffffffffffffffffffff1631905090565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600d6020528060005260406000206000915054906101000a900460ff1681565b60045481565b6000339050600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156112e857600080fd5b816005819055505050565b600080600080600080600b541415611319576402540be40064174876e800019450611379565b61132a670de0b6b3a7640000611f21565b935061134461133d85600f60ff16611e25565b6064611e60565b925061135e61135785600a60ff16611e25565b6064611e60565b915061137361136d8585611fdf565b83611fdf565b90508094505b5050505090565b6000339050600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156113dd57600080fd5b81600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b6000611449600454600354611e7b565b905060018111151561145a57600080fd5b61146660035482611fdf565b6003819055507364ac3d88dfebf351a49ae34ef52009da5f4eefbd73ffffffffffffffffffffffffffffffffffffffff168162061a8090604051600060405180830381858888f1935050505015156114cb576114c460035482611e7b565b6003819055505b50565b6000803390506114dd8161121c565b91505090565b60028054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156115795780601f1061154e57610100808354040283529160200191611579565b820191906000526020600020905b81548152906001019060200180831161155c57829003601f168201915b505050505081565b60035481565b60008060006115946114ce565b1115156115a057600080fd5b339050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483111515156115f157600080fd5b60006115fd6001611191565b111561160c5761160b610d49565b5b611655600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484611e7b565b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506116e1600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484611fdf565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555082600c5402600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555082600c5402600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3600191505092915050565b6000339050600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561189357600080fd5b81600290805190602001906118a9929190612dd4565b505050565b6000339050600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561190b57600080fd5b8160019080519060200190611921929190612dd4565b505050565b600080600080600080600080600061193c6114ce565b11151561194857600080fd5b339750600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054891115151561199957600080fd5b8896506119a587611f21565b95506119bf6119b887600f60ff16611e25565b6064611e60565b94506119d96119d287600a60ff16611e25565b6064611e60565b93506003858115156119e757fe5b0492506119f48584611e7b565b9450611a62601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684876000611ffd565b5080955050611a7a611a748787611e7b565b85611e7b565b9150611a8860045485611fdf565b600481905550611a9a600b5488611e7b565b600b81905550611ae9600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205488611e7b565b600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555068010000000000000000820287600c540201905080600960008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506000600b541115611bc357611bbc600c54600b54680100000000000000008802811515611bb657fe5b04611fdf565b600c819055505b8773ffffffffffffffffffffffffffffffffffffffff167fc4823739c5787d2ca17e404aa47d5569ae71dfb49cbf21b3f6152ed238a311398884604051808381526020018281526020019250505060405180910390a2505050505050505050565b600080339150600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811115611c7f57611c7e81611926565b5b611c87610d49565b5050565b6000640ba43b74003a11151515611ca157600080fd5b611cab34836126ad565b50919050565b600080600080611cc16001611191565b111515611ccd57600080fd5b611cd76000611191565b9250339150680100000000000000008302600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054830192506000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611dc88360006126ad565b90508173ffffffffffffffffffffffffffffffffffffffff167fbe339fc14b041c2b0e0f3dd2cd325d0c3668b78378001e53160eab36153264588483604051808381526020018281526020019250505060405180910390a2505050565b6000806000841415611e3a5760009150611e59565b8284029050828482811515611e4b57fe5b04141515611e5557fe5b8091505b5092915050565b6000808284811515611e6e57fe5b0490508091505092915050565b6000828211151515611e8957fe5b818303905092915050565b6000806000670de0b6b3a764000064174876e800029150600b546402540be400611f0a611f04600b54866402540be40060020202026002600b540a60026402540be4000a02670de0b6b3a76400008a02670de0b6b3a76400006402540be40002600202026002890a010101612d89565b85611e7b565b811515611f1357fe5b040390508092505050919050565b600080600080670de0b6b3a764000085019250670de0b6b3a7640000600b54019150670de0b6b3a7640000611fb5670de0b6b3a764000085036402540be400670de0b6b3a764000086811515611f7357fe5b046402540be4000264174876e8000103026002670de0b6b3a7640000876002890a03811515611f9e57fe5b046402540be40002811515611faf57fe5b04611e7b565b811515611fbe57fe5b049050809350505050919050565b600080823b905060008111915050919050565b6000808284019050838110151515611ff357fe5b8091505092915050565b600080600080600080879350869250601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156120a7578991505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561211057503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561215d5750600554600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b1561267f57600073ffffffffffffffffffffffffffffffffffffffff16601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156122755781601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6122ca600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460028b8115156122c457fe5b04611fdf565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156123ed5750600554600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b156126515761244a600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546003600a8c81151561244357fe5b0402611fdf565b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415801561256d5750600554600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b15612612576125ca600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546002600a8c8115156125c357fe5b0402611fdf565b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061264c565b61263b846003600a8c81151561262457fe5b040260028c81151561263257fe5b048c0303611fdf565b935068010000000000000000840292505b61267a565b6126698460028b81151561266157fe5b048b03611fdf565b935068010000000000000000840292505b61269a565b612689848a611fdf565b935068010000000000000000840292505b8383955095505050505094509492505050565b60008060008060008060008060008a6000339050600054421015156126e8576000600e60006101000a81548160ff0219169083151502179055505b600e60009054906101000a900460ff1680156127155750671bc16d674ec80000826127116111fd565b0311155b15612ade5760011515600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151480156127c35750670de0b6b3a764000082600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540111155b15156127ce57600080fd5b612817600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611fdf565b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061287261286b8e600f60ff16611e25565b6064611e60565b995061287f8a6003611e60565b98506128996128928e600a60ff16611e25565b6064611e60565b97506128a58a8a611e7b565b96506128b38c8a8989611ffd565b80975081985050506128ce6128c88e89611e7b565b89611e7b565b94506128dc60045489611fdf565b6004819055506128eb85611e94565b93506000841180156129095750600b5461290785600b54611fdf565b115b151561291457600080fd5b6000600b54111561297f5761292b600b5485611fdf565b600b81905550600b5468010000000000000000880281151561294957fe5b04600c60008282540192505081905550600b5468010000000000000000880281151561297157fe5b048402860386039550612987565b83600b819055505b6129d0600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205485611fdf565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508584600c540203925082600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f022c0d992e4d873a3748436d960d5140c1f9721cf73f7ca5ec679d3d9f4fe2d58f87604051808381526020018281526020019250505060405180910390a3839a50612d79565b6000600e60006101000a81548160ff021916908315150217905550612b11612b0a8e600f60ff16611e25565b6064611e60565b9950612b1e8a6003611e60565b9850612b38612b318e600a60ff16611e25565b6064611e60565b9750612b448a8a611e7b565b9650612b528c8a8989611ffd565b8097508198505050612b6d612b678e89611e7b565b89611e7b565b9450612b7b60045489611fdf565b600481905550612b8a85611e94565b9350600084118015612ba85750600b54612ba685600b54611fdf565b115b1515612bb357600080fd5b6000600b541115612c1e57612bca600b5485611fdf565b600b81905550600b54680100000000000000008802811515612be857fe5b04600c60008282540192505081905550600b54680100000000000000008802811515612c1057fe5b048402860386039550612c26565b83600b819055505b612c6f600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205485611fdf565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508584600c540203925082600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f022c0d992e4d873a3748436d960d5140c1f9721cf73f7ca5ec679d3d9f4fe2d58f87604051808381526020018281526020019250505060405180910390a3839a505b5050505050505050505092915050565b600080600260018401811515612d9b57fe5b0490508291505b81811015612dce578091506002818285811515612dbb57fe5b0401811515612dc657fe5b049050612da2565b50919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612e1557805160ff1916838001178555612e43565b82800160010185558215612e43579182015b82811115612e42578251825591602001919060010190612e27565b5b509050612e509190612e54565b5090565b612e7691905b80821115612e72576000816000905550600101612e5a565b5090565b905600a165627a7a723058206d4b91b9e8c49ccbc7a2ca23d855666e52042bbcf811fbe632867d7a7042dd500029
Deployed Bytecode
0x6060604052600436106101b6576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806265318b146101b857806306fdde03146102055780630f34dc161461029357806310d0ffdd146102e457806318160ddd1461031b578063226093731461034457806327defa1f1461037b578063294205b4146103a8578063313ce567146103ec5780633ccfd60b1461041b5780634000aea0146104305780634b7503341461049e5780634d6352e5146104c757806356d399e8146105405780635e079aa51461056957806366042e7a146105be578063688abbf7146105e75780636b2f46321461062057806370a082311461064957806376be1585146106965780637ff276bd146106e75780638328b610146107105780638620410b1461073357806387c950581461075c5780638974372d146107a0578063949e8acd146107aa57806395d89b41146107d3578063a4d5568614610861578063a9059cbb1461088a578063b84c8246146108e4578063c47f002714610941578063e4849b321461099e578063e9fad8ee146109c1578063f088d547146109d6578063fdb5a03e14610a18575b005b34156101c357600080fd5b6101ef600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610a2d565b6040518082815260200191505060405180910390f35b341561021057600080fd5b610218610acf565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561025857808201518184015260208101905061023d565b50505050905090810190601f1680156102855780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561029e57600080fd5b6102ca600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610b6d565b604051808215151515815260200191505060405180910390f35b34156102ef57600080fd5b6103056004808035906020019091905050610b8d565b6040518082815260200191505060405180910390f35b341561032657600080fd5b61032e610bf5565b6040518082815260200191505060405180910390f35b341561034f57600080fd5b6103656004808035906020019091905050610bff565b6040518082815260200191505060405180910390f35b341561038657600080fd5b61038e610c78565b604051808215151515815260200191505060405180910390f35b34156103b357600080fd5b6103ea600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080351515906020019091905050610c8b565b005b34156103f757600080fd5b6103ff610d44565b604051808260ff1660ff16815260200191505060405180910390f35b341561042657600080fd5b61042e610d49565b005b341561043b57600080fd5b610484600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919080359060200190820180359060200191909192905050610ee6565b604051808215151515815260200191505060405180910390f35b34156104a957600080fd5b6104b161109e565b6040518082815260200191505060405180910390f35b34156104d257600080fd5b6104fe600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061112b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561054b57600080fd5b61055361115e565b6040518082815260200191505060405180910390f35b341561057457600080fd5b61057c611164565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156105c957600080fd5b6105d161117c565b6040518082815260200191505060405180910390f35b34156105f257600080fd5b61060a60048080351515906020019091905050611191565b6040518082815260200191505060405180910390f35b341561062b57600080fd5b6106336111fd565b6040518082815260200191505060405180910390f35b341561065457600080fd5b610680600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061121c565b6040518082815260200191505060405180910390f35b34156106a157600080fd5b6106cd600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611265565b604051808215151515815260200191505060405180910390f35b34156106f257600080fd5b6106fa611285565b6040518082815260200191505060405180910390f35b341561071b57600080fd5b610731600480803590602001909190505061128b565b005b341561073e57600080fd5b6107466112f3565b6040518082815260200191505060405180910390f35b341561076757600080fd5b61079e600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080351515906020019091905050611380565b005b6107a8611439565b005b34156107b557600080fd5b6107bd6114ce565b6040518082815260200191505060405180910390f35b34156107de57600080fd5b6107e66114e3565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561082657808201518184015260208101905061080b565b50505050905090810190601f1680156108535780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561086c57600080fd5b610874611581565b6040518082815260200191505060405180910390f35b341561089557600080fd5b6108ca600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611587565b604051808215151515815260200191505060405180910390f35b34156108ef57600080fd5b61093f600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611836565b005b341561094c57600080fd5b61099c600480803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506118ae565b005b34156109a957600080fd5b6109bf6004808035906020019091905050611926565b005b34156109cc57600080fd5b6109d4611c24565b005b610a02600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611c8b565b6040518082815260200191505060405180910390f35b3415610a2357600080fd5b610a2b611cb1565b005b600068010000000000000000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600c540203811515610ac757fe5b049050919050565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b655780601f10610b3a57610100808354040283529160200191610b65565b820191906000526020600020905b815481529060010190602001808311610b4857829003601f168201915b505050505081565b600f6020528060005260406000206000915054906101000a900460ff1681565b6000806000806000610bad610ba687600f60ff16611e25565b6064611e60565b9350610bc7610bc087600a60ff16611e25565b6064611e60565b9250610bdc610bd68786611e7b565b84611e7b565b9150610be782611e94565b905080945050505050919050565b6000600b54905090565b6000806000806000600b548611151515610c1857600080fd5b610c2186611f21565b9350610c3b610c3485600f60ff16611e25565b6064611e60565b9250610c55610c4e85600a60ff16611e25565b6064611e60565b9150610c6a610c648585611e7b565b83611e7b565b905080945050505050919050565b600e60009054906101000a900460ff1681565b6000339050600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610ce857600080fd5b81600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b601281565b6000806000610d586001611191565b111515610d6457600080fd5b339150610d716000611191565b9050680100000000000000008102600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054810190506000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515610e9457600080fd5b8173ffffffffffffffffffffffffffffffffffffffff167fccad973dcd043c7d680389db4378bd6b9775db7124092e9e0422c9e46d7985dc826040518082815260200191505060405180910390a25050565b600080600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614151515610f2557600080fd5b60011515600f60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141515610f8457600080fd5b610f8e8686611587565b1515610f9957600080fd5b610fa286611fcc565b15611091578590508073ffffffffffffffffffffffffffffffffffffffff1663c0ee0b8a338787876040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001806020018281038252848482818152602001925080828437820191505095505050505050602060405180830381600087803b151561106e57600080fd5b5af1151561107b57600080fd5b50505060405180519050151561109057600080fd5b5b6001915050949350505050565b600080600080600080600b5414156110c4576402540be40064174876e800039450611124565b6110d5670de0b6b3a7640000611f21565b93506110ef6110e885600f60ff16611e25565b6064611e60565b925061110961110285600a60ff16611e25565b6064611e60565b915061111e6111188585611e7b565b83611e7b565b90508094505b5050505090565b60106020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b7364ac3d88dfebf351a49ae34ef52009da5f4eefbd81565b600061118c600454600354611e7b565b905090565b600080339050826111aa576111a581610a2d565b6111f5565b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111f382610a2d565b015b915050919050565b60003073ffffffffffffffffffffffffffffffffffffffff1631905090565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600d6020528060005260406000206000915054906101000a900460ff1681565b60045481565b6000339050600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156112e857600080fd5b816005819055505050565b600080600080600080600b541415611319576402540be40064174876e800019450611379565b61132a670de0b6b3a7640000611f21565b935061134461133d85600f60ff16611e25565b6064611e60565b925061135e61135785600a60ff16611e25565b6064611e60565b915061137361136d8585611fdf565b83611fdf565b90508094505b5050505090565b6000339050600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156113dd57600080fd5b81600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b6000611449600454600354611e7b565b905060018111151561145a57600080fd5b61146660035482611fdf565b6003819055507364ac3d88dfebf351a49ae34ef52009da5f4eefbd73ffffffffffffffffffffffffffffffffffffffff168162061a8090604051600060405180830381858888f1935050505015156114cb576114c460035482611e7b565b6003819055505b50565b6000803390506114dd8161121c565b91505090565b60028054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156115795780601f1061154e57610100808354040283529160200191611579565b820191906000526020600020905b81548152906001019060200180831161155c57829003601f168201915b505050505081565b60035481565b60008060006115946114ce565b1115156115a057600080fd5b339050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483111515156115f157600080fd5b60006115fd6001611191565b111561160c5761160b610d49565b5b611655600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484611e7b565b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506116e1600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484611fdf565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555082600c5402600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555082600c5402600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3600191505092915050565b6000339050600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561189357600080fd5b81600290805190602001906118a9929190612dd4565b505050565b6000339050600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561190b57600080fd5b8160019080519060200190611921929190612dd4565b505050565b600080600080600080600080600061193c6114ce565b11151561194857600080fd5b339750600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054891115151561199957600080fd5b8896506119a587611f21565b95506119bf6119b887600f60ff16611e25565b6064611e60565b94506119d96119d287600a60ff16611e25565b6064611e60565b93506003858115156119e757fe5b0492506119f48584611e7b565b9450611a62601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684876000611ffd565b5080955050611a7a611a748787611e7b565b85611e7b565b9150611a8860045485611fdf565b600481905550611a9a600b5488611e7b565b600b81905550611ae9600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205488611e7b565b600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555068010000000000000000820287600c540201905080600960008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506000600b541115611bc357611bbc600c54600b54680100000000000000008802811515611bb657fe5b04611fdf565b600c819055505b8773ffffffffffffffffffffffffffffffffffffffff167fc4823739c5787d2ca17e404aa47d5569ae71dfb49cbf21b3f6152ed238a311398884604051808381526020018281526020019250505060405180910390a2505050505050505050565b600080339150600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811115611c7f57611c7e81611926565b5b611c87610d49565b5050565b6000640ba43b74003a11151515611ca157600080fd5b611cab34836126ad565b50919050565b600080600080611cc16001611191565b111515611ccd57600080fd5b611cd76000611191565b9250339150680100000000000000008302600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054830192506000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611dc88360006126ad565b90508173ffffffffffffffffffffffffffffffffffffffff167fbe339fc14b041c2b0e0f3dd2cd325d0c3668b78378001e53160eab36153264588483604051808381526020018281526020019250505060405180910390a2505050565b6000806000841415611e3a5760009150611e59565b8284029050828482811515611e4b57fe5b04141515611e5557fe5b8091505b5092915050565b6000808284811515611e6e57fe5b0490508091505092915050565b6000828211151515611e8957fe5b818303905092915050565b6000806000670de0b6b3a764000064174876e800029150600b546402540be400611f0a611f04600b54866402540be40060020202026002600b540a60026402540be4000a02670de0b6b3a76400008a02670de0b6b3a76400006402540be40002600202026002890a010101612d89565b85611e7b565b811515611f1357fe5b040390508092505050919050565b600080600080670de0b6b3a764000085019250670de0b6b3a7640000600b54019150670de0b6b3a7640000611fb5670de0b6b3a764000085036402540be400670de0b6b3a764000086811515611f7357fe5b046402540be4000264174876e8000103026002670de0b6b3a7640000876002890a03811515611f9e57fe5b046402540be40002811515611faf57fe5b04611e7b565b811515611fbe57fe5b049050809350505050919050565b600080823b905060008111915050919050565b6000808284019050838110151515611ff357fe5b8091505092915050565b600080600080600080879350869250601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156120a7578991505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561211057503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561215d5750600554600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b1561267f57600073ffffffffffffffffffffffffffffffffffffffff16601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156122755781601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6122ca600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460028b8115156122c457fe5b04611fdf565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156123ed5750600554600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b156126515761244a600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546003600a8c81151561244357fe5b0402611fdf565b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415801561256d5750600554600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b15612612576125ca600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546002600a8c8115156125c357fe5b0402611fdf565b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061264c565b61263b846003600a8c81151561262457fe5b040260028c81151561263257fe5b048c0303611fdf565b935068010000000000000000840292505b61267a565b6126698460028b81151561266157fe5b048b03611fdf565b935068010000000000000000840292505b61269a565b612689848a611fdf565b935068010000000000000000840292505b8383955095505050505094509492505050565b60008060008060008060008060008a6000339050600054421015156126e8576000600e60006101000a81548160ff0219169083151502179055505b600e60009054906101000a900460ff1680156127155750671bc16d674ec80000826127116111fd565b0311155b15612ade5760011515600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151480156127c35750670de0b6b3a764000082600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540111155b15156127ce57600080fd5b612817600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611fdf565b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061287261286b8e600f60ff16611e25565b6064611e60565b995061287f8a6003611e60565b98506128996128928e600a60ff16611e25565b6064611e60565b97506128a58a8a611e7b565b96506128b38c8a8989611ffd565b80975081985050506128ce6128c88e89611e7b565b89611e7b565b94506128dc60045489611fdf565b6004819055506128eb85611e94565b93506000841180156129095750600b5461290785600b54611fdf565b115b151561291457600080fd5b6000600b54111561297f5761292b600b5485611fdf565b600b81905550600b5468010000000000000000880281151561294957fe5b04600c60008282540192505081905550600b5468010000000000000000880281151561297157fe5b048402860386039550612987565b83600b819055505b6129d0600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205485611fdf565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508584600c540203925082600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f022c0d992e4d873a3748436d960d5140c1f9721cf73f7ca5ec679d3d9f4fe2d58f87604051808381526020018281526020019250505060405180910390a3839a50612d79565b6000600e60006101000a81548160ff021916908315150217905550612b11612b0a8e600f60ff16611e25565b6064611e60565b9950612b1e8a6003611e60565b9850612b38612b318e600a60ff16611e25565b6064611e60565b9750612b448a8a611e7b565b9650612b528c8a8989611ffd565b8097508198505050612b6d612b678e89611e7b565b89611e7b565b9450612b7b60045489611fdf565b600481905550612b8a85611e94565b9350600084118015612ba85750600b54612ba685600b54611fdf565b115b1515612bb357600080fd5b6000600b541115612c1e57612bca600b5485611fdf565b600b81905550600b54680100000000000000008802811515612be857fe5b04600c60008282540192505081905550600b54680100000000000000008802811515612c1057fe5b048402860386039550612c26565b83600b819055505b612c6f600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205485611fdf565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508584600c540203925082600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f022c0d992e4d873a3748436d960d5140c1f9721cf73f7ca5ec679d3d9f4fe2d58f87604051808381526020018281526020019250505060405180910390a3839a505b5050505050505050505092915050565b600080600260018401811515612d9b57fe5b0490508291505b81811015612dce578091506002818285811515612dbb57fe5b0401811515612dc657fe5b049050612da2565b50919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612e1557805160ff1916838001178555612e43565b82800160010185558215612e43579182015b82811115612e42578251825591602001919060010190612e27565b5b509050612e509190612e54565b5090565b612e7691905b80821115612e72576000816000905550600101612e5a565b5090565b905600a165627a7a723058206d4b91b9e8c49ccbc7a2ca23d855666e52042bbcf811fbe632867d7a7042dd500029
Deployed Bytecode Sourcemap
905:28560:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17473:254;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4273:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;4273:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6160:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19347:523;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16091:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19988:542;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6111:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15185:157;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4350:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9159:646;;;;;;;;;;;;;;13234:519;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17805:673;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6218:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5082:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4846:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20643:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16826:307;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15896:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17217:169;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5906:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4986:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14917:161;;;;;;;;;;;;;;;;;;;;;;;;;;18557:673;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14646:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7504:389;;;;;;16288:182;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4315:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;4315:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4940:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11762:1147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15584:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15407:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9869:1767;;;;;;;;;;;;;;;;;;;;;;;;;;8774:312;;;;;;;;;;;;;;6955:210;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7973:735;;;;;;;;;;;;;;17473:254;17567:7;4774:5;17678:10;:28;17689:16;17678:28;;;;;;;;;;;;;;;;17637:19;:37;17657:16;17637:37;;;;;;;;;;;;;;;;17619:15;;:55;17610:96;17599:120;;;;;;;;17592:127;;17473:254;;;:::o;4273:35::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;6160:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;19347:523::-;19453:7;19478:18;19573:19;19665:22;19770:23;19499:63;19512:44;19525:16;4431:2;19512:44;;:12;:44::i;:::-;19558:3;19499:12;:63::i;:::-;19478:84;;19595:59;19608:40;19621:16;4516:2;19608:40;;:12;:40::i;:::-;19650:3;19595:12;:59::i;:::-;19573:81;;19690:69;19703:42;19716:16;19734:10;19703:12;:42::i;:::-;19747:11;19690:12;:69::i;:::-;19665:94;;19796:33;19814:14;19796:17;:33::i;:::-;19770:59;;19847:15;19840:22;;19347:523;;;;;;;:::o;16091:122::-;16161:7;16193:12;;16186:19;;16091:122;:::o;19988:542::-;20093:7;20167:17;20230:18;20318:19;20403:22;20143:12;;20126:13;:29;;20118:38;;;;;;;;20187:32;20205:13;20187:17;:32::i;:::-;20167:52;;20251:56;20264:37;20277:9;4431:2;20264:37;;:12;:37::i;:::-;20303:3;20251:12;:56::i;:::-;20230:77;;20340:52;20353:33;20366:9;4516:2;20353:33;;:12;:33::i;:::-;20388:3;20340:12;:52::i;:::-;20318:74;;20428:62;20441:35;20454:9;20465:10;20441:12;:35::i;:::-;20478:11;20428:12;:62::i;:::-;20403:87;;20508:14;20501:21;;19988:542;;;;;;;:::o;6111:35::-;;;;;;;;;;;;;:::o;15185:157::-;1806:24;1833:10;1806:37;;1862:14;:32;1877:16;1862:32;;;;;;;;;;;;;;;;;;;;;;;;;1854:41;;;;;;;;15328:6;15299:16;:26;15316:8;15299:26;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;15185:157;;;:::o;4350:35::-;4383:2;4350:35;:::o;9159:646::-;9261:24;9309:18;1275:1;1255:17;1267:4;1255:11;:17::i;:::-;:21;1247:30;;;;;;;;9288:10;9261:37;;9330:18;9342:5;9330:11;:18::i;:::-;9309:39;;4774:5;9476:10;:22;9433:10;:28;9444:16;9433:28;;;;;;;;;;;;;;;;:66;;;;;;;;;;;9553:16;:34;9570:16;9553:34;;;;;;;;;;;;;;;;9539:48;;;;9635:1;9598:16;:34;9615:16;9598:34;;;;;;;;;;;;;;;:38;;;;9684:16;:25;;:37;9710:10;9684:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9768:16;9757:40;;;9786:10;9757:40;;;;;;;;;;;;;;;;;;9159:646;;:::o;13234:519::-;13319:4;13592:27;13357:1;13342:17;;:3;:17;;;;13334:26;;;;;;;;13402:4;13377:29;;:16;:21;13394:3;13377:21;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;13369:38;;;;;;;;13481:21;13490:3;13495:6;13481:8;:21::i;:::-;13473:30;;;;;;;;13564:15;13575:3;13564:10;:15::i;:::-;13560:164;;;13641:3;13592:53;;13664:8;:22;;;13687:10;13699:6;13707:5;;13664:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13656:58;;;;;;;;13560:164;13741:4;13734:11;;13234:519;;;;;;;:::o;17805:673::-;17873:7;18097:17;18155:18;18247:19;18336:22;17997:1;17981:12;;:17;17978:493;;;4713:16;4640:15;18021:43;18014:50;;;;17978:493;18117:23;18135:4;18117:17;:23::i;:::-;18097:43;;18176:56;18189:37;18202:9;4431:2;18189:37;;:12;:37::i;:::-;18228:3;18176:12;:56::i;:::-;18155:77;;18269:52;18282:33;18295:9;4516:2;18282:33;;:12;:33::i;:::-;18317:3;18269:12;:52::i;:::-;18247:74;;18361:62;18374:35;18387:9;18398:10;18374:12;:35::i;:::-;18411:11;18361:12;:62::i;:::-;18336:87;;18445:14;18438:21;;17805:673;;;;;;:::o;6218:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;5082:41::-;;;;:::o;4846:87::-;4891:42;4846:87;:::o;20643:166::-;20717:7;20744:57;20757:21;;20780:20;;20744:12;:57::i;:::-;20737:64;;20643:166;:::o;16826:307::-;16922:7;16947:24;16974:10;16947:37;;17002:21;:122;;17095:29;17107:16;17095:11;:29::i;:::-;17002:122;;;17058:16;:34;17075:16;17058:34;;;;;;;;;;;;;;;;17026:29;17038:16;17026:11;:29::i;:::-;:66;17002:122;16995:129;;16826:307;;;;:::o;15896:128::-;15975:4;16004;:12;;;15997:19;;15896:128;:::o;17217:169::-;17309:7;17341:19;:37;17361:16;17341:37;;;;;;;;;;;;;;;;17334:44;;17217:169;;;:::o;5906:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;4986:36::-;;;;:::o;14917:161::-;1806:24;1833:10;1806:37;;1862:14;:32;1877:16;1862:32;;;;;;;;;;;;;;;;;;;;;;;;;1854:41;;;;;;;;15055:15;15034:18;:36;;;;14917:161;;:::o;18557:673::-;18624:7;18848:17;18906:18;18998:19;19087:22;18748:1;18732:12;;:17;18729:494;;;4713:16;4640:15;18772:43;18765:50;;;;18729:494;18868:23;18886:4;18868:17;:23::i;:::-;18848:43;;18927:56;18940:37;18953:9;4431:2;18940:37;;:12;:37::i;:::-;18979:3;18927:12;:56::i;:::-;18906:77;;19020:52;19033:33;19046:9;4516:2;19033:33;;:12;:33::i;:::-;19068:3;19020:12;:52::i;:::-;18998:74;;19113:62;19126:35;19139:9;19150:10;19126:12;:35::i;:::-;19163:11;19113:12;:62::i;:::-;19087:88;;19197:14;19190:21;;18557:673;;;;;;:::o;14646:167::-;1806:24;1833:10;1806:37;;1862:14;:32;1877:16;1862:32;;;;;;;;;;;;;;;;;;;;;;;;;1854:41;;;;;;;;14798:7;14768:14;:27;14783:11;14768:27;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;14646:167;;;:::o;7504:389::-;7547:16;7566:57;7579:21;;7602:20;;7566:12;:57::i;:::-;7547:76;;7651:1;7640:8;:12;7632:21;;;;;;;;7685:44;7698:20;;7720:8;7685:12;:44::i;:::-;7662:20;:67;;;;4891:42;7742:23;;7772:8;7786:6;7742:51;:53;;;;;;;;;;;;;;;;;;7741:54;7738:148;;;7832:44;7845:20;;7867:8;7832:12;:44::i;:::-;7809:20;:67;;;;7738:148;7504:389;:::o;16288:182::-;16355:7;16380:24;16407:10;16380:37;;16435:27;16445:16;16435:9;:27::i;:::-;16428:34;;16288:182;;:::o;4315:28::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4940:35::-;;;;:::o;11762:1147::-;11884:4;11924:24;1146:1;1133:10;:8;:10::i;:::-;:14;1125:23;;;;;;;;11951:10;11924:37;;12163:19;:37;12183:16;12163:37;;;;;;;;;;;;;;;;12144:15;:56;;12136:65;;;;;;;;12290:1;12270:17;12282:4;12270:11;:17::i;:::-;:21;12267:36;;;12293:10;:8;:10::i;:::-;12267:36;12384:68;12397:19;:37;12417:16;12397:37;;;;;;;;;;;;;;;;12436:15;12384:12;:68::i;:::-;12344:19;:37;12364:16;12344:37;;;;;;;;;;;;;;;:108;;;;12497:62;12510:19;:31;12530:10;12510:31;;;;;;;;;;;;;;;;12543:15;12497:12;:62::i;:::-;12463:19;:31;12483:10;12463:31;;;;;;;;;;;;;;;:96;;;;12669:15;12651;;:33;12609:10;:28;12620:16;12609:28;;;;;;;;;;;;;;;;:76;;;;;;;;;;;12750:15;12732;;:33;12696:10;:22;12707:10;12696:22;;;;;;;;;;;;;;;;:70;;;;;;;;;;;12831:10;12804:55;;12813:16;12804:55;;;12843:15;12804:55;;;;;;;;;;;;;;;;;;12897:4;12890:11;;11762:1147;;;;;:::o;15584:120::-;1806:24;1833:10;1806:37;;1862:14;:32;1877:16;1862:32;;;;;;;;;;;;;;;;;;;;;;;;;1854:41;;;;;;;;15689:7;15680:6;:16;;;;;;;;;;;;:::i;:::-;;15584:120;;:::o;15407:112::-;1806:24;1833:10;1806:37;;1862:14;:32;1877:16;1862:32;;;;;;;;;;;;;;;;;;;;;;;;;1854:41;;;;;;;;15506:5;15499:4;:12;;;;;;;;;;;;:::i;:::-;;15407:112;;:::o;9869:1767::-;9989:24;10146:15;10190:17;10249:18;10337:19;10422:18;10668:22;11139;1146:1;1133:10;:8;:10::i;:::-;:14;1125:23;;;;;;;;10016:10;9989:37;;10097:19;:37;10117:16;10097:37;;;;;;;;;;;;;;;;10078:15;:56;;10070:65;;;;;;;;10164:15;10146:33;;10210:26;10228:7;10210:17;:26::i;:::-;10190:46;;10270:56;10283:37;10296:9;4431:2;10283:37;;:12;:37::i;:::-;10322:3;10270:12;:56::i;:::-;10249:77;;10359:52;10372:33;10385:9;4516:2;10372:33;;:12;:33::i;:::-;10407:3;10359:12;:52::i;:::-;10337:74;;10456:1;10443:10;:14;;;;;;;;10422:35;;10481:36;10494:10;10506;10481:12;:36::i;:::-;10468:49;;10544:59;10554:9;:21;10564:10;10554:21;;;;;;;;;;;;;;;;;;;;;;;;;10577:10;10589;10601:1;10544:9;:59::i;:::-;10528:75;;;;;10694:62;10707:35;10720:9;10731:10;10707:12;:35::i;:::-;10744:11;10694:12;:62::i;:::-;10668:88;;10834:48;10847:21;;10870:11;10834:12;:48::i;:::-;10810:21;:72;;;;10943:35;10956:12;;10970:7;10943:12;:35::i;:::-;10928:12;:50;;;;11029:60;11042:19;:37;11062:16;11042:37;;;;;;;;;;;;;;;;11081:7;11029:12;:60::i;:::-;10989:19;:37;11009:16;10989:37;;;;;;;;;;;;;;;:100;;;;4774:5;11203:14;:26;11192:7;11174:15;;:25;:56;11139:92;;11274:15;11242:10;:28;11253:16;11242:28;;;;;;;;;;;;;;;;:47;;;;;;;;;;;11364:1;11349:12;;:16;11345:194;;;11457:70;11470:15;;11514:12;;4774:5;11488:10;:22;11487:39;;;;;;;;11457:12;:70::i;:::-;11439:15;:88;;;;11345:194;11586:16;11574:54;;;11604:7;11613:14;11574:54;;;;;;;;;;;;;;;;;;;;;;;;9869:1767;;;;;;;;;:::o;8774:312::-;8877:24;8925:15;8904:10;8877:37;;8943:19;:37;8963:16;8943:37;;;;;;;;;;;;;;;;8925:55;;9004:1;8994:7;:11;8991:29;;;9007:13;9012:7;9007:4;:13::i;:::-;8991:29;9068:10;:8;:10::i;:::-;8774:312;;:::o;6955:210::-;7039:7;7097:10;7082:11;:25;;7074:34;;;;;;;;7119:38;7134:9;7145:11;7119:14;:38::i;:::-;;6955:210;;;:::o;7973:735::-;8080:18;8217:24;8562:15;1275:1;1255:17;1267:4;1255:11;:17::i;:::-;:21;1247:30;;;;;;;;8101:18;8113:5;8101:11;:18::i;:::-;8080:39;;8244:10;8217:37;;4774:5;8308:10;:22;8265:10;:28;8276:16;8265:28;;;;;;;;;;;;;;;;:66;;;;;;;;;;;8390:16;:34;8407:16;8390:34;;;;;;;;;;;;;;;;8376:48;;;;8472:1;8435:16;:34;8452:16;8435:34;;;;;;;;;;;;;;;:38;;;;8580:31;8595:10;8607:3;8580:14;:31::i;:::-;8562:49;;8662:16;8647:53;;;8680:10;8692:7;8647:53;;;;;;;;;;;;;;;;;;;;;;;;7973:735;;;:::o;29662:208::-;29720:7;29797:9;29749:1;29744;:6;29740:47;;;29774:1;29767:8;;;;29740:47;29813:1;29809;:5;29797:17;;29841:1;29836;29832;:5;;;;;;;;:10;29825:18;;;;;;29861:1;29854:8;;29662:208;;;;;;:::o;29965:288::-;30023:7;30122:9;30138:1;30134;:5;;;;;;;;30122:17;;30244:1;30237:8;;29965:288;;;;;:::o;30379:123::-;30437:7;30469:1;30464;:6;;30457:14;;;;;;30493:1;30489;:5;30482:12;;30379:123;;;;:::o;27202:973::-;27297:7;27322:26;27387:23;27372:4;4640:15;27351:25;27322:54;;28109:12;;4713:16;27501:555;27537:457;27954:12;;27935:18;4713:16;27908:1;:26;:45;:58;27843:1;27829:12;;:15;27825:1;4713:16;27799:27;27798:47;27730:4;27718:9;:16;27711:4;4713:16;27686:29;27683:1;:33;:52;27619:1;27599:18;:21;27598:138;:248;:369;27537:4;:457::i;:::-;28019:18;27501:12;:555::i;:::-;27438:658;;;;;;;;27423:699;27387:735;;28152:15;28145:22;;27202:973;;;;;:::o;28438:722::-;28531:7;28558:15;28603:20;28658:22;28587:4;28577:7;:14;28558:34;;28642:4;28627:12;;:19;28603:44;;29115:4;28747:357;29010:4;29000:7;:14;4713:16;28919:4;28906:12;:17;;;;;;;;4713:16;28880:44;4640:15;28859:66;28828:147;28801:214;29088:1;29081:4;29072:7;29070:1;29061:7;:10;:18;29060:25;;;;;;;;4713:16;29036:50;29035:54;;;;;;;;28747:12;:357::i;:::-;:372;;;;;;;;28658:462;;29138:14;29131:21;;28438:722;;;;;;:::o;13960:266::-;14021:16;14129:11;14183:5;14171:18;14161:28;;14216:1;14207:6;:10;14200:17;;13960:266;;;;:::o;30577:147::-;30635:7;30655:9;30671:1;30667;:5;30655:17;;30695:1;30690;:6;;30683:14;;;;;;30715:1;30708:8;;30577:147;;;;;:::o;21821:2372::-;21935:4;21941;21957:15;22003:9;22037:19;22915:18;21975:17;21957:35;;22015:11;22003:23;;22059:9;:21;22069:10;22059:21;;;;;;;;;;;;;;;;;;;;;;;;;22037:43;;22118:3;22095:27;;:11;:27;;;22091:77;;;22152:4;22138:18;;22091:77;22305:42;22290:57;;:11;:57;;;;:130;;;;;22410:10;22395:25;;:11;:25;;;;22290:130;:327;;;;;22599:18;;22563:19;:32;22583:11;22563:32;;;;;;;;;;;;;;;;:54;;22290:327;22228:1922;;;22718:3;22685:37;;:9;:21;22695:10;22685:21;;;;;;;;;;;;;;;;;;;;;;;;;:37;;;22681:112;;;22766:11;22742:9;:21;22752:10;22742:21;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;22681:112;22839:61;22852:16;:29;22869:11;22852:29;;;;;;;;;;;;;;;;22898:1;22883:14;:16;;;;;;;;22839:12;:61::i;:::-;22807:16;:29;22824:11;22807:29;;;;;;;;;;;;;;;:93;;;;22936:9;:22;22946:11;22936:22;;;;;;;;;;;;;;;;;;;;;;;;;22915:43;;22999:3;22977:26;;:10;:26;;;;:83;;;;;23042:18;;23007:19;:31;23027:10;23007:31;;;;;;;;;;;;;;;;:53;;22977:83;22973:903;;;23111:65;23124:16;:28;23141:10;23124:28;;;;;;;;;;;;;;;;23174:1;23170:2;23155:14;:17;;;;;;;;23154:21;23111:12;:65::i;:::-;23080:16;:28;23097:10;23080:28;;;;;;;;;;;;;;;:96;;;;23208:9;:21;23218:10;23208:21;;;;;;;;;;;;;;;;;;;;;;;;;23195:34;;23274:3;23252:26;;:10;:26;;;;:83;;;;;23317:18;;23282:19;:31;23302:10;23282:31;;;;;;;;;;;;;;;;:53;;23252:83;23248:440;;;23390:65;23403:16;:28;23420:10;23403:28;;;;;;;;;;;;;;;;23453:1;23449:2;23434:14;:17;;;;;;;;23433:21;23390:12;:65::i;:::-;23359:16;:28;23376:10;23359:28;;;;;;;;;;;;;;;:96;;;;23248:440;;;23533:83;23546:10;23614:1;23610:2;23595:14;:17;;;;;;;;23594:21;23590:1;23575:14;:16;;;;;;;;23558:14;:33;:57;23533:12;:83::i;:::-;23520:96;;4774:5;23646:10;:22;23639:29;;23248:440;22973:903;;;23753:59;23766:10;23810:1;23795:14;:16;;;;;;;;23778:14;:33;23753:12;:59::i;:::-;23740:72;;4774:5;23838:10;:22;23831:29;;22973:903;22228:1922;;;24054:40;24067:10;24079:14;24054:12;:40::i;:::-;24041:53;;4774:5;24116:10;:22;24109:29;;22228:1922;24168:10;24180:4;24160:25;;;;21821:2372;;;;;;;;;;;:::o;24203:2703::-;24353:7;24401:27;24506:22;24578:19;24671:18;24752:12;24863:22;25054:23;26621:22;24299:17;2203:24;2230:10;2203:37;;2272:15;;2265:3;:22;;2261:78;;;2322:5;2304:15;;:23;;;;;;;;;;;;;;;;;;2261:78;2456:15;;;;;;;;;;;:86;;;;;5322:7;2502:17;2477:22;:20;:22::i;:::-;:42;2476:64;;2456:86;2452:847;;;2678:4;2644:38;;:12;:30;2657:16;2644:30;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;:234;;;;;5263:7;2834:17;2786:27;:45;2814:16;2786:45;;;;;;;;;;;;;;;;:65;2785:93;;2644:234;2558:337;;;;;;;;3006:78;3019:27;:45;3047:16;3019:45;;;;;;;;;;;;;;;;3066:17;3006:12;:78::i;:::-;2958:27;:45;2986:16;2958:45;;;;;;;;;;;;;;;:126;;;;24431:64;24444:45;24457:17;4431:2;24444:45;;:12;:45::i;:::-;24491:3;24431:12;:64::i;:::-;24401:94;;24531:36;24544:19;24565:1;24531:12;:36::i;:::-;24506:61;;24600:60;24613:41;24626:17;4516:2;24613:41;;:12;:41::i;:::-;24656:3;24600:12;:60::i;:::-;24578:82;;24692:49;24705:19;24726:14;24692:12;:49::i;:::-;24671:70;;24796:56;24806:11;24819:14;24835:10;24847:4;24796:9;:56::i;:::-;24775:77;;;;;;;;24888:70;24901:43;24914:17;24933:10;24901:12;:43::i;:::-;24946:11;24888:12;:70::i;:::-;24863:95;;24993:48;25006:21;;25029:11;24993:12;:48::i;:::-;24969:21;:72;;;;25080:33;25098:14;25080:17;:33::i;:::-;25054:59;;25486:1;25468:15;:19;:82;;;;;25537:12;;25492:42;25505:15;25521:12;;25492;:42::i;:::-;:57;25468:82;25460:91;;;;;;;;25637:1;25622:12;;:16;25619:638;;;25711:43;25724:12;;25738:15;25711:12;:43::i;:::-;25696:12;:58;;;;25941:12;;4774:5;25915:10;:22;:39;;;;;;;;25895:15;;:60;;;;;;;;;;;26125:12;;4774:5;26099:10;:22;:39;;;;;;;;26080:15;:59;26074:4;:66;26066:4;:75;26059:82;;25619:638;;;26230:15;26215:12;:30;;;;25619:638;26379:62;26392:19;:31;26412:10;26392:31;;;;;;;;;;;;;;;;26425:15;26379:12;:62::i;:::-;26345:19;:31;26365:10;26345:31;;;;;;;;;;;;;;;:96;;;;26694:4;26675:15;26657;;:33;26656:42;26621:78;;26736:15;26710:10;:22;26721:10;26710:22;;;;;;;;;;;;;;;;:41;;;;;;;;;;;26851:11;26787:76;;26803:10;26787:76;;;26815:17;26834:15;26787:76;;;;;;;;;;;;;;;;;;;;;;;;26883:15;26876:22;;2452:847;;;3266:5;3248:15;;:23;;;;;;;;;;;;;;;;;;24431:64;24444:45;24457:17;4431:2;24444:45;;:12;:45::i;:::-;24491:3;24431:12;:64::i;:::-;24401:94;;24531:36;24544:19;24565:1;24531:12;:36::i;:::-;24506:61;;24600:60;24613:41;24626:17;4516:2;24613:41;;:12;:41::i;:::-;24656:3;24600:12;:60::i;:::-;24578:82;;24692:49;24705:19;24726:14;24692:12;:49::i;:::-;24671:70;;24796:56;24806:11;24819:14;24835:10;24847:4;24796:9;:56::i;:::-;24775:77;;;;;;;;24888:70;24901:43;24914:17;24933:10;24901:12;:43::i;:::-;24946:11;24888:12;:70::i;:::-;24863:95;;24993:48;25006:21;;25029:11;24993:12;:48::i;:::-;24969:21;:72;;;;25080:33;25098:14;25080:17;:33::i;:::-;25054:59;;25486:1;25468:15;:19;:82;;;;;25537:12;;25492:42;25505:15;25521:12;;25492;:42::i;:::-;:57;25468:82;25460:91;;;;;;;;25637:1;25622:12;;:16;25619:638;;;25711:43;25724:12;;25738:15;25711:12;:43::i;:::-;25696:12;:58;;;;25941:12;;4774:5;25915:10;:22;:39;;;;;;;;25895:15;;:60;;;;;;;;;;;26125:12;;4774:5;26099:10;:22;:39;;;;;;;;26080:15;:59;26074:4;:66;26066:4;:75;26059:82;;25619:638;;;26230:15;26215:12;:30;;;;25619:638;26379:62;26392:19;:31;26412:10;26392:31;;;;;;;;;;;;;;;;26425:15;26379:12;:62::i;:::-;26345:19;:31;26365:10;26345:31;;;;;;;;;;;;;;;:96;;;;26694:4;26675:15;26657;;:33;26656:42;26621:78;;26736:15;26710:10;:22;26721:10;26710:22;;;;;;;;;;;;;;;;:41;;;;;;;;;;;26851:11;26787:76;;26803:10;26787:76;;;26815:17;26834:15;26787:76;;;;;;;;;;;;;;;;;;;;;;;;26883:15;26876:22;;2452:847;24203:2703;;;;;;;;;;;;;;:::o;29264:198::-;29309:6;29328;29347:1;29342;29338;:5;29337:11;;;;;;;;29328:20;;29363:1;29359:5;;29375:80;29386:1;29382;:5;29375:80;;;29408:1;29404:5;;29442:1;29437;29433;29429;:5;;;;;;;;:9;29428:15;;;;;;;;29424:19;;29375:80;;;29264:198;;;;:::o;905:28560::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o
Swarm Source
bzzr://6d4b91b9e8c49ccbc7a2ca23d855666e52042bbcf811fbe632867d7a7042dd50
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $3,474 | 2.9543 | $10,263.38 |
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.