Sponsored Link:   Synthestech ICO - Unique project: disruptive technology of platinum synthesis. 35% Bonus! Join ICO
Contract Overview
ETH Balance: 0.607082678697731424 Ether
ETH USD Value: $368.09 (@ $606.33/ETH)
No Of Transactions: 395 txns
Token Contract (ERC20): CryptoSport (CS)
  Latest 25 txns from a total Of 395 transactions (+1 PendingTxn) View All

TxHash Age From To Value [TxFee]
0x58f5524d6e721b3c100f70efc596453dd9435172522e52e34a83f7234309081d(pending)9 mins ago0xff108b09dc0e53010fe189c91869d755a0cdce4d  IN  0xb487d45f2d2a93b84e8f8c5074e256896bbf7d9c0.005 Ether(pending)
0x05427b83d748e1e85e0bec64f1ba1da18033b5f1d059c57d7f789168be5a1cf18 hrs 4 mins agoOraclize  IN   0xb487d45f2d2a93b84e8f8c5074e256896bbf7d9c0 Ether0.000333925
0x1d3792b24d9e6830b07c724aa02fca9f9d27444dde34e9202665ffb6e3d232718 hrs 5 mins ago0xb821552466c6391925ace5450d58285cd66c3714  IN   0xb487d45f2d2a93b84e8f8c5074e256896bbf7d9c0.002 Ether0.000410964
0xbe7f2fecc0b6a4f2d890eaf2c8d24b868807b326a088ba2c38953048d2428f841 day 9 hrs ago0xe1dadfde22c684e8c89f28df55a04cd12b4bfca7  IN   0xb487d45f2d2a93b84e8f8c5074e256896bbf7d9c0 Ether0.000163596
0x2d6107100eef82c1ea423a440bb06dc16c4faa13bb28909f849c64be603cd2e61 day 14 hrs ago0xa71c3636d816ec66438fcf8966add1f648a194c7  IN   0xb487d45f2d2a93b84e8f8c5074e256896bbf7d9c0.02 Ether0.000139054
0xd7ed957e3d7d9c21d9179e17746d72c0a65faeb3f6df726a1443932dca7fd6ec1 day 20 hrs ago0x00b6a5d252d5d02115470a112664543325d95b2b  IN   0xb487d45f2d2a93b84e8f8c5074e256896bbf7d9c0.005 Ether0.000231811875
0x375fe4d59b6ed7df47201df05094fc97fae6081ecaed1abaa165d68fbccb85631 day 21 hrs agoOraclize  IN   0xb487d45f2d2a93b84e8f8c5074e256896bbf7d9c0 Ether0.000407415
0x3f4cd5358a6caee9bd3fb3c9ea60c721dbc93967e2fe9e963c15c70325e319651 day 21 hrs ago0xb821552466c6391925ace5450d58285cd66c3714  IN   0xb487d45f2d2a93b84e8f8c5074e256896bbf7d9c0.001 Ether0.000365964
0x70cf419ec5a060899f4e7a838684af6113e17aa49857c245b14805cb54c025492 days 59 mins ago0x0d8c9d5fb5301ce26d67e2a7b345580a89917742  IN   0xb487d45f2d2a93b84e8f8c5074e256896bbf7d9c0.005 Ether0.000248108
0xf68c162547b3a2d68f336799000a32606eb9cda2cad56a7a1246d980aecc1c8e2 days 1 hr ago0x0d8c9d5fb5301ce26d67e2a7b345580a89917742  IN   0xb487d45f2d2a93b84e8f8c5074e256896bbf7d9c0.05 Ether0.000308108
0xdf40de83c5aedce59cee927ad919134a7ed8828becb678d35f2c58030db036702 days 1 hr ago0xac5c6e5acc19c23ee9f09cdd8f091e298d6c4931  IN   0xb487d45f2d2a93b84e8f8c5074e256896bbf7d9c0 Ether0.0002677794
0x6b9b8b47804bb6f5fc4a3e95352f8a0f1762713114a828c18028564664766daf2 days 2 hrs ago0xe1dadfde22c684e8c89f28df55a04cd12b4bfca7  IN   0xb487d45f2d2a93b84e8f8c5074e256896bbf7d9c0.005 Ether0.000253308
0xb26596a8a86809b614085aedb7c358da9fdffb778e0829672e0dbd4dbabb95bc2 days 2 hrs ago0x7aa9a05e10e434049c201663bab149b7314d2de5  IN   0xb487d45f2d2a93b84e8f8c5074e256896bbf7d9c0 Ether0.000081798
0xf34a35756f9f3b5927fd47aee2886e6e3527bdf5fb962ce330dd639e79ca30302 days 4 hrs agoOraclize  IN   0xb487d45f2d2a93b84e8f8c5074e256896bbf7d9c0 Ether0.00041458
0x4455cbc1176515b492e7ac881eb1f12578dcd02338e479bdce65c27197a4a9832 days 4 hrs ago0xb821552466c6391925ace5450d58285cd66c3714  IN   0xb487d45f2d2a93b84e8f8c5074e256896bbf7d9c0.001 Ether0.000367761
0x47e229f59bbe7cd703bef77a98be60f227b81da0da19e035e182cdda88df8c8f2 days 7 hrs ago0x0d8c9d5fb5301ce26d67e2a7b345580a89917742  IN   0xb487d45f2d2a93b84e8f8c5074e256896bbf7d9c0.005 Ether0.000308108
0x2d92ee62e7dce0b0bf7c027e09cba51890a0d0aaa40ee4643a990bed08f79fd02 days 7 hrs ago0x0d8c9d5fb5301ce26d67e2a7b345580a89917742  IN   0xb487d45f2d2a93b84e8f8c5074e256896bbf7d9c0.005 Ether0.000050092
0xf5db730c13b4968d67b6a4a6f58a5529e5d26efd3c2c681be6eb9693429309962 days 8 hrs ago0xe1dadfde22c684e8c89f28df55a04cd12b4bfca7  IN   0xb487d45f2d2a93b84e8f8c5074e256896bbf7d9c0 Ether0.000122697
0xd4dab49d642c56726a101f08e2a5f105614dead29d286fb98dccc6046ee147eb2 days 8 hrs ago0xe1dadfde22c684e8c89f28df55a04cd12b4bfca7  IN   0xb487d45f2d2a93b84e8f8c5074e256896bbf7d9c0.005 Ether0.000336294
0x1dd8e6a5cd5b84635883a19c92f5294fd1531e085567daf2dc69e1c9d770198f2 days 20 hrs ago0xac5c6e5acc19c23ee9f09cdd8f091e298d6c4931  IN   0xb487d45f2d2a93b84e8f8c5074e256896bbf7d9c0 Ether0.0001397726
0x75254b26aacbf05bd6990cd0ac8c1855335cac8d5af9952964cc90735241cc822 days 21 hrs ago0xafc316b8fd95aee32a89634c71c4276d45d229ac  IN   0xb487d45f2d2a93b84e8f8c5074e256896bbf7d9c0.005 Ether0.000176154
0xaabce1c9a76e10e0d0f286c33d8c1582f631fadfe58fe17bc5c92a137b950e412 days 21 hrs ago0xafc316b8fd95aee32a89634c71c4276d45d229ac  IN   0xb487d45f2d2a93b84e8f8c5074e256896bbf7d9c0 Ether0.000040899
0xf953910aa3b42f4abfdb367df9fe7fb13a54400217fb1ca3736cb27f3a0e1d3f2 days 21 hrs ago0xafc316b8fd95aee32a89634c71c4276d45d229ac  IN   0xb487d45f2d2a93b84e8f8c5074e256896bbf7d9c0 Ether0.000040899
0x82f16900672966cef2ad91a24aa0d3643e3c65459f518ee5cfb902e505a2866e2 days 21 hrs ago0xedf672e2f29830ea8f2eb6de9342b5c0baebfbc5  IN   0xb487d45f2d2a93b84e8f8c5074e256896bbf7d9c0 Ether0.003732366
0xb7bc3a9c55324852ddd51b0333accd6a1ce7576df70e7b89455d6dca88504d292 days 22 hrs agoOraclize  IN   0xb487d45f2d2a93b84e8f8c5074e256896bbf7d9c0 Ether0.000407415
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
  Latest 25 Internal Txns, Click here to View More View All
