ERC-20
Source Code
Overview
Max Total Supply
0 ITM
Holders
2,443
Market
Onchain Market Cap
-
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Filtered by Token Holder
Gate Dep: 0x0d0707963952f2fba59dd06f2b425ace40b492feBalance
0 ITMValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
| # | Exchange | Pair | Price | 24H Volume | % Volume |
|---|
Contract Name:
Aphrodite
Compiler Version
v0.4.21+commit.dfe3193c
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2018-04-30
*/
pragma solidity ^0.4.21;
// File: contracts/auth/AuthorizedList.sol
/*
* Created by: alexo (Big Deeper Advisors, Inc)
* For: Input Strategic Partners (ISP) and Intimate.io
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
* TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE
* SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
pragma solidity ^0.4.21;
contract AuthorizedList {
bytes32 constant APHRODITE = keccak256("Goddess of Love!");
bytes32 constant CUPID = keccak256("Aphrodite's Little Helper.");
bytes32 constant BULKTRANSFER = keccak256("Bulk Transfer User.");
mapping (address => mapping(bytes32 => bool)) internal authorized;
mapping (bytes32 => bool) internal contractPermissions;
}
// File: contracts/auth/Authorized.sol
/*
* Created by: alexo (Big Deeper Advisors, Inc)
* For: Input Strategic Partners (ISP) and Intimate.io
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
* TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE
* SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
pragma solidity ^0.4.21;
contract Authorized is AuthorizedList {
function Authorized() public {
/// Set the initial permission for msg.sender (contract creator), it can then add permissions for others
authorized[msg.sender][APHRODITE] = true;
}
/// Check if _address is authorized to access functionality with _authorization level
modifier ifAuthorized(address _address, bytes32 _authorization) {
require(authorized[_address][_authorization] || authorized[_address][APHRODITE]);
_;
}
/// @dev Check if _address is authorized for _authorization
function isAuthorized(address _address, bytes32 _authorization) public view returns (bool) {
return authorized[_address][_authorization];
}
/// @dev Change authorization for _address
/// @param _address Address whose permission is to be changed
/// @param _authorization Authority to be changed
function toggleAuthorization(address _address, bytes32 _authorization) public ifAuthorized(msg.sender, APHRODITE) {
/// Prevent inadvertent self locking out, cannot change own authority
require(_address != msg.sender);
/// No need for lower level authorization to linger
if (_authorization == APHRODITE && !authorized[_address][APHRODITE]) {
authorized[_address][CUPID] = false;
}
authorized[_address][_authorization] = !authorized[_address][_authorization];
}
}
// File: contracts/math/SafeMath.sol
library SafeMath {
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a * b;
require(a == 0 || c / a == b);
return c;
}
/* Not needed
function div(uint256 a, uint256 b) internal pure returns (uint256) {
// require(b > 0); // Solidity automatically throws when dividing by 0
uint256 c = a / b;
// require(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
require(b <= a);
return a - b;
}
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a);
return c;
}
}
// File: contracts/token/IERC20Basic.sol
/*
* Created by: alexo (Big Deeper Advisors, Inc)
* For: Input Strategic Partners (ISP) and Intimate.io
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
* TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE
* SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
pragma solidity ^0.4.21;
contract IERC20Basic {
function totalSupply() public view returns (uint256);
function balanceOf(address _who) public view returns (uint256);
function transfer(address _to, uint256 _value) public returns (bool);
event Transfer(address indexed _from, address indexed _to, uint256 _value);
}
// File: contracts/token/RecoverCurrency.sol
/*
* Created by: alexo (Big Deeper Advisors, Inc)
* For: Input Strategic Partners (ISP) and Intimate.io
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
* TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE
* SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
pragma solidity ^0.4.21;
/// @title Authorized account can reclaim ERC20Basic tokens.
contract RecoverCurrency is AuthorizedList, Authorized {
event EtherRecovered(address indexed _to, uint256 _value);
function recoverEther() external ifAuthorized(msg.sender, APHRODITE) {
msg.sender.transfer(address(this).balance);
emit EtherRecovered(msg.sender, address(this).balance);
}
/// @dev Reclaim all ERC20Basic compatible tokens
/// @param _address The address of the token contract
function recoverToken(address _address) external ifAuthorized(msg.sender, APHRODITE) {
require(_address != address(0));
IERC20Basic token = IERC20Basic(_address);
uint256 balance = token.balanceOf(address(this));
token.transfer(msg.sender, balance);
}
}
// File: contracts/managed/Freezable.sol
/*
* Created by Input Strategic Partners (ISP) and Intimate.io
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
* TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE
* SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
pragma solidity ^0.4.21;
/**
* @title Freezable
* @dev allows authorized accounts to add/remove other accounts to the list of fozen accounts.
* Accounts in the list cannot transfer and approve and their balances and allowances cannot be retrieved.
*/
contract Freezable is AuthorizedList, Authorized {
event Frozen(address indexed _account);
event Unfrozen(address indexed _account);
mapping (address => bool) public frozenAccounts;
/// Make sure access control is initialized
function Freezable() public AuthorizedList() Authorized() { }
/**
* @dev Throws if called by any account that's frozen.
*/
modifier notFrozen {
require(!frozenAccounts[msg.sender]);
_;
}
/**
* @dev check if an account is frozen
* @param account address to check
* @return true iff the address is in the list of frozen accounts and hasn't been unfrozen
*/
function isFrozen(address account) public view returns (bool) {
return frozenAccounts[account];
}
/**
* @dev add an address to the list of frozen accounts
* @param account address to freeze
* @return true if the address was added to the list of frozen accounts, false if the address was already in the list
*/
function freezeAccount(address account) public ifAuthorized(msg.sender, APHRODITE) returns (bool success) {
if (!frozenAccounts[account]) {
frozenAccounts[account] = true;
emit Frozen(account);
success = true;
}
}
/**
* @dev remove an address from the list of frozen accounts
* @param account address to unfreeze
* @return true if the address was removed from the list of frozen accounts,
* false if the address wasn't in the list in the first place
*/
function unfreezeAccount(address account) public ifAuthorized(msg.sender, APHRODITE) returns (bool success) {
if (frozenAccounts[account]) {
frozenAccounts[account] = false;
emit Unfrozen(account);
success = true;
}
}
}
// File: contracts/managed/Pausable.sol
/*
* Created by: alexo (Big Deeper Advisors, Inc)
* For: Input Strategic Partners (ISP) and Intimate.io
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
* TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE
* SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
pragma solidity ^0.4.21;
contract Pausable is AuthorizedList, Authorized {
event Pause();
event Unpause();
/// @dev We deploy in UNpaused state, should it be paused?
bool public paused = false;
/// Make sure access control is initialized
function Pausable() public AuthorizedList() Authorized() { }
/// @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 an authorized msg.sender to pause, triggers stopped state
/// Multiple addresses may be authorized to call this method
function pause() public whenNotPaused ifAuthorized(msg.sender, CUPID) returns (bool) {
emit Pause();
paused = true;
return true;
}
/// @dev called by an authorized msg.sender to unpause, returns to normal state
/// Multiple addresses may be authorized to call this method
function unpause() public whenPaused ifAuthorized(msg.sender, CUPID) returns (bool) {
emit Unpause();
paused = false;
return true;
}
}
// File: contracts/storage/AllowancesLedger.sol
/*
* Created by: alexo (Big Deeper Advisors, Inc)
* For: Input Strategic Partners (ISP) and intimate.io
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
* TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE
* SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
pragma solidity ^0.4.21;
contract AllowancesLedger {
mapping (address => mapping (address => uint256)) public allowances;
}
// File: contracts/storage/TokenLedger.sol
/*
* Created by: alexo (Big Deeper Advisors, Inc)
* For: Input Strategic Partners (ISP) and Intimate.io
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
* TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE
* SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
pragma solidity ^0.4.21;
contract TokenLedger is AuthorizedList, Authorized {
mapping(address => uint256) public balances;
uint256 public totalsupply;
struct SeenAddressRecord {
bool seen;
uint256 accountArrayIndex;
}
// Iterable accounts
address[] internal accounts;
mapping(address => SeenAddressRecord) internal seenBefore;
/// @dev Keeping track of addresses in an array is useful as mappings are not iterable
/// @return Number of addresses holding this token
function numberAccounts() public view ifAuthorized(msg.sender, APHRODITE) returns (uint256) {
return accounts.length;
}
/// @dev Keeping track of addresses in an array is useful as mappings are not iterable
function returnAccounts() public view ifAuthorized(msg.sender, APHRODITE) returns (address[] holders) {
return accounts;
}
function balanceOf(uint256 _id) public view ifAuthorized(msg.sender, CUPID) returns (uint256 balance) {
require (_id < accounts.length);
return balances[accounts[_id]];
}
}
// File: contracts/storage/TokenSettings.sol
/*
* Created by: alexo (Big Deeper Advisors, Inc)
* For: Input Strategic Partners (ISP) and Intimate.io
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
* TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE
* SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
pragma solidity ^0.4.21;
contract TokenSettings is AuthorizedList, Authorized {
/// These strings should be set temporarily for testing on Rinkeby/Ropsten/Kovan to somethin else
/// to avoid people squatting on names
/// Change back to "intimate" and "ITM" for mainnet deployment
string public name = "intimate";
string public symbol = "ITM";
uint256 public INITIAL_SUPPLY = 100000000 * 10**18; // 100 million of subdivisible tokens
uint8 public constant decimals = 18;
/// @dev Change token name
/// @param _name string
function setName(string _name) public ifAuthorized(msg.sender, APHRODITE) {
name = _name;
}
/// @dev Change token symbol
/// @param _symbol string
function setSymbol(string _symbol) public ifAuthorized(msg.sender, APHRODITE) {
symbol = _symbol;
}
}
// File: contracts/storage/BasicTokenStorage.sol
/*
* Created by: alexo (Big Deeper Advisors, Inc)
* For: Input Strategic Partners (ISP) and Intimate.io
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
* TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE
* SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
pragma solidity ^0.4.21;
/// Collect all the state variables for the token's functions into a single contract
contract BasicTokenStorage is AuthorizedList, Authorized, TokenSettings, AllowancesLedger, TokenLedger {
/// @dev Ensure that authorization is set
function BasicTokenStorage() public Authorized() TokenSettings() AllowancesLedger() TokenLedger() { }
/// @dev Keep track of addresses seen before, push new ones into accounts list
/// @param _tokenholder address to check for "newness"
function trackAddresses(address _tokenholder) internal {
if (!seenBefore[_tokenholder].seen) {
seenBefore[_tokenholder].seen = true;
accounts.push(_tokenholder);
seenBefore[_tokenholder].accountArrayIndex = accounts.length - 1;
}
}
/// @dev remove address from seenBefore and accounts
/// @param _tokenholder address to remove
function removeSeenAddress(address _tokenholder) internal {
uint index = seenBefore[_tokenholder].accountArrayIndex;
require(index < accounts.length);
if (index != accounts.length - 1) {
accounts[index] = accounts[accounts.length - 1];
}
accounts.length--;
delete seenBefore[_tokenholder];
}
}
// File: contracts/token/BasicToken.sol
/*
* Created by: alexo (Big Deeper Advisors, Inc)
* For: Input Strategic Partners (ISP) and Intimate.io
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
* TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE
* SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
pragma solidity ^0.4.21;
contract BasicToken is IERC20Basic, BasicTokenStorage, Pausable, Freezable {
using SafeMath for uint256;
event Transfer(address indexed _tokenholder, address indexed _tokenrecipient, uint256 _value);
event BulkTransfer(address indexed _tokenholder, uint256 _howmany);
/// @dev Return the total token supply
function totalSupply() public view whenNotPaused returns (uint256) {
return totalsupply;
}
/// @dev transfer token for a specified address
/// @param _to The address to transfer to.
/// @param _value The amount to be transferred.
function transfer(address _to, uint256 _value) public whenNotPaused notFrozen returns (bool) {
/// No transfers to 0x0 address, use burn instead, if implemented
require(_to != address(0));
/// No useless operations
require(msg.sender != _to);
/// This will revert if not enough funds
balances[msg.sender] = balances[msg.sender].sub(_value);
if (balances[msg.sender] == 0) {
removeSeenAddress(msg.sender);
}
/// _to might be a completely new address, so check and store if so
trackAddresses(_to);
/// This will revert on overflow
balances[_to] = balances[_to].add(_value);
/// Emit the Transfer event
emit Transfer(msg.sender, _to, _value);
return true;
}
/// @dev bulkTransfer tokens to a list of specified addresses, not an ERC20 function
/// @param _tos The list of addresses to transfer to.
/// @param _values The list of amounts to be transferred.
function bulkTransfer(address[] _tos, uint256[] _values) public whenNotPaused notFrozen ifAuthorized(msg.sender, BULKTRANSFER) returns (bool) {
require (_tos.length == _values.length);
uint256 sourceBalance = balances[msg.sender];
/// Temporarily set balance to 0 to mitigate the possibility of re-entrancy attacks
balances[msg.sender] = 0;
for (uint256 i = 0; i < _tos.length; i++) {
uint256 currentValue = _values[i];
address _to = _tos[i];
require(_to != address(0));
require(currentValue <= sourceBalance);
require(msg.sender != _to);
sourceBalance = sourceBalance.sub(currentValue);
balances[_to] = balances[_to].add(currentValue);
trackAddresses(_to);
emit Transfer(msg.sender, _tos[i], currentValue);
}
/// Set to the remaining balance
balances[msg.sender] = sourceBalance;
emit BulkTransfer(msg.sender, _tos.length);
if (balances[msg.sender] == 0) {
removeSeenAddress(msg.sender);
}
return true;
}
/// @dev Gets balance of the specified account.
/// @param _tokenholder Address of interest
/// @return Balance for the passed address
function balanceOf(address _tokenholder) public view whenNotPaused returns (uint256 balance) {
require(!isFrozen(_tokenholder));
return balances[_tokenholder];
}
}
// File: contracts/token/IERC20.sol
/*
* Created by: alexo (Big Deeper Advisors, Inc)
* For: Input Strategic Partners (ISP) and Intimate.io
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
* TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE
* SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
pragma solidity ^0.4.21;
contract IERC20 is IERC20Basic {
function allowance(address _tokenholder, address _tokenspender) view public returns (uint256);
function transferFrom(address _from, address _to, uint256 _value) public returns (bool);
function approve(address _tokenspender, uint256 _value) public returns (bool);
event Approval(address indexed _tokenholder, address indexed _tokenspender, uint256 _value);
}
// File: contracts/token/StandardToken.sol
/*
* Created by: alexo (Big Deeper Advisors, Inc)
* For: Input Strategic Partners (ISP) and Intimate.io
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
* TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE
* SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
pragma solidity ^0.4.21;
contract StandardToken is IERC20Basic, BasicToken, IERC20 {
using SafeMath for uint256;
event Approval(address indexed _tokenholder, address indexed _tokenspender, uint256 _value);
/// @dev Implements ERC20 transferFrom from one address to another
/// @param _from The source address for tokens
/// @param _to The destination address for tokens
/// @param _value The number/amount to transfer
function transferFrom(address _from, address _to, uint256 _value) public whenNotPaused notFrozen returns (bool) {
// Don't send tokens to 0x0 address, use burn function that updates totalSupply
// and don't waste gas sending tokens to yourself
require(_to != address(0) && _from != _to);
require(!isFrozen(_from) && !isFrozen(_to));
/// This will revert if _value is larger than the allowance
allowances[_from][msg.sender] = allowances[_from][msg.sender].sub(_value);
balances[_from] = balances[_from].sub(_value);
/// _to might be a completely new address, so check and store if so
trackAddresses(_to);
balances[_to] = balances[_to].add(_value);
/// Emit the Transfer event
emit Transfer(_from, _to, _value);
return true;
}
/// @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
/// @param _tokenspender The address which will spend the funds.
/// @param _value The amount of tokens to be spent.
function approve(address _tokenspender, uint256 _value) public whenNotPaused notFrozen returns (bool) {
require(_tokenspender != address(0) && msg.sender != _tokenspender);
require(!isFrozen(_tokenspender));
/// To mitigate reentrancy race condition, set allowance for _tokenspender to 0
/// first and then set the new value
/// https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
require((_value == 0) || (allowances[msg.sender][_tokenspender] == 0));
/// Allow _tokenspender to transfer up to _value in tokens from msg.sender
allowances[msg.sender][_tokenspender] = _value;
/// Emit the Approval event
emit Approval(msg.sender, _tokenspender, _value);
return true;
}
/// @dev Function to check the amount of tokens that a spender can spend
/// @param _tokenholder Token owner account address
/// @param _tokenspender Account address authorized to transfer tokens
/// @return Amount of tokens still available to _tokenspender to transfer.
function allowance(address _tokenholder, address _tokenspender) public view whenNotPaused returns (uint256) {
require(!isFrozen(_tokenholder) && !isFrozen(_tokenspender));
return allowances[_tokenholder][_tokenspender];
}
}
// File: contracts/token/Aphrodite.sol
/*
* Created by: alexo (Big Deeper Advisors, Inc)
* For: Input Strategic Partners (ISP) and Intimate.io
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
* TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE
* SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
pragma solidity ^0.4.21;
contract Aphrodite is AuthorizedList, Authorized, RecoverCurrency, StandardToken {
event DonationAccepted(address indexed _from, uint256 _value);
/// @dev Constructor that gives msg.sender/creator all of existing tokens.
function Aphrodite() Authorized() public {
/// We need to initialize totalsupply and creator's balance
totalsupply = INITIAL_SUPPLY;
balances[msg.sender] = INITIAL_SUPPLY;
/// Record that the creator is a holder of this token
trackAddresses(msg.sender);
}
/// @dev If one prefers to not accept Ether, comment out the next iine out or put revert(); inside
function () public payable { emit DonationAccepted(msg.sender, msg.value); }
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenspender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tos","type":"address[]"},{"name":"_values","type":"uint256[]"}],"name":"bulkTransfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"returnAccounts","outputs":[{"name":"holders","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"balances","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"INITIAL_SUPPLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"},{"name":"_authorization","type":"bytes32"}],"name":"toggleAuthorization","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"recoverEther","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"allowances","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenholder","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalsupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"unfreezeAccount","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"numberAccounts","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"frozenAccounts","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"recoverToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_id","type":"uint256"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_symbol","type":"string"}],"name":"setSymbol","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"string"}],"name":"setName","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tokenholder","type":"address"},{"name":"_tokenspender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"},{"name":"_authorization","type":"bytes32"}],"name":"isAuthorized","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isFrozen","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"freezeAccount","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"DonationAccepted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_tokenholder","type":"address"},{"indexed":true,"name":"_tokenspender","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_tokenholder","type":"address"},{"indexed":true,"name":"_tokenrecipient","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_tokenholder","type":"address"},{"indexed":false,"name":"_howmany","type":"uint256"}],"name":"BulkTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_account","type":"address"}],"name":"Frozen","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_account","type":"address"}],"name":"Unfrozen","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"EtherRecovered","type":"event"}]Contract Creation Code
60606040526040805190810160405280600881526020017f696e74696d617465000000000000000000000000000000000000000000000000815250600290805190602001906200005192919062000359565b506040805190810160405280600381526020017f49544d0000000000000000000000000000000000000000000000000000000000815250600390805190602001906200009f92919062000359565b506a52b7d2dcc80cd2e40000006004556000600a60006101000a81548160ff0219169083151502179055503415620000d657600080fd5b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550600454600781905550600454600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620001e933620001ef6401000000000262003692176401000000009004565b62000437565b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16151562000356576001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff02191690831515021790555060088054806001018281620002b79190620003e0565b9160005260206000209001600083909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050600160088054905003600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b50565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200039c57805160ff1916838001178555620003cd565b82800160010185558215620003cd579182015b82811115620003cc578251825591602001919060010190620003af565b5b509050620003dc91906200040f565b5090565b8154818355818115116200040a578183600052602060002091820191016200040991906200040f565b5b505050565b6200043491905b808211156200043057600081600090555060010162000416565b5090565b90565b613ab580620004476000396000f300606060405260043610610180576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146101d0578063095ea7b31461025e578063153a1f3e146102b857806318160ddd1461036a5780631ef604851461039357806323b872dd146103fd57806327e235e3146104765780632ff2e9dc146104c3578063313ce567146104ec5780633b06a6fc1461051b5780633f4ba83a1461056157806352d8bfc21461058e57806355b6ed5c146105a35780635c975abb1461060f57806370a082311461063c57806372dd529b14610689578063788649ea146106b257806380059593146107035780638456cb591461072c578063860838a51461075957806395d89b41146107aa5780639be65a60146108385780639cc7f70814610871578063a9059cbb146108a8578063b84c824614610902578063c47f00271461095f578063dd62ed3e146109bc578063de11892b14610a28578063e583983614610a86578063f26c159f14610ad7575b3373ffffffffffffffffffffffffffffffffffffffff167f5d7b332009e5ea66f8cd6b2238038a62b1614c1a9df2ea82cb185ba7db1e047a346040518082815260200191505060405180910390a2005b34156101db57600080fd5b6101e3610b28565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610223578082015181840152602081019050610208565b50505050905090810190601f1680156102505780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561026957600080fd5b61029e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610bc6565b604051808215151515815260200191505060405180910390f35b34156102c357600080fd5b61035060048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050610e4c565b604051808215151515815260200191505060405180910390f35b341561037557600080fd5b61037d6113a1565b6040518082815260200191505060405180910390f35b341561039e57600080fd5b6103a66113c7565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156103e95780820151818401526020810190506103ce565b505050509050019250505060405180910390f35b341561040857600080fd5b61045c600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506115a5565b604051808215151515815260200191505060405180910390f35b341561048157600080fd5b6104ad600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611969565b6040518082815260200191505060405180910390f35b34156104ce57600080fd5b6104d6611981565b6040518082815260200191505060405180910390f35b34156104f757600080fd5b6104ff611987565b604051808260ff1660ff16815260200191505060405180910390f35b341561052657600080fd5b61055f600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356000191690602001909190505061198c565b005b341561056c57600080fd5b610574611d77565b604051808215151515815260200191505060405180910390f35b341561059957600080fd5b6105a1611f2c565b005b34156105ae57600080fd5b6105f9600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612134565b6040518082815260200191505060405180910390f35b341561061a57600080fd5b610622612159565b604051808215151515815260200191505060405180910390f35b341561064757600080fd5b610673600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061216c565b6040518082815260200191505060405180910390f35b341561069457600080fd5b61069c6121e6565b6040518082815260200191505060405180910390f35b34156106bd57600080fd5b6106e9600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506121ec565b604051808215151515815260200191505060405180910390f35b341561070e57600080fd5b61071661242f565b6040518082815260200191505060405180910390f35b341561073757600080fd5b61073f612586565b604051808215151515815260200191505060405180910390f35b341561076457600080fd5b610790600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061273c565b604051808215151515815260200191505060405180910390f35b34156107b557600080fd5b6107bd61275c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107fd5780820151818401526020810190506107e2565b50505050905090810190601f16801561082a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561084357600080fd5b61086f600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506127fa565b005b341561087c57600080fd5b6108926004808035906020019091905050612af8565b6040518082815260200191505060405180910390f35b34156108b357600080fd5b6108e8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612cd8565b604051808215151515815260200191505060405180910390f35b341561090d57600080fd5b61095d600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050612fba565b005b341561096a57600080fd5b6109ba600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505061311e565b005b34156109c757600080fd5b610a12600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050613282565b6040518082815260200191505060405180910390f35b3415610a3357600080fd5b610a6c600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356000191690602001909190505061334c565b604051808215151515815260200191505060405180910390f35b3415610a9157600080fd5b610abd600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506133bb565b604051808215151515815260200191505060405180910390f35b3415610ae257600080fd5b610b0e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050613411565b604051808215151515815260200191505060405180910390f35b60028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610bbe5780601f10610b9357610100808354040283529160200191610bbe565b820191906000526020600020905b815481529060010190602001808311610ba157829003601f168201915b505050505081565b6000600a60009054906101000a900460ff16151515610be457600080fd5b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610c3d57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610ca657508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b1515610cb157600080fd5b610cba836133bb565b151515610cc657600080fd5b6000821480610d5157506000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b1515610d5c57600080fd5b81600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000806000806000600a60009054906101000a900460ff16151515610e7057600080fd5b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610ec957600080fd5b3360405180807f42756c6b205472616e7366657220557365722e00000000000000000000000000815250601301905060405180910390206000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff168061100657506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b151561101157600080fd5b8751895114151561102157600080fd5b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205495506000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600094505b88518510156112ac5787858151811015156110c457fe5b90602001906020020151935088858151811015156110de57fe5b906020019060200201519250600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561112657600080fd5b85841115151561113557600080fd5b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415151561117057600080fd5b611183848761365590919063ffffffff16565b95506111d784600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461367190919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061122383613692565b888581518110151561123157fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a384806001019550506110ad565b85600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167f21f0d47b1fb5dbc8be145db4deb26c6217476813ca3bc738a0a3d831325469638a516040518082815260200191505060405180910390a26000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561139157611390336137f9565b5b6001965050505050505092915050565b6000600a60009054906101000a900460ff161515156113bf57600080fd5b600754905090565b6113cf613978565b3360405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff168061150c57506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b151561151757600080fd5b600880548060200260200160405190810160405280929190818152602001828054801561159957602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161154f575b50505050509250505090565b6000600a60009054906101000a900460ff161515156115c357600080fd5b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561161c57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561168557508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b151561169057600080fd5b611699846133bb565b1580156116ac57506116aa836133bb565b155b15156116b757600080fd5b61174682600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461365590919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061181882600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461365590919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061186483613692565b6118b682600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461367190919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b60066020528060005260406000206000915090505481565b60045481565b601281565b3360405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff1680611ac957506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b1515611ad457600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151515611b0f57600080fd5b60405180807f476f6464657373206f66204c6f7665210000000000000000000000000000000081525060100190506040518091039020600019168360001916148015611bf257506000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff16155b15611c9d5760008060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f417068726f646974652773204c6974746c652048656c7065722e000000000000815250601a01905060405180910390206000191660001916815260200190815260200160002060006101000a81548160ff0219169083151502179055505b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000846000191660001916815260200190815260200160002060009054906101000a900460ff16156000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000856000191660001916815260200190815260200160002060006101000a81548160ff02191690831515021790555050505050565b6000600a60009054906101000a900460ff161515611d9457600080fd5b3360405180807f417068726f646974652773204c6974746c652048656c7065722e000000000000815250601a01905060405180910390206000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff1680611ed157506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b1515611edc57600080fd5b7f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a16000600a60006101000a81548160ff02191690831515021790555060019250505090565b3360405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff168061206957506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b151561207457600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f1935050505015156120cb57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff167f8e274e42262a7f013b700b35c2b4629ccce1702f8fe83f8dfb7eacbb26a4382c3073ffffffffffffffffffffffffffffffffffffffff16316040518082815260200191505060405180910390a25050565b6005602052816000526040600020602052806000526040600020600091509150505481565b600a60009054906101000a900460ff1681565b6000600a60009054906101000a900460ff1615151561218a57600080fd5b612193826133bb565b15151561219f57600080fd5b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60075481565b60003360405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff168061232b57506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b151561233657600080fd5b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612428576000600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508373ffffffffffffffffffffffffffffffffffffffff167f4feb53e305297ab8fb8f3420c95ea04737addc254a7270d8fc4605d2b9c61dba60405160405180910390a2600192505b5050919050565b60003360405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff168061256e57506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b151561257957600080fd5b6008805490509250505090565b6000600a60009054906101000a900460ff161515156125a457600080fd5b3360405180807f417068726f646974652773204c6974746c652048656c7065722e000000000000815250601a01905060405180910390206000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff16806126e157506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b15156126ec57600080fd5b7f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a16001600a60006101000a81548160ff02191690831515021790555060019250505090565b600b6020528060005260406000206000915054906101000a900460ff1681565b60038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156127f25780601f106127c7576101008083540402835291602001916127f2565b820191906000526020600020905b8154815290600101906020018083116127d557829003601f168201915b505050505081565b6000803360405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff168061293a57506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b151561294557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415151561298157600080fd5b8493508373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1515612a1e57600080fd5b5af11515612a2b57600080fd5b5050506040518051905092508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33856040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1515612ad957600080fd5b5af11515612ae657600080fd5b50505060405180519050505050505050565b60003360405180807f417068726f646974652773204c6974746c652048656c7065722e000000000000815250601a01905060405180910390206000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff1680612c3757506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b1515612c4257600080fd5b60088054905084101515612c5557600080fd5b60066000600886815481101515612c6857fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205492505050919050565b6000600a60009054906101000a900460ff16151515612cf657600080fd5b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515612d4f57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515612d8b57600080fd5b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151515612dc657600080fd5b612e1882600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461365590919063ffffffff16565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415612ead57612eac336137f9565b5b612eb683613692565b612f0882600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461367190919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b3360405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff16806130f757506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b151561310257600080fd5b826003908051906020019061311892919061398c565b50505050565b3360405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff168061325b57506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b151561326657600080fd5b826002908051906020019061327c92919061398c565b50505050565b6000600a60009054906101000a900460ff161515156132a057600080fd5b6132a9836133bb565b1580156132bc57506132ba826133bb565b155b15156132c757600080fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000836000191660001916815260200190815260200160002060009054906101000a900460ff16905092915050565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60003360405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff168061355057506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b151561355b57600080fd5b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561364e576001600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508373ffffffffffffffffffffffffffffffffffffffff167f8a5c4736a33c7b7f29a2c34ea9ff9608afc5718d56f6fd6dcbd2d3711a1a491360405160405180910390a2600192505b5050919050565b600082821115151561366657600080fd5b818303905092915050565b600080828401905083811015151561368857600080fd5b8091505092915050565b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1615156137f6576001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff021916908315150217905550600880548060010182816137579190613a0c565b9160005260206000209001600083909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050600160088054905003600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b50565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490506008805490508110151561385357600080fd5b6001600880549050038114151561390057600860016008805490500381548110151561387b57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008828154811015156138b657fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b60088054809190600190036139159190613a38565b50600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080820160006101000a81549060ff0219169055600182016000905550505050565b602060405190810160405280600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106139cd57805160ff19168380011785556139fb565b828001600101855582156139fb579182015b828111156139fa5782518255916020019190600101906139df565b5b509050613a089190613a64565b5090565b815481835581811511613a3357818360005260206000209182019101613a329190613a64565b5b505050565b815481835581811511613a5f57818360005260206000209182019101613a5e9190613a64565b5b505050565b613a8691905b80821115613a82576000816000905550600101613a6a565b5090565b905600a165627a7a72305820149c2c383c3b9dddf3cf0b8cff3f407c1386fb950e40b8061526f8944ba98dd40029
Deployed Bytecode
0x606060405260043610610180576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146101d0578063095ea7b31461025e578063153a1f3e146102b857806318160ddd1461036a5780631ef604851461039357806323b872dd146103fd57806327e235e3146104765780632ff2e9dc146104c3578063313ce567146104ec5780633b06a6fc1461051b5780633f4ba83a1461056157806352d8bfc21461058e57806355b6ed5c146105a35780635c975abb1461060f57806370a082311461063c57806372dd529b14610689578063788649ea146106b257806380059593146107035780638456cb591461072c578063860838a51461075957806395d89b41146107aa5780639be65a60146108385780639cc7f70814610871578063a9059cbb146108a8578063b84c824614610902578063c47f00271461095f578063dd62ed3e146109bc578063de11892b14610a28578063e583983614610a86578063f26c159f14610ad7575b3373ffffffffffffffffffffffffffffffffffffffff167f5d7b332009e5ea66f8cd6b2238038a62b1614c1a9df2ea82cb185ba7db1e047a346040518082815260200191505060405180910390a2005b34156101db57600080fd5b6101e3610b28565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610223578082015181840152602081019050610208565b50505050905090810190601f1680156102505780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561026957600080fd5b61029e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610bc6565b604051808215151515815260200191505060405180910390f35b34156102c357600080fd5b61035060048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050610e4c565b604051808215151515815260200191505060405180910390f35b341561037557600080fd5b61037d6113a1565b6040518082815260200191505060405180910390f35b341561039e57600080fd5b6103a66113c7565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156103e95780820151818401526020810190506103ce565b505050509050019250505060405180910390f35b341561040857600080fd5b61045c600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506115a5565b604051808215151515815260200191505060405180910390f35b341561048157600080fd5b6104ad600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611969565b6040518082815260200191505060405180910390f35b34156104ce57600080fd5b6104d6611981565b6040518082815260200191505060405180910390f35b34156104f757600080fd5b6104ff611987565b604051808260ff1660ff16815260200191505060405180910390f35b341561052657600080fd5b61055f600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356000191690602001909190505061198c565b005b341561056c57600080fd5b610574611d77565b604051808215151515815260200191505060405180910390f35b341561059957600080fd5b6105a1611f2c565b005b34156105ae57600080fd5b6105f9600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612134565b6040518082815260200191505060405180910390f35b341561061a57600080fd5b610622612159565b604051808215151515815260200191505060405180910390f35b341561064757600080fd5b610673600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061216c565b6040518082815260200191505060405180910390f35b341561069457600080fd5b61069c6121e6565b6040518082815260200191505060405180910390f35b34156106bd57600080fd5b6106e9600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506121ec565b604051808215151515815260200191505060405180910390f35b341561070e57600080fd5b61071661242f565b6040518082815260200191505060405180910390f35b341561073757600080fd5b61073f612586565b604051808215151515815260200191505060405180910390f35b341561076457600080fd5b610790600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061273c565b604051808215151515815260200191505060405180910390f35b34156107b557600080fd5b6107bd61275c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107fd5780820151818401526020810190506107e2565b50505050905090810190601f16801561082a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561084357600080fd5b61086f600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506127fa565b005b341561087c57600080fd5b6108926004808035906020019091905050612af8565b6040518082815260200191505060405180910390f35b34156108b357600080fd5b6108e8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612cd8565b604051808215151515815260200191505060405180910390f35b341561090d57600080fd5b61095d600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050612fba565b005b341561096a57600080fd5b6109ba600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505061311e565b005b34156109c757600080fd5b610a12600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050613282565b6040518082815260200191505060405180910390f35b3415610a3357600080fd5b610a6c600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356000191690602001909190505061334c565b604051808215151515815260200191505060405180910390f35b3415610a9157600080fd5b610abd600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506133bb565b604051808215151515815260200191505060405180910390f35b3415610ae257600080fd5b610b0e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050613411565b604051808215151515815260200191505060405180910390f35b60028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610bbe5780601f10610b9357610100808354040283529160200191610bbe565b820191906000526020600020905b815481529060010190602001808311610ba157829003601f168201915b505050505081565b6000600a60009054906101000a900460ff16151515610be457600080fd5b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610c3d57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610ca657508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b1515610cb157600080fd5b610cba836133bb565b151515610cc657600080fd5b6000821480610d5157506000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b1515610d5c57600080fd5b81600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000806000806000600a60009054906101000a900460ff16151515610e7057600080fd5b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610ec957600080fd5b3360405180807f42756c6b205472616e7366657220557365722e00000000000000000000000000815250601301905060405180910390206000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff168061100657506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b151561101157600080fd5b8751895114151561102157600080fd5b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205495506000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600094505b88518510156112ac5787858151811015156110c457fe5b90602001906020020151935088858151811015156110de57fe5b906020019060200201519250600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561112657600080fd5b85841115151561113557600080fd5b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415151561117057600080fd5b611183848761365590919063ffffffff16565b95506111d784600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461367190919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061122383613692565b888581518110151561123157fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a384806001019550506110ad565b85600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167f21f0d47b1fb5dbc8be145db4deb26c6217476813ca3bc738a0a3d831325469638a516040518082815260200191505060405180910390a26000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561139157611390336137f9565b5b6001965050505050505092915050565b6000600a60009054906101000a900460ff161515156113bf57600080fd5b600754905090565b6113cf613978565b3360405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff168061150c57506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b151561151757600080fd5b600880548060200260200160405190810160405280929190818152602001828054801561159957602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161154f575b50505050509250505090565b6000600a60009054906101000a900460ff161515156115c357600080fd5b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561161c57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561168557508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b151561169057600080fd5b611699846133bb565b1580156116ac57506116aa836133bb565b155b15156116b757600080fd5b61174682600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461365590919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061181882600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461365590919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061186483613692565b6118b682600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461367190919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b60066020528060005260406000206000915090505481565b60045481565b601281565b3360405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff1680611ac957506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b1515611ad457600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151515611b0f57600080fd5b60405180807f476f6464657373206f66204c6f7665210000000000000000000000000000000081525060100190506040518091039020600019168360001916148015611bf257506000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff16155b15611c9d5760008060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f417068726f646974652773204c6974746c652048656c7065722e000000000000815250601a01905060405180910390206000191660001916815260200190815260200160002060006101000a81548160ff0219169083151502179055505b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000846000191660001916815260200190815260200160002060009054906101000a900460ff16156000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000856000191660001916815260200190815260200160002060006101000a81548160ff02191690831515021790555050505050565b6000600a60009054906101000a900460ff161515611d9457600080fd5b3360405180807f417068726f646974652773204c6974746c652048656c7065722e000000000000815250601a01905060405180910390206000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff1680611ed157506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b1515611edc57600080fd5b7f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a16000600a60006101000a81548160ff02191690831515021790555060019250505090565b3360405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff168061206957506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b151561207457600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f1935050505015156120cb57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff167f8e274e42262a7f013b700b35c2b4629ccce1702f8fe83f8dfb7eacbb26a4382c3073ffffffffffffffffffffffffffffffffffffffff16316040518082815260200191505060405180910390a25050565b6005602052816000526040600020602052806000526040600020600091509150505481565b600a60009054906101000a900460ff1681565b6000600a60009054906101000a900460ff1615151561218a57600080fd5b612193826133bb565b15151561219f57600080fd5b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60075481565b60003360405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff168061232b57506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b151561233657600080fd5b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612428576000600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508373ffffffffffffffffffffffffffffffffffffffff167f4feb53e305297ab8fb8f3420c95ea04737addc254a7270d8fc4605d2b9c61dba60405160405180910390a2600192505b5050919050565b60003360405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff168061256e57506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b151561257957600080fd5b6008805490509250505090565b6000600a60009054906101000a900460ff161515156125a457600080fd5b3360405180807f417068726f646974652773204c6974746c652048656c7065722e000000000000815250601a01905060405180910390206000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff16806126e157506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b15156126ec57600080fd5b7f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a16001600a60006101000a81548160ff02191690831515021790555060019250505090565b600b6020528060005260406000206000915054906101000a900460ff1681565b60038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156127f25780601f106127c7576101008083540402835291602001916127f2565b820191906000526020600020905b8154815290600101906020018083116127d557829003601f168201915b505050505081565b6000803360405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff168061293a57506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b151561294557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415151561298157600080fd5b8493508373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1515612a1e57600080fd5b5af11515612a2b57600080fd5b5050506040518051905092508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33856040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1515612ad957600080fd5b5af11515612ae657600080fd5b50505060405180519050505050505050565b60003360405180807f417068726f646974652773204c6974746c652048656c7065722e000000000000815250601a01905060405180910390206000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff1680612c3757506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b1515612c4257600080fd5b60088054905084101515612c5557600080fd5b60066000600886815481101515612c6857fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205492505050919050565b6000600a60009054906101000a900460ff16151515612cf657600080fd5b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515612d4f57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515612d8b57600080fd5b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151515612dc657600080fd5b612e1882600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461365590919063ffffffff16565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415612ead57612eac336137f9565b5b612eb683613692565b612f0882600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461367190919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b3360405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff16806130f757506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b151561310257600080fd5b826003908051906020019061311892919061398c565b50505050565b3360405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff168061325b57506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b151561326657600080fd5b826002908051906020019061327c92919061398c565b50505050565b6000600a60009054906101000a900460ff161515156132a057600080fd5b6132a9836133bb565b1580156132bc57506132ba826133bb565b155b15156132c757600080fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000836000191660001916815260200190815260200160002060009054906101000a900460ff16905092915050565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60003360405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff168061355057506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b151561355b57600080fd5b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561364e576001600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508373ffffffffffffffffffffffffffffffffffffffff167f8a5c4736a33c7b7f29a2c34ea9ff9608afc5718d56f6fd6dcbd2d3711a1a491360405160405180910390a2600192505b5050919050565b600082821115151561366657600080fd5b818303905092915050565b600080828401905083811015151561368857600080fd5b8091505092915050565b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1615156137f6576001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff021916908315150217905550600880548060010182816137579190613a0c565b9160005260206000209001600083909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050600160088054905003600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b50565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490506008805490508110151561385357600080fd5b6001600880549050038114151561390057600860016008805490500381548110151561387b57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008828154811015156138b657fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b60088054809190600190036139159190613a38565b50600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080820160006101000a81549060ff0219169055600182016000905550505050565b602060405190810160405280600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106139cd57805160ff19168380011785556139fb565b828001600101855582156139fb579182015b828111156139fa5782518255916020019190600101906139df565b5b509050613a089190613a64565b5090565b815481835581811511613a3357818360005260206000209182019101613a329190613a64565b5b505050565b815481835581811511613a5f57818360005260206000209182019101613a5e9190613a64565b5b505050565b613a8691905b80821115613a82576000816000905550600101613a6a565b5090565b905600a165627a7a72305820149c2c383c3b9dddf3cf0b8cff3f407c1386fb950e40b8061526f8944ba98dd40029
Swarm Source
bzzr://149c2c383c3b9dddf3cf0b8cff3f407c1386fb950e40b8061526f8944ba98dd4
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.
Add Token to MetaMask (Web3)