ETH Price: $2,540.55 (-1.33%)

Token

 

Overview

Max Total Supply

46

Holders

11

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 0 Decimals)

Balance
1

Value
$0.00
0xd6e8d52be82550b230176b6e9ba49bc3faf43e4a
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
KpopItem

Compiler Version
v0.4.20+commit.3155dd80

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-03-08
*/

// KpopItem is a ERC-721 item (https://github.com/ethereum/eips/issues/721)
// Each KpopItem has its connected KpopToken itemrity card
// Kpop.io is the official website

pragma solidity ^0.4.18;


/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {

  /**
  * @dev Multiplies two numbers, throws on overflow.
  */
  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    if (a == 0) {
      return 0;
    }
    uint256 c = a * b;
    assert(c / a == b);
    return c;
  }

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

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

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

contract ERC721 {
  function approve(address _to, uint _itemId) public;
  function balanceOf(address _owner) public view returns (uint balance);
  function implementsERC721() public pure returns (bool);
  function ownerOf(uint _itemId) public view returns (address addr);
  function takeOwnership(uint _itemId) public;
  function totalSupply() public view returns (uint total);
  function transferFrom(address _from, address _to, uint _itemId) public;
  function transfer(address _to, uint _itemId) public;

  event Transfer(address indexed from, address indexed to, uint itemId);
  event Approval(address indexed owner, address indexed approved, uint itemId);
}

contract KpopCeleb is ERC721 {
  function ownerOf(uint _celebId) public view returns (address addr);
}

