ETH Price: $3,334.94 (-0.25%)

Token

KinesisVelocityToken (KVT)
 

Overview

Max Total Supply

300,000 KVT

Holders

649 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 0 Decimals)

Balance
3 KVT

Value
$0.00
0x4a9ba82fb883f9b5b16f21439386879684ce1e4d
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

The Kinesis Velocity Token (KVT) is attached to the success of the Kinesis Monetary System. Each time Kinesis currencies (KAU & KAG) are sent or spent, a transaction fee is applied. These fees are accumulated and 20% is proportionately distributed back to the KVT holders, paid monthly in KAU & KAG.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
KinesisVelocityToken

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-09-06
*/

pragma solidity ^0.4.24;
// produced by the Solididy File Flattener (c) David Appleton 2018
// contact : [email protected]
// released under Apache 2.0 licence
contract ERC20Basic {
  function totalSupply() public view returns (uint256);
  function balanceOf(address who) public view returns (uint256);
  function transfer(address to, uint256 value) public returns (bool);
  event Transfer(address indexed from, address indexed to, uint256 value);
}

library SafeMath {

  /**
  * @dev Multiplies two numbers, throws on overflow.
  */
  function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
    // Gas optimization: this is cheaper than asserting 'a' not being zero, but the
    // benefit is lost if 'b' is also tested.
    // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
    if (a == 0) {
      return 0;
    }

    c = a * b;
    assert(c / a == b);
    return c;
  }

  /**
  * @dev Integer division of two numbers, truncating the quotient.
  */
  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    // assert(b > 0); // Solidity automatically throws when dividing by 0
    // uint256 c = a / b;
    // assert(a == b * c + a % b); // There is no case in which this doesn't hold
    return a / b;
  }

  /**
  * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
  */
  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    assert(b <= a);
    return a - b;
  }

  /**
  * @dev Adds two numbers, throws on overflow.
  */
  function add(uint256 a, uint256 b) internal pure returns (uint256 c) {
    c = a + b;
    assert(c >= a);
    return c;
  }
}

contract Ownable {
  address public owner;


  event OwnershipRenounced(address indexed previousOwner);
  event OwnershipTransferred(
    address indexed previousOwner,
    address indexed newOwner
  );


  /**
   * @dev The Ownable constructor sets the original `owner` of the contract to the sender
   * account.
   */
  constructor() public {
    owner = msg.sender;
  }

  /**
   * @dev Throws if called by any account other than the owner.
   */
  modifier onlyOwner() {
    require(msg.sender == owner);
    _;
  }

  /**
   * @dev Allows the current owner to relinquish control of the contract.
   * @notice Renouncing to ownership will leave the contract without an owner.
   * It will not be possible to call the functions with the `onlyOwner`
   * modifier anymore.
   */
  function renounceOwnership() public onlyOwner {
    emit OwnershipRenounced(owner);
    owner = address(0);
  }

  /**
   * @dev Allows the current owner to transfer control of the contract to a newOwner.
   * @param _newOwner The address to transfer ownership to.
   */
  function transferOwnership(address _newOwner) public onlyOwner {
    _transferOwnership(_newOwner);
  }

  /**
   * @dev Transfers control of the contract to a newOwner.
   * @param _newOwner The address to transfer ownership to.
   */
  function _transferOwnership(address _newOwner) internal {
    require(_newOwner != address(0));
    emit OwnershipTransferred(owner, _newOwner);
    owner = _newOwner;
  }
}

library Roles {
  struct Role {
    mapping (address => bool) bearer;
  }

  /**
   * @dev give an address access to this role
   */
  function add(Role storage role, address addr)
    internal
  {
    role.bearer[addr] = true;
  }

  /**
   * @dev remove an address' access to this role
   */
  function remove(Role storage role, address addr)
    internal
  {
    role.bearer[addr] = false;
  }

  /**
   * @dev check if an address has this role
   * // reverts
   */
  function check(Role storage role, address addr)
    view
    internal
  {
    require(has(role, addr));
  }

  /**
   * @dev check if an address has this role
   * @return bool
   */
  function has(Role storage role, address addr)
    view
    internal
    returns (bool)
  {
    return role.bearer[addr];
  }
}

contract BasicToken is ERC20Basic {
  using SafeMath for uint256;

  mapping(address => uint256) balances;

  uint256 totalSupply_;

  /**
  * @dev Total number of tokens in existence
  */
  function totalSupply() public view returns (uint256) {
    return totalSupply_;
  }

  /**
  * @dev Transfer token for a specified address
  * @param _to The address to transfer to.
  * @param _value The amount to be transferred.
  */
  function transfer(address _to, uint256 _value) public returns (bool) {
    require(_to != address(0));
    require(_value <= balances[msg.sender]);

    balances[msg.sender] = balances[msg.sender].sub(_value);
    balances[_to] = balances[_to].add(_value);
    emit Transfer(msg.sender, _to, _value);
    return true;
  }

  /**
  * @dev Gets the balance of the specified address.
  * @param _owner The address to query the the balance of.
  * @return An uint256 representing the amount owned by the passed address.
  */
  function balanceOf(address _owner) public view returns (uint256) {
    return balances[_owner];
  }

}