ParentTxHash Block Age From To Value
0x1d3792b24d9e6830b07c724aa02fca9f9d27444dde34e9202665ffb6e3d2327154787888 hrs 5 mins ago0xb487d45f2d2a93b84e8f8c5074e256896bbf7d9c0x3dbdc81a6edc94c720b0b88fb65dbd7e395fdcf60.00102667174690816 Ether
0xbe7f2fecc0b6a4f2d890eaf2c8d24b868807b326a088ba2c38953048d2428f8454727221 day 9 hrs ago0xb487d45f2d2a93b84e8f8c5074e256896bbf7d9c0xe1dadfde22c684e8c89f28df55a04cd12b4bfca70.01425 Ether
0x2d6107100eef82c1ea423a440bb06dc16c4faa13bb28909f849c64be603cd2e654716331 day 14 hrs ago0xb487d45f2d2a93b84e8f8c5074e256896bbf7d9c0x3ab65a90e831d496d314c028b0993c54ae1ed1020.0002 Ether
0x3f4cd5358a6caee9bd3fb3c9ea60c721dbc93967e2fe9e963c15c70325e3196554698531 day 21 hrs ago0xb487d45f2d2a93b84e8f8c5074e256896bbf7d9c0x3dbdc81a6edc94c720b0b88fb65dbd7e395fdcf60.00102667174690816 Ether
0x70cf419ec5a060899f4e7a838684af6113e17aa49857c245b14805cb54c0254954689272 days 59 mins ago0xb487d45f2d2a93b84e8f8c5074e256896bbf7d9c0xb821552466c6391925ace5450d58285cd66c37140.00005 Ether
0xf68c162547b3a2d68f336799000a32606eb9cda2cad56a7a1246d980aecc1c8e54688642 days 1 hr ago0xb487d45f2d2a93b84e8f8c5074e256896bbf7d9c0xb821552466c6391925ace5450d58285cd66c37140.0005 Ether
0xb26596a8a86809b614085aedb7c358da9fdffb778e0829672e0dbd4dbabb95bc54684782 days 2 hrs ago0xb487d45f2d2a93b84e8f8c5074e256896bbf7d9c0x7aa9a05e10e434049c201663bab149b7314d2de50.013836290322580645 Ether
0x4455cbc1176515b492e7ac881eb1f12578dcd02338e479bdce65c27197a4a98354680842 days 4 hrs ago0xb487d45f2d2a93b84e8f8c5074e256896bbf7d9c0x3dbdc81a6edc94c720b0b88fb65dbd7e395fdcf60.00102667174690816 Ether
0x47e229f59bbe7cd703bef77a98be60f227b81da0da19e035e182cdda88df8c8f54674412 days 7 hrs ago0xb487d45f2d2a93b84e8f8c5074e256896bbf7d9c0xb821552466c6391925ace5450d58285cd66c37140.00005 Ether
0xf5db730c13b4968d67b6a4a6f58a5529e5d26efd3c2c681be6eb96934293099654672582 days 8 hrs ago0xb487d45f2d2a93b84e8f8c5074e256896bbf7d9c0xe1dadfde22c684e8c89f28df55a04cd12b4bfca70.011875 Ether
0xaabce1c9a76e10e0d0f286c33d8c1582f631fadfe58fe17bc5c92a137b950e4154639902 days 21 hrs ago0xb487d45f2d2a93b84e8f8c5074e256896bbf7d9c0xafc316b8fd95aee32a89634c71c4276d45d229ac0.007916666666666666 Ether
0xf953910aa3b42f4abfdb367df9fe7fb13a54400217fb1ca3736cb27f3a0e1d3f54639872 days 21 hrs ago0xb487d45f2d2a93b84e8f8c5074e256896bbf7d9c0xafc316b8fd95aee32a89634c71c4276d45d229ac0.011875 Ether
0x25286bab4bb1c0f4e8aee151b6dbdd3b427b6751edbba55345eee41074a0b41254637512 days 22 hrs ago0xb487d45f2d2a93b84e8f8c5074e256896bbf7d9c0x3dbdc81a6edc94c720b0b88fb65dbd7e395fdcf60.00102667174690816 Ether
0x4c396dcdc0e16f164b304ba90cd05315539efa258bcfeae75d8e442b72e6c87554637202 days 22 hrs ago0xb487d45f2d2a93b84e8f8c5074e256896bbf7d9c0x3dbdc81a6edc94c720b0b88fb65dbd7e395fdcf60.00102667174690816 Ether
0x6a60eb176df07fa6d366071b5907dcee48d8eb7d2aa2b94ccac42d9a61436c3854636602 days 22 hrs ago0xb487d45f2d2a93b84e8f8c5074e256896bbf7d9c0x3dbdc81a6edc94c720b0b88fb65dbd7e395fdcf60.00102667174690816 Ether
0xcd24d0f15b7e30128832b5ef75f7f4b95edc22060c8bb6087704ab8feb91f97c54629893 days 1 hr ago0xb487d45f2d2a93b84e8f8c5074e256896bbf7d9c0x230c9a8f235d88bbc8f9b589e17b4a4adbb286fc0.012666666666666666 Ether
0x1e9f9ddf3418f5d0decaaaf1a557ed2a782fa6b82d84dd8a7a82108b0f0f57a454629793 days 1 hr ago0xb487d45f2d2a93b84e8f8c5074e256896bbf7d9c0x230c9a8f235d88bbc8f9b589e17b4a4adbb286fc0.05225 Ether
0x3684f5651afb03a340f240ffd37cf0ff81d80c61c4b9b25f03ba426a4266229554628053 days 2 hrs ago0xb487d45f2d2a93b84e8f8c5074e256896bbf7d9c0x3dbdc81a6edc94c720b0b88fb65dbd7e395fdcf60.00102667174690816 Ether
0x90d3de7a519db331fd80074b910abc2bc6cacceeb19ce4ca1c35c3325d4c351454572254 days 1 hr ago0xb487d45f2d2a93b84e8f8c5074e256896bbf7d9c0x3e201a0c7cfc8feccd7ba1bd17db740a1762d26c0.00025 Ether
0xa2e2df82fa2174b7bd1d722cd6f59e1bd93d37c141b5e01c8aaeca40a23c2a2c54571814 days 1 hr ago0xb487d45f2d2a93b84e8f8c5074e256896bbf7d9c0xbd3a47dc69086be6b78f1127ef1a47427935a8180.00025 Ether
0xd9d5c93ec602b1e41e4e6c83d3f23b11da64c219881586da38e5d231e9e2fd2a54514485 days 57 mins ago0xb487d45f2d2a93b84e8f8c5074e256896bbf7d9c0xe1dadfde22c684e8c89f28df55a04cd12b4bfca70.00475 Ether
0x8989965ede2d1ddb1161fbf9cf9fb8da81ef07990bcf667e6ebd15958883c45854512395 days 1 hr ago0xb487d45f2d2a93b84e8f8c5074e256896bbf7d9c0x85601b322cdf457220ed3f6a33b3feadd835f6a10.04275 Ether
0xf37d0386a28f06a15e5bb5bba5a8a230a16d7d3df42e4a83e208e930ec89996854510975 days 2 hrs ago0xb487d45f2d2a93b84e8f8c5074e256896bbf7d9c0xb821552466c6391925ace5450d58285cd66c37140.00005 Ether
0x54b6d62fd1bbe40c204b01def8b379c641c9dad00caff464dd7f1068ad99d02654510965 days 2 hrs ago0xb487d45f2d2a93b84e8f8c5074e256896bbf7d9c0xb821552466c6391925ace5450d58285cd66c37140.00005 Ether
0xd72783dd9c811b41c3773763da992c41ea582a4a6931bc942c88807b49caec6654510855 days 2 hrs ago0xb487d45f2d2a93b84e8f8c5074e256896bbf7d9c0xb821552466c6391925ace5450d58285cd66c37140.00005 Ether
[ Download CSV Export  ] 
Contract Source Code Verified (Exact match)
Contract Name: CSLottery
Compiler Version: v0.4.20+commit.3155dd80
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts
pragma solidity ^0.4.18;

/*
VERSION DATE: 23/03/2018

CREATED BY: CRYPTO SPORTZ
UNJOY YOUR TEAM AND SPORTS AND EMAIL US IF YOU HAVE ANY QUESTIONS
*/

