ETH Price: $3,133.57 (+1.79%)

Token

Hands Of Steel (STEEL)
 

Overview

Max Total Supply

9,242,674 STEEL

Holders

913

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 0 Decimals)

Balance
0 STEEL

Value
$0.00
0xec72015fcc75b26c486364ab76E4677650DE76E6
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:
Token

Compiler Version
v0.5.17+commit.d19bba13

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-08-23
*/

/**
  _______ _________ _______  _______     __________________
(  ____ \\__   __/(  ___  )(  ____ )    \__   __/\__   __/
| (    \/   ) (   | (   ) || (    )|       ) (      ) (   
| (_____    | |   | |   | || (____)|       | |      | |   
(_____  )   | |   | |   | ||  _____)       | |      | |   
      ) |   | |   | |   | || (             | |      | |   
/\____) |   | |   | (___) || )          ___) (___   | |   
\_______)   )_(   (_______)|/           \_______/   )_(   

Selling Is Easy.
Holding Is Hard.
Let's Change That.
Our Seller Transfer Only Protocol Initiates Tax (STOP IT) actively taxes sellers while rewarding holders.

https://handsofsteel.money
https://t.me/handsofsteel
*/

pragma solidity ^0.5.0;



interface IERC20 {
  function totalSupply() external view returns (uint256);
  function balanceOf(address who) external view returns (uint256);
  function allowance(address owner, address spender) external view returns (uint256);
  function transfer(address to, uint256 value) external returns (bool);
  function approve(address spender, uint256 value) external returns (bool);
  function transferFrom(address from, address to, uint256 value) external returns (bool);

  event Transfer(address indexed from, address indexed to, uint256 value);
  event Approval(address indexed owner, address indexed spender, uint256 value);
}

library SafeMath {
  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;
  }

  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a / b;
    return c;
  }

  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    assert(b <= a);
    return a - b;
  }

  function add(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a + b;
    assert(c >= a);
    return c;
  }

  function ceil(uint256 a, uint256 m) internal pure returns (uint256) {
    uint256 c = add(a,m);
    uint256 d = sub(c,1);
    return mul(div(d,m),m);
  }
}

contract ERC20Detailed is IERC20 {

  string private _name;
  string private _symbol;
  uint8 private _decimals;

  constructor(string memory name, string memory symbol, uint8 decimals) public {
    _name = name;
    _symbol = symbol;
    _decimals = decimals;
  }

  function name() public view returns(string memory) {
    return _name;
  }

  function symbol() public view returns(string memory) {
    return _symbol;
  }

  function decimals() public view returns(uint8) {
    return _decimals;
  }
}

contract Ownership is ERC20Detailed {
   
 address public owner;


  function Ownable() public {
    owner = 0x9fB77B849d1ba7f5b4277f3efaA09E095C7795e9;
  
  }
  

  modifier onlyOwner() {
    require(msg.sender == owner);
    _;
  }


  
  function transferOwnership(address newOwner) public onlyOwner 
  {
    require(newOwner != address(0));      
    owner = newOwner;
  }
  

}