contract MultiSigTransfer is Ownable {
  string public name = "MultiSigTransfer";
  string public symbol = "MST";
  bool public complete = false;
  bool public denied = false;
  uint32 public quantity;
  address public targetAddress;
  address public requesterAddress;

  /**
  * @dev The multisig transfer contract ensures that no single administrator can
  * KVTs without approval of another administrator
  * @param _quantity The number of KVT to transfer
  * @param _targetAddress The receiver of the KVTs
  * @param _requesterAddress The administrator requesting the transfer
  */
  constructor(
    uint32 _quantity,
    address _targetAddress,
    address _requesterAddress
  ) public {
    quantity = _quantity;
    targetAddress = _targetAddress;
    requesterAddress = _requesterAddress;
  }

  /**
  * @dev Mark the transfer as approved / complete
  */
  function approveTransfer() public onlyOwner {
    require(denied == false, "cannot approve a denied transfer");
    require(complete == false, "cannot approve a complete transfer");
    complete = true;
  }

  /**
  * @dev Mark the transfer as denied
  */
  function denyTransfer() public onlyOwner {
    require(denied == false, "cannot deny a transfer that is already denied");
    denied = true;
  }

  /**
  * @dev Determine if the transfer is pending
  */
  function isPending() public view returns (bool) {
    return !complete;
  }
}

contract RBAC {
  using Roles for Roles.Role;

  mapping (string => Roles.Role) private roles;

  event RoleAdded(address indexed operator, string role);
  event RoleRemoved(address indexed operator, string role);

  /**
   * @dev reverts if addr does not have role
   * @param _operator address
   * @param _role the name of the role
   * // reverts
   */
  function checkRole(address _operator, string _role)
    view
    public
  {
    roles[_role].check(_operator);
  }

  /**
   * @dev determine if addr has role
   * @param _operator address
   * @param _role the name of the role
   * @return bool
   */
  function hasRole(address _operator, string _role)
    view
    public
    returns (bool)
  {
    return roles[_role].has(_operator);
  }

  /**
   * @dev add a role to an address
   * @param _operator address
   * @param _role the name of the role
   */
  function addRole(address _operator, string _role)
    internal
  {
    roles[_role].add(_operator);
    emit RoleAdded(_operator, _role);
  }

  /**
   * @dev remove a role from an address
   * @param _operator address
   * @param _role the name of the role
   */
  function removeRole(address _operator, string _role)
    internal
  {
    roles[_role].remove(_operator);
    emit RoleRemoved(_operator, _role);
  }

  /**
   * @dev modifier to scope access to a single role (uses msg.sender as addr)
   * @param _role the name of the role
   * // reverts
   */
  modifier onlyRole(string _role)
  {
    checkRole(msg.sender, _role);
    _;
  }

  /**
   * @dev modifier to scope access to a set of roles (uses msg.sender as addr)
   * @param _roles the names of the roles to scope access to
   * // reverts
   *
   * @TODO - when solidity supports dynamic arrays as arguments to modifiers, provide this
   *  see: https://github.com/ethereum/solidity/issues/2467
   */
  // modifier onlyRoles(string[] _roles) {
  //     bool hasAnyRole = false;
  //     for (uint8 i = 0; i < _roles.length; i++) {
  //         if (hasRole(msg.sender, _roles[i])) {
  //             hasAnyRole = true;
  //             break;
  //         }
  //     }

  //     require(hasAnyRole);

  //     _;
  // }
}