contract OraclizeI {
	address public cbAddress;
	function query(uint _timestamp, string _datasource, string _arg) external payable returns (bytes32 _id);
	function query_withGasLimit(uint _timestamp, string _datasource, string _arg, uint _gaslimit) external payable returns (bytes32 _id);
	function query2(uint _timestamp, string _datasource, string _arg1, string _arg2) public payable returns (bytes32 _id);
	function query2_withGasLimit(uint _timestamp, string _datasource, string _arg1, string _arg2, uint _gaslimit) external payable returns (bytes32 _id);
	function queryN(uint _timestamp, string _datasource, bytes _argN) public payable returns (bytes32 _id);
	function queryN_withGasLimit(uint _timestamp, string _datasource, bytes _argN, uint _gaslimit) external payable returns (bytes32 _id);
	function getPrice(string _datasource) public returns (uint _dsprice);
	function getPrice(string _datasource, uint gaslimit) public returns (uint _dsprice);
	function setProofType(byte _proofType) external;
	function setCustomGasPrice(uint _gasPrice) external;
	function randomDS_getSessionPubKeyHash() external constant returns(bytes32);
}
contract OraclizeAddrResolverI {
	function getAddress() public returns (address _addr);
}
contract usingOraclize {
	
	uint8 constant networkID_auto = 0;
	uint8 constant networkID_mainnet = 1;
	uint8 constant networkID_testnet = 2;
	uint8 constant networkID_morden = 2;
	uint8 constant networkID_consensys = 161;

	OraclizeAddrResolverI OAR;

	OraclizeI oraclize;
	modifier oraclizeAPI 
	{
		if((address(OAR)==0)||(getCodeSize(address(OAR))==0))
			oraclize_setNetwork(networkID_auto);

		if(address(oraclize) != OAR.getAddress())
			oraclize = OraclizeI(OAR.getAddress());

		_;
	}
	modifier coupon(string code){
		oraclize = OraclizeI(OAR.getAddress());
		_;
	}

	function oraclize_setNetwork(uint8 networkID) internal returns(bool)
	{
		return oraclize_setNetwork();
		networkID; // silence the warning and remain backwards compatible
	}
	
	function oraclize_setNetwork() internal returns(bool)
	{
		if (getCodeSize(0x1d3B2638a7cC9f2CB3D298A3DA7a90B67E5506ed)>0){ //mainnet
			OAR = OraclizeAddrResolverI(0x1d3B2638a7cC9f2CB3D298A3DA7a90B67E5506ed);
			return true;
		}

		if (getCodeSize(0xc03A2615D5efaf5F49F60B7BB6583eaec212fdf1)>0){ //ropsten testnet
			OAR = OraclizeAddrResolverI(0xc03A2615D5efaf5F49F60B7BB6583eaec212fdf1);
			return true;
		}

		return false;
	}
	
	function oraclize_query(string datasource, string arg, uint gaslimit) oraclizeAPI internal returns (bytes32 id){
		uint price = oraclize.getPrice(datasource, gaslimit);
		if (price > 1 ether + tx.gasprice*gaslimit) return 0; // unexpectedly high price
		return oraclize.query_withGasLimit.value(price)(0, datasource, arg, gaslimit);
	}

    function oraclize_query(uint timestamp, string datasource, string arg, uint gaslimit) oraclizeAPI internal returns (bytes32 id){
        uint price = oraclize.getPrice(datasource, gaslimit);
        if (price > 1 ether + tx.gasprice*gaslimit) return 0; // unexpectedly high price
        return oraclize.query_withGasLimit.value(price)(timestamp, datasource, arg, gaslimit);
	}
	
	function oraclize_getPrice(string datasource) oraclizeAPI internal returns (uint){
		return oraclize.getPrice(datasource);
	}

	function oraclize_getPrice(string datasource, uint gaslimit) oraclizeAPI internal returns (uint){
		return oraclize.getPrice(datasource, gaslimit);
	}

    function oraclize_setCustomGasPrice(uint gasPrice) oraclizeAPI internal {
        return oraclize.setCustomGasPrice(gasPrice);
    }
	
	function oraclize_cbAddress() oraclizeAPI internal returns (address){
		return oraclize.cbAddress();
	}

	function getCodeSize(address _addr) constant internal returns(uint _size) {
		assembly {
			_size := extcodesize(_addr)
		}
	}

}

contract ERC721Abstract
{
	function implementsERC721() public pure returns (bool);
	function balanceOf(address _owner) public view returns (uint256 balance);
	function ownerOf(uint256 _tokenId) public view returns (address owner);
	function approve(address _to, uint256 _tokenId) public;
	function transferFrom(address _from, address _to, uint256 _tokenId) public;
	function transfer(address _to, uint256 _tokenId) public;
 
	event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
	event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);

	// Optional
	// function totalSupply() public view returns (uint256 total);
	// function name() public view returns (string name);
	// function symbol() public view returns (string symbol);
	// function tokenOfOwnerByIndex(address _owner, uint256 _index) external view returns (uint256 tokenId);
	// function tokenMetadata(uint256 _tokenId) public view returns (string infoUrl);
}

contract ERC721 is ERC721Abstract
{
	string constant public   name = "CryptoSport";
	string constant public symbol = "CS";

	uint256 public totalSupply;
	struct Token
	{
		uint256 price;			//  value of stake
		uint256	option;			//  [payout]96[idLottery]64[combination]32[dateBuy]0
	}
	mapping (uint256 => Token) tokens;
	
	// A mapping from tokens IDs to the address that owns them. All tokens have some valid owner address
	mapping (uint256 => address) public tokenIndexToOwner;
	
	// A mapping from owner address to count of tokens that address owns.	
	mapping (address => uint256) ownershipTokenCount; 

	// A mapping from tokenIDs to an address that has been approved to call transferFrom().
	// Each token can only have one approved address for transfer at any time.
	// A zero value means no approval is outstanding.
	mapping (uint256 => address) public tokenIndexToApproved;
	
	function implementsERC721() public pure returns (bool)
	{
		return true;
	}

	function balanceOf(address _owner) public view returns (uint256 count) 
	{
		return ownershipTokenCount[_owner];
	}
	
	function ownerOf(uint256 _tokenId) public view returns (address owner)
	{
		owner = tokenIndexToOwner[_tokenId];
		require(owner != address(0));
	}
	
	// Marks an address as being approved for transferFrom(), overwriting any previous approval. 
	// Setting _approved to address(0) clears all transfer approval.
	function _approve(uint256 _tokenId, address _approved) internal 
	{
		tokenIndexToApproved[_tokenId] = _approved;
	}
	
	// Checks if a given address currently has transferApproval for a particular token.
	// param _claimant the address we are confirming token is approved for.
	// param _tokenId token id, only valid when > 0
	function _approvedFor(address _claimant, uint256 _tokenId) internal view returns (bool) {
		return tokenIndexToApproved[_tokenId] == _claimant;
	}
	
	function approve( address _to, uint256 _tokenId ) public
	{
		// Only an owner can grant transfer approval.
		require(_owns(msg.sender, _tokenId));

		// Register the approval (replacing any previous approval).
		_approve(_tokenId, _to);

		// Emit approval event.
		Approval(msg.sender, _to, _tokenId);
	}
	
	function transferFrom( address _from, address _to, uint256 _tokenId ) public
	{
		// Check for approval and valid ownership
		require(_approvedFor(msg.sender, _tokenId));
		require(_owns(_from, _tokenId));

		// Reassign ownership (also clears pending approvals and emits Transfer event).
		_transfer(_from, _to, _tokenId);
	}
	
	function _owns(address _claimant, uint256 _tokenId) internal view returns (bool) {
		return tokenIndexToOwner[_tokenId] == _claimant;
	}
	
	function _transfer(address _from, address _to, uint256 _tokenId) internal 
	{
		ownershipTokenCount[_to]++;
		tokenIndexToOwner[_tokenId] = _to;

		if (_from != address(0)) 
		{
			Transfer(_from, _to, _tokenId);
			ownershipTokenCount[_from]--;
			// clear any previously approved ownership exchange
			delete tokenIndexToApproved[_tokenId];
		}

	}
	
	function transfer(address _to, uint256 _tokenId) public
	{
		require(_to != address(0));
		require(_owns(msg.sender, _tokenId));
		_transfer(msg.sender, _to, _tokenId);
	}

}

contract Owned 
{
    address private candidate;
	address public owner;

	mapping(address => bool) public admins;
	
    function Owned() public 
	{
        owner = msg.sender;
    }

    function changeOwner(address newOwner) public 
	{
		require(msg.sender == owner);
        candidate = newOwner;
    }
	
	function confirmOwner() public 
	{
        require(candidate == msg.sender); // run by name=candidate
		owner = candidate;
    }
	
    function addAdmin(address addr) external 
	{
		require(msg.sender == owner);
        admins[addr] = true;
    }

    function removeAdmin(address addr) external
	{
		require(msg.sender == owner);
        admins[addr] = false;
    }
}

contract Functional
{
	// parseInt(parseFloat*10^_b)
	function parseInt(string _a, uint _b) internal pure returns (uint) 
	{
		bytes memory bresult = bytes(_a);
		uint mint = 0;
		bool decimals = false;
		for (uint i=0; i<bresult.length; i++){
			if ((bresult[i] >= 48)&&(bresult[i] <= 57)){
				if (decimals){
				   if (_b == 0) break;
					else _b--;
				}
				mint *= 10;
				mint += uint(bresult[i]) - 48;
			} else if (bresult[i] == 46) decimals = true;
		}
		if (_b > 0) mint *= 10**_b;
		return mint;
	}
	
	function uint2str(uint i) internal pure returns (string)
	{
		if (i == 0) return "0";
		uint j = i;
		uint len;
		while (j != 0){
			len++;
			j /= 10;
		}
		bytes memory bstr = new bytes(len);
		uint k = len - 1;
		while (i != 0){
			bstr[k--] = byte(48 + i % 10);
			i /= 10;
		}
		return string(bstr);
	}
	
	function strConcat(string _a, string _b, string _c) internal pure returns (string)
	{
		bytes memory _ba = bytes(_a);
		bytes memory _bb = bytes(_b);
		bytes memory _bc = bytes(_c);
		string memory abc;
		uint k = 0;
		uint i;
		bytes memory babc;
		if (_ba.length==0)
		{
			abc = new string(_bc.length);
			babc = bytes(abc);
		}
		else
		{
			abc = new string(_ba.length + _bb.length+ _bc.length);
			babc = bytes(abc);
			for (i = 0; i < _ba.length; i++) babc[k++] = _ba[i];
			for (i = 0; i < _bb.length; i++) babc[k++] = _bb[i];
		}
        for (i = 0; i < _bc.length; i++) babc[k++] = _bc[i];
		return string(babc);
	}
	
	function timenow() public view returns(uint32) { return uint32(block.timestamp); }
}

