ETH Price: $2,800.27 (+1.07%)

Contract

0x6ca935e5c66BCd9ED690e80e2fECEE2452E00172
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Return All Token...75990262019-04-19 15:42:142137 days ago1555688534IN
0x6ca935e5...452E00172
0 ETH0.001696423
Holdplatform_Air...75990182019-04-19 15:40:572137 days ago1555688457IN
0x6ca935e5...452E00172
0 ETH0.000067353
Holdplatform_Air...75990132019-04-19 15:38:372137 days ago1555688317IN
0x6ca935e5...452E00172
0 ETH0.000112543
Holdplatform_Wit...75989982019-04-19 15:35:362137 days ago1555688136IN
0x6ca935e5...452E00172
0 ETH0.000146683
Withdraw Affilia...75989412019-04-19 15:24:162137 days ago1555687456IN
0x6ca935e5...452E00172
0 ETH0.000271953
Withdraw Affilia...75989342019-04-19 15:22:082137 days ago1555687328IN
0x6ca935e5...452E00172
0 ETH0.000181953
Claim Tokens75987752019-04-19 14:48:582137 days ago1555685338IN
0x6ca935e5...452E00172
0 ETH0.000506543
Holdplatform75987682019-04-19 14:47:442137 days ago1555685264IN
0x6ca935e5...452E00172
0 ETH0.001266513
Holdplatform75987312019-04-19 14:39:102137 days ago1555684750IN
0x6ca935e5...452E00172
0 ETH0.001403413
Add Contract Add...75987122019-04-19 14:34:512137 days ago1555684491IN
0x6ca935e5...452E00172
0 ETH0.00045393
Holdplatform75986712019-04-19 14:26:132137 days ago1555683973IN
0x6ca935e5...452E00172
0 ETH0.001266133
Claim Tokens75985792019-04-19 14:05:042137 days ago1555682704IN
0x6ca935e5...452E00172
0 ETH0.000416543
Claim Tokens75897702019-04-18 5:04:582138 days ago1555563898IN
0x6ca935e5...452E00172
0 ETH0.000551543
Holdplatform75897562019-04-18 5:00:532138 days ago1555563653IN
0x6ca935e5...452E00172
0 ETH0.001555173
Cashback Code75897482019-04-18 4:59:502138 days ago1555563590IN
0x6ca935e5...452E00172
0 ETH0.000138093
Claim Tokens75897332019-04-18 4:57:062138 days ago1555563426IN
0x6ca935e5...452E00172
0 ETH0.000416543
Claim Tokens75897242019-04-18 4:55:052138 days ago1555563305IN
0x6ca935e5...452E00172
0 ETH0.000416543
Claim Tokens75896912019-04-18 4:47:082138 days ago1555562828IN
0x6ca935e5...452E00172
0 ETH0.000416543
Claim Tokens75896772019-04-18 4:44:122138 days ago1555562652IN
0x6ca935e5...452E00172
0 ETH0.000416543
Claim Tokens75896502019-04-18 4:39:252138 days ago1555562365IN
0x6ca935e5...452E00172
0 ETH0.000416543
Claim Tokens75896432019-04-18 4:37:392138 days ago1555562259IN
0x6ca935e5...452E00172
0 ETH0.000416543
Claim Tokens75896322019-04-18 4:34:152138 days ago1555562055IN
0x6ca935e5...452E00172
0 ETH0.000416543
Claim Tokens75895702019-04-18 4:20:502138 days ago1555561250IN
0x6ca935e5...452E00172
0 ETH0.000416543
Claim Tokens75895572019-04-18 4:17:132138 days ago1555561033IN
0x6ca935e5...452E00172
0 ETH0.000416543
Claim Tokens75895232019-04-18 4:10:052138 days ago1555560605IN
0x6ca935e5...452E00172
0 ETH0.000416543
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ldoh

Compiler Version
v0.4.25+commit.59dbf8f1

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2019-04-17
*/

pragma solidity ^0.4.25;

/**


					.----------------.  .----------------.  .----------------.  .----------------. 
					| .--------------. || .--------------. || .--------------. || .--------------. |
					| |  ____  ____  | || |     ____     | || |   _____      | || |  ________    | |
					| | |_   ||   _| | || |   .'    `.   | || |  |_   _|     | || | |_   ___ `.  | |
					| |   | |__| |   | || |  /  .--.  \  | || |    | |       | || |   | |   `. \ | |
					| |   |  __  |   | || |  | |    | |  | || |    | |   _   | || |   | |    | | | |
					| |  _| |  | |_  | || |  \  `--'  /  | || |   _| |__/ |  | || |  _| |___.' / | |
					| | |____||____| | || |   `.____.'   | || |  |________|  | || | |________.'  | |
					| |              | || |              | || |              | || |              | |
					| '--------------' || '--------------' || '--------------' || '--------------' |
					'----------------'  '----------------'  '----------------'  '----------------' 

*/

	/*==============================
    =          Version 7.6         =
    ==============================*/
	
contract EthereumSmartContract {    
    address EthereumNodes; 
	
    constructor() public { 
        EthereumNodes = msg.sender;
    }
    modifier restricted() {
        require(msg.sender == EthereumNodes);
        _;
    } 
	
    function GetEthereumNodes() public view returns (address owner) { return EthereumNodes; }
}