contract KinesisVelocityToken is BasicToken, Ownable, RBAC {
  string public name = "KinesisVelocityToken";
  string public symbol = "KVT";
  uint8 public decimals = 0;
  string public constant ADMIN_ROLE = "ADMIN";

  address[] public transfers;

  uint public constant INITIAL_SUPPLY = 300000;
  uint public totalSupply = 0;

  bool public isTransferable = false;
  bool public toggleTransferablePending = false;
  address public transferToggleRequester = address(0);

  constructor() public {
    totalSupply = INITIAL_SUPPLY;
    balances[msg.sender] = INITIAL_SUPPLY;
    addRole(msg.sender, ADMIN_ROLE);
  }

  /**
  * @dev Determine if the address is the owner of the contract
  * @param _address The address to determine of ownership
  */
  function isOwner(address _address) public view returns (bool) {
    return owner == _address;
  }

  /**
  * @dev Returns the list of MultiSig transfers
  */
  function getTransfers() public view returns (address[]) {
    return transfers;
  }

  /**
  * @dev The KVT ERC20 token uses adminstrators to handle transfering to the crowdsale, vesting and pre-purchasers
  */
  function isAdmin(address _address) public view returns (bool) {
    return hasRole(_address, ADMIN_ROLE);
  }

  /**
  * @dev Set an administrator as the owner, using Open Zepplin RBAC implementation
  */
  function setAdmin(address _newAdmin) public onlyOwner {
    return addRole(_newAdmin, ADMIN_ROLE);
  }

  /**
  * @dev Remove an administrator as the owner, using Open Zepplin RBAC implementation
  */
  function removeAdmin(address _oldAdmin) public onlyOwner {
    return removeRole(_oldAdmin, ADMIN_ROLE);
  }

  /**
  * @dev As an administrator, request the token is made transferable
  * @param _toState The transfer state being requested
  */
  function setTransferable(bool _toState) public onlyRole(ADMIN_ROLE) {
    require(isTransferable != _toState, "to init a transfer toggle, the toState must change");
    toggleTransferablePending = true;
    transferToggleRequester = msg.sender;
  }

  /**
  * @dev As an administrator who did not make the request, approve the transferable state change
  */
  function approveTransferableToggle() public onlyRole(ADMIN_ROLE) {
    require(toggleTransferablePending == true, "transfer toggle not in pending state");
    require(transferToggleRequester != msg.sender, "the requester cannot approve the transfer toggle");
    isTransferable = !isTransferable;
    toggleTransferablePending = false;
    transferToggleRequester = address(0);
  }

  /**
  * @dev transfer token for a specified address
  * @param _to The address to transfer to.
  * @param _value The amount to be transferred.
  */
  function _transfer(address _to, address _from, uint256 _value) private returns (bool) {
    require(_value <= balances[_from], "the balance in the from address is smaller than the tx value");

    // SafeMath.sub will throw if there is not enough balance.
    balances[_from] = balances[_from].sub(_value);
    balances[_to] = balances[_to].add(_value);
    emit Transfer(_from, _to, _value);
    return true;
  }

  /**
  * @dev Public transfer token function. This wrapper ensures the token is transferable
  * @param _to The address to transfer to.
  * @param _value The amount to be transferred.
  */
  function transfer(address _to, uint256 _value) public returns (bool) {
    require(_to != address(0), "cannot transfer to the zero address");

    /* We allow holders to return their Tokens to the contract owner at any point */
    if (_to != owner && msg.sender != crowdsale) {
      require(isTransferable == true, "kvt is not yet transferable");
    }

    /* Transfers from the owner address must use the administrative transfer */
    require(msg.sender != owner, "the owner of the kvt contract cannot transfer");

    return _transfer(_to, msg.sender, _value);
  }

  /**
  * @dev Request an administrative transfer. This does not move tokens
  * @param _to The address to transfer to.
  * @param _quantity The amount to be transferred.
  */
  function adminTransfer(address _to, uint32 _quantity) public onlyRole(ADMIN_ROLE) {
    address newTransfer = new MultiSigTransfer(_quantity, _to, msg.sender);
    transfers.push(newTransfer);
  }

  /**
  * @dev Approve an administrative transfer. This moves the tokens if the requester
  * is an admin, but not the same admin as the one who made the request
  * @param _approvedTransfer The contract address of the multisignature transfer.
  */
  function approveTransfer(address _approvedTransfer) public onlyRole(ADMIN_ROLE) returns (bool) {
    MultiSigTransfer transferToApprove = MultiSigTransfer(_approvedTransfer);

    uint32 transferQuantity = transferToApprove.quantity();
    address deliveryAddress = transferToApprove.targetAddress();
    address requesterAddress = transferToApprove.requesterAddress();

    require(msg.sender != requesterAddress, "a requester cannot approve an admin transfer");

    transferToApprove.approveTransfer();
    return _transfer(deliveryAddress, owner, transferQuantity);
  }

  /**
  * @dev Deny an administrative transfer. This ensures it cannot be approved.
  * @param _approvedTransfer The contract address of the multisignature transfer.
  */
  function denyTransfer(address _approvedTransfer) public onlyRole(ADMIN_ROLE) returns (bool) {
    MultiSigTransfer transferToApprove = MultiSigTransfer(_approvedTransfer);
    transferToApprove.denyTransfer();
  }

  address public crowdsale = address(0);

  /**
  * @dev Any admin can set the current crowdsale address, to allows transfers
  * from the crowdsale to the purchaser
  */
  function setCrowdsaleAddress(address _crowdsaleAddress) public onlyRole(ADMIN_ROLE) {
    crowdsale = _crowdsaleAddress;
  }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_operator","type":"address"},{"name":"_role","type":"string"}],"name":"checkRole","outputs":[],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_oldAdmin","type":"address"}],"name":"removeAdmin","outputs":[],"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":"_crowdsaleAddress","type":"address"}],"name":"setCrowdsaleAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isTransferable","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_operator","type":"address"},{"name":"_role","type":"string"}],"name":"hasRole","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"isAdmin","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"toggleTransferablePending","outputs":[{"name":"","type":"bool"}],"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":"getTransfers","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_quantity","type":"uint32"}],"name":"adminTransfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"INITIAL_SUPPLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"approveTransferableToggle","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_approvedTransfer","type":"address"}],"name":"approveTransfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newAdmin","type":"address"}],"name":"setAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ADMIN_ROLE","outputs":[{"name":"","type":"string"}],"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":"","type":"uint256"}],"name":"transfers","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":"crowdsale","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_toState","type":"bool"}],"name":"setTransferable","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"transferToggleRequester","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_approvedTransfer","type":"address"}],"name":"denyTransfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"operator","type":"address"},{"indexed":false,"name":"role","type":"string"}],"name":"RoleAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"operator","type":"address"},{"indexed":false,"name":"role","type":"string"}],"name":"RoleRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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"}]