contract CSLottery is ERC721, usingOraclize, Functional, Owned
{
	uint256 public feeLottery;
	
	enum Status {
		NOTFOUND,		//0 game not created
		PLAYING,		//1 buying tickets
		PROCESSING,		//2 waiting for result
		PAYING,	 		//3 redeeming
		CANCELING		//4 canceling the game
	}
	
	struct Game {
		string  nameLottery;
		uint32  countCombinations;
		uint32  dateStopBuy;
		uint32  minStake;				// per finney = 0.001E
		uint32  winCombination;
		uint256 betsSumIn;				// amount bets
		uint256 feeValue;				// amount fee
		Status status;					// status of game
		bool isFreezing;
	}
	Game[] private game;
	
	struct Stake {
		uint256 sum;		// amount bets
		uint32 count;		// count bets 
	}
	mapping(uint32 => mapping (uint32 => Stake)) public betsAll; // ID-lottery => combination => Stake
	mapping(bytes32 => uint32) private queryRes;  // ID-query => ID-lottery
	
	uint256 public ORACLIZE_GAS_LIMIT = 200000;
	uint256 public ORACLIZE_GASPRICE_GWEY = 40; // 40Gwey

	event LogEvent(string _event, string nameLottery, uint256 value);
	event LogToken(string _event, address user, uint32 idLottery, uint32 idToken, uint32 combination, uint256 amount);

    modifier onlyOwner {
        require(msg.sender == owner);
        _;
    }
	
	modifier onlyAdmin {
        require(msg.sender == owner || admins[msg.sender]);
        _;
    }

	modifier onlyOraclize {
        require (msg.sender == oraclize_cbAddress());
        _;
    }

	function getLotteryByID(uint32 _id) public view returns (
		string  nameLottery,
		uint32 countCombinations,
		uint32 dateStopBuy,
		uint32 minStake,
		uint32 winCombination,
		uint32 betsCount,
		uint256 betsSumIn,
		uint256 feeValue,
		Status status,
		bool isFreezing
	){
		Game storage gm = game[_id];
		nameLottery = gm.nameLottery;
		countCombinations = gm.countCombinations;
		dateStopBuy = gm.dateStopBuy;
		minStake = gm.minStake;
		winCombination = gm.winCombination;
		betsCount = getCountTokensByLottery(_id);
		betsSumIn = gm.betsSumIn;  
		if (betsSumIn==0) betsSumIn = getSumInByLottery(_id);
		feeValue = gm.feeValue;
		status = gm.status;
		if ( status == Status.PLAYING && timenow() > dateStopBuy ) status = Status.PROCESSING;
		isFreezing = gm.isFreezing;
	}
	
	function getCountTokensByLottery(uint32 idLottery) internal view returns (uint32)
	{
		Game storage curGame = game[idLottery];
		uint32 count = 0;
		for(uint32 i=1;i<=curGame.countCombinations;i++) count += betsAll[idLottery][i].count;
		return count;
	}
	
	function getSumInByLottery(uint32 idLottery) internal view returns (uint256)
	{
		Game storage curGame = game[idLottery];
		uint256 sum = 0;
		for(uint32 i=1;i<=curGame.countCombinations;i++) sum += betsAll[idLottery][i].sum;
		return sum;
	}
	
	function getTokenByID(uint256 _id) public view returns ( 
			uint256 price,
			uint256 payment,
			uint32 combination,
			uint32 dateBuy,
			uint32 idLottery,
			address ownerToken,
			bool payout
	){
		Token storage tkn = tokens[_id];

		price = tkn.price;
		
		uint256 packed = tkn.option;
		payout = uint8((packed >> (12*8)) & 0xFF)==1?true:false;
		idLottery   = uint32((packed >> (8*8)) & 0xFFFFFFFF);
		combination = uint32((packed >> (4*8)) & 0xFFFFFFFF);
		dateBuy     = uint32(packed & 0xFFFFFFFF);

		payment = 0;
		Game storage curGame = game[idLottery];
		
		uint256 betsSumIn = curGame.betsSumIn;  
		if (betsSumIn==0) betsSumIn = getSumInByLottery(idLottery);

		if (curGame.winCombination==combination) payment = betsSumIn * tkn.price / betsAll[idLottery][ curGame.winCombination ].sum;
		if (curGame.status == Status.CANCELING) payment = tkn.price;
		
		ownerToken = tokenIndexToOwner[_id];
	}

	function getUserTokens(address user, uint32 count) public view returns ( string res ) 
	{
		res="";
		require(user!=0x0);
		uint32 findCount=0;
		for (uint256 i = totalSupply-1; i >= 0; i--)
		{
			if(i>totalSupply) break;
			if (user == tokenIndexToOwner[i]) 
			{
				res = strConcat( res, ",", uint2str(i) );
				findCount++;
				if (count!=0 && findCount>=count) break;
			}
		}
	}

	function getStatLotteries() public view returns ( 
			uint32 countAll,
			uint32 countPlaying,
			uint32 countProcessing,
			string listPlaying,
			string listProcessing
	){
		countAll = uint32(game.length);
		countPlaying = 0;
		countProcessing = 0;
		listPlaying="";
		listProcessing="";
		uint32 curtime = timenow();
		for (uint32 i = 0; i < countAll; i++)
		{
			if (game[i].status!=Status.PLAYING) continue;
			if (curtime <  game[i].dateStopBuy) { countPlaying++; listPlaying = strConcat( listPlaying, ",", uint2str(i) ); }
			if (curtime >= game[i].dateStopBuy) { countProcessing++; listProcessing = strConcat( listProcessing, ",", uint2str(i) ); }
		}
		
	}

	function CSLottery() public 
	{
	}

	function setOraclizeGasPrice(uint256 priceGwey, uint256 limit) onlyAdmin public
	{
		ORACLIZE_GASPRICE_GWEY = priceGwey;
		ORACLIZE_GAS_LIMIT = limit;
		oraclize_setCustomGasPrice( uint256(ORACLIZE_GASPRICE_GWEY) * 10**9 );
	}

	function freezeLottery(uint32 idLottery, bool freeze) public onlyAdmin 
	{ 
		Game storage curGame = game[idLottery];
		require( curGame.isFreezing != freeze );
		curGame.isFreezing = freeze; 
	}

	function addLottery( string _nameLottery, uint32 _dateStopBuy, uint32 _countCombinations, uint32 _minStakeFinney ) onlyAdmin public 
	{
		require( bytes(_nameLottery).length > 2 );
		require( _countCombinations > 1 );
		require( _minStakeFinney > 0 );
		require( _dateStopBuy > timenow() );

		Game memory _game;
		_game.nameLottery = _nameLottery;
		_game.countCombinations = _countCombinations;
		_game.dateStopBuy = _dateStopBuy;
		_game.minStake 	= _minStakeFinney;
		_game.status = Status.PLAYING;

		uint256 newGameId = game.push(_game) - 1;
		
		LogEvent( "AddGame", _nameLottery, newGameId );
	}

	function () payable public { require (msg.value == 0x0); }
	
	function buyToken(uint32 idLottery, uint32 combination, address captainAddress) payable public
	{
		Game storage curGame = game[idLottery];
		require( curGame.status == Status.PLAYING );
		require( timenow() < curGame.dateStopBuy );
		require( combination > 0 && combination <= curGame.countCombinations );
		require( captainAddress != msg.sender );
		require( curGame.isFreezing == false );
		
		// check money for stake
		require( msg.value >= curGame.minStake * 1 finney );
		
		uint256 userStake = msg.value;
		uint256 feeValue = userStake * 5 / 100;		// 5% fee for contract
		userStake = userStake - feeValue;
		
		if (captainAddress!=0x0) 
		{
			uint256 captainValue = feeValue * 20 / 100;		// bonus for captain = 1%
			feeValue = feeValue - captainValue;
			require(feeValue + captainValue + userStake == msg.value);
			captainAddress.transfer(captainValue);
		}

		curGame.feeValue  = curGame.feeValue + feeValue;
		betsAll[idLottery][combination].sum += userStake;
		betsAll[idLottery][combination].count += 1;

		uint128 packed;
		packed = ( uint128(idLottery) << 8*8 ) + ( uint128(combination) << 4*8 ) + uint128(block.timestamp);

		Token memory _token = Token({
			price: userStake,
			option : packed
		});

		uint256 newTokenId = totalSupply++;
		tokens[newTokenId] = _token;
		_transfer(0, msg.sender, newTokenId);
		LogToken( "Buy", msg.sender, idLottery, uint32(newTokenId), combination, userStake);
	}
	
	// take win money or money for canceling lottery
	function redeemToken(uint256 _tokenId) public 
	{
		Token storage tkn = tokens[_tokenId];

		uint256 packed = tkn.option;
		bool payout = uint8((packed >> (12*8)) & 0xFF)==1?true:false;
		uint32 idLottery = uint32((packed >> (8*8)) & 0xFFFFFFFF);
		uint32 combination = uint32((packed >> (4*8)) & 0xFFFFFFFF);

		Game storage curGame = game[idLottery];
		
		require( curGame.status == Status.PAYING || curGame.status == Status.CANCELING);

		require( msg.sender == tokenIndexToOwner[_tokenId] );	// only onwer`s token
		require( payout == false ); // has not paid
		require( combination == curGame.winCombination || curGame.status == Status.CANCELING );

		uint256 sumPayment = 0;
		if ( curGame.status == Status.CANCELING ) sumPayment = tkn.price;
		if ( curGame.status == Status.PAYING ) sumPayment = curGame.betsSumIn * tkn.price / betsAll[idLottery][curGame.winCombination].sum;

		payout = true;
		packed += uint128(payout?1:0) << 12*8;
		tkn.option = packed;
	
		msg.sender.transfer(sumPayment);
		
		LogToken( "Redeem", msg.sender, idLottery, uint32(_tokenId), combination, sumPayment);
	}
	
	function cancelLottery(uint32 idLottery) public 
	{
		Game storage curGame = game[idLottery];
		
		require( curGame.status == Status.PLAYING );
		// only owner/admin or anybody after 7 days
		require( msg.sender == owner || admins[msg.sender] || timenow() > curGame.dateStopBuy + 7 * 24*60*60 );

		curGame.status = Status.CANCELING;

		LogEvent( "CancelLottery", curGame.nameLottery, idLottery );
		
		takeFee(idLottery);
	}

	function __callback(bytes32 queryId, string _result) onlyOraclize public
	{
		uint32 idLottery = queryRes[queryId];
		require( idLottery != 0 );

		Game storage curGame = game[idLottery];
		
		require( curGame.status == Status.PLAYING );
		require( timenow() > curGame.dateStopBuy );
		
		uint32 tmpCombination = uint32(parseInt(_result,0));
		
		string memory error = "callback";
		if ( tmpCombination==0 ) error = "callback_result_not_found";
		if ( tmpCombination > curGame.countCombinations ) { tmpCombination = 0; error = "callback_result_limit"; }

		LogEvent( error, curGame.nameLottery, tmpCombination );

		if (tmpCombination!=0) 
		{
			curGame.winCombination = tmpCombination;
			checkWinNobody(idLottery);
		}
	}

	function resolveLotteryByOraclize(uint32 idLottery, uint32 delaySec) onlyAdmin public payable
	{
		Game storage curGame = game[idLottery];
		
		uint oraclizeFee = oraclize_getPrice( "URL", ORACLIZE_GAS_LIMIT );
		require(msg.value + curGame.feeValue > oraclizeFee); // if contract has not enought money to do query
		
		curGame.feeValue = curGame.feeValue + msg.value - oraclizeFee;

		LogEvent( "ResolveLotteryByOraclize", curGame.nameLottery, delaySec );
		
		string memory tmpQuery;
		tmpQuery = strConcat( "json(https://cryptosportz.com/api/v2/game/", uint2str(idLottery), "/result).result" );
	
		uint32 delay;
		if ( timenow() < curGame.dateStopBuy ) delay = curGame.dateStopBuy - timenow() + delaySec;
										  else delay = delaySec;
	
		bytes32 queryId = oraclize_query(delay, "URL", tmpQuery, ORACLIZE_GAS_LIMIT);
		queryRes[queryId] = idLottery;
	}

	function resolveLotteryByHand(uint32 idLottery, uint32 combination) onlyAdmin public 
	{
		Game storage curGame = game[idLottery];
		
		require( curGame.status == Status.PLAYING );
		require( combination <= curGame.countCombinations );
		require( combination != 0 );

		require( timenow() > curGame.dateStopBuy + 2*60*60 );

		curGame.winCombination = combination;
		
		LogEvent( "ResolveLotteryByHand", curGame.nameLottery, curGame.winCombination );
		
		checkWinNobody(idLottery);
	}
	
	function checkWinNobody(uint32 idLottery) internal
	{
		Game storage curGame = game[idLottery];
		
		curGame.status = Status.PAYING;
		curGame.betsSumIn = getSumInByLottery(idLottery);
		
		// nobody win = send all to feeLottery
		if ( betsAll[idLottery][curGame.winCombination].count == 0 )
		{
			if (curGame.betsSumIn+curGame.feeValue!=0) feeLottery = feeLottery + curGame.betsSumIn + curGame.feeValue;
			LogEvent( "NOBODYWIN", curGame.nameLottery, curGame.betsSumIn+curGame.feeValue );
		}
		else 
			takeFee(idLottery);
	}
	
	function takeFee(uint32 idLottery) internal
	{
		Game storage curGame = game[idLottery];
		
		// take fee
		if ( curGame.feeValue > 0 )
		{
			feeLottery = feeLottery + curGame.feeValue;
			LogEvent( "TakeFee", curGame.nameLottery, curGame.feeValue );
		}
	}
	
	function withdraw() onlyOwner public
	{
		require( feeLottery > 0 );

		uint256 tmpFeeLottery = feeLottery;
		feeLottery = 0;
		
		owner.transfer(tmpFeeLottery);
		LogEvent( "WITHDRAW", "", tmpFeeLottery);
	}

}

    Contract ABI  
