ERC-20
Overview
Max Total Supply
1,000,000,000 PBTT
Holders
14,142
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 3 Decimals)
Balance
1 PBTTValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
PBTTToken
Compiler Version
v0.4.24+commit.e67f0147
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-08-10 */ /* solium-disable-next-line linebreak-style */ pragma solidity ^0.4.24; // Implements a simple ownership model with 2-phase transfer. contract Owned { address public owner; address public proposedOwner; constructor() public { owner = msg.sender; } modifier onlyOwner() { require(isOwner(msg.sender) == true, 'Require owner to execute transaction'); _; } function isOwner(address _address) public view returns (bool) { return (_address == owner); } function initiateOwnershipTransfer(address _proposedOwner) public onlyOwner returns (bool success) { require(_proposedOwner != address(0), 'Require proposedOwner != address(0)'); require(_proposedOwner != address(this), 'Require proposedOwner != address(this)'); require(_proposedOwner != owner, 'Require proposedOwner != owner'); proposedOwner = _proposedOwner; return true; } function completeOwnershipTransfer() public returns (bool success) { require(msg.sender == proposedOwner, 'Require msg.sender == proposedOwner'); owner = msg.sender; proposedOwner = address(0); return true; } } // ---------------------------------------------------------------------------- // OpsManaged - Implements an Owner and Ops Permission Model // ---------------------------------------------------------------------------- contract OpsManaged is Owned { address public opsAddress; constructor() public Owned() { } modifier onlyOwnerOrOps() { require(isOwnerOrOps(msg.sender), 'Require only owner or ops'); _; } function isOps(address _address) public view returns (bool) { return (opsAddress != address(0) && _address == opsAddress); } function isOwnerOrOps(address _address) public view returns (bool) { return (isOwner(_address) || isOps(_address)); } function setOpsAddress(address _newOpsAddress) public onlyOwner returns (bool success) { require(_newOpsAddress != owner, 'Require newOpsAddress != owner'); require(_newOpsAddress != address(this), 'Require newOpsAddress != address(this)'); opsAddress = _newOpsAddress; return true; } } // ---------------------------------------------------------------------------- // Finalizable - Implement Finalizable (Crowdsale) model // ---------------------------------------------------------------------------- contract Finalizable is OpsManaged { FinalizableState public finalized; enum FinalizableState { None, Finalized } event Finalized(); constructor() public OpsManaged() { finalized = FinalizableState.None; } function finalize() public onlyOwner returns (bool success) { require(finalized == FinalizableState.None, 'Require !finalized'); finalized = FinalizableState.Finalized; emit Finalized(); return true; } } // ---------------------------------------------------------------------------- // Math - Implement Math Library // ---------------------------------------------------------------------------- library Math { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 r = a + b; require(r >= a, 'Require r >= a'); return r; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(a >= b, 'Require a >= b'); return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 r = a * b; require(r / a == b, 'Require r / a == b'); return r; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } } // ---------------------------------------------------------------------------- // ERC20Interface - Standard ERC20 Interface Definition // Based on the final ERC20 specification at: // https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20-token-standard.md // ---------------------------------------------------------------------------- contract ERC20Interface { event Transfer(address indexed _from, address indexed _to, uint256 _value); event Approval(address indexed _owner, address indexed _spender, uint256 _value); function balanceOf(address _owner) public view returns (uint256 balance); function allowance(address _owner, address _spender) public view returns (uint256 remaining); function transfer(address _to, uint256 _value) public returns (bool success); function transferFrom(address _from, address _to, uint256 _value) public returns (bool success); function approve(address _spender, uint256 _value) public returns (bool success); } // ---------------------------------------------------------------------------- // ERC20Token - Standard ERC20 Implementation // ---------------------------------------------------------------------------- contract ERC20Token is ERC20Interface { using Math for uint256; string public name; string public symbol; uint8 public decimals; uint256 public totalSupply; mapping(address => uint256) internal balances; mapping(address => mapping (address => uint256)) allowed; constructor(string _name, string _symbol, uint8 _decimals, uint256 _totalSupply, address _initialTokenHolder) public { name = _name; symbol = _symbol; decimals = _decimals; totalSupply = _totalSupply; // The initial balance of tokens is assigned to the given token holder address. balances[_initialTokenHolder] = _totalSupply; allowed[_initialTokenHolder][_initialTokenHolder] = balances[_initialTokenHolder]; // Per EIP20, the constructor should fire a Transfer event if tokens are assigned to an account. emit Transfer(0x0, _initialTokenHolder, _totalSupply); } function balanceOf(address _owner) public view returns (uint256 balance) { return balances[_owner]; } function allowance(address _owner, address _spender) public view returns (uint256 remaining) { return allowed[_owner][_spender]; } function transfer(address _to, uint256 _value) public returns (bool success) { if (balances[msg.sender] >= _value && balances[_to] + _value > balances[_to]) { balances[msg.sender] = balances[msg.sender].sub(_value); balances[_to] = balances[_to].add(_value); emit Transfer(msg.sender, _to, _value); return true; } else { return false; } } function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) { if (balances[_from] >= _value && allowed[_from][msg.sender] >= _value && balances[_to] + _value > balances[_to]) { balances[_from] = balances[_from].sub(_value); allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value); balances[_to] = balances[_to].add(_value); emit Transfer(_from, _to, _value); return true; } else { return false; } } function approve(address _spender, uint256 _value) public returns (bool success) { allowed[msg.sender][_spender] = _value; emit Approval(msg.sender, _spender, _value); return true; } } // ---------------------------------------------------------------------------- // FinalizableToken - Extension to ERC20Token with ops and finalization // ---------------------------------------------------------------------------- // // ERC20 token with the following additions: // 1. Owner/Ops Ownership // 2. Finalization // contract FinalizableToken is ERC20Token, OpsManaged, Finalizable { using Math for uint256; // The constructor will assign the initial token supply to the owner (msg.sender). constructor(string _name, string _symbol, uint8 _decimals, uint256 _totalSupply) public ERC20Token(_name, _symbol, _decimals, _totalSupply, msg.sender) Finalizable() { } function transfer(address _to, uint256 _value) public returns (bool success) { validateTransfer(msg.sender, _to); return super.transfer(_to, _value); } function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) { validateTransfer(msg.sender, _to); return super.transferFrom(_from, _to, _value); } function validateTransfer(address _sender, address _to) internal view { // Once the token is finalized, everybody can transfer tokens. if (finalized == FinalizableState.Finalized) { return; } if (isOwner(_to)) { return; } // Before the token is finalized, only owner and ops are allowed to initiate transfers. // This allows them to move tokens while the sale is still in private sale. require(isOwnerOrOps(_sender), 'Require is owner or ops allowed to initiate transfer'); } } // ---------------------------------------------------------------------------- // PBTT Token Contract Configuration // ---------------------------------------------------------------------------- contract PBTTTokenConfig { string internal constant TOKEN_SYMBOL = 'PBTT'; string internal constant TOKEN_NAME = 'Purple Butterfly Token (PBTT)'; uint8 internal constant TOKEN_DECIMALS = 3; uint256 internal constant DECIMALSFACTOR = 10**uint256(TOKEN_DECIMALS); uint256 internal constant TOKEN_TOTALSUPPLY = 1000000000 * DECIMALSFACTOR; } // ---------------------------------------------------------------------------- // PBTT Token Contract // ---------------------------------------------------------------------------- contract PBTTToken is FinalizableToken, PBTTTokenConfig { uint256 public buyPriceEth = 0.0002 ether; // Buy price for PBTT uint256 public sellPriceEth = 0.0001 ether; // Sell price for PBTT uint256 public gasForPBTT = 0.005 ether; // Eth from contract against PBTT to pay tx (10 times sellPriceEth) uint256 public PBTTForGas = 1; // PBTT to contract against eth to pay tx uint256 public gasReserve = 1 ether; // Eth amount that remains in the contract for gas and can't be sold // Minimal eth balance of sender and recipient, ensure that no account receiving // the token has less than the necessary Ether to pay the fees uint256 public minBalanceForAccounts = 0.005 ether; uint256 public totalTokenSold = 0; enum HaltState { Unhalted, Halted } HaltState public halts; constructor() public FinalizableToken(TOKEN_NAME, TOKEN_SYMBOL, TOKEN_DECIMALS, TOKEN_TOTALSUPPLY) { halts = HaltState.Unhalted; finalized = FinalizableState.None; } function transfer(address _to, uint256 _value) public returns (bool success) { require(halts == HaltState.Unhalted, 'Require smart contract is not in halted state'); // Prevents drain and spam require(_value >= PBTTForGas, 'Token amount is not enough to transfer'); if (!isOwnerOrOps(msg.sender) && _to == address(this)) { // Trade PBTT against eth by sending to the token contract sellPBTTAgainstEther(_value); return true; } else { if(isOwnerOrOps(msg.sender)) { return super.transferFrom(owner, _to, _value); } return super.transfer(_to, _value); } } function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) { require(halts == HaltState.Unhalted, 'Require smart contract is not in halted state'); return super.transferFrom(_from, _to, _value); } //Change PPBT Selling and Buy Price function setEtherPrices(uint256 newBuyPriceEth, uint256 newSellPriceEth) public onlyOwnerOrOps { // Set prices to buy and sell PBTT buyPriceEth = newBuyPriceEth; sellPriceEth = newSellPriceEth; } function setGasForPBTT(uint256 newGasAmountInWei) public onlyOwnerOrOps { gasForPBTT = newGasAmountInWei; } //set PBTT to contract against eth to pay tx function setPBTTForGas(uint256 newPBTTAmount) public onlyOwnerOrOps { PBTTForGas = newPBTTAmount; } function setGasReserve(uint256 newGasReserveInWei) public onlyOwnerOrOps { gasReserve = newGasReserveInWei; } function setMinBalance(uint256 minimumBalanceInWei) public onlyOwnerOrOps { minBalanceForAccounts = minimumBalanceInWei; } function getTokenRemaining() public view returns (uint256 total){ return (TOKEN_TOTALSUPPLY.div(DECIMALSFACTOR)).sub(totalTokenSold); } /* User buys PBTT and pays in Ether */ function buyPBTTAgainstEther() private returns (uint256 tokenAmount) { // Avoid dividing 0, sending small amounts and spam require(buyPriceEth > 0, 'buyPriceEth must be > 0'); require(msg.value >= buyPriceEth, 'Transfer money must be enough for 1 token'); // Calculate the amount of PBTT tokenAmount = (msg.value.mul(DECIMALSFACTOR)).div(buyPriceEth); // Check if it has enough to sell require(balances[owner] >= tokenAmount, 'Not enough token balance'); // Add the amount to buyer's balance balances[msg.sender] = balances[msg.sender].add(tokenAmount); // Subtract amount from PBTT balance balances[owner] = balances[owner].sub(tokenAmount); // Execute an event reflecting the change emit Transfer(owner, msg.sender, tokenAmount); totalTokenSold = totalTokenSold + tokenAmount; return tokenAmount; } function sellPBTTAgainstEther(uint256 amount) private returns (uint256 revenue) { // Avoid selling and spam require(sellPriceEth > 0, 'sellPriceEth must be > 0'); require(amount >= PBTTForGas, 'Sell token amount must be larger than PBTTForGas value'); // Check if the sender has enough to sell require(balances[msg.sender] >= amount, 'Token balance is not enough to sold'); require(msg.sender.balance >= minBalanceForAccounts, 'Seller balance must be enough to pay the transaction fee'); // Revenue = eth that will be send to the user revenue = (amount.div(DECIMALSFACTOR)).mul(sellPriceEth); // Keep min amount of eth in contract to provide gas for transactions uint256 remaining = address(this).balance.sub(revenue); require(remaining >= gasReserve, 'Remaining contract balance is not enough for reserved'); // Add the token amount to owner balance balances[owner] = balances[owner].add(amount); // Subtract the amount from seller's token balance balances[msg.sender] = balances[msg.sender].sub(amount); // transfer eth // 'msg.sender.transfer' means the contract sends ether to 'msg.sender' // It's important to do this last to avoid recursion attacks msg.sender.transfer(revenue); // Execute an event reflecting on the change emit Transfer(msg.sender, owner, amount); return revenue; } // Allows a token holder to burn tokens. Once burned, tokens are permanently // removed from the total supply. function burn(uint256 _amount) public returns (bool success) { require(_amount > 0, 'Token amount to burn must be larger than 0'); address account = msg.sender; require(_amount <= balanceOf(account), 'You cannot burn token you dont have'); balances[account] = balances[account].sub(_amount); totalSupply = totalSupply.sub(_amount); return true; } // Allows the owner to reclaim tokens that are assigned to the token contract itself. function reclaimTokens() public onlyOwner returns (bool success) { address account = address(this); uint256 amount = balanceOf(account); if (amount == 0) { return false; } balances[account] = balances[account].sub(amount); balances[owner] = balances[owner].add(amount); return true; } // Allows the owner to withdraw that are assigned to the token contract itself. function withdrawFundToOwner() public onlyOwner { // transfer to owner uint256 eth = address(this).balance; owner.transfer(eth); } // Allows the owner to withdraw all fund from contract to owner's specific adress function withdrawFundToAddress(address _ownerOtherAdress) public onlyOwner { // transfer to owner uint256 eth = address(this).balance; _ownerOtherAdress.transfer(eth); } /* Halts or unhalts direct trades without the sell/buy functions below */ function haltsTrades() public onlyOwnerOrOps returns (bool success) { halts = HaltState.Halted; return true; } function unhaltsTrades() public onlyOwnerOrOps returns (bool success) { halts = HaltState.Unhalted; return true; } function() public payable { if(msg.sender != owner) { require(finalized == FinalizableState.Finalized, 'Require smart contract is finalized'); require(halts == HaltState.Unhalted, 'Require smart contract is not halted'); buyPBTTAgainstEther(); } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"sellPriceEth","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newPBTTAmount","type":"uint256"}],"name":"setPBTTForGas","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newGasAmountInWei","type":"uint256"}],"name":"setGasForPBTT","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"PBTTForGas","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newGasReserveInWei","type":"uint256"}],"name":"setGasReserve","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unhaltsTrades","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"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":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"gasForPBTT","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"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":"withdrawFundToOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"reclaimTokens","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"}],"name":"burn","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"minBalanceForAccounts","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newBuyPriceEth","type":"uint256"},{"name":"newSellPriceEth","type":"uint256"}],"name":"setEtherPrices","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"finalize","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"buyPriceEth","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOpsAddress","type":"address"}],"name":"setOpsAddress","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"opsAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"halts","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"isOwnerOrOps","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"finalized","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalTokenSold","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_proposedOwner","type":"address"}],"name":"initiateOwnershipTransfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"haltsTrades","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_ownerOtherAdress","type":"address"}],"name":"withdrawFundToAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"minimumBalanceInWei","type":"uint256"}],"name":"setMinBalance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"proposedOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getTokenRemaining","outputs":[{"name":"total","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"completeOwnershipTransfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"gasReserve","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"isOps","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[],"name":"Finalized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_spender","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Approval","type":"event"}]
Contract Creation Code
608060405265b5e620f48000600955655af3107a4000600a556611c37937e08000600b556001600c55670de0b6b3a7640000600d556611c37937e08000600e556000600f553480156200005157600080fd5b50604080518082018252601d81527f507572706c6520427574746572666c7920546f6b656e2028504254542900000060208083019182528351808501909452600484527f504254540000000000000000000000000000000000000000000000000000000090840152815191929160039164e8d4a510009185918591859185913391620000e19160009190620001a7565b508351620000f7906001906020870190620001a7565b506002805460ff191660ff85161790556003829055600160a060020a0381166000818152600460209081526040808320869055600582528083208252808320869055805186815290517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a3505060068054600160a060020a0319163317905550506008805460a060020a60ff021916905550506010805460ff19169055506200024c915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001ea57805160ff19168380011785556200021a565b828001600101855582156200021a579182015b828111156200021a578251825591602001919060010190620001fd565b50620002289291506200022c565b5090565b6200024991905b8082111562000228576000815560010162000233565b90565b61231d806200025c6000396000f3006080604052600436106101ed5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663015129a1811461032d57806302259b07146103545780630615f7c31461036c57806306a865391461038457806306fdde0314610399578063095ea7b3146104235780630d5260e71461045b5780631609a3971461047357806318160ddd1461048857806323b872dd1461049d57806328effe67146104c75780632f54bf6e146104dc578063313ce567146104fd57806339909f0b146105285780633c54caa51461053d57806342966c681461055257806347f1d8d71461056a5780634b6a33341461057f5780634bb278f31461059a5780635639bb3c146105af578063707789c5146105c457806370a08231146105e55780638da5cb5b146106065780638ea643761461063757806395d89b411461064c578063a5a899ec14610661578063a9059cbb1461069a578063adcf59ee146106be578063b3f05b97146106df578063b5f7f636146106f4578063c0b6f56114610709578063c27753471461072a578063c729a5671461073f578063c91d956c14610760578063d153b60c14610778578063d17866101461078d578063dd62ed3e146107a2578063e71a7811146107c9578063eea7570e146107de578063ef326c6d146107f3575b600654600160a060020a0316331461032b57600160085460a060020a900460ff16600181111561021957fe5b14610294576040805160e560020a62461bcd02815260206004820152602360248201527f5265717569726520736d61727420636f6e74726163742069732066696e616c6960448201527f7a65640000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600060105460ff1660018111156102a757fe5b14610321576040805160e560020a62461bcd028152602060048201526024808201527f5265717569726520736d61727420636f6e7472616374206973206e6f7420686160448201527f6c74656400000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b610329610814565b505b005b34801561033957600080fd5b50610342610a38565b60408051918252519081900360200190f35b34801561036057600080fd5b5061032b600435610a3e565b34801561037857600080fd5b5061032b600435610a90565b34801561039057600080fd5b50610342610ae2565b3480156103a557600080fd5b506103ae610ae8565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103e85781810151838201526020016103d0565b50505050905090810190601f1680156104155780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561042f57600080fd5b50610447600160a060020a0360043516602435610b76565b604080519115158252519081900360200190f35b34801561046757600080fd5b5061032b600435610bdd565b34801561047f57600080fd5b50610447610c2f565b34801561049457600080fd5b50610342610c9a565b3480156104a957600080fd5b50610447600160a060020a0360043581169060243516604435610ca0565b3480156104d357600080fd5b50610342610d44565b3480156104e857600080fd5b50610447600160a060020a0360043516610d4a565b34801561050957600080fd5b50610512610d5e565b6040805160ff9092168252519081900360200190f35b34801561053457600080fd5b5061032b610d67565b34801561054957600080fd5b50610447610e08565b34801561055e57600080fd5b50610447600435610f10565b34801561057657600080fd5b50610342611079565b34801561058b57600080fd5b5061032b60043560243561107f565b3480156105a657600080fd5b506104476110d7565b3480156105bb57600080fd5b506103426111fa565b3480156105d057600080fd5b50610447600160a060020a0360043516611200565b3480156105f157600080fd5b50610342600160a060020a0360043516611380565b34801561061257600080fd5b5061061b61139b565b60408051600160a060020a039092168252519081900360200190f35b34801561064357600080fd5b5061061b6113aa565b34801561065857600080fd5b506103ae6113b9565b34801561066d57600080fd5b50610676611413565b6040518082600181111561068657fe5b60ff16815260200191505060405180910390f35b3480156106a657600080fd5b50610447600160a060020a036004351660243561141c565b3480156106ca57600080fd5b50610447600160a060020a0360043516611597565b3480156106eb57600080fd5b506106766115b1565b34801561070057600080fd5b506103426115c1565b34801561071557600080fd5b50610447600160a060020a03600435166115c7565b34801561073657600080fd5b506104476117cd565b34801561074b57600080fd5b5061032b600160a060020a036004351661182f565b34801561076c57600080fd5b5061032b6004356118cf565b34801561078457600080fd5b5061061b611921565b34801561079957600080fd5b50610342611930565b3480156107ae57600080fd5b50610342600160a060020a0360043581169060243516611962565b3480156107d557600080fd5b5061044761198d565b3480156107ea57600080fd5b50610342611a49565b3480156107ff57600080fd5b50610447600160a060020a0360043516611a4f565b600080600954111515610871576040805160e560020a62461bcd02815260206004820152601760248201527f6275795072696365457468206d757374206265203e2030000000000000000000604482015290519081900360640190fd5b6009543410156108f1576040805160e560020a62461bcd02815260206004820152602960248201527f5472616e73666572206d6f6e6579206d75737420626520656e6f75676820666f60448201527f72203120746f6b656e0000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6009546109169061090a346103e863ffffffff611a7c16565b9063ffffffff611b0016565b600654600160a060020a031660009081526004602052604090205490915081111561098b576040805160e560020a62461bcd02815260206004820152601860248201527f4e6f7420656e6f75676820746f6b656e2062616c616e63650000000000000000604482015290519081900360640190fd5b336000908152600460205260409020546109ab908263ffffffff611b1516565b3360009081526004602052604080822092909255600654600160a060020a0316815220546109df908263ffffffff611b7216565b60068054600160a060020a0390811660009081526004602090815260409182902094909455915482518581529251339491909216926000805160206122d2833981519152929081900390910190a3600f80548201905590565b600a5481565b610a4733611597565b1515610a8b576040805160e560020a62461bcd02815260206004820152601960248201526000805160206122b2833981519152604482015290519081900360640190fd5b600c55565b610a9933611597565b1515610add576040805160e560020a62461bcd02815260206004820152601960248201526000805160206122b2833981519152604482015290519081900360640190fd5b600b55565b600c5481565b6000805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610b6e5780601f10610b4357610100808354040283529160200191610b6e565b820191906000526020600020905b815481529060010190602001808311610b5157829003601f168201915b505050505081565b336000818152600560209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b610be633611597565b1515610c2a576040805160e560020a62461bcd02815260206004820152601960248201526000805160206122b2833981519152604482015290519081900360640190fd5b600d55565b6000610c3a33611597565b1515610c7e576040805160e560020a62461bcd02815260206004820152601960248201526000805160206122b2833981519152604482015290519081900360640190fd5b601080546000919060ff19166001835b02179055506001905090565b60035481565b60008060105460ff166001811115610cb457fe5b14610d2f576040805160e560020a62461bcd02815260206004820152602d60248201527f5265717569726520736d61727420636f6e7472616374206973206e6f7420696e60448201527f2068616c74656420737461746500000000000000000000000000000000000000606482015290519081900360840190fd5b610d3a848484611bd2565b90505b9392505050565b600b5481565b600654600160a060020a0390811691161490565b60025460ff1681565b6000610d7233610d4a565b1515600114610dc8576040805160e560020a62461bcd02815260206004820152602480820152600080516020612292833981519152604482015260e160020a633a34b7b702606482015290519081900360840190fd5b50600654604051303191600160a060020a03169082156108fc029083906000818181858888f19350505050158015610e04573d6000803e3d6000fd5b5050565b6000806000610e1633610d4a565b1515600114610e6c576040805160e560020a62461bcd02815260206004820152602480820152600080516020612292833981519152604482015260e160020a633a34b7b702606482015290519081900360840190fd5b309150610e7882611380565b9050801515610e8a5760009250610f0b565b600160a060020a038216600090815260046020526040902054610eb3908263ffffffff611b7216565b600160a060020a038084166000908152600460205260408082209390935560065490911681522054610eeb908263ffffffff611b1516565b600654600160a060020a0316600090815260046020526040902055600192505b505090565b600080808311610f90576040805160e560020a62461bcd02815260206004820152602a60248201527f546f6b656e20616d6f756e7420746f206275726e206d757374206265206c617260448201527f676572207468616e203000000000000000000000000000000000000000000000606482015290519081900360840190fd5b5033610f9b81611380565b831115611018576040805160e560020a62461bcd02815260206004820152602360248201527f596f752063616e6e6f74206275726e20746f6b656e20796f7520646f6e74206860448201527f6176650000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a038116600090815260046020526040902054611041908463ffffffff611b7216565b600160a060020a03821660009081526004602052604090205560035461106d908463ffffffff611b7216565b60035550600192915050565b600e5481565b61108833611597565b15156110cc576040805160e560020a62461bcd02815260206004820152601960248201526000805160206122b2833981519152604482015290519081900360640190fd5b600991909155600a55565b60006110e233610d4a565b1515600114611138576040805160e560020a62461bcd02815260206004820152602480820152600080516020612292833981519152604482015260e160020a633a34b7b702606482015290519081900360840190fd5b600060085460a060020a900460ff16600181111561115257fe5b146111a7576040805160e560020a62461bcd02815260206004820152601260248201527f52657175697265202166696e616c697a65640000000000000000000000000000604482015290519081900360640190fd5b6008805474ff0000000000000000000000000000000000000000191660a060020a1790556040517f6823b073d48d6e3a7d385eeb601452d680e74bb46afe3255a7d778f3a9b1768190600090a150600190565b60095481565b600061120b33610d4a565b1515600114611261576040805160e560020a62461bcd02815260206004820152602480820152600080516020612292833981519152604482015260e160020a633a34b7b702606482015290519081900360840190fd5b600654600160a060020a03838116911614156112c7576040805160e560020a62461bcd02815260206004820152601e60248201527f52657175697265206e65774f70734164647265737320213d206f776e65720000604482015290519081900360640190fd5b600160a060020a03821630141561134e576040805160e560020a62461bcd02815260206004820152602660248201527f52657175697265206e65774f70734164647265737320213d206164647265737360448201527f2874686973290000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b5060088054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff199091161790556001919050565b600160a060020a031660009081526004602052604090205490565b600654600160a060020a031681565b600854600160a060020a031681565b60018054604080516020600284861615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610b6e5780601f10610b4357610100808354040283529160200191610b6e565b60105460ff1681565b60008060105460ff16600181111561143057fe5b146114ab576040805160e560020a62461bcd02815260206004820152602d60248201527f5265717569726520736d61727420636f6e7472616374206973206e6f7420696e60448201527f2068616c74656420737461746500000000000000000000000000000000000000606482015290519081900360840190fd5b600c5482101561152b576040805160e560020a62461bcd02815260206004820152602660248201527f546f6b656e20616d6f756e74206973206e6f7420656e6f75676820746f20747260448201527f616e736665720000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b61153433611597565b1580156115495750600160a060020a03831630145b156115615761155782611be9565b5060019050610bd7565b61156a33611597565b1561158d5760065461158690600160a060020a03168484611bd2565b9050610bd7565b6115868383611f68565b60006115a282610d4a565b80610bd75750610bd782611a4f565b60085460a060020a900460ff1681565b600f5481565b60006115d233610d4a565b1515600114611628576040805160e560020a62461bcd02815260206004820152602480820152600080516020612292833981519152604482015260e160020a633a34b7b702606482015290519081900360840190fd5b600160a060020a03821615156116ae576040805160e560020a62461bcd02815260206004820152602360248201527f526571756972652070726f706f7365644f776e657220213d206164647265737360448201527f2830290000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a038216301415611735576040805160e560020a62461bcd02815260206004820152602660248201527f526571756972652070726f706f7365644f776e657220213d206164647265737360448201527f2874686973290000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600654600160a060020a038381169116141561179b576040805160e560020a62461bcd02815260206004820152601e60248201527f526571756972652070726f706f7365644f776e657220213d206f776e65720000604482015290519081900360640190fd5b5060078054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff199091161790556001919050565b60006117d833611597565b151561181c576040805160e560020a62461bcd02815260206004820152601960248201526000805160206122b2833981519152604482015290519081900360640190fd5b601080546001919060ff19168280610c8e565b600061183a33610d4a565b1515600114611890576040805160e560020a62461bcd02815260206004820152602480820152600080516020612292833981519152604482015260e160020a633a34b7b702606482015290519081900360840190fd5b50604051303190600160a060020a0383169082156108fc029083906000818181858888f193505050501580156118ca573d6000803e3d6000fd5b505050565b6118d833611597565b151561191c576040805160e560020a62461bcd02815260206004820152601960248201526000805160206122b2833981519152604482015290519081900360640190fd5b600e55565b600754600160a060020a031681565b600f5460009061195d9061195164e8d4a510006103e863ffffffff611b0016565b9063ffffffff611b7216565b905090565b600160a060020a03918216600090815260056020908152604080832093909416825291909152205490565b600754600090600160a060020a03163314611a18576040805160e560020a62461bcd02815260206004820152602360248201527f52657175697265206d73672e73656e646572203d3d2070726f706f7365644f7760448201527f6e65720000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b506006805473ffffffffffffffffffffffffffffffffffffffff199081163317909155600780549091169055600190565b600d5481565b600854600090600160a060020a031615801590610bd7575050600854600160a060020a0390811691161490565b600080831515611a8f5760009150611af9565b50828202828482811515611a9f57fe5b0414611af5576040805160e560020a62461bcd02815260206004820152601260248201527f526571756972652072202f2061203d3d20620000000000000000000000000000604482015290519081900360640190fd5b8091505b5092915050565b60008183811515611b0d57fe5b049392505050565b600082820183811015611af5576040805160e560020a62461bcd02815260206004820152600e60248201527f526571756972652072203e3d2061000000000000000000000000000000000000604482015290519081900360640190fd5b600081831015611bcc576040805160e560020a62461bcd02815260206004820152600e60248201527f526571756972652061203e3d2062000000000000000000000000000000000000604482015290519081900360640190fd5b50900390565b6000611bde3384611f7e565b610d3a84848461203b565b6000806000600a54111515611c48576040805160e560020a62461bcd02815260206004820152601860248201527f73656c6c5072696365457468206d757374206265203e20300000000000000000604482015290519081900360640190fd5b600c54831015611cc8576040805160e560020a62461bcd02815260206004820152603660248201527f53656c6c20746f6b656e20616d6f756e74206d757374206265206c617267657260448201527f207468616e2050425454466f724761732076616c756500000000000000000000606482015290519081900360840190fd5b33600090815260046020526040902054831115611d55576040805160e560020a62461bcd02815260206004820152602360248201527f546f6b656e2062616c616e6365206973206e6f7420656e6f75676820746f207360448201527f6f6c640000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600e5433311015611dd6576040805160e560020a62461bcd02815260206004820152603860248201527f53656c6c65722062616c616e6365206d75737420626520656e6f75676820746f60448201527f2070617920746865207472616e73616374696f6e206665650000000000000000606482015290519081900360840190fd5b600a54611dfb90611def856103e863ffffffff611b0016565b9063ffffffff611a7c16565b9150611e0e30318363ffffffff611b7216565b600d54909150811015611e91576040805160e560020a62461bcd02815260206004820152603560248201527f52656d61696e696e6720636f6e74726163742062616c616e6365206973206e6f60448201527f7420656e6f75676820666f722072657365727665640000000000000000000000606482015290519081900360840190fd5b600654600160a060020a0316600090815260046020526040902054611ebc908463ffffffff611b1516565b600654600160a060020a0316600090815260046020526040808220929092553381522054611ef0908463ffffffff611b7216565b33600081815260046020526040808220939093559151909184156108fc02918591818181858888f19350505050158015611f2e573d6000803e3d6000fd5b50600654604080518581529051600160a060020a039092169133916000805160206122d2833981519152919081900360200190a350919050565b6000611f743384611f7e565b610d3d83836121af565b600160085460a060020a900460ff166001811115611f9857fe5b1415611fa357610e04565b611fac81610d4a565b15611fb657610e04565b611fbf82611597565b1515610e04576040805160e560020a62461bcd02815260206004820152603460248201527f52657175697265206973206f776e6572206f72206f707320616c6c6f7765642060448201527f746f20696e697469617465207472616e73666572000000000000000000000000606482015290519081900360840190fd5b600160a060020a03831660009081526004602052604081205482118015906120865750600160a060020a03841660009081526005602090815260408083203384529091529020548211155b80156120ab5750600160a060020a038316600090815260046020526040902054828101115b156121a757600160a060020a0384166000908152600460205260409020546120d9908363ffffffff611b7216565b600160a060020a0385166000908152600460209081526040808320939093556005815282822033835290522054612116908363ffffffff611b7216565b600160a060020a03808616600090815260056020908152604080832033845282528083209490945591861681526004909152205461215a908363ffffffff611b1516565b600160a060020a0380851660008181526004602090815260409182902094909455805186815290519193928816926000805160206122d283398151915292918290030190a3506001610d3d565b506000610d3d565b3360009081526004602052604081205482118015906121e75750600160a060020a038316600090815260046020526040902054828101115b15612289573360009081526004602052604090205461220c908363ffffffff611b7216565b3360009081526004602052604080822092909255600160a060020a0385168152205461223e908363ffffffff611b1516565b600160a060020a0384166000818152600460209081526040918290209390935580518581529051919233926000805160206122d28339815191529281900390910190a3506001610bd7565b506000610bd7560052657175697265206f776e657220746f2065786563757465207472616e73616352657175697265206f6e6c79206f776e6572206f72206f707300000000000000ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a72305820b2d27dd2545f7b783fc57e7762d2f1c51aaff50fb53eab124809c932a0bf0b430029
Deployed Bytecode
0x6080604052600436106101ed5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663015129a1811461032d57806302259b07146103545780630615f7c31461036c57806306a865391461038457806306fdde0314610399578063095ea7b3146104235780630d5260e71461045b5780631609a3971461047357806318160ddd1461048857806323b872dd1461049d57806328effe67146104c75780632f54bf6e146104dc578063313ce567146104fd57806339909f0b146105285780633c54caa51461053d57806342966c681461055257806347f1d8d71461056a5780634b6a33341461057f5780634bb278f31461059a5780635639bb3c146105af578063707789c5146105c457806370a08231146105e55780638da5cb5b146106065780638ea643761461063757806395d89b411461064c578063a5a899ec14610661578063a9059cbb1461069a578063adcf59ee146106be578063b3f05b97146106df578063b5f7f636146106f4578063c0b6f56114610709578063c27753471461072a578063c729a5671461073f578063c91d956c14610760578063d153b60c14610778578063d17866101461078d578063dd62ed3e146107a2578063e71a7811146107c9578063eea7570e146107de578063ef326c6d146107f3575b600654600160a060020a0316331461032b57600160085460a060020a900460ff16600181111561021957fe5b14610294576040805160e560020a62461bcd02815260206004820152602360248201527f5265717569726520736d61727420636f6e74726163742069732066696e616c6960448201527f7a65640000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600060105460ff1660018111156102a757fe5b14610321576040805160e560020a62461bcd028152602060048201526024808201527f5265717569726520736d61727420636f6e7472616374206973206e6f7420686160448201527f6c74656400000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b610329610814565b505b005b34801561033957600080fd5b50610342610a38565b60408051918252519081900360200190f35b34801561036057600080fd5b5061032b600435610a3e565b34801561037857600080fd5b5061032b600435610a90565b34801561039057600080fd5b50610342610ae2565b3480156103a557600080fd5b506103ae610ae8565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103e85781810151838201526020016103d0565b50505050905090810190601f1680156104155780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561042f57600080fd5b50610447600160a060020a0360043516602435610b76565b604080519115158252519081900360200190f35b34801561046757600080fd5b5061032b600435610bdd565b34801561047f57600080fd5b50610447610c2f565b34801561049457600080fd5b50610342610c9a565b3480156104a957600080fd5b50610447600160a060020a0360043581169060243516604435610ca0565b3480156104d357600080fd5b50610342610d44565b3480156104e857600080fd5b50610447600160a060020a0360043516610d4a565b34801561050957600080fd5b50610512610d5e565b6040805160ff9092168252519081900360200190f35b34801561053457600080fd5b5061032b610d67565b34801561054957600080fd5b50610447610e08565b34801561055e57600080fd5b50610447600435610f10565b34801561057657600080fd5b50610342611079565b34801561058b57600080fd5b5061032b60043560243561107f565b3480156105a657600080fd5b506104476110d7565b3480156105bb57600080fd5b506103426111fa565b3480156105d057600080fd5b50610447600160a060020a0360043516611200565b3480156105f157600080fd5b50610342600160a060020a0360043516611380565b34801561061257600080fd5b5061061b61139b565b60408051600160a060020a039092168252519081900360200190f35b34801561064357600080fd5b5061061b6113aa565b34801561065857600080fd5b506103ae6113b9565b34801561066d57600080fd5b50610676611413565b6040518082600181111561068657fe5b60ff16815260200191505060405180910390f35b3480156106a657600080fd5b50610447600160a060020a036004351660243561141c565b3480156106ca57600080fd5b50610447600160a060020a0360043516611597565b3480156106eb57600080fd5b506106766115b1565b34801561070057600080fd5b506103426115c1565b34801561071557600080fd5b50610447600160a060020a03600435166115c7565b34801561073657600080fd5b506104476117cd565b34801561074b57600080fd5b5061032b600160a060020a036004351661182f565b34801561076c57600080fd5b5061032b6004356118cf565b34801561078457600080fd5b5061061b611921565b34801561079957600080fd5b50610342611930565b3480156107ae57600080fd5b50610342600160a060020a0360043581169060243516611962565b3480156107d557600080fd5b5061044761198d565b3480156107ea57600080fd5b50610342611a49565b3480156107ff57600080fd5b50610447600160a060020a0360043516611a4f565b600080600954111515610871576040805160e560020a62461bcd02815260206004820152601760248201527f6275795072696365457468206d757374206265203e2030000000000000000000604482015290519081900360640190fd5b6009543410156108f1576040805160e560020a62461bcd02815260206004820152602960248201527f5472616e73666572206d6f6e6579206d75737420626520656e6f75676820666f60448201527f72203120746f6b656e0000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6009546109169061090a346103e863ffffffff611a7c16565b9063ffffffff611b0016565b600654600160a060020a031660009081526004602052604090205490915081111561098b576040805160e560020a62461bcd02815260206004820152601860248201527f4e6f7420656e6f75676820746f6b656e2062616c616e63650000000000000000604482015290519081900360640190fd5b336000908152600460205260409020546109ab908263ffffffff611b1516565b3360009081526004602052604080822092909255600654600160a060020a0316815220546109df908263ffffffff611b7216565b60068054600160a060020a0390811660009081526004602090815260409182902094909455915482518581529251339491909216926000805160206122d2833981519152929081900390910190a3600f80548201905590565b600a5481565b610a4733611597565b1515610a8b576040805160e560020a62461bcd02815260206004820152601960248201526000805160206122b2833981519152604482015290519081900360640190fd5b600c55565b610a9933611597565b1515610add576040805160e560020a62461bcd02815260206004820152601960248201526000805160206122b2833981519152604482015290519081900360640190fd5b600b55565b600c5481565b6000805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610b6e5780601f10610b4357610100808354040283529160200191610b6e565b820191906000526020600020905b815481529060010190602001808311610b5157829003601f168201915b505050505081565b336000818152600560209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b610be633611597565b1515610c2a576040805160e560020a62461bcd02815260206004820152601960248201526000805160206122b2833981519152604482015290519081900360640190fd5b600d55565b6000610c3a33611597565b1515610c7e576040805160e560020a62461bcd02815260206004820152601960248201526000805160206122b2833981519152604482015290519081900360640190fd5b601080546000919060ff19166001835b02179055506001905090565b60035481565b60008060105460ff166001811115610cb457fe5b14610d2f576040805160e560020a62461bcd02815260206004820152602d60248201527f5265717569726520736d61727420636f6e7472616374206973206e6f7420696e60448201527f2068616c74656420737461746500000000000000000000000000000000000000606482015290519081900360840190fd5b610d3a848484611bd2565b90505b9392505050565b600b5481565b600654600160a060020a0390811691161490565b60025460ff1681565b6000610d7233610d4a565b1515600114610dc8576040805160e560020a62461bcd02815260206004820152602480820152600080516020612292833981519152604482015260e160020a633a34b7b702606482015290519081900360840190fd5b50600654604051303191600160a060020a03169082156108fc029083906000818181858888f19350505050158015610e04573d6000803e3d6000fd5b5050565b6000806000610e1633610d4a565b1515600114610e6c576040805160e560020a62461bcd02815260206004820152602480820152600080516020612292833981519152604482015260e160020a633a34b7b702606482015290519081900360840190fd5b309150610e7882611380565b9050801515610e8a5760009250610f0b565b600160a060020a038216600090815260046020526040902054610eb3908263ffffffff611b7216565b600160a060020a038084166000908152600460205260408082209390935560065490911681522054610eeb908263ffffffff611b1516565b600654600160a060020a0316600090815260046020526040902055600192505b505090565b600080808311610f90576040805160e560020a62461bcd02815260206004820152602a60248201527f546f6b656e20616d6f756e7420746f206275726e206d757374206265206c617260448201527f676572207468616e203000000000000000000000000000000000000000000000606482015290519081900360840190fd5b5033610f9b81611380565b831115611018576040805160e560020a62461bcd02815260206004820152602360248201527f596f752063616e6e6f74206275726e20746f6b656e20796f7520646f6e74206860448201527f6176650000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a038116600090815260046020526040902054611041908463ffffffff611b7216565b600160a060020a03821660009081526004602052604090205560035461106d908463ffffffff611b7216565b60035550600192915050565b600e5481565b61108833611597565b15156110cc576040805160e560020a62461bcd02815260206004820152601960248201526000805160206122b2833981519152604482015290519081900360640190fd5b600991909155600a55565b60006110e233610d4a565b1515600114611138576040805160e560020a62461bcd02815260206004820152602480820152600080516020612292833981519152604482015260e160020a633a34b7b702606482015290519081900360840190fd5b600060085460a060020a900460ff16600181111561115257fe5b146111a7576040805160e560020a62461bcd02815260206004820152601260248201527f52657175697265202166696e616c697a65640000000000000000000000000000604482015290519081900360640190fd5b6008805474ff0000000000000000000000000000000000000000191660a060020a1790556040517f6823b073d48d6e3a7d385eeb601452d680e74bb46afe3255a7d778f3a9b1768190600090a150600190565b60095481565b600061120b33610d4a565b1515600114611261576040805160e560020a62461bcd02815260206004820152602480820152600080516020612292833981519152604482015260e160020a633a34b7b702606482015290519081900360840190fd5b600654600160a060020a03838116911614156112c7576040805160e560020a62461bcd02815260206004820152601e60248201527f52657175697265206e65774f70734164647265737320213d206f776e65720000604482015290519081900360640190fd5b600160a060020a03821630141561134e576040805160e560020a62461bcd02815260206004820152602660248201527f52657175697265206e65774f70734164647265737320213d206164647265737360448201527f2874686973290000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b5060088054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff199091161790556001919050565b600160a060020a031660009081526004602052604090205490565b600654600160a060020a031681565b600854600160a060020a031681565b60018054604080516020600284861615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610b6e5780601f10610b4357610100808354040283529160200191610b6e565b60105460ff1681565b60008060105460ff16600181111561143057fe5b146114ab576040805160e560020a62461bcd02815260206004820152602d60248201527f5265717569726520736d61727420636f6e7472616374206973206e6f7420696e60448201527f2068616c74656420737461746500000000000000000000000000000000000000606482015290519081900360840190fd5b600c5482101561152b576040805160e560020a62461bcd02815260206004820152602660248201527f546f6b656e20616d6f756e74206973206e6f7420656e6f75676820746f20747260448201527f616e736665720000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b61153433611597565b1580156115495750600160a060020a03831630145b156115615761155782611be9565b5060019050610bd7565b61156a33611597565b1561158d5760065461158690600160a060020a03168484611bd2565b9050610bd7565b6115868383611f68565b60006115a282610d4a565b80610bd75750610bd782611a4f565b60085460a060020a900460ff1681565b600f5481565b60006115d233610d4a565b1515600114611628576040805160e560020a62461bcd02815260206004820152602480820152600080516020612292833981519152604482015260e160020a633a34b7b702606482015290519081900360840190fd5b600160a060020a03821615156116ae576040805160e560020a62461bcd02815260206004820152602360248201527f526571756972652070726f706f7365644f776e657220213d206164647265737360448201527f2830290000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a038216301415611735576040805160e560020a62461bcd02815260206004820152602660248201527f526571756972652070726f706f7365644f776e657220213d206164647265737360448201527f2874686973290000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600654600160a060020a038381169116141561179b576040805160e560020a62461bcd02815260206004820152601e60248201527f526571756972652070726f706f7365644f776e657220213d206f776e65720000604482015290519081900360640190fd5b5060078054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff199091161790556001919050565b60006117d833611597565b151561181c576040805160e560020a62461bcd02815260206004820152601960248201526000805160206122b2833981519152604482015290519081900360640190fd5b601080546001919060ff19168280610c8e565b600061183a33610d4a565b1515600114611890576040805160e560020a62461bcd02815260206004820152602480820152600080516020612292833981519152604482015260e160020a633a34b7b702606482015290519081900360840190fd5b50604051303190600160a060020a0383169082156108fc029083906000818181858888f193505050501580156118ca573d6000803e3d6000fd5b505050565b6118d833611597565b151561191c576040805160e560020a62461bcd02815260206004820152601960248201526000805160206122b2833981519152604482015290519081900360640190fd5b600e55565b600754600160a060020a031681565b600f5460009061195d9061195164e8d4a510006103e863ffffffff611b0016565b9063ffffffff611b7216565b905090565b600160a060020a03918216600090815260056020908152604080832093909416825291909152205490565b600754600090600160a060020a03163314611a18576040805160e560020a62461bcd02815260206004820152602360248201527f52657175697265206d73672e73656e646572203d3d2070726f706f7365644f7760448201527f6e65720000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b506006805473ffffffffffffffffffffffffffffffffffffffff199081163317909155600780549091169055600190565b600d5481565b600854600090600160a060020a031615801590610bd7575050600854600160a060020a0390811691161490565b600080831515611a8f5760009150611af9565b50828202828482811515611a9f57fe5b0414611af5576040805160e560020a62461bcd02815260206004820152601260248201527f526571756972652072202f2061203d3d20620000000000000000000000000000604482015290519081900360640190fd5b8091505b5092915050565b60008183811515611b0d57fe5b049392505050565b600082820183811015611af5576040805160e560020a62461bcd02815260206004820152600e60248201527f526571756972652072203e3d2061000000000000000000000000000000000000604482015290519081900360640190fd5b600081831015611bcc576040805160e560020a62461bcd02815260206004820152600e60248201527f526571756972652061203e3d2062000000000000000000000000000000000000604482015290519081900360640190fd5b50900390565b6000611bde3384611f7e565b610d3a84848461203b565b6000806000600a54111515611c48576040805160e560020a62461bcd02815260206004820152601860248201527f73656c6c5072696365457468206d757374206265203e20300000000000000000604482015290519081900360640190fd5b600c54831015611cc8576040805160e560020a62461bcd02815260206004820152603660248201527f53656c6c20746f6b656e20616d6f756e74206d757374206265206c617267657260448201527f207468616e2050425454466f724761732076616c756500000000000000000000606482015290519081900360840190fd5b33600090815260046020526040902054831115611d55576040805160e560020a62461bcd02815260206004820152602360248201527f546f6b656e2062616c616e6365206973206e6f7420656e6f75676820746f207360448201527f6f6c640000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600e5433311015611dd6576040805160e560020a62461bcd02815260206004820152603860248201527f53656c6c65722062616c616e6365206d75737420626520656e6f75676820746f60448201527f2070617920746865207472616e73616374696f6e206665650000000000000000606482015290519081900360840190fd5b600a54611dfb90611def856103e863ffffffff611b0016565b9063ffffffff611a7c16565b9150611e0e30318363ffffffff611b7216565b600d54909150811015611e91576040805160e560020a62461bcd02815260206004820152603560248201527f52656d61696e696e6720636f6e74726163742062616c616e6365206973206e6f60448201527f7420656e6f75676820666f722072657365727665640000000000000000000000606482015290519081900360840190fd5b600654600160a060020a0316600090815260046020526040902054611ebc908463ffffffff611b1516565b600654600160a060020a0316600090815260046020526040808220929092553381522054611ef0908463ffffffff611b7216565b33600081815260046020526040808220939093559151909184156108fc02918591818181858888f19350505050158015611f2e573d6000803e3d6000fd5b50600654604080518581529051600160a060020a039092169133916000805160206122d2833981519152919081900360200190a350919050565b6000611f743384611f7e565b610d3d83836121af565b600160085460a060020a900460ff166001811115611f9857fe5b1415611fa357610e04565b611fac81610d4a565b15611fb657610e04565b611fbf82611597565b1515610e04576040805160e560020a62461bcd02815260206004820152603460248201527f52657175697265206973206f776e6572206f72206f707320616c6c6f7765642060448201527f746f20696e697469617465207472616e73666572000000000000000000000000606482015290519081900360840190fd5b600160a060020a03831660009081526004602052604081205482118015906120865750600160a060020a03841660009081526005602090815260408083203384529091529020548211155b80156120ab5750600160a060020a038316600090815260046020526040902054828101115b156121a757600160a060020a0384166000908152600460205260409020546120d9908363ffffffff611b7216565b600160a060020a0385166000908152600460209081526040808320939093556005815282822033835290522054612116908363ffffffff611b7216565b600160a060020a03808616600090815260056020908152604080832033845282528083209490945591861681526004909152205461215a908363ffffffff611b1516565b600160a060020a0380851660008181526004602090815260409182902094909455805186815290519193928816926000805160206122d283398151915292918290030190a3506001610d3d565b506000610d3d565b3360009081526004602052604081205482118015906121e75750600160a060020a038316600090815260046020526040902054828101115b15612289573360009081526004602052604090205461220c908363ffffffff611b7216565b3360009081526004602052604080822092909255600160a060020a0385168152205461223e908363ffffffff611b1516565b600160a060020a0384166000818152600460209081526040918290209390935580518581529051919233926000805160206122d28339815191529281900390910190a3506001610bd7565b506000610bd7560052657175697265206f776e657220746f2065786563757465207472616e73616352657175697265206f6e6c79206f776e6572206f72206f707300000000000000ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a72305820b2d27dd2545f7b783fc57e7762d2f1c51aaff50fb53eab124809c932a0bf0b430029
Swarm Source
bzzr://b2d27dd2545f7b783fc57e7762d2f1c51aaff50fb53eab124809c932a0bf0b43
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.