Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 1,635 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Set CEO | 20452936 | 6 days ago | IN | 0 ETH | 0.00002401 | ||||
Set CEO | 20452936 | 6 days ago | IN | 0 ETH | 0.00002401 | ||||
Payout | 20452936 | 6 days ago | IN | 0 ETH | 0.00002608 | ||||
Purchase | 20408458 | 13 days ago | IN | 0.01 ETH | 0.0000872 | ||||
Transfer | 16140217 | 611 days ago | IN | 0 ETH | 0.00147899 | ||||
Purchase | 13847924 | 963 days ago | IN | 0.02127659 ETH | 0.00353814 | ||||
Purchase | 13099314 | 1080 days ago | IN | 0.84042553 ETH | 0.00899596 | ||||
Purchase | 13099118 | 1080 days ago | IN | 0.1 ETH | 0.00783428 | ||||
Purchase | 13023847 | 1092 days ago | IN | 0.05 ETH | 0.00401129 | ||||
Purchase | 12288787 | 1206 days ago | IN | 0.22634676 ETH | 0.01238871 | ||||
Purchase | 11563417 | 1318 days ago | IN | 0.01 ETH | 0.0035351 | ||||
Purchase | 11563299 | 1318 days ago | IN | 0.01 ETH | 0.0037472 | ||||
Purchase | 11416049 | 1341 days ago | IN | 0.1 ETH | 0.00257106 | ||||
Purchase | 11416024 | 1341 days ago | IN | 0.1 ETH | 0.00167029 | ||||
Create Crypton | 11388482 | 1345 days ago | IN | 0 ETH | 0.0026386 | ||||
Create Crypton | 11388430 | 1345 days ago | IN | 0 ETH | 0.00263946 | ||||
Create Crypton | 10958210 | 1411 days ago | IN | 0 ETH | 0.03416362 | ||||
Create Crypton | 10954253 | 1412 days ago | IN | 0 ETH | 0.01880458 | ||||
Create Crypton | 10954071 | 1412 days ago | IN | 0 ETH | 0.01879534 | ||||
Create Crypton | 10954065 | 1412 days ago | IN | 0 ETH | 0.01880766 | ||||
Create Crypton | 10954058 | 1412 days ago | IN | 0 ETH | 0.01882569 | ||||
Create Crypton | 10954051 | 1412 days ago | IN | 0 ETH | 0.01905345 | ||||
Create Crypton | 10954034 | 1412 days ago | IN | 0 ETH | 0.01802454 | ||||
Create Crypton | 10954006 | 1412 days ago | IN | 0 ETH | 0.01802897 | ||||
Create Crypton | 10953873 | 1412 days ago | IN | 0 ETH | 0.01509619 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
13847924 | 963 days ago | 0.01999999 ETH | ||||
13099314 | 1080 days ago | 0.78999999 ETH | ||||
12288787 | 1206 days ago | 0.21276595 ETH | ||||
8005493 | 1876 days ago | 6.20989361 ETH | ||||
7382868 | 1974 days ago | 0.38999999 ETH | ||||
6833965 | 2075 days ago | 3.00318958 ETH | ||||
6833558 | 2075 days ago | 0.19599999 ETH | ||||
6833544 | 2075 days ago | 0.19599999 ETH | ||||
6833455 | 2075 days ago | 1.88782832 ETH | ||||
6825411 | 2076 days ago | 0.04255319 ETH | ||||
6702912 | 2096 days ago | 0.48999999 ETH | ||||
6702792 | 2096 days ago | 0.09999999 ETH | ||||
6702695 | 2096 days ago | 0.98999999 ETH | ||||
6659949 | 2103 days ago | 0.21191489 ETH | ||||
6625289 | 2109 days ago | 0.04255319 ETH | ||||
6534360 | 2124 days ago | 0.38999999 ETH | ||||
6442270 | 2139 days ago | 0.82978723 ETH | ||||
6437318 | 2139 days ago | 10.53761655 ETH | ||||
6431636 | 2140 days ago | 0.38999999 ETH | ||||
6431607 | 2140 days ago | 0.38999999 ETH | ||||
6417870 | 2143 days ago | 0.04999999 ETH | ||||
6417755 | 2143 days ago | 0.08872793 ETH | ||||
6417750 | 2143 days ago | 0.04999999 ETH | ||||
6410458 | 2144 days ago | 0.36999999 ETH | ||||
6404103 | 2145 days ago | 0.36999999 ETH |
Loading...
Loading
Contract Name:
CryptonToken
Compiler Version
v0.4.24+commit.e67f0147
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-07-28 */ pragma solidity ^0.4.19; // solhint-disable-line /// @title Interface for contracts conforming to ERC-721: Non-Fungible Tokens /// @author Srini Vasan contract ERC721 { // Required methods function approve(address _to, uint256 _tokenId) public; function balanceOf(address _owner) public view returns (uint256 balance); function implementsERC721() public pure returns (bool); function ownerOf(uint256 _tokenId) public view returns (address addr); function takeOwnership(uint256 _tokenId) public; function totalSupply() public view returns (uint256 total); 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 tokenId); event Approval(address indexed owner, address indexed approved, uint256 tokenId); } contract CryptonToken is ERC721 { /*** EVENTS ***/ /// @dev The Birth event is fired whenever a new crypton comes into existence. event Birth(uint256 tokenId, string name, address owner, bool isProtected, uint8 category); /// @dev The TokenSold event is fired whenever a token is sold. event TokenSold(uint256 tokenId, uint256 oldPrice, uint256 newPrice, address prevOwner, address winner, string name); /// @dev Transfer event as defined in current draft of ERC721. /// ownership is assigned, including births. event Transfer(address from, address to, uint256 tokenId); /// @dev the PaymentTransferredToPreviousOwner event is fired when the previous owner of the Crypton is paid after a purchase. event PaymentTransferredToPreviousOwner(uint256 tokenId, uint256 oldPrice, uint256 newPrice, address prevOwner, address winner, string name); // @dev CryptonIsProtected is fired when the Crypton is protected from snatching - i.e. owner is allowed to set the selling price for the crypton event CryptonIsProtected(uint256 tokenId); // @dev The markup was changed event MarkupChanged(string name, uint256 newMarkup); //@dev Selling price of protected Crypton changed event ProtectedCryptonSellingPriceChanged(uint256 tokenId, uint256 newSellingPrice); // Owner protected their Crypton event OwnerProtectedCrypton(uint256 _tokenId, uint256 newSellingPrice); //Contract paused event event ContractIsPaused(bool paused); /*** CONSTANTS ***/ /// @notice Name and symbol of the non fungible token, as defined in ERC721. string public constant NAME = "Cryptons"; // solhint-disable-line string public constant SYMBOL = "CRYPTON"; // solhint-disable-line uint256 private startingPrice = 0.1 ether; uint256 private defaultMarkup = 2 ether; uint256 private FIRST_STEP_LIMIT = 1.0 ether; uint16 private FIRST_STEP_MULTIPLIER = 200; // double the value uint16 private SECOND_STEP_MULTIPLIER = 120; // increment value by 20% uint16 private XPROMO_MULTIPLIER = 500; // 5 times the value uint16 private CRYPTON_CUT = 6; // our cut uint16 private NET_PRICE_PERCENT = 100 - CRYPTON_CUT; // Net price paid out after cut // I could have used enums - but preferered the more specific uint8 uint8 private constant PROMO = 1; uint8 private constant STANDARD = 2; uint8 private constant RESERVED = 7; uint8 private constant XPROMO = 10; // First transaction, contract sets sell price to 5x /*** STORAGE ***/ /// @dev A mapping from crypton IDs to the address that owns them. All cryptons have /// some valid owner address. mapping (uint256 => address) public cryptonIndexToOwner; mapping (uint256 => bool) public cryptonIndexToProtected; // @dev A mapping from owner address to count of tokens that address owns. // Used internally inside balanceOf() to resolve ownership count. mapping (address => uint256) private ownershipTokenCount; /// @dev A mapping from CryptonIDs to an address that has been approved to call /// transferFrom(). Each Crypton can only have one approved address for transfer /// at any time. A zero value means no approval is outstanding. mapping (uint256 => address) public cryptonIndexToApproved; // @dev A mapping from CryptonIDs to the price of the token. mapping (uint256 => uint256) private cryptonIndexToPrice; // The addresses of the accounts (or contracts) that can execute actions within each roles. address public ceoAddress; address public cooAddress; /*** DATATYPES ***/ struct Crypton { string name; uint8 category; uint256 markup; } Crypton[] private cryptons; /// @dev Keeps track whether the contract is paused. When that is true, most actions are blocked. bool public paused = false; /*** ACCESS MODIFIERS ***/ /// @dev Access modifier for COO-only functionality /// @dev Access modifier for CEO-only functionality modifier onlyCEO() { require(msg.sender == ceoAddress); _; } modifier onlyCOO() { require(msg.sender == cooAddress); _; } /// Access modifier for contract owner only functionality modifier onlyCLevel() { require( msg.sender == ceoAddress || msg.sender == cooAddress ); _; } /*** Pausable functionality adapted from OpenZeppelin ***/ /// @dev Modifier to allow actions only when the contract IS NOT paused modifier whenNotPaused() { require(!paused); _; } /// @dev Modifier to allow actions only when the contract IS paused modifier whenPaused { require(paused); _; } /// @dev Called by any "C-level" role to pause the contract. Used only when /// a bug or exploit is detected and we need to limit damage. function pause() external onlyCLevel whenNotPaused { paused = true; emit ContractIsPaused(paused); } /// @dev Unpauses the smart contract. Can only be called by the CEO /// @notice This is public rather than external so it can be called by /// derived contracts. function unpause() public onlyCEO whenPaused { // can't unpause if contract was forked paused = false; emit ContractIsPaused(paused); } /*** CONSTRUCTOR ***/ constructor() public { ceoAddress = msg.sender; cooAddress = msg.sender; } /*** PUBLIC FUNCTIONS ***/ /// @notice Grant another address the right to transfer token via takeOwnership() and transferFrom(). /// @param _to The address to be granted transfer approval. Pass address(0) to /// clear all approvals. /// @param _tokenId The ID of the Token that can be transferred if this call succeeds. /// @dev Required for ERC-721 compliance. function approve( address _to, uint256 _tokenId ) public whenNotPaused { // Caller must own token. require(_owns(msg.sender, _tokenId)); cryptonIndexToApproved[_tokenId] = _to; emit Approval(msg.sender, _to, _tokenId); } /// For querying balance of a particular account /// @param _owner The address for balance query /// @dev Required for ERC-721 compliance. function balanceOf(address _owner) public view returns (uint256 balance) { return ownershipTokenCount[_owner]; } /// @dev Creates a new Crypton with the given name, startingPrice, category and an (optional) owner wallet address function createCrypton( string _name, //Required uint8 _category, //Required uint256 _startingPrice, // Optional - defaults to startingPrice uint256 _markup, // Optional - defaults to defaultMarkup address _owner // Optional - deafults to contract ) public onlyCLevel { address cryptonOwner = _owner; if (cryptonOwner == address(0)) { cryptonOwner = address(this); } if (_category == XPROMO) { // XPROMO Cryptons - force ownership to contract cryptonOwner = address(this); } if (_markup <= 0) { _markup = defaultMarkup; } if (_category == PROMO) { // PROMO Cryptons - force markup to zero _markup = 0; } if (_startingPrice <= 0) { _startingPrice = startingPrice; } bool isProtected = (_category == PROMO)?true:false; // PROMO cryptons are protected, others are not - at creation _createCrypton(_name, cryptonOwner, _startingPrice, _markup, isProtected, _category); } /// @notice Returns all the relevant information about a specific crypton. /// @param _tokenId The tokenId of the crypton of interest. function getCrypton(uint256 _tokenId) public view returns ( string cryptonName, uint8 category, uint256 markup, uint256 sellingPrice, address owner, bool isProtected ) { Crypton storage crypton = cryptons[_tokenId]; cryptonName = crypton.name; sellingPrice = cryptonIndexToPrice[_tokenId]; owner = cryptonIndexToOwner[_tokenId]; isProtected = cryptonIndexToProtected[_tokenId]; category = crypton.category; markup = crypton.markup; } function implementsERC721() public pure returns (bool) { return true; } /// @dev Required for ERC-721 compliance. function name() public pure returns (string) { return NAME; } /// For querying owner of token /// @param _tokenId The tokenID for owner inquiry /// @dev Required for ERC-721 compliance. function ownerOf(uint256 _tokenId) public view returns (address owner) { owner = cryptonIndexToOwner[_tokenId]; require(owner != address(0)); } /// @dev This function withdraws the contract owner's cut. /// Any amount may be withdrawn as there is no user funds. /// User funds are immediately sent to the old owner in `purchase` function payout(address _to) public onlyCLevel { _payout(_to); } /// @dev This function allows the contract owner to adjust the selling price of a protected Crypton function setPriceForProtectedCrypton(uint256 _tokenId, uint256 newSellingPrice) public whenNotPaused { address oldOwner = cryptonIndexToOwner[_tokenId]; // owner in blockchain address newOwner = msg.sender; // person requesting change require(oldOwner == newOwner); // Only current owner can update the price require(cryptonIndexToProtected[_tokenId]); // Make sure Crypton is protected require(newSellingPrice > 0); // Make sure the price is not zero cryptonIndexToPrice[_tokenId] = newSellingPrice; emit ProtectedCryptonSellingPriceChanged(_tokenId, newSellingPrice); } /// @dev This function allows the contract owner to buy protection for an unprotected that they already own function setProtectionForMyUnprotectedCrypton(uint256 _tokenId, uint256 newSellingPrice) public payable whenNotPaused { address oldOwner = cryptonIndexToOwner[_tokenId]; // owner in blockchain address newOwner = msg.sender; // person requesting change uint256 markup = cryptons[_tokenId].markup; if (cryptons[_tokenId].category != PROMO) { require(markup > 0); // if this is NOT a promotional crypton, the markup should be > zero } require(oldOwner == newOwner); // Only current owner can buy protection for existing crypton require(! cryptonIndexToProtected[_tokenId]); // Make sure Crypton is NOT already protected require(newSellingPrice > 0); // Make sure the sellingPrice is more than zero require(msg.value >= markup); // Make sure to collect the markup cryptonIndexToPrice[_tokenId] = newSellingPrice; cryptonIndexToProtected[_tokenId] = true; emit OwnerProtectedCrypton(_tokenId, newSellingPrice); } function getMarkup(uint256 _tokenId) public view returns (uint256 markup) { return cryptons[_tokenId].markup; } /// @dev This function allows the contract owner to adjust the markup value function setMarkup(uint256 _tokenId, uint256 newMarkup) public onlyCLevel { require(newMarkup >= 0); cryptons[_tokenId].markup = newMarkup; emit MarkupChanged(cryptons[_tokenId].name, newMarkup); } // Allows someone to send ether and obtain the token function purchase(uint256 _tokenId, uint256 newSellingPrice) public payable whenNotPaused { address oldOwner = cryptonIndexToOwner[_tokenId]; address newOwner = msg.sender; bool isAlreadyProtected = cryptonIndexToProtected[_tokenId]; uint256 sellingPrice = cryptonIndexToPrice[_tokenId]; uint256 markup = cryptons[_tokenId].markup; if (cryptons[_tokenId].category != PROMO) { require(markup > 0); // if this is NOT a promotional crypton, the markup should be > zero } // Make sure token owner is not sending to self require(oldOwner != newOwner); // Safety check to prevent against an unexpected 0x0 default. require(_addressNotNull(newOwner)); // Make sure sent amount is greater than or equal to the sellingPrice require(msg.value >= sellingPrice); // this is redundant - as we are checking this below if (newSellingPrice > 0) { // if we are called with a new selling price, then the buyer is paying the markup or purchasing a protected crypton uint256 purchasePrice = sellingPrice; //assume it is protected if (! cryptonIndexToProtected[_tokenId] ) { // Crypton is not protected, purchasePrice = sellingPrice + markup; // apply markup } // If the Crypton is not already protected, make sure that the buyer is paying markup more than the current selling price // If the buyer is not paying the markup - then he cannot set the new selling price- bailout require(msg.value >= purchasePrice); // Ok - the buyer paid the markup or the crypton was already protected. cryptonIndexToPrice[_tokenId] = newSellingPrice; // Set the selling price that the buyer wants cryptonIndexToProtected[_tokenId] = true; // Set the Crypton to protected emit CryptonIsProtected(_tokenId); // Let the world know } else { // Compute next listing price. // Handle XPROMO case first... if ( (oldOwner == address(this)) && // first transaction only` (cryptons[_tokenId].category == XPROMO) // Only for XPROMO category ) { cryptonIndexToPrice[_tokenId] = SafeMath.div(SafeMath.mul(sellingPrice, XPROMO_MULTIPLIER), NET_PRICE_PERCENT); } else { if (sellingPrice < FIRST_STEP_LIMIT) { // first stage cryptonIndexToPrice[_tokenId] = SafeMath.div(SafeMath.mul(sellingPrice, FIRST_STEP_MULTIPLIER), NET_PRICE_PERCENT); } else { // second stage cryptonIndexToPrice[_tokenId] = SafeMath.div(SafeMath.mul(sellingPrice, SECOND_STEP_MULTIPLIER), NET_PRICE_PERCENT); } } } _transfer(oldOwner, newOwner, _tokenId); uint256 payment = uint256(SafeMath.div(SafeMath.mul(sellingPrice, NET_PRICE_PERCENT), 100)); string storage cname = cryptons[_tokenId].name; bool isReservedToken = (cryptons[_tokenId].category == RESERVED); if (isReservedToken && isAlreadyProtected) { oldOwner.transfer(payment); //(1-CRYPTON_CUT/100) emit PaymentTransferredToPreviousOwner(_tokenId, sellingPrice, cryptonIndexToPrice[_tokenId], oldOwner, newOwner, cname); emit TokenSold(_tokenId, sellingPrice, cryptonIndexToPrice[_tokenId], oldOwner, newOwner, cname); return; } // Pay seller of the Crypton if they are not this contract or if this is a Reserved token if ((oldOwner != address(this)) && !isReservedToken ) // Not a Reserved token and not owned by the contract { oldOwner.transfer(payment); //(1-CRYPTON_CUT/100) emit PaymentTransferredToPreviousOwner(_tokenId, sellingPrice, cryptonIndexToPrice[_tokenId], oldOwner, newOwner, cname); } emit TokenSold(_tokenId, sellingPrice, cryptonIndexToPrice[_tokenId], oldOwner, newOwner, cname); } function priceOf(uint256 _tokenId) public view returns (uint256 price) { return cryptonIndexToPrice[_tokenId]; } /// @dev Assigns a new address to act as the CEO. Only available to the current CEO. /// @param _newCEO The address of the new CEO function setCEO(address _newCEO) public onlyCEO { require(_newCEO != address(0)); ceoAddress = _newCEO; } /// @dev Assigns a new address to act as the COO. Only available to the current COO. /// @param _newCOO The address of the new COO function setCOO(address _newCOO) public onlyCEO { require(_newCOO != address(0)); cooAddress = _newCOO; } /// @dev Required for ERC-721 compliance. function symbol() public pure returns (string) { return SYMBOL; } /// @notice Allow pre-approved user to take ownership of a token /// @param _tokenId The ID of the Token that can be transferred if this call succeeds. /// @dev Required for ERC-721 compliance. function takeOwnership(uint256 _tokenId) public whenNotPaused { address newOwner = msg.sender; address oldOwner = cryptonIndexToOwner[_tokenId]; // Safety check to prevent against an unexpected 0x0 default. require(_addressNotNull(newOwner)); // Making sure transfer is approved require(_approved(newOwner, _tokenId)); _transfer(oldOwner, newOwner, _tokenId); } /// @param _owner The owner whose Cryptons we are interested in. /// @dev This method MUST NEVER be called by smart contract code. First, it's fairly /// expensive (it walks the entire Cryptons array looking for cryptons belonging to owner), /// but it also returns a dynamic array, which is only supported for web3 calls, and /// not contract-to-contract calls. function tokensOfOwner(address _owner) public view returns(uint256[] ownerTokens) { uint256 tokenCount = balanceOf(_owner); if (tokenCount == 0) { // Return an empty array return new uint256[](0); } else { uint256[] memory result = new uint256[](tokenCount); uint256 totalCryptons = totalSupply(); uint256 resultIndex = 0; uint256 cryptonId; for (cryptonId = 0; cryptonId <= totalCryptons; cryptonId++) { if (cryptonIndexToOwner[cryptonId] == _owner) { result[resultIndex] = cryptonId; resultIndex++; } } return result; } } /// For querying totalSupply of token /// @dev Required for ERC-721 compliance. function totalSupply() public view returns (uint256 total) { return cryptons.length; } /// Owner initates the transfer of the token to another account /// @param _to The address for the token to be transferred to. /// @param _tokenId The ID of the Token that can be transferred if this call succeeds. /// @dev Required for ERC-721 compliance. function transfer( address _to, uint256 _tokenId ) public whenNotPaused { require(_owns(msg.sender, _tokenId)); require(_addressNotNull(_to)); _transfer(msg.sender, _to, _tokenId); } /// Third-party initiates transfer of token from address _from to address _to /// @param _from The address for the token to be transferred from. /// @param _to The address for the token to be transferred to. /// @param _tokenId The ID of the Token that can be transferred if this call succeeds. /// @dev Required for ERC-721 compliance. function transferFrom( address _from, address _to, uint256 _tokenId ) public whenNotPaused { require(_owns(_from, _tokenId)); require(_approved(_to, _tokenId)); require(_addressNotNull(_to)); _transfer(_from, _to, _tokenId); } /*** PRIVATE FUNCTIONS ***/ /// Safety check on _to address to prevent against an unexpected 0x0 default. function _addressNotNull(address _to) private pure returns (bool) { return _to != address(0); } /// For checking approval of transfer for address _to function _approved(address _to, uint256 _tokenId) private view returns (bool) { return cryptonIndexToApproved[_tokenId] == _to; } /// For creating Crypton function _createCrypton(string _name, address _owner, uint256 _price, uint256 _markup, bool _isProtected, uint8 _category) private { Crypton memory _crypton = Crypton({ name: _name, category: _category, markup: _markup }); uint256 newCryptonId = cryptons.push(_crypton) - 1; // It's probably never going to happen, 4 billion tokens are A LOT, but // let's just be 100% sure we never let this happen. require(newCryptonId == uint256(uint32(newCryptonId))); emit Birth(newCryptonId, _name, _owner, _isProtected, _category); cryptonIndexToPrice[newCryptonId] = _price; cryptonIndexToProtected[newCryptonId] = _isProtected; // _isProtected is true for promo cryptons - false for others. // This will assign ownership, and also emit the Transfer event as // per ERC721 draft _transfer(address(0), _owner, newCryptonId); } /// Check for token ownership function _owns(address claimant, uint256 _tokenId) private view returns (bool) { return claimant == cryptonIndexToOwner[_tokenId]; } /// For paying out balance on contract function _payout(address _to) private { address myAddress = this; if (_to == address(0)) { ceoAddress.transfer(myAddress.balance); } else { _to.transfer(myAddress.balance); } } /// @dev Assigns ownership of a specific Crypton to an address. function _transfer(address _from, address _to, uint256 _tokenId) private { // Since the number of cryptons is capped to 2^32 we can't overflow this ownershipTokenCount[_to]++; //transfer ownership cryptonIndexToOwner[_tokenId] = _to; // When creating new cryptons _from is 0x0, but we can't account that address. if (_from != address(0)) { ownershipTokenCount[_from]--; // clear any previously approved ownership exchange delete cryptonIndexToApproved[_tokenId]; } // Emit the transfer event. emit Transfer(_from, _to, _tokenId); } //various getter/setter methods function setFIRST_STEP_LIMIT(uint256 newLimit) public onlyCLevel { require(newLimit > 0 && newLimit < 100 ether); FIRST_STEP_LIMIT = newLimit; } function getFIRST_STEP_LIMIT() public view returns (uint256 value) { return FIRST_STEP_LIMIT; } function setFIRST_STEP_MULTIPLIER(uint16 newValue) public onlyCLevel { require(newValue >= 110 && newValue <= 200); FIRST_STEP_MULTIPLIER = newValue; } function getFIRST_STEP_MULTIPLIER() public view returns (uint16 value) { return FIRST_STEP_MULTIPLIER; } function setSECOND_STEP_MULTIPLIER(uint16 newValue) public onlyCLevel { require(newValue >= 110 && newValue <= 200); SECOND_STEP_MULTIPLIER = newValue; } function getSECOND_STEP_MULTIPLIER() public view returns (uint16 value) { return SECOND_STEP_MULTIPLIER; } function setXPROMO_MULTIPLIER(uint16 newValue) public onlyCLevel { require(newValue >= 100 && newValue <= 10000); // between 0 and 100x XPROMO_MULTIPLIER = newValue; } function getXPROMO_MULTIPLIER() public view returns (uint16 value) { return XPROMO_MULTIPLIER; } function setCRYPTON_CUT(uint16 newValue) public onlyCLevel { require(newValue > 0 && newValue < 10); CRYPTON_CUT = newValue; } function getCRYPTON_CUT() public view returns (uint16 value) { return CRYPTON_CUT; } } library SafeMath { /** * @dev Multiplies two numbers, throws on overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; assert(c / a == b); return c; } /** * @dev Integer division of two numbers, truncating the quotient. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { // assert(b > 0); // Solidity automatically throws when dividing by 0 uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Substracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend). */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } /** * @dev Adds two numbers, throws on overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; assert(c >= a); return c; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"getCRYPTON_CUT","outputs":[{"name":"value","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"pure","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":"ceoAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"cryptonIndexToProtected","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"}],"name":"payout","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":"_tokenId","type":"uint256"},{"name":"newSellingPrice","type":"uint256"}],"name":"setPriceForProtectedCrypton","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"total","type":"uint256"}],"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":"_newCEO","type":"address"}],"name":"setCEO","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newCOO","type":"address"}],"name":"setCOO","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newValue","type":"uint16"}],"name":"setFIRST_STEP_MULTIPLIER","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"cryptonIndexToApproved","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newValue","type":"uint16"}],"name":"setSECOND_STEP_MULTIPLIER","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","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":"newLimit","type":"uint256"}],"name":"setFIRST_STEP_LIMIT","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"},{"name":"newSellingPrice","type":"uint256"}],"name":"purchase","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getFIRST_STEP_MULTIPLIER","outputs":[{"name":"value","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"tokensOfOwner","outputs":[{"name":"ownerTokens","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"getCrypton","outputs":[{"name":"cryptonName","type":"string"},{"name":"category","type":"uint8"},{"name":"markup","type":"uint256"},{"name":"sellingPrice","type":"uint256"},{"name":"owner","type":"address"},{"name":"isProtected","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newValue","type":"uint16"}],"name":"setCRYPTON_CUT","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"cryptonIndexToOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getFIRST_STEP_LIMIT","outputs":[{"name":"value","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"},{"name":"newSellingPrice","type":"uint256"}],"name":"setProtectionForMyUnprotectedCrypton","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"getSECOND_STEP_MULTIPLIER","outputs":[{"name":"value","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"NAME","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"},{"name":"newMarkup","type":"uint256"}],"name":"setMarkup","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"cooAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newValue","type":"uint16"}],"name":"setXPROMO_MULTIPLIER","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"takeOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"priceOf","outputs":[{"name":"price","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getXPROMO_MULTIPLIER","outputs":[{"name":"value","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"string"},{"name":"_category","type":"uint8"},{"name":"_startingPrice","type":"uint256"},{"name":"_markup","type":"uint256"},{"name":"_owner","type":"address"}],"name":"createCrypton","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"getMarkup","outputs":[{"name":"markup","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"SYMBOL","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenId","type":"uint256"},{"indexed":false,"name":"name","type":"string"},{"indexed":false,"name":"owner","type":"address"},{"indexed":false,"name":"isProtected","type":"bool"},{"indexed":false,"name":"category","type":"uint8"}],"name":"Birth","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenId","type":"uint256"},{"indexed":false,"name":"oldPrice","type":"uint256"},{"indexed":false,"name":"newPrice","type":"uint256"},{"indexed":false,"name":"prevOwner","type":"address"},{"indexed":false,"name":"winner","type":"address"},{"indexed":false,"name":"name","type":"string"}],"name":"TokenSold","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"from","type":"address"},{"indexed":false,"name":"to","type":"address"},{"indexed":false,"name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenId","type":"uint256"},{"indexed":false,"name":"oldPrice","type":"uint256"},{"indexed":false,"name":"newPrice","type":"uint256"},{"indexed":false,"name":"prevOwner","type":"address"},{"indexed":false,"name":"winner","type":"address"},{"indexed":false,"name":"name","type":"string"}],"name":"PaymentTransferredToPreviousOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenId","type":"uint256"}],"name":"CryptonIsProtected","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"name","type":"string"},{"indexed":false,"name":"newMarkup","type":"uint256"}],"name":"MarkupChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenId","type":"uint256"},{"indexed":false,"name":"newSellingPrice","type":"uint256"}],"name":"ProtectedCryptonSellingPriceChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_tokenId","type":"uint256"},{"indexed":false,"name":"newSellingPrice","type":"uint256"}],"name":"OwnerProtectedCrypton","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"paused","type":"bool"}],"name":"ContractIsPaused","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"}]
Contract Creation Code
608060405267016345785d8a0000600055671bc16d674ec80000600155670de0b6b3a764000060025560c8600360006101000a81548161ffff021916908361ffff1602179055506078600360026101000a81548161ffff021916908361ffff1602179055506101f4600360046101000a81548161ffff021916908361ffff1602179055506006600360066101000a81548161ffff021916908361ffff160217905550600360069054906101000a900461ffff16606403600360086101000a81548161ffff021916908361ffff1602179055506000600c60006101000a81548160ff0219169083151502179055503480156100f857600080fd5b5033600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506138ae8061018a6000396000f300608060405260043610610204576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630544587f1461020957806306fdde031461023c578063095ea7b3146102cc5780630a0f8168146103195780630a894ccf146103705780630b7e9c44146103b55780631051db34146103f857806310c067d21461042757806318160ddd1461045e57806323b872dd1461048957806327d7874c146104f65780632ba73c151461053957806332ce92cb1461057c5780633f4ba83a146105ad5780633f87e765146105c45780634bafa437146106315780635c975abb146106625780636352211e146106915780636c34c97a146106fe57806370876c981461072b57806370a08231146107555780638238cc8f146107ac5780638456cb59146107df5780638462151c146107f657806386d35ed91461088e5780638878db7f1461098d5780639146de22146109be57806391e6d02814610a2b578063939c23b614610a5657806395d89b4114610a80578063a39e114914610b10578063a3f4df7e14610b43578063a75274e914610bd3578063a9059cbb14610c0a578063b047fb5014610c57578063b1ef2e9714610cae578063b2e6ceeb14610cdf578063b9186d7d14610d0c578063c391d58114610d4d578063cb57e4a614610d80578063dce2b4c114610e2a578063f76f8d7814610e6b575b600080fd5b34801561021557600080fd5b5061021e610efb565b604051808261ffff1661ffff16815260200191505060405180910390f35b34801561024857600080fd5b50610251610f13565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610291578082015181840152602081019050610276565b50505050905090810190601f1680156102be5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102d857600080fd5b50610317600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f50565b005b34801561032557600080fd5b5061032e61103c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561037c57600080fd5b5061039b60048036038101908080359060200190929190505050611062565b604051808215151515815260200191505060405180910390f35b3480156103c157600080fd5b506103f6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611082565b005b34801561040457600080fd5b5061040d611142565b604051808215151515815260200191505060405180910390f35b34801561043357600080fd5b5061045c600480360381019080803590602001909291908035906020019092919050505061114b565b005b34801561046a57600080fd5b50610473611275565b6040518082815260200191505060405180910390f35b34801561049557600080fd5b506104f4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611282565b005b34801561050257600080fd5b50610537600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112ec565b005b34801561054557600080fd5b5061057a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113c8565b005b34801561058857600080fd5b506105ab600480360381019080803561ffff1690602001909291905050506114a4565b005b3480156105b957600080fd5b506105c261159d565b005b3480156105d057600080fd5b506105ef6004803603810190808035906020019092919050505061167b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561063d57600080fd5b50610660600480360381019080803561ffff1690602001909291905050506116ae565b005b34801561066e57600080fd5b506106776117a7565b604051808215151515815260200191505060405180910390f35b34801561069d57600080fd5b506106bc600480360381019080803590602001909291905050506117ba565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561070a57600080fd5b5061072960048036038101908080359060200190929190505050611833565b005b6107536004803603810190808035906020019092919080359060200190929190505050611914565b005b34801561076157600080fd5b50610796600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612374565b6040518082815260200191505060405180910390f35b3480156107b857600080fd5b506107c16123bd565b604051808261ffff1661ffff16815260200191505060405180910390f35b3480156107eb57600080fd5b506107f46123d5565b005b34801561080257600080fd5b50610837600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061250c565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561087a57808201518184015260208101905061085f565b505050509050019250505060405180910390f35b34801561089a57600080fd5b506108b960048036038101908080359060200190929190505050612659565b60405180806020018760ff1660ff1681526020018681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183151515158152602001828103825288818151815260200191508051906020019080838360005b8381101561094d578082015181840152602081019050610932565b50505050905090810190601f16801561097a5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b34801561099957600080fd5b506109bc600480360381019080803561ffff1690602001909291905050506127b6565b005b3480156109ca57600080fd5b506109e9600480360381019080803590602001909291905050506128ad565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a3757600080fd5b50610a406128e0565b6040518082815260200191505060405180910390f35b610a7e60048036038101908080359060200190929190803590602001909291905050506128ea565b005b348015610a8c57600080fd5b50610a95612ac3565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ad5578082015181840152602081019050610aba565b50505050905090810190601f168015610b025780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610b1c57600080fd5b50610b25612b00565b604051808261ffff1661ffff16815260200191505060405180910390f35b348015610b4f57600080fd5b50610b58612b18565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610b98578082015181840152602081019050610b7d565b50505050905090810190601f168015610bc55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610bdf57600080fd5b50610c086004803603810190808035906020019092919080359060200190929190505050612b51565b005b348015610c1657600080fd5b50610c55600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612d1e565b005b348015610c6357600080fd5b50610c6c612d72565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610cba57600080fd5b50610cdd600480360381019080803561ffff169060200190929190505050612d98565b005b348015610ceb57600080fd5b50610d0a60048036038101908080359060200190929190505050612e92565b005b348015610d1857600080fd5b50610d3760048036038101908080359060200190929190505050612f23565b6040518082815260200191505060405180910390f35b348015610d5957600080fd5b50610d62612f40565b604051808261ffff1661ffff16815260200191505060405180910390f35b348015610d8c57600080fd5b50610e28600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff1690602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612f58565b005b348015610e3657600080fd5b50610e55600480360381019080803590602001909291905050506130c3565b6040518082815260200191505060405180910390f35b348015610e7757600080fd5b50610e806130ed565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ec0578082015181840152602081019050610ea5565b50505050905090810190601f168015610eed5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000600360069054906101000a900461ffff16905090565b60606040805190810160405280600881526020017f43727970746f6e73000000000000000000000000000000000000000000000000815250905090565b600c60009054906101000a900460ff16151515610f6c57600080fd5b610f763382613126565b1515610f8157600080fd5b816007600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a35050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60056020528060005260406000206000915054906101000a900460ff1681565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061112b5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561113657600080fd5b61113f81613192565b50565b60006001905090565b600080600c60009054906101000a900460ff1615151561116a57600080fd5b6004600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691503390508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156111dd57600080fd5b6005600085815260200190815260200160002060009054906101000a900460ff16151561120957600080fd5b60008311151561121857600080fd5b8260086000868152602001908152602001600020819055507fb72836ccf2ad525816159b7f5cb1f7f0db5801fe2e37413e8c3522d52f69bb3a8484604051808381526020018281526020019250505060405180910390a150505050565b6000600b80549050905090565b600c60009054906101000a900460ff1615151561129e57600080fd5b6112a88382613126565b15156112b357600080fd5b6112bd82826132b4565b15156112c857600080fd5b6112d182613320565b15156112dc57600080fd5b6112e7838383613359565b505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561134857600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561138457600080fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561142457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561146057600080fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061154d5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561155857600080fd5b606e8161ffff1610158015611572575060c88161ffff1611155b151561157d57600080fd5b80600360006101000a81548161ffff021916908361ffff16021790555050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115f957600080fd5b600c60009054906101000a900460ff16151561161457600080fd5b6000600c60006101000a81548160ff0219169083151502179055507f8a366fcf0cdff71fc1946279a88cbb2845d8628abc79fc766e3593ff82154d05600c60009054906101000a900460ff16604051808215151515815260200191505060405180910390a1565b60076020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806117575750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561176257600080fd5b606e8161ffff161015801561177c575060c88161ffff1611155b151561178757600080fd5b80600360026101000a81548161ffff021916908361ffff16021790555050565b600c60009054906101000a900460ff1681565b60006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561182e57600080fd5b919050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806118dc5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156118e757600080fd5b6000811180156118ff575068056bc75e2d6310000081105b151561190a57600080fd5b8060028190555050565b6000806000806000806000806000600c60009054906101000a900460ff1615151561193e57600080fd5b600460008c815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169850339750600560008c815260200190815260200160002060009054906101000a900460ff169650600860008c8152602001908152602001600020549550600b8b8154811015156119bf57fe5b9060005260206000209060030201600201549450600160ff16600b8c8154811015156119e757fe5b906000526020600020906003020160010160009054906101000a900460ff1660ff16141515611a2057600085111515611a1f57600080fd5b5b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614151515611a5b57600080fd5b611a6488613320565b1515611a6f57600080fd5b853410151515611a7e57600080fd5b60008a1115611b4657859350600560008c815260200190815260200160002060009054906101000a900460ff161515611ab75784860193505b833410151515611ac657600080fd5b89600860008d8152602001908152602001600020819055506001600560008d815260200190815260200160002060006101000a81548160ff0219169083151502179055507f8ac31d6bc386484c55b1494065295bc34f2767e63fad49c4ba51a9c5a91f56278b6040518082815260200191505060405180910390a1611cc6565b3073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16148015611bb45750600a60ff16600b8c815481101515611b9057fe5b906000526020600020906003020160010160009054906101000a900460ff1660ff16145b15611c1057611bf4611bda87600360049054906101000a900461ffff1661ffff1661355b565b600360089054906101000a900461ffff1661ffff16613596565b600860008d815260200190815260200160002081905550611cc5565b600254861015611c7157611c55611c3b87600360009054906101000a900461ffff1661ffff1661355b565b600360089054906101000a900461ffff1661ffff16613596565b600860008d815260200190815260200160002081905550611cc4565b611cac611c9287600360029054906101000a900461ffff1661ffff1661355b565b600360089054906101000a900461ffff1661ffff16613596565b600860008d8152602001908152602001600020819055505b5b5b611cd189898d613359565b611cf9611cf287600360089054906101000a900461ffff1661ffff1661355b565b6064613596565b9250600b8b815481101515611d0a57fe5b90600052602060002090600302016000019150600760ff16600b8c815481101515611d3157fe5b906000526020600020906003020160010160009054906101000a900460ff1660ff16149050808015611d605750865b15612048578873ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015611dab573d6000803e3d6000fd5b507f4ddda4c9be35186c9d1b28178302335ff10e50bc7e15d8ededc33e4857aa82b98b87600860008f8152602001908152602001600020548c8c87604051808781526020018681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015611ee55780601f10611eba57610100808354040283529160200191611ee5565b820191906000526020600020905b815481529060010190602001808311611ec857829003601f168201915b505097505050505050505060405180910390a17e8201e7bcbf010c2c07de59d6e97cb7e3cf67a46125c49cbc89b9d2cde1f48f8b87600860008f8152602001908152602001600020548c8c87604051808781526020018681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156120305780601f1061200557610100808354040283529160200191612030565b820191906000526020600020905b81548152906001019060200180831161201357829003601f168201915b505097505050505050505060405180910390a1612367565b3073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614158015612082575080155b1561221b578873ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f193505050501580156120cd573d6000803e3d6000fd5b507f4ddda4c9be35186c9d1b28178302335ff10e50bc7e15d8ededc33e4857aa82b98b87600860008f8152602001908152602001600020548c8c87604051808781526020018681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156122075780601f106121dc57610100808354040283529160200191612207565b820191906000526020600020905b8154815290600101906020018083116121ea57829003601f168201915b505097505050505050505060405180910390a15b7e8201e7bcbf010c2c07de59d6e97cb7e3cf67a46125c49cbc89b9d2cde1f48f8b87600860008f8152602001908152602001600020548c8c87604051808781526020018681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156123535780601f1061232857610100808354040283529160200191612353565b820191906000526020600020905b81548152906001019060200180831161233657829003601f168201915b505097505050505050505060405180910390a15b5050505050505050505050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600360009054906101000a900461ffff16905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061247e5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561248957600080fd5b600c60009054906101000a900460ff161515156124a557600080fd5b6001600c60006101000a81548160ff0219169083151502179055507f8a366fcf0cdff71fc1946279a88cbb2845d8628abc79fc766e3593ff82154d05600c60009054906101000a900460ff16604051808215151515815260200191505060405180910390a1565b606060006060600080600061252087612374565b9450600085141561256357600060405190808252806020026020018201604052801561255b5781602001602082028038833980820191505090505b50955061264f565b846040519080825280602002602001820160405280156125925781602001602082028038833980820191505090505b50935061259d611275565b925060009150600090505b828111151561264b578673ffffffffffffffffffffffffffffffffffffffff166004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561263e5780848381518110151561262757fe5b906020019060200201818152505081806001019250505b80806001019150506125a8565b8395505b5050505050919050565b6060600080600080600080600b8881548110151561267357fe5b90600052602060002090600302019050806000018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561271b5780601f106126f05761010080835404028352916020019161271b565b820191906000526020600020905b8154815290600101906020018083116126fe57829003601f168201915b50505050509650600860008981526020019081526020016000205493506004600089815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1692506005600089815260200190815260200160002060009054906101000a900460ff1691508060010160009054906101000a900460ff169550806002015494505091939550919395565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061285f5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561286a57600080fd5b60008161ffff161180156128825750600a8161ffff16105b151561288d57600080fd5b80600360066101000a81548161ffff021916908361ffff16021790555050565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b6000806000600c60009054906101000a900460ff1615151561290b57600080fd5b6004600086815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169250339150600b8581548110151561295357fe5b9060005260206000209060030201600201549050600160ff16600b8681548110151561297b57fe5b906000526020600020906003020160010160009054906101000a900460ff1660ff161415156129b4576000811115156129b357600080fd5b5b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415156129ee57600080fd5b6005600086815260200190815260200160002060009054906101000a900460ff16151515612a1b57600080fd5b600084111515612a2a57600080fd5b803410151515612a3957600080fd5b83600860008781526020019081526020016000208190555060016005600087815260200190815260200160002060006101000a81548160ff0219169083151502179055507f17b4a6d9d7d8cb27823e77423d56dbc53899e4eb7fbebded879e7ac5d4fce5168585604051808381526020018281526020019250505060405180910390a15050505050565b60606040805190810160405280600781526020017f43525950544f4e00000000000000000000000000000000000000000000000000815250905090565b6000600360029054906101000a900461ffff16905090565b6040805190810160405280600881526020017f43727970746f6e7300000000000000000000000000000000000000000000000081525081565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480612bfa5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515612c0557600080fd5b60008110151515612c1557600080fd5b80600b83815481101515612c2557fe5b9060005260206000209060030201600201819055507f5e941ef1dc4cf6163396c106a275903c63323b0a0303061165222fc3662e750d600b83815481101515612c6a57fe5b9060005260206000209060030201600001826040518080602001838152602001828103825284818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015612d0b5780601f10612ce057610100808354040283529160200191612d0b565b820191906000526020600020905b815481529060010190602001808311612cee57829003601f168201915b5050935050505060405180910390a15050565b600c60009054906101000a900460ff16151515612d3a57600080fd5b612d443382613126565b1515612d4f57600080fd5b612d5882613320565b1515612d6357600080fd5b612d6e338383613359565b5050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480612e415750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515612e4c57600080fd5b60648161ffff1610158015612e6757506127108161ffff1611155b1515612e7257600080fd5b80600360046101000a81548161ffff021916908361ffff16021790555050565b600080600c60009054906101000a900460ff16151515612eb157600080fd5b3391506004600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050612ef382613320565b1515612efe57600080fd5b612f0882846132b4565b1515612f1357600080fd5b612f1e818385613359565b505050565b600060086000838152602001908152602001600020549050919050565b6000600360049054906101000a900461ffff16905090565b600080600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806130045750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561300f57600080fd5b829150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561304b573091505b600a60ff168660ff16141561305e573091505b60008411151561306e5760015493505b600160ff168660ff16141561308257600093505b6000851115156130925760005494505b600160ff168660ff16146130a75760006130aa565b60015b90506130ba87838787858b6135b1565b50505050505050565b6000600b828154811015156130d457fe5b9060005260206000209060030201600201549050919050565b6040805190810160405280600781526020017f43525950544f4e0000000000000000000000000000000000000000000000000081525081565b60006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614905092915050565b6000309050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561325157600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8273ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f1935050505015801561324b573d6000803e3d6000fd5b506132b0565b8173ffffffffffffffffffffffffffffffffffffffff166108fc8273ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f193505050501580156132ae573d6000803e3d6000fd5b505b5050565b60008273ffffffffffffffffffffffffffffffffffffffff166007600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415156134b757600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001900391905055506007600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef838383604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a1505050565b6000806000841415613570576000915061358f565b828402905082848281151561358157fe5b0414151561358b57fe5b8091505b5092915050565b60008082848115156135a457fe5b0490508091505092915050565b6135b96137b8565b60006060604051908101604052808981526020018460ff1681526020018681525091506001600b839080600181540180825580915050906001820390600052602060002090600302016000909192909190915060008201518160000190805190602001906136289291906137dd565b5060208201518160010160006101000a81548160ff021916908360ff1602179055506040820151816002015550500390508063ffffffff168114151561366d57600080fd5b7fa62aee79defc1345b836c482cd6dd1c3f5faf46f0ed5080a6b00607e63347ae3818989878760405180868152602001806020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001841515151581526020018360ff1660ff168152602001828103825286818151815260200191508051906020019080838360005b83811015613721578082015181840152602081019050613706565b50505050905090810190601f16801561374e5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a1856008600083815260200190815260200160002081905550836005600083815260200190815260200160002060006101000a81548160ff0219169083151502179055506137ae60008883613359565b5050505050505050565b60606040519081016040528060608152602001600060ff168152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061381e57805160ff191683800117855561384c565b8280016001018555821561384c579182015b8281111561384b578251825591602001919060010190613830565b5b509050613859919061385d565b5090565b61387f91905b8082111561387b576000816000905550600101613863565b5090565b905600a165627a7a723058200c81aab5fa2e5515f88fcd45621331f17b869063ec6310e598a52fe6faec62cf0029
Deployed Bytecode
0x608060405260043610610204576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630544587f1461020957806306fdde031461023c578063095ea7b3146102cc5780630a0f8168146103195780630a894ccf146103705780630b7e9c44146103b55780631051db34146103f857806310c067d21461042757806318160ddd1461045e57806323b872dd1461048957806327d7874c146104f65780632ba73c151461053957806332ce92cb1461057c5780633f4ba83a146105ad5780633f87e765146105c45780634bafa437146106315780635c975abb146106625780636352211e146106915780636c34c97a146106fe57806370876c981461072b57806370a08231146107555780638238cc8f146107ac5780638456cb59146107df5780638462151c146107f657806386d35ed91461088e5780638878db7f1461098d5780639146de22146109be57806391e6d02814610a2b578063939c23b614610a5657806395d89b4114610a80578063a39e114914610b10578063a3f4df7e14610b43578063a75274e914610bd3578063a9059cbb14610c0a578063b047fb5014610c57578063b1ef2e9714610cae578063b2e6ceeb14610cdf578063b9186d7d14610d0c578063c391d58114610d4d578063cb57e4a614610d80578063dce2b4c114610e2a578063f76f8d7814610e6b575b600080fd5b34801561021557600080fd5b5061021e610efb565b604051808261ffff1661ffff16815260200191505060405180910390f35b34801561024857600080fd5b50610251610f13565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610291578082015181840152602081019050610276565b50505050905090810190601f1680156102be5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102d857600080fd5b50610317600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f50565b005b34801561032557600080fd5b5061032e61103c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561037c57600080fd5b5061039b60048036038101908080359060200190929190505050611062565b604051808215151515815260200191505060405180910390f35b3480156103c157600080fd5b506103f6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611082565b005b34801561040457600080fd5b5061040d611142565b604051808215151515815260200191505060405180910390f35b34801561043357600080fd5b5061045c600480360381019080803590602001909291908035906020019092919050505061114b565b005b34801561046a57600080fd5b50610473611275565b6040518082815260200191505060405180910390f35b34801561049557600080fd5b506104f4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611282565b005b34801561050257600080fd5b50610537600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112ec565b005b34801561054557600080fd5b5061057a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113c8565b005b34801561058857600080fd5b506105ab600480360381019080803561ffff1690602001909291905050506114a4565b005b3480156105b957600080fd5b506105c261159d565b005b3480156105d057600080fd5b506105ef6004803603810190808035906020019092919050505061167b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561063d57600080fd5b50610660600480360381019080803561ffff1690602001909291905050506116ae565b005b34801561066e57600080fd5b506106776117a7565b604051808215151515815260200191505060405180910390f35b34801561069d57600080fd5b506106bc600480360381019080803590602001909291905050506117ba565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561070a57600080fd5b5061072960048036038101908080359060200190929190505050611833565b005b6107536004803603810190808035906020019092919080359060200190929190505050611914565b005b34801561076157600080fd5b50610796600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612374565b6040518082815260200191505060405180910390f35b3480156107b857600080fd5b506107c16123bd565b604051808261ffff1661ffff16815260200191505060405180910390f35b3480156107eb57600080fd5b506107f46123d5565b005b34801561080257600080fd5b50610837600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061250c565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561087a57808201518184015260208101905061085f565b505050509050019250505060405180910390f35b34801561089a57600080fd5b506108b960048036038101908080359060200190929190505050612659565b60405180806020018760ff1660ff1681526020018681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183151515158152602001828103825288818151815260200191508051906020019080838360005b8381101561094d578082015181840152602081019050610932565b50505050905090810190601f16801561097a5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b34801561099957600080fd5b506109bc600480360381019080803561ffff1690602001909291905050506127b6565b005b3480156109ca57600080fd5b506109e9600480360381019080803590602001909291905050506128ad565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a3757600080fd5b50610a406128e0565b6040518082815260200191505060405180910390f35b610a7e60048036038101908080359060200190929190803590602001909291905050506128ea565b005b348015610a8c57600080fd5b50610a95612ac3565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ad5578082015181840152602081019050610aba565b50505050905090810190601f168015610b025780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610b1c57600080fd5b50610b25612b00565b604051808261ffff1661ffff16815260200191505060405180910390f35b348015610b4f57600080fd5b50610b58612b18565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610b98578082015181840152602081019050610b7d565b50505050905090810190601f168015610bc55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610bdf57600080fd5b50610c086004803603810190808035906020019092919080359060200190929190505050612b51565b005b348015610c1657600080fd5b50610c55600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612d1e565b005b348015610c6357600080fd5b50610c6c612d72565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610cba57600080fd5b50610cdd600480360381019080803561ffff169060200190929190505050612d98565b005b348015610ceb57600080fd5b50610d0a60048036038101908080359060200190929190505050612e92565b005b348015610d1857600080fd5b50610d3760048036038101908080359060200190929190505050612f23565b6040518082815260200191505060405180910390f35b348015610d5957600080fd5b50610d62612f40565b604051808261ffff1661ffff16815260200191505060405180910390f35b348015610d8c57600080fd5b50610e28600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff1690602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612f58565b005b348015610e3657600080fd5b50610e55600480360381019080803590602001909291905050506130c3565b6040518082815260200191505060405180910390f35b348015610e7757600080fd5b50610e806130ed565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ec0578082015181840152602081019050610ea5565b50505050905090810190601f168015610eed5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000600360069054906101000a900461ffff16905090565b60606040805190810160405280600881526020017f43727970746f6e73000000000000000000000000000000000000000000000000815250905090565b600c60009054906101000a900460ff16151515610f6c57600080fd5b610f763382613126565b1515610f8157600080fd5b816007600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a35050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60056020528060005260406000206000915054906101000a900460ff1681565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061112b5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561113657600080fd5b61113f81613192565b50565b60006001905090565b600080600c60009054906101000a900460ff1615151561116a57600080fd5b6004600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691503390508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156111dd57600080fd5b6005600085815260200190815260200160002060009054906101000a900460ff16151561120957600080fd5b60008311151561121857600080fd5b8260086000868152602001908152602001600020819055507fb72836ccf2ad525816159b7f5cb1f7f0db5801fe2e37413e8c3522d52f69bb3a8484604051808381526020018281526020019250505060405180910390a150505050565b6000600b80549050905090565b600c60009054906101000a900460ff1615151561129e57600080fd5b6112a88382613126565b15156112b357600080fd5b6112bd82826132b4565b15156112c857600080fd5b6112d182613320565b15156112dc57600080fd5b6112e7838383613359565b505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561134857600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561138457600080fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561142457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561146057600080fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061154d5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561155857600080fd5b606e8161ffff1610158015611572575060c88161ffff1611155b151561157d57600080fd5b80600360006101000a81548161ffff021916908361ffff16021790555050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115f957600080fd5b600c60009054906101000a900460ff16151561161457600080fd5b6000600c60006101000a81548160ff0219169083151502179055507f8a366fcf0cdff71fc1946279a88cbb2845d8628abc79fc766e3593ff82154d05600c60009054906101000a900460ff16604051808215151515815260200191505060405180910390a1565b60076020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806117575750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561176257600080fd5b606e8161ffff161015801561177c575060c88161ffff1611155b151561178757600080fd5b80600360026101000a81548161ffff021916908361ffff16021790555050565b600c60009054906101000a900460ff1681565b60006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561182e57600080fd5b919050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806118dc5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156118e757600080fd5b6000811180156118ff575068056bc75e2d6310000081105b151561190a57600080fd5b8060028190555050565b6000806000806000806000806000600c60009054906101000a900460ff1615151561193e57600080fd5b600460008c815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169850339750600560008c815260200190815260200160002060009054906101000a900460ff169650600860008c8152602001908152602001600020549550600b8b8154811015156119bf57fe5b9060005260206000209060030201600201549450600160ff16600b8c8154811015156119e757fe5b906000526020600020906003020160010160009054906101000a900460ff1660ff16141515611a2057600085111515611a1f57600080fd5b5b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614151515611a5b57600080fd5b611a6488613320565b1515611a6f57600080fd5b853410151515611a7e57600080fd5b60008a1115611b4657859350600560008c815260200190815260200160002060009054906101000a900460ff161515611ab75784860193505b833410151515611ac657600080fd5b89600860008d8152602001908152602001600020819055506001600560008d815260200190815260200160002060006101000a81548160ff0219169083151502179055507f8ac31d6bc386484c55b1494065295bc34f2767e63fad49c4ba51a9c5a91f56278b6040518082815260200191505060405180910390a1611cc6565b3073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16148015611bb45750600a60ff16600b8c815481101515611b9057fe5b906000526020600020906003020160010160009054906101000a900460ff1660ff16145b15611c1057611bf4611bda87600360049054906101000a900461ffff1661ffff1661355b565b600360089054906101000a900461ffff1661ffff16613596565b600860008d815260200190815260200160002081905550611cc5565b600254861015611c7157611c55611c3b87600360009054906101000a900461ffff1661ffff1661355b565b600360089054906101000a900461ffff1661ffff16613596565b600860008d815260200190815260200160002081905550611cc4565b611cac611c9287600360029054906101000a900461ffff1661ffff1661355b565b600360089054906101000a900461ffff1661ffff16613596565b600860008d8152602001908152602001600020819055505b5b5b611cd189898d613359565b611cf9611cf287600360089054906101000a900461ffff1661ffff1661355b565b6064613596565b9250600b8b815481101515611d0a57fe5b90600052602060002090600302016000019150600760ff16600b8c815481101515611d3157fe5b906000526020600020906003020160010160009054906101000a900460ff1660ff16149050808015611d605750865b15612048578873ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015611dab573d6000803e3d6000fd5b507f4ddda4c9be35186c9d1b28178302335ff10e50bc7e15d8ededc33e4857aa82b98b87600860008f8152602001908152602001600020548c8c87604051808781526020018681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015611ee55780601f10611eba57610100808354040283529160200191611ee5565b820191906000526020600020905b815481529060010190602001808311611ec857829003601f168201915b505097505050505050505060405180910390a17e8201e7bcbf010c2c07de59d6e97cb7e3cf67a46125c49cbc89b9d2cde1f48f8b87600860008f8152602001908152602001600020548c8c87604051808781526020018681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156120305780601f1061200557610100808354040283529160200191612030565b820191906000526020600020905b81548152906001019060200180831161201357829003601f168201915b505097505050505050505060405180910390a1612367565b3073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614158015612082575080155b1561221b578873ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f193505050501580156120cd573d6000803e3d6000fd5b507f4ddda4c9be35186c9d1b28178302335ff10e50bc7e15d8ededc33e4857aa82b98b87600860008f8152602001908152602001600020548c8c87604051808781526020018681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156122075780601f106121dc57610100808354040283529160200191612207565b820191906000526020600020905b8154815290600101906020018083116121ea57829003601f168201915b505097505050505050505060405180910390a15b7e8201e7bcbf010c2c07de59d6e97cb7e3cf67a46125c49cbc89b9d2cde1f48f8b87600860008f8152602001908152602001600020548c8c87604051808781526020018681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156123535780601f1061232857610100808354040283529160200191612353565b820191906000526020600020905b81548152906001019060200180831161233657829003601f168201915b505097505050505050505060405180910390a15b5050505050505050505050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600360009054906101000a900461ffff16905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061247e5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561248957600080fd5b600c60009054906101000a900460ff161515156124a557600080fd5b6001600c60006101000a81548160ff0219169083151502179055507f8a366fcf0cdff71fc1946279a88cbb2845d8628abc79fc766e3593ff82154d05600c60009054906101000a900460ff16604051808215151515815260200191505060405180910390a1565b606060006060600080600061252087612374565b9450600085141561256357600060405190808252806020026020018201604052801561255b5781602001602082028038833980820191505090505b50955061264f565b846040519080825280602002602001820160405280156125925781602001602082028038833980820191505090505b50935061259d611275565b925060009150600090505b828111151561264b578673ffffffffffffffffffffffffffffffffffffffff166004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561263e5780848381518110151561262757fe5b906020019060200201818152505081806001019250505b80806001019150506125a8565b8395505b5050505050919050565b6060600080600080600080600b8881548110151561267357fe5b90600052602060002090600302019050806000018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561271b5780601f106126f05761010080835404028352916020019161271b565b820191906000526020600020905b8154815290600101906020018083116126fe57829003601f168201915b50505050509650600860008981526020019081526020016000205493506004600089815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1692506005600089815260200190815260200160002060009054906101000a900460ff1691508060010160009054906101000a900460ff169550806002015494505091939550919395565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061285f5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561286a57600080fd5b60008161ffff161180156128825750600a8161ffff16105b151561288d57600080fd5b80600360066101000a81548161ffff021916908361ffff16021790555050565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b6000806000600c60009054906101000a900460ff1615151561290b57600080fd5b6004600086815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169250339150600b8581548110151561295357fe5b9060005260206000209060030201600201549050600160ff16600b8681548110151561297b57fe5b906000526020600020906003020160010160009054906101000a900460ff1660ff161415156129b4576000811115156129b357600080fd5b5b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415156129ee57600080fd5b6005600086815260200190815260200160002060009054906101000a900460ff16151515612a1b57600080fd5b600084111515612a2a57600080fd5b803410151515612a3957600080fd5b83600860008781526020019081526020016000208190555060016005600087815260200190815260200160002060006101000a81548160ff0219169083151502179055507f17b4a6d9d7d8cb27823e77423d56dbc53899e4eb7fbebded879e7ac5d4fce5168585604051808381526020018281526020019250505060405180910390a15050505050565b60606040805190810160405280600781526020017f43525950544f4e00000000000000000000000000000000000000000000000000815250905090565b6000600360029054906101000a900461ffff16905090565b6040805190810160405280600881526020017f43727970746f6e7300000000000000000000000000000000000000000000000081525081565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480612bfa5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515612c0557600080fd5b60008110151515612c1557600080fd5b80600b83815481101515612c2557fe5b9060005260206000209060030201600201819055507f5e941ef1dc4cf6163396c106a275903c63323b0a0303061165222fc3662e750d600b83815481101515612c6a57fe5b9060005260206000209060030201600001826040518080602001838152602001828103825284818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015612d0b5780601f10612ce057610100808354040283529160200191612d0b565b820191906000526020600020905b815481529060010190602001808311612cee57829003601f168201915b5050935050505060405180910390a15050565b600c60009054906101000a900460ff16151515612d3a57600080fd5b612d443382613126565b1515612d4f57600080fd5b612d5882613320565b1515612d6357600080fd5b612d6e338383613359565b5050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480612e415750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515612e4c57600080fd5b60648161ffff1610158015612e6757506127108161ffff1611155b1515612e7257600080fd5b80600360046101000a81548161ffff021916908361ffff16021790555050565b600080600c60009054906101000a900460ff16151515612eb157600080fd5b3391506004600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050612ef382613320565b1515612efe57600080fd5b612f0882846132b4565b1515612f1357600080fd5b612f1e818385613359565b505050565b600060086000838152602001908152602001600020549050919050565b6000600360049054906101000a900461ffff16905090565b600080600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806130045750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561300f57600080fd5b829150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561304b573091505b600a60ff168660ff16141561305e573091505b60008411151561306e5760015493505b600160ff168660ff16141561308257600093505b6000851115156130925760005494505b600160ff168660ff16146130a75760006130aa565b60015b90506130ba87838787858b6135b1565b50505050505050565b6000600b828154811015156130d457fe5b9060005260206000209060030201600201549050919050565b6040805190810160405280600781526020017f43525950544f4e0000000000000000000000000000000000000000000000000081525081565b60006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614905092915050565b6000309050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561325157600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8273ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f1935050505015801561324b573d6000803e3d6000fd5b506132b0565b8173ffffffffffffffffffffffffffffffffffffffff166108fc8273ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f193505050501580156132ae573d6000803e3d6000fd5b505b5050565b60008273ffffffffffffffffffffffffffffffffffffffff166007600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415156134b757600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001900391905055506007600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef838383604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a1505050565b6000806000841415613570576000915061358f565b828402905082848281151561358157fe5b0414151561358b57fe5b8091505b5092915050565b60008082848115156135a457fe5b0490508091505092915050565b6135b96137b8565b60006060604051908101604052808981526020018460ff1681526020018681525091506001600b839080600181540180825580915050906001820390600052602060002090600302016000909192909190915060008201518160000190805190602001906136289291906137dd565b5060208201518160010160006101000a81548160ff021916908360ff1602179055506040820151816002015550500390508063ffffffff168114151561366d57600080fd5b7fa62aee79defc1345b836c482cd6dd1c3f5faf46f0ed5080a6b00607e63347ae3818989878760405180868152602001806020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001841515151581526020018360ff1660ff168152602001828103825286818151815260200191508051906020019080838360005b83811015613721578082015181840152602081019050613706565b50505050905090810190601f16801561374e5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a1856008600083815260200190815260200160002081905550836005600083815260200190815260200160002060006101000a81548160ff0219169083151502179055506137ae60008883613359565b5050505050505050565b60606040519081016040528060608152602001600060ff168152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061381e57805160ff191683800117855561384c565b8280016001018555821561384c579182015b8281111561384b578251825591602001919060010190613830565b5b509050613859919061385d565b5090565b61387f91905b8082111561387b576000816000905550600101613863565b5090565b905600a165627a7a723058200c81aab5fa2e5515f88fcd45621331f17b869063ec6310e598a52fe6faec62cf0029
Swarm Source
bzzr://0c81aab5fa2e5515f88fcd45621331f17b869063ec6310e598a52fe6faec62cf
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $2,628.03 | 0.3753 | $986.25 |
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.