[{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"redeemToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_id","type":"uint256"}],"name":"getTokenByID","outputs":[{"name":"price","type":"uint256"},{"name":"payment","type":"uint256"},{"name":"combination","type":"uint32"},{"name":"dateBuy","type":"uint32"},{"name":"idLottery","type":"uint32"},{"name":"ownerToken","type":"address"},{"name":"payout","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"approve","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"implementsERC721","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"idLottery","type":"uint32"}],"name":"cancelLottery","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint32"},{"name":"","type":"uint32"}],"name":"betsAll","outputs":[{"name":"sum","type":"uint256"},{"name":"count","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"removeAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"tokenIndexToOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"queryId","type":"bytes32"},{"name":"_result","type":"string"}],"name":"__callback","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"timenow","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"priceGwey","type":"uint256"},{"name":"limit","type":"uint256"}],"name":"setOraclizeGasPrice","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"admins","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ORACLIZE_GAS_LIMIT","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"feeLottery","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"idLottery","type":"uint32"},{"name":"freeze","type":"bool"}],"name":"freezeLottery","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"name":"owner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"addAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"count","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"idLottery","type":"uint32"},{"name":"combination","type":"uint32"}],"name":"resolveLotteryByHand","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"idLottery","type":"uint32"},{"name":"delaySec","type":"uint32"}],"name":"resolveLotteryByOraclize","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"user","type":"address"},{"name":"count","type":"uint32"}],"name":"getUserTokens","outputs":[{"name":"res","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"changeOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"tokenIndexToApproved","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_nameLottery","type":"string"},{"name":"_dateStopBuy","type":"uint32"},{"name":"_countCombinations","type":"uint32"},{"name":"_minStakeFinney","type":"uint32"}],"name":"addLottery","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"confirmOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_id","type":"uint32"}],"name":"getLotteryByID","outputs":[{"name":"nameLottery","type":"string"},{"name":"countCombinations","type":"uint32"},{"name":"dateStopBuy","type":"uint32"},{"name":"minStake","type":"uint32"},{"name":"winCombination","type":"uint32"},{"name":"betsCount","type":"uint32"},{"name":"betsSumIn","type":"uint256"},{"name":"feeValue","type":"uint256"},{"name":"status","type":"uint8"},{"name":"isFreezing","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ORACLIZE_GASPRICE_GWEY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"idLottery","type":"uint32"},{"name":"combination","type":"uint32"},{"name":"captainAddress","type":"address"}],"name":"buyToken","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"getStatLotteries","outputs":[{"name":"countAll","type":"uint32"},{"name":"countPlaying","type":"uint32"},{"name":"countProcessing","type":"uint32"},{"name":"listPlaying","type":"string"},{"name":"listProcessing","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_event","type":"string"},{"indexed":false,"name":"nameLottery","type":"string"},{"indexed":false,"name":"value","type":"uint256"}],"name":"LogEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_event","type":"string"},{"indexed":false,"name":"user","type":"address"},{"indexed":false,"name":"idLottery","type":"uint32"},{"indexed":false,"name":"idToken","type":"uint32"},{"indexed":false,"name":"combination","type":"uint32"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"LogToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":true,"name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"approved","type":"address"},{"indexed":true,"name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"}]

  Contract Creation Code Switch To Opcodes View
606060405262030d40600e556028600f55341561001b57600080fd5b60088054600160a060020a03191633600160a060020a0316179055613a8e806100456000396000f3006060604052600436106101a85763ffffffff60e060020a600035041663013054c281146101b557806306fdde03146101cb578063087205f014610255578063095ea7b3146102be5780631051db34146102e057806311ac20c0146103075780631209a849146103235780631785f53c1461036357806318160ddd146103825780631d36e06c146103a757806323b872dd146103d957806327dc297e146104015780633ccfd60b146104575780633fae19281461046a57806340adf94e14610496578063429b62e5146104af5780634eb8ffb4146104ce5780635387a233146104e157806356f99fcb146104f45780636352211e14610515578063704802751461052b57806370a082311461054a57806372b81b1c1461056957806373f1e6d71461058b5780638cc57368146105a25780638da5cb5b146105ca57806395d89b41146105dd578063a6f9dae1146105f0578063a8bd9c321461060f578063a9059cbb14610625578063b075656214610647578063bd9b6d86146106af578063be60988e146106c2578063d03e1021146107b8578063d5ec40af146107cb578063e4e663a9146107ee575b34156101b357600080fd5b005b34156101c057600080fd5b6101b3600435610901565b34156101d657600080fd5b6101de610b99565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561021a578082015183820152602001610202565b50505050905090810190601f1680156102475780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561026057600080fd5b61026b600435610bd0565b604051968752602087019590955263ffffffff938416604080880191909152928416606087015292166080850152600160a060020a0390911660a084015290151560c083015260e0909101905180910390f35b34156102c957600080fd5b6101b3600160a060020a0360043516602435610d22565b34156102eb57600080fd5b6102f3610d86565b604051901515815260200160405180910390f35b341561031257600080fd5b6101b363ffffffff60043516610d8c565b341561032e57600080fd5b61034563ffffffff60043581169060243516610f3d565b60405191825263ffffffff1660208201526040908101905180910390f35b341561036e57600080fd5b6101b3600160a060020a0360043516610f67565b341561038d57600080fd5b610395610fa3565b60405190815260200160405180910390f35b34156103b257600080fd5b6103bd600435610fa9565b604051600160a060020a03909116815260200160405180910390f35b34156103e457600080fd5b6101b3600160a060020a0360043581169060243516604435610fc4565b341561040c57600080fd5b6101b3600480359060446024803590810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610ffe95505050505050565b341561046257600080fd5b6101b36112f3565b341561047557600080fd5b61047d6113c7565b60405163ffffffff909116815260200160405180910390f35b34156104a157600080fd5b6101b36004356024356113cb565b34156104ba57600080fd5b6102f3600160a060020a0360043516611424565b34156104d957600080fd5b610395611439565b34156104ec57600080fd5b61039561143f565b34156104ff57600080fd5b6101b363ffffffff600435166024351515611445565b341561052057600080fd5b6103bd6004356114ec565b341561053657600080fd5b6101b3600160a060020a0360043516611515565b341561055557600080fd5b610395600160a060020a0360043516611554565b341561057457600080fd5b6101b363ffffffff6004358116906024351661156f565b6101b363ffffffff6004358116906024351661176f565b34156105ad57600080fd5b6101de600160a060020a036004351663ffffffff60243516611a92565b34156105d557600080fd5b6103bd611b78565b34156105e857600080fd5b6101de611b87565b34156105fb57600080fd5b6101b3600160a060020a0360043516611bbe565b341561061a57600080fd5b6103bd600435611bfb565b341561063057600080fd5b6101b3600160a060020a0360043516602435611c16565b341561065257600080fd5b6101b360046024813581810190830135806020601f820181900481020160405190810160405281815292919060208401838380828437509496505063ffffffff853581169560208101358216955060400135169250611c4b915050565b34156106ba57600080fd5b6101b3611f0e565b34156106cd57600080fd5b6106de63ffffffff60043516611f4d565b60405163ffffffff808b166020830152898116604083015288811660608301528781166080830152861660a082015260c0810185905260e0810184905280610100810184600481111561072d57fe5b60ff1681526020018315151515815260200182810382528c818151815260200191508051906020019080838360005b8381101561077457808201518382015260200161075c565b50505050905090810190601f1680156107a15780820380516001836020036101000a031916815260200191505b509b50505050505050505050505060405180910390f35b34156107c357600080fd5b6103956120f1565b6101b363ffffffff60043581169060243516600160a060020a03604435166120f7565b34156107f957600080fd5b610801612401565b60405163ffffffff808716825285811660208301528416604082015260a060608201818152906080830190830185818151815260200191508051906020019080838360005b8381101561085e578082015183820152602001610846565b50505050905090810190601f16801561088b5780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b838110156108c15780820151838201526020016108a9565b50505050905090810190601f1680156108ee5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b600081815260016020819052604082208082015490929091819081908190819060ff606060020a8804161461093757600061093a565b60015b600b805491965063ffffffff680100000000000000008904811696506401000000008904169450908590811061096c57fe5b600091825260209091206005909102019150600360048084015460ff169081111561099357fe5b14806109af575060048281015460ff16818111156109ad57fe5b145b15156109ba57600080fd5b60008881526002602052604090205433600160a060020a039081169116146109e157600080fd5b84156109ec57600080fd5b600182015463ffffffff848116606060020a909204161480610a1e575060048281015460ff1681811115610a1c57fe5b145b1515610a2957600080fd5b5060006004808084015460ff1690811115610a4057fe5b1415610a4a575085545b600360048084015460ff1690811115610a5f57fe5b1415610aa95763ffffffff8085166000908152600c602090815260408083206001870154606060020a9004909416835292905220548754600284015402811515610aa557fe5b0490505b606060020a9590950160018781018290559095909450600160a060020a03331681156108fc0282604051600060405180830381858888f193505050501515610af057600080fd5b7f222fd1da48a94bc94aa8e2e60a0d9eb7e0467b7938f6e4a1d4dcdeac20c1cd8d33858a8685604051600160a060020a03909516602086015263ffffffff93841660408087019190915292841660608601529216608084015260a083019190915260c08083526006908301527f52656465656d000000000000000000000000000000000000000000000000000060e0830152610100909101905180910390a15050505050505050565b60408051908101604052600b81527f43727970746f53706f7274000000000000000000000000000000000000000000602082015281565b600081815260016020819052604082208054818301549093928392839283928392839290918390819060ff606060020a85041614610c0f576000610c12565b60015b600b805460009c5063ffffffff640100000000870481169c508087169b506801000000000000000087041699509196509088908110610c4d57fe5b90600052602060002090600502019150816002015490508060001415610c7957610c76876125ad565b90505b600182015463ffffffff8a8116606060020a909204161415610cd55763ffffffff8088166000908152600c602090815260408083206001870154606060020a90049094168352929052205484548202811515610cd157fe5b0499505b60048281015460ff1681811115610ce857fe5b1415610cf357835499505b505050600098895250600260205260409097205495979496939592949193600160a060020a0390931692919050565b610d2c338261262e565b1515610d3757600080fd5b610d41818361264e565b8082600160a060020a031633600160a060020a03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60015b90565b6000600b8263ffffffff16815481101515610da357fe5b600091825260209091206005909102019050600160048083015460ff1690811115610dca57fe5b14610dd457600080fd5b60085433600160a060020a0390811691161480610e095750600160a060020a03331660009081526009602052604090205460ff165b80610e3a5750600181015462093a8063ffffffff64010000000090920482160116610e326113c7565b63ffffffff16115b1515610e4557600080fd5b6004818101805460ff19169091179055600080516020613a43833981519152818360405163ffffffff821660408201526060808252600d908201527f43616e63656c4c6f747465727900000000000000000000000000000000000000608082015260a060208201818152845460026000196101006001841615020190911604918301829052829160c083019086908015610f205780601f10610ef557610100808354040283529160200191610f20565b820191906000526020600020905b815481529060010190602001808311610f0357829003601f168201915b505094505050505060405180910390a1610f398261267c565b5050565b600c6020908152600092835260408084209091529082529020805460019091015463ffffffff1682565b60085433600160a060020a03908116911614610f8257600080fd5b600160a060020a03166000908152600960205260409020805460ff19169055565b60005481565b600260205260009081526040902054600160a060020a031681565b610fce338261279b565b1515610fd957600080fd5b610fe3838261262e565b1515610fee57600080fd5b610ff98383836127bb565b505050565b600080600061100b613864565b611013612881565b600160a060020a031633600160a060020a031614151561103257600080fd5b6000868152600d602052604090205463ffffffff16935083151561105557600080fd5b600b805463ffffffff861690811061106957fe5b600091825260209091206005909102019250600160048085015460ff169081111561109057fe5b1461109a57600080fd5b6001830154640100000000900463ffffffff166110b56113c7565b63ffffffff16116110c557600080fd5b6110d0856000612a21565b915060408051908101604052600881527f63616c6c6261636b0000000000000000000000000000000000000000000000006020820152905063ffffffff8216151561114c5760408051908101604052601981527f63616c6c6261636b5f726573756c745f6e6f745f666f756e6400000000000000602082015290505b600183015463ffffffff908116908316111561119d576000915060408051908101604052601581527f63616c6c6261636b5f726573756c745f6c696d69740000000000000000000000602082015290505b600080516020613a438339815191528184846040518080602001806020018463ffffffff168152602001838103835286818151815260200191508051906020019080838360005b838110156111fc5780820151838201526020016111e4565b50505050905090810190601f1680156112295780820380516001836020036101000a031916815260200191505b5083810382528554600260001961010060018416150201909116048082526020909101908690801561129c5780601f106112715761010080835404028352916020019161129c565b820191906000526020600020905b81548152906001019060200180831161127f57829003601f168201915b50509550505050505060405180910390a163ffffffff8216156112eb576001830180546fffffffff0000000000000000000000001916606060020a63ffffffff8516021790556112eb84612b8f565b505050505050565b60085460009033600160a060020a0390811691161461131157600080fd5b600a546000901161132157600080fd5b50600a80546000909155600854600160a060020a031681156108fc0282604051600060405180830381858888f19350505050151561135e57600080fd5b600080516020613a438339815191528160405160408082019290925260608082526008908201527f5749544844524157000000000000000000000000000000000000000000000000608082015260a06020820181905260009082015260e001905180910390a150565b4290565b60085433600160a060020a03908116911614806114005750600160a060020a03331660009081526009602052604090205460ff165b151561140b57600080fd5b600f829055600e819055610f39633b9aca008302612d25565b60096020526000908152604090205460ff1681565b600e5481565b600a5481565b60085460009033600160a060020a039081169116148061147d5750600160a060020a03331660009081526009602052604090205460ff165b151561148857600080fd5b600b805463ffffffff851690811061149c57fe5b906000526020600020906005020190508115158160040160019054906101000a900460ff161515141515156114d057600080fd5b60040180549115156101000261ff001990921691909117905550565b600081815260026020526040902054600160a060020a031680151561151057600080fd5b919050565b60085433600160a060020a0390811691161461153057600080fd5b600160a060020a03166000908152600960205260409020805460ff19166001179055565b600160a060020a031660009081526003602052604090205490565b60085460009033600160a060020a03908116911614806115a75750600160a060020a03331660009081526009602052604090205460ff165b15156115b257600080fd5b600b805463ffffffff85169081106115c657fe5b600091825260209091206005909102019050600160048083015460ff16908111156115ed57fe5b146115f757600080fd5b600181015463ffffffff908116908316111561161257600080fd5b63ffffffff8216151561162457600080fd5b6001810154611c2063ffffffff640100000000909204821601166116466113c7565b63ffffffff161161165657600080fd5b6001810180546fffffffff0000000000000000000000001916606060020a63ffffffff85811682029290921792839055600080516020613a438339815191529284929190041660405163ffffffff8216604082015260608082526014908201527f5265736f6c76654c6f7474657279427948616e64000000000000000000000000608082015260a060208201818152845460026000196101006001841615020190911604918301829052829160c0830190869080156117565780601f1061172b57610100808354040283529160200191611756565b820191906000526020600020905b81548152906001019060200180831161173957829003601f168201915b505094505050505060405180910390a1610ff983612b8f565b60008061177a613864565b600854600090819033600160a060020a03908116911614806117b45750600160a060020a03331660009081526009602052604090205460ff165b15156117bf57600080fd5b600b805463ffffffff89169081106117d357fe5b9060005260206000209060050201945061182260408051908101604052600381527f55524c00000000000000000000000000000000000000000000000000000000006020820152600e54612ebb565b9350838560030154340111151561183857600080fd5b60038501805434018590039055600080516020613a43833981519152858760405163ffffffff8216604082015260608082526018908201527f5265736f6c76654c6f747465727942794f7261636c697a650000000000000000608082015260a060208201818152845460026000196101006001841615020190911604918301829052829160c0830190869080156119105780601f106118e557610100808354040283529160200191611910565b820191906000526020600020905b8154815290600101906020018083116118f357829003601f168201915b505094505050505060405180910390a16119c8606060405190810160405280602a81526020017f6a736f6e2868747470733a2f2f63727970746f73706f72747a2e636f6d2f617081526020017f692f76322f67616d652f0000000000000000000000000000000000000000000081525061198f8963ffffffff166130d2565b60408051908101604052600f81527f2f726573756c74292e726573756c74000000000000000000000000000000000060208201526131c6565b6001860154909350640100000000900463ffffffff166119e66113c7565b63ffffffff161015611a1757856119fb6113c7565b6001870154640100000000900463ffffffff1603019150611a1b565b8591505b611a638263ffffffff1660408051908101604052600381527f55524c00000000000000000000000000000000000000000000000000000000006020820152600e54869061339c565b6000908152600d60205260409020805463ffffffff191663ffffffff9890981697909717909655505050505050565b611a9a613864565b6000806020604051908101604052600081529250600160a060020a0385161515611ac357600080fd5b505060008054600019015b60008110611b7057600054811115611ae557611b70565b600081815260026020526040902054600160a060020a0386811691161415611b6757611b3483604080519081016040526001815260fa60020a600b026020820152611b2f846130d2565b6131c6565b925060019091019063ffffffff841615801590611b5d57508363ffffffff168263ffffffff1610155b15611b6757611b70565b60001901611ace565b505092915050565b600854600160a060020a031681565b60408051908101604052600281527f4353000000000000000000000000000000000000000000000000000000000000602082015281565b60085433600160a060020a03908116911614611bd957600080fd5b60078054600160a060020a031916600160a060020a0392909216919091179055565b600460205260009081526040902054600160a060020a031681565b600160a060020a0382161515611c2b57600080fd5b611c35338261262e565b1515611c4057600080fd5b610f393383836127bb565b611c53613876565b60085460009033600160a060020a0390811691161480611c8b5750600160a060020a03331660009081526009602052604090205460ff165b1515611c9657600080fd5b6002865111611ca457600080fd5b600163ffffffff851611611cb757600080fd5b600063ffffffff841611611cca57600080fd5b611cd26113c7565b63ffffffff168563ffffffff16111515611ceb57600080fd5b85825263ffffffff8481166020840152858116604084015283166060830152600160e08301819052600b8054808301611d2483826138ca565b60009283526020909220859160050201815181908051611d489291602001906138f6565b50602082015160018201805463ffffffff191663ffffffff9290921691909117905560408201518160010160046101000a81548163ffffffff021916908363ffffffff16021790555060608201518160010160086101000a81548163ffffffff021916908363ffffffff160217905550608082015181600101600c6101000a81548163ffffffff021916908363ffffffff16021790555060a0820151816002015560c0820151816003015560e08201518160040160006101000a81548160ff02191690836004811115611e1757fe5b0217905550610100820151600490910180549115156101000261ff001990921691909117905550039050600080516020613a4383398151915286826040516040810182905260608082526007908201527f41646447616d6500000000000000000000000000000000000000000000000000608082015260a0602082018181528291820185818151815260200191508051906020019080838360005b83811015611eca578082015183820152602001611eb2565b50505050905090810190601f168015611ef75780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a1505050505050565b60075433600160a060020a03908116911614611f2957600080fd5b60075460088054600160a060020a031916600160a060020a03909216919091179055565b611f55613864565b600080600080600080600080600080600b8c63ffffffff16815481101515611f7957fe5b90600052602060002090600502019050806000018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156120215780601f10611ff657610100808354040283529160200191612021565b820191906000526020600020905b81548152906001019060200180831161200457829003601f168201915b505050506001830154919c505063ffffffff8082169b50640100000000820481169a5068010000000000000000820481169950606060020a9091041696506120688c613723565b9550806002015494508460001415612086576120838c6125ad565b94505b6003810154600482015490945060ff16925060018360048111156120a657fe5b1480156120c557508863ffffffff166120bd6113c7565b63ffffffff16115b156120cf57600292505b8060040160019054906101000a900460ff169150509193959799509193959799565b600f5481565b6000806000806000612107613974565b6000600b8a63ffffffff1681548110151561211e57fe5b600091825260209091206005909102019650600160048089015460ff169081111561214557fe5b1461214f57600080fd5b6001870154640100000000900463ffffffff1661216a6113c7565b63ffffffff161061217a57600080fd5b60008963ffffffff1611801561219e5750600187015463ffffffff908116908a1611155b15156121a957600080fd5b33600160a060020a031688600160a060020a0316141515156121ca57600080fd5b6004870154610100900460ff16156121e157600080fd5b600187015468010000000000000000900463ffffffff1666038d7ea4c680000266ffffffffffffff1634101561221657600080fd5b3495506064600587020495869003959450600160a060020a038816156122855760646014860204948590039493508484018601341461225457600080fd5b600160a060020a03881684156108fc0285604051600060405180830381858888f19350505050151561228557600080fd5b6003870180548601905563ffffffff8a81166000818152600c602090815260408083208e861680855292529182902080548b0181556001908101805480871690920190951663ffffffff1990911617909355680100000000000000009091026401000000009092029190910142019350805190810160409081528782526fffffffffffffffffffffffffffffffff85166020808401919091526000805460018082018355818352909252919091209193509150829081518155602082015160019091015550612356600033836127bb565b7f222fd1da48a94bc94aa8e2e60a0d9eb7e0467b7938f6e4a1d4dcdeac20c1cd8d338b838c8a604051600160a060020a03909516602086015263ffffffff93841660408087019190915292841660608601529216608084015260a083019190915260c08083526003908301527f427579000000000000000000000000000000000000000000000000000000000060e0830152610100909101905180910390a150505050505050505050565b600080600061240e613864565b612416613864565b600b5494506000935083925082806020604051908101604052806000815250935060206040519081016040526000815292506124506113c7565b9150600090505b8663ffffffff168163ffffffff1610156125a4576001600b805463ffffffff841690811061248157fe5b60009182526020909120600460059092020181015460ff16908111156124a357fe5b146124ad5761259c565b600b805463ffffffff83169081106124c157fe5b600091825260209091206001600590920201015463ffffffff640100000000909104811690831610156125255760019095019461252284604080519081016040526001815260fa60020a600b026020820152611b2f63ffffffff85166130d2565b93505b600b805463ffffffff831690811061253957fe5b600091825260209091206001600590920201015463ffffffff64010000000090910481169083161061259c5760019094019361259983604080519081016040526001815260fa60020a600b026020820152611b2f63ffffffff85166130d2565b92505b600101612457565b50509091929394565b600080600080600b8563ffffffff168154811015156125c857fe5b9060005260206000209060050201925060009150600190505b600183015463ffffffff908116908216116126265763ffffffff8086166000908152600c602090815260408083209385168352929052205491909101906001016125e1565b509392505050565b600090815260026020526040902054600160a060020a0391821691161490565b6000918252600460205260409091208054600160a060020a031916600160a060020a03909216919091179055565b6000600b8263ffffffff1681548110151561269357fe5b90600052602060002090600502019050600081600301541115610f3957600381018054600a8054909101905554600080516020613a438339815191529082906040516040810182905260608082526007908201527f54616b6546656500000000000000000000000000000000000000000000000000608082015260a060208201818152845460026000196101006001841615020190911604918301829052829160c0830190869080156127875780601f1061275c57610100808354040283529160200191612787565b820191906000526020600020905b81548152906001019060200180831161276a57829003601f168201915b505094505050505060405180910390a15050565b600090815260046020526040902054600160a060020a0391821691161490565b600160a060020a03808316600081815260036020908152604080832080546001019055858352600290915290208054600160a060020a0319169091179055831615610ff9578082600160a060020a031684600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4600160a060020a03831660009081526003602090815260408083208054600019019055838352600490915290208054600160a060020a0319169055505050565b600554600090600160a060020a031615806128ae57506005546128ac90600160a060020a03166137a3565b155b156128bf576128bd60006137a7565b505b600554600160a060020a03166338cc48316000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561290757600080fd5b6102c65a03f1151561291857600080fd5b5050506040518051600654600160a060020a0390811691161490506129ba57600554600160a060020a03166338cc48316000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561297f57600080fd5b6102c65a03f1151561299057600080fd5b505050604051805160068054600160a060020a031916600160a060020a0392909216919091179055505b600654600160a060020a031663c281d19e6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515612a0257600080fd5b6102c65a03f11515612a1357600080fd5b505050604051805191505090565b6000612a2b613864565b5082600080805b8351811015612b72577f3000000000000000000000000000000000000000000000000000000000000000848281518110612a6857fe5b016020015160f860020a900460f860020a02600160f860020a03191610158015612ad957507f3900000000000000000000000000000000000000000000000000000000000000848281518110612aba57fe5b016020015160f860020a900460f860020a02600160f860020a03191611155b15612b2f578115612af857851515612af057612b72565b600019909501945b600a830292506030848281518110612b0c57fe5b016020015160f860020a900460f860020a0260f860020a90040383019250612b6a565b838181518110612b3b57fe5b016020015160f860020a900460f860020a02600160f860020a031916602e60f860020a021415612b6a57600191505b600101612a32565b6000861115612b845785600a0a830292505b509095945050505050565b6000600b8263ffffffff16815481101515612ba657fe5b600091825260209091206004600590920201908101805460ff191660031790559050612bd1826125ad565b600282015563ffffffff8083166000908152600c60209081526040808320600180870154606060020a90048616855292529091200154161515612d1c57600381015460028201540115612c345780600301548160020154600a540101600a819055505b600080516020613a438339815191528160000182600301548360020154016040516040810182905260608082526009908201527f4e4f424f445957494e0000000000000000000000000000000000000000000000608082015260a060208201818152845460026000196101006001841615020190911604918301829052829160c083019086908015612d075780601f10612cdc57610100808354040283529160200191612d07565b820191906000526020600020905b815481529060010190602001808311612cea57829003601f168201915b505094505050505060405180910390a1610f39565b610f398261267c565b600554600160a060020a03161580612d4f5750600554612d4d90600160a060020a03166137a3565b155b15612d6057612d5e60006137a7565b505b600554600160a060020a03166338cc48316000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515612da857600080fd5b6102c65a03f11515612db957600080fd5b5050506040518051600654600160a060020a039081169116149050612e5b57600554600160a060020a03166338cc48316000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515612e2057600080fd5b6102c65a03f11515612e3157600080fd5b505050604051805160068054600160a060020a031916600160a060020a0392909216919091179055505b600654600160a060020a031663ca6ad1e48260405160e060020a63ffffffff84160281526004810191909152602401600060405180830381600087803b1515612ea357600080fd5b6102c65a03f11515612eb457600080fd5b5050505b50565b600554600090600160a060020a03161580612ee85750600554612ee690600160a060020a03166137a3565b155b15612ef957612ef760006137a7565b505b600554600160a060020a03166338cc48316000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515612f4157600080fd5b6102c65a03f11515612f5257600080fd5b5050506040518051600654600160a060020a039081169116149050612ff457600554600160a060020a03166338cc48316000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515612fb957600080fd5b6102c65a03f11515612fca57600080fd5b505050604051805160068054600160a060020a031916600160a060020a0392909216919091179055505b600654600160a060020a0316632ef3accc84846000604051602001526040518363ffffffff1660e060020a0281526004018080602001838152602001828103825284818151815260200191508051906020019080838360005b8381101561306557808201518382015260200161304d565b50505050905090810190601f1680156130925780820380516001836020036101000a031916815260200191505b509350505050602060405180830381600087803b15156130b157600080fd5b6102c65a03f115156130c257600080fd5b5050506040518051949350505050565b6130da613864565b6000806130e5613864565b60008515156131295760408051908101604052600181527f3000000000000000000000000000000000000000000000000000000000000000602082015294506131bd565b8593505b831561314457600190920191600a8404935061312d565b826040518059106131525750595b818152601f19601f8301168101602001604052905091505060001982015b85156131b95760001981019060f860020a6030600a890601029083908151811061319657fe5b906020010190600160f860020a031916908160001a905350600a86049550613170565b8194505b50505050919050565b6131ce613864565b6131d6613864565b6131de613864565b6131e6613864565b6131ee613864565b6000806131f9613864565b8a9650899550889450600092508651151561323c57845160405180591061321d5750595b818152601f19601f83011681016020016040529050935083905061332d565b84518651885101016040518059106132515750595b818152601f19601f830116810160200160405290509350839050600091505b86518210156132cc5786828151811061328557fe5b016020015160f860020a900460f860020a028184806001019550815181106132a957fe5b906020010190600160f860020a031916908160001a905350600190910190613270565b600091505b855182101561332d578582815181106132e657fe5b016020015160f860020a900460f860020a0281848060010195508151811061330a57fe5b906020010190600160f860020a031916908160001a9053506001909101906132d1565b600091505b845182101561338e5784828151811061334757fe5b016020015160f860020a900460f860020a0281848060010195508151811061336b57fe5b906020010190600160f860020a031916908160001a905350600190910190613332565b9a9950505050505050505050565b6005546000908190600160a060020a031615806133cb57506005546133c990600160a060020a03166137a3565b155b156133dc576133da60006137a7565b505b600554600160a060020a03166338cc48316000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561342457600080fd5b6102c65a03f1151561343557600080fd5b5050506040518051600654600160a060020a0390811691161490506134d757600554600160a060020a03166338cc48316000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561349c57600080fd5b6102c65a03f115156134ad57600080fd5b505050604051805160068054600160a060020a031916600160a060020a0392909216919091179055505b600654600160a060020a0316632ef3accc86856000604051602001526040518363ffffffff1660e060020a0281526004018080602001838152602001828103825284818151815260200191508051906020019080838360005b83811015613548578082015183820152602001613530565b50505050905090810190601f1680156135755780820380516001836020036101000a031916815260200191505b509350505050602060405180830381600087803b151561359457600080fd5b6102c65a03f115156135a557600080fd5b5050506040518051915050670de0b6b3a76400003a8402018111156135cd576000915061371a565b600654600160a060020a031663c51be90f82888888886000604051602001526040518663ffffffff1660e060020a028152600401808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b8381101561364b578082015183820152602001613633565b50505050905090810190601f1680156136785780820380516001836020036101000a031916815260200191505b50838103825285818151815260200191508051906020019080838360005b838110156136ae578082015183820152602001613696565b50505050905090810190601f1680156136db5780820380516001836020036101000a031916815260200191505b5096505050505050506020604051808303818588803b15156136fc57600080fd5b6125ee5a03f1151561370d57600080fd5b5050505060405180519250505b50949350505050565b600080600080600b8563ffffffff1681548110151561373e57fe5b9060005260206000209060050201925060009150600190505b600183015463ffffffff908116908216116126265763ffffffff8086166000908152600c6020908152604080832085851684529091529020600190810154909116929092019101613757565b3b90565b60006137b16137b7565b92915050565b6000806137d7731d3b2638a7cc9f2cb3d298a3da7a90b67e5506ed6137a3565b111561380b575060058054600160a060020a031916731d3b2638a7cc9f2cb3d298a3da7a90b67e5506ed1790556001610d89565b600061382a73c03a2615d5efaf5f49f60b7bb6583eaec212fdf16137a3565b111561385e575060058054600160a060020a03191673c03a2615d5efaf5f49f60b7bb6583eaec212fdf11790556001610d89565b50600090565b60206040519081016040526000815290565b6101206040519081016040528061388b613864565b815260006020820181905260408201819052606082018190526080820181905260a0820181905260c0820181905260e082018190526101009091015290565b815481835581811511610ff957600502816005028360005260206000209182019101610ff9919061398b565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061393757805160ff1916838001178555613964565b82800160010185558215613964579182015b82811115613964578251825591602001919060010190613949565b506139709291506139e4565b5090565b604080519081016040526000808252602082015290565b610d8991905b808211156139705760006139a582826139fe565b506001810180546fffffffffffffffffffffffffffffffff19169055600060028201819055600382015560048101805461ffff19169055600501613991565b610d8991905b8082111561397057600081556001016139ea565b50805460018160011615610100020316600290046000825580601f10613a245750612eb8565b601f016020900490600052602060002090810190612eb891906139e45600d7fd1f721dc8644a44be50ee5bce1d6b7ac2ffd81759add00d58b2efc0e9f050a165627a7a72305820828160fa92fcb245a7e7a50ea912fbed03326c9a53bf9f8faca0a55d673075910029

   Swarm Source:
bzzr://828160fa92fcb245a7e7a50ea912fbed03326c9a53bf9f8faca0a55d67307591

 

View All
Block Age txn Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "downvote" button for any spammy posts, and the "upvote" for interesting conversations.