contract KpopItem is ERC721 {
  address public author;
  address public coauthor;
  address public manufacturer;

  string public constant NAME = "KpopItem";
  string public constant SYMBOL = "KpopItem";

  uint public GROWTH_BUMP = 0.4 ether;
  uint public MIN_STARTING_PRICE = 0.001 ether;
  uint public PRICE_INCREASE_SCALE = 120; // 120% of previous price
  uint public DIVIDEND = 3;

  address public KPOP_CELEB_CONTRACT_ADDRESS = 0x0;
  address public KPOP_ARENA_CONTRACT_ADDRESS = 0x0;

  struct Item {
    string name;
  }

  Item[] public items;

  mapping(uint => address) public itemIdToOwner;
  mapping(uint => uint) public itemIdToPrice;
  mapping(address => uint) public userToNumItems;
  mapping(uint => address) public itemIdToApprovedRecipient;
  mapping(uint => uint[6]) public itemIdToTraitValues;
  mapping(uint => uint) public itemIdToCelebId;

  event Transfer(address indexed from, address indexed to, uint itemId);
  event Approval(address indexed owner, address indexed approved, uint itemId);
  event ItemSold(uint itemId, uint oldPrice, uint newPrice, string itemName, address prevOwner, address newOwner);
  event TransferToWinner(uint itemId, uint oldPrice, uint newPrice, string itemName, address prevOwner, address newOwner);

  function KpopItem() public {
    author = msg.sender;
    coauthor = msg.sender;
  }

  function _transfer(address _from, address _to, uint _itemId) private {
    require(ownerOf(_itemId) == _from);
    require(!isNullAddress(_to));
    require(balanceOf(_from) > 0);

    uint prevBalances = balanceOf(_from) + balanceOf(_to);
    itemIdToOwner[_itemId] = _to;
    userToNumItems[_from]--;
    userToNumItems[_to]++;

    delete itemIdToApprovedRecipient[_itemId];

    Transfer(_from, _to, _itemId);

    assert(balanceOf(_from) + balanceOf(_to) == prevBalances);
  }

  function buy(uint _itemId) payable public {
    address prevOwner = ownerOf(_itemId);
    uint currentPrice = itemIdToPrice[_itemId];

    require(prevOwner != msg.sender);
    require(!isNullAddress(msg.sender));
    require(msg.value >= currentPrice);

    // Set dividend
    uint dividend = uint(SafeMath.div(SafeMath.mul(currentPrice, DIVIDEND), 100));

    // Take a cut
    uint payment = uint(SafeMath.div(SafeMath.mul(currentPrice, 90), 100));

    uint leftover = SafeMath.sub(msg.value, currentPrice);
    uint newPrice;

    _transfer(prevOwner, msg.sender, _itemId);

    if (currentPrice < GROWTH_BUMP) {
      newPrice = SafeMath.mul(currentPrice, 2);
    } else {
      newPrice = SafeMath.div(SafeMath.mul(currentPrice, PRICE_INCREASE_SCALE), 100);
    }

    itemIdToPrice[_itemId] = newPrice;

    // Pay the prev owner of the item
    if (prevOwner != address(this)) {
      prevOwner.transfer(payment);
    }

    // Pay dividend to the current owner of the celeb that's connected to the item
    uint celebId = celebOf(_itemId);
    KpopCeleb KPOP_CELEB = KpopCeleb(KPOP_CELEB_CONTRACT_ADDRESS);
    address celebOwner = KPOP_CELEB.ownerOf(celebId);
    if (celebOwner != address(this) && !isNullAddress(celebOwner)) {
      celebOwner.transfer(dividend);
    }

    ItemSold(_itemId, currentPrice, newPrice,
      items[_itemId].name, prevOwner, msg.sender);

    msg.sender.transfer(leftover);
  }

  function balanceOf(address _owner) public view returns (uint balance) {
    return userToNumItems[_owner];
  }

  function ownerOf(uint _itemId) public view returns (address addr) {
    return itemIdToOwner[_itemId];
  }

  function celebOf(uint _itemId) public view returns (uint celebId) {
    return itemIdToCelebId[_itemId];
  }

  function totalSupply() public view returns (uint total) {
    return items.length;
  }

  function transfer(address _to, uint _itemId) public {
    _transfer(msg.sender, _to, _itemId);
  }

  /** START FUNCTIONS FOR AUTHORS **/

  function createItem(string _name, uint _price, uint _celebId, address _owner, uint[6] _traitValues) public onlyManufacturer {
    require(_price >= MIN_STARTING_PRICE);

    address owner = _owner == 0x0 ? author : _owner;
    uint itemId = items.push(Item(_name)) - 1;
    itemIdToOwner[itemId] = owner;
    itemIdToPrice[itemId] = _price;
    itemIdToCelebId[itemId] = _celebId;
    itemIdToTraitValues[itemId] = _traitValues; // TODO: fetch celeb traits later
    userToNumItems[owner]++;
  }

  function updateItem(uint _itemId, string _name, uint[6] _traitValues) public onlyAuthors {
    require(_itemId >= 0 && _itemId < totalSupply());

    items[_itemId].name = _name;
    itemIdToTraitValues[_itemId] = _traitValues;
  }

  function withdraw(uint _amount, address _to) public onlyAuthors {
    require(!isNullAddress(_to));
    require(_amount <= this.balance);

    _to.transfer(_amount);
  }

  function withdrawAll() public onlyAuthors {
    require(author != 0x0);
    require(coauthor != 0x0);

    uint halfBalance = uint(SafeMath.div(this.balance, 2));

    author.transfer(halfBalance);
    coauthor.transfer(halfBalance);
  }

  function setCoAuthor(address _coauthor) public onlyAuthor {
    require(!isNullAddress(_coauthor));

    coauthor = _coauthor;
  }

  function setManufacturer(address _manufacturer) public onlyAuthors {
    require(!isNullAddress(_manufacturer));

    manufacturer = _manufacturer;
  }

  /** END FUNCTIONS FOR AUTHORS **/

  function getItem(uint _itemId) public view returns (
    string name,
    uint price,
    address owner,
    uint[6] traitValues,
    uint celebId
  ) {
    name = items[_itemId].name;
    price = itemIdToPrice[_itemId];
    owner = itemIdToOwner[_itemId];
    traitValues = itemIdToTraitValues[_itemId];
    celebId = celebOf(_itemId);
  }

  /** START FUNCTIONS RELATED TO EXTERNAL CONTRACT INTERACTIONS **/

  function approve(address _to, uint _itemId) public {
    require(msg.sender == ownerOf(_itemId));

    itemIdToApprovedRecipient[_itemId] = _to;

    Approval(msg.sender, _to, _itemId);
  }

  function transferFrom(address _from, address _to, uint _itemId) public {
    require(ownerOf(_itemId) == _from);
    require(isApproved(_to, _itemId));
    require(!isNullAddress(_to));

    _transfer(_from, _to, _itemId);
  }

  function takeOwnership(uint _itemId) public {
    require(!isNullAddress(msg.sender));
    require(isApproved(msg.sender, _itemId));

    address currentOwner = itemIdToOwner[_itemId];

    _transfer(currentOwner, msg.sender, _itemId);
  }

  function transferToWinner(address _winner, address _loser, uint _itemId) public onlyArena {
    require(!isNullAddress(_winner));
    require(!isNullAddress(_loser));
    require(ownerOf(_itemId) == _loser);

    // Reset item price
    uint oldPrice = itemIdToPrice[_itemId];
    uint newPrice = MIN_STARTING_PRICE;
    itemIdToPrice[_itemId] = newPrice;

    _transfer(_loser, _winner, _itemId);

    TransferToWinner(_itemId, oldPrice, newPrice, items[_itemId].name, _loser, _winner);
  }

  /** END FUNCTIONS RELATED TO EXTERNAL CONTRACT INTERACTIONS **/

  function implementsERC721() public pure returns (bool) {
    return true;
  }

  /** MODIFIERS **/

  modifier onlyAuthor() {
    require(msg.sender == author);
    _;
  }

  modifier onlyAuthors() {
    require(msg.sender == author || msg.sender == coauthor);
    _;
  }

  modifier onlyManufacturer() {
    require(msg.sender == author || msg.sender == coauthor || msg.sender == manufacturer);
    _;
  }

  modifier onlyArena() {
    require(msg.sender == KPOP_ARENA_CONTRACT_ADDRESS);
    _;
  }

  /** FUNCTIONS THAT WONT BE USED FREQUENTLY **/

  function setMinStartingPrice(uint _price) public onlyAuthors {
    MIN_STARTING_PRICE = _price;
  }

  function setGrowthBump(uint _bump) public onlyAuthors {
    GROWTH_BUMP = _bump;
  }

  function setDividend(uint _dividend) public onlyAuthors {
    DIVIDEND = _dividend;
  }

  function setPriceIncreaseScale(uint _scale) public onlyAuthors {
    PRICE_INCREASE_SCALE = _scale;
  }

  function setKpopCelebContractAddress(address _address) public onlyAuthors {
    KPOP_CELEB_CONTRACT_ADDRESS = _address;
  }

  function setKpopArenaContractAddress(address _address) public onlyAuthors {
    KPOP_ARENA_CONTRACT_ADDRESS = _address;
  }

  /** PRIVATE FUNCTIONS **/

  function isApproved(address _to, uint _itemId) private view returns (bool) {
    return itemIdToApprovedRecipient[_itemId] == _to;
  }

  function isNullAddress(address _addr) private pure returns (bool) {
    return _addr == 0x0;
  }
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"name":"_amount","type":"uint256"},{"name":"_to","type":"address"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_itemId","type":"uint256"}],"name":"approve","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_bump","type":"uint256"}],"name":"setGrowthBump","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"implementsERC721","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"total","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"PRICE_INCREASE_SCALE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_itemId","type":"uint256"}],"name":"transferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"userToNumItems","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"coauthor","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_itemId","type":"uint256"}],"name":"getItem","outputs":[{"name":"name","type":"string"},{"name":"price","type":"uint256"},{"name":"owner","type":"address"},{"name":"traitValues","type":"uint256[6]"},{"name":"celebId","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_coauthor","type":"address"}],"name":"setCoAuthor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_itemId","type":"uint256"},{"name":"_name","type":"string"},{"name":"_traitValues","type":"uint256[6]"}],"name":"updateItem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"string"},{"name":"_price","type":"uint256"},{"name":"_celebId","type":"uint256"},{"name":"_owner","type":"address"},{"name":"_traitValues","type":"uint256[6]"}],"name":"createItem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_itemId","type":"uint256"}],"name":"ownerOf","outputs":[{"name":"addr","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"setKpopCelebContractAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"itemIdToApprovedRecipient","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_itemId","type":"uint256"}],"name":"celebOf","outputs":[{"name":"celebId","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"KPOP_CELEB_CONTRACT_ADDRESS","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_price","type":"uint256"}],"name":"setMinStartingPrice","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"manufacturer","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"itemIdToOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MIN_STARTING_PRICE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdrawAll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"NAME","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"author","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_itemId","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_scale","type":"uint256"}],"name":"setPriceIncreaseScale","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_itemId","type":"uint256"}],"name":"takeOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"itemIdToCelebId","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"name":"itemIdToTraitValues","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"items","outputs":[{"name":"name","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_manufacturer","type":"address"}],"name":"setManufacturer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"GROWTH_BUMP","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"itemIdToPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_winner","type":"address"},{"name":"_loser","type":"address"},{"name":"_itemId","type":"uint256"}],"name":"transferToWinner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"setKpopArenaContractAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_itemId","type":"uint256"}],"name":"buy","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_dividend","type":"uint256"}],"name":"setDividend","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"SYMBOL","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"KPOP_ARENA_CONTRACT_ADDRESS","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"DIVIDEND","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"itemId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"approved","type":"address"},{"indexed":false,"name":"itemId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"itemId","type":"uint256"},{"indexed":false,"name":"oldPrice","type":"uint256"},{"indexed":false,"name":"newPrice","type":"uint256"},{"indexed":false,"name":"itemName","type":"string"},{"indexed":false,"name":"prevOwner","type":"address"},{"indexed":false,"name":"newOwner","type":"address"}],"name":"ItemSold","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"itemId","type":"uint256"},{"indexed":false,"name":"oldPrice","type":"uint256"},{"indexed":false,"name":"newPrice","type":"uint256"},{"indexed":false,"name":"itemName","type":"string"},{"indexed":false,"name":"prevOwner","type":"address"},{"indexed":false,"name":"newOwner","type":"address"}],"name":"TransferToWinner","type":"event"}]