contract ldoh is EthereumSmartContract {
	
	/*==============================
    =            EVENTS            =
    ==============================*/
	
	event onCashbackCode	(address indexed hodler, address cashbackcode);		
	event onAffiliateBonus	(address indexed hodler, address indexed tokenAddress, string tokenSymbol, uint256 amount, uint256 endtime);		
	event onClaimTokens		(address indexed hodler, address indexed tokenAddress, string tokenSymbol, uint256 amount, uint256 endtime);			
	event onHoldplatform	(address indexed hodler, address indexed tokenAddress, string tokenSymbol, uint256 amount, uint256 endtime);	
	event onAddContractAddress(address indexed hodler, address indexed contracthodler, uint256 Currentprice, uint256 _maxcontribution, string _ContractSymbol, uint256 _PercentPermonth, uint256 _HodlingTime);	
	
	event onHoldplatformsetting(address indexed hodler, address indexed Tokenairdrop, bool HPM_status, uint256 HPM_divider, uint256 HPM_ratio, uint256 datetime);	
	event onHoldplatformdeposit(address indexed hodler, uint256 amount, uint256 newbalance, uint256 datetime);	
	event onHoldplatformwithdraw(address indexed hodler, uint256 amount, uint256 newbalance, uint256 datetime);	
	event onReceiveAirdrop(address indexed hodler, uint256 amount, uint256 datetime);	
	
	/*==============================
    =          VARIABLES           =
    ==============================*/   

	//-------o Affiliate = 12% o-------o Cashback = 16% o-------o Total Receive = 88% o-------o Without Cashback = 72% o-------o	
	
	// Struct Database

    struct Safe {
        uint256 id;						// 01 -- > Registration Number
        uint256 amount;					// 02 -- > Total amount of contribution to this transaction
        uint256 endtime;				// 03 -- > The Expiration Of A Hold Platform Based On Unix Time
        address user;					// 04 -- > The ETH address that you are using
        address tokenAddress;			// 05 -- > The Token Contract Address That You Are Using
		string  tokenSymbol;			// 06 -- > The Token Symbol That You Are Using
		uint256 amountbalance; 			// 07 -- > 88% from Contribution / 72% Without Cashback
		uint256 cashbackbalance; 		// 08 -- > 16% from Contribution / 0% Without Cashback
		uint256 lasttime; 				// 09 -- > The Last Time You Withdraw Based On Unix Time
		uint256 percentage; 			// 10 -- > The percentage of tokens that are unlocked every month ( Default = 3% )
		uint256 percentagereceive; 		// 11 -- > The Percentage You Have Received
		uint256 tokenreceive; 			// 12 -- > The Number Of Tokens You Have Received
		uint256 lastwithdraw; 			// 13 -- > The Last Amount You Withdraw
		address referrer; 				// 14 -- > Your ETH referrer address
		bool 	cashbackstatus; 		// 15 -- > Cashback Status
    }
	
	uint256 private idnumber; 										// 01 -- > ID number ( Start from 500 )				
	uint256 public  TotalUser; 										// 02 -- > Total Smart Contract User				
		
	mapping(address => address) 		public cashbackcode; 		// 03 -- > Cashback Code 					
	mapping(address => uint256[]) 		public idaddress;			// 04 -- > Search Address by ID			
	mapping(address => address[]) 		public afflist;				// 05 -- > Affiliate List by ID					
	mapping(address => string) 			public ContractSymbol; 		// 06 -- > Contract Address Symbol				
	mapping(uint256 => Safe) 			private _safes; 			// 07 -- > Struct safe database	
	mapping(address => bool) 			public contractaddress; 	// 08 -- > Contract Address 	
	
	mapping(address => uint256) 		public percent; 			// 09 -- > Monthly Unlock Percentage (Default 3%)
	mapping(address => uint256) 		public hodlingTime; 		// 10 -- > Length of hold time in seconds
	mapping(address => uint256) 		public TokenBalance; 		// 11 -- > Token Balance							
	mapping(address => uint256) 		public maxcontribution; 	// 12 -- > Maximum Contribution					
	mapping(address => uint256) 		public AllContribution; 	// 13 -- > Deposit amount for all members		
	mapping(address => uint256) 		public AllPayments; 		// 14 -- > Withdraw amount for all members		
	mapping(address => uint256) 		public activeuser; 			// 15 -- > Active User Status
	
	mapping(uint256 => uint256) 		public TXCount; 			
	//1st uint256, Category >>> 1 = Total User, 2 = Total TX Hold, 3 = Total TX Unlock, 4 = Total TX Airdrop, 5 = Total TX Affiliate Withdraw

	mapping (address => mapping (uint256 => uint256)) 	public token_price; 				
	//2th uint256, Category >>> 1 = Current Price, 2 = ATH Price, 3 = ATL Price		
			
	mapping (address => mapping (address => mapping (uint256 => uint256))) public Statistics;
	//3rd uint256, Category >>> 1 = LifetimeContribution, 2 = LifetimePayments, 3 = Affiliatevault, 4 = Affiliateprofit, 5 = ActiveContribution
	
		// Airdrop - Hold Platform (HPM)
								
	address public Holdplatform_address;	
	uint256 public Holdplatform_balance; 	
	mapping(address => bool) 	public Holdplatform_status;
	mapping(address => uint256) public Holdplatform_divider; 	
	
	/*==============================
    =          CONSTRUCTOR         =
    ==============================*/  	
   
    constructor() public {     	 	
        idnumber 				= 500;
		Holdplatform_address	= 0x23bAdee11Bf49c40669e9b09035f048e9146213e;	//Change before deploy
    }
    
	
	/*==============================
    =    AVAILABLE FOR EVERYONE    =
    ==============================*/  

//-------o Function 01 - Ethereum Payable

    function () public payable {    
        revert();	 
    }
	
	
//-------o Function 02 - Cashback Code

    function CashbackCode(address _cashbackcode) public {		
		require(_cashbackcode != msg.sender);		
		if (cashbackcode[msg.sender] == 0 && activeuser[_cashbackcode] >= 1) { 
		cashbackcode[msg.sender] = _cashbackcode; }
		else { cashbackcode[msg.sender] = EthereumNodes; }		
		
	emit onCashbackCode(msg.sender, _cashbackcode);		
    } 
	
//-------o Function 03 - Contribute 

	//--o 01
    function Holdplatform(address tokenAddress, uint256 amount) public {
        require(tokenAddress != 0x0);
		require(amount > 0 && add(Statistics[msg.sender][tokenAddress][5], amount) <= maxcontribution[tokenAddress] );
		
		if (contractaddress[tokenAddress] == false) { revert(); } else { 		
		ERC20Interface token 			= ERC20Interface(tokenAddress);       
        require(token.transferFrom(msg.sender, address(this), amount));	
		
		HodlTokens2(tokenAddress, amount);}							
	}
	
		//--o 02	
    function HodlTokens2(address tokenAddress, uint256 amount) private {
		
		if (Holdplatform_status[tokenAddress] == true) {
		require(Holdplatform_balance > 0 );
		
		uint256 divider 		= Holdplatform_divider[tokenAddress];
		uint256 airdrop			= div(amount, divider);
		
		address airdropaddress	= Holdplatform_address;
		ERC20Interface token 	= ERC20Interface(airdropaddress);        
        token.transfer(msg.sender, airdrop);
		
		Holdplatform_balance	= sub(Holdplatform_balance, airdrop);
		TXCount[4]++;
	
		emit onReceiveAirdrop(msg.sender, airdrop, now);
		}	
		
		HodlTokens3(tokenAddress, amount);
	}
	
	
	//--o 03	
    function HodlTokens3(address ERC, uint256 amount) private {
		
		uint256 AvailableBalances 					= div(mul(amount, 72), 100);	
		
		if (cashbackcode[msg.sender] == 0 ) { //--o  Hold without cashback code
		
			address ref								= EthereumNodes;
			cashbackcode[msg.sender] 				= EthereumNodes;
			uint256 AvailableCashback 				= 0; 			
			uint256 zerocashback 					= div(mul(amount, 28), 100); 
			Statistics[EthereumNodes][ERC][3] 		= add(Statistics[EthereumNodes][ERC][3], zerocashback);
			Statistics[EthereumNodes][ERC][4]		= add(Statistics[EthereumNodes][ERC][4], zerocashback); 		
			
		} else { 	//--o  Cashback code has been activated
		
			ref										= cashbackcode[msg.sender];
			uint256 affcomission 					= div(mul(amount, 12), 100); 	
			AvailableCashback 						= div(mul(amount, 16), 100);			
			uint256 ReferrerContribution 			= Statistics[ref][ERC][5];		
			uint256 ReferralContribution			= add(Statistics[ref][ERC][5], amount);
			
			if (ReferrerContribution >= ReferralContribution) { //--o  if referrer contribution >= referral contribution
		
				Statistics[ref][ERC][3] 			= add(Statistics[ref][ERC][3], affcomission); 
				Statistics[ref][ERC][4] 			= add(Statistics[ref][ERC][4], affcomission); 	
				
			} else {											//--o  if referral contribution > referrer contribution
			
				uint256 Newbie 						= div(mul(ReferrerContribution, 12), 100); 			
				Statistics[ref][ERC][3]				= add(Statistics[ref][ERC][3], Newbie); 
				Statistics[ref][ERC][4] 			= add(Statistics[ref][ERC][4], Newbie); 
				
				uint256 NodeFunds 					= sub(affcomission, Newbie);	
				Statistics[EthereumNodes][ERC][3] 	= add(Statistics[EthereumNodes][ERC][3], NodeFunds);
				Statistics[EthereumNodes][ERC][4] 	= add(Statistics[EthereumNodes][ERC][4], NodeFunds); 				
			}
		} 

		HodlTokens4(ERC, amount, AvailableBalances, AvailableCashback, ref); 	
	}
	//--o 04	
    function HodlTokens4(address ERC, uint256 amount, uint256 AvailableBalances, uint256 AvailableCashback, address ref) private {
	    
	    ERC20Interface token 	= ERC20Interface(ERC); 	
		uint256 TokenPercent 	= percent[ERC];	
		uint256 TokenHodlTime 	= hodlingTime[ERC];	
		uint256 HodlTime		= add(now, TokenHodlTime);
		
		uint256 AM = amount; 	uint256 AB = AvailableBalances;		uint256 AC = AvailableCashback;	
		amount 	= 0; AvailableBalances = 0; AvailableCashback = 0;
		
		_safes[idnumber] = Safe(idnumber, AM, HodlTime, msg.sender, ERC, token.symbol(), AB, AC, now, TokenPercent, 0, 0, 0, ref, false);	
				
		Statistics[msg.sender][ERC][1]			= add(Statistics[msg.sender][ERC][1], AM); 
		Statistics[msg.sender][ERC][5]  		= add(Statistics[msg.sender][ERC][5], AM); 			
		AllContribution[ERC] 					= add(AllContribution[ERC], AM);   	
        TokenBalance[ERC] 						= add(TokenBalance[ERC], AM);  

		if(activeuser[msg.sender] == 1 ) {
        idaddress[msg.sender].push(idnumber); idnumber++; TXCount[2]++;  }		
		else { 
		afflist[ref].push(msg.sender); idaddress[msg.sender].push(idnumber); idnumber++; TXCount[1]++; TXCount[2]++; TotalUser++;   }
		
		activeuser[msg.sender] 					= 1;  	
		
        emit onHoldplatform(msg.sender, ERC, token.symbol(), AM, HodlTime);		
			
	}

//-------o Function 05 - Claim Token That Has Been Unlocked
    function ClaimTokens(address tokenAddress, uint256 id) public {
        require(tokenAddress != 0x0);
        require(id != 0);        
        
        Safe storage s = _safes[id];
        require(s.user == msg.sender);  
		require(s.tokenAddress == tokenAddress);
		
		if (s.amountbalance == 0) { revert(); } else { UnlockToken2(tokenAddress, id); }
    }
    //--o 01
    function UnlockToken2(address ERC, uint256 id) private {
        Safe storage s = _safes[id];      
        require(s.id != 0);
        require(s.tokenAddress == ERC);

        uint256 eventAmount				= s.amountbalance;
        address eventTokenAddress 		= s.tokenAddress;
        string memory eventTokenSymbol 	= s.tokenSymbol;		
		     
        if(s.endtime < now){ //--o  Hold Complete
        
		uint256 amounttransfer 					= add(s.amountbalance, s.cashbackbalance);
		Statistics[msg.sender][ERC][5] 			= sub(Statistics[s.user][s.tokenAddress][5], s.amount); 		
		s.lastwithdraw 							= s.amountbalance;   s.amountbalance = 0;   s.lasttime = now;  		
		PayToken(s.user, s.tokenAddress, amounttransfer); 
		
		    if(s.cashbackbalance > 0 && s.cashbackstatus == false || s.cashbackstatus == true) {
            s.tokenreceive 	= div(mul(s.amount, 88), 100) ; 	s.percentagereceive = mul(1000000000000000000, 88);
            }
			else {
			s.tokenreceive 	= div(mul(s.amount, 72), 100) ;     s.percentagereceive = mul(1000000000000000000, 72);
			}
			
		s.cashbackbalance = 0;	
		emit onClaimTokens(msg.sender, eventTokenAddress, eventTokenSymbol, eventAmount, now);
		
        } else { UnlockToken3(ERC, s.id); }
        
    }   
	//--o 02
	function UnlockToken3(address ERC, uint256 id) private {		
		Safe storage s = _safes[id];
        
        require(s.id != 0);
        require(s.tokenAddress == ERC);		
			
		uint256 timeframe  			= sub(now, s.lasttime);			                            
		uint256 CalculateWithdraw 	= div(mul(div(mul(s.amount, s.percentage), 100), timeframe), 2592000); // 2592000 = seconds30days
							//--o   = s.amount * s.percentage / 100 * timeframe / seconds30days	;
		                         
		uint256 MaxWithdraw 		= div(s.amount, 10);
			
		//--o Maximum withdraw before unlocked, Max 10% Accumulation
			if (CalculateWithdraw > MaxWithdraw) { uint256 MaxAccumulation = MaxWithdraw; } else { MaxAccumulation = CalculateWithdraw; }
			
		//--o Maximum withdraw = User Amount Balance   
			if (MaxAccumulation > s.amountbalance) { uint256 realAmount1 = s.amountbalance; } else { realAmount1 = MaxAccumulation; }
			
		uint256 realAmount			= add(s.cashbackbalance, realAmount1); 			
		uint256 newamountbalance 	= sub(s.amountbalance, realAmount1);
		s.cashbackbalance 			= 0; 
		s.amountbalance 			= newamountbalance;
		s.lastwithdraw 				= realAmount; 
		s.lasttime 					= now; 		
			
		UnlockToken4(ERC, id, newamountbalance, realAmount);		
    }   
	//--o 03
    function UnlockToken4(address ERC, uint256 id, uint256 newamountbalance, uint256 realAmount) private {
        Safe storage s = _safes[id];
        
        require(s.id != 0);
        require(s.tokenAddress == ERC);

        uint256 eventAmount				= realAmount;
        address eventTokenAddress 		= s.tokenAddress;
        string memory eventTokenSymbol 	= s.tokenSymbol;		

		uint256 tokenaffiliate 		= div(mul(s.amount, 12), 100) ; 
		uint256 maxcashback 		= div(mul(s.amount, 16), 100) ; 	
		
			if (cashbackcode[msg.sender] == EthereumNodes  ) {
			uint256 tokenreceived 	= sub(sub(sub(s.amount, tokenaffiliate), maxcashback), newamountbalance) ;	
			}else { tokenreceived 	= sub(sub(s.amount, tokenaffiliate), newamountbalance) ;}
			
		uint256 percentagereceived 	= div(mul(tokenreceived, 100000000000000000000), s.amount) ; 	
		
		s.tokenreceive 					= tokenreceived; 
		s.percentagereceive 			= percentagereceived; 		

		PayToken(s.user, s.tokenAddress, realAmount);           		
		emit onClaimTokens(msg.sender, eventTokenAddress, eventTokenSymbol, eventAmount, now);
    } 
	//--o Pay Token
    function PayToken(address user, address tokenAddress, uint256 amount) private {
        
        ERC20Interface token = ERC20Interface(tokenAddress);        
        require(token.balanceOf(address(this)) >= amount);
        token.transfer(user, amount);
		
		TokenBalance[tokenAddress] 					= sub(TokenBalance[tokenAddress], amount); 
		AllPayments[tokenAddress] 					= add(AllPayments[tokenAddress], amount);
		Statistics[msg.sender][tokenAddress][2]  	= add(Statistics[user][tokenAddress][2], amount); 
		
		TXCount[3]++;

		Airdrop(tokenAddress, amount);   
	}
	
//-------o Function 05 - Airdrop

    function Airdrop(address tokenAddress, uint256 amount) private {
		
		if (Holdplatform_status[tokenAddress] == true) {
		require(Holdplatform_balance > 0 );
		
		uint256 divider 		= Holdplatform_divider[tokenAddress];
		uint256 airdrop			= div(div(amount, divider), 4);
		
		address airdropaddress	= Holdplatform_address;
		ERC20Interface token 	= ERC20Interface(airdropaddress);        
        token.transfer(msg.sender, airdrop);
		
		Holdplatform_balance	= sub(Holdplatform_balance, airdrop);
		TXCount[4]++;
		
		emit onReceiveAirdrop(msg.sender, airdrop, now);
		}	
	}
	
//-------o Function 06 - Get How Many Contribute ?

    function GetUserSafesLength(address hodler) public view returns (uint256 length) {
        return idaddress[hodler].length;
    }
	
//-------o Function 07 - Get How Many Affiliate ?

    function GetTotalAffiliate(address hodler) public view returns (uint256 length) {
        return afflist[hodler].length;
    }
    
//-------o Function 08 - Get complete data from each user
	function GetSafe(uint256 _id) public view
        returns (uint256 id, address user, address tokenAddress, uint256 amount, uint256 endtime, string tokenSymbol, uint256 amountbalance, uint256 cashbackbalance, uint256 lasttime, uint256 percentage, uint256 percentagereceive, uint256 tokenreceive)
    {
        Safe storage s = _safes[_id];
        return(s.id, s.user, s.tokenAddress, s.amount, s.endtime, s.tokenSymbol, s.amountbalance, s.cashbackbalance, s.lasttime, s.percentage, s.percentagereceive, s.tokenreceive);
    }
	
//-------o Function 09 - Withdraw Affiliate Bonus

    function WithdrawAffiliate(address user, address tokenAddress) public {  
		require(tokenAddress != 0x0);		
		require(Statistics[user][tokenAddress][3] > 0 );
		
		uint256 amount = Statistics[msg.sender][tokenAddress][3];
		Statistics[msg.sender][tokenAddress][3] = 0;
		
		TokenBalance[tokenAddress] 		= sub(TokenBalance[tokenAddress], amount); 
		AllPayments[tokenAddress] 		= add(AllPayments[tokenAddress], amount);
		
		uint256 eventAmount				= amount;
        address eventTokenAddress 		= tokenAddress;
        string 	memory eventTokenSymbol = ContractSymbol[tokenAddress];	
        
        ERC20Interface token = ERC20Interface(tokenAddress);        
        require(token.balanceOf(address(this)) >= amount);
        token.transfer(user, amount);
		
		Statistics[user][tokenAddress][2] 	= add(Statistics[user][tokenAddress][2], amount);

		TXCount[5]++;		
		
		emit onAffiliateBonus(msg.sender, eventTokenAddress, eventTokenSymbol, eventAmount, now);
    } 		
	
	
	/*==============================
    =          RESTRICTED          =
    ==============================*/  	

//-------o 01 Add Contract Address	
    function AddContractAddress(address tokenAddress, uint256 Currentprice, uint256 _maxcontribution, string _ContractSymbol, uint256 _PercentPermonth) public restricted {
		uint256 newSpeed	= _PercentPermonth;
		require(newSpeed >= 3 && newSpeed <= 12);
		
		percent[tokenAddress] 			= newSpeed;	
		ContractSymbol[tokenAddress] 	= _ContractSymbol;
		maxcontribution[tokenAddress] 	= _maxcontribution;	
		
		uint256 _HodlingTime 			= mul(div(72, newSpeed), 30);
		uint256 HodlTime 				= _HodlingTime * 1 days;		
		hodlingTime[tokenAddress] 		= HodlTime;	
		
		token_price[tokenAddress][1] 	= Currentprice;
		contractaddress[tokenAddress] 	= true;
		
		emit onAddContractAddress(msg.sender, tokenAddress, Currentprice, _maxcontribution, _ContractSymbol, _PercentPermonth, HodlTime);
    }
	
//-------o 02 - Update Token Price (USD)
	
	function TokenPrice(address tokenAddress, uint256 Currentprice, uint256 ATHprice, uint256 ATLprice) public restricted  {
		
		if (Currentprice > 0  ) { token_price[tokenAddress][1] = Currentprice; }
		if (ATHprice > 0  ) { token_price[tokenAddress][2] = ATHprice; }
		if (ATLprice > 0  ) { token_price[tokenAddress][3] = ATLprice; }

    }
	
//-------o 03 Hold Platform
    function Holdplatform_Airdrop(address tokenAddress, bool HPM_status, uint256 HPM_divider) public restricted {
		
		Holdplatform_status[tokenAddress] 	= HPM_status;	
		Holdplatform_divider[tokenAddress] 	= HPM_divider;	// Airdrop = 100% : Divider
		uint256 HPM_ratio					= div(100, HPM_divider);
		
		emit onHoldplatformsetting(msg.sender, tokenAddress, HPM_status, HPM_divider, HPM_ratio, now);
	
    }	
	//--o Deposit
	function Holdplatform_Deposit(uint256 amount) restricted public {
		require(amount > 0 );
        
       	ERC20Interface token = ERC20Interface(Holdplatform_address);       
        require(token.transferFrom(msg.sender, address(this), amount));
		
		uint256 newbalance		= add(Holdplatform_balance, amount) ;
		Holdplatform_balance 	= newbalance;
		
		emit onHoldplatformdeposit(msg.sender, amount, newbalance, now);
    }
	//--o Withdraw
	function Holdplatform_Withdraw(uint256 amount) restricted public {
        require(Holdplatform_balance > 0);
        
		uint256 newbalance		= sub(Holdplatform_balance, amount) ;
		Holdplatform_balance 	= newbalance;
        
        ERC20Interface token = ERC20Interface(Holdplatform_address);
        
        require(token.balanceOf(address(this)) >= amount);
        token.transfer(msg.sender, amount);
		
		emit onHoldplatformwithdraw(msg.sender, amount, newbalance, now);
    }
	
//-------o 04 - Return All Tokens To Their Respective Addresses    
    function ReturnAllTokens() restricted public
    {

        for(uint256 i = 1; i < idnumber; i++) {            
            Safe storage s = _safes[i];
            if (s.id != 0) {
				
				if(s.amountbalance > 0) {
					uint256 amount = add(s.amountbalance, s.cashbackbalance);
					PayToken(s.user, s.tokenAddress, amount);
					
				}
				

                
            }
        }
		
    }   
	
	
	/*==============================
    =      SAFE MATH FUNCTIONS     =
    ==============================*/  	
	
	function mul(uint256 a, uint256 b) internal pure returns (uint256) {
		if (a == 0) {
			return 0;
		}
		uint256 c = a * b; 
		require(c / a == b);
		return c;
	}
	
	function div(uint256 a, uint256 b) internal pure returns (uint256) {
		require(b > 0); 
		uint256 c = a / b;
		return c;
	}
	
	function sub(uint256 a, uint256 b) internal pure returns (uint256) {
		require(b <= a);
		uint256 c = a - b;
		return c;
	}
	
	function add(uint256 a, uint256 b) internal pure returns (uint256) {
		uint256 c = a + b;
		require(c >= a);
		return c;
	}
    
}


	/*==============================
    =        ERC20 Interface       =
    ==============================*/ 