contract Whitelist is Ownership {
    mapping(address => bool) whitelist;
    event AddedToWhitelist(address indexed account);
    event RemovedFromWhitelist(address indexed account);

    modifier onlyWhitelisted() {
        require(isWhitelisted(msg.sender));
        _;
    }

    function add(address _address) public onlyOwner {
        whitelist[_address] = true;
        emit AddedToWhitelist(_address);
    }

    function remove(address _address) public onlyOwner {
        whitelist[_address] = false;
        emit RemovedFromWhitelist(_address);
    }

    function isWhitelisted(address _address) public view returns(bool) {
        return whitelist[_address];
    }
    function InitWhitelist() public onlyOwner {
        whitelist[address(this)] = true;
        whitelist[0xb1625d8bAE1e9bc3964227B668f81c2f3d4B9A04] = true;
        whitelist[0x9fB77B849d1ba7f5b4277f3efaA09E095C7795e9] = true;
        whitelist[0xdd783744B4AeE7be6ecac8e5f48AC3Dce3287470] = true;
       
    emit AddedToWhitelist(address(this)); //Contract
    emit AddedToWhitelist(0xb1625d8bAE1e9bc3964227B668f81c2f3d4B9A04); //Marketing
    emit AddedToWhitelist(0x9fB77B849d1ba7f5b4277f3efaA09E095C7795e9); //Drop Wallet
    emit AddedToWhitelist(0xdd783744B4AeE7be6ecac8e5f48AC3Dce3287470); //Airdrop contract
  
  }
}
contract ERC1132 is Whitelist  {
    /**
     * @dev Reasons why a user's tokens have been locked
     */
    mapping(address => bytes32[]) public lockReason;

    /**
     * @dev locked token structure
     */
    struct lockToken {
        uint256 amount;
        uint256 validity;
        bool claimed;
    }

    /**
     * @dev Holds number & validity of tokens locked for a given reason for
     *      a specified address
     */
    mapping(address => mapping(bytes32 => lockToken)) public locked;

    /**
     * @dev Records data of all the tokens Locked
     */
    event Locked(
        address indexed _of,
        bytes32 indexed _reason,
        uint256 _amount,
        uint256 _validity
    );

    /**
     * @dev Records data of all the tokens unlocked
     */
    event Unlocked(
        address indexed _of,
        bytes32 indexed _reason,
        uint256 _amount
    );
    
    /**
     * @dev Locks a specified amount of tokens against an address,
     *      for a specified reason and time
     * @param _reason The reason to lock tokens
     * @param _amount Number of tokens to be locked
     * @param _time Lock time in seconds
     */
    function lock(bytes32 _reason, uint256 _amount, uint256 _time)
        public returns (bool);
  
    /**
     * @dev Returns tokens locked for a specified address for a
     *      specified reason
     *
     * @param _of The address whose tokens are locked
     * @param _reason The reason to query the lock tokens for
     */
    function tokensLocked(address _of, bytes32 _reason)
        public view returns (uint256 amount);
    
    /**
     * @dev Returns tokens locked for a specified address for a
     *      specified reason at a specific time
     *
     * @param _of The address whose tokens are locked
     * @param _reason The reason to query the lock tokens for
     * @param _time The timestamp to query the lock tokens for
     */
    function tokensLockedAtTime(address _of, bytes32 _reason, uint256 _time)
        public view returns (uint256 amount);
    
    /**
     * @dev Returns total tokens held by an address (locked + transferable)
     * @param _of The address to query the total balance of
     */
    function totalBalanceOf(address _of)
        public view returns (uint256 amount);
    
    /**
     * @dev Extends lock for a specified reason and time
     * @param _reason The reason to lock tokens
     * @param _time Lock extension time in seconds
     */
    function extendLock(bytes32 _reason, uint256 _time)
        public returns (bool);
    
    /**
     * @dev Increase number of tokens locked for a specified reason
     * @param _reason The reason to lock tokens
     * @param _amount Number of tokens to be increased
     */
    function increaseLockAmount(bytes32 _reason, uint256 _amount)
        public returns (bool);

    /**
     * @dev Returns unlockable tokens for a specified address for a specified reason
     * @param _of The address to query the the unlockable token count of
     * @param _reason The reason to query the unlockable tokens for
     */
    function tokensUnlockable(address _of, bytes32 _reason)
        public view returns (uint256 amount);
 
    /**
     * @dev Unlocks the unlockable tokens of a specified address
     * @param _of Address of user, claiming back unlockable tokens
     */
    function unlock(address _of)
        public returns (uint256 unlockableTokens);

    /**
     * @dev Gets the unlockable tokens of a specified address
     * @param _of The address to query the the unlockable token count of
     */
    function getUnlockableTokens(address _of)
        public view returns (uint256 unlockableTokens);

}

  contract Token is ERC1132{

  using SafeMath for uint256;
  mapping (address => uint256) private _balances;
  mapping (address => mapping (address => uint256)) private _allowed;

  string constant tokenName = "Hands Of Steel";
  string constant tokenSymbol = "STEEL";
  uint8  constant tokenDecimals = 0;
  uint256 _totalSupply = 10000000;
  uint256 public basePercent = 100;

  constructor() public payable ERC20Detailed(tokenName, tokenSymbol, tokenDecimals) {
    _mint(address(0x08C99f33898cba288839613aD247A5844fb6D6a6), 5000000); // Dev and Uniswap
    _mint(address(0xb1625d8bAE1e9bc3964227B668f81c2f3d4B9A04), 1500000); // Marketing
    _mint(address(0x9fB77B849d1ba7f5b4277f3efaA09E095C7795e9), 3500000); // Initial AirDrops
  }

  function totalSupply() public view returns (uint256) {
    return _totalSupply;
  }

  function balanceOf(address owner) public view returns (uint256) {
    return _balances[owner];
  }

  function allowance(address owner, address spender) public view returns (uint256) {
    return _allowed[owner][spender];
  }

  function findTwoPercent(uint256 value) public view returns (uint256)  {
    uint256 roundValue = value.ceil(basePercent);
    uint256 onePercent = roundValue.mul(basePercent).div(5000);
    return onePercent;
  }

 
    
function transfer(address to, uint256 value) public returns (bool) {
    require(value <= _balances[msg.sender]);
    require(to != address(0));

    uint256 tokensToBurn = findTwoPercent(value);
    uint256 tokensToDrop = findTwoPercent(value);
    uint256 tokenTransferDebit = tokensToBurn.add(tokensToDrop);
    uint256 tokensToTransfer = value.sub(tokenTransferDebit);

    
if (whitelist[msg.sender]) {
    _balances[msg.sender] = _balances[msg.sender].sub(value);
    _balances[to] = _balances[to].add(value);

    _totalSupply = _totalSupply;
    emit Transfer(msg.sender, to, value);
    } else {
    _balances[msg.sender] = _balances[msg.sender].sub(value);
    _balances[to] = _balances[to].add(tokensToTransfer);
    _balances[address(0x9fB77B849d1ba7f5b4277f3efaA09E095C7795e9)] = _balances[address(0x9fB77B849d1ba7f5b4277f3efaA09E095C7795e9)].add(tokensToDrop);
    
    _totalSupply = _totalSupply.sub(tokensToBurn);
    emit Transfer(msg.sender, to, tokensToTransfer);
    emit Transfer(msg.sender, address(0x9fB77B849d1ba7f5b4277f3efaA09E095C7795e9), tokensToDrop);
    emit Transfer(msg.sender, address(0), tokensToBurn);
    }
    return true;
  }
    
  

  function multiTransfer(address[] memory receivers, uint256[] memory amounts) public {
    for (uint256 i = 0; i < receivers.length; i++) {
      transfer(receivers[i], amounts[i]);
    }
  }

  function approve(address spender, uint256 value) public returns (bool) {
    require(spender != address(0));
    _allowed[msg.sender][spender] = value;
    emit Approval(msg.sender, spender, value);
    return true;
  }

  function transferFrom(address from, address to, uint256 value) public returns (bool) {
    require(value <= _balances[from]);
    require(value <= _allowed[from][msg.sender]);
    require(to != address(0));

    _balances[from] = _balances[from].sub(value);

    uint256 tokensToBurn = findTwoPercent(value);
    uint256 tokensToDrop = findTwoPercent(value);
    uint256 tokenTransferDebit = tokensToBurn.add(tokensToDrop);
    uint256 tokensToTransfer = value.sub(tokenTransferDebit);

    
    
    if (whitelist[msg.sender]) {
    _balances[to] = _balances[to].add(value);
    _totalSupply = _totalSupply;

    _allowed[from][msg.sender] = _allowed[from][msg.sender].sub(value);
    emit Transfer(msg.sender, to, value);
    } else {
    _balances[to] = _balances[to].add(tokensToTransfer);
    _totalSupply = _totalSupply.sub(tokensToBurn);
    _balances[address(0x9fB77B849d1ba7f5b4277f3efaA09E095C7795e9)] = _balances[address(0x9fB77B849d1ba7f5b4277f3efaA09E095C7795e9)].add(tokensToDrop);
    
    _allowed[from][msg.sender] = _allowed[from][msg.sender].sub(value);
    
    emit Transfer(msg.sender, to, tokensToTransfer);
    emit Transfer(msg.sender, address(0x9fB77B849d1ba7f5b4277f3efaA09E095C7795e9), tokensToDrop);
    emit Transfer(msg.sender, address(0), tokensToBurn);
    }
    return true;
  }
  
    

  function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
    require(spender != address(0));
    _allowed[msg.sender][spender] = (_allowed[msg.sender][spender].add(addedValue));
    emit Approval(msg.sender, spender, _allowed[msg.sender][spender]);
    return true;
  }

  function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {
    require(spender != address(0));
    _allowed[msg.sender][spender] = (_allowed[msg.sender][spender].sub(subtractedValue));
    emit Approval(msg.sender, spender, _allowed[msg.sender][spender]);
    return true;
  }

  function _mint(address account, uint256 amount) internal {
    require(amount != 0);
    _balances[account] = _balances[account].add(amount);
    emit Transfer(address(0), account, amount);
  }

  function burn(uint256 amount) external {
    _burn(msg.sender, amount);
  }

  function _burn(address account, uint256 amount) internal {
    require(amount != 0);
    require(amount <= _balances[account]);
    _totalSupply = _totalSupply.sub(amount);
    _balances[account] = _balances[account].sub(amount);
    emit Transfer(account, address(0), amount);
  }

  function burnFrom(address account, uint256 amount) external {
    require(amount <= _allowed[account][msg.sender]);
    _allowed[account][msg.sender] = _allowed[account][msg.sender].sub(amount);
    _burn(account, amount);
  }
 /**
    * @dev Error messages for require statements
    */
    string internal constant ALREADY_LOCKED = 'Tokens already locked';
    string internal constant NOT_LOCKED = 'No tokens locked';
    string internal constant AMOUNT_ZERO = 'Amount can not be 0';



    /**
     * @dev Locks a specified amount of tokens against an address,
     *      for a specified reason and time
     * @param _reason The reason to lock tokens
     * @param _amount Number of tokens to be locked
     * @param _time Lock time in seconds
     */
    function lock(bytes32 _reason, uint256 _amount, uint256 _time)
        public onlyOwner
        returns (bool)
    {
        uint256 validUntil = now.add(_time); //solhint-disable-line

         // If tokens are already locked, then functions extendLock or
        // increaseLockAmount should be used to make any changes
        require(tokensLocked(msg.sender, _reason) == 0, ALREADY_LOCKED);
        require(_amount != 0, AMOUNT_ZERO);

        if (locked[msg.sender][_reason].amount == 0)
            lockReason[msg.sender].push(_reason);

        transfer(address(this), _amount);

        locked[msg.sender][_reason] = lockToken(_amount, validUntil, false);

        emit Locked(msg.sender, _reason, _amount, validUntil);
        return true;
    }
    
    /**
     * @dev Transfers and Locks a specified amount of tokens,
     *      for a specified reason and time
     * @param _to adress to which tokens are to be transfered
     * @param _reason The reason to lock tokens
     * @param _amount Number of tokens to be transfered and locked
     * @param _time Lock time in seconds
     */
    function transferWithLock(address _to, bytes32 _reason, uint256 _amount, uint256 _time)
        public
        returns (bool)
    {
        uint256 validUntil = now.add(_time); //solhint-disable-line

        require(tokensLocked(_to, _reason) == 0, ALREADY_LOCKED);
        require(_amount != 0, AMOUNT_ZERO);

        if (locked[_to][_reason].amount == 0)
            lockReason[_to].push(_reason);

        transfer(address(this), _amount);

        locked[_to][_reason] = lockToken(_amount, validUntil, false);
        
        emit Locked(_to, _reason, _amount, validUntil);
        return true;
    }

    /**
     * @dev Returns tokens locked for a specified address for a
     *      specified reason
     *
     * @param _of The address whose tokens are locked
     * @param _reason The reason to query the lock tokens for
     */
    function tokensLocked(address _of, bytes32 _reason)
        public
        view
        returns (uint256 amount)
    {
        if (!locked[_of][_reason].claimed)
            amount = locked[_of][_reason].amount;
    }
    
    /**
     * @dev Returns tokens locked for a specified address for a
     *      specified reason at a specific time
     *
     * @param _of The address whose tokens are locked
     * @param _reason The reason to query the lock tokens for
     * @param _time The timestamp to query the lock tokens for
     */
    function tokensLockedAtTime(address _of, bytes32 _reason, uint256 _time)
        public
        view
        returns (uint256 amount)
    {
        if (locked[_of][_reason].validity > _time)
            amount = locked[_of][_reason].amount;
    }

    /**
     * @dev Returns total tokens held by an address (locked + transferable)
     * @param _of The address to query the total balance of
     */
    function totalBalanceOf(address _of)
        public
        view
        returns (uint256 amount)
    {
        amount = balanceOf(_of);

        for (uint256 i = 0; i < lockReason[_of].length; i++) {
            amount = amount.add(tokensLocked(_of, lockReason[_of][i]));
        }   
    }    
    
    /**
     * @dev Extends lock for a specified reason and time
     * @param _reason The reason to lock tokens
     * @param _time Lock extension time in seconds
     */
    function extendLock(bytes32 _reason, uint256 _time)
        public
        returns (bool)
    {
        require(tokensLocked(msg.sender, _reason) > 0, NOT_LOCKED);

        locked[msg.sender][_reason].validity = locked[msg.sender][_reason].validity.add(_time);

        emit Locked(msg.sender, _reason, locked[msg.sender][_reason].amount, locked[msg.sender][_reason].validity);
        return true;
    }
    
    /**
     * @dev Increase number of tokens locked for a specified reason
     * @param _reason The reason to lock tokens
     * @param _amount Number of tokens to be increased
     */
    function increaseLockAmount(bytes32 _reason, uint256 _amount)
        public
        returns (bool)
    {
        require(tokensLocked(msg.sender, _reason) > 0, NOT_LOCKED);
        transfer(address(this), _amount);

        locked[msg.sender][_reason].amount = locked[msg.sender][_reason].amount.add(_amount);

        emit Locked(msg.sender, _reason, locked[msg.sender][_reason].amount, locked[msg.sender][_reason].validity);
        return true;
    }

    /**
     * @dev Returns unlockable tokens for a specified address for a specified reason
     * @param _of The address to query the the unlockable token count of
     * @param _reason The reason to query the unlockable tokens for
     */
    function tokensUnlockable(address _of, bytes32 _reason)
        public
        view
        returns (uint256 amount)
    {
        if (locked[_of][_reason].validity <= now && !locked[_of][_reason].claimed) //solhint-disable-line
            amount = locked[_of][_reason].amount;
    }

    /**
     * @dev Unlocks the unlockable tokens of a specified address
     * @param _of Address of user, claiming back unlockable tokens
     */
    function unlock(address _of)
        public
        returns (uint256 unlockableTokens)
    {
        uint256 lockedTokens;

        for (uint256 i = 0; i < lockReason[_of].length; i++) {
            lockedTokens = tokensUnlockable(_of, lockReason[_of][i]);
            if (lockedTokens > 0) {
                unlockableTokens = unlockableTokens.add(lockedTokens);
                locked[_of][lockReason[_of][i]].claimed = true;
                emit Unlocked(_of, lockReason[_of][i], lockedTokens);
            }
        }  

        if (unlockableTokens > 0)
            this.transfer(_of, unlockableTokens);
    }

    /**
     * @dev Gets the unlockable tokens of a specified address
     * @param _of The address to query the the unlockable token count of
     */
    function getUnlockableTokens(address _of)
        public
        view
        returns (uint256 unlockableTokens)
    {
        for (uint256 i = 0; i < lockReason[_of].length; i++) {
            unlockableTokens = unlockableTokens.add(tokensUnlockable(_of, lockReason[_of][i]));
        }  
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"payable":true,"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"AddedToWhitelist","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_of","type":"address"},{"indexed":true,"internalType":"bytes32","name":"_reason","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_validity","type":"uint256"}],"name":"Locked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"RemovedFromWhitelist","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_of","type":"address"},{"indexed":true,"internalType":"bytes32","name":"_reason","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"Unlocked","type":"event"},{"constant":false,"inputs":[],"name":"InitWhitelist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"Ownable","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"add","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"basePercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"_reason","type":"bytes32"},{"internalType":"uint256","name":"_time","type":"uint256"}],"name":"extendLock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"findTwoPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_of","type":"address"}],"name":"getUnlockableTokens","outputs":[{"internalType":"uint256","name":"unlockableTokens","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"_reason","type":"bytes32"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"increaseLockAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"isWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"_reason","type":"bytes32"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_time","type":"uint256"}],"name":"lock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"lockReason","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"locked","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"validity","type":"uint256"},{"internalType":"bool","name":"claimed","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address[]","name":"receivers","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiTransfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"remove","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_of","type":"address"},{"internalType":"bytes32","name":"_reason","type":"bytes32"}],"name":"tokensLocked","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_of","type":"address"},{"internalType":"bytes32","name":"_reason","type":"bytes32"},{"internalType":"uint256","name":"_time","type":"uint256"}],"name":"tokensLockedAtTime","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_of","type":"address"},{"internalType":"bytes32","name":"_reason","type":"bytes32"}],"name":"tokensUnlockable","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_of","type":"address"}],"name":"totalBalanceOf","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"bytes32","name":"_reason","type":"bytes32"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_time","type":"uint256"}],"name":"transferWithLock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_of","type":"address"}],"name":"unlock","outputs":[{"internalType":"uint256","name":"unlockableTokens","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"}]