60806040526040805190810160405280601481526020017f4b696e6573697356656c6f63697479546f6b656e000000000000000000000000815250600490805190602001906200005192919062000417565b506040805190810160405280600381526020017f4b56540000000000000000000000000000000000000000000000000000000000815250600590805190602001906200009f92919062000417565b506000600660006101000a81548160ff021916908360ff16021790555060006008556000600960006101000a81548160ff0219169083151502179055506000600960016101000a81548160ff0219169083151502179055506000600960026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200018857600080fd5b5033600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620493e0600881905550620493e06000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506200026a336040805190810160405280600581526020017f41444d494e00000000000000000000000000000000000000000000000000000081525062000270640100000000026401000000009004565b620004c6565b620002ff826003836040518082805190602001908083835b602083101515620002af578051825260208201915060208101905060208303925062000288565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020620003b96401000000000262002762179091906401000000009004565b8173ffffffffffffffffffffffffffffffffffffffff167fbfec83d64eaa953f2708271a023ab9ee82057f8f3578d548c1a4ba0b5b700489826040518080602001828103825283818151815260200191508051906020019080838360005b838110156200037a5780820151818401526020810190506200035d565b50505050905090810190601f168015620003a85780820380516001836020036101000a031916815260200191505b509250505060405180910390a25050565b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200045a57805160ff19168380011785556200048b565b828001600101855582156200048b579182015b828111156200048a5782518255916020019190600101906200046d565b5b5090506200049a91906200049e565b5090565b620004c391905b80821115620004bf576000816000905550600101620004a5565b5090565b90565b61365980620004d66000396000f30060806040526004361062000193576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde0314620001985780630988ca8c146200022e5780631785f53c14620002ba57806318160ddd14620003005780631f35bc40146200032e5780632121dc751462000374578063217fe6c614620003a657806324d7806c146200044a5780632813de1714620004a85780632f54bf6e14620004da5780632f65142c14620005385780632f8eed9814620005a95780632ff2e9dc14620005ff578063313ce567146200062d57806340c3b18e14620006615780634355b9d2146200067b578063704b6c0214620006d957806370a08231146200071f578063715018a6146200077957806375b238fc14620007935780638da5cb5b14620008295780639377d711146200088357806395d89b4114620008f35780639c1e03a014620009895780639cd2370714620009e3578063a3adb9581462000a15578063a9059cbb1462000a6f578063f2fde38b1462000ad7578063f5c4201f1462000b1d575b600080fd5b348015620001a557600080fd5b50620001b062000b7b565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015620001f2578082015181840152602081019050620001d5565b50505050905090810190601f168015620002205780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156200023b57600080fd5b50620002b8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505062000c1d565b005b348015620002c757600080fd5b50620002fe600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062000ca2565b005b3480156200030d57600080fd5b506200031862000d43565b6040518082815260200191505060405180910390f35b3480156200033b57600080fd5b5062000372600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062000d49565b005b3480156200038157600080fd5b506200038c62000dd0565b604051808215151515815260200191505060405180910390f35b348015620003b357600080fd5b5062000430600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505062000de3565b604051808215151515815260200191505060405180910390f35b3480156200045757600080fd5b506200048e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062000e6e565b604051808215151515815260200191505060405180910390f35b348015620004b557600080fd5b50620004c062000eb8565b604051808215151515815260200191505060405180910390f35b348015620004e757600080fd5b506200051e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062000ecb565b604051808215151515815260200191505060405180910390f35b3480156200054557600080fd5b506200055062000f25565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156200059557808201518184015260208101905062000578565b505050509050019250505060405180910390f35b348015620005b657600080fd5b50620005fd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803563ffffffff16906020019092919050505062000fb5565b005b3480156200060c57600080fd5b50620006176200110e565b6040518082815260200191505060405180910390f35b3480156200063a57600080fd5b506200064562001115565b604051808260ff1660ff16815260200191505060405180910390f35b3480156200066e57600080fd5b506200067962001128565b005b3480156200068857600080fd5b50620006bf600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062001393565b604051808215151515815260200191505060405180910390f35b348015620006e657600080fd5b506200071d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062001756565b005b3480156200072c57600080fd5b5062000763600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050620017f7565b6040518082815260200191505060405180910390f35b3480156200078657600080fd5b50620007916200183f565b005b348015620007a057600080fd5b50620007ab62001945565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015620007ed578082015181840152602081019050620007d0565b50505050905090810190601f1680156200081b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156200083657600080fd5b50620008416200197e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156200089057600080fd5b50620008b160048036038101908080359060200190929190505050620019a4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156200090057600080fd5b506200090b620019e3565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156200094d57808201518184015260208101905062000930565b50505050905090810190601f1680156200097b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156200099657600080fd5b50620009a162001a85565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015620009f057600080fd5b5062000a1360048036038101908080351515906020019092919050505062001aab565b005b34801562000a2257600080fd5b5062000a2d62001bff565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801562000a7c57600080fd5b5062000abd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505062001c25565b604051808215151515815260200191505060405180910390f35b34801562000ae457600080fd5b5062000b1b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062001f34565b005b34801562000b2a57600080fd5b5062000b61600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062001f9f565b604051808215151515815260200191505060405180910390f35b60048054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801562000c155780601f1062000be95761010080835404028352916020019162000c15565b820191906000526020600020905b81548152906001019060200180831162000bf757829003601f168201915b505050505081565b62000c9e826003836040518082805190602001908083835b60208310151562000c5c578051825260208201915060208101905060208303925062000c35565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206200206c90919063ffffffff16565b5050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151562000cff57600080fd5b62000d40816040805190810160405280600581526020017f41444d494e00000000000000000000000000000000000000000000000000000081525062002088565b50565b60085481565b6040805190810160405280600581526020017f41444d494e00000000000000000000000000000000000000000000000000000081525062000d8b338262000c1d565b81600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600960009054906101000a900460ff1681565b600062000e66836003846040518082805190602001908083835b60208310151562000e24578051825260208201915060208101905060208303925062000dfd565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020620021c390919063ffffffff16565b905092915050565b600062000eb1826040805190810160405280600581526020017f41444d494e00000000000000000000000000000000000000000000000000000081525062000de3565b9050919050565b600960019054906101000a900460ff1681565b60008173ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16149050919050565b6060600780548060200260200160405190810160405280929190818152602001828054801562000fab57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831162000f60575b5050505050905090565b60006040805190810160405280600581526020017f41444d494e00000000000000000000000000000000000000000000000000000081525062000ff9338262000c1d565b82843362001006620027c0565b808463ffffffff1663ffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019350505050604051809103906000f0801580156200109f573d6000803e3d6000fd5b50915060078290806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050565b620493e081565b600660009054906101000a900460ff1681565b6040805190810160405280600581526020017f41444d494e0000000000000000000000000000000000000000000000000000008152506200116a338262000c1d565b60011515600960019054906101000a900460ff1615151415156200121c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f7472616e7366657220746f67676c65206e6f7420696e2070656e64696e67207381526020017f746174650000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16600960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151562001309576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f746865207265717565737465722063616e6e6f7420617070726f76652074686581526020017f207472616e7366657220746f67676c650000000000000000000000000000000081525060400191505060405180910390fd5b600960009054906101000a900460ff1615600960006101000a81548160ff0219169083151502179055506000600960016101000a81548160ff0219169083151502179055506000600960026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008060006040805190810160405280600581526020017f41444d494e000000000000000000000000000000000000000000000000000000815250620013dd338262000c1d565b8694508473ffffffffffffffffffffffffffffffffffffffff166317fc45e26040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156200144557600080fd5b505af11580156200145a573d6000803e3d6000fd5b505050506040513d60208110156200147157600080fd5b810190808051906020019092919050505093508473ffffffffffffffffffffffffffffffffffffffff16635210eb566040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015620014e957600080fd5b505af1158015620014fe573d6000803e3d6000fd5b505050506040513d60208110156200151557600080fd5b810190808051906020019092919050505092508473ffffffffffffffffffffffffffffffffffffffff1663d424ee7d6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156200158d57600080fd5b505af1158015620015a2573d6000803e3d6000fd5b505050506040513d6020811015620015b957600080fd5b810190808051906020019092919050505091508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415151562001697576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f61207265717565737465722063616e6e6f7420617070726f766520616e20616481526020017f6d696e207472616e73666572000000000000000000000000000000000000000081525060400191505060405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16632a8d26e86040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b158015620016fc57600080fd5b505af115801562001711573d6000803e3d6000fd5b505050506200174a83600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168663ffffffff166200221c565b95505050505050919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515620017b357600080fd5b620017f4816040805190810160405280600581526020017f41444d494e00000000000000000000000000000000000000000000000000000081525062002495565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156200189c57600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a26000600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6040805190810160405280600581526020017f41444d494e00000000000000000000000000000000000000000000000000000081525081565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600781815481101515620019b457fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60058054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801562001a7d5780601f1062001a515761010080835404028352916020019162001a7d565b820191906000526020600020905b81548152906001019060200180831162001a5f57829003601f168201915b505050505081565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040805190810160405280600581526020017f41444d494e00000000000000000000000000000000000000000000000000000081525062001aed338262000c1d565b811515600960009054906101000a900460ff1615151415151562001b9f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001807f746f20696e69742061207472616e7366657220746f67676c652c20746865207481526020017f6f5374617465206d757374206368616e6765000000000000000000000000000081525060400191505060405180910390fd5b6001600960016101000a81548160ff02191690831515021790555033600960026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151562001cf2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f63616e6e6f74207472616e7366657220746f20746865207a65726f206164647281526020017f657373000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801562001d9f5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b1562001e325760011515600960009054906101000a900460ff16151514151562001e31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f6b7674206973206e6f7420796574207472616e7366657261626c65000000000081525060200191505060405180910390fd5b5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415151562001f1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d8152602001807f746865206f776e6572206f6620746865206b767420636f6e747261637420636181526020017f6e6e6f74207472616e736665720000000000000000000000000000000000000081525060400191505060405180910390fd5b62001f2c8333846200221c565b905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151562001f9157600080fd5b62001f9c81620025d0565b50565b6000806040805190810160405280600581526020017f41444d494e00000000000000000000000000000000000000000000000000000081525062001fe4338262000c1d565b8391508173ffffffffffffffffffffffffffffffffffffffff16639b012dec6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b1580156200204c57600080fd5b505af115801562002061573d6000803e3d6000fd5b505050505050919050565b620020788282620021c3565b15156200208457600080fd5b5050565b62002109826003836040518082805190602001908083835b602083101515620020c75780518252602082019150602081019050602083039250620020a0565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020620026cd90919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff167fd211483f91fc6eff862467f8de606587a30c8fc9981056f051b897a418df803a826040518080602001828103825283818151815260200191508051906020019080838360005b838110156200218457808201518184015260208101905062002167565b50505050905090810190601f168015620021b25780820380516001836020036101000a031916815260200191505b509250505060405180910390a25050565b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515620022fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603c8152602001807f7468652062616c616e636520696e207468652066726f6d20616464726573732081526020017f697320736d616c6c6572207468616e207468652074782076616c75650000000081525060400191505060405180910390fd5b6200234e826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200272b90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620023e3826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200274590919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b62002516826003836040518082805190602001908083835b602083101515620024d45780518252602082019150602081019050602083039250620024ad565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206200276290919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff167fbfec83d64eaa953f2708271a023ab9ee82057f8f3578d548c1a4ba0b5b700489826040518080602001828103825283818151815260200191508051906020019080838360005b838110156200259157808201518184015260208101905062002574565b50505050905090810190601f168015620025bf5780820380516001836020036101000a031916815260200191505b509250505060405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156200260d57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008282111515156200273a57fe5b818303905092915050565b600081830190508281101515156200275957fe5b80905092915050565b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b604051610e5c80620027d283390190560060806040526040805190810160405280601081526020017f4d756c74695369675472616e73666572000000000000000000000000000000008152506001908051906020019061004f929190610200565b506040805190810160405280600381526020017f4d535400000000000000000000000000000000000000000000000000000000008152506002908051906020019061009b929190610200565b506000600360006101000a81548160ff0219169083151502179055506000600360016101000a81548160ff0219169083151502179055503480156100de57600080fd5b50604051606080610e5c833981018060405281019080805190602001909291908051906020019092919080519060200190929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600360026101000a81548163ffffffff021916908363ffffffff16021790555081600360066101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050506102a5565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061024157805160ff191683800117855561026f565b8280016001018555821561026f579182015b8281111561026e578251825591602001919060010190610253565b5b50905061027c9190610280565b5090565b6102a291905b8082111561029e576000816000905550600101610286565b5090565b90565b610ba8806102b46000396000f3006080604052600436106100c5576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100ca57806317fc45e21461015a5780632a8d26e8146101915780635210eb56146101a8578063522e1177146101ff578063715018a61461022e578063794542ad146102455780638da5cb5b1461027457806395d89b41146102cb5780639b012dec1461035b5780639c30ad7e14610372578063d424ee7d146103a1578063f2fde38b146103f8575b600080fd5b3480156100d657600080fd5b506100df61043b565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561011f578082015181840152602081019050610104565b50505050905090810190601f16801561014c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561016657600080fd5b5061016f6104d9565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b34801561019d57600080fd5b506101a66104ef565b005b3480156101b457600080fd5b506101bd6106a3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561020b57600080fd5b506102146106c9565b604051808215151515815260200191505060405180910390f35b34801561023a57600080fd5b506102436106dc565b005b34801561025157600080fd5b5061025a6107de565b604051808215151515815260200191505060405180910390f35b34801561028057600080fd5b506102896107f1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102d757600080fd5b506102e0610816565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610320578082015181840152602081019050610305565b50505050905090810190601f16801561034d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561036757600080fd5b506103706108b4565b005b34801561037e57600080fd5b506103876109dd565b604051808215151515815260200191505060405180910390f35b3480156103ad57600080fd5b506103b66109f5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561040457600080fd5b50610439600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a1b565b005b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156104d15780601f106104a6576101008083540402835291602001916104d1565b820191906000526020600020905b8154815290600101906020018083116104b457829003601f168201915b505050505081565b600360029054906101000a900463ffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561054a57600080fd5b60001515600360019054906101000a900460ff1615151415156105d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f63616e6e6f7420617070726f766520612064656e696564207472616e7366657281525060200191505060405180910390fd5b60001515600360009054906101000a900460ff161515141515610686576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f63616e6e6f7420617070726f7665206120636f6d706c657465207472616e736681526020017f657200000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001600360006101000a81548160ff021916908315150217905550565b600360069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561073757600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a260008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600360019054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60028054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108ac5780601f10610881576101008083540402835291602001916108ac565b820191906000526020600020905b81548152906001019060200180831161088f57829003601f168201915b505050505081565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561090f57600080fd5b60001515600360019054906101000a900460ff1615151415156109c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d8152602001807f63616e6e6f742064656e792061207472616e736665722074686174206973206181526020017f6c72656164792064656e6965640000000000000000000000000000000000000081525060400191505060405180910390fd5b6001600360016101000a81548160ff021916908315150217905550565b6000600360009054906101000a900460ff1615905090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a7657600080fd5b610a7f81610a82565b50565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610abe57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505600a165627a7a72305820a549ebfc3bdf3c625145d6a8a3afed15b29de8bd4f5d39cef6b560386f695b970029a165627a7a72305820e627866e043cf4da56f8c79cec5a79ae3e0ab147c534df8d16f19fe0b4d13b9c0029