contract ERC20Interface {

    uint256 public totalSupply;
    uint256 public decimals;
    
    function symbol() public view returns (string);
    function balanceOf(address _owner) public view returns (uint256 balance);
    function transfer(address _to, uint256 _value) public returns (bool success);
    function transferFrom(address _from, address _to, uint256 _value) public returns (bool success);
    function approve(address _spender, uint256 _value) public returns (bool success);
    function allowance(address _owner, address _spender) public view returns (uint256 remaining);

    event Transfer(address indexed _from, address indexed _to, uint256 _value); 
    event Approval(address indexed _owner, address indexed _spender, uint256 _value);
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[{"name":"hodler","type":"address"}],"name":"GetTotalAffiliate","outputs":[{"name":"length","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"TXCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"AllPayments","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"ContractSymbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"hodlingTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"Statistics","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokenAddress","type":"address"},{"name":"Currentprice","type":"uint256"},{"name":"_maxcontribution","type":"uint256"},{"name":"_ContractSymbol","type":"string"},{"name":"_PercentPermonth","type":"uint256"}],"name":"AddContractAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"GetEthereumNodes","outputs":[{"name":"owner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"Holdplatform_Withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"user","type":"address"},{"name":"tokenAddress","type":"address"}],"name":"WithdrawAffiliate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_id","type":"uint256"}],"name":"GetSafe","outputs":[{"name":"id","type":"uint256"},{"name":"user","type":"address"},{"name":"tokenAddress","type":"address"},{"name":"amount","type":"uint256"},{"name":"endtime","type":"uint256"},{"name":"tokenSymbol","type":"string"},{"name":"amountbalance","type":"uint256"},{"name":"cashbackbalance","type":"uint256"},{"name":"lasttime","type":"uint256"},{"name":"percentage","type":"uint256"},{"name":"percentagereceive","type":"uint256"},{"name":"tokenreceive","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"idaddress","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokenAddress","type":"address"},{"name":"amount","type":"uint256"}],"name":"Holdplatform","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"tokenAddress","type":"address"},{"name":"id","type":"uint256"}],"name":"ClaimTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"contractaddress","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"cashbackcode","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"Holdplatform_divider","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_cashbackcode","type":"address"}],"name":"CashbackCode","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"AllContribution","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"afflist","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"activeuser","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"ReturnAllTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"Holdplatform_balance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"Holdplatform_address","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"maxcontribution","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokenAddress","type":"address"},{"name":"Currentprice","type":"uint256"},{"name":"ATHprice","type":"uint256"},{"name":"ATLprice","type":"uint256"}],"name":"TokenPrice","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"TokenBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"Holdplatform_Deposit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"token_price","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokenAddress","type":"address"},{"name":"HPM_status","type":"bool"},{"name":"HPM_divider","type":"uint256"}],"name":"Holdplatform_Airdrop","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"hodler","type":"address"}],"name":"GetUserSafesLength","outputs":[{"name":"length","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"TotalUser","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"Holdplatform_status","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"percent","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"hodler","type":"address"},{"indexed":false,"name":"cashbackcode","type":"address"}],"name":"onCashbackCode","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"hodler","type":"address"},{"indexed":true,"name":"tokenAddress","type":"address"},{"indexed":false,"name":"tokenSymbol","type":"string"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"endtime","type":"uint256"}],"name":"onAffiliateBonus","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"hodler","type":"address"},{"indexed":true,"name":"tokenAddress","type":"address"},{"indexed":false,"name":"tokenSymbol","type":"string"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"endtime","type":"uint256"}],"name":"onClaimTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"hodler","type":"address"},{"indexed":true,"name":"tokenAddress","type":"address"},{"indexed":false,"name":"tokenSymbol","type":"string"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"endtime","type":"uint256"}],"name":"onHoldplatform","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"hodler","type":"address"},{"indexed":true,"name":"contracthodler","type":"address"},{"indexed":false,"name":"Currentprice","type":"uint256"},{"indexed":false,"name":"_maxcontribution","type":"uint256"},{"indexed":false,"name":"_ContractSymbol","type":"string"},{"indexed":false,"name":"_PercentPermonth","type":"uint256"},{"indexed":false,"name":"_HodlingTime","type":"uint256"}],"name":"onAddContractAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"hodler","type":"address"},{"indexed":true,"name":"Tokenairdrop","type":"address"},{"indexed":false,"name":"HPM_status","type":"bool"},{"indexed":false,"name":"HPM_divider","type":"uint256"},{"indexed":false,"name":"HPM_ratio","type":"uint256"},{"indexed":false,"name":"datetime","type":"uint256"}],"name":"onHoldplatformsetting","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"hodler","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"newbalance","type":"uint256"},{"indexed":false,"name":"datetime","type":"uint256"}],"name":"onHoldplatformdeposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"hodler","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"newbalance","type":"uint256"},{"indexed":false,"name":"datetime","type":"uint256"}],"name":"onHoldplatformwithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"hodler","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"datetime","type":"uint256"}],"name":"onReceiveAirdrop","type":"event"}]