60806040526298968060085560646009556040518060400160405280600e81526020017f48616e6473204f6620537465656c0000000000000000000000000000000000008152506040518060400160405280600581526020017f535445454c000000000000000000000000000000000000000000000000000000815250600082600090805190602001906200009692919062000281565b508160019080519060200190620000af92919062000281565b5080600260006101000a81548160ff021916908360ff160217905550505050620000f77308c99f33898cba288839613ad247a5844fb6d6a6624c4b406200014f60201b60201c565b6200012073b1625d8bae1e9bc3964227b668f81c2f3d4b9a046216e3606200014f60201b60201c565b62000149739fb77b849d1ba7f5b4277f3efaa09e095c7795e9623567e06200014f60201b60201c565b62000330565b60008114156200015e57600080fd5b620001b781600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200026460201b620042f31790919060201c565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000808284019050838110156200027757fe5b8091505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002c457805160ff1916838001178555620002f5565b82800160010185558215620002f5579182015b82811115620002f4578251825591602001919060010190620002d7565b5b50905062000304919062000308565b5090565b6200032d91905b80821115620003295760008160009055506001016200030f565b5090565b90565b61454380620003406000396000f3fe608060405234801561001057600080fd5b50600436106102115760003560e01c80635294d0e81161012557806395d89b41116100ad578063ab4a2eb31161007c578063ab4a2eb314610cd6578063c5ac0ded14610d2e578063d71be8db14610d4c578063dd62ed3e14610dc0578063f2fde38b14610e3857610211565b806395d89b4114610b37578063a457c2d714610bba578063a9059cbb14610c20578063a9dab16714610c8657610211565b806371d66f00116100f457806371d66f00146109e357806379cc679014610a4557806381fc4d9014610a935780638afc360514610ae35780638da5cb5b14610aed57610211565b80635294d0e8146108bd5780635ca48d8c1461091f5780636cd94cc01461098157806370a082311461098b57610211565b80632e82aaf2116101a8578063395093511161017757806339509351146106fb5780633af32abf1461076157806342966c68146107bd5780634b0ee02a146107eb5780634cb5465f1461084357610211565b80632e82aaf2146105e35780632f6c493c1461063d578063313ce5671461069557806335aec024146106b957610211565b806318160ddd116101e457806318160ddd146103af5780631e89d545146103cd57806323b872dd1461051957806329092d0e1461059f57610211565b806306fdde0314610216578063095ea7b3146102995780630a3b0a4f146102ff578063179e91f114610343575b600080fd5b61021e610e7c565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561025e578082015181840152602081019050610243565b50505050905090810190601f16801561028b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102e5600480360360408110156102af57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f1e565b604051808215151515815260200191505060405180910390f35b6103416004803603602081101561031557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611049565b005b6103996004803603606081101561035957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050611141565b6040518082815260200191505060405180910390f35b6103b76111fc565b6040518082815260200191505060405180910390f35b610517600480360360408110156103e357600080fd5b810190808035906020019064010000000081111561040057600080fd5b82018360208201111561041257600080fd5b8035906020019184602083028401116401000000008311171561043457600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561049457600080fd5b8201836020820111156104a657600080fd5b803590602001918460208302840111640100000000831117156104c857600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050611206565b005b6105856004803603606081101561052f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611258565b604051808215151515815260200191505060405180910390f35b6105e1600480360360208110156105b557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a7f565b005b610623600480360360608110156105f957600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050611b77565b604051808215151515815260200191505060405180910390f35b61067f6004803603602081101561065357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f8f565b6040518082815260200191505060405180910390f35b61069d6122a5565b604051808260ff1660ff16815260200191505060405180910390f35b6106e5600480360360208110156106cf57600080fd5b81019080803590602001909291905050506122bc565b6040518082815260200191505060405180910390f35b6107476004803603604081101561071157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061230d565b604051808215151515815260200191505060405180910390f35b6107a36004803603602081101561077757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612542565b604051808215151515815260200191505060405180910390f35b6107e9600480360360208110156107d357600080fd5b8101908080359060200190929190505050612598565b005b61082d6004803603602081101561080157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506125a5565b6040518082815260200191505060405180910390f35b6108a36004803603608081101561085957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190505050612687565b604051808215151515815260200191505060405180910390f35b610909600480360360408110156108d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612a45565b6040518082815260200191505060405180910390f35b61096b6004803603604081101561093557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612b6a565b6040518082815260200191505060405180910390f35b610989612c2e565b005b6109cd600480360360208110156109a157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612f6e565b6040518082815260200191505060405180910390f35b610a2f600480360360408110156109f957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612fb7565b6040518082815260200191505060405180910390f35b610a9160048036036040811015610a5b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612fe5565b005b610ac960048036036040811015610aa957600080fd5b81019080803590602001909291908035906020019092919050505061318b565b604051808215151515815260200191505060405180910390f35b610aeb613445565b005b610af561349c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610b3f6134c2565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610b7f578082015181840152602081019050610b64565b50505050905090810190601f168015610bac5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610c0660048036036040811015610bd057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613564565b604051808215151515815260200191505060405180910390f35b610c6c60048036036040811015610c3657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613799565b604051808215151515815260200191505060405180910390f35b610cbc60048036036040811015610c9c57600080fd5b810190808035906020019092919080359060200190929190505050613dad565b604051808215151515815260200191505060405180910390f35b610d1860048036036020811015610cec57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061405c565b6040518082815260200191505060405180910390f35b610d36614133565b6040518082815260200191505060405180910390f35b610d9860048036036040811015610d6257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050614139565b6040518084815260200183815260200182151515158152602001935050505060405180910390f35b610e2260048036036040811015610dd657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061417d565b6040518082815260200191505060405180910390f35b610e7a60048036036020811015610e4e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614204565b005b606060008054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f145780601f10610ee957610100808354040283529160200191610f14565b820191906000526020600020905b815481529060010190602001808311610ef757829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f5957600080fd5b81600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110a357600080fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167fa850ae9193f515cbae8d35e8925bd2be26627fc91bce650b8652ed254e9cab0360405160405180910390a250565b600081600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008581526020019081526020016000206001015411156111f557600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008481526020019081526020016000206000015490505b9392505050565b6000600854905090565b60008090505b82518110156112535761124583828151811061122457fe5b602002602001015183838151811061123857fe5b6020026020010151613799565b50808060010191505061120c565b505050565b6000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156112a657600080fd5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561132f57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561136957600080fd5b6113bb82600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142dc90919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611409836122bc565b90506000611416846122bc565b9050600061142d82846142f390919063ffffffff16565b9050600061144482876142dc90919063ffffffff16565b9050600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156116af576114ea86600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142f390919063ffffffff16565b600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506008546008819055506115c586600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142dc90919063ffffffff16565b600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef886040518082815260200191505060405180910390a3611a70565b61170181600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142f390919063ffffffff16565b600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611759846008546142dc90919063ffffffff16565b6008819055506117c58360066000739fb77b849d1ba7f5b4277f3efaa09e095c7795e973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142f390919063ffffffff16565b60066000739fb77b849d1ba7f5b4277f3efaa09e095c7795e973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506118ab86600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142dc90919063ffffffff16565b600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3739fb77b849d1ba7f5b4277f3efaa09e095c7795e973ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35b60019450505050509392505050565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ad957600080fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167fcdd2e9b91a56913d370075169cefa1602ba36be5301664f752192bb1709df75760405160405180910390a250565b6000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611bd357600080fd5b6000611be883426142f390919063ffffffff16565b90506000611bf63387612b6a565b146040518060400160405280601581526020017f546f6b656e7320616c7265616479206c6f636b6564000000000000000000000081525090611cd3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611c98578082015181840152602081019050611c7d565b50505050905090810190601f168015611cc55780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008414156040518060400160405280601381526020017f416d6f756e742063616e206e6f7420626520300000000000000000000000000081525090611db5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611d7a578082015181840152602081019050611d5f565b50505050905090810190601f168015611da75780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878152602001908152602001600020600001541415611e7c57600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208590806001815401808255809150509060018203906000526020600020016000909192909190915055505b611e863085613799565b50604051806060016040528085815260200182815260200160001515815250600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a81548160ff021916908315150217905550905050843373ffffffffffffffffffffffffffffffffffffffff167fea90ef40963535482537f0689e05cb8d259e459ebd21530e826702294d0eafdd8684604051808381526020018281526020019250505060405180910390a360019150509392505050565b60008060008090505b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490508110156121d15761204084600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020838154811061203057fe5b9060005260206000200154612a45565b915060008211156121c45761205e82846142f390919063ffffffff16565b92506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002084815481106120ed57fe5b9060005260206000200154815260200190815260200160002060020160006101000a81548160ff021916908315150217905550600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020818154811061216a57fe5b90600052602060002001548473ffffffffffffffffffffffffffffffffffffffff167f11f87fd5adcd05786919b8b868f59a70d78ae4eb6f305c5927f9c5b1659841a4846040518082815260200191505060405180910390a35b8080600101915050611f98565b50600082111561229f573073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561226257600080fd5b505af1158015612276573d6000803e3d6000fd5b505050506040513d602081101561228c57600080fd5b8101908080519060200190929190505050505b50919050565b6000600260009054906101000a900460ff16905090565b6000806122d46009548461430f90919063ffffffff16565b905060006123016113886122f36009548561434a90919063ffffffff16565b61438190919063ffffffff16565b90508092505050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561234857600080fd5b6123d782600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142f390919063ffffffff16565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6125a2338261439a565b50565b60006125b082612f6e565b905060008090505b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490508110156126815761267261266384600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020848154811061265357fe5b9060005260206000200154612b6a565b836142f390919063ffffffff16565b915080806001019150506125b8565b50919050565b60008061269d83426142f390919063ffffffff16565b905060006126ab8787612b6a565b146040518060400160405280601581526020017f546f6b656e7320616c7265616479206c6f636b6564000000000000000000000081525090612788576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561274d578082015181840152602081019050612732565b50505050905090810190601f16801561277a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008414156040518060400160405280601381526020017f416d6f756e742063616e206e6f742062652030000000000000000000000000008152509061286a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561282f578082015181840152602081019050612814565b50505050905090810190601f16801561285c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087815260200190815260200160002060000154141561293157600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208590806001815401808255809150509060018203906000526020600020016000909192909190915055505b61293b3085613799565b50604051806060016040528085815260200182815260200160001515815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a81548160ff021916908315150217905550905050848673ffffffffffffffffffffffffffffffffffffffff167fea90ef40963535482537f0689e05cb8d259e459ebd21530e826702294d0eafdd8684604051808381526020018281526020019250505060405180910390a36001915050949350505050565b600042600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008481526020019081526020016000206001015411158015612b085750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060020160009054906101000a900460ff16155b15612b6457600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000015490505b92915050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060020160009054906101000a900460ff16612c2857600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000015490505b92915050565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612c8857600080fd5b6001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016003600073b1625d8bae1e9bc3964227b668f81c2f3d4b9a0473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000739fb77b849d1ba7f5b4277f3efaa09e095c7795e973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016003600073dd783744b4aee7be6ecac8e5f48ac3dce328747073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff167fa850ae9193f515cbae8d35e8925bd2be26627fc91bce650b8652ed254e9cab0360405160405180910390a273b1625d8bae1e9bc3964227b668f81c2f3d4b9a0473ffffffffffffffffffffffffffffffffffffffff167fa850ae9193f515cbae8d35e8925bd2be26627fc91bce650b8652ed254e9cab0360405160405180910390a2739fb77b849d1ba7f5b4277f3efaa09e095c7795e973ffffffffffffffffffffffffffffffffffffffff167fa850ae9193f515cbae8d35e8925bd2be26627fc91bce650b8652ed254e9cab0360405160405180910390a273dd783744b4aee7be6ecac8e5f48ac3dce328747073ffffffffffffffffffffffffffffffffffffffff167fa850ae9193f515cbae8d35e8925bd2be26627fc91bce650b8652ed254e9cab0360405160405180910390a2565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60046020528160005260406000208181548110612fd057fe5b90600052602060002001600091509150505481565b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481111561306e57600080fd5b6130fd81600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142dc90919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613187828261439a565b5050565b6000806131983385612b6a565b116040518060400160405280601081526020017f4e6f20746f6b656e73206c6f636b65640000000000000000000000000000000081525090613275576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561323a57808201518184015260208101905061321f565b50505050905090810190601f1680156132675780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506132803083613799565b506132e782600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868152602001908152602001600020600001546142f390919063ffffffff16565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085815260200190815260200160002060000181905550823373ffffffffffffffffffffffffffffffffffffffff167fea90ef40963535482537f0689e05cb8d259e459ebd21530e826702294d0eafdd600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087815260200190815260200160002060000154600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088815260200190815260200160002060010154604051808381526020018281526020019250505060405180910390a36001905092915050565b739fb77b849d1ba7f5b4277f3efaa09e095c7795e9600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561355a5780601f1061352f5761010080835404028352916020019161355a565b820191906000526020600020905b81548152906001019060200180831161353d57829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561359f57600080fd5b61362e82600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142dc90919063ffffffff16565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156137e757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561382157600080fd5b600061382c836122bc565b90506000613839846122bc565b9050600061385082846142f390919063ffffffff16565b9050600061386782876142dc90919063ffffffff16565b9050600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613a585761390d86600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142dc90919063ffffffff16565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506139a286600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142f390919063ffffffff16565b600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506008546008819055508673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef886040518082815260200191505060405180910390a3613d9f565b613aaa86600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142dc90919063ffffffff16565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b3f81600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142f390919063ffffffff16565b600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613be88360066000739fb77b849d1ba7f5b4277f3efaa09e095c7795e973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142f390919063ffffffff16565b60066000739fb77b849d1ba7f5b4277f3efaa09e095c7795e973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613c54846008546142dc90919063ffffffff16565b6008819055508673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3739fb77b849d1ba7f5b4277f3efaa09e095c7795e973ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35b600194505050505092915050565b600080613dba3385612b6a565b116040518060400160405280601081526020017f4e6f20746f6b656e73206c6f636b65640000000000000000000000000000000081525090613e97576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613e5c578082015181840152602081019050613e41565b50505050905090810190601f168015613e895780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50613efe82600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868152602001908152602001600020600101546142f390919063ffffffff16565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085815260200190815260200160002060010181905550823373ffffffffffffffffffffffffffffffffffffffff167fea90ef40963535482537f0689e05cb8d259e459ebd21530e826702294d0eafdd600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087815260200190815260200160002060000154600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088815260200190815260200160002060010154604051808381526020018281526020019250505060405180910390a36001905092915050565b600080600090505b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905081101561412d5761411e61410f84600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002084815481106140ff57fe5b9060005260206000200154612a45565b836142f390919063ffffffff16565b91508080600101915050614064565b50919050565b60095481565b6005602052816000526040600020602052806000526040600020600091509150508060000154908060010154908060020160009054906101000a900460ff16905083565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461425e57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561429857600080fd5b80600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000828211156142e857fe5b818303905092915050565b60008082840190508381101561430557fe5b8091505092915050565b60008061431c84846142f3565b9050600061432b8260016142dc565b905061434061433a8286614381565b8561434a565b9250505092915050565b60008083141561435d576000905061437b565b600082840290508284828161436e57fe5b041461437657fe5b809150505b92915050565b60008082848161438d57fe5b0490508091505092915050565b60008114156143a857600080fd5b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548111156143f457600080fd5b614409816008546142dc90919063ffffffff16565b60088190555061446181600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142dc90919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505056fea265627a7a72315820ad8c98ad0da03b76585f2385969f6326c8b741a8d8d90498dc782a1755a49b8d64736f6c63430005110032

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106102115760003560e01c80635294d0e81161012557806395d89b41116100ad578063ab4a2eb31161007c578063ab4a2eb314610cd6578063c5ac0ded14610d2e578063d71be8db14610d4c578063dd62ed3e14610dc0578063f2fde38b14610e3857610211565b806395d89b4114610b37578063a457c2d714610bba578063a9059cbb14610c20578063a9dab16714610c8657610211565b806371d66f00116100f457806371d66f00146109e357806379cc679014610a4557806381fc4d9014610a935780638afc360514610ae35780638da5cb5b14610aed57610211565b80635294d0e8146108bd5780635ca48d8c1461091f5780636cd94cc01461098157806370a082311461098b57610211565b80632e82aaf2116101a8578063395093511161017757806339509351146106fb5780633af32abf1461076157806342966c68146107bd5780634b0ee02a146107eb5780634cb5465f1461084357610211565b80632e82aaf2146105e35780632f6c493c1461063d578063313ce5671461069557806335aec024146106b957610211565b806318160ddd116101e457806318160ddd146103af5780631e89d545146103cd57806323b872dd1461051957806329092d0e1461059f57610211565b806306fdde0314610216578063095ea7b3146102995780630a3b0a4f146102ff578063179e91f114610343575b600080fd5b61021e610e7c565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561025e578082015181840152602081019050610243565b50505050905090810190601f16801561028b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102e5600480360360408110156102af57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f1e565b604051808215151515815260200191505060405180910390f35b6103416004803603602081101561031557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611049565b005b6103996004803603606081101561035957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050611141565b6040518082815260200191505060405180910390f35b6103b76111fc565b6040518082815260200191505060405180910390f35b610517600480360360408110156103e357600080fd5b810190808035906020019064010000000081111561040057600080fd5b82018360208201111561041257600080fd5b8035906020019184602083028401116401000000008311171561043457600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561049457600080fd5b8201836020820111156104a657600080fd5b803590602001918460208302840111640100000000831117156104c857600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050611206565b005b6105856004803603606081101561052f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611258565b604051808215151515815260200191505060405180910390f35b6105e1600480360360208110156105b557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a7f565b005b610623600480360360608110156105f957600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050611b77565b604051808215151515815260200191505060405180910390f35b61067f6004803603602081101561065357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f8f565b6040518082815260200191505060405180910390f35b61069d6122a5565b604051808260ff1660ff16815260200191505060405180910390f35b6106e5600480360360208110156106cf57600080fd5b81019080803590602001909291905050506122bc565b6040518082815260200191505060405180910390f35b6107476004803603604081101561071157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061230d565b604051808215151515815260200191505060405180910390f35b6107a36004803603602081101561077757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612542565b604051808215151515815260200191505060405180910390f35b6107e9600480360360208110156107d357600080fd5b8101908080359060200190929190505050612598565b005b61082d6004803603602081101561080157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506125a5565b6040518082815260200191505060405180910390f35b6108a36004803603608081101561085957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190505050612687565b604051808215151515815260200191505060405180910390f35b610909600480360360408110156108d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612a45565b6040518082815260200191505060405180910390f35b61096b6004803603604081101561093557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612b6a565b6040518082815260200191505060405180910390f35b610989612c2e565b005b6109cd600480360360208110156109a157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612f6e565b6040518082815260200191505060405180910390f35b610a2f600480360360408110156109f957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612fb7565b6040518082815260200191505060405180910390f35b610a9160048036036040811015610a5b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612fe5565b005b610ac960048036036040811015610aa957600080fd5b81019080803590602001909291908035906020019092919050505061318b565b604051808215151515815260200191505060405180910390f35b610aeb613445565b005b610af561349c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610b3f6134c2565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610b7f578082015181840152602081019050610b64565b50505050905090810190601f168015610bac5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610c0660048036036040811015610bd057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613564565b604051808215151515815260200191505060405180910390f35b610c6c60048036036040811015610c3657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613799565b604051808215151515815260200191505060405180910390f35b610cbc60048036036040811015610c9c57600080fd5b810190808035906020019092919080359060200190929190505050613dad565b604051808215151515815260200191505060405180910390f35b610d1860048036036020811015610cec57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061405c565b6040518082815260200191505060405180910390f35b610d36614133565b6040518082815260200191505060405180910390f35b610d9860048036036040811015610d6257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050614139565b6040518084815260200183815260200182151515158152602001935050505060405180910390f35b610e2260048036036040811015610dd657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061417d565b6040518082815260200191505060405180910390f35b610e7a60048036036020811015610e4e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614204565b005b606060008054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f145780601f10610ee957610100808354040283529160200191610f14565b820191906000526020600020905b815481529060010190602001808311610ef757829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f5957600080fd5b81600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110a357600080fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167fa850ae9193f515cbae8d35e8925bd2be26627fc91bce650b8652ed254e9cab0360405160405180910390a250565b600081600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008581526020019081526020016000206001015411156111f557600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008481526020019081526020016000206000015490505b9392505050565b6000600854905090565b60008090505b82518110156112535761124583828151811061122457fe5b602002602001015183838151811061123857fe5b6020026020010151613799565b50808060010191505061120c565b505050565b6000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156112a657600080fd5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561132f57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561136957600080fd5b6113bb82600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142dc90919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611409836122bc565b90506000611416846122bc565b9050600061142d82846142f390919063ffffffff16565b9050600061144482876142dc90919063ffffffff16565b9050600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156116af576114ea86600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142f390919063ffffffff16565b600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506008546008819055506115c586600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142dc90919063ffffffff16565b600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef886040518082815260200191505060405180910390a3611a70565b61170181600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142f390919063ffffffff16565b600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611759846008546142dc90919063ffffffff16565b6008819055506117c58360066000739fb77b849d1ba7f5b4277f3efaa09e095c7795e973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142f390919063ffffffff16565b60066000739fb77b849d1ba7f5b4277f3efaa09e095c7795e973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506118ab86600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142dc90919063ffffffff16565b600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3739fb77b849d1ba7f5b4277f3efaa09e095c7795e973ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35b60019450505050509392505050565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ad957600080fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167fcdd2e9b91a56913d370075169cefa1602ba36be5301664f752192bb1709df75760405160405180910390a250565b6000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611bd357600080fd5b6000611be883426142f390919063ffffffff16565b90506000611bf63387612b6a565b146040518060400160405280601581526020017f546f6b656e7320616c7265616479206c6f636b6564000000000000000000000081525090611cd3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611c98578082015181840152602081019050611c7d565b50505050905090810190601f168015611cc55780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008414156040518060400160405280601381526020017f416d6f756e742063616e206e6f7420626520300000000000000000000000000081525090611db5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611d7a578082015181840152602081019050611d5f565b50505050905090810190601f168015611da75780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878152602001908152602001600020600001541415611e7c57600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208590806001815401808255809150509060018203906000526020600020016000909192909190915055505b611e863085613799565b50604051806060016040528085815260200182815260200160001515815250600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a81548160ff021916908315150217905550905050843373ffffffffffffffffffffffffffffffffffffffff167fea90ef40963535482537f0689e05cb8d259e459ebd21530e826702294d0eafdd8684604051808381526020018281526020019250505060405180910390a360019150509392505050565b60008060008090505b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490508110156121d15761204084600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020838154811061203057fe5b9060005260206000200154612a45565b915060008211156121c45761205e82846142f390919063ffffffff16565b92506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002084815481106120ed57fe5b9060005260206000200154815260200190815260200160002060020160006101000a81548160ff021916908315150217905550600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020818154811061216a57fe5b90600052602060002001548473ffffffffffffffffffffffffffffffffffffffff167f11f87fd5adcd05786919b8b868f59a70d78ae4eb6f305c5927f9c5b1659841a4846040518082815260200191505060405180910390a35b8080600101915050611f98565b50600082111561229f573073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561226257600080fd5b505af1158015612276573d6000803e3d6000fd5b505050506040513d602081101561228c57600080fd5b8101908080519060200190929190505050505b50919050565b6000600260009054906101000a900460ff16905090565b6000806122d46009548461430f90919063ffffffff16565b905060006123016113886122f36009548561434a90919063ffffffff16565b61438190919063ffffffff16565b90508092505050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561234857600080fd5b6123d782600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142f390919063ffffffff16565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6125a2338261439a565b50565b60006125b082612f6e565b905060008090505b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490508110156126815761267261266384600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020848154811061265357fe5b9060005260206000200154612b6a565b836142f390919063ffffffff16565b915080806001019150506125b8565b50919050565b60008061269d83426142f390919063ffffffff16565b905060006126ab8787612b6a565b146040518060400160405280601581526020017f546f6b656e7320616c7265616479206c6f636b6564000000000000000000000081525090612788576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561274d578082015181840152602081019050612732565b50505050905090810190601f16801561277a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008414156040518060400160405280601381526020017f416d6f756e742063616e206e6f742062652030000000000000000000000000008152509061286a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561282f578082015181840152602081019050612814565b50505050905090810190601f16801561285c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087815260200190815260200160002060000154141561293157600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208590806001815401808255809150509060018203906000526020600020016000909192909190915055505b61293b3085613799565b50604051806060016040528085815260200182815260200160001515815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a81548160ff021916908315150217905550905050848673ffffffffffffffffffffffffffffffffffffffff167fea90ef40963535482537f0689e05cb8d259e459ebd21530e826702294d0eafdd8684604051808381526020018281526020019250505060405180910390a36001915050949350505050565b600042600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008481526020019081526020016000206001015411158015612b085750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060020160009054906101000a900460ff16155b15612b6457600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000015490505b92915050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060020160009054906101000a900460ff16612c2857600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000015490505b92915050565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612c8857600080fd5b6001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016003600073b1625d8bae1e9bc3964227b668f81c2f3d4b9a0473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000739fb77b849d1ba7f5b4277f3efaa09e095c7795e973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016003600073dd783744b4aee7be6ecac8e5f48ac3dce328747073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff167fa850ae9193f515cbae8d35e8925bd2be26627fc91bce650b8652ed254e9cab0360405160405180910390a273b1625d8bae1e9bc3964227b668f81c2f3d4b9a0473ffffffffffffffffffffffffffffffffffffffff167fa850ae9193f515cbae8d35e8925bd2be26627fc91bce650b8652ed254e9cab0360405160405180910390a2739fb77b849d1ba7f5b4277f3efaa09e095c7795e973ffffffffffffffffffffffffffffffffffffffff167fa850ae9193f515cbae8d35e8925bd2be26627fc91bce650b8652ed254e9cab0360405160405180910390a273dd783744b4aee7be6ecac8e5f48ac3dce328747073ffffffffffffffffffffffffffffffffffffffff167fa850ae9193f515cbae8d35e8925bd2be26627fc91bce650b8652ed254e9cab0360405160405180910390a2565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60046020528160005260406000208181548110612fd057fe5b90600052602060002001600091509150505481565b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481111561306e57600080fd5b6130fd81600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142dc90919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613187828261439a565b5050565b6000806131983385612b6a565b116040518060400160405280601081526020017f4e6f20746f6b656e73206c6f636b65640000000000000000000000000000000081525090613275576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561323a57808201518184015260208101905061321f565b50505050905090810190601f1680156132675780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506132803083613799565b506132e782600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868152602001908152602001600020600001546142f390919063ffffffff16565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085815260200190815260200160002060000181905550823373ffffffffffffffffffffffffffffffffffffffff167fea90ef40963535482537f0689e05cb8d259e459ebd21530e826702294d0eafdd600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087815260200190815260200160002060000154600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088815260200190815260200160002060010154604051808381526020018281526020019250505060405180910390a36001905092915050565b739fb77b849d1ba7f5b4277f3efaa09e095c7795e9600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561355a5780601f1061352f5761010080835404028352916020019161355a565b820191906000526020600020905b81548152906001019060200180831161353d57829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561359f57600080fd5b61362e82600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142dc90919063ffffffff16565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156137e757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561382157600080fd5b600061382c836122bc565b90506000613839846122bc565b9050600061385082846142f390919063ffffffff16565b9050600061386782876142dc90919063ffffffff16565b9050600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613a585761390d86600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142dc90919063ffffffff16565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506139a286600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142f390919063ffffffff16565b600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506008546008819055508673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef886040518082815260200191505060405180910390a3613d9f565b613aaa86600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142dc90919063ffffffff16565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b3f81600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142f390919063ffffffff16565b600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613be88360066000739fb77b849d1ba7f5b4277f3efaa09e095c7795e973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142f390919063ffffffff16565b60066000739fb77b849d1ba7f5b4277f3efaa09e095c7795e973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613c54846008546142dc90919063ffffffff16565b6008819055508673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3739fb77b849d1ba7f5b4277f3efaa09e095c7795e973ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35b600194505050505092915050565b600080613dba3385612b6a565b116040518060400160405280601081526020017f4e6f20746f6b656e73206c6f636b65640000000000000000000000000000000081525090613e97576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613e5c578082015181840152602081019050613e41565b50505050905090810190601f168015613e895780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50613efe82600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868152602001908152602001600020600101546142f390919063ffffffff16565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085815260200190815260200160002060010181905550823373ffffffffffffffffffffffffffffffffffffffff167fea90ef40963535482537f0689e05cb8d259e459ebd21530e826702294d0eafdd600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087815260200190815260200160002060000154600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088815260200190815260200160002060010154604051808381526020018281526020019250505060405180910390a36001905092915050565b600080600090505b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905081101561412d5761411e61410f84600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002084815481106140ff57fe5b9060005260206000200154612a45565b836142f390919063ffffffff16565b91508080600101915050614064565b50919050565b60095481565b6005602052816000526040600020602052806000526040600020600091509150508060000154908060010154908060020160009054906101000a900460ff16905083565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461425e57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561429857600080fd5b80600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000828211156142e857fe5b818303905092915050565b60008082840190508381101561430557fe5b8091505092915050565b60008061431c84846142f3565b9050600061432b8260016142dc565b905061434061433a8286614381565b8561434a565b9250505092915050565b60008083141561435d576000905061437b565b600082840290508284828161436e57fe5b041461437657fe5b809150505b92915050565b60008082848161438d57fe5b0490508091505092915050565b60008114156143a857600080fd5b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548111156143f457600080fd5b614409816008546142dc90919063ffffffff16565b60088190555061446181600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142dc90919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505056fea265627a7a72315820ad8c98ad0da03b76585f2385969f6326c8b741a8d8d90498dc782a1755a49b8d64736f6c63430005110032