Deployed Bytecode

0x60806040526004361062000193576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde0314620001985780630988ca8c146200022e5780631785f53c14620002ba57806318160ddd14620003005780631f35bc40146200032e5780632121dc751462000374578063217fe6c614620003a657806324d7806c146200044a5780632813de1714620004a85780632f54bf6e14620004da5780632f65142c14620005385780632f8eed9814620005a95780632ff2e9dc14620005ff578063313ce567146200062d57806340c3b18e14620006615780634355b9d2146200067b578063704b6c0214620006d957806370a08231146200071f578063715018a6146200077957806375b238fc14620007935780638da5cb5b14620008295780639377d711146200088357806395d89b4114620008f35780639c1e03a014620009895780639cd2370714620009e3578063a3adb9581462000a15578063a9059cbb1462000a6f578063f2fde38b1462000ad7578063f5c4201f1462000b1d575b600080fd5b348015620001a557600080fd5b50620001b062000b7b565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015620001f2578082015181840152602081019050620001d5565b50505050905090810190601f168015620002205780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156200023b57600080fd5b50620002b8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505062000c1d565b005b348015620002c757600080fd5b50620002fe600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062000ca2565b005b3480156200030d57600080fd5b506200031862000d43565b6040518082815260200191505060405180910390f35b3480156200033b57600080fd5b5062000372600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062000d49565b005b3480156200038157600080fd5b506200038c62000dd0565b604051808215151515815260200191505060405180910390f35b348015620003b357600080fd5b5062000430600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505062000de3565b604051808215151515815260200191505060405180910390f35b3480156200045757600080fd5b506200048e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062000e6e565b604051808215151515815260200191505060405180910390f35b348015620004b557600080fd5b50620004c062000eb8565b604051808215151515815260200191505060405180910390f35b348015620004e757600080fd5b506200051e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062000ecb565b604051808215151515815260200191505060405180910390f35b3480156200054557600080fd5b506200055062000f25565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156200059557808201518184015260208101905062000578565b505050509050019250505060405180910390f35b348015620005b657600080fd5b50620005fd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803563ffffffff16906020019092919050505062000fb5565b005b3480156200060c57600080fd5b50620006176200110e565b6040518082815260200191505060405180910390f35b3480156200063a57600080fd5b506200064562001115565b604051808260ff1660ff16815260200191505060405180910390f35b3480156200066e57600080fd5b506200067962001128565b005b3480156200068857600080fd5b50620006bf600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062001393565b604051808215151515815260200191505060405180910390f35b348015620006e657600080fd5b506200071d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062001756565b005b3480156200072c57600080fd5b5062000763600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050620017f7565b6040518082815260200191505060405180910390f35b3480156200078657600080fd5b50620007916200183f565b005b348015620007a057600080fd5b50620007ab62001945565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015620007ed578082015181840152602081019050620007d0565b50505050905090810190601f1680156200081b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156200083657600080fd5b50620008416200197e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156200089057600080fd5b50620008b160048036038101908080359060200190929190505050620019a4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156200090057600080fd5b506200090b620019e3565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156200094d57808201518184015260208101905062000930565b50505050905090810190601f1680156200097b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156200099657600080fd5b50620009a162001a85565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015620009f057600080fd5b5062000a1360048036038101908080351515906020019092919050505062001aab565b005b34801562000a2257600080fd5b5062000a2d62001bff565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801562000a7c57600080fd5b5062000abd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505062001c25565b604051808215151515815260200191505060405180910390f35b34801562000ae457600080fd5b5062000b1b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062001f34565b005b34801562000b2a57600080fd5b5062000b61600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062001f9f565b604051808215151515815260200191505060405180910390f35b60048054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801562000c155780601f1062000be95761010080835404028352916020019162000c15565b820191906000526020600020905b81548152906001019060200180831162000bf757829003601f168201915b505050505081565b62000c9e826003836040518082805190602001908083835b60208310151562000c5c578051825260208201915060208101905060208303925062000c35565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206200206c90919063ffffffff16565b5050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151562000cff57600080fd5b62000d40816040805190810160405280600581526020017f41444d494e00000000000000000000000000000000000000000000000000000081525062002088565b50565b60085481565b6040805190810160405280600581526020017f41444d494e00000000000000000000000000000000000000000000000000000081525062000d8b338262000c1d565b81600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600960009054906101000a900460ff1681565b600062000e66836003846040518082805190602001908083835b60208310151562000e24578051825260208201915060208101905060208303925062000dfd565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020620021c390919063ffffffff16565b905092915050565b600062000eb1826040805190810160405280600581526020017f41444d494e00000000000000000000000000000000000000000000000000000081525062000de3565b9050919050565b600960019054906101000a900460ff1681565b60008173ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16149050919050565b6060600780548060200260200160405190810160405280929190818152602001828054801562000fab57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831162000f60575b5050505050905090565b60006040805190810160405280600581526020017f41444d494e00000000000000000000000000000000000000000000000000000081525062000ff9338262000c1d565b82843362001006620027c0565b808463ffffffff1663ffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019350505050604051809103906000f0801580156200109f573d6000803e3d6000fd5b50915060078290806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050565b620493e081565b600660009054906101000a900460ff1681565b6040805190810160405280600581526020017f41444d494e0000000000000000000000000000000000000000000000000000008152506200116a338262000c1d565b60011515600960019054906101000a900460ff1615151415156200121c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f7472616e7366657220746f67676c65206e6f7420696e2070656e64696e67207381526020017f746174650000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16600960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151562001309576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f746865207265717565737465722063616e6e6f7420617070726f76652074686581526020017f207472616e7366657220746f67676c650000000000000000000000000000000081525060400191505060405180910390fd5b600960009054906101000a900460ff1615600960006101000a81548160ff0219169083151502179055506000600960016101000a81548160ff0219169083151502179055506000600960026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008060006040805190810160405280600581526020017f41444d494e000000000000000000000000000000000000000000000000000000815250620013dd338262000c1d565b8694508473ffffffffffffffffffffffffffffffffffffffff166317fc45e26040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156200144557600080fd5b505af11580156200145a573d6000803e3d6000fd5b505050506040513d60208110156200147157600080fd5b810190808051906020019092919050505093508473ffffffffffffffffffffffffffffffffffffffff16635210eb566040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015620014e957600080fd5b505af1158015620014fe573d6000803e3d6000fd5b505050506040513d60208110156200151557600080fd5b810190808051906020019092919050505092508473ffffffffffffffffffffffffffffffffffffffff1663d424ee7d6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156200158d57600080fd5b505af1158015620015a2573d6000803e3d6000fd5b505050506040513d6020811015620015b957600080fd5b810190808051906020019092919050505091508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415151562001697576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f61207265717565737465722063616e6e6f7420617070726f766520616e20616481526020017f6d696e207472616e73666572000000000000000000000000000000000000000081525060400191505060405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16632a8d26e86040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b158015620016fc57600080fd5b505af115801562001711573d6000803e3d6000fd5b505050506200174a83600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168663ffffffff166200221c565b95505050505050919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515620017b357600080fd5b620017f4816040805190810160405280600581526020017f41444d494e00000000000000000000000000000000000000000000000000000081525062002495565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156200189c57600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a26000600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6040805190810160405280600581526020017f41444d494e00000000000000000000000000000000000000000000000000000081525081565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600781815481101515620019b457fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60058054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801562001a7d5780601f1062001a515761010080835404028352916020019162001a7d565b820191906000526020600020905b81548152906001019060200180831162001a5f57829003601f168201915b505050505081565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040805190810160405280600581526020017f41444d494e00000000000000000000000000000000000000000000000000000081525062001aed338262000c1d565b811515600960009054906101000a900460ff1615151415151562001b9f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001807f746f20696e69742061207472616e7366657220746f67676c652c20746865207481526020017f6f5374617465206d757374206368616e6765000000000000000000000000000081525060400191505060405180910390fd5b6001600960016101000a81548160ff02191690831515021790555033600960026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151562001cf2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f63616e6e6f74207472616e7366657220746f20746865207a65726f206164647281526020017f657373000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801562001d9f5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b1562001e325760011515600960009054906101000a900460ff16151514151562001e31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f6b7674206973206e6f7420796574207472616e7366657261626c65000000000081525060200191505060405180910390fd5b5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415151562001f1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d8152602001807f746865206f776e6572206f6620746865206b767420636f6e747261637420636181526020017f6e6e6f74207472616e736665720000000000000000000000000000000000000081525060400191505060405180910390fd5b62001f2c8333846200221c565b905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151562001f9157600080fd5b62001f9c81620025d0565b50565b6000806040805190810160405280600581526020017f41444d494e00000000000000000000000000000000000000000000000000000081525062001fe4338262000c1d565b8391508173ffffffffffffffffffffffffffffffffffffffff16639b012dec6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b1580156200204c57600080fd5b505af115801562002061573d6000803e3d6000fd5b505050505050919050565b620020788282620021c3565b15156200208457600080fd5b5050565b62002109826003836040518082805190602001908083835b602083101515620020c75780518252602082019150602081019050602083039250620020a0565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020620026cd90919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff167fd211483f91fc6eff862467f8de606587a30c8fc9981056f051b897a418df803a826040518080602001828103825283818151815260200191508051906020019080838360005b838110156200218457808201518184015260208101905062002167565b50505050905090810190601f168015620021b25780820380516001836020036101000a031916815260200191505b509250505060405180910390a25050565b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515620022fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603c8152602001807f7468652062616c616e636520696e207468652066726f6d20616464726573732081526020017f697320736d616c6c6572207468616e207468652074782076616c75650000000081525060400191505060405180910390fd5b6200234e826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200272b90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620023e3826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200274590919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b62002516826003836040518082805190602001908083835b602083101515620024d45780518252602082019150602081019050602083039250620024ad565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206200276290919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff167fbfec83d64eaa953f2708271a023ab9ee82057f8f3578d548c1a4ba0b5b700489826040518080602001828103825283818151815260200191508051906020019080838360005b838110156200259157808201518184015260208101905062002574565b50505050905090810190601f168015620025bf5780820380516001836020036101000a031916815260200191505b509250505060405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156200260d57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008282111515156200273a57fe5b818303905092915050565b600081830190508281101515156200275957fe5b80905092915050565b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b604051610e5c80620027d283390190560060806040526040805190810160405280601081526020017f4d756c74695369675472616e73666572000000000000000000000000000000008152506001908051906020019061004f929190610200565b506040805190810160405280600381526020017f4d535400000000000000000000000000000000000000000000000000000000008152506002908051906020019061009b929190610200565b506000600360006101000a81548160ff0219169083151502179055506000600360016101000a81548160ff0219169083151502179055503480156100de57600080fd5b50604051606080610e5c833981018060405281019080805190602001909291908051906020019092919080519060200190929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600360026101000a81548163ffffffff021916908363ffffffff16021790555081600360066101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050506102a5565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061024157805160ff191683800117855561026f565b8280016001018555821561026f579182015b8281111561026e578251825591602001919060010190610253565b5b50905061027c9190610280565b5090565b6102a291905b8082111561029e576000816000905550600101610286565b5090565b90565b610ba8806102b46000396000f3006080604052600436106100c5576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100ca57806317fc45e21461015a5780632a8d26e8146101915780635210eb56146101a8578063522e1177146101ff578063715018a61461022e578063794542ad146102455780638da5cb5b1461027457806395d89b41146102cb5780639b012dec1461035b5780639c30ad7e14610372578063d424ee7d146103a1578063f2fde38b146103f8575b600080fd5b3480156100d657600080fd5b506100df61043b565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561011f578082015181840152602081019050610104565b50505050905090810190601f16801561014c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561016657600080fd5b5061016f6104d9565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b34801561019d57600080fd5b506101a66104ef565b005b3480156101b457600080fd5b506101bd6106a3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561020b57600080fd5b506102146106c9565b604051808215151515815260200191505060405180910390f35b34801561023a57600080fd5b506102436106dc565b005b34801561025157600080fd5b5061025a6107de565b604051808215151515815260200191505060405180910390f35b34801561028057600080fd5b506102896107f1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102d757600080fd5b506102e0610816565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610320578082015181840152602081019050610305565b50505050905090810190601f16801561034d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561036757600080fd5b506103706108b4565b005b34801561037e57600080fd5b506103876109dd565b604051808215151515815260200191505060405180910390f35b3480156103ad57600080fd5b506103b66109f5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561040457600080fd5b50610439600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a1b565b005b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156104d15780601f106104a6576101008083540402835291602001916104d1565b820191906000526020600020905b8154815290600101906020018083116104b457829003601f168201915b505050505081565b600360029054906101000a900463ffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561054a57600080fd5b60001515600360019054906101000a900460ff1615151415156105d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f63616e6e6f7420617070726f766520612064656e696564207472616e7366657281525060200191505060405180910390fd5b60001515600360009054906101000a900460ff161515141515610686576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f63616e6e6f7420617070726f7665206120636f6d706c657465207472616e736681526020017f657200000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001600360006101000a81548160ff021916908315150217905550565b600360069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561073757600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a260008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600360019054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60028054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108ac5780601f10610881576101008083540402835291602001916108ac565b820191906000526020600020905b81548152906001019060200180831161088f57829003601f168201915b505050505081565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561090f57600080fd5b60001515600360019054906101000a900460ff1615151415156109c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d8152602001807f63616e6e6f742064656e792061207472616e736665722074686174206973206181526020017f6c72656164792064656e6965640000000000000000000000000000000000000081525060400191505060405180910390fd5b6001600360016101000a81548160ff021916908315150217905550565b6000600360009054906101000a900460ff1615905090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a7657600080fd5b610a7f81610a82565b50565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610abe57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505600a165627a7a72305820a549ebfc3bdf3c625145d6a8a3afed15b29de8bd4f5d39cef6b560386f695b970029a165627a7a72305820e627866e043cf4da56f8c79cec5a79ae3e0ab147c534df8d16f19fe0b4d13b9c0029

Swarm Source

bzzr://e627866e043cf4da56f8c79cec5a79ae3e0ab147c534df8d16f19fe0b4d13b9c
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.