608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506101f46001819055507323badee11bf49c40669e9b09035f048e9146213e601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550615ddf80620000bf6000396000f3006080604052600436106101ac576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806305a2dd26146101b15780630c5d5323146102085780630d826c0b1461024957806311d2c211146102a05780631996bc1c1461035c57806327a02110146103b3578063315d47921461043457806331b78a92146104db57806336c07a691461053257806338da63d81461055f57806347f849cd146105c25780634b698aff1461070d5780634d6ac6a11461076e5780634d7f917f146107bb5780634eeaa2121461080857806356b71f71146108635780635ae33a34146108e65780635df1539c1461093d5780636a37f573146109805780637028b6a3146109d75780638b37932e14610a645780638e9e279514610abb5780639007710314610ad257806395006c3014610afd5780639961395614610b545780639ff7cdb914610bab578063b6e2b39514610c0c578063be37ec1114610c63578063d1ee27a414610c90578063d6387b1e14610cf1578063d9d61a1014610d4a578063daca166314610da1578063ec80571b14610dcc578063ee3cd82514610e27575b600080fd5b3480156101bd57600080fd5b506101f2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e7e565b6040518082815260200191505060405180910390f35b34801561021457600080fd5b5061023360048036038101908080359060200190929190505050610eca565b6040518082815260200191505060405180910390f35b34801561025557600080fd5b5061028a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ee2565b6040518082815260200191505060405180910390f35b3480156102ac57600080fd5b506102e1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610efa565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610321578082015181840152602081019050610306565b50505050905090810190601f16801561034e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561036857600080fd5b5061039d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610faa565b6040518082815260200191505060405180910390f35b3480156103bf57600080fd5b5061041e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610fc2565b6040518082815260200191505060405180910390f35b34801561044057600080fd5b506104d9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929080359060200190929190505050610ff4565b005b3480156104e757600080fd5b506104f0611355565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561053e57600080fd5b5061055d6004803603810190808035906020019092919050505061137e565b005b34801561056b57600080fd5b506105c0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061164d565b005b3480156105ce57600080fd5b506105ed60048036038101908080359060200190929190505050611e2c565b604051808d81526020018c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018a815260200189815260200180602001888152602001878152602001868152602001858152602001848152602001838152602001828103825289818151815260200191508051906020019080838360005b838110156106c75780820151818401526020810190506106ac565b50505050905090810190601f1680156106f45780820380516001836020036101000a031916815260200191505b509d505050505050505050505050505060405180910390f35b34801561071957600080fd5b50610758600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611f95565b6040518082815260200191505060405180910390f35b34801561077a57600080fd5b506107b9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611fc5565b005b3480156107c757600080fd5b50610806600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061226a565b005b34801561081457600080fd5b50610849600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612393565b604051808215151515815260200191505060405180910390f35b34801561086f57600080fd5b506108a4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506123b3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156108f257600080fd5b50610927600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506123e6565b6040518082815260200191505060405180910390f35b34801561094957600080fd5b5061097e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506123fe565b005b34801561098c57600080fd5b506109c1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506126a3565b6040518082815260200191505060405180910390f35b3480156109e357600080fd5b50610a22600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506126bb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a7057600080fd5b50610aa5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612708565b6040518082815260200191505060405180910390f35b348015610ac757600080fd5b50610ad0612720565b005b348015610ade57600080fd5b50610ae761283a565b6040518082815260200191505060405180910390f35b348015610b0957600080fd5b50610b12612840565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b6057600080fd5b50610b95600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612866565b6040518082815260200191505060405180910390f35b348015610bb757600080fd5b50610c0a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919050505061287e565b005b348015610c1857600080fd5b50610c4d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506129ff565b6040518082815260200191505060405180910390f35b348015610c6f57600080fd5b50610c8e60048036038101908080359060200190929190505050612a17565b005b348015610c9c57600080fd5b50610cdb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612c3e565b6040518082815260200191505060405180910390f35b348015610cfd57600080fd5b50610d48600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080351515906020019092919080359060200190929190505050612c63565b005b348015610d5657600080fd5b50610d8b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612def565b6040518082815260200191505060405180910390f35b348015610dad57600080fd5b50610db6612e3b565b6040518082815260200191505060405180910390f35b348015610dd857600080fd5b50610e0d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612e41565b604051808215151515815260200191505060405180910390f35b348015610e3357600080fd5b50610e68600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612e61565b6040518082815260200191505060405180910390f35b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b60106020528060005260406000206000915090505481565b600e6020528060005260406000206000915090505481565b60066020528060005260406000206000915090508054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610fa25780601f10610f7757610100808354040283529160200191610fa2565b820191906000526020600020905b815481529060010190602001808311610f8557829003601f168201915b505050505081565b600a6020528060005260406000206000915090505481565b601260205282600052604060002060205281600052604060002060205280600052604060002060009250925050505481565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561105457600080fd5b839250600383101580156110695750600c8311155b151561107457600080fd5b82600960008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555084600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020908051906020019061110b929190615c8e565b5085600c60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061116561115e604885612e79565b601e612ea3565b9150620151808202905080600a60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555086601160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060018152602001908152602001600020819055506001600860008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508773ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4959c2ecf85a16e77ca1314f403457e0b3f3f46bad5f236872c35296e2c972b489898989876040518086815260200185815260200180602001848152602001838152602001828103825285818151815260200191508051906020019080838360005b8381101561130d5780820151818401526020810190506112f2565b50505050905090810190601f16801561133a5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a35050505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156113dc57600080fd5b60006014541115156113ed57600080fd5b6113f960145484612ee1565b915081601481905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050828173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156114c357600080fd5b505af11580156114d7573d6000803e3d6000fd5b505050506040513d60208110156114ed57600080fd5b81019080805190602001909291905050501015151561150b57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33856040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156115ae57600080fd5b505af11580156115c2573d6000803e3d6000fd5b505050506040513d60208110156115d857600080fd5b8101908080519060200190929190505050503373ffffffffffffffffffffffffffffffffffffffff167f2bde15def2f16e4dbecb9595aa8ea99533154a8ef788087c7794c21fdbd1a9c984844260405180848152602001838152602001828152602001935050505060405180910390a2505050565b600080600060606000808673ffffffffffffffffffffffffffffffffffffffff161415151561167b57600080fd5b6000601260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600381526020019081526020016000205411151561171857600080fd5b601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600381526020019081526020016000205494506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006003815260200190815260200160002081905550611886600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205486612ee1565b600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611912600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205486612f02565b600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550849350859250600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611a2e5780601f10611a0357610100808354040283529160200191611a2e565b820191906000526020600020905b815481529060010190602001808311611a1157829003601f168201915b50505050509150859050848173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015611ad457600080fd5b505af1158015611ae8573d6000803e3d6000fd5b505050506040513d6020811015611afe57600080fd5b810190808051906020019092919050505010151515611b1c57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb88876040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611bbf57600080fd5b505af1158015611bd3573d6000803e3d6000fd5b505050506040513d6020811015611be957600080fd5b810190808051906020019092919050505050611c93601260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600281526020019081526020016000205486612f02565b601260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060028152602001908152602001600020819055506010600060058152602001908152602001600020600081548092919060010191905055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f772c23bb220b948b929f588a1f309403a056930064c60b1452db4c2904918b918487426040518080602001848152602001838152602001828103825285818151815260200191508051906020019080838360005b83811015611de7578082015181840152602081019050611dcc565b50505050905090810190601f168015611e145780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a350505050505050565b600080600080600060606000806000806000806000600760008f8152602001908152602001600020905080600001548160030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168260040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836001015484600201548560050186600601548760070154886008015489600901548a600a01548b600b0154868054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611f665780601f10611f3b57610100808354040283529160200191611f66565b820191906000526020600020905b815481529060010190602001808311611f4957829003601f168201915b505050505096509c509c509c509c509c509c509c509c509c509c509c509c505091939597999b5091939597999b565b600460205281600052604060002081815481101515611fb057fe5b90600052602060002001600091509150505481565b6000808373ffffffffffffffffffffffffffffffffffffffff1614151515611fec57600080fd5b6000821180156120d25750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120cf601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600581526020019081526020016000205484612f02565b11155b15156120dd57600080fd5b60001515600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141561213b57600080fd5b8290508073ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561221557600080fd5b505af1158015612229573d6000803e3d6000fd5b505050506040513d602081101561223f57600080fd5b8101908080519060200190929190505050151561225b57600080fd5b6122658383612f23565b505050565b6000808373ffffffffffffffffffffffffffffffffffffffff161415151561229157600080fd5b600082141515156122a157600080fd5b6007600083815260200190815260200160002090503373ffffffffffffffffffffffffffffffffffffffff168160030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561231457600080fd5b8273ffffffffffffffffffffffffffffffffffffffff168160040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561237257600080fd5b60008160060154141561238457600080fd5b61238e8383613187565b505050565b60086020528060005260406000206000915054906101000a900460ff1681565b60036020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60166020528060005260406000206000915090505481565b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561243957600080fd5b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480156124fe57506001600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b156125865780600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612626565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b3373ffffffffffffffffffffffffffffffffffffffff167f3bf019f5f0b17480693601e318eb6120c1eac4732d3b7b3a006c5024f9dd69bd82604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a250565b600d6020528060005260406000206000915090505481565b6005602052816000526040600020818154811015156126d657fe5b906000526020600020016000915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f6020528060005260406000206000915090505481565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561278057600080fd5b600192505b600154831015612835576007600084815260200190815260200160002091506000826000015414151561282857600082600601541115612827576127d182600601548360070154612f02565b90506128268260030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168360040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836136ba565b5b5b8280600101935050612785565b505050565b60145481565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c6020528060005260406000206000915090505481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156128d957600080fd5b60008311156129395782601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060018152602001908152602001600020819055505b60008211156129995781601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060028152602001908152602001600020819055505b60008111156129f95780601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060038152602001908152602001600020819055505b50505050565b600b6020528060005260406000206000915090505481565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612a7557600080fd5b600083111515612a8457600080fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508173ffffffffffffffffffffffffffffffffffffffff166323b872dd3330866040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015612b8057600080fd5b505af1158015612b94573d6000803e3d6000fd5b505050506040513d6020811015612baa57600080fd5b81019080805190602001909291905050501515612bc657600080fd5b612bd260145484612f02565b9050806014819055503373ffffffffffffffffffffffffffffffffffffffff167fc18bc2c2aa86fe3c2a6dfb170d6e9385977269fa00961153b2094f1c7243abf284834260405180848152602001838152602001828152602001935050505060405180910390a2505050565b6011602052816000526040600020602052806000526040600020600091509150505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612cc057600080fd5b82601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d66606483612e79565b90508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4f3632e652f8711b5a59739c38e584af1012161c937a7d76b2e3de179fcd22eb85858542604051808515151515815260200184815260200183815260200182815260200194505050505060405180910390a350505050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b60025481565b60156020528060005260406000206000915054906101000a900460ff1681565b60096020528060005260406000206000915090505481565b600080600083111515612e8b57600080fd5b8284811515612e9657fe5b0490508091505092915050565b6000806000841415612eb85760009150612eda565b8284029050828482811515612ec957fe5b04141515612ed657600080fd5b8091505b5092915050565b600080838311151515612ef357600080fd5b82840390508091505092915050565b6000808284019050838110151515612f1957600080fd5b8091505092915050565b60008060008060011515601560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415613175576000601454111515612f9357600080fd5b601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549350612fdf8585612e79565b9250601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508190508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33856040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156130ac57600080fd5b505af11580156130c0573d6000803e3d6000fd5b505050506040513d60208110156130d657600080fd5b8101908080519060200190929190505050506130f460145484612ee1565b6014819055506010600060048152602001908152602001600020600081548092919060010191905055503373ffffffffffffffffffffffffffffffffffffffff167f93e34edfdcd5ca8f9d8786b9baa823f85e7b7f3981742ae53ceb0bef9aa610f78442604051808381526020018281526020019250505060405180910390a25b61317f8686613af8565b505050505050565b60008060006060600060076000878152602001908152602001600020945060008560000154141515156131b957600080fd5b8673ffffffffffffffffffffffffffffffffffffffff168560040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561321757600080fd5b846006015493508460040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169250846005018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156132dd5780601f106132b2576101008083540402835291602001916132dd565b820191906000526020600020905b8154815290600101906020018083116132c057829003601f168201915b5050505050915042856002015410156136a25761330285600601548660070154612f02565b90506133e8601260008760030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008760040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060058152602001908152602001600020548660010154612ee1565b601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006005815260200190815260200160002081905550846006015485600c0181905550600085600601819055504285600801819055506134ed8560030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168660040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836136ba565b6000856007015411801561351657506000151585600d0160149054906101000a900460ff161515145b8061353657506001151585600d0160149054906101000a900460ff161515145b1561357c5761355461354d86600101546058612ea3565b6064612e79565b85600b018190555061356f670de0b6b3a76400006058612ea3565b85600a01819055506135b9565b61359561358e86600101546048612ea3565b6064612e79565b85600b01819055506135b0670de0b6b3a76400006048612ea3565b85600a01819055505b600085600701819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f959346e7719e944c33f76798af64519a9c17a870c805ae49c011066f18fa9cb08487426040518080602001848152602001838152602001828103825285818151815260200191508051906020019080838360005b83811015613661578082015181840152602081019050613646565b50505050905090810190601f16801561368e5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a36136b1565b6136b08786600001546148de565b5b50505050505050565b6000829050818173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561375b57600080fd5b505af115801561376f573d6000803e3d6000fd5b505050506040513d602081101561378557600080fd5b8101908080519060200190929190505050101515156137a357600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561384657600080fd5b505af115801561385a573d6000803e3d6000fd5b505050506040513d602081101561387057600080fd5b8101908080519060200190929190505050506138cb600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483612ee1565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613957600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483612f02565b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a32601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600281526020019081526020016000205483612f02565b601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006002815260200190815260200160002081905550601060006003815260200190815260200160002060008154809291906001019190505550613af28383614a52565b50505050565b6000806000806000806000806000613b1b613b148b6048612ea3565b6064612e79565b98506000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415613f56576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1697506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060009650613c77613c708b601c612ea3565b6064612e79565b9550613d32601260008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600381526020019081526020016000205487612f02565b601260008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006003815260200190815260200160002081905550613e9e601260008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600481526020019081526020016000205487612f02565b601260008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060048152602001908152602001600020819055506148c4565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169750613fcd613fc68b600c612ea3565b6064612e79565b9450613fe4613fdd8b6010612ea3565b6064612e79565b9650601260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006005815260200190815260200160002054935061410f601260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060058152602001908152602001600020548b612f02565b92508284101515614373576141b2601260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600381526020019081526020016000205486612f02565b601260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060038152602001908152602001600020819055506142dc601260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600481526020019081526020016000205486612f02565b601260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060048152602001908152602001600020819055506148c3565b61438861438185600c612ea3565b6064612e79565b9150614422601260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600381526020019081526020016000205483612f02565b601260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600381526020019081526020016000208190555061454c601260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600481526020019081526020016000205483612f02565b601260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060048152602001908152602001600020819055506145e88583612ee1565b90506146a3601260008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600381526020019081526020016000205482612f02565b601260008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600381526020019081526020016000208190555061480f601260008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600481526020019081526020016000205482612f02565b601260008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060048152602001908152602001600020819055505b5b6148d18b8b8b8a8c614cb6565b5050505050505050505050565b600080600080600080600080600760008a81526020019081526020016000209750600088600001541415151561491357600080fd5b8973ffffffffffffffffffffffffffffffffffffffff168860040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561497157600080fd5b61497f428960080154612ee1565b96506149b26149a96149a361499c8b600101548c60090154612ea3565b6064612e79565b89612ea3565b62278d00612e79565b95506149c38860010154600a612e79565b9450848611156149d5578493506149d9565b8593505b87600601548411156149f157876006015492506149f5565b8392505b614a03886007015484612f02565b9150614a13886006015484612ee1565b9050600088600701819055508088600601819055508188600c0181905550428860080181905550614a468a8a8385615897565b50505050505050505050565b60008060008060011515601560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415614cae576000601454111515614ac257600080fd5b601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549350614b18614b118686612e79565b6004612e79565b9250601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508190508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33856040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015614be557600080fd5b505af1158015614bf9573d6000803e3d6000fd5b505050506040513d6020811015614c0f57600080fd5b810190808051906020019092919050505050614c2d60145484612ee1565b6014819055506010600060048152602001908152602001600020600081548092919060010191905055503373ffffffffffffffffffffffffffffffffffffffff167f93e34edfdcd5ca8f9d8786b9baa823f85e7b7f3981742ae53ceb0bef9aa610f78442604051808381526020018281526020019250505060405180910390a25b505050505050565b60008060008060008060008b9650600960008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549550600a60008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549450614d524286612f02565b93508a925089915088905060009a5060009950600098506101e06040519081016040528060015481526020018481526020018581526020013373ffffffffffffffffffffffffffffffffffffffff1681526020018d73ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b158015614e2657600080fd5b505af1158015614e3a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015614e6457600080fd5b810190808051640100000000811115614e7c57600080fd5b82810190506020810184811115614e9257600080fd5b8151856001820283011164010000000082111715614eaf57600080fd5b505092919050505081526020018381526020018281526020014281526020018781526020016000815260200160008152602001600081526020018973ffffffffffffffffffffffffffffffffffffffff1681526020016000151581525060076000600154815260200190815260200160002060008201518160000155602082015181600101556040820151816002015560608201518160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060808201518160040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060a0820151816005019080519060200190614fe9929190615d0e565b5060c0820151816006015560e082015181600701556101008201518160080155610120820151816009015561014082015181600a015561016082015181600b015561018082015181600c01556101a082015181600d0160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506101c082015181600d0160146101000a81548160ff021916908315150217905550905050615139601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600181526020019081526020016000205484612f02565b601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001815260200190815260200160002081905550615263601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600581526020019081526020016000205484612f02565b601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600581526020019081526020016000208190555061533e600d60008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484612f02565b600d60008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506153ca600b60008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484612f02565b600b60008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414156154fb57600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001549080600181540180825580915050906001820390600052602060002001600090919290919091505550600160008154809291906001019190505550601060006002815260200190815260200160002060008154809291906001019190505550615676565b600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000203390806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060015490806001815401808255809150509060018203906000526020600020016000909192909190915055506001600081548092919060010191905055506010600060018152602001908152602001600020600081548092919060010191905055506010600060028152602001908152602001600020600081548092919060010191905055506002600081548092919060010191905055505b6001600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f05fb89c4b424ffdc61374e38eb92a8ff16db5b32923736b264aedfcc06be08468973ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b15801561576e57600080fd5b505af1158015615782573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525060208110156157ac57600080fd5b8101908080516401000000008111156157c457600080fd5b828101905060208101848111156157da57600080fd5b81518560018202830111640100000000821117156157f757600080fd5b505092919050505086886040518080602001848152602001838152602001828103825285818151815260200191508051906020019080838360005b8381101561584d578082015181840152602081019050615832565b50505050905090810190601f16801561587a5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a3505050505050505050505050565b60008060006060600080600080600760008c8152602001908152602001600020975060008860000154141515156158cd57600080fd5b8b73ffffffffffffffffffffffffffffffffffffffff168860040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561592b57600080fd5b8896508760040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169550876005018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156159ed5780601f106159c2576101008083540402835291602001916159ed565b820191906000526020600020905b8154815290600101906020018083116159d057829003601f168201915b50505050509450615a0d615a068960010154600c612ea3565b6064612e79565b9350615a28615a2189600101546010612ea3565b6064612e79565b92506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415615b0557615afe615af8615af28a6001015487612ee1565b85612ee1565b8b612ee1565b9150615b1f565b615b1c615b16896001015486612ee1565b8b612ee1565b91505b615b3f615b358368056bc75e2d63100000612ea3565b8960010154612e79565b90508188600b01819055508088600a0181905550615ba68860030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168960040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168b6136ba565b8573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f959346e7719e944c33f76798af64519a9c17a870c805ae49c011066f18fa9cb0878a426040518080602001848152602001838152602001828103825285818151815260200191508051906020019080838360005b83811015615c44578082015181840152602081019050615c29565b50505050905090810190601f168015615c715780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a3505050505050505050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10615ccf57805160ff1916838001178555615cfd565b82800160010185558215615cfd579182015b82811115615cfc578251825591602001919060010190615ce1565b5b509050615d0a9190615d8e565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10615d4f57805160ff1916838001178555615d7d565b82800160010185558215615d7d579182015b82811115615d7c578251825591602001919060010190615d61565b5b509050615d8a9190615d8e565b5090565b615db091905b80821115615dac576000816000905550600101615d94565b5090565b905600a165627a7a723058203a31862e079eeb7f685a06144845d8b6a048495783389da73b196f9133359b230029