606060405267058d15e17628000060035566038d7ea4c68000600455607860055560036006556000600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034156100b457600080fd5b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612fb7806101446000396000f300606060405260043610610203576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168062f714ce14610208578063095ea7b31461024a5780630d9632351461028c5780631051db34146102af57806318160ddd146102dc5780631bd8b0411461030557806323b872dd1461032e57806329b1f0231461038f5780632bddc31c146103dc5780633129e7731461043157806343d1498b1461053d57806355e40d981461057657806356fadf8e146106085780636352211e146106c25780636571797d14610725578063676bc74f1461075e5780636d06bf0d146107c15780636fad0a4d146107f85780636fba75441461084d57806370a082311461087057806374754282146108bd57806375ff86f2146109125780637c67fb9f14610975578063853828b61461099e578063a3f4df7e146109b3578063a6c3e6b914610a41578063a9059cbb14610a96578063aad99ef114610ad8578063b2e6ceeb14610afb578063b413c5b014610b1e578063bb5661e314610b55578063bfb231d214610b95578063c11dde0d14610c4e578063c43ae98314610c87578063c453a80114610cb0578063d25dc05614610ce7578063d8dfba9314610d48578063d96a094a14610d81578063e091f45314610d99578063f76f8d7814610dbc578063fa4de09414610e4a578063fc3fc16814610e9f575b600080fd5b341561021357600080fd5b610248600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610ec8565b005b341561025557600080fd5b61028a600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610ffa565b005b341561029757600080fd5b6102ad60048080359060200190919050506110f7565b005b34156102ba57600080fd5b6102c26111b4565b604051808215151515815260200191505060405180910390f35b34156102e757600080fd5b6102ef6111bd565b6040518082815260200191505060405180910390f35b341561031057600080fd5b6103186111ca565b6040518082815260200191505060405180910390f35b341561033957600080fd5b61038d600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506111d0565b005b341561039a57600080fd5b6103c6600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061124c565b6040518082815260200191505060405180910390f35b34156103e757600080fd5b6103ef611264565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561043c57600080fd5b610452600480803590602001909190505061128a565b60405180806020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184600660200280838360005b838110156104b957808201518184015260208101905061049e565b50505050905001838152602001828103825287818151815260200191508051906020019080838360005b838110156104fe5780820151818401526020810190506104e3565b50505050905090810190601f16801561052b5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b341561054857600080fd5b610574600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611408565b005b341561058157600080fd5b610606600480803590602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091908060c0019060068060200260405190810160405280929190826006602002808284378201915050505050919050506114bc565b005b341561061357600080fd5b6106c0600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908060c0019060068060200260405190810160405280929190826006602002808284378201915050505050919050506115eb565b005b34156106cd57600080fd5b6106e360048080359060200190919050506118aa565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561073057600080fd5b61075c600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506118e7565b005b341561076957600080fd5b61077f60048080359060200190919050506119de565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156107cc57600080fd5b6107e26004808035906020019091905050611a11565b6040518082815260200191505060405180910390f35b341561080357600080fd5b61080b611a2e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561085857600080fd5b61086e6004808035906020019091905050611a54565b005b341561087b57600080fd5b6108a7600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611b11565b6040518082815260200191505060405180910390f35b34156108c857600080fd5b6108d0611b5a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561091d57600080fd5b6109336004808035906020019091905050611b80565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561098057600080fd5b610988611bb3565b6040518082815260200191505060405180910390f35b34156109a957600080fd5b6109b1611bb9565b005b34156109be57600080fd5b6109c6611de7565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a065780820151818401526020810190506109eb565b50505050905090810190601f168015610a335780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3415610a4c57600080fd5b610a54611e20565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610aa157600080fd5b610ad6600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611e45565b005b3415610ae357600080fd5b610af96004808035906020019091905050611e54565b005b3415610b0657600080fd5b610b1c6004808035906020019091905050611f11565b005b3415610b2957600080fd5b610b3f6004808035906020019091905050611f82565b6040518082815260200191505060405180910390f35b3415610b6057600080fd5b610b7f6004808035906020019091908035906020019091905050611f9a565b6040518082815260200191505060405180910390f35b3415610ba057600080fd5b610bb66004808035906020019091905050611fc1565b6040518080602001828103825283818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015610c3f5780601f10610c1457610100808354040283529160200191610c3f565b820191906000526020600020905b815481529060010190602001808311610c2257829003601f168201915b50509250505060405180910390f35b3415610c5957600080fd5b610c85600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611fea565b005b3415610c9257600080fd5b610c9a6120f6565b6040518082815260200191505060405180910390f35b3415610cbb57600080fd5b610cd160048080359060200190919050506120fc565b6040518082815260200191505060405180910390f35b3415610cf257600080fd5b610d46600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612114565b005b3415610d5357600080fd5b610d7f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612379565b005b610d976004808035906020019091905050612470565b005b3415610da457600080fd5b610dba60048080359060200190919050506128f4565b005b3415610dc757600080fd5b610dcf6129b1565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610e0f578082015181840152602081019050610df4565b50505050905090810190601f168015610e3c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3415610e5557600080fd5b610e5d6129ea565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610eaa57600080fd5b610eb2612a10565b6040518082815260200191505060405180910390f35b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610f705750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515610f7b57600080fd5b610f8481612a16565b151515610f9057600080fd5b3073ffffffffffffffffffffffffffffffffffffffff16318211151515610fb657600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501515610ff657600080fd5b5050565b611003816118aa565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561103c57600080fd5b81600d600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a35050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061119f5750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156111aa57600080fd5b8060038190555050565b60006001905090565b6000600980549050905090565b60055481565b8273ffffffffffffffffffffffffffffffffffffffff166111f0826118aa565b73ffffffffffffffffffffffffffffffffffffffff1614151561121257600080fd5b61121c8282612a38565b151561122757600080fd5b61123082612a16565b15151561123c57600080fd5b611247838383612aa4565b505050565b600c6020528060005260406000206000915090505481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611292612d47565b60008061129d612d5b565b60006009868154811015156112ae57fe5b90600052602060002090016000018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113505780601f1061132557610100808354040283529160200191611350565b820191906000526020600020905b81548152906001019060200180831161133357829003601f168201915b50505050509450600b6000878152602001908152602001600020549350600a600087815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169250600e60008781526020019081526020016000206006806020026040519081016040528092919082600680156113ed576020028201915b8154815260200190600101908083116113d9575b505050505091506113fd86611a11565b905091939590929450565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561146357600080fd5b61146c81612a16565b15151561147857600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806115645750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561156f57600080fd5b6000831015801561158657506115836111bd565b83105b151561159157600080fd5b816009848154811015156115a157fe5b906000526020600020900160000190805190602001906115c2929190612d83565b5080600e60008581526020019081526020016000209060066115e5929190612e03565b50505050565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806116965750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806116ee5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156116f957600080fd5b600454861015151561170a57600080fd5b60008473ffffffffffffffffffffffffffffffffffffffff161461172e5783611751565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b91506001600980548060010182816117699190612e43565b916000526020600020900160006020604051908101604052808c815250909190915060008201518160000190805190602001906117a7929190612e6f565b50505003905081600a600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555085600b60008381526020019081526020016000208190555084600f60008381526020019081526020016000208190555082600e6000838152602001908152602001600020906006611851929190612e03565b50600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600101919050555050505050505050565b6000600a600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061198f5750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561199a57600080fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600d6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600f6000838152602001908152602001600020549050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611afc5750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515611b0757600080fd5b8060048190555050565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60045481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611c635750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515611c6e57600080fd5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515611cb557600080fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515611cfd57600080fd5b611d1f3073ffffffffffffffffffffffffffffffffffffffff16316002612cd8565b90506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515611d8257600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515611de457600080fd5b50565b6040805190810160405280600881526020017f4b706f704974656d00000000000000000000000000000000000000000000000081525081565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611e50338383612aa4565b5050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611efc5750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515611f0757600080fd5b8060058190555050565b6000611f1c33612a16565b151515611f2857600080fd5b611f323383612a38565b1515611f3d57600080fd5b600a600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050611f7e813384612aa4565b5050565b600f6020528060005260406000206000915090505481565b600e60205281600052604060002081600681101515611fb557fe5b01600091509150505481565b600981815481101515611fd057fe5b906000526020600020900160009150905080600001905081565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806120925750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561209d57600080fd5b6120a681612a16565b1515156120b257600080fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60035481565b600b6020528060005260406000206000915090505481565b600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561217357600080fd5b61217c85612a16565b15151561218857600080fd5b61219184612a16565b15151561219d57600080fd5b8373ffffffffffffffffffffffffffffffffffffffff166121bd846118aa565b73ffffffffffffffffffffffffffffffffffffffff161415156121df57600080fd5b600b6000848152602001908152602001600020549150600454905080600b60008581526020019081526020016000208190555061221d848685612aa4565b7f6ec190b945f368aacc027dd20705085b08524cbc9cbca6f8f8b1eb85c9d3ff1c83838360098781548110151561225057fe5b9060005260206000209001600001888a60405180878152602001868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182810382528581815460018160011615610100020316600290048152602001915080546001816001161561010002031660029004801561235f5780601f106123345761010080835404028352916020019161235f565b820191906000526020600020905b81548152906001019060200180831161234257829003601f168201915b505097505050505050505060405180910390a15050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806124215750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561242c57600080fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008060008060008060006124878a6118aa565b9850600b60008b81526020019081526020016000205497503373ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16141515156124da57600080fd5b6124e333612a16565b1515156124ef57600080fd5b8734101515156124fe57600080fd5b61251461250d89600654612cf3565b6064612cd8565b965061252b61252489605a612cf3565b6064612cd8565b95506125373489612d2e565b945061254489338c612aa4565b60035488101561256057612559886002612cf3565b9350612579565b61257661256f89600554612cf3565b6064612cd8565b93505b83600b60008c8152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16141515612607578873ffffffffffffffffffffffffffffffffffffffff166108fc879081150290604051600060405180830381858888f19350505050151561260657600080fd5b5b6126108a611a11565b9250600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508173ffffffffffffffffffffffffffffffffffffffff16636352211e846000604051602001526040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15156126ae57600080fd5b6102c65a03f115156126bf57600080fd5b5050506040518051905090503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415801561270d575061270b81612a16565b155b15612753578073ffffffffffffffffffffffffffffffffffffffff166108fc889081150290604051600060405180830381858888f19350505050151561275257600080fd5b5b7f23a9360ab6e1a14ec2c4c4bc5a381ee7f6e7024b8b4db4692c15d338bcb179598a898660098e81548110151561278657fe5b90600052602060002090016000018d3360405180878152602001868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281038252858181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156128955780601f1061286a57610100808354040283529160200191612895565b820191906000526020600020905b81548152906001019060200180831161287857829003601f168201915b505097505050505050505060405180910390a13373ffffffffffffffffffffffffffffffffffffffff166108fc869081150290604051600060405180830381858888f1935050505015156128e857600080fd5b50505050505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061299c5750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156129a757600080fd5b8060068190555050565b6040805190810160405280600881526020017f4b706f704974656d00000000000000000000000000000000000000000000000081525081565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60065481565b6000808273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60008273ffffffffffffffffffffffffffffffffffffffff16600d600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614905092915050565b60008373ffffffffffffffffffffffffffffffffffffffff16612ac6836118aa565b73ffffffffffffffffffffffffffffffffffffffff16141515612ae857600080fd5b612af183612a16565b151515612afd57600080fd5b6000612b0885611b11565b111515612b1457600080fd5b612b1d83611b11565b612b2685611b11565b01905082600a600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600190039190505550600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550600d600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690558273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a380612cbf84611b11565b612cc886611b11565b01141515612cd257fe5b50505050565b6000808284811515612ce657fe5b0490508091505092915050565b6000806000841415612d085760009150612d27565b8284029050828482811515612d1957fe5b04141515612d2357fe5b8091505b5092915050565b6000828211151515612d3c57fe5b818303905092915050565b602060405190810160405280600081525090565b60c0604051908101604052806006905b6000815260200190600190039081612d6b5790505090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612dc457805160ff1916838001178555612df2565b82800160010185558215612df2579182015b82811115612df1578251825591602001919060010190612dd6565b5b509050612dff9190612eef565b5090565b8260068101928215612e32579160200282015b82811115612e31578251825591602001919060010190612e16565b5b509050612e3f9190612eef565b5090565b815481835581811511612e6a57818360005260206000209182019101612e699190612f14565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612eb057805160ff1916838001178555612ede565b82800160010185558215612ede579182015b82811115612edd578251825591602001919060010190612ec2565b5b509050612eeb9190612eef565b5090565b612f1191905b80821115612f0d576000816000905550600101612ef5565b5090565b90565b612f4091905b80821115612f3c5760008082016000612f339190612f43565b50600101612f1a565b5090565b90565b50805460018160011615610100020316600290046000825580601f10612f695750612f88565b601f016020900490600052602060002090810190612f879190612eef565b5b505600a165627a7a72305820d9af4b217ae3b7293f290fd48613320fd2a7d909473085d70b035e30d0d905130029

