ERC-20
Overview
Max Total Supply
118,000,000 TC
Holders
37,613
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Tablow
Compiler Version
v0.4.10+commit.f0d539ae
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-06-18 */ pragma solidity ^0.4.10; /** * Math operations with safety checks */ library SafeMath { function mul(uint a, uint b) internal returns (uint) { uint c = a * b; assert(a == 0 || c / a == b); return c; } function div(uint a, uint b) internal returns (uint) { // assert(b > 0); // Solidity automatically throws when dividing by 0 uint c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function sub(uint a, uint b) internal returns (uint) { assert(b <= a); return a - b; } function add(uint a, uint b) internal returns (uint) { uint c = a + b; assert(c >= a); return c; } function max64(uint64 a, uint64 b) internal constant returns (uint64) { return a >= b ? a : b; } function min64(uint64 a, uint64 b) internal constant returns (uint64) { return a < b ? a : b; } function max256(uint256 a, uint256 b) internal constant returns (uint256) { return a >= b ? a : b; } function min256(uint256 a, uint256 b) internal constant returns (uint256) { return a < b ? a : b; } function assert(bool assertion) internal { if (!assertion) { throw; } } } contract ERC223ReceivingContract { /** * @dev Standard ERC223 function that will handle incoming token transfers. * * @param _from Token sender address. * @param _value Amount of tokens. * @param _data Transaction metadata. */ function tokenFallback(address _from, uint _value, bytes _data); } contract ERC223 { function balanceOf(address who) constant returns (uint); event Transfer(address indexed from, address indexed to, uint value, bytes data); } contract ForeignToken { function balanceOf(address _owner) constant public returns (uint256); function transfer(address _to, uint256 _value) public returns (bool); } contract Tablow is ERC223 { using SafeMath for uint; string public symbol = "TC"; string public name = "Tablow Club"; uint8 public constant decimals = 18; uint256 _totalSupply = 0; uint256 _MaxDistribPublicSupply = 0; uint256 _OwnerDistribSupply = 0; uint256 _CurrentDistribPublicSupply = 0; uint256 _FreeTokens = 0; uint256 _Multiplier1 = 2; uint256 _Multiplier2 = 3; uint256 _LimitMultiplier1 = 4e15; uint256 _LimitMultiplier2 = 8e15; uint256 _HighDonateLimit = 5e16; uint256 _BonusTokensPerETHdonated = 0; address _DistribFundsReceiverAddress = 0; address _remainingTokensReceiverAddress = 0; address owner = 0; bool setupDone = false; bool IsDistribRunning = false; bool DistribStarted = false; event Transfer(address indexed _from, address indexed _to, uint256 _value); event Approval(address indexed _owner, address indexed _spender, uint256 _value); event Burn(address indexed _owner, uint256 _value); mapping(address => uint256) balances; mapping(address => mapping(address => uint256)) allowed; mapping(address => bool) public Claimed; modifier onlyOwner() { require(msg.sender == owner); _; } function Tablow() public { owner = msg.sender; } function() public payable { if (IsDistribRunning) { uint256 _amount; if (((_CurrentDistribPublicSupply + _amount) > _MaxDistribPublicSupply) && _MaxDistribPublicSupply > 0) revert(); if (!_DistribFundsReceiverAddress.send(msg.value)) revert(); if (Claimed[msg.sender] == false) { _amount = _FreeTokens * 1e18; _CurrentDistribPublicSupply += _amount; balances[msg.sender] += _amount; _totalSupply += _amount; Transfer(this, msg.sender, _amount); Claimed[msg.sender] = true; } require(msg.value <= _HighDonateLimit); if (msg.value >= 1e15) { if (msg.value >= _LimitMultiplier2) { _amount = msg.value * _BonusTokensPerETHdonated * _Multiplier2; } else { if (msg.value >= _LimitMultiplier1) { _amount = msg.value * _BonusTokensPerETHdonated * _Multiplier1; } else { _amount = msg.value * _BonusTokensPerETHdonated; } } _CurrentDistribPublicSupply += _amount; balances[msg.sender] += _amount; _totalSupply += _amount; Transfer(this, msg.sender, _amount); } } else { revert(); } } function SetupToken(string tokenName, string tokenSymbol, uint256 BonusTokensPerETHdonated, uint256 MaxDistribPublicSupply, uint256 OwnerDistribSupply, address remainingTokensReceiverAddress, address DistribFundsReceiverAddress, uint256 FreeTokens) public { if (msg.sender == owner && !setupDone) { symbol = tokenSymbol; name = tokenName; _FreeTokens = FreeTokens; _BonusTokensPerETHdonated = BonusTokensPerETHdonated; _MaxDistribPublicSupply = MaxDistribPublicSupply * 1e18; if (OwnerDistribSupply > 0) { _OwnerDistribSupply = OwnerDistribSupply * 1e18; _totalSupply = _OwnerDistribSupply; balances[owner] = _totalSupply; _CurrentDistribPublicSupply += _totalSupply; Transfer(this, owner, _totalSupply); } _DistribFundsReceiverAddress = DistribFundsReceiverAddress; if (_DistribFundsReceiverAddress == 0) _DistribFundsReceiverAddress = owner; _remainingTokensReceiverAddress = remainingTokensReceiverAddress; setupDone = true; } } function SetupMultipliers(uint256 Multiplier1inX, uint256 Multiplier2inX, uint256 LimitMultiplier1inWei, uint256 LimitMultiplier2inWei, uint256 HighDonateLimitInWei) onlyOwner public { _Multiplier1 = Multiplier1inX; _Multiplier2 = Multiplier2inX; _LimitMultiplier1 = LimitMultiplier1inWei; _LimitMultiplier2 = LimitMultiplier2inWei; _HighDonateLimit = HighDonateLimitInWei; } function SetBonus(uint256 BonusTokensPerETHdonated) onlyOwner public { _BonusTokensPerETHdonated = BonusTokensPerETHdonated; } function SetFreeTokens(uint256 FreeTokens) onlyOwner public { _FreeTokens = FreeTokens; } function StartDistrib() public returns(bool success) { if (msg.sender == owner && !DistribStarted && setupDone) { DistribStarted = true; IsDistribRunning = true; } else { revert(); } return true; } function StopDistrib() public returns(bool success) { if (msg.sender == owner && IsDistribRunning) { if (_remainingTokensReceiverAddress != 0 && _MaxDistribPublicSupply > 0) { uint256 _remainingAmount = _MaxDistribPublicSupply - _CurrentDistribPublicSupply; if (_remainingAmount > 0) { balances[_remainingTokensReceiverAddress] += _remainingAmount; _totalSupply += _remainingAmount; Transfer(this, _remainingTokensReceiverAddress, _remainingAmount); } } DistribStarted = false; IsDistribRunning = false; } else { revert(); } return true; } function distribution(address[] addresses, uint256 _amount) onlyOwner public { uint256 _remainingAmount = _MaxDistribPublicSupply - _CurrentDistribPublicSupply; require(addresses.length <= 255); require(_amount <= _remainingAmount); _amount = _amount * 1e18; for (uint i = 0; i < addresses.length; i++) { require(_amount <= _remainingAmount); _CurrentDistribPublicSupply += _amount; balances[addresses[i]] += _amount; _totalSupply += _amount; Transfer(this, addresses[i], _amount); } if (_CurrentDistribPublicSupply >= _MaxDistribPublicSupply) { DistribStarted = false; IsDistribRunning = false; } } function distributeAmounts(address[] addresses, uint256[] amounts) onlyOwner public { uint256 _remainingAmount = _MaxDistribPublicSupply - _CurrentDistribPublicSupply; uint256 _amount; require(addresses.length <= 255); require(addresses.length == amounts.length); for (uint8 i = 0; i < addresses.length; i++) { _amount = amounts[i] * 1e18; require(_amount <= _remainingAmount); _CurrentDistribPublicSupply += _amount; balances[addresses[i]] += _amount; _totalSupply += _amount; Transfer(this, addresses[i], _amount); if (_CurrentDistribPublicSupply >= _MaxDistribPublicSupply) { DistribStarted = false; IsDistribRunning = false; } } } function BurnTokens(uint256 amount) public returns(bool success) { uint256 _amount = amount * 1e18; if (balances[msg.sender] >= _amount) { balances[msg.sender] -= _amount; _totalSupply -= _amount; Burn(msg.sender, _amount); Transfer(msg.sender, 0, _amount); } else { revert(); } return true; } function totalSupply() public constant returns(uint256 totalSupplyValue) { return _totalSupply; } function MaxDistribPublicSupply_() public constant returns(uint256 MaxDistribPublicSupply) { return _MaxDistribPublicSupply; } function OwnerDistribSupply_() public constant returns(uint256 OwnerDistribSupply) { return _OwnerDistribSupply; } function CurrentDistribPublicSupply_() public constant returns(uint256 CurrentDistribPublicSupply) { return _CurrentDistribPublicSupply; } function RemainingTokensReceiverAddress() public constant returns(address remainingTokensReceiverAddress) { return _remainingTokensReceiverAddress; } function DistribFundsReceiverAddress() public constant returns(address DistribfundsReceiver) { return _DistribFundsReceiverAddress; } function Owner() public constant returns(address ownerAddress) { return owner; } function SetupDone() public constant returns(bool setupDoneFlag) { return setupDone; } function IsDistribRunningFalg_() public constant returns(bool IsDistribRunningFalg) { return IsDistribRunning; } function IsDistribStarted() public constant returns(bool IsDistribStartedFlag) { return DistribStarted; } /** * @dev Transfer the specified amount of tokens to the specified address. * This function works the same with the previous one * but doesn't contain `_data` param. * Added due to backwards compatibility reasons. * * @param _to Receiver address. * @param _value Amount of tokens that will be transferred. */ function transfer(address _to, uint _value) returns (bool success) { if (balances[msg.sender] >= _value && _value > 0 && balances[_to] + _value > balances[_to]) { bytes memory empty; if(isContract(_to)) { return transferToContract(_to, _value, empty); } else { return transferToAddress(_to, _value, empty); } } else { return false; } } /* Withdraws to address _to form the address _from up to the amount _value */ function transferFrom(address _from, address _to, uint256 _value) returns (bool success) { if (balances[_from] >= _value && allowed[_from][msg.sender] >= _value && _value > 0 && balances[_to] + _value > balances[_to]) { balances[_from] -= _value; allowed[_from][msg.sender] -= _value; balances[_to] += _value; Transfer(_from, _to, _value); return true; } else { return false; } } /* Allows _spender to withdraw the _allowance amount form sender */ function approve(address _spender, uint256 _allowance) returns (bool success) { if (_allowance <= _totalSupply) { allowed[msg.sender][_spender] = _allowance; Approval(msg.sender, _spender, _allowance); return true; } else { return false; } } /* Checks how much _spender can withdraw from _owner */ function allowance(address _owner, address _spender) constant returns (uint256 remaining) { return allowed[_owner][_spender]; } function transfer(address _to, uint _value, bytes _data) returns (bool success) { if (balances[msg.sender] >= _value && _value > 0 && balances[_to] + _value > balances[_to]) { if(isContract(_to)) { return transferToContract(_to, _value, _data); } else { return transferToAddress(_to, _value, _data); } } else { return false; } } /* Transfer function when _to represents a regular address */ function transferToAddress(address _to, uint _value, bytes _data) internal returns (bool success) { balances[msg.sender] -= _value; balances[_to] += _value; Transfer(msg.sender, _to, _value); Transfer(msg.sender, _to, _value, _data); return true; } /* Transfer function when _to represents a contract address, with the caveat that the contract needs to implement the tokenFallback function in order to receive tokens */ function transferToContract(address _to, uint _value, bytes _data) internal returns (bool success) { balances[msg.sender] -= _value; balances[_to] += _value; ERC223ReceivingContract receiver = ERC223ReceivingContract(_to); receiver.tokenFallback(msg.sender, _value, _data); Transfer(msg.sender, _to, _value); Transfer(msg.sender, _to, _value, _data); return true; } /* Infers if whether _address is a contract based on the presence of bytecode */ function isContract(address _address) internal returns (bool is_contract) { uint length; if (_address == 0) return false; assembly { length := extcodesize(_address) } if(length > 0) { return true; } else { return false; } } function withdrawForeignTokens(address _tokenContract) onlyOwner public returns (bool) { ForeignToken token = ForeignToken(_tokenContract); uint256 amount = token.balanceOf(address(this)); return token.transfer(owner, amount); } function balanceOf(address _owner) public constant returns(uint256 balance) { return balances[_owner]; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_allowance","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"Multiplier1inX","type":"uint256"},{"name":"Multiplier2inX","type":"uint256"},{"name":"LimitMultiplier1inWei","type":"uint256"},{"name":"LimitMultiplier2inWei","type":"uint256"},{"name":"HighDonateLimitInWei","type":"uint256"}],"name":"SetupMultipliers","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"totalSupplyValue","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"StopDistrib","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"CurrentDistribPublicSupply_","outputs":[{"name":"CurrentDistribPublicSupply","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"StartDistrib","outputs":[{"name":"success","type":"bool"}],"payable":false,"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,"type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"BurnTokens","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"IsDistribStarted","outputs":[{"name":"IsDistribStartedFlag","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"tokenName","type":"string"},{"name":"tokenSymbol","type":"string"},{"name":"BonusTokensPerETHdonated","type":"uint256"},{"name":"MaxDistribPublicSupply","type":"uint256"},{"name":"OwnerDistribSupply","type":"uint256"},{"name":"remainingTokensReceiverAddress","type":"address"},{"name":"DistribFundsReceiverAddress","type":"address"},{"name":"FreeTokens","type":"uint256"}],"name":"SetupToken","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"BonusTokensPerETHdonated","type":"uint256"}],"name":"SetBonus","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"FreeTokens","type":"uint256"}],"name":"SetFreeTokens","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"addresses","type":"address[]"},{"name":"amounts","type":"uint256[]"}],"name":"distributeAmounts","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"IsDistribRunningFalg_","outputs":[{"name":"IsDistribRunningFalg","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"Claimed","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"Owner","outputs":[{"name":"ownerAddress","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_data","type":"bytes"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"DistribFundsReceiverAddress","outputs":[{"name":"DistribfundsReceiver","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"SetupDone","outputs":[{"name":"setupDoneFlag","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"OwnerDistribSupply_","outputs":[{"name":"OwnerDistribSupply","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"RemainingTokensReceiverAddress","outputs":[{"name":"remainingTokensReceiverAddress","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"MaxDistribPublicSupply_","outputs":[{"name":"MaxDistribPublicSupply","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_tokenContract","type":"address"}],"name":"withdrawForeignTokens","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"addresses","type":"address[]"},{"name":"_amount","type":"uint256"}],"name":"distribution","outputs":[],"payable":false,"type":"function"},{"inputs":[],"payable":false,"type":"constructor"},{"payable":true,"type":"fallback"},{"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"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Burn","type":"event"}]
Contract Creation Code
60a0604052600260608190527f5443000000000000000000000000000000000000000000000000000000000000608090815262000040916000919062000128565b5060408051808201909152600b8082527f5461626c6f7720436c75620000000000000000000000000000000000000000006020909201918252620000879160019162000128565b50600060028181556003828155600483905560058390556006839055600791909155600855660e35fa931a0000600955661c6bf526340000600a5566b1a2bc2ec50000600b55600c55600d8054600160a060020a0319908116909155600e80549091169055600f8054600160b860020a031916905534156200010557fe5b5b600f8054600160a060020a03191633600160a060020a03161790555b620001d2565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200016b57805160ff19168380011785556200019b565b828001600101855582156200019b579182015b828111156200019b5782518255916020019190600101906200017e565b5b50620001aa929150620001ae565b5090565b620001cf91905b80821115620001aa5760008155600101620001b5565b5090565b90565b611b9480620001e26000396000f300606060405236156101645763ffffffff60e060020a60003504166306fdde038114610340578063095ea7b3146103d057806310eca9451461040357806318160ddd1461042457806318d69faa146104465780631d1cc6221461046a5780632092970f1461048c57806323b872dd146104b05780632cd3fd70146104e9578063313ce567146105105780634d9a81d41461053657806370a082311461055a57806374c77b521461058857806380ea82731461064557806390c6d1b91461065a57806395d89b411461066f578063a8c310d5146106ff578063a9059cbb1461078c578063accbdfd0146107bf578063b449c24d146107e3578063b4a99a4e14610813578063be45fd621461083f578063becf917f146108b6578063c21bbe56146108e2578063c52cb00314610906578063d21ceba014610928578063d8489a8114610954578063dd62ed3e14610976578063e58fc54c146109aa578063f3e4877c146109da575b61033e5b600f5460009060a860020a900460ff161561033457600354816005540111801561019457506000600354115b1561019f5760006000fd5b600d54604051600160a060020a03909116903480156108fc02916000818181858888f1935050505015156101d35760006000fd5b600160a060020a03331660009081526012602052604090205460ff161515610281575060065460058054670de0b6b3a76400009092029182019055600160a060020a033381166000818152601060209081526040918290208054860190556002805486019055815185815291519293301692600080516020611b498339815191529281900390910190a3600160a060020a0333166000908152601260205260409020805460ff191660011790555b600b543411156102915760006000fd5b66038d7ea4c68000341061032f57600a5434106102b75750600854600c543402026102d6565b60095434106102cf5750600754600c543402026102d6565b50600c5434025b5b6005805482019055600160a060020a033381166000818152601060209081526040918290208054860190556002805486019055815185815291519293301692600080516020611b498339815191529281900390910190a35b61033a565b60006000fd5b5b50565b005b341561034857fe5b610350610a31565b604080516020808252835181830152835191928392908301918501908083838215610396575b80518252602083111561039657601f199092019160209182019101610376565b505050905090810190601f1680156103c25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156103d857fe5b6103ef600160a060020a0360043516602435610abe565b604080519115158252519081900360200190f35b341561040b57fe5b61033e600435602435604435606435608435610b3a565b005b341561042c57fe5b610434610b78565b60408051918252519081900360200190f35b341561044e57fe5b6103ef610b7f565b604080519115158252519081900360200190f35b341561047257fe5b610434610c60565b60408051918252519081900360200190f35b341561049457fe5b6103ef610c67565b604080519115158252519081900360200190f35b34156104b857fe5b6103ef600160a060020a0360043581169060243516604435610d05565b604080519115158252519081900360200190f35b34156104f157fe5b6103ef600435610e0d565b604080519115158252519081900360200190f35b341561051857fe5b610520610edb565b6040805160ff9092168252519081900360200190f35b341561053e57fe5b6103ef610ee0565b604080519115158252519081900360200190f35b341561056257fe5b610434600160a060020a0360043516610ef1565b60408051918252519081900360200190f35b341561059057fe5b61033e600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284375050604080516020601f89358b01803591820183900483028401830190945280835297999881019791965091820194509250829150840183828082843750949650508435946020810135945060408101359350600160a060020a03606082013581169350608082013516915060a00135610f10565b005b341561064d57fe5b61033e600435611088565b005b341561066257fe5b61033e6004356110ae565b005b341561067757fe5b6103506110d4565b604080516020808252835181830152835191928392908301918501908083838215610396575b80518252602083111561039657601f199092019160209182019101610376565b505050905090810190601f1680156103c25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561070757fe5b61033e600480803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843750506040805187358901803560208181028481018201909552818452989a99890198929750908201955093508392508501908490808284375094965061116295505050505050565b005b341561079457fe5b6103ef600160a060020a03600435166024356112c8565b604080519115158252519081900360200190f35b34156107c757fe5b6103ef611369565b604080519115158252519081900360200190f35b34156107eb57fe5b6103ef600160a060020a036004351661137a565b604080519115158252519081900360200190f35b341561081b57fe5b61082361138f565b60408051600160a060020a039092168252519081900360200190f35b341561084757fe5b604080516020600460443581810135601f81018490048402850184019095528484526103ef948235600160a060020a031694602480359560649492939190920191819084018382808284375094965061139f95505050505050565b604080519115158252519081900360200190f35b34156108be57fe5b610823611439565b60408051600160a060020a039092168252519081900360200190f35b34156108ea57fe5b6103ef611449565b604080519115158252519081900360200190f35b341561090e57fe5b61043461145a565b60408051918252519081900360200190f35b341561093057fe5b610823611461565b60408051600160a060020a039092168252519081900360200190f35b341561095c57fe5b610434611471565b60408051918252519081900360200190f35b341561097e57fe5b610434600160a060020a0360043581169060243516611478565b60408051918252519081900360200190f35b34156109b257fe5b6103ef600160a060020a03600435166114a5565b604080519115158252519081900360200190f35b34156109e257fe5b61033e60048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284375094965050933593506115d392505050565b005b60018054604080516020600284861615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610ab65780601f10610a8b57610100808354040283529160200191610ab6565b820191906000526020600020905b815481529060010190602001808311610a9957829003601f168201915b505050505081565b6002546000908211610b2f57600160a060020a03338116600081815260116020908152604080832094881680845294825291829020869055815186815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3506001610b33565b5060005b5b92915050565b600f5433600160a060020a03908116911614610b565760006000fd5b600785905560088490556009839055600a829055600b8190555b5b5050505050565b6002545b90565b600f54600090819033600160a060020a039081169116148015610bab5750600f5460a860020a900460ff165b1561033457600e54600160a060020a031615801590610bcc57506000600354115b15610c3a5750600554600354036000811115610c3a57600e8054600160a060020a039081166000908152601060209081526040918290208054860190556002805486019055925481518581529151908316933090931692600080516020611b49833981519152928290030190a35b5b600f805460a860020a61ffff0219169055610c57565b60006000fd5b600191505b5090565b6005545b90565b600f5460009033600160a060020a039081169116148015610c925750600f5460b060020a900460ff16155b8015610ca75750600f5460a060020a900460ff165b1561033457600f805475ff0000000000000000000000000000000000000000001976ff000000000000000000000000000000000000000000001990911660b060020a171660a860020a179055610cfe565b60006000fd5b5060015b90565b600160a060020a038316600090815260106020526040812054829010801590610d555750600160a060020a0380851660009081526011602090815260408083203390941683529290522054829010155b8015610d615750600082115b8015610d865750600160a060020a038316600090815260106020526040902054828101115b15610e0157600160a060020a0380851660008181526010602081815260408084208054899003905560118252808420338716855282528084208054899003905594881680845291815291849020805487019055835186815293519093600080516020611b4983398151915292908290030190a3506001610e05565b5060005b5b9392505050565b600160a060020a033316600090815260106020526040812054670de0b6b3a764000083029081901061033457600160a060020a03331660008181526010602090815260409182902080548590039055600280548590039055815184815291517fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca59281900390910190a2604080518281529051600091600160a060020a03331691600080516020611b498339815191529181900360200190a3610ed0565b60006000fd5b600191505b50919050565b601281565b600f5460b060020a900460ff165b90565b600160a060020a0381166000908152601060205260409020545b919050565b600f5433600160a060020a039081169116148015610f385750600f5460a060020a900460ff16155b1561107d578651610f509060009060208a0190611a96565b508751610f649060019060208b0190611a96565b506006819055600c869055670de0b6b3a764000085026003556000841115610ff057670de0b6b3a7640000840260048190556002819055600f8054600160a060020a039081166000908152601060209081526040918290208590556005805486019055925481519485529051908216933090921692600080516020611b49833981519152928290030190a35b600d8054600160a060020a031916600160a060020a03848116919091179182905516151561103b57600f54600d8054600160a060020a031916600160a060020a039092169190911790555b600e8054600160a060020a038516600160a060020a0319909116179055600f805474ff0000000000000000000000000000000000000000191660a060020a1790555b5b5050505050505050565b600f5433600160a060020a039081169116146110a45760006000fd5b600c8190555b5b50565b600f5433600160a060020a039081169116146110ca5760006000fd5b60068190555b5b50565b6000805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610ab65780601f10610a8b57610100808354040283529160200191610ab6565b820191906000526020600020905b815481529060010190602001808311610a9957829003601f168201915b505050505081565b600f546000908190819033600160a060020a039081169116146111855760006000fd5b60055460035403925060ff8551111515156111a05760006000fd5b83518551146111af5760006000fd5b5060005b84518160ff161015610b7057838160ff168151811015156111d057fe5b60209081029091010151670de0b6b3a7640000029150828211156111f45760006000fd5b600580548301905584518290601090600090889060ff861690811061121557fe5b6020908102909101810151600160a060020a031682528101919091526040016000208054909101905560028054830190558451859060ff831690811061125757fe5b90602001906020020151600160a060020a031630600160a060020a0316600080516020611b49833981519152846040518082815260200191505060405180910390a3600354600554106112b657600f805460a860020a61ffff02191690555b5b6001016111b3565b5b5b5050505050565b60006112d2611b15565b600160a060020a0333166000908152601060205260409020548390108015906112fb5750600083115b80156113205750600160a060020a038416600090815260106020526040902054838101115b1561135c5761132e84611712565b156113455761133e848483611753565b9150611361565b61133e848483611972565b9150611361565b611361565b600091505b5b5092915050565b600f5460a860020a900460ff165b90565b60126020526000908152604090205460ff1681565b600f54600160a060020a03165b90565b600160a060020a0333166000908152601060205260408120548390108015906113c85750600083115b80156113ed5750600160a060020a038416600090815260106020526040902054838101115b15610e01576113fb84611712565b156114125761140b848484611753565b9050610e05565b61140b848484611972565b9050610e05565b610e05565b506000610e05565b5b9392505050565b600d54600160a060020a03165b90565b600f5460a060020a900460ff165b90565b6004545b90565b600e54600160a060020a03165b90565b6003545b90565b600160a060020a038083166000908152601160209081526040808320938516835292905220545b92915050565b600f546000908190819033600160a060020a039081169116146114c85760006000fd5b83915081600160a060020a03166370a08231306000604051602001526040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050602060405180830381600087803b151561152b57fe5b60325a03f1151561153857fe5b5050604080518051600f546000602093840181905284517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a039283166004820152602481018490529451929650908716945063a9059cbb936044808201949392918390030190829087803b15156115b457fe5b60325a03f115156115c157fe5b5050604051519350505b5b5050919050565b600f54600090819033600160a060020a039081169116146115f45760006000fd5b60055460035403915060ff84511115151561160f5760006000fd5b8183111561161d5760006000fd5b50670de0b6b3a76400009091029060005b83518110156116ed57818311156116455760006000fd5b60058054840190558351839060109060009087908590811061166357fe5b6020908102909101810151600160a060020a0316825281019190915260400160002080549091019055600280548401905583518490829081106116a257fe5b90602001906020020151600160a060020a031630600160a060020a0316600080516020611b49833981519152856040518082815260200191505060405180910390a35b60010161162e565b6003546005541061170a57600f805460a860020a61ffff02191690555b5b5b50505050565b600080600160a060020a038316151561172e5760009150610ed5565b50813b60008111156117435760019150610ed5565b60009150610ed5565b5b50919050565b33600160a060020a0381811660008181526010602090815260408083208054899003905593881680835284832080548901905593517fc0ee0b8a000000000000000000000000000000000000000000000000000000008152600481019384526024810188905260606044820190815287516064830152875193968a969563c0ee0b8a9591948b948b9492936084909101918501908083838215611811575b80518252602083111561181157601f1990920191602091820191016117f1565b505050905090810190601f16801561183d5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b151561185a57fe5b60325a03f1151561186757fe5b50505084600160a060020a031633600160a060020a0316600080516020611b49833981519152866040518082815260200191505060405180910390a384600160a060020a031633600160a060020a03167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c168686604051808381526020018060200182810382528381815181526020019150805190602001908083836000831461192b575b80518252602083111561192b57601f19909201916020918201910161190b565b505050905090810190601f1680156119575780820380516001836020036101000a031916815260200191505b50935050505060405180910390a3600191505b509392505050565b600160a060020a03338116600081815260106020908152604080832080548890039055938716808352848320805488019055845187815294519294909392600080516020611b49833981519152929181900390910190a383600160a060020a031633600160a060020a03167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c1685856040518083815260200180602001828103825283818151815260200191508051906020019080838360008314611a51575b805182526020831115611a5157601f199092019160209182019101611a31565b505050905090810190601f168015611a7d5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a35060015b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611ad757805160ff1916838001178555611b04565b82800160010185558215611b04579182015b82811115611b04578251825591602001919060010190611ae9565b5b50610c5c929150611b27565b5090565b60408051602081019091526000815290565b610b7c91905b80821115610c5c5760008155600101611b2d565b5090565b905600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a723058202e86f119bbbb6df070795c9a8eabb29580273ecf65df7c3d6f172994f5e37ac50029
Deployed Bytecode
0x606060405236156101645763ffffffff60e060020a60003504166306fdde038114610340578063095ea7b3146103d057806310eca9451461040357806318160ddd1461042457806318d69faa146104465780631d1cc6221461046a5780632092970f1461048c57806323b872dd146104b05780632cd3fd70146104e9578063313ce567146105105780634d9a81d41461053657806370a082311461055a57806374c77b521461058857806380ea82731461064557806390c6d1b91461065a57806395d89b411461066f578063a8c310d5146106ff578063a9059cbb1461078c578063accbdfd0146107bf578063b449c24d146107e3578063b4a99a4e14610813578063be45fd621461083f578063becf917f146108b6578063c21bbe56146108e2578063c52cb00314610906578063d21ceba014610928578063d8489a8114610954578063dd62ed3e14610976578063e58fc54c146109aa578063f3e4877c146109da575b61033e5b600f5460009060a860020a900460ff161561033457600354816005540111801561019457506000600354115b1561019f5760006000fd5b600d54604051600160a060020a03909116903480156108fc02916000818181858888f1935050505015156101d35760006000fd5b600160a060020a03331660009081526012602052604090205460ff161515610281575060065460058054670de0b6b3a76400009092029182019055600160a060020a033381166000818152601060209081526040918290208054860190556002805486019055815185815291519293301692600080516020611b498339815191529281900390910190a3600160a060020a0333166000908152601260205260409020805460ff191660011790555b600b543411156102915760006000fd5b66038d7ea4c68000341061032f57600a5434106102b75750600854600c543402026102d6565b60095434106102cf5750600754600c543402026102d6565b50600c5434025b5b6005805482019055600160a060020a033381166000818152601060209081526040918290208054860190556002805486019055815185815291519293301692600080516020611b498339815191529281900390910190a35b61033a565b60006000fd5b5b50565b005b341561034857fe5b610350610a31565b604080516020808252835181830152835191928392908301918501908083838215610396575b80518252602083111561039657601f199092019160209182019101610376565b505050905090810190601f1680156103c25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156103d857fe5b6103ef600160a060020a0360043516602435610abe565b604080519115158252519081900360200190f35b341561040b57fe5b61033e600435602435604435606435608435610b3a565b005b341561042c57fe5b610434610b78565b60408051918252519081900360200190f35b341561044e57fe5b6103ef610b7f565b604080519115158252519081900360200190f35b341561047257fe5b610434610c60565b60408051918252519081900360200190f35b341561049457fe5b6103ef610c67565b604080519115158252519081900360200190f35b34156104b857fe5b6103ef600160a060020a0360043581169060243516604435610d05565b604080519115158252519081900360200190f35b34156104f157fe5b6103ef600435610e0d565b604080519115158252519081900360200190f35b341561051857fe5b610520610edb565b6040805160ff9092168252519081900360200190f35b341561053e57fe5b6103ef610ee0565b604080519115158252519081900360200190f35b341561056257fe5b610434600160a060020a0360043516610ef1565b60408051918252519081900360200190f35b341561059057fe5b61033e600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284375050604080516020601f89358b01803591820183900483028401830190945280835297999881019791965091820194509250829150840183828082843750949650508435946020810135945060408101359350600160a060020a03606082013581169350608082013516915060a00135610f10565b005b341561064d57fe5b61033e600435611088565b005b341561066257fe5b61033e6004356110ae565b005b341561067757fe5b6103506110d4565b604080516020808252835181830152835191928392908301918501908083838215610396575b80518252602083111561039657601f199092019160209182019101610376565b505050905090810190601f1680156103c25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561070757fe5b61033e600480803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843750506040805187358901803560208181028481018201909552818452989a99890198929750908201955093508392508501908490808284375094965061116295505050505050565b005b341561079457fe5b6103ef600160a060020a03600435166024356112c8565b604080519115158252519081900360200190f35b34156107c757fe5b6103ef611369565b604080519115158252519081900360200190f35b34156107eb57fe5b6103ef600160a060020a036004351661137a565b604080519115158252519081900360200190f35b341561081b57fe5b61082361138f565b60408051600160a060020a039092168252519081900360200190f35b341561084757fe5b604080516020600460443581810135601f81018490048402850184019095528484526103ef948235600160a060020a031694602480359560649492939190920191819084018382808284375094965061139f95505050505050565b604080519115158252519081900360200190f35b34156108be57fe5b610823611439565b60408051600160a060020a039092168252519081900360200190f35b34156108ea57fe5b6103ef611449565b604080519115158252519081900360200190f35b341561090e57fe5b61043461145a565b60408051918252519081900360200190f35b341561093057fe5b610823611461565b60408051600160a060020a039092168252519081900360200190f35b341561095c57fe5b610434611471565b60408051918252519081900360200190f35b341561097e57fe5b610434600160a060020a0360043581169060243516611478565b60408051918252519081900360200190f35b34156109b257fe5b6103ef600160a060020a03600435166114a5565b604080519115158252519081900360200190f35b34156109e257fe5b61033e60048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284375094965050933593506115d392505050565b005b60018054604080516020600284861615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610ab65780601f10610a8b57610100808354040283529160200191610ab6565b820191906000526020600020905b815481529060010190602001808311610a9957829003601f168201915b505050505081565b6002546000908211610b2f57600160a060020a03338116600081815260116020908152604080832094881680845294825291829020869055815186815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3506001610b33565b5060005b5b92915050565b600f5433600160a060020a03908116911614610b565760006000fd5b600785905560088490556009839055600a829055600b8190555b5b5050505050565b6002545b90565b600f54600090819033600160a060020a039081169116148015610bab5750600f5460a860020a900460ff165b1561033457600e54600160a060020a031615801590610bcc57506000600354115b15610c3a5750600554600354036000811115610c3a57600e8054600160a060020a039081166000908152601060209081526040918290208054860190556002805486019055925481518581529151908316933090931692600080516020611b49833981519152928290030190a35b5b600f805460a860020a61ffff0219169055610c57565b60006000fd5b600191505b5090565b6005545b90565b600f5460009033600160a060020a039081169116148015610c925750600f5460b060020a900460ff16155b8015610ca75750600f5460a060020a900460ff165b1561033457600f805475ff0000000000000000000000000000000000000000001976ff000000000000000000000000000000000000000000001990911660b060020a171660a860020a179055610cfe565b60006000fd5b5060015b90565b600160a060020a038316600090815260106020526040812054829010801590610d555750600160a060020a0380851660009081526011602090815260408083203390941683529290522054829010155b8015610d615750600082115b8015610d865750600160a060020a038316600090815260106020526040902054828101115b15610e0157600160a060020a0380851660008181526010602081815260408084208054899003905560118252808420338716855282528084208054899003905594881680845291815291849020805487019055835186815293519093600080516020611b4983398151915292908290030190a3506001610e05565b5060005b5b9392505050565b600160a060020a033316600090815260106020526040812054670de0b6b3a764000083029081901061033457600160a060020a03331660008181526010602090815260409182902080548590039055600280548590039055815184815291517fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca59281900390910190a2604080518281529051600091600160a060020a03331691600080516020611b498339815191529181900360200190a3610ed0565b60006000fd5b600191505b50919050565b601281565b600f5460b060020a900460ff165b90565b600160a060020a0381166000908152601060205260409020545b919050565b600f5433600160a060020a039081169116148015610f385750600f5460a060020a900460ff16155b1561107d578651610f509060009060208a0190611a96565b508751610f649060019060208b0190611a96565b506006819055600c869055670de0b6b3a764000085026003556000841115610ff057670de0b6b3a7640000840260048190556002819055600f8054600160a060020a039081166000908152601060209081526040918290208590556005805486019055925481519485529051908216933090921692600080516020611b49833981519152928290030190a35b600d8054600160a060020a031916600160a060020a03848116919091179182905516151561103b57600f54600d8054600160a060020a031916600160a060020a039092169190911790555b600e8054600160a060020a038516600160a060020a0319909116179055600f805474ff0000000000000000000000000000000000000000191660a060020a1790555b5b5050505050505050565b600f5433600160a060020a039081169116146110a45760006000fd5b600c8190555b5b50565b600f5433600160a060020a039081169116146110ca5760006000fd5b60068190555b5b50565b6000805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610ab65780601f10610a8b57610100808354040283529160200191610ab6565b820191906000526020600020905b815481529060010190602001808311610a9957829003601f168201915b505050505081565b600f546000908190819033600160a060020a039081169116146111855760006000fd5b60055460035403925060ff8551111515156111a05760006000fd5b83518551146111af5760006000fd5b5060005b84518160ff161015610b7057838160ff168151811015156111d057fe5b60209081029091010151670de0b6b3a7640000029150828211156111f45760006000fd5b600580548301905584518290601090600090889060ff861690811061121557fe5b6020908102909101810151600160a060020a031682528101919091526040016000208054909101905560028054830190558451859060ff831690811061125757fe5b90602001906020020151600160a060020a031630600160a060020a0316600080516020611b49833981519152846040518082815260200191505060405180910390a3600354600554106112b657600f805460a860020a61ffff02191690555b5b6001016111b3565b5b5b5050505050565b60006112d2611b15565b600160a060020a0333166000908152601060205260409020548390108015906112fb5750600083115b80156113205750600160a060020a038416600090815260106020526040902054838101115b1561135c5761132e84611712565b156113455761133e848483611753565b9150611361565b61133e848483611972565b9150611361565b611361565b600091505b5b5092915050565b600f5460a860020a900460ff165b90565b60126020526000908152604090205460ff1681565b600f54600160a060020a03165b90565b600160a060020a0333166000908152601060205260408120548390108015906113c85750600083115b80156113ed5750600160a060020a038416600090815260106020526040902054838101115b15610e01576113fb84611712565b156114125761140b848484611753565b9050610e05565b61140b848484611972565b9050610e05565b610e05565b506000610e05565b5b9392505050565b600d54600160a060020a03165b90565b600f5460a060020a900460ff165b90565b6004545b90565b600e54600160a060020a03165b90565b6003545b90565b600160a060020a038083166000908152601160209081526040808320938516835292905220545b92915050565b600f546000908190819033600160a060020a039081169116146114c85760006000fd5b83915081600160a060020a03166370a08231306000604051602001526040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050602060405180830381600087803b151561152b57fe5b60325a03f1151561153857fe5b5050604080518051600f546000602093840181905284517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a039283166004820152602481018490529451929650908716945063a9059cbb936044808201949392918390030190829087803b15156115b457fe5b60325a03f115156115c157fe5b5050604051519350505b5b5050919050565b600f54600090819033600160a060020a039081169116146115f45760006000fd5b60055460035403915060ff84511115151561160f5760006000fd5b8183111561161d5760006000fd5b50670de0b6b3a76400009091029060005b83518110156116ed57818311156116455760006000fd5b60058054840190558351839060109060009087908590811061166357fe5b6020908102909101810151600160a060020a0316825281019190915260400160002080549091019055600280548401905583518490829081106116a257fe5b90602001906020020151600160a060020a031630600160a060020a0316600080516020611b49833981519152856040518082815260200191505060405180910390a35b60010161162e565b6003546005541061170a57600f805460a860020a61ffff02191690555b5b5b50505050565b600080600160a060020a038316151561172e5760009150610ed5565b50813b60008111156117435760019150610ed5565b60009150610ed5565b5b50919050565b33600160a060020a0381811660008181526010602090815260408083208054899003905593881680835284832080548901905593517fc0ee0b8a000000000000000000000000000000000000000000000000000000008152600481019384526024810188905260606044820190815287516064830152875193968a969563c0ee0b8a9591948b948b9492936084909101918501908083838215611811575b80518252602083111561181157601f1990920191602091820191016117f1565b505050905090810190601f16801561183d5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b151561185a57fe5b60325a03f1151561186757fe5b50505084600160a060020a031633600160a060020a0316600080516020611b49833981519152866040518082815260200191505060405180910390a384600160a060020a031633600160a060020a03167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c168686604051808381526020018060200182810382528381815181526020019150805190602001908083836000831461192b575b80518252602083111561192b57601f19909201916020918201910161190b565b505050905090810190601f1680156119575780820380516001836020036101000a031916815260200191505b50935050505060405180910390a3600191505b509392505050565b600160a060020a03338116600081815260106020908152604080832080548890039055938716808352848320805488019055845187815294519294909392600080516020611b49833981519152929181900390910190a383600160a060020a031633600160a060020a03167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c1685856040518083815260200180602001828103825283818151815260200191508051906020019080838360008314611a51575b805182526020831115611a5157601f199092019160209182019101611a31565b505050905090810190601f168015611a7d5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a35060015b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611ad757805160ff1916838001178555611b04565b82800160010185558215611b04579182015b82811115611b04578251825591602001919060010190611ae9565b5b50610c5c929150611b27565b5090565b60408051602081019091526000815290565b610b7c91905b80821115610c5c5760008155600101611b2d565b5090565b905600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a723058202e86f119bbbb6df070795c9a8eabb29580273ecf65df7c3d6f172994f5e37ac50029
Swarm Source
bzzr://2e86f119bbbb6df070795c9a8eabb29580273ecf65df7c3d6f172994f5e37ac5
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.