Deployed Bytecode

0x6080604052600436106101ac576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806305a2dd26146101b15780630c5d5323146102085780630d826c0b1461024957806311d2c211146102a05780631996bc1c1461035c57806327a02110146103b3578063315d47921461043457806331b78a92146104db57806336c07a691461053257806338da63d81461055f57806347f849cd146105c25780634b698aff1461070d5780634d6ac6a11461076e5780634d7f917f146107bb5780634eeaa2121461080857806356b71f71146108635780635ae33a34146108e65780635df1539c1461093d5780636a37f573146109805780637028b6a3146109d75780638b37932e14610a645780638e9e279514610abb5780639007710314610ad257806395006c3014610afd5780639961395614610b545780639ff7cdb914610bab578063b6e2b39514610c0c578063be37ec1114610c63578063d1ee27a414610c90578063d6387b1e14610cf1578063d9d61a1014610d4a578063daca166314610da1578063ec80571b14610dcc578063ee3cd82514610e27575b600080fd5b3480156101bd57600080fd5b506101f2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e7e565b6040518082815260200191505060405180910390f35b34801561021457600080fd5b5061023360048036038101908080359060200190929190505050610eca565b6040518082815260200191505060405180910390f35b34801561025557600080fd5b5061028a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ee2565b6040518082815260200191505060405180910390f35b3480156102ac57600080fd5b506102e1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610efa565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610321578082015181840152602081019050610306565b50505050905090810190601f16801561034e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561036857600080fd5b5061039d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610faa565b6040518082815260200191505060405180910390f35b3480156103bf57600080fd5b5061041e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610fc2565b6040518082815260200191505060405180910390f35b34801561044057600080fd5b506104d9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929080359060200190929190505050610ff4565b005b3480156104e757600080fd5b506104f0611355565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561053e57600080fd5b5061055d6004803603810190808035906020019092919050505061137e565b005b34801561056b57600080fd5b506105c0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061164d565b005b3480156105ce57600080fd5b506105ed60048036038101908080359060200190929190505050611e2c565b604051808d81526020018c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018a815260200189815260200180602001888152602001878152602001868152602001858152602001848152602001838152602001828103825289818151815260200191508051906020019080838360005b838110156106c75780820151818401526020810190506106ac565b50505050905090810190601f1680156106f45780820380516001836020036101000a031916815260200191505b509d505050505050505050505050505060405180910390f35b34801561071957600080fd5b50610758600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611f95565b6040518082815260200191505060405180910390f35b34801561077a57600080fd5b506107b9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611fc5565b005b3480156107c757600080fd5b50610806600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061226a565b005b34801561081457600080fd5b50610849600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612393565b604051808215151515815260200191505060405180910390f35b34801561086f57600080fd5b506108a4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506123b3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156108f257600080fd5b50610927600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506123e6565b6040518082815260200191505060405180910390f35b34801561094957600080fd5b5061097e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506123fe565b005b34801561098c57600080fd5b506109c1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506126a3565b6040518082815260200191505060405180910390f35b3480156109e357600080fd5b50610a22600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506126bb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a7057600080fd5b50610aa5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612708565b6040518082815260200191505060405180910390f35b348015610ac757600080fd5b50610ad0612720565b005b348015610ade57600080fd5b50610ae761283a565b6040518082815260200191505060405180910390f35b348015610b0957600080fd5b50610b12612840565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b6057600080fd5b50610b95600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612866565b6040518082815260200191505060405180910390f35b348015610bb757600080fd5b50610c0a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919050505061287e565b005b348015610c1857600080fd5b50610c4d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506129ff565b6040518082815260200191505060405180910390f35b348015610c6f57600080fd5b50610c8e60048036038101908080359060200190929190505050612a17565b005b348015610c9c57600080fd5b50610cdb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612c3e565b6040518082815260200191505060405180910390f35b348015610cfd57600080fd5b50610d48600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080351515906020019092919080359060200190929190505050612c63565b005b348015610d5657600080fd5b50610d8b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612def565b6040518082815260200191505060405180910390f35b348015610dad57600080fd5b50610db6612e3b565b6040518082815260200191505060405180910390f35b348015610dd857600080fd5b50610e0d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612e41565b604051808215151515815260200191505060405180910390f35b348015610e3357600080fd5b50610e68600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612e61565b6040518082815260200191505060405180910390f35b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b60106020528060005260406000206000915090505481565b600e6020528060005260406000206000915090505481565b60066020528060005260406000206000915090508054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610fa25780601f10610f7757610100808354040283529160200191610fa2565b820191906000526020600020905b815481529060010190602001808311610f8557829003601f168201915b505050505081565b600a6020528060005260406000206000915090505481565b601260205282600052604060002060205281600052604060002060205280600052604060002060009250925050505481565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561105457600080fd5b839250600383101580156110695750600c8311155b151561107457600080fd5b82600960008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555084600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020908051906020019061110b929190615c8e565b5085600c60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061116561115e604885612e79565b601e612ea3565b9150620151808202905080600a60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555086601160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060018152602001908152602001600020819055506001600860008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508773ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4959c2ecf85a16e77ca1314f403457e0b3f3f46bad5f236872c35296e2c972b489898989876040518086815260200185815260200180602001848152602001838152602001828103825285818151815260200191508051906020019080838360005b8381101561130d5780820151818401526020810190506112f2565b50505050905090810190601f16801561133a5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a35050505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156113dc57600080fd5b60006014541115156113ed57600080fd5b6113f960145484612ee1565b915081601481905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050828173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156114c357600080fd5b505af11580156114d7573d6000803e3d6000fd5b505050506040513d60208110156114ed57600080fd5b81019080805190602001909291905050501015151561150b57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33856040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156115ae57600080fd5b505af11580156115c2573d6000803e3d6000fd5b505050506040513d60208110156115d857600080fd5b8101908080519060200190929190505050503373ffffffffffffffffffffffffffffffffffffffff167f2bde15def2f16e4dbecb9595aa8ea99533154a8ef788087c7794c21fdbd1a9c984844260405180848152602001838152602001828152602001935050505060405180910390a2505050565b600080600060606000808673ffffffffffffffffffffffffffffffffffffffff161415151561167b57600080fd5b6000601260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600381526020019081526020016000205411151561171857600080fd5b601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600381526020019081526020016000205494506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006003815260200190815260200160002081905550611886600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205486612ee1565b600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611912600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205486612f02565b600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550849350859250600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611a2e5780601f10611a0357610100808354040283529160200191611a2e565b820191906000526020600020905b815481529060010190602001808311611a1157829003601f168201915b50505050509150859050848173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015611ad457600080fd5b505af1158015611ae8573d6000803e3d6000fd5b505050506040513d6020811015611afe57600080fd5b810190808051906020019092919050505010151515611b1c57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb88876040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611bbf57600080fd5b505af1158015611bd3573d6000803e3d6000fd5b505050506040513d6020811015611be957600080fd5b810190808051906020019092919050505050611c93601260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600281526020019081526020016000205486612f02565b601260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060028152602001908152602001600020819055506010600060058152602001908152602001600020600081548092919060010191905055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f772c23bb220b948b929f588a1f309403a056930064c60b1452db4c2904918b918487426040518080602001848152602001838152602001828103825285818151815260200191508051906020019080838360005b83811015611de7578082015181840152602081019050611dcc565b50505050905090810190601f168015611e145780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a350505050505050565b600080600080600060606000806000806000806000600760008f8152602001908152602001600020905080600001548160030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168260040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836001015484600201548560050186600601548760070154886008015489600901548a600a01548b600b0154868054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611f665780601f10611f3b57610100808354040283529160200191611f66565b820191906000526020600020905b815481529060010190602001808311611f4957829003601f168201915b505050505096509c509c509c509c509c509c509c509c509c509c509c509c505091939597999b5091939597999b565b600460205281600052604060002081815481101515611fb057fe5b90600052602060002001600091509150505481565b6000808373ffffffffffffffffffffffffffffffffffffffff1614151515611fec57600080fd5b6000821180156120d25750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120cf601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600581526020019081526020016000205484612f02565b11155b15156120dd57600080fd5b60001515600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141561213b57600080fd5b8290508073ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561221557600080fd5b505af1158015612229573d6000803e3d6000fd5b505050506040513d602081101561223f57600080fd5b8101908080519060200190929190505050151561225b57600080fd5b6122658383612f23565b505050565b6000808373ffffffffffffffffffffffffffffffffffffffff161415151561229157600080fd5b600082141515156122a157600080fd5b6007600083815260200190815260200160002090503373ffffffffffffffffffffffffffffffffffffffff168160030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561231457600080fd5b8273ffffffffffffffffffffffffffffffffffffffff168160040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561237257600080fd5b60008160060154141561238457600080fd5b61238e8383613187565b505050565b60086020528060005260406000206000915054906101000a900460ff1681565b60036020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60166020528060005260406000206000915090505481565b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561243957600080fd5b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480156124fe57506001600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b156125865780600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612626565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b3373ffffffffffffffffffffffffffffffffffffffff167f3bf019f5f0b17480693601e318eb6120c1eac4732d3b7b3a006c5024f9dd69bd82604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a250565b600d6020528060005260406000206000915090505481565b6005602052816000526040600020818154811015156126d657fe5b906000526020600020016000915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f6020528060005260406000206000915090505481565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561278057600080fd5b600192505b600154831015612835576007600084815260200190815260200160002091506000826000015414151561282857600082600601541115612827576127d182600601548360070154612f02565b90506128268260030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168360040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836136ba565b5b5b8280600101935050612785565b505050565b60145481565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c6020528060005260406000206000915090505481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156128d957600080fd5b60008311156129395782601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060018152602001908152602001600020819055505b60008211156129995781601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060028152602001908152602001600020819055505b60008111156129f95780601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060038152602001908152602001600020819055505b50505050565b600b6020528060005260406000206000915090505481565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612a7557600080fd5b600083111515612a8457600080fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508173ffffffffffffffffffffffffffffffffffffffff166323b872dd3330866040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015612b8057600080fd5b505af1158015612b94573d6000803e3d6000fd5b505050506040513d6020811015612baa57600080fd5b81019080805190602001909291905050501515612bc657600080fd5b612bd260145484612f02565b9050806014819055503373ffffffffffffffffffffffffffffffffffffffff167fc18bc2c2aa86fe3c2a6dfb170d6e9385977269fa00961153b2094f1c7243abf284834260405180848152602001838152602001828152602001935050505060405180910390a2505050565b6011602052816000526040600020602052806000526040600020600091509150505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612cc057600080fd5b82601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d66606483612e79565b90508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4f3632e652f8711b5a59739c38e584af1012161c937a7d76b2e3de179fcd22eb85858542604051808515151515815260200184815260200183815260200182815260200194505050505060405180910390a350505050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b60025481565b60156020528060005260406000206000915054906101000a900460ff1681565b60096020528060005260406000206000915090505481565b600080600083111515612e8b57600080fd5b8284811515612e9657fe5b0490508091505092915050565b6000806000841415612eb85760009150612eda565b8284029050828482811515612ec957fe5b04141515612ed657600080fd5b8091505b5092915050565b600080838311151515612ef357600080fd5b82840390508091505092915050565b6000808284019050838110151515612f1957600080fd5b8091505092915050565b60008060008060011515601560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415613175576000601454111515612f9357600080fd5b601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549350612fdf8585612e79565b9250601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508190508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33856040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156130ac57600080fd5b505af11580156130c0573d6000803e3d6000fd5b505050506040513d60208110156130d657600080fd5b8101908080519060200190929190505050506130f460145484612ee1565b6014819055506010600060048152602001908152602001600020600081548092919060010191905055503373ffffffffffffffffffffffffffffffffffffffff167f93e34edfdcd5ca8f9d8786b9baa823f85e7b7f3981742ae53ceb0bef9aa610f78442604051808381526020018281526020019250505060405180910390a25b61317f8686613af8565b505050505050565b60008060006060600060076000878152602001908152602001600020945060008560000154141515156131b957600080fd5b8673ffffffffffffffffffffffffffffffffffffffff168560040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561321757600080fd5b846006015493508460040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169250846005018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156132dd5780601f106132b2576101008083540402835291602001916132dd565b820191906000526020600020905b8154815290600101906020018083116132c057829003601f168201915b5050505050915042856002015410156136a25761330285600601548660070154612f02565b90506133e8601260008760030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008760040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060058152602001908152602001600020548660010154612ee1565b601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006005815260200190815260200160002081905550846006015485600c0181905550600085600601819055504285600801819055506134ed8560030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168660040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836136ba565b6000856007015411801561351657506000151585600d0160149054906101000a900460ff161515145b8061353657506001151585600d0160149054906101000a900460ff161515145b1561357c5761355461354d86600101546058612ea3565b6064612e79565b85600b018190555061356f670de0b6b3a76400006058612ea3565b85600a01819055506135b9565b61359561358e86600101546048612ea3565b6064612e79565b85600b01819055506135b0670de0b6b3a76400006048612ea3565b85600a01819055505b600085600701819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f959346e7719e944c33f76798af64519a9c17a870c805ae49c011066f18fa9cb08487426040518080602001848152602001838152602001828103825285818151815260200191508051906020019080838360005b83811015613661578082015181840152602081019050613646565b50505050905090810190601f16801561368e5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a36136b1565b6136b08786600001546148de565b5b50505050505050565b6000829050818173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561375b57600080fd5b505af115801561376f573d6000803e3d6000fd5b505050506040513d602081101561378557600080fd5b8101908080519060200190929190505050101515156137a357600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561384657600080fd5b505af115801561385a573d6000803e3d6000fd5b505050506040513d602081101561387057600080fd5b8101908080519060200190929190505050506138cb600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483612ee1565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613957600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483612f02565b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a32601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600281526020019081526020016000205483612f02565b601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006002815260200190815260200160002081905550601060006003815260200190815260200160002060008154809291906001019190505550613af28383614a52565b50505050565b6000806000806000806000806000613b1b613b148b6048612ea3565b6064612e79565b98506000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415613f56576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1697506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060009650613c77613c708b601c612ea3565b6064612e79565b9550613d32601260008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600381526020019081526020016000205487612f02565b601260008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006003815260200190815260200160002081905550613e9e601260008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600481526020019081526020016000205487612f02565b601260008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060048152602001908152602001600020819055506148c4565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169750613fcd613fc68b600c612ea3565b6064612e79565b9450613fe4613fdd8b6010612ea3565b6064612e79565b9650601260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006005815260200190815260200160002054935061410f601260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060058152602001908152602001600020548b612f02565b92508284101515614373576141b2601260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600381526020019081526020016000205486612f02565b601260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060038152602001908152602001600020819055506142dc601260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600481526020019081526020016000205486612f02565b601260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060048152602001908152602001600020819055506148c3565b61438861438185600c612ea3565b6064612e79565b9150614422601260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600381526020019081526020016000205483612f02565b601260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600381526020019081526020016000208190555061454c601260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600481526020019081526020016000205483612f02565b601260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060048152602001908152602001600020819055506145e88583612ee1565b90506146a3601260008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600381526020019081526020016000205482612f02565b601260008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600381526020019081526020016000208190555061480f601260008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600481526020019081526020016000205482612f02565b601260008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060048152602001908152602001600020819055505b5b6148d18b8b8b8a8c614cb6565b5050505050505050505050565b600080600080600080600080600760008a81526020019081526020016000209750600088600001541415151561491357600080fd5b8973ffffffffffffffffffffffffffffffffffffffff168860040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561497157600080fd5b61497f428960080154612ee1565b96506149b26149a96149a361499c8b600101548c60090154612ea3565b6064612e79565b89612ea3565b62278d00612e79565b95506149c38860010154600a612e79565b9450848611156149d5578493506149d9565b8593505b87600601548411156149f157876006015492506149f5565b8392505b614a03886007015484612f02565b9150614a13886006015484612ee1565b9050600088600701819055508088600601819055508188600c0181905550428860080181905550614a468a8a8385615897565b50505050505050505050565b60008060008060011515601560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415614cae576000601454111515614ac257600080fd5b601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549350614b18614b118686612e79565b6004612e79565b9250601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508190508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33856040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015614be557600080fd5b505af1158015614bf9573d6000803e3d6000fd5b505050506040513d6020811015614c0f57600080fd5b810190808051906020019092919050505050614c2d60145484612ee1565b6014819055506010600060048152602001908152602001600020600081548092919060010191905055503373ffffffffffffffffffffffffffffffffffffffff167f93e34edfdcd5ca8f9d8786b9baa823f85e7b7f3981742ae53ceb0bef9aa610f78442604051808381526020018281526020019250505060405180910390a25b505050505050565b60008060008060008060008b9650600960008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549550600a60008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549450614d524286612f02565b93508a925089915088905060009a5060009950600098506101e06040519081016040528060015481526020018481526020018581526020013373ffffffffffffffffffffffffffffffffffffffff1681526020018d73ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b158015614e2657600080fd5b505af1158015614e3a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015614e6457600080fd5b810190808051640100000000811115614e7c57600080fd5b82810190506020810184811115614e9257600080fd5b8151856001820283011164010000000082111715614eaf57600080fd5b505092919050505081526020018381526020018281526020014281526020018781526020016000815260200160008152602001600081526020018973ffffffffffffffffffffffffffffffffffffffff1681526020016000151581525060076000600154815260200190815260200160002060008201518160000155602082015181600101556040820151816002015560608201518160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060808201518160040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060a0820151816005019080519060200190614fe9929190615d0e565b5060c0820151816006015560e082015181600701556101008201518160080155610120820151816009015561014082015181600a015561016082015181600b015561018082015181600c01556101a082015181600d0160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506101c082015181600d0160146101000a81548160ff021916908315150217905550905050615139601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600181526020019081526020016000205484612f02565b601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001815260200190815260200160002081905550615263601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600581526020019081526020016000205484612f02565b601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600581526020019081526020016000208190555061533e600d60008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484612f02565b600d60008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506153ca600b60008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484612f02565b600b60008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414156154fb57600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001549080600181540180825580915050906001820390600052602060002001600090919290919091505550600160008154809291906001019190505550601060006002815260200190815260200160002060008154809291906001019190505550615676565b600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000203390806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060015490806001815401808255809150509060018203906000526020600020016000909192909190915055506001600081548092919060010191905055506010600060018152602001908152602001600020600081548092919060010191905055506010600060028152602001908152602001600020600081548092919060010191905055506002600081548092919060010191905055505b6001600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f05fb89c4b424ffdc61374e38eb92a8ff16db5b32923736b264aedfcc06be08468973ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b15801561576e57600080fd5b505af1158015615782573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525060208110156157ac57600080fd5b8101908080516401000000008111156157c457600080fd5b828101905060208101848111156157da57600080fd5b81518560018202830111640100000000821117156157f757600080fd5b505092919050505086886040518080602001848152602001838152602001828103825285818151815260200191508051906020019080838360005b8381101561584d578082015181840152602081019050615832565b50505050905090810190601f16801561587a5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a3505050505050505050505050565b60008060006060600080600080600760008c8152602001908152602001600020975060008860000154141515156158cd57600080fd5b8b73ffffffffffffffffffffffffffffffffffffffff168860040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561592b57600080fd5b8896508760040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169550876005018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156159ed5780601f106159c2576101008083540402835291602001916159ed565b820191906000526020600020905b8154815290600101906020018083116159d057829003601f168201915b50505050509450615a0d615a068960010154600c612ea3565b6064612e79565b9350615a28615a2189600101546010612ea3565b6064612e79565b92506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415615b0557615afe615af8615af28a6001015487612ee1565b85612ee1565b8b612ee1565b9150615b1f565b615b1c615b16896001015486612ee1565b8b612ee1565b91505b615b3f615b358368056bc75e2d63100000612ea3565b8960010154612e79565b90508188600b01819055508088600a0181905550615ba68860030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168960040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168b6136ba565b8573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f959346e7719e944c33f76798af64519a9c17a870c805ae49c011066f18fa9cb0878a426040518080602001848152602001838152602001828103825285818151815260200191508051906020019080838360005b83811015615c44578082015181840152602081019050615c29565b50505050905090810190601f168015615c715780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a3505050505050505050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10615ccf57805160ff1916838001178555615cfd565b82800160010185558215615cfd579182015b82811115615cfc578251825591602001919060010190615ce1565b5b509050615d0a9190615d8e565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10615d4f57805160ff1916838001178555615d7d565b82800160010185558215615d7d579182015b82811115615d7c578251825591602001919060010190615d61565b5b509050615d8a9190615d8e565b5090565b615db091905b80821115615dac576000816000905550600101615d94565b5090565b905600a165627a7a723058203a31862e079eeb7f685a06144845d8b6a048495783389da73b196f9133359b230029

Swarm Source

bzzr://3a31862e079eeb7f685a06144845d8b6a048495783389da73b196f9133359b23

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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