Deployed Bytecode

0x606060405260043610610203576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168062f714ce14610208578063095ea7b31461024a5780630d9632351461028c5780631051db34146102af57806318160ddd146102dc5780631bd8b0411461030557806323b872dd1461032e57806329b1f0231461038f5780632bddc31c146103dc5780633129e7731461043157806343d1498b1461053d57806355e40d981461057657806356fadf8e146106085780636352211e146106c25780636571797d14610725578063676bc74f1461075e5780636d06bf0d146107c15780636fad0a4d146107f85780636fba75441461084d57806370a082311461087057806374754282146108bd57806375ff86f2146109125780637c67fb9f14610975578063853828b61461099e578063a3f4df7e146109b3578063a6c3e6b914610a41578063a9059cbb14610a96578063aad99ef114610ad8578063b2e6ceeb14610afb578063b413c5b014610b1e578063bb5661e314610b55578063bfb231d214610b95578063c11dde0d14610c4e578063c43ae98314610c87578063c453a80114610cb0578063d25dc05614610ce7578063d8dfba9314610d48578063d96a094a14610d81578063e091f45314610d99578063f76f8d7814610dbc578063fa4de09414610e4a578063fc3fc16814610e9f575b600080fd5b341561021357600080fd5b610248600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610ec8565b005b341561025557600080fd5b61028a600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610ffa565b005b341561029757600080fd5b6102ad60048080359060200190919050506110f7565b005b34156102ba57600080fd5b6102c26111b4565b604051808215151515815260200191505060405180910390f35b34156102e757600080fd5b6102ef6111bd565b6040518082815260200191505060405180910390f35b341561031057600080fd5b6103186111ca565b6040518082815260200191505060405180910390f35b341561033957600080fd5b61038d600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506111d0565b005b341561039a57600080fd5b6103c6600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061124c565b6040518082815260200191505060405180910390f35b34156103e757600080fd5b6103ef611264565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561043c57600080fd5b610452600480803590602001909190505061128a565b60405180806020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184600660200280838360005b838110156104b957808201518184015260208101905061049e565b50505050905001838152602001828103825287818151815260200191508051906020019080838360005b838110156104fe5780820151818401526020810190506104e3565b50505050905090810190601f16801561052b5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b341561054857600080fd5b610574600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611408565b005b341561058157600080fd5b610606600480803590602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091908060c0019060068060200260405190810160405280929190826006602002808284378201915050505050919050506114bc565b005b341561061357600080fd5b6106c0600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908060c0019060068060200260405190810160405280929190826006602002808284378201915050505050919050506115eb565b005b34156106cd57600080fd5b6106e360048080359060200190919050506118aa565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561073057600080fd5b61075c600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506118e7565b005b341561076957600080fd5b61077f60048080359060200190919050506119de565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156107cc57600080fd5b6107e26004808035906020019091905050611a11565b6040518082815260200191505060405180910390f35b341561080357600080fd5b61080b611a2e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561085857600080fd5b61086e6004808035906020019091905050611a54565b005b341561087b57600080fd5b6108a7600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611b11565b6040518082815260200191505060405180910390f35b34156108c857600080fd5b6108d0611b5a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561091d57600080fd5b6109336004808035906020019091905050611b80565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561098057600080fd5b610988611bb3565b6040518082815260200191505060405180910390f35b34156109a957600080fd5b6109b1611bb9565b005b34156109be57600080fd5b6109c6611de7565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a065780820151818401526020810190506109eb565b50505050905090810190601f168015610a335780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3415610a4c57600080fd5b610a54611e20565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610aa157600080fd5b610ad6600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611e45565b005b3415610ae357600080fd5b610af96004808035906020019091905050611e54565b005b3415610b0657600080fd5b610b1c6004808035906020019091905050611f11565b005b3415610b2957600080fd5b610b3f6004808035906020019091905050611f82565b6040518082815260200191505060405180910390f35b3415610b6057600080fd5b610b7f6004808035906020019091908035906020019091905050611f9a565b6040518082815260200191505060405180910390f35b3415610ba057600080fd5b610bb66004808035906020019091905050611fc1565b6040518080602001828103825283818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015610c3f5780601f10610c1457610100808354040283529160200191610c3f565b820191906000526020600020905b815481529060010190602001808311610c2257829003601f168201915b50509250505060405180910390f35b3415610c5957600080fd5b610c85600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611fea565b005b3415610c9257600080fd5b610c9a6120f6565b6040518082815260200191505060405180910390f35b3415610cbb57600080fd5b610cd160048080359060200190919050506120fc565b6040518082815260200191505060405180910390f35b3415610cf257600080fd5b610d46600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612114565b005b3415610d5357600080fd5b610d7f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612379565b005b610d976004808035906020019091905050612470565b005b3415610da457600080fd5b610dba60048080359060200190919050506128f4565b005b3415610dc757600080fd5b610dcf6129b1565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610e0f578082015181840152602081019050610df4565b50505050905090810190601f168015610e3c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3415610e5557600080fd5b610e5d6129ea565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610eaa57600080fd5b610eb2612a10565b6040518082815260200191505060405180910390f35b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610f705750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515610f7b57600080fd5b610f8481612a16565b151515610f9057600080fd5b3073ffffffffffffffffffffffffffffffffffffffff16318211151515610fb657600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501515610ff657600080fd5b5050565b611003816118aa565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561103c57600080fd5b81600d600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a35050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061119f5750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156111aa57600080fd5b8060038190555050565b60006001905090565b6000600980549050905090565b60055481565b8273ffffffffffffffffffffffffffffffffffffffff166111f0826118aa565b73ffffffffffffffffffffffffffffffffffffffff1614151561121257600080fd5b61121c8282612a38565b151561122757600080fd5b61123082612a16565b15151561123c57600080fd5b611247838383612aa4565b505050565b600c6020528060005260406000206000915090505481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611292612d47565b60008061129d612d5b565b60006009868154811015156112ae57fe5b90600052602060002090016000018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113505780601f1061132557610100808354040283529160200191611350565b820191906000526020600020905b81548152906001019060200180831161133357829003601f168201915b50505050509450600b6000878152602001908152602001600020549350600a600087815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169250600e60008781526020019081526020016000206006806020026040519081016040528092919082600680156113ed576020028201915b8154815260200190600101908083116113d9575b505050505091506113fd86611a11565b905091939590929450565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561146357600080fd5b61146c81612a16565b15151561147857600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806115645750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561156f57600080fd5b6000831015801561158657506115836111bd565b83105b151561159157600080fd5b816009848154811015156115a157fe5b906000526020600020900160000190805190602001906115c2929190612d83565b5080600e60008581526020019081526020016000209060066115e5929190612e03565b50505050565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806116965750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806116ee5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156116f957600080fd5b600454861015151561170a57600080fd5b60008473ffffffffffffffffffffffffffffffffffffffff161461172e5783611751565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b91506001600980548060010182816117699190612e43565b916000526020600020900160006020604051908101604052808c815250909190915060008201518160000190805190602001906117a7929190612e6f565b50505003905081600a600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555085600b60008381526020019081526020016000208190555084600f60008381526020019081526020016000208190555082600e6000838152602001908152602001600020906006611851929190612e03565b50600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600101919050555050505050505050565b6000600a600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061198f5750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561199a57600080fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600d6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600f6000838152602001908152602001600020549050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611afc5750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515611b0757600080fd5b8060048190555050565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60045481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611c635750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515611c6e57600080fd5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515611cb557600080fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515611cfd57600080fd5b611d1f3073ffffffffffffffffffffffffffffffffffffffff16316002612cd8565b90506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515611d8257600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515611de457600080fd5b50565b6040805190810160405280600881526020017f4b706f704974656d00000000000000000000000000000000000000000000000081525081565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611e50338383612aa4565b5050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611efc5750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515611f0757600080fd5b8060058190555050565b6000611f1c33612a16565b151515611f2857600080fd5b611f323383612a38565b1515611f3d57600080fd5b600a600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050611f7e813384612aa4565b5050565b600f6020528060005260406000206000915090505481565b600e60205281600052604060002081600681101515611fb557fe5b01600091509150505481565b600981815481101515611fd057fe5b906000526020600020900160009150905080600001905081565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806120925750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561209d57600080fd5b6120a681612a16565b1515156120b257600080fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60035481565b600b6020528060005260406000206000915090505481565b600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561217357600080fd5b61217c85612a16565b15151561218857600080fd5b61219184612a16565b15151561219d57600080fd5b8373ffffffffffffffffffffffffffffffffffffffff166121bd846118aa565b73ffffffffffffffffffffffffffffffffffffffff161415156121df57600080fd5b600b6000848152602001908152602001600020549150600454905080600b60008581526020019081526020016000208190555061221d848685612aa4565b7f6ec190b945f368aacc027dd20705085b08524cbc9cbca6f8f8b1eb85c9d3ff1c83838360098781548110151561225057fe5b9060005260206000209001600001888a60405180878152602001868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182810382528581815460018160011615610100020316600290048152602001915080546001816001161561010002031660029004801561235f5780601f106123345761010080835404028352916020019161235f565b820191906000526020600020905b81548152906001019060200180831161234257829003601f168201915b505097505050505050505060405180910390a15050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806124215750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561242c57600080fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008060008060008060006124878a6118aa565b9850600b60008b81526020019081526020016000205497503373ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16141515156124da57600080fd5b6124e333612a16565b1515156124ef57600080fd5b8734101515156124fe57600080fd5b61251461250d89600654612cf3565b6064612cd8565b965061252b61252489605a612cf3565b6064612cd8565b95506125373489612d2e565b945061254489338c612aa4565b60035488101561256057612559886002612cf3565b9350612579565b61257661256f89600554612cf3565b6064612cd8565b93505b83600b60008c8152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16141515612607578873ffffffffffffffffffffffffffffffffffffffff166108fc879081150290604051600060405180830381858888f19350505050151561260657600080fd5b5b6126108a611a11565b9250600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508173ffffffffffffffffffffffffffffffffffffffff16636352211e846000604051602001526040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15156126ae57600080fd5b6102c65a03f115156126bf57600080fd5b5050506040518051905090503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415801561270d575061270b81612a16565b155b15612753578073ffffffffffffffffffffffffffffffffffffffff166108fc889081150290604051600060405180830381858888f19350505050151561275257600080fd5b5b7f23a9360ab6e1a14ec2c4c4bc5a381ee7f6e7024b8b4db4692c15d338bcb179598a898660098e81548110151561278657fe5b90600052602060002090016000018d3360405180878152602001868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281038252858181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156128955780601f1061286a57610100808354040283529160200191612895565b820191906000526020600020905b81548152906001019060200180831161287857829003601f168201915b505097505050505050505060405180910390a13373ffffffffffffffffffffffffffffffffffffffff166108fc869081150290604051600060405180830381858888f1935050505015156128e857600080fd5b50505050505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061299c5750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156129a757600080fd5b8060068190555050565b6040805190810160405280600881526020017f4b706f704974656d00000000000000000000000000000000000000000000000081525081565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60065481565b6000808273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60008273ffffffffffffffffffffffffffffffffffffffff16600d600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614905092915050565b60008373ffffffffffffffffffffffffffffffffffffffff16612ac6836118aa565b73ffffffffffffffffffffffffffffffffffffffff16141515612ae857600080fd5b612af183612a16565b151515612afd57600080fd5b6000612b0885611b11565b111515612b1457600080fd5b612b1d83611b11565b612b2685611b11565b01905082600a600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600190039190505550600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550600d600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690558273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a380612cbf84611b11565b612cc886611b11565b01141515612cd257fe5b50505050565b6000808284811515612ce657fe5b0490508091505092915050565b6000806000841415612d085760009150612d27565b8284029050828482811515612d1957fe5b04141515612d2357fe5b8091505b5092915050565b6000828211151515612d3c57fe5b818303905092915050565b602060405190810160405280600081525090565b60c0604051908101604052806006905b6000815260200190600190039081612d6b5790505090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612dc457805160ff1916838001178555612df2565b82800160010185558215612df2579182015b82811115612df1578251825591602001919060010190612dd6565b5b509050612dff9190612eef565b5090565b8260068101928215612e32579160200282015b82811115612e31578251825591602001919060010190612e16565b5b509050612e3f9190612eef565b5090565b815481835581811511612e6a57818360005260206000209182019101612e699190612f14565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612eb057805160ff1916838001178555612ede565b82800160010185558215612ede579182015b82811115612edd578251825591602001919060010190612ec2565b5b509050612eeb9190612eef565b5090565b612f1191905b80821115612f0d576000816000905550600101612ef5565b5090565b90565b612f4091905b80821115612f3c5760008082016000612f339190612f43565b50600101612f1a565b5090565b90565b50805460018160011615610100020316600290046000825580601f10612f695750612f88565b601f016020900490600052602060002090810190612f879190612eef565b5b505600a165627a7a72305820d9af4b217ae3b7293f290fd48613320fd2a7d909473085d70b035e30d0d905130029

Swarm Source

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