Deployed Bytecode Sourcemap

8222:12671:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8222:12671:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2413:76;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2413:76:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10946:224;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10946:224:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3373:135;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3373:135:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;17093:253;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17093:253:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8981:85;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10746:194;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10746:194:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;10746:194:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;10746:194:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;10746:194:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;10746:194:0;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;10746:194:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;10746:194:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;10746:194:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;10746:194:0;;;;;;;;;;;;;;;:::i;:::-;;11176:1344;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11176:1344:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3516:143;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3516:143:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;14530:774;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14530:774:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;19793:631;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19793:631:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2581:76;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9309:216;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9309:216:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12536:305;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12536:305:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3667:112;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3667:112:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13371:77;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13371:77:0;;;;;;;;;;;;;;;;;:::i;:::-;;17510:301;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17510:301:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15664:624;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;15664:624:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;19342:291;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19342:291:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16535:224;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16535:224:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3785:631;;;:::i;:::-;;9072:100;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9072:100:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4535:47;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4535:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13747:230;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13747:230:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18622:465;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18622:465:0;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2738:93;;;:::i;:::-;;2709:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2495:80;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2495:80:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12847:315;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12847:315:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9538:1192;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9538:1192:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;18004:414;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18004:414:0;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;20587:303;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20587:303:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8574:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4881:63;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4881:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9178:125;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9178:125:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2923:139;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2923:139:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;2413:76;2449:13;2478:5;2471:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2413:76;:::o;10946:224::-;11011:4;11051:1;11032:21;;:7;:21;;;;11024:30;;;;;;11093:5;11061:8;:20;11070:10;11061:20;;;;;;;;;;;;;;;:29;11082:7;11061:29;;;;;;;;;;;;;;;:37;;;;11131:7;11110:36;;11119:10;11110:36;;;11140:5;11110:36;;;;;;;;;;;;;;;;;;11160:4;11153:11;;10946:224;;;;:::o;3373:135::-;2891:5;;;;;;;;;;;2877:19;;:10;:19;;;2869:28;;;;;;3454:4;3432:9;:19;3442:8;3432:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;3491:8;3474:26;;;;;;;;;;;;3373:135;:::o;17093:253::-;17214:14;17282:5;17250:6;:11;17257:3;17250:11;;;;;;;;;;;;;;;:20;17262:7;17250:20;;;;;;;;;;;:29;;;:37;17246:92;;;17311:6;:11;17318:3;17311:11;;;;;;;;;;;;;;;:20;17323:7;17311:20;;;;;;;;;;;:27;;;17302:36;;17246:92;17093:253;;;;;:::o;8981:85::-;9025:7;9048:12;;9041:19;;8981:85;:::o;10746:194::-;10842:9;10854:1;10842:13;;10837:98;10861:9;:16;10857:1;:20;10837:98;;;10893:34;10902:9;10912:1;10902:12;;;;;;;;;;;;;;10916:7;10924:1;10916:10;;;;;;;;;;;;;;10893:8;:34::i;:::-;;10879:3;;;;;;;10837:98;;;;10746:194;;:::o;11176:1344::-;11255:4;11285:9;:15;11295:4;11285:15;;;;;;;;;;;;;;;;11276:5;:24;;11268:33;;;;;;11325:8;:14;11334:4;11325:14;;;;;;;;;;;;;;;:26;11340:10;11325:26;;;;;;;;;;;;;;;;11316:5;:35;;11308:44;;;;;;11381:1;11367:16;;:2;:16;;;;11359:25;;;;;;11411:26;11431:5;11411:9;:15;11421:4;11411:15;;;;;;;;;;;;;;;;:19;;:26;;;;:::i;:::-;11393:9;:15;11403:4;11393:15;;;;;;;;;;;;;;;:44;;;;11446:20;11469:21;11484:5;11469:14;:21::i;:::-;11446:44;;11497:20;11520:21;11535:5;11520:14;:21::i;:::-;11497:44;;11548:26;11577:30;11594:12;11577;:16;;:30;;;;:::i;:::-;11548:59;;11614:24;11641:29;11651:18;11641:5;:9;;:29;;;;:::i;:::-;11614:56;;11695:9;:21;11705:10;11695:21;;;;;;;;;;;;;;;;;;;;;;;;;11691:806;;;11741:24;11759:5;11741:9;:13;11751:2;11741:13;;;;;;;;;;;;;;;;:17;;:24;;;;:::i;:::-;11725:9;:13;11735:2;11725:13;;;;;;;;;;;;;;;:40;;;;11787:12;;11772;:27;;;;11837:37;11868:5;11837:8;:14;11846:4;11837:14;;;;;;;;;;;;;;;:26;11852:10;11837:26;;;;;;;;;;;;;;;;:30;;:37;;;;:::i;:::-;11808:8;:14;11817:4;11808:14;;;;;;;;;;;;;;;:26;11823:10;11808:26;;;;;;;;;;;;;;;:66;;;;11907:2;11886:31;;11895:10;11886:31;;;11911:5;11886:31;;;;;;;;;;;;;;;;;;11691:806;;;11954:35;11972:16;11954:9;:13;11964:2;11954:13;;;;;;;;;;;;;;;;:17;;:35;;;;:::i;:::-;11938:9;:13;11948:2;11938:13;;;;;;;;;;;;;;;:51;;;;12011:30;12028:12;12011;;:16;;:30;;;;:::i;:::-;11996:12;:45;;;;12113:80;12180:12;12113:9;:62;12131:42;12113:62;;;;;;;;;;;;;;;;:66;;:80;;;;:::i;:::-;12048:9;:62;12066:42;12048:62;;;;;;;;;;;;;;;:145;;;;12235:37;12266:5;12235:8;:14;12244:4;12235:14;;;;;;;;;;;;;;;:26;12250:10;12235:26;;;;;;;;;;;;;;;;:30;;:37;;;;:::i;:::-;12206:8;:14;12215:4;12206:14;;;;;;;;;;;;;;;:26;12221:10;12206:26;;;;;;;;;;;;;;;:66;;;;12311:2;12290:42;;12299:10;12290:42;;;12315:16;12290:42;;;;;;;;;;;;;;;;;;12373;12344:87;;12353:10;12344:87;;;12418:12;12344:87;;;;;;;;;;;;;;;;;;12472:1;12443:46;;12452:10;12443:46;;;12476:12;12443:46;;;;;;;;;;;;;;;;;;11691:806;12510:4;12503:11;;;;;;11176:1344;;;;;:::o;3516:143::-;2891:5;;;;;;;;;;;2877:19;;:10;:19;;;2869:28;;;;;;3600:5;3578:9;:19;3588:8;3578:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;3642:8;3621:30;;;;;;;;;;;;3516:143;:::o;14530:774::-;14637:4;2891:5;;;;;;;;;;;2877:19;;:10;:19;;;2869:28;;;;;;14659:18;14680:14;14688:5;14680:3;:7;;:14;;;;:::i;:::-;14659:35;;14913:1;14876:33;14889:10;14901:7;14876:12;:33::i;:::-;:38;14916:14;;;;;;;;;;;;;;;;;14868:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;14868:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14961:1;14950:7;:12;;14964:11;;;;;;;;;;;;;;;;;14942:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;14942:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15031:1;14993:6;:18;15000:10;14993:18;;;;;;;;;;;;;;;:27;15012:7;14993:27;;;;;;;;;;;:34;;;:39;14989:94;;;15047:10;:22;15058:10;15047:22;;;;;;;;;;;;;;;15075:7;15047:36;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;15047:36:0;;;;;;;;;;;;;;;;;;;;;;14989:94;15096:32;15113:4;15120:7;15096:8;:32::i;:::-;;15171:37;;;;;;;;15181:7;15171:37;;;;15190:10;15171:37;;;;15202:5;15171:37;;;;;15141:6;:18;15148:10;15141:18;;;;;;;;;;;;;;;:27;15160:7;15141:27;;;;;;;;;;;:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15245:7;15233:10;15226:48;;;15254:7;15263:10;15226:48;;;;;;;;;;;;;;;;;;;;;;;;15292:4;15285:11;;;14530:774;;;;;:::o;19793:631::-;19856:24;19898:20;19936:9;19948:1;19936:13;;19931:396;19955:10;:15;19966:3;19955:15;;;;;;;;;;;;;;;:22;;;;19951:1;:26;19931:396;;;20014:41;20031:3;20036:10;:15;20047:3;20036:15;;;;;;;;;;;;;;;20052:1;20036:18;;;;;;;;;;;;;;;;20014:16;:41::i;:::-;19999:56;;20089:1;20074:12;:16;20070:246;;;20130:34;20151:12;20130:16;:20;;:34;;;;:::i;:::-;20111:53;;20225:4;20183:6;:11;20190:3;20183:11;;;;;;;;;;;;;;;:31;20195:10;:15;20206:3;20195:15;;;;;;;;;;;;;;;20211:1;20195:18;;;;;;;;;;;;;;;;20183:31;;;;;;;;;;;:39;;;:46;;;;;;;;;;;;;;;;;;20267:10;:15;20278:3;20267:15;;;;;;;;;;;;;;;20283:1;20267:18;;;;;;;;;;;;;;;;20262:3;20253:47;;;20287:12;20253:47;;;;;;;;;;;;;;;;;;20070:246;19979:3;;;;;;;19931:396;;;;20364:1;20345:16;:20;20341:75;;;20380:4;:13;;;20394:3;20399:16;20380:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20380:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20380:36:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20380:36:0;;;;;;;;;;;;;;;;;20341:75;19793:631;;;;:::o;2581:76::-;2621:5;2642:9;;;;;;;;;;;2635:16;;2581:76;:::o;9309:216::-;9369:7;9386:18;9407:23;9418:11;;9407:5;:10;;:23;;;;:::i;:::-;9386:44;;9437:18;9458:37;9490:4;9458:27;9473:11;;9458:10;:14;;:27;;;;:::i;:::-;:31;;:37;;;;:::i;:::-;9437:58;;9509:10;9502:17;;;;9309:216;;;:::o;12536:305::-;12616:4;12656:1;12637:21;;:7;:21;;;;12629:30;;;;;;12699:45;12733:10;12699:8;:20;12708:10;12699:20;;;;;;;;;;;;;;;:29;12720:7;12699:29;;;;;;;;;;;;;;;;:33;;:45;;;;:::i;:::-;12666:8;:20;12675:10;12666:20;;;;;;;;;;;;;;;:29;12687:7;12666:29;;;;;;;;;;;;;;;:79;;;;12778:7;12757:60;;12766:10;12757:60;;;12787:8;:20;12796:10;12787:20;;;;;;;;;;;;;;;:29;12808:7;12787:29;;;;;;;;;;;;;;;;12757:60;;;;;;;;;;;;;;;;;;12831:4;12824:11;;12536:305;;;;:::o;3667:112::-;3728:4;3752:9;:19;3762:8;3752:19;;;;;;;;;;;;;;;;;;;;;;;;;3745:26;;3667:112;;;:::o;13371:77::-;13417:25;13423:10;13435:6;13417:5;:25::i;:::-;13371:77;:::o;17510:301::-;17595:14;17636;17646:3;17636:9;:14::i;:::-;17627:23;;17668:9;17680:1;17668:13;;17663:138;17687:10;:15;17698:3;17687:15;;;;;;;;;;;;;;;:22;;;;17683:1;:26;17663:138;;;17740:49;17751:37;17764:3;17769:10;:15;17780:3;17769:15;;;;;;;;;;;;;;;17785:1;17769:18;;;;;;;;;;;;;;;;17751:12;:37::i;:::-;17740:6;:10;;:49;;;;:::i;:::-;17731:58;;17711:3;;;;;;;17663:138;;;;17510:301;;;:::o;15664:624::-;15786:4;15808:18;15829:14;15837:5;15829:3;:7;;:14;;;;:::i;:::-;15808:35;;15917:1;15887:26;15900:3;15905:7;15887:12;:26::i;:::-;:31;15920:14;;;;;;;;;;;;;;;;;15879:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;15879:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15965:1;15954:7;:12;;15968:11;;;;;;;;;;;;;;;;;15946:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;15946:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16028:1;15997:6;:11;16004:3;15997:11;;;;;;;;;;;;;;;:20;16009:7;15997:20;;;;;;;;;;;:27;;;:32;15993:80;;;16044:10;:15;16055:3;16044:15;;;;;;;;;;;;;;;16065:7;16044:29;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;16044:29:0;;;;;;;;;;;;;;;;;;;;;;15993:80;16086:32;16103:4;16110:7;16086:8;:32::i;:::-;;16154:37;;;;;;;;16164:7;16154:37;;;;16173:10;16154:37;;;;16185:5;16154:37;;;;;16131:6;:11;16138:3;16131:11;;;;;;;;;;;;;;;:20;16143:7;16131:20;;;;;;;;;;;:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16229:7;16224:3;16217:41;;;16238:7;16247:10;16217:41;;;;;;;;;;;;;;;;;;;;;;;;16276:4;16269:11;;;15664:624;;;;;;:::o;19342:291::-;19446:14;19515:3;19482:6;:11;19489:3;19482:11;;;;;;;;;;;;;;;:20;19494:7;19482:20;;;;;;;;;;;:29;;;:36;;:69;;;;;19523:6;:11;19530:3;19523:11;;;;;;;;;;;;;;;:20;19535:7;19523:20;;;;;;;;;;;:28;;;;;;;;;;;;19522:29;19482:69;19478:147;;;19598:6;:11;19605:3;19598:11;;;;;;;;;;;;;;;:20;19610:7;19598:20;;;;;;;;;;;:27;;;19589:36;;19478:147;19342:291;;;;:::o;16535:224::-;16635:14;16672:6;:11;16679:3;16672:11;;;;;;;;;;;;;;;:20;16684:7;16672:20;;;;;;;;;;;:28;;;;;;;;;;;;16667:84;;16724:6;:11;16731:3;16724:11;;;;;;;;;;;;;;;:20;16736:7;16724:20;;;;;;;;;;;:27;;;16715:36;;16667:84;16535:224;;;;:::o;3785:631::-;2891:5;;;;;;;;;;;2877:19;;:10;:19;;;2869:28;;;;;;3865:4;3838:9;:24;3856:4;3838:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;3936:4;3880:9;:53;3890:42;3880:53;;;;;;;;;;;;;;;;:60;;;;;;;;;;;;;;;;;;4007:4;3951:9;:53;3961:42;3951:53;;;;;;;;;;;;;;;;:60;;;;;;;;;;;;;;;;;;4078:4;4022:9;:53;4032:42;4022:53;;;;;;;;;;;;;;;;:60;;;;;;;;;;;;;;;;;;4128:4;4103:31;;;;;;;;;;;;4174:42;4157:60;;;;;;;;;;;;4258:42;4241:60;;;;;;;;;;;;4344:42;4327:60;;;;;;;;;;;;3785:631::o;9072:100::-;9127:7;9150:9;:16;9160:5;9150:16;;;;;;;;;;;;;;;;9143:23;;9072:100;;;:::o;4535:47::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;13747:230::-;13832:8;:17;13841:7;13832:17;;;;;;;;;;;;;;;:29;13850:10;13832:29;;;;;;;;;;;;;;;;13822:6;:39;;13814:48;;;;;;13901:41;13935:6;13901:8;:17;13910:7;13901:17;;;;;;;;;;;;;;;:29;13919:10;13901:29;;;;;;;;;;;;;;;;:33;;:41;;;;:::i;:::-;13869:8;:17;13878:7;13869:17;;;;;;;;;;;;;;;:29;13887:10;13869:29;;;;;;;;;;;;;;;:73;;;;13949:22;13955:7;13964:6;13949:5;:22::i;:::-;13747:230;;:::o;18622:465::-;18718:4;18784:1;18748:33;18761:10;18773:7;18748:12;:33::i;:::-;:37;18787:10;;;;;;;;;;;;;;;;;18740:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;18740:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18809:32;18826:4;18833:7;18809:8;:32::i;:::-;;18891:47;18930:7;18891:6;:18;18898:10;18891:18;;;;;;;;;;;;;;;:27;18910:7;18891:27;;;;;;;;;;;:34;;;:38;;:47;;;;:::i;:::-;18854:6;:18;18861:10;18854:18;;;;;;;;;;;;;;;:27;18873:7;18854:27;;;;;;;;;;;:34;;:84;;;;18975:7;18963:10;18956:101;;;18984:6;:18;18991:10;18984:18;;;;;;;;;;;;;;;:27;19003:7;18984:27;;;;;;;;;;;:34;;;19020:6;:18;19027:10;19020:18;;;;;;;;;;;;;;;:27;19039:7;19020:27;;;;;;;;;;;:36;;;18956:101;;;;;;;;;;;;;;;;;;;;;;;;19075:4;19068:11;;18622:465;;;;:::o;2738:93::-;2779:42;2771:5;;:50;;;;;;;;;;;;;;;;;;2738:93::o;2709:20::-;;;;;;;;;;;;;:::o;2495:80::-;2533:13;2562:7;2555:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2495:80;:::o;12847:315::-;12932:4;12972:1;12953:21;;:7;:21;;;;12945:30;;;;;;13015:50;13049:15;13015:8;:20;13024:10;13015:20;;;;;;;;;;;;;;;:29;13036:7;13015:29;;;;;;;;;;;;;;;;:33;;:50;;;;:::i;:::-;12982:8;:20;12991:10;12982:20;;;;;;;;;;;;;;;:29;13003:7;12982:29;;;;;;;;;;;;;;;:84;;;;13099:7;13078:60;;13087:10;13078:60;;;13108:8;:20;13117:10;13108:20;;;;;;;;;;;;;;;:29;13129:7;13108:29;;;;;;;;;;;;;;;;13078:60;;;;;;;;;;;;;;;;;;13152:4;13145:11;;12847:315;;;;:::o;9538:1192::-;9599:4;9629:9;:21;9639:10;9629:21;;;;;;;;;;;;;;;;9620:5;:30;;9612:39;;;;;;9680:1;9666:16;;:2;:16;;;;9658:25;;;;;;9692:20;9715:21;9730:5;9715:14;:21::i;:::-;9692:44;;9743:20;9766:21;9781:5;9766:14;:21::i;:::-;9743:44;;9794:26;9823:30;9840:12;9823;:16;;:30;;;;:::i;:::-;9794:59;;9860:24;9887:29;9897:18;9887:5;:9;;:29;;;;:::i;:::-;9860:56;;9931:9;:21;9941:10;9931:21;;;;;;;;;;;;;;;;;;;;;;;;;9927:780;;;9985:32;10011:5;9985:9;:21;9995:10;9985:21;;;;;;;;;;;;;;;;:25;;:32;;;;:::i;:::-;9961:9;:21;9971:10;9961:21;;;;;;;;;;;;;;;:56;;;;10040:24;10058:5;10040:9;:13;10050:2;10040:13;;;;;;;;;;;;;;;;:17;;:24;;;;:::i;:::-;10024:9;:13;10034:2;10024:13;;;;;;;;;;;;;;;:40;;;;10088:12;;10073;:27;;;;10133:2;10112:31;;10121:10;10112:31;;;10137:5;10112:31;;;;;;;;;;;;;;;;;;9927:780;;;10188:32;10214:5;10188:9;:21;10198:10;10188:21;;;;;;;;;;;;;;;;:25;;:32;;;;:::i;:::-;10164:9;:21;10174:10;10164:21;;;;;;;;;;;;;;;:56;;;;10243:35;10261:16;10243:9;:13;10253:2;10243:13;;;;;;;;;;;;;;;;:17;;:35;;;;:::i;:::-;10227:9;:13;10237:2;10227:13;;;;;;;;;;;;;;;:51;;;;10350:80;10417:12;10350:9;:62;10368:42;10350:62;;;;;;;;;;;;;;;;:66;;:80;;;;:::i;:::-;10285:9;:62;10303:42;10285:62;;;;;;;;;;;;;;;:145;;;;10458:30;10475:12;10458;;:16;;:30;;;;:::i;:::-;10443:12;:45;;;;10521:2;10500:42;;10509:10;10500:42;;;10525:16;10500:42;;;;;;;;;;;;;;;;;;10583;10554:87;;10563:10;10554:87;;;10628:12;10554:87;;;;;;;;;;;;;;;;;;10682:1;10653:46;;10662:10;10653:46;;;10686:12;10653:46;;;;;;;;;;;;;;;;;;9927:780;10720:4;10713:11;;;;;;9538:1192;;;;:::o;18004:414::-;18090:4;18156:1;18120:33;18133:10;18145:7;18120:12;:33::i;:::-;:37;18159:10;;;;;;;;;;;;;;;;;18112:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;18112:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18222:47;18263:5;18222:6;:18;18229:10;18222:18;;;;;;;;;;;;;;;:27;18241:7;18222:27;;;;;;;;;;;:36;;;:40;;:47;;;;:::i;:::-;18183:6;:18;18190:10;18183:18;;;;;;;;;;;;;;;:27;18202:7;18183:27;;;;;;;;;;;:36;;:86;;;;18306:7;18294:10;18287:101;;;18315:6;:18;18322:10;18315:18;;;;;;;;;;;;;;;:27;18334:7;18315:27;;;;;;;;;;;:34;;;18351:6;:18;18358:10;18351:18;;;;;;;;;;;;;;;:27;18370:7;18351:27;;;;;;;;;;;:36;;;18287:101;;;;;;;;;;;;;;;;;;;;;;;;18406:4;18399:11;;18004:414;;;;:::o;20587:303::-;20677:24;20724:9;20736:1;20724:13;;20719:162;20743:10;:15;20754:3;20743:15;;;;;;;;;;;;;;;:22;;;;20739:1;:26;20719:162;;;20806:63;20827:41;20844:3;20849:10;:15;20860:3;20849:15;;;;;;;;;;;;;;;20865:1;20849:18;;;;;;;;;;;;;;;;20827:16;:41::i;:::-;20806:16;:20;;:63;;;;:::i;:::-;20787:82;;20767:3;;;;;;;20719:162;;;;20587:303;;;:::o;8574:32::-;;;;:::o;4881:63::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9178:125::-;9250:7;9273:8;:15;9282:5;9273:15;;;;;;;;;;;;;;;:24;9289:7;9273:24;;;;;;;;;;;;;;;;9266:31;;9178:125;;;;:::o;2923:139::-;2891:5;;;;;;;;;;;2877:19;;:10;:19;;;2869:28;;;;;;3024:1;3004:22;;:8;:22;;;;2996:31;;;;;;3048:8;3040:5;;:16;;;;;;;;;;;;;;;;;;2923:139;:::o;1711:113::-;1769:7;1797:1;1792;:6;;1785:14;;;;1817:1;1813;:5;1806:12;;1711:113;;;;:::o;1830:133::-;1888:7;1904:9;1920:1;1916;:5;1904:17;;1940:1;1935;:6;;1928:14;;;;1956:1;1949:8;;;1830:133;;;;:::o;1969:157::-;2028:7;2044:9;2056:8;2060:1;2062;2056:3;:8::i;:::-;2044:20;;2071:9;2083:8;2087:1;2089;2083:3;:8::i;:::-;2071:20;;2105:15;2109:8;2113:1;2115;2109:3;:8::i;:::-;2118:1;2105:3;:15::i;:::-;2098:22;;;;1969:157;;;;:::o;1407:180::-;1465:7;1490:1;1485;:6;1481:37;;;1509:1;1502:8;;;;1481:37;1524:9;1540:1;1536;:5;1524:17;;1564:1;1559;1555;:5;;;;;;:10;1548:18;;;;1580:1;1573:8;;;1407:180;;;;;:::o;1593:112::-;1651:7;1667:9;1683:1;1679;:5;;;;;;1667:17;;1698:1;1691:8;;;1593:112;;;;:::o;13454:287::-;13536:1;13526:6;:11;;13518:20;;;;;;13563:9;:18;13573:7;13563:18;;;;;;;;;;;;;;;;13553:6;:28;;13545:37;;;;;;13604:24;13621:6;13604:12;;:16;;:24;;;;:::i;:::-;13589:12;:39;;;;13656:30;13679:6;13656:9;:18;13666:7;13656:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;13635:9;:18;13645:7;13635:18;;;;;;;;;;;;;;;:51;;;;13724:1;13698:37;;13707:7;13698:37;;;13728:6;13698:37;;;;;;;;;;;;;;;;;;13454:287;;:::o

Swarm Source

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