Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
0
Holders
29
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 0 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
buyable
Compiler Version
v0.4.23+commit.124ca40d
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-08-17 */ /** * @title ERC721 Non-Fungible Token Standard basic interface * @dev see https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md */ contract ERC721Basic { event Transfer(address indexed _from, address indexed _to, uint256 _tokenId); event Approval(address indexed _owner, address indexed _approved, uint256 _tokenId); event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); function balanceOf(address _owner) public view returns (uint256 _balance); function ownerOf(uint256 _tokenId) public view returns (address _owner); function exists(uint256 _tokenId) public view returns (bool _exists); function approve(address _to, uint256 _tokenId) public; function getApproved(uint256 _tokenId) public view returns (address _operator); function setApprovalForAll(address _operator, bool _approved) public; function isApprovedForAll(address _owner, address _operator) public view returns (bool); function transferFrom(address _from, address _to, uint256 _tokenId) public; } // File: contracts/SafeMath.sol /** * @title SafeMath * @dev Math operations with safety checks that throw on error */ library SafeMath { function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; assert(c / a == b); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { // assert(b > 0); // Solidity automatically throws when dividing by 0 uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; assert(c >= a); return c; } } // File: contracts/AddressUtils.sol /** * Utility library of inline functions on addresses */ library AddressUtils { /** * Returns whether the target address is a contract * @dev This function will return false if invoked during the constructor of a contract, * as the code is not actually created until after the constructor finishes. * @param addr address to check * @return whether the target address is a contract */ function isContract(address addr) internal view returns (bool) { uint256 size; // XXX Currently there is no better way to check if there is a contract in an address // than to check the size of the code at that address. // See https://ethereum.stackexchange.com/a/14016/36603 // for more details about how this works. // TODO Check this again before the Serenity release, because all addresses will be // contracts then. assembly { size := extcodesize(addr) } // solium-disable-line security/no-inline-assembly return size > 0; } } // File: contracts/acl.sol /** * This is the first version of a simple ACL / Permission Management System * It might differentiate from other Permission Management Systems and therefore be more restrictive in the following points: * Every User can just have one Role * No new Roles "Positions" can be generated * Therefore all possible Roles must be defined at the beginning */ contract acl{ enum Role { USER, ORACLE, ADMIN } mapping (address=> Role) permissions; constructor() public { permissions[msg.sender] = Role(2); } function setRole(uint8 rolevalue,address entity)external check(2){ permissions[entity] = Role(rolevalue); } function getRole(address entity)public view returns(Role){ return permissions[entity]; } modifier check(uint8 role) { require(uint8(getRole(msg.sender)) == role); _; } } // File: contracts/ERC721BasicToken.sol /** * @title ERC721 Non-Fungible Token Standard basic implementation * @dev edited verison of Open Zepplin implementation * @dev see https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md * @dev edited _mint & isApprovedOrOwner modifiers */ contract ERC721BasicToken is ERC721Basic, acl { using SafeMath for uint256; using AddressUtils for address; uint public numTokensTotal; // Mapping from token ID to owner mapping (uint256 => address) internal tokenOwner; // Mapping from token ID to approved address mapping (uint256 => address) internal tokenApprovals; // Mapping from owner to number of owned token mapping (address => uint256) internal ownedTokensCount; // Mapping from owner to operator approvals mapping (address => mapping (address => bool)) internal operatorApprovals; /** * @dev Guarantees msg.sender is owner of the given token * @param _tokenId uint256 ID of the token to validate its ownership belongs to msg.sender */ modifier onlyOwnerOf(uint256 _tokenId) { require(ownerOf(_tokenId) == msg.sender); _; } /** * @dev Checks msg.sender can transfer a token, by being owner, approved, or operator * @param _tokenId uint256 ID of the token to validate */ modifier canTransfer(uint256 _tokenId) { require(isApprovedOrOwner(msg.sender, _tokenId)); _; } /** * @dev Gets the balance of the specified address * @param _owner address to query the balance of * @return uint256 representing the amount owned by the passed address */ function balanceOf(address _owner) public view returns (uint256) { require(_owner != address(0)); return ownedTokensCount[_owner]; } /** * @dev Gets the owner of the specified token ID * @param _tokenId uint256 ID of the token to query the owner of * @return owner address currently marked as the owner of the given token ID */ function ownerOf(uint256 _tokenId) public view returns (address) { address owner = tokenOwner[_tokenId]; /* require(owner != address(0)); */ return owner; } /** * @dev Returns whether the specified token exists * @param _tokenId uint256 ID of the token to query the existence of * @return whether the token exists */ function exists(uint256 _tokenId) public view returns (bool) { address owner = tokenOwner[_tokenId]; return owner != address(0); } /** * @dev Approves another address to transfer the given token ID * @dev The zero address indicates there is no approved address. * @dev There can only be one approved address per token at a given time. * @dev Can only be called by the token owner or an approved operator. * @param _to address to be approved for the given token ID * @param _tokenId uint256 ID of the token to be approved */ function approve(address _to, uint256 _tokenId) public { address owner = tokenOwner[_tokenId]; tokenApprovals[_tokenId] = _to; require(_to != ownerOf(_tokenId)); require(msg.sender == owner || isApprovedForAll(owner, msg.sender)); tokenApprovals[_tokenId] = _to; emit Approval(owner, _to, _tokenId); } /** * @dev Gets the approved address for a token ID, or zero if no address set * @param _tokenId uint256 ID of the token to query the approval of * @return address currently approved for the given token ID */ function getApproved(uint256 _tokenId) public view returns (address) { return tokenApprovals[_tokenId]; } /** * @dev Sets or unsets the approval of a given operator * @dev An operator is allowed to transfer all tokens of the sender on their behalf * @param _to operator address to set the approval * @param _approved representing the status of the approval to be set */ function setApprovalForAll(address _to, bool _approved) public { require(_to != msg.sender); operatorApprovals[msg.sender][_to] = _approved; emit ApprovalForAll(msg.sender, _to, _approved); } function isApprovedForAll(address _owner, address _operator) public view returns (bool) { return operatorApprovals[_owner][_operator]; } /** * @dev Transfers the ownership of a given token ID to another address * @dev Usage of this method is discouraged, use `safeTransferFrom` whenever possible * @dev Requires the msg sender to be the owner, approved, or operator * @param _from current owner of the token * @param _to address to receive the ownership of the given token ID * @param _tokenId uint256 ID of the token to be transferred */ function transferFrom(address _from, address _to, uint256 _tokenId) public canTransfer(_tokenId) { require(_from != address(0)); require(_to != address(0)); clearApproval(_from, _tokenId); removeTokenFrom(_from, _tokenId); addTokenTo(_to, _tokenId); emit Transfer(_from, _to, _tokenId); } /** * @dev Returns whether the given spender can transfer a given token ID * @param _spender address of the spender to query * @param _tokenId uint256 ID of the token to be transferred * @return bool whether the msg.sender is approved for the given token ID, * is an operator of the owner, or is the owner of the token */ function isApprovedOrOwner(address _spender, uint256 _tokenId) public view returns (bool) { address owner = ownerOf(_tokenId); return _spender == owner || getApproved(_tokenId) == _spender || isApprovedForAll(owner, _spender); } /** * @dev Internal function to mint a new token * @dev Reverts if the given token ID already exists * @param _to The address that will own the minted token * @param _tokenId uint256 ID of the token to be minted by the msg.sender * @dev _check(2) checks msg.sender == ADMIN */ function _mint(address _to, uint256 _tokenId) external check(2) { require(_to != address(0)); addTokenTo(_to, _tokenId); numTokensTotal = numTokensTotal.add(1); emit Transfer(address(0), _to, _tokenId); } /** * @dev Internal function to burn a specific token * @dev Reverts if the token does not exist * @param _tokenId uint256 ID of the token being burned by the msg.sender */ function _burn(address _owner, uint256 _tokenId) external check(2) { clearApproval(_owner, _tokenId); removeTokenFrom(_owner, _tokenId); numTokensTotal = numTokensTotal.sub(1); emit Transfer(_owner, address(0), _tokenId); } /** * @dev Internal function to clear current approval of a given token ID * @dev Reverts if the given address is not indeed the owner of the token * @param _owner owner of the token * @param _tokenId uint256 ID of the token to be transferred */ function clearApproval(address _owner, uint256 _tokenId) internal { require(ownerOf(_tokenId) == _owner); if (tokenApprovals[_tokenId] != address(0)) { tokenApprovals[_tokenId] = address(0); emit Approval(_owner, address(0), _tokenId); } } /** * @dev Internal function to add a token ID to the list of a given address * @param _to address representing the new owner of the given token ID * @param _tokenId uint256 ID of the token to be added to the tokens list of the given address */ function addTokenTo(address _to, uint256 _tokenId) internal { require(tokenOwner[_tokenId] == address(0)); tokenOwner[_tokenId] = _to; ownedTokensCount[_to] = ownedTokensCount[_to].add(1); } /** * @dev Internal function to remove a token ID from the list of a given address * @param _from address representing the previous owner of the given token ID * @param _tokenId uint256 ID of the token to be removed from the tokens list of the given address */ function removeTokenFrom(address _from, uint256 _tokenId) internal { require(ownerOf(_tokenId) == _from); ownedTokensCount[_from] = ownedTokensCount[_from].sub(1); tokenOwner[_tokenId] = address(0); } } // File: contracts/testreg.sol contract testreg is ERC721BasicToken { // @param struct TokenStruct { string token_uri; } mapping (uint256 => TokenStruct) TokenId; } // File: contracts/update.sol contract update is testreg { event UpdateToken(uint256 _tokenId, string new_uri); function updatetoken(uint256 _tokenId, string new_uri) external check(1){ TokenId[_tokenId].token_uri = new_uri; emit UpdateToken(_tokenId, new_uri); } function _mint_with_uri(address _to, uint256 _tokenId, string new_uri) external check(2) { require(_to != address(0)); addTokenTo(_to, _tokenId); numTokensTotal = numTokensTotal.add(1); TokenId[_tokenId].token_uri = new_uri; emit Transfer(address(0), _to, _tokenId); } } // File: contracts/bloomingPool.sol /// @dev altered version of Open Zepplin's 'SplitPayment' contract contract bloomingPool is update { using SafeMath for uint256; uint256 public totalShares = 0; uint256 public totalReleased = 0; bool public freeze; mapping(address => uint256) public shares; constructor() public { freeze = false; } function() public payable { } function calculate_total_shares(uint256 _shares,uint256 unique_id )internal{ shares[tokenOwner[unique_id]] = shares[tokenOwner[unique_id]].add(_shares); totalShares = totalShares.add(_shares); } function oracle_call(uint256 unique_id) external check(1){ calculate_total_shares(1,unique_id); } function get_shares() external view returns(uint256 individual_shares){ return shares[msg.sender]; } function freeze_pool(bool _freeze) external check(2){ freeze = _freeze; } function reset_individual_shares(address payee)internal { shares[payee] = 0; } function substract_individual_shares(uint256 _shares)internal { totalShares = totalShares - _shares; } function claim()public{ payout(msg.sender); } function payout(address to) internal returns(bool){ require(freeze == false); address payee = to; require(shares[payee] > 0); uint256 volume = address(this).balance; uint256 payment = volume.mul(shares[payee]).div(totalShares); require(payment != 0); require(address(this).balance >= payment); totalReleased = totalReleased.add(payment); payee.transfer(payment); substract_individual_shares(shares[payee]); reset_individual_shares(payee); } function emergency_withdraw(uint amount) external check(2) { require(amount <= this.balance); msg.sender.transfer(amount); } } // File: contracts/buyable.sol contract buyable is bloomingPool { address INFRASTRUCTURE_POOL_ADDRESS; mapping (uint256 => uint256) TokenIdtosetprice; mapping (uint256 => uint256) TokenIdtoprice; event Set_price_and_sell(uint256 tokenId, uint256 Price); event Stop_sell(uint256 tokenId); constructor() public {} function initialisation(address _infrastructure_address) public check(2){ INFRASTRUCTURE_POOL_ADDRESS = _infrastructure_address; } function set_price_and_sell(uint256 UniqueID,uint256 Price) external { approve(address(this), UniqueID); TokenIdtosetprice[UniqueID] = Price; emit Set_price_and_sell(UniqueID, Price); } function stop_sell(uint256 UniqueID) external payable{ require(tokenOwner[UniqueID] == msg.sender); clearApproval(tokenOwner[UniqueID],UniqueID); emit Stop_sell(UniqueID); } function buy(uint256 UniqueID) external payable { address _to = msg.sender; require(TokenIdtosetprice[UniqueID] == msg.value); TokenIdtoprice[UniqueID] = msg.value; uint _blooming = msg.value.div(20); uint _infrastructure = msg.value.div(20); uint _combined = _blooming.add(_infrastructure); uint _amount_for_seller = msg.value.sub(_combined); require(tokenOwner[UniqueID].call.gas(99999).value(_amount_for_seller)()); this.transferFrom(tokenOwner[UniqueID], _to, UniqueID); if(!INFRASTRUCTURE_POOL_ADDRESS.call.gas(99999).value(_infrastructure)()){ revert("transfer to infrastructurePool failed"); } } function get_token_data(uint256 _tokenId) external view returns(uint256 _price, uint256 _setprice, bool _buyable){ _price = TokenIdtoprice[_tokenId]; _setprice = TokenIdtosetprice[_tokenId]; if (tokenApprovals[_tokenId] != address(0)){ _buyable = true; } } function get_token_data_buyable(uint256 _tokenId) external view returns(bool _buyable) { if (tokenApprovals[_tokenId] != address(0)){ _buyable = true; } } function get_all_sellable_token()external view returns(bool[101] list_of_available){ uint i; for(i = 0;i<101;i++) { if (tokenApprovals[i] != address(0)){ list_of_available[i] = true; }else{ list_of_available[i] = false; } } } function get_my_tokens()external view returns(bool[101] list_of_my_tokens){ uint i; address _owner = msg.sender; for(i = 0;i<101;i++) { if (tokenOwner[i] == _owner){ list_of_my_tokens[i] = true; }else{ list_of_my_tokens[i] = false; } } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"},{"name":"new_uri","type":"string"}],"name":"updatetoken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"name":"","type":"address"}],"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":false,"inputs":[{"name":"_freeze","type":"bool"}],"name":"freeze_pool","outputs":[],"payable":false,"stateMutability":"nonpayable","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":true,"inputs":[],"name":"totalShares","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_spender","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"isApprovedOrOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"entity","type":"address"}],"name":"getRole","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"get_my_tokens","outputs":[{"name":"list_of_my_tokens","type":"bool[101]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"_mint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"claim","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"exists","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"get_all_sellable_token","outputs":[{"name":"list_of_available","type":"bool[101]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"_burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"freeze","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"UniqueID","type":"uint256"}],"name":"stop_sell","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"get_token_data_buyable","outputs":[{"name":"_buyable","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"get_token_data","outputs":[{"name":"_price","type":"uint256"},{"name":"_setprice","type":"uint256"},{"name":"_buyable","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"numTokensTotal","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"shares","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"UniqueID","type":"uint256"}],"name":"buy","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"totalReleased","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_infrastructure_address","type":"address"}],"name":"initialisation","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"emergency_withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"rolevalue","type":"uint8"},{"name":"entity","type":"address"}],"name":"setRole","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"unique_id","type":"uint256"}],"name":"oracle_call","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"},{"name":"new_uri","type":"string"}],"name":"_mint_with_uri","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"UniqueID","type":"uint256"},{"name":"Price","type":"uint256"}],"name":"set_price_and_sell","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"get_shares","outputs":[{"name":"individual_shares","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":false,"name":"tokenId","type":"uint256"},{"indexed":false,"name":"Price","type":"uint256"}],"name":"Set_price_and_sell","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenId","type":"uint256"}],"name":"Stop_sell","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_tokenId","type":"uint256"},{"indexed":false,"name":"new_uri","type":"string"}],"name":"UpdateToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_approved","type":"address"},{"indexed":false,"name":"_tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_operator","type":"address"},{"indexed":false,"name":"_approved","type":"bool"}],"name":"ApprovalForAll","type":"event"}]
Contract Creation Code
60806040526000600755600060085534801561001a57600080fd5b5060028081111561002757fe5b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083600281111561008057fe5b02179055506000600960006101000a81548160ff021916908315150217905550612815806100af6000396000f3006080604052600436106101a1576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806303ad4be3146101a3578063081812fc146101e8578063095ea7b31461025557806312be78d1146102a257806323b872dd146102d15780633a98ef391461033e578063430c20811461036957806344276733146103ce578063454ca9fd146104335780634e6ec247146104865780634e71d92d146104d35780634f558e79146104ea578063609a54b01461052f5780636161eb181461058257806362a5af3b146105cf5780636352211e146105fe5780636effb5791461066b57806370a082311461068b5780637c968f5d146106e2578063a22cb46514610727578063a726be9a14610776578063af129dc2146107c9578063ce7c2ac2146107f4578063d96a094a1461084b578063e33b7de31461086b578063e985e9c514610896578063ebd2ca4414610911578063ec46bf8f14610954578063f2e12a3914610981578063f3f70674146109d1578063f4a8a699146109fe578063f7b42d0814610a63578063f8bdc9dd14610a9a575b005b3480156101af57600080fd5b506101e660048036038101908080359060200190929190803590602001908201803590602001919091929391929390505050610ac5565b005b3480156101f457600080fd5b5061021360048036038101908080359060200190929190505050610b73565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561026157600080fd5b506102a0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bb0565b005b3480156102ae57600080fd5b506102cf600480360381019080803515159060200190929190505050610d84565b005b3480156102dd57600080fd5b5061033c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610dcb565b005b34801561034a57600080fd5b50610353610ee2565b6040518082815260200191505060405180910390f35b34801561037557600080fd5b506103b4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ee8565b604051808215151515815260200191505060405180910390f35b3480156103da57600080fd5b5061040f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f7d565b6040518082600281111561041f57fe5b60ff16815260200191505060405180910390f35b34801561043f57600080fd5b50610448610fd2565b6040518082606560200280838360005b83811015610473578082015181840152602081019050610458565b5050505090500191505060405180910390f35b34801561049257600080fd5b506104d1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506110ab565b005b3480156104df57600080fd5b506104e86111a0565b005b3480156104f657600080fd5b50610515600480360381019080803590602001909291905050506111ac565b604051808215151515815260200191505060405180910390f35b34801561053b57600080fd5b5061054461121e565b6040518082606560200280838360005b8381101561056f578082015181840152602081019050610554565b5050505090500191505060405180910390f35b34801561058e57600080fd5b506105cd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506112f3565b005b3480156105db57600080fd5b506105e46113b6565b604051808215151515815260200191505060405180910390f35b34801561060a57600080fd5b50610629600480360381019080803590602001909291905050506113c9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106896004803603810190808035906020019092919050505061140b565b005b34801561069757600080fd5b506106cc600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114ef565b6040518082815260200191505060405180910390f35b3480156106ee57600080fd5b5061070d60048036038101908080359060200190929190505050611573565b604051808215151515815260200191505060405180910390f35b34801561073357600080fd5b50610774600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506115e7565b005b34801561078257600080fd5b506107a160048036038101908080359060200190929190505050611723565b6040518084815260200183815260200182151515158152602001935050505060405180910390f35b3480156107d557600080fd5b506107de6117c9565b6040518082815260200191505060405180910390f35b34801561080057600080fd5b50610835600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117cf565b6040518082815260200191505060405180910390f35b610869600480360381019080803590602001909291905050506117e7565b005b34801561087757600080fd5b50610880611b07565b6040518082815260200191505060405180910390f35b3480156108a257600080fd5b506108f7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b0d565b604051808215151515815260200191505060405180910390f35b34801561091d57600080fd5b50610952600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ba1565b005b34801561096057600080fd5b5061097f60048036038101908080359060200190929190505050611c0f565b005b34801561098d57600080fd5b506109cf600480360381019080803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ca9565b005b3480156109dd57600080fd5b506109fc60048036038101908080359060200190929190505050611d44565b005b348015610a0a57600080fd5b50610a61600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001919091929391929390505050611d7c565b005b348015610a6f57600080fd5b50610a986004803603810190808035906020019092919080359060200190929190505050611e99565b005b348015610aa657600080fd5b50610aaf611efe565b6040518082815260200191505060405180910390f35b60018060ff16610ad433610f7d565b6002811115610adf57fe5b60ff16141515610aee57600080fd5b8282600660008781526020019081526020016000206000019190610b13929190612720565b507f53560fd2a0eb35afd8d535363033618f52ccbfc857a7bf616eb195a0ed022ef484848460405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a150505050565b60006003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050826003600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610c43826113c9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610c7d57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610cbd5750610cbc8133611b0d565b5b1515610cc857600080fd5b826003600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a3505050565b60028060ff16610d9333610f7d565b6002811115610d9e57fe5b60ff16141515610dad57600080fd5b81600960006101000a81548160ff0219169083151502179055505050565b80610dd63382610ee8565b1515610de157600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151515610e1d57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610e5957600080fd5b610e638483611f45565b610e6d84836120ae565b610e7783836121dd565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a350505050565b60075481565b600080610ef4836113c9565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610f6357508373ffffffffffffffffffffffffffffffffffffffff16610f4b84610b73565b73ffffffffffffffffffffffffffffffffffffffff16145b80610f745750610f738185611b0d565b5b91505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610fda6127a0565b600080339050600091505b60658210156110a6578073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611079576001838360658110151561106557fe5b602002019015159081151581525050611099565b6000838360658110151561108957fe5b6020020190151590811515815250505b8180600101925050610fe5565b505090565b60028060ff166110ba33610f7d565b60028111156110c557fe5b60ff161415156110d457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561111057600080fd5b61111a83836121dd565b61112f6001805461233790919063ffffffff16565b6001819055508273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3505050565b6111a933612355565b50565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415915050919050565b6112266127a0565b60008090505b60658110156112ef57600073ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156112c257600182826065811015156112ae57fe5b6020020190151590811515815250506112e2565b600082826065811015156112d257fe5b6020020190151590811515815250505b808060010191505061122c565b5090565b60028060ff1661130233610f7d565b600281111561130d57fe5b60ff1614151561131c57600080fd5b6113268383611f45565b61133083836120ae565b6113456001805461254190919063ffffffff16565b600181905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3505050565b600960009054906101000a900460ff1681565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905080915050919050565b3373ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561147857600080fd5b6114b56002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682611f45565b7fb7e9f6b2d2458040a4050b0b4a3e57e203d8738815821083545a426fdf73fc9a816040518082815260200191505060405180910390a150565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561152c57600080fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156115e257600190505b919050565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561162257600080fd5b80600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b6000806000600d6000858152602001908152602001600020549250600c6000858152602001908152602001600020549150600073ffffffffffffffffffffffffffffffffffffffff166003600086815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156117c257600190505b9193909250565b60015481565b600a6020528060005260406000206000915090505481565b600080600080600033945034600c60008881526020019081526020016000205414151561181357600080fd5b34600d60008881526020019081526020016000208190555061183f60143461255a90919063ffffffff16565b935061185560143461255a90919063ffffffff16565b925061186a838561233790919063ffffffff16565b915061187f823461254190919063ffffffff16565b90506002600087815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166201869f82604051600060405180830381858888f1935050505015156118f057600080fd5b3073ffffffffffffffffffffffffffffffffffffffff166323b872dd6002600089815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1687896040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b1580156119fa57600080fd5b505af1158015611a0e573d6000803e3d6000fd5b50505050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166201869f84604051600060405180830381858888f193505050501515611aff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f7472616e7366657220746f20696e667261737472756374757265506f6f6c206681526020017f61696c656400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b505050505050565b60085481565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60028060ff16611bb033610f7d565b6002811115611bbb57fe5b60ff16141515611bca57600080fd5b81600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60028060ff16611c1e33610f7d565b6002811115611c2957fe5b60ff16141515611c3857600080fd5b3073ffffffffffffffffffffffffffffffffffffffff16318211151515611c5e57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015611ca4573d6000803e3d6000fd5b505050565b60028060ff16611cb833610f7d565b6002811115611cc357fe5b60ff16141515611cd257600080fd5b8260ff166002811115611ce157fe5b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690836002811115611d3a57fe5b0217905550505050565b60018060ff16611d5333610f7d565b6002811115611d5e57fe5b60ff16141515611d6d57600080fd5b611d78600183612575565b5050565b60028060ff16611d8b33610f7d565b6002811115611d9657fe5b60ff16141515611da557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614151515611de157600080fd5b611deb85856121dd565b611e006001805461233790919063ffffffff16565b6001819055508282600660008781526020019081526020016000206000019190611e2b929190612720565b508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35050505050565b611ea33083610bb0565b80600c6000848152602001908152602001600020819055507fec3759d55f609c6666198ab6e098bbe8937fead3e8aa740c199b7ba1110642188282604051808381526020018281526020019250505060405180910390a15050565b6000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905090565b8173ffffffffffffffffffffffffffffffffffffffff16611f65826113c9565b73ffffffffffffffffffffffffffffffffffffffff16141515611f8757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156120aa5760006003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a35b5050565b8173ffffffffffffffffffffffffffffffffffffffff166120ce826113c9565b73ffffffffffffffffffffffffffffffffffffffff161415156120f057600080fd5b6121436001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461254190919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600073ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561224b57600080fd5b816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506122f06001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461233790919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b600080828401905083811015151561234b57fe5b8091505092915050565b60008060008060001515600960009054906101000a900460ff16151514151561237d57600080fd5b8492506000600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115156123ce57600080fd5b3073ffffffffffffffffffffffffffffffffffffffff1631915061244e600754612440600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548561268f90919063ffffffff16565b61255a90919063ffffffff16565b90506000811415151561246057600080fd5b803073ffffffffffffffffffffffffffffffffffffffff16311015151561248657600080fd5b61249b8160085461233790919063ffffffff16565b6008819055508273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156124e7573d6000803e3d6000fd5b50612530600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126ca565b612539836126d8565b505050919050565b600082821115151561254f57fe5b818303905092915050565b600080828481151561256857fe5b0490508091505092915050565b6125fa82600a60006002600086815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461233790919063ffffffff16565b600a60006002600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126858260075461233790919063ffffffff16565b6007819055505050565b60008060008414156126a457600091506126c3565b82840290508284828115156126b557fe5b041415156126bf57fe5b8091505b5092915050565b806007540360078190555050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061276157803560ff191683800117855561278f565b8280016001018555821561278f579182015b8281111561278e578235825591602001919060010190612773565b5b50905061279c91906127c4565b5090565b610ca060405190810160405280606590602082028038833980820191505090505090565b6127e691905b808211156127e25760008160009055506001016127ca565b5090565b905600a165627a7a7230582035828a0ea1e3011c8ebecc873f50c4a1f57ab23a7e94fdefa5d1c08eb3d232800029
Deployed Bytecode
0x6080604052600436106101a1576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806303ad4be3146101a3578063081812fc146101e8578063095ea7b31461025557806312be78d1146102a257806323b872dd146102d15780633a98ef391461033e578063430c20811461036957806344276733146103ce578063454ca9fd146104335780634e6ec247146104865780634e71d92d146104d35780634f558e79146104ea578063609a54b01461052f5780636161eb181461058257806362a5af3b146105cf5780636352211e146105fe5780636effb5791461066b57806370a082311461068b5780637c968f5d146106e2578063a22cb46514610727578063a726be9a14610776578063af129dc2146107c9578063ce7c2ac2146107f4578063d96a094a1461084b578063e33b7de31461086b578063e985e9c514610896578063ebd2ca4414610911578063ec46bf8f14610954578063f2e12a3914610981578063f3f70674146109d1578063f4a8a699146109fe578063f7b42d0814610a63578063f8bdc9dd14610a9a575b005b3480156101af57600080fd5b506101e660048036038101908080359060200190929190803590602001908201803590602001919091929391929390505050610ac5565b005b3480156101f457600080fd5b5061021360048036038101908080359060200190929190505050610b73565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561026157600080fd5b506102a0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bb0565b005b3480156102ae57600080fd5b506102cf600480360381019080803515159060200190929190505050610d84565b005b3480156102dd57600080fd5b5061033c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610dcb565b005b34801561034a57600080fd5b50610353610ee2565b6040518082815260200191505060405180910390f35b34801561037557600080fd5b506103b4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ee8565b604051808215151515815260200191505060405180910390f35b3480156103da57600080fd5b5061040f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f7d565b6040518082600281111561041f57fe5b60ff16815260200191505060405180910390f35b34801561043f57600080fd5b50610448610fd2565b6040518082606560200280838360005b83811015610473578082015181840152602081019050610458565b5050505090500191505060405180910390f35b34801561049257600080fd5b506104d1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506110ab565b005b3480156104df57600080fd5b506104e86111a0565b005b3480156104f657600080fd5b50610515600480360381019080803590602001909291905050506111ac565b604051808215151515815260200191505060405180910390f35b34801561053b57600080fd5b5061054461121e565b6040518082606560200280838360005b8381101561056f578082015181840152602081019050610554565b5050505090500191505060405180910390f35b34801561058e57600080fd5b506105cd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506112f3565b005b3480156105db57600080fd5b506105e46113b6565b604051808215151515815260200191505060405180910390f35b34801561060a57600080fd5b50610629600480360381019080803590602001909291905050506113c9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106896004803603810190808035906020019092919050505061140b565b005b34801561069757600080fd5b506106cc600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114ef565b6040518082815260200191505060405180910390f35b3480156106ee57600080fd5b5061070d60048036038101908080359060200190929190505050611573565b604051808215151515815260200191505060405180910390f35b34801561073357600080fd5b50610774600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506115e7565b005b34801561078257600080fd5b506107a160048036038101908080359060200190929190505050611723565b6040518084815260200183815260200182151515158152602001935050505060405180910390f35b3480156107d557600080fd5b506107de6117c9565b6040518082815260200191505060405180910390f35b34801561080057600080fd5b50610835600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117cf565b6040518082815260200191505060405180910390f35b610869600480360381019080803590602001909291905050506117e7565b005b34801561087757600080fd5b50610880611b07565b6040518082815260200191505060405180910390f35b3480156108a257600080fd5b506108f7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b0d565b604051808215151515815260200191505060405180910390f35b34801561091d57600080fd5b50610952600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ba1565b005b34801561096057600080fd5b5061097f60048036038101908080359060200190929190505050611c0f565b005b34801561098d57600080fd5b506109cf600480360381019080803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ca9565b005b3480156109dd57600080fd5b506109fc60048036038101908080359060200190929190505050611d44565b005b348015610a0a57600080fd5b50610a61600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001919091929391929390505050611d7c565b005b348015610a6f57600080fd5b50610a986004803603810190808035906020019092919080359060200190929190505050611e99565b005b348015610aa657600080fd5b50610aaf611efe565b6040518082815260200191505060405180910390f35b60018060ff16610ad433610f7d565b6002811115610adf57fe5b60ff16141515610aee57600080fd5b8282600660008781526020019081526020016000206000019190610b13929190612720565b507f53560fd2a0eb35afd8d535363033618f52ccbfc857a7bf616eb195a0ed022ef484848460405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a150505050565b60006003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050826003600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610c43826113c9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610c7d57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610cbd5750610cbc8133611b0d565b5b1515610cc857600080fd5b826003600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a3505050565b60028060ff16610d9333610f7d565b6002811115610d9e57fe5b60ff16141515610dad57600080fd5b81600960006101000a81548160ff0219169083151502179055505050565b80610dd63382610ee8565b1515610de157600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151515610e1d57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610e5957600080fd5b610e638483611f45565b610e6d84836120ae565b610e7783836121dd565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a350505050565b60075481565b600080610ef4836113c9565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610f6357508373ffffffffffffffffffffffffffffffffffffffff16610f4b84610b73565b73ffffffffffffffffffffffffffffffffffffffff16145b80610f745750610f738185611b0d565b5b91505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610fda6127a0565b600080339050600091505b60658210156110a6578073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611079576001838360658110151561106557fe5b602002019015159081151581525050611099565b6000838360658110151561108957fe5b6020020190151590811515815250505b8180600101925050610fe5565b505090565b60028060ff166110ba33610f7d565b60028111156110c557fe5b60ff161415156110d457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561111057600080fd5b61111a83836121dd565b61112f6001805461233790919063ffffffff16565b6001819055508273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3505050565b6111a933612355565b50565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415915050919050565b6112266127a0565b60008090505b60658110156112ef57600073ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156112c257600182826065811015156112ae57fe5b6020020190151590811515815250506112e2565b600082826065811015156112d257fe5b6020020190151590811515815250505b808060010191505061122c565b5090565b60028060ff1661130233610f7d565b600281111561130d57fe5b60ff1614151561131c57600080fd5b6113268383611f45565b61133083836120ae565b6113456001805461254190919063ffffffff16565b600181905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3505050565b600960009054906101000a900460ff1681565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905080915050919050565b3373ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561147857600080fd5b6114b56002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682611f45565b7fb7e9f6b2d2458040a4050b0b4a3e57e203d8738815821083545a426fdf73fc9a816040518082815260200191505060405180910390a150565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561152c57600080fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156115e257600190505b919050565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561162257600080fd5b80600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b6000806000600d6000858152602001908152602001600020549250600c6000858152602001908152602001600020549150600073ffffffffffffffffffffffffffffffffffffffff166003600086815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156117c257600190505b9193909250565b60015481565b600a6020528060005260406000206000915090505481565b600080600080600033945034600c60008881526020019081526020016000205414151561181357600080fd5b34600d60008881526020019081526020016000208190555061183f60143461255a90919063ffffffff16565b935061185560143461255a90919063ffffffff16565b925061186a838561233790919063ffffffff16565b915061187f823461254190919063ffffffff16565b90506002600087815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166201869f82604051600060405180830381858888f1935050505015156118f057600080fd5b3073ffffffffffffffffffffffffffffffffffffffff166323b872dd6002600089815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1687896040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b1580156119fa57600080fd5b505af1158015611a0e573d6000803e3d6000fd5b50505050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166201869f84604051600060405180830381858888f193505050501515611aff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f7472616e7366657220746f20696e667261737472756374757265506f6f6c206681526020017f61696c656400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b505050505050565b60085481565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60028060ff16611bb033610f7d565b6002811115611bbb57fe5b60ff16141515611bca57600080fd5b81600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60028060ff16611c1e33610f7d565b6002811115611c2957fe5b60ff16141515611c3857600080fd5b3073ffffffffffffffffffffffffffffffffffffffff16318211151515611c5e57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015611ca4573d6000803e3d6000fd5b505050565b60028060ff16611cb833610f7d565b6002811115611cc357fe5b60ff16141515611cd257600080fd5b8260ff166002811115611ce157fe5b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690836002811115611d3a57fe5b0217905550505050565b60018060ff16611d5333610f7d565b6002811115611d5e57fe5b60ff16141515611d6d57600080fd5b611d78600183612575565b5050565b60028060ff16611d8b33610f7d565b6002811115611d9657fe5b60ff16141515611da557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614151515611de157600080fd5b611deb85856121dd565b611e006001805461233790919063ffffffff16565b6001819055508282600660008781526020019081526020016000206000019190611e2b929190612720565b508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35050505050565b611ea33083610bb0565b80600c6000848152602001908152602001600020819055507fec3759d55f609c6666198ab6e098bbe8937fead3e8aa740c199b7ba1110642188282604051808381526020018281526020019250505060405180910390a15050565b6000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905090565b8173ffffffffffffffffffffffffffffffffffffffff16611f65826113c9565b73ffffffffffffffffffffffffffffffffffffffff16141515611f8757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156120aa5760006003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a35b5050565b8173ffffffffffffffffffffffffffffffffffffffff166120ce826113c9565b73ffffffffffffffffffffffffffffffffffffffff161415156120f057600080fd5b6121436001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461254190919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600073ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561224b57600080fd5b816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506122f06001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461233790919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b600080828401905083811015151561234b57fe5b8091505092915050565b60008060008060001515600960009054906101000a900460ff16151514151561237d57600080fd5b8492506000600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115156123ce57600080fd5b3073ffffffffffffffffffffffffffffffffffffffff1631915061244e600754612440600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548561268f90919063ffffffff16565b61255a90919063ffffffff16565b90506000811415151561246057600080fd5b803073ffffffffffffffffffffffffffffffffffffffff16311015151561248657600080fd5b61249b8160085461233790919063ffffffff16565b6008819055508273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156124e7573d6000803e3d6000fd5b50612530600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126ca565b612539836126d8565b505050919050565b600082821115151561254f57fe5b818303905092915050565b600080828481151561256857fe5b0490508091505092915050565b6125fa82600a60006002600086815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461233790919063ffffffff16565b600a60006002600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126858260075461233790919063ffffffff16565b6007819055505050565b60008060008414156126a457600091506126c3565b82840290508284828115156126b557fe5b041415156126bf57fe5b8091505b5092915050565b806007540360078190555050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061276157803560ff191683800117855561278f565b8280016001018555821561278f579182015b8281111561278e578235825591602001919060010190612773565b5b50905061279c91906127c4565b5090565b610ca060405190810160405280606590602082028038833980820191505090505090565b6127e691905b808211156127e25760008160009055506001016127ca565b5090565b905600a165627a7a7230582035828a0ea1e3011c8ebecc873f50c4a1f57ab23a7e94fdefa5d1c08eb3d232800029
Swarm Source
bzzr://35828a0ea1e3011c8ebecc873f50c4a1f57ab23a7e94fdefa5d1c08eb3d23280
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.