ETH Price: $3,127.30 (-4.50%)

Token

TrustShore (TST)
 

Overview

Max Total Supply

2,201,696,959 TST

Holders

2,524

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
54,000 TST

Value
$0.00
0xf9f42b22bc4d06c9575b9922010e592af99857a2
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.

Contract Source Code Verified (Exact Match)

Contract Name:
TrustShoreToken

Compiler Version
v0.5.0+commit.1d4f565a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2019-06-24
*/

pragma solidity ^0.5.0;


library ECRecovery {

  /**
   * @dev Recover signer address from a message by using his signature
   * @param hash bytes32 message, the hash is the signed message. What is recovered is the signer address.
   * @param sig bytes signature, the signature is generated using web3.eth.sign()
   */
  function recover(bytes32 hash, bytes memory sig) public pure returns (address) {
    bytes32 r;
    bytes32 s;
    uint8 v;

    //Check the signature length
    if (sig.length != 65) {
      return (address(0));
    }

    // Divide the signature in r, s and v variables
    assembly {
      r := mload(add(sig, 32))
      s := mload(add(sig, 64))
      v := byte(0, mload(add(sig, 96)))
    }

    // Version of signature should be 27 or 28, but 0 and 1 are also possible versions
    if (v < 27) {
      v += 27;
    }

    // If the version is correct return the signer address
    if (v != 27 && v != 28) {
      return (address(0));
    } else {
      return ecrecover(hash, v, r, s);
    }
  }
} 


/**
 * @title Roles
 * @dev Library for managing addresses assigned to a Role.
 */
library Roles {
    struct Role {
        mapping (address => bool) bearer;
    }

    /**
     * @dev Give an account access to this role.
     */
    function add(Role storage role, address account) internal {
        require(!has(role, account), "Roles: account already has role");
        role.bearer[account] = true;
    }

    /**
     * @dev Remove an account's access to this role.
     */
    function remove(Role storage role, address account) internal {
        require(has(role, account), "Roles: account does not have role");
        role.bearer[account] = false;
    }

    /**
     * @dev Check if an account has this role.
     * @return bool
     */
    function has(Role storage role, address account) internal view returns (bool) {
        require(account != address(0), "Roles: account is the zero address");
        return role.bearer[account];
    }
}



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

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, "SafeMath: division by zero");
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend).
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "SafeMath: subtraction overflow");
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Adds two unsigned integers, reverts on overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Divides two unsigned integers and returns the remainder (unsigned integer modulo),
     * reverts when dividing by zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b != 0, "SafeMath: modulo by zero");
        return a % b;
    }
}


interface IERC20 {
    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);
    function totalSupply() external view returns (uint256);
    function balanceOf(address who) external view returns (uint256);
    function allowance(address owner, address spender) external view returns (uint256);

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

contract ERC20 is IERC20 {
    using SafeMath for uint256;
    mapping (address => uint256) internal _balances;
    mapping (address => mapping (address => uint256)) internal _allowances;
    uint256 internal _totalSupply;

    constructor() internal {
    }

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

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

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

    function transfer(address to, uint256 value) public returns (bool) {
        _transfer(msg.sender, to, value);
        return true;
    }

    function approve(address spender, uint256 value) public returns (bool) {
        _approve(msg.sender, spender, value);
        return true;
    }

    function transferFrom(address from, address to, uint256 value) public returns (bool) {
        _transfer(from, to, value);
        _approve(from, msg.sender, _allowances[from][msg.sender].sub(value));
        return true;
    }

    function _transfer(address _from, address to, uint256 value) internal {
        require(_from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _balances[_from] = _balances[_from].sub(value);
        _balances[to] = _balances[to].add(value);
        emit Transfer(_from, to, value);
    }

    function _approve(address owner, address spender, uint256 value) internal {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = value;
        emit Approval(owner, spender, value);
    }

}

contract Ownable {
    address public owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    using SafeMath for uint256;
    uint256 public startdate;

    constructor() internal {
        owner = msg.sender;
        startdate = now;
    }

    modifier onlyOwner() {
        require(msg.sender == owner,"Ownable: caller is not owner.");
        _;
    }

    function transferOwnership(address newOwner) public;

    function _transferOwnership(address newOwner) internal onlyOwner {
        require(newOwner != address(0), "Ownable: address is zero.");
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
    }
}

contract MinterRole {
    using Roles for Roles.Role;

    event MinterAdded(address indexed account);
    event MinterRemoved(address indexed account);

    Roles.Role private _minters;

    constructor () internal {
        _addMinter(msg.sender);
    }

    modifier onlyMinter() {
        require(isMinter(msg.sender), "MinterRole: caller does not have the Minter role.");
        _;
    }

    function isMinter(address account) public view returns (bool) {
        return _minters.has(account);
    }

    function renounceMinter() public;

    function _addMinter(address account) internal {
        _minters.add(account);
        emit MinterAdded(account);
    }

    function _removeMinter(address account) internal {
        _minters.remove(account);
        emit MinterRemoved(account);
    }
}

contract Mintable is MinterRole{
     uint256 private _cap;
     event Mint(address indexed minter, address receiver, uint256 value);

    constructor (uint256 cap) internal {
        require(cap > 0, "ERC20Capped: cap is 0");
        _cap = cap;
    }

    function renounceMinter() public;

    function addMinter(address minter) public;

    function removeMinter(address minter) public;

    function cap() public view returns (uint256) {
        return _cap;
    }

    function mint(address to, uint256 value) public onlyMinter returns (bool) {
        _mint(to, value);
        emit Mint(msg.sender, to, value);
        return true;
    }

    function _mint(address account, uint256 value) internal;
}

contract Pausable {
    event Paused(address account);
    event Unpaused(address account);

    bool private _paused;

    constructor () internal {
        _paused = false;
    }

    function paused() public view returns (bool) {
        return _paused;
    }

    modifier whenNotPaused() {
        require(!_paused, "Pausable: paused");
        _;
    }

    modifier whenPaused() {
        require(_paused, "Pausable: not paused");
        _;
    }

    function _pause() internal whenNotPaused {
        _paused = true;
        emit Paused(msg.sender);
    }

    function _unpause() internal whenPaused {
        _paused = false;
        emit Unpaused(msg.sender);
    }

    function pause() public;
    function unpause() public;
}

contract Burnable {
    event Burn(address burner, uint256 value);

    constructor () internal {}
    function burn(address account, uint256 value) public;

    function _burn(address account, uint256 value) internal{
        emit Burn(account, value);
    }
}

contract Lockable {
    uint256 internal _totalLocked = 0;
    event Lock(address beneficiary, uint256 amount, uint256 releaseTime);

    mapping(address => uint256) internal _lock_list_period;
    mapping(address => bool) internal _lock_list;
    mapping(address => uint256) internal _revocable;

    modifier notLocked() {
        require(_lock_list[msg.sender] == true, "Lockable: sender address is locked.");
        _;
    }

    function totalLocked() public view returns (uint256){
        return _totalLocked;
    }

    function mintLockedToken(address addr, uint256 tokens, uint256 _duration) public;

    function releaseLockedToken() public returns (bool);

    function isLocked(address addr) public view returns (bool) {
        return _lock_list[addr];
    }

    function lockedPeriod(address addr) public view returns (uint256) {
        return _lock_list_period[addr];
    }

    function lockedBalance(address addr) public view returns (uint256) {
        return _revocable[addr];
    }
}

contract DelegatorRole {
    using Roles for Roles.Role;

    event DelegatorAdded(address indexed account);
    event DelegatorRemoved(address indexed account);

    Roles.Role private _delegators;

    constructor () internal {
        _addDelegator(msg.sender);
    }

    modifier onlyDelegator() {
        require(isDelegator(msg.sender), "DelegatorRole: caller does not have the Delegator role.");
        _;
    }

    function isDelegator(address account) public view returns (bool) {
        return _delegators.has(account);
    }

    function renounceDelegator() public;

    function _addDelegator(address account) internal {
        _delegators.add(account);
        emit DelegatorAdded(account);
    }

    function _removeDelegator(address account) internal {
        _delegators.remove(account);
        emit DelegatorRemoved(account);
    }
}

contract Delegatable is DelegatorRole{
    using ECRecovery for bytes32;
    using SafeMath for uint;

    uint16 private _feeRate;
    address private _feeCollector;
    mapping(address => uint256) internal _nonces;
    event Delegated(address delegator, address sender, address receiver, uint256 value, uint256 nonce);

    constructor () internal{
        _feeRate = 10; //0.01%
        _feeCollector = msg.sender;
    }

    function setFeeRate(uint16 _rate) public;

    function setFeeCollector(address _collector) public;

    function addDelegator(address minter) public;

    function removeDelegator(address minter) public;

    function renounceDelegator() public;

    function _setFeeRate(uint16 _rate) internal{
        _feeRate = _rate;
    }

    function _setFeeCollector(address _collector) internal{
        _feeCollector = _collector;
    }

    function feeRate() public view returns (uint16){
        return _feeRate;
    }

    function feeCollector() public view returns (address){
        return _feeCollector;
    }

    function nonceOf(address _addr) public view returns (uint256 nonce){
        return _nonces[_addr];
    }

    function _delegatedTransfer(address _from, address _to, uint256 _value, uint256 _fee) internal returns(bool success);

    function delegatedTransfer(address _from, address _to, uint256 _value, uint256 _nonce, bytes calldata _signature) external onlyDelegator returns(bool success){
        require(_nonce == nonceOf(_from), "Delegatable: nonce is not correct");

        bytes32 hash = keccak256(abi.encodePacked(
            "\x19Ethereum Signed Message:\n32",
            keccak256(abi.encodePacked(_from, _to, _value, _nonce)))
        );
        address sender = hash.recover(_signature);

        // fee
        uint _fee = _value.mul(_feeRate).div(uint(100000));

        if(_from == sender){
            if(_delegatedTransfer(_from, _to, _value, _fee)){
                uint256 newNonce = nonceOf(_from).add(uint256(1));
                _nonces[_from] = newNonce;
                emit Delegated(msg.sender, _from, _to, _value, newNonce);
                return true;
            }
            else{
                return false;
            }
        } else {
            return false;
        }
    }
}

contract TrustShoreToken is ERC20, Ownable, Mintable, Pausable, Burnable, Lockable, Delegatable{
    string private _name = "TrustShore";
    string private _symbol = "TST";
    uint8 private _decimals = 18;

    constructor (uint256 cap) public Mintable(cap){
    }

    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;
    }

    //Override Mintable
    function _mint(address account, uint256 value) internal {
        require(account != address(0), "Mintable: mint to the zero address.");
        require(totalSupply().add(value).add(totalLocked()) <= cap(), "Mintable: cap exceeded.");

        _totalSupply = _totalSupply.add(value);
        _balances[account] = _balances[account].add(value);
        emit Transfer(address(0), account, value);
    }

    function renounceMinter() public {
        require(msg.sender != owner, "Mintable: Owner cannot renounce. Transfer owner first.");
        super._removeMinter(msg.sender);
    }

    function addMinter(address minter) public onlyOwner{
        super._addMinter(minter);

    }

    function removeMinter(address minter) public onlyOwner{
        super._removeMinter(minter);
    }

    //Override Ownerble
    function transferOwnership(address newOwner) public{
        require(msg.sender == owner, "Ownable: only owner transfer ownership");
        addMinter(newOwner);
        addDelegator(newOwner);
        removeMinter(owner);
        removeDelegator(owner);
        super._transferOwnership(newOwner);
    }

    //Override Pausable
    function pause() public onlyOwner {
        require(!paused(), "Pausable: Already paused.");
        super._pause();
    }

    function unpause() public onlyOwner {
        require(paused(), "Pausable: Not paused.");
        super._unpause();
    }

    function transfer(address to, uint256 value) public returns (bool) {
        require(!paused(), "Pausable: token transfer is paused.");
        super._transfer(msg.sender, to, value);
        return true;
    }

    function transferFrom(address from, address to, uint256 value) public whenNotPaused returns (bool) {
        require(value > 0, "transferFrom: value is must be greater than zero.");
        require(balanceOf(from) >= value, "transferFrom: balance of from address is not enough");
        require(_allowances[from][msg.sender] >= value, "transferFrom: sender are not allowed to send.");

        return super.transferFrom(from, to, value);
    }

    function approve(address spender, uint256 value) public whenNotPaused returns (bool) {
        return super.approve(spender, value);
    }

    //Override Burnable
    function burn(address account, uint256 value) public onlyOwner {
        require(account != address(0), "Burnable: burn from the zero address");
        require(_balances[account] >= value, "Burnable: not enough tokens");
        _totalSupply = _totalSupply.sub(value);
        _balances[account] = _balances[account].sub(value);
        super._burn(account, value);
        emit Transfer(account, address(0), value);
    }

    //Apply SafeTransfer
    function safeTransfer(address to, uint256 value) public {
        require(!_isContract(to),"SafeTransfer: receiver is contract");
        transfer(to,value);
    }

    function safeTransferFrom(address from, address to, uint256 value) public {
        require(!_isContract(from),"SafeTransfer: sender is contract");
        require(!_isContract(to),"SafeTransfer: receiver is contract");
        transferFrom(from, to, value);
    }

    function safeApprove(address spender, uint256 value) public {
        require(value != 0, "SafeTransfer: approve from non-zero to non-zero allowance");
        require(!_isContract(spender),"SafeTransfer: spender is contract");
        approve(spender, value);
    }

    function _isContract(address _addr) private view returns (bool is_contract){
        uint length;
        assembly {
            length := extcodesize(_addr)
        }
        return (length>0);
    }

    //Override Lockable
    function mintLockedToken(address addr, uint256 tokens, uint256 _duration) public {
        require(msg.sender == owner, "Lockable: only owner can lock token ");
        require(_totalSupply.add(totalLocked()).add(tokens) <= cap(), "Lockable: locked tokens can not exceed total cap.");
        require(_lock_list[addr] == false, "Lockable: this address is already locked");

        uint256 releaseTime = block.timestamp.add(_duration.mul(1 minutes));

        //if(_lock_list[addr] == true) {
        //    _totalLocked.sub(_revocable[addr]);
        //}

        _lock_list_period[addr] = releaseTime;
        _lock_list[addr] = true;
        _revocable[addr] = tokens;
        _totalLocked = _totalLocked.add(tokens);

        emit Lock(addr, tokens, releaseTime);
    }

    function releaseLockedToken() public returns (bool) {
        require(_lock_list[msg.sender] == true);
        require(_revocable[msg.sender] > 0);

        uint256 releaseTime = _lock_list_period[msg.sender];
        uint256 currentTime = block.timestamp;

        if(currentTime > releaseTime) {
            uint256 tokens = _revocable[msg.sender];

            _lock_list_period[msg.sender] = 0;
            _lock_list[msg.sender] = false;
            _revocable[msg.sender] = 0;
            _totalSupply = _totalSupply.add(tokens);
            _balances[msg.sender] = _balances[msg.sender].add(tokens);
            return true;
        } else {
            return false;
        }
    }

    //Override Delegatable
    function setFeeRate(uint16 _rate) public{
        require(msg.sender == owner, "Delegatable: only owner change the fee rate");
        _setFeeRate(_rate);
    }

    function setFeeCollector(address _collector) public{
        require(msg.sender == owner, "Delegatable: only owner change the fee collector");
        _setFeeCollector(_collector);
    }

    function renounceDelegator() public {
        require(msg.sender != owner, "Delegatable : Owner cannot renounce. Transfer owner first.");
        super._removeDelegator(msg.sender);
    }

    function _delegatedTransfer(address _from, address _to, uint256 _value, uint256 _fee) internal returns(bool success){
        uint _amount = _value.add(_fee);

        if (balanceOf(_from) < _amount)
            return false;
        _balances[_from] = balanceOf(_from).sub(_amount);
        _balances[_to] = balanceOf(_to).add(_value);
        _balances[feeCollector()] = balanceOf(feeCollector()).add(_fee);
        emit Transfer(_from, _to, _value);
        emit Transfer(_from, feeCollector(), _fee);
        return true;
    }

    function addDelegator(address delegator) public onlyOwner{
        super._addDelegator(delegator);

    }

    function removeDelegator(address delegator) public onlyOwner{
        super._removeDelegator(delegator);
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"delegator","type":"address"}],"name":"addDelegator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_rate","type":"uint16"}],"name":"setFeeRate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"minter","type":"address"}],"name":"removeMinter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"mint","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"safeTransfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"addr","type":"address"}],"name":"isLocked","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalLocked","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"},{"name":"tokens","type":"uint256"},{"name":"_duration","type":"uint256"}],"name":"mintLockedToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"who","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"feeRate","outputs":[{"name":"","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"minter","type":"address"}],"name":"addMinter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceMinter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"addr","type":"address"}],"name":"lockedBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"},{"name":"value","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_collector","type":"address"}],"name":"setFeeCollector","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isMinter","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"releaseLockedToken","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceDelegator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"feeCollector","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"addr","type":"address"}],"name":"lockedPeriod","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_nonce","type":"uint256"},{"name":"_signature","type":"bytes"}],"name":"delegatedTransfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"startdate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"}],"name":"nonceOf","outputs":[{"name":"nonce","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"value","type":"uint256"}],"name":"safeApprove","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isDelegator","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"delegator","type":"address"}],"name":"removeDelegator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"cap","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"delegator","type":"address"},{"indexed":false,"name":"sender","type":"address"},{"indexed":false,"name":"receiver","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"nonce","type":"uint256"}],"name":"Delegated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"DelegatorAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"DelegatorRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"beneficiary","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"releaseTime","type":"uint256"}],"name":"Lock","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"burner","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"minter","type":"address"},{"indexed":false,"name":"receiver","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"MinterAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"MinterRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"}]

608060405260006008556040805190810160405280600a81526020017f547275737453686f726500000000000000000000000000000000000000000000815250600f90805190602001906200005692919062000567565b506040805190810160405280600381526020017f545354000000000000000000000000000000000000000000000000000000000081525060109080519060200190620000a492919062000567565b506012601160006101000a81548160ff021916908360ff160217905550348015620000ce57600080fd5b506040516020806200552983398101806040526020811015620000f057600080fd5b81019080805190602001909291905050508033600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555042600481905550620001643362000280640100000000026401000000009004565b600081111515620001dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f45524332304361707065643a206361702069732030000000000000000000000081525060200191505060405180910390fd5b80600681905550506000600760006101000a81548160ff0219169083151502179055506200021a33620002ea640100000000026401000000009004565b600a600d60006101000a81548161ffff021916908361ffff16021790555033600d60026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062000616565b620002a4816005620003546401000000000262004cf8179091906401000000009004565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b6200030e81600c620003546401000000000262004cf8179091906401000000009004565b8073ffffffffffffffffffffffffffffffffffffffff167fcf370ba38508da841f48b9981508fd166e3294ca16c4978a7a7bc38123ba582b60405160405180910390a250565b6200036f828262000443640100000000026401000000009004565b151515620003e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151562000510576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f526f6c65733a206163636f756e7420697320746865207a65726f20616464726581526020017f737300000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620005aa57805160ff1916838001178555620005db565b82800160010185558215620005db579182015b82811115620005da578251825591602001919060010190620005bd565b5b509050620005ea9190620005ee565b5090565b6200061391905b808211156200060f576000816000905550600101620005f5565b5090565b90565b614f0380620006266000396000f3fe6080604052600436106101f9576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146101fe578063095ea7b31461028e57806318160ddd1461030157806321fb4c351461032c57806323b872dd1461037d57806329ff0773146104105780633092afd51461044f578063313ce567146104a0578063355274ea146104d15780633f4ba83a146104fc57806340c10f1914610513578063423f6cef1461058657806342842e0e146105e15780634a4fbeec1461065c57806356891412146106c55780635c975abb146106f05780636a635fb81461071f57806370a08231146107845780638456cb59146107e95780638da5cb5b1461080057806395d89b4114610857578063978bbdb9146108e7578063983b2d561461091a578063986502751461096b5780639ae697bf146109825780639dc29fac146109e7578063a42dce8014610a42578063a9059cbb14610a93578063aa271e1a14610b06578063ae1be1e414610b6f578063b93192f714610b9e578063c415b95c14610bb5578063c689211614610c0c578063cc375b8a14610c71578063cde9f2ea14610d63578063dd62ed3e14610d8e578063ed2a2d6414610e13578063f2fde38b14610e78578063fbc6d1cb14610ec9578063fd8ab48214610f24578063fe5a2bcf14610f8d575b600080fd5b34801561020a57600080fd5b50610213610fde565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610253578082015181840152602081019050610238565b50505050905090810190601f1680156102805780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561029a57600080fd5b506102e7600480360360408110156102b157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611080565b604051808215151515815260200191505060405180910390f35b34801561030d57600080fd5b50610316611119565b6040518082815260200191505060405180910390f35b34801561033857600080fd5b5061037b6004803603602081101561034f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611123565b005b34801561038957600080fd5b506103f6600480360360608110156103a057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506111f4565b604051808215151515815260200191505060405180910390f35b34801561041c57600080fd5b5061044d6004803603602081101561043357600080fd5b81019080803561ffff1690602001909291905050506114ed565b005b34801561045b57600080fd5b5061049e6004803603602081101561047257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115e4565b005b3480156104ac57600080fd5b506104b56116b5565b604051808260ff1660ff16815260200191505060405180910390f35b3480156104dd57600080fd5b506104e66116cc565b6040518082815260200191505060405180910390f35b34801561050857600080fd5b506105116116d6565b005b34801561051f57600080fd5b5061056c6004803603604081101561053657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611821565b604051808215151515815260200191505060405180910390f35b34801561059257600080fd5b506105df600480360360408110156105a957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061195c565b005b3480156105ed57600080fd5b5061065a6004803603606081101561060457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611a0f565b005b34801561066857600080fd5b506106ab6004803603602081101561067f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b42565b604051808215151515815260200191505060405180910390f35b3480156106d157600080fd5b506106da611b98565b6040518082815260200191505060405180910390f35b3480156106fc57600080fd5b50610705611ba2565b604051808215151515815260200191505060405180910390f35b34801561072b57600080fd5b506107826004803603606081101561074257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050611bb9565b005b34801561079057600080fd5b506107d3600480360360208110156107a757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612002565b6040518082815260200191505060405180910390f35b3480156107f557600080fd5b506107fe61204a565b005b34801561080c57600080fd5b50610815612196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561086357600080fd5b5061086c6121bc565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156108ac578082015181840152602081019050610891565b50505050905090810190601f1680156108d95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156108f357600080fd5b506108fc61225e565b604051808261ffff1661ffff16815260200191505060405180910390f35b34801561092657600080fd5b506109696004803603602081101561093d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612276565b005b34801561097757600080fd5b50610980612347565b005b34801561098e57600080fd5b506109d1600480360360208110156109a557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061243e565b6040518082815260200191505060405180910390f35b3480156109f357600080fd5b50610a4060048036036040811015610a0a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612487565b005b348015610a4e57600080fd5b50610a9160048036036020811015610a6557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506127ef565b005b348015610a9f57600080fd5b50610aec60048036036040811015610ab657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506128e6565b604051808215151515815260200191505060405180910390f35b348015610b1257600080fd5b50610b5560048036036020811015610b2957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506129a0565b604051808215151515815260200191505060405180910390f35b348015610b7b57600080fd5b50610b846129bd565b604051808215151515815260200191505060405180910390f35b348015610baa57600080fd5b50610bb3612ca7565b005b348015610bc157600080fd5b50610bca612d9e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610c1857600080fd5b50610c5b60048036036020811015610c2f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612dc8565b6040518082815260200191505060405180910390f35b348015610c7d57600080fd5b50610d49600480360360a0811015610c9457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190640100000000811115610d0557600080fd5b820183602082011115610d1757600080fd5b80359060200191846001830284011164010000000083111715610d3957600080fd5b9091929391929390505050612e11565b604051808215151515815260200191505060405180910390f35b348015610d6f57600080fd5b50610d78613331565b6040518082815260200191505060405180910390f35b348015610d9a57600080fd5b50610dfd60048036036040811015610db157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613337565b6040518082815260200191505060405180910390f35b348015610e1f57600080fd5b50610e6260048036036020811015610e3657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506133be565b6040518082815260200191505060405180910390f35b348015610e8457600080fd5b50610ec760048036036020811015610e9b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613407565b005b348015610ed557600080fd5b50610f2260048036036040811015610eec57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613566565b005b348015610f3057600080fd5b50610f7360048036036020811015610f4757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506136b8565b604051808215151515815260200191505060405180910390f35b348015610f9957600080fd5b50610fdc60048036036020811015610fb057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506136d5565b005b6060600f8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110765780601f1061104b57610100808354040283529160200191611076565b820191906000526020600020905b81548152906001019060200180831161105957829003601f168201915b5050505050905090565b6000600760009054906101000a900460ff16151515611107576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b61111183836137a6565b905092915050565b6000600254905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156111e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4f776e61626c653a2063616c6c6572206973206e6f74206f776e65722e00000081525060200191505060405180910390fd5b6111f1816137bd565b50565b6000600760009054906101000a900460ff1615151561127b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b600082111515611319576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001807f7472616e7366657246726f6d3a2076616c7565206973206d757374206265206781526020017f726561746572207468616e207a65726f2e00000000000000000000000000000081525060400191505060405180910390fd5b8161132385612002565b101515156113bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001807f7472616e7366657246726f6d3a2062616c616e6365206f662066726f6d20616481526020017f6472657373206973206e6f7420656e6f7567680000000000000000000000000081525060400191505060405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156114d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d8152602001807f7472616e7366657246726f6d3a2073656e64657220617265206e6f7420616c6c81526020017f6f77656420746f2073656e642e0000000000000000000000000000000000000081525060400191505060405180910390fd5b6114e4848484613817565b90509392505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001807f44656c6567617461626c653a206f6e6c79206f776e6572206368616e6765207481526020017f686520666565207261746500000000000000000000000000000000000000000081525060400191505060405180910390fd5b6115e1816138c8565b50565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156116a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4f776e61626c653a2063616c6c6572206973206e6f74206f776e65722e00000081525060200191505060405180910390fd5b6116b2816138e8565b50565b6000601160009054906101000a900460ff16905090565b6000600654905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561179b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4f776e61626c653a2063616c6c6572206973206e6f74206f776e65722e00000081525060200191505060405180910390fd5b6117a3611ba2565b1515611817576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f5061757361626c653a204e6f74207061757365642e000000000000000000000081525060200191505060405180910390fd5b61181f613942565b565b600061182c336129a0565b15156118c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001807f4d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766581526020017f20746865204d696e74657220726f6c652e00000000000000000000000000000081525060400191505060405180910390fd5b6118d08383613a46565b3373ffffffffffffffffffffffffffffffffffffffff167fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f88484604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a26001905092915050565b61196582613cda565b151515611a00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f536166655472616e736665723a20726563656976657220697320636f6e74726181526020017f637400000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b611a0a82826128e6565b505050565b611a1883613cda565b151515611a8d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f536166655472616e736665723a2073656e64657220697320636f6e747261637481525060200191505060405180910390fd5b611a9682613cda565b151515611b31576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f536166655472616e736665723a20726563656976657220697320636f6e74726181526020017f637400000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b611b3c8383836111f4565b50505050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600854905090565b6000600760009054906101000a900460ff16905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ca4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f4c6f636b61626c653a206f6e6c79206f776e65722063616e206c6f636b20746f81526020017f6b656e200000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b611cac6116cc565b611cda83611ccc611cbb611b98565b600254613ced90919063ffffffff16565b613ced90919063ffffffff16565b11151515611d76576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001807f4c6f636b61626c653a206c6f636b656420746f6b656e732063616e206e6f742081526020017f65786365656420746f74616c206361702e00000000000000000000000000000081525060400191505060405180910390fd5b60001515600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141515611e64576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001807f4c6f636b61626c653a2074686973206164647265737320697320616c7265616481526020017f79206c6f636b656400000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6000611e8c611e7d603c84613d7790919063ffffffff16565b42613ced90919063ffffffff16565b905080600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555082600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f8383600854613ced90919063ffffffff16565b6008819055507f49eaf4942f1237055eb4cfa5f31c9dfe50d5b4ade01e021f7de8be2fbbde557b848483604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a150505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561210f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4f776e61626c653a2063616c6c6572206973206e6f74206f776e65722e00000081525060200191505060405180910390fd5b612117611ba2565b15151561218c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f5061757361626c653a20416c7265616479207061757365642e0000000000000081525060200191505060405180910390fd5b612194613e44565b565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060108054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156122545780601f1061222957610100808354040283529160200191612254565b820191906000526020600020905b81548152906001019060200180831161223757829003601f168201915b5050505050905090565b6000600d60009054906101000a900461ffff16905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561233b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4f776e61626c653a2063616c6c6572206973206e6f74206f776e65722e00000081525060200191505060405180910390fd5b61234481613f49565b50565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151515612433576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001807f4d696e7461626c653a204f776e65722063616e6e6f742072656e6f756e63652e81526020017f205472616e73666572206f776e65722066697273742e0000000000000000000081525060400191505060405180910390fd5b61243c336138e8565b565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561254c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4f776e61626c653a2063616c6c6572206973206e6f74206f776e65722e00000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515612617576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f4275726e61626c653a206275726e2066726f6d20746865207a65726f2061646481526020017f726573730000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156126cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4275726e61626c653a206e6f7420656e6f75676820746f6b656e73000000000081525060200191505060405180910390fd5b6126e281600254613fa390919063ffffffff16565b600281905550612739816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fa390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612785828261402e565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156128da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f44656c6567617461626c653a206f6e6c79206f776e6572206368616e6765207481526020017f68652066656520636f6c6c6563746f720000000000000000000000000000000081525060400191505060405180910390fd5b6128e38161409d565b50565b60006128f0611ba2565b15151561298b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5061757361626c653a20746f6b656e207472616e73666572206973207061757381526020017f65642e000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6129963384846140e1565b6001905092915050565b60006129b682600561440790919063ffffffff16565b9050919050565b600060011515600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141515612a1e57600080fd5b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111515612a6c57600080fd5b6000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600042905081811115612c9d576000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612bf881600254613ced90919063ffffffff16565b600281905550612c4f816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ced90919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060019350505050612ca4565b6000925050505b90565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151515612d93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a8152602001807f44656c6567617461626c65203a204f776e65722063616e6e6f742072656e6f7581526020017f6e63652e205472616e73666572206f776e65722066697273742e00000000000081525060400191505060405180910390fd5b612d9c3361452a565b565b6000600d60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000612e1c336136b8565b1515612eb6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260378152602001807f44656c656761746f72526f6c653a2063616c6c657220646f6573206e6f74206881526020017f617665207468652044656c656761746f7220726f6c652e00000000000000000081525060400191505060405180910390fd5b612ebf876133be565b84141515612f5b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f44656c6567617461626c653a206e6f6e6365206973206e6f7420636f7272656381526020017f740000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600087878787604051602001808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018381526020018281526020019450505050506040516020818303038152906040528051906020012060405160200180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c0182815260200191505060405160208183030381529060405280519060200120905060008173650577d054bddbb85b1d6096486109dfef2fd5e76319045a25909187876040518463ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505094505050505060206040518083038186803b15801561310557600080fd5b505af4158015613119573d6000803e3d6000fd5b505050506040513d602081101561312f57600080fd5b810190808051906020019092919050505090506000613180620186a0613172600d60009054906101000a900461ffff1661ffff168b613d7790919063ffffffff16565b61458490919063ffffffff16565b90508173ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff16141561331f576131c28a8a8a84614617565b156133135760006131e560016131d78d6133be565b613ced90919063ffffffff16565b905080600e60008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f490c5128356df402cae6bc56c9b55bff927877eca4f8220a5606443e06f25db9338c8c8c85604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019550505050505060405180910390a16001945050505050613327565b60009350505050613327565b600093505050505b9695505050505050565b60045481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156134f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4f776e61626c653a206f6e6c79206f776e6572207472616e73666572206f776e81526020017f657273686970000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6134fb81612276565b61350481611123565b61352f600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166115e4565b61355a600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166136d5565b6135638161484d565b50565b60008114151515613605576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260398152602001807f536166655472616e736665723a20617070726f76652066726f6d206e6f6e2d7a81526020017f65726f20746f206e6f6e2d7a65726f20616c6c6f77616e63650000000000000081525060400191505060405180910390fd5b61360e82613cda565b1515156136a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f536166655472616e736665723a207370656e64657220697320636f6e7472616381526020017f740000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6136b38282611080565b505050565b60006136ce82600c61440790919063ffffffff16565b9050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561379a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4f776e61626c653a2063616c6c6572206973206e6f74206f776e65722e00000081525060200191505060405180910390fd5b6137a38161452a565b50565b60006137b3338484614a77565b6001905092915050565b6137d181600c614cf890919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fcf370ba38508da841f48b9981508fd166e3294ca16c4978a7a7bc38123ba582b60405160405180910390a250565b60006138248484846140e1565b6138bd84336138b885600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fa390919063ffffffff16565b614a77565b600190509392505050565b80600d60006101000a81548161ffff021916908361ffff16021790555050565b6138fc816005614dd590919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a250565b600760009054906101000a900460ff1615156139c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b6000600760006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515613b11576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f4d696e7461626c653a206d696e7420746f20746865207a65726f20616464726581526020017f73732e000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b613b196116cc565b613b4c613b24611b98565b613b3e84613b30611119565b613ced90919063ffffffff16565b613ced90919063ffffffff16565b11151515613bc2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f4d696e7461626c653a206361702065786365656465642e00000000000000000081525060200191505060405180910390fd5b613bd781600254613ced90919063ffffffff16565b600281905550613c2e816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ced90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600080823b905060008111915050919050565b6000808284019050838110151515613d6d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600080831415613d8a5760009050613e3e565b60008284029050828482811515613d9d57fe5b04141515613e39576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81526020017f770000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b809150505b92915050565b600760009054906101000a900460ff16151515613ec9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6001600760006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b613f5d816005614cf890919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b600082821115151561401d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b600082840390508091505092915050565b7fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca58282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15050565b80600d60026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156141ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f45524332303a207472616e736665722066726f6d20746865207a65726f20616481526020017f647265737300000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515614277576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f45524332303a207472616e7366657220746f20746865207a65726f206164647281526020017f657373000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6142c8816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fa390919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061435b816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ced90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156144d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f526f6c65733a206163636f756e7420697320746865207a65726f20616464726581526020017f737300000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61453e81600c614dd590919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fb58714f6ca7ab0d3965b234a513e4f738507828a16b2d716b712b93f6642461360405160405180910390a250565b600080821115156145fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b6000828481151561460a57fe5b0490508091505092915050565b60008061462d8385613ced90919063ffffffff16565b90508061463987612002565b1015614649576000915050614845565b6146648161465688612002565b613fa390919063ffffffff16565b6000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506146c1846146b387612002565b613ced90919063ffffffff16565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061472583614717614712612d9e565b612002565b613ced90919063ffffffff16565b600080614730612d9e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a36147db612d9e565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a360019150505b949350505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515614912576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4f776e61626c653a2063616c6c6572206973206e6f74206f776e65722e00000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156149b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4f776e61626c653a2061646472657373206973207a65726f2e0000000000000081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515614b42576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f45524332303a20617070726f76652066726f6d20746865207a65726f2061646481526020017f726573730000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515614c0d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f45524332303a20617070726f766520746f20746865207a65726f20616464726581526020017f737300000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b614d028282614407565b151515614d77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b614ddf8282614407565b1515614e79576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c81526020017f650000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505056fea165627a7a72305820502683953ef938f1c26c7f4c09d9b562bce996cd1b65714a1984e4bf6a3f2d6d0029000000000000000000000000000000000000000043dacaf91c1a84ff08000000

Deployed Bytecode

0x6080604052600436106101f9576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146101fe578063095ea7b31461028e57806318160ddd1461030157806321fb4c351461032c57806323b872dd1461037d57806329ff0773146104105780633092afd51461044f578063313ce567146104a0578063355274ea146104d15780633f4ba83a146104fc57806340c10f1914610513578063423f6cef1461058657806342842e0e146105e15780634a4fbeec1461065c57806356891412146106c55780635c975abb146106f05780636a635fb81461071f57806370a08231146107845780638456cb59146107e95780638da5cb5b1461080057806395d89b4114610857578063978bbdb9146108e7578063983b2d561461091a578063986502751461096b5780639ae697bf146109825780639dc29fac146109e7578063a42dce8014610a42578063a9059cbb14610a93578063aa271e1a14610b06578063ae1be1e414610b6f578063b93192f714610b9e578063c415b95c14610bb5578063c689211614610c0c578063cc375b8a14610c71578063cde9f2ea14610d63578063dd62ed3e14610d8e578063ed2a2d6414610e13578063f2fde38b14610e78578063fbc6d1cb14610ec9578063fd8ab48214610f24578063fe5a2bcf14610f8d575b600080fd5b34801561020a57600080fd5b50610213610fde565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610253578082015181840152602081019050610238565b50505050905090810190601f1680156102805780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561029a57600080fd5b506102e7600480360360408110156102b157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611080565b604051808215151515815260200191505060405180910390f35b34801561030d57600080fd5b50610316611119565b6040518082815260200191505060405180910390f35b34801561033857600080fd5b5061037b6004803603602081101561034f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611123565b005b34801561038957600080fd5b506103f6600480360360608110156103a057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506111f4565b604051808215151515815260200191505060405180910390f35b34801561041c57600080fd5b5061044d6004803603602081101561043357600080fd5b81019080803561ffff1690602001909291905050506114ed565b005b34801561045b57600080fd5b5061049e6004803603602081101561047257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115e4565b005b3480156104ac57600080fd5b506104b56116b5565b604051808260ff1660ff16815260200191505060405180910390f35b3480156104dd57600080fd5b506104e66116cc565b6040518082815260200191505060405180910390f35b34801561050857600080fd5b506105116116d6565b005b34801561051f57600080fd5b5061056c6004803603604081101561053657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611821565b604051808215151515815260200191505060405180910390f35b34801561059257600080fd5b506105df600480360360408110156105a957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061195c565b005b3480156105ed57600080fd5b5061065a6004803603606081101561060457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611a0f565b005b34801561066857600080fd5b506106ab6004803603602081101561067f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b42565b604051808215151515815260200191505060405180910390f35b3480156106d157600080fd5b506106da611b98565b6040518082815260200191505060405180910390f35b3480156106fc57600080fd5b50610705611ba2565b604051808215151515815260200191505060405180910390f35b34801561072b57600080fd5b506107826004803603606081101561074257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050611bb9565b005b34801561079057600080fd5b506107d3600480360360208110156107a757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612002565b6040518082815260200191505060405180910390f35b3480156107f557600080fd5b506107fe61204a565b005b34801561080c57600080fd5b50610815612196565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561086357600080fd5b5061086c6121bc565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156108ac578082015181840152602081019050610891565b50505050905090810190601f1680156108d95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156108f357600080fd5b506108fc61225e565b604051808261ffff1661ffff16815260200191505060405180910390f35b34801561092657600080fd5b506109696004803603602081101561093d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612276565b005b34801561097757600080fd5b50610980612347565b005b34801561098e57600080fd5b506109d1600480360360208110156109a557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061243e565b6040518082815260200191505060405180910390f35b3480156109f357600080fd5b50610a4060048036036040811015610a0a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612487565b005b348015610a4e57600080fd5b50610a9160048036036020811015610a6557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506127ef565b005b348015610a9f57600080fd5b50610aec60048036036040811015610ab657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506128e6565b604051808215151515815260200191505060405180910390f35b348015610b1257600080fd5b50610b5560048036036020811015610b2957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506129a0565b604051808215151515815260200191505060405180910390f35b348015610b7b57600080fd5b50610b846129bd565b604051808215151515815260200191505060405180910390f35b348015610baa57600080fd5b50610bb3612ca7565b005b348015610bc157600080fd5b50610bca612d9e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610c1857600080fd5b50610c5b60048036036020811015610c2f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612dc8565b6040518082815260200191505060405180910390f35b348015610c7d57600080fd5b50610d49600480360360a0811015610c9457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190640100000000811115610d0557600080fd5b820183602082011115610d1757600080fd5b80359060200191846001830284011164010000000083111715610d3957600080fd5b9091929391929390505050612e11565b604051808215151515815260200191505060405180910390f35b348015610d6f57600080fd5b50610d78613331565b6040518082815260200191505060405180910390f35b348015610d9a57600080fd5b50610dfd60048036036040811015610db157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613337565b6040518082815260200191505060405180910390f35b348015610e1f57600080fd5b50610e6260048036036020811015610e3657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506133be565b6040518082815260200191505060405180910390f35b348015610e8457600080fd5b50610ec760048036036020811015610e9b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613407565b005b348015610ed557600080fd5b50610f2260048036036040811015610eec57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613566565b005b348015610f3057600080fd5b50610f7360048036036020811015610f4757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506136b8565b604051808215151515815260200191505060405180910390f35b348015610f9957600080fd5b50610fdc60048036036020811015610fb057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506136d5565b005b6060600f8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110765780601f1061104b57610100808354040283529160200191611076565b820191906000526020600020905b81548152906001019060200180831161105957829003601f168201915b5050505050905090565b6000600760009054906101000a900460ff16151515611107576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b61111183836137a6565b905092915050565b6000600254905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156111e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4f776e61626c653a2063616c6c6572206973206e6f74206f776e65722e00000081525060200191505060405180910390fd5b6111f1816137bd565b50565b6000600760009054906101000a900460ff1615151561127b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b600082111515611319576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001807f7472616e7366657246726f6d3a2076616c7565206973206d757374206265206781526020017f726561746572207468616e207a65726f2e00000000000000000000000000000081525060400191505060405180910390fd5b8161132385612002565b101515156113bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001807f7472616e7366657246726f6d3a2062616c616e6365206f662066726f6d20616481526020017f6472657373206973206e6f7420656e6f7567680000000000000000000000000081525060400191505060405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156114d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d8152602001807f7472616e7366657246726f6d3a2073656e64657220617265206e6f7420616c6c81526020017f6f77656420746f2073656e642e0000000000000000000000000000000000000081525060400191505060405180910390fd5b6114e4848484613817565b90509392505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001807f44656c6567617461626c653a206f6e6c79206f776e6572206368616e6765207481526020017f686520666565207261746500000000000000000000000000000000000000000081525060400191505060405180910390fd5b6115e1816138c8565b50565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156116a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4f776e61626c653a2063616c6c6572206973206e6f74206f776e65722e00000081525060200191505060405180910390fd5b6116b2816138e8565b50565b6000601160009054906101000a900460ff16905090565b6000600654905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561179b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4f776e61626c653a2063616c6c6572206973206e6f74206f776e65722e00000081525060200191505060405180910390fd5b6117a3611ba2565b1515611817576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f5061757361626c653a204e6f74207061757365642e000000000000000000000081525060200191505060405180910390fd5b61181f613942565b565b600061182c336129a0565b15156118c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001807f4d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766581526020017f20746865204d696e74657220726f6c652e00000000000000000000000000000081525060400191505060405180910390fd5b6118d08383613a46565b3373ffffffffffffffffffffffffffffffffffffffff167fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f88484604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a26001905092915050565b61196582613cda565b151515611a00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f536166655472616e736665723a20726563656976657220697320636f6e74726181526020017f637400000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b611a0a82826128e6565b505050565b611a1883613cda565b151515611a8d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f536166655472616e736665723a2073656e64657220697320636f6e747261637481525060200191505060405180910390fd5b611a9682613cda565b151515611b31576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f536166655472616e736665723a20726563656976657220697320636f6e74726181526020017f637400000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b611b3c8383836111f4565b50505050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600854905090565b6000600760009054906101000a900460ff16905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ca4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f4c6f636b61626c653a206f6e6c79206f776e65722063616e206c6f636b20746f81526020017f6b656e200000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b611cac6116cc565b611cda83611ccc611cbb611b98565b600254613ced90919063ffffffff16565b613ced90919063ffffffff16565b11151515611d76576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001807f4c6f636b61626c653a206c6f636b656420746f6b656e732063616e206e6f742081526020017f65786365656420746f74616c206361702e00000000000000000000000000000081525060400191505060405180910390fd5b60001515600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141515611e64576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001807f4c6f636b61626c653a2074686973206164647265737320697320616c7265616481526020017f79206c6f636b656400000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6000611e8c611e7d603c84613d7790919063ffffffff16565b42613ced90919063ffffffff16565b905080600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555082600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f8383600854613ced90919063ffffffff16565b6008819055507f49eaf4942f1237055eb4cfa5f31c9dfe50d5b4ade01e021f7de8be2fbbde557b848483604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a150505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561210f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4f776e61626c653a2063616c6c6572206973206e6f74206f776e65722e00000081525060200191505060405180910390fd5b612117611ba2565b15151561218c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f5061757361626c653a20416c7265616479207061757365642e0000000000000081525060200191505060405180910390fd5b612194613e44565b565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060108054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156122545780601f1061222957610100808354040283529160200191612254565b820191906000526020600020905b81548152906001019060200180831161223757829003601f168201915b5050505050905090565b6000600d60009054906101000a900461ffff16905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561233b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4f776e61626c653a2063616c6c6572206973206e6f74206f776e65722e00000081525060200191505060405180910390fd5b61234481613f49565b50565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151515612433576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001807f4d696e7461626c653a204f776e65722063616e6e6f742072656e6f756e63652e81526020017f205472616e73666572206f776e65722066697273742e0000000000000000000081525060400191505060405180910390fd5b61243c336138e8565b565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561254c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4f776e61626c653a2063616c6c6572206973206e6f74206f776e65722e00000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515612617576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f4275726e61626c653a206275726e2066726f6d20746865207a65726f2061646481526020017f726573730000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156126cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4275726e61626c653a206e6f7420656e6f75676820746f6b656e73000000000081525060200191505060405180910390fd5b6126e281600254613fa390919063ffffffff16565b600281905550612739816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fa390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612785828261402e565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156128da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f44656c6567617461626c653a206f6e6c79206f776e6572206368616e6765207481526020017f68652066656520636f6c6c6563746f720000000000000000000000000000000081525060400191505060405180910390fd5b6128e38161409d565b50565b60006128f0611ba2565b15151561298b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5061757361626c653a20746f6b656e207472616e73666572206973207061757381526020017f65642e000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6129963384846140e1565b6001905092915050565b60006129b682600561440790919063ffffffff16565b9050919050565b600060011515600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141515612a1e57600080fd5b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111515612a6c57600080fd5b6000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600042905081811115612c9d576000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612bf881600254613ced90919063ffffffff16565b600281905550612c4f816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ced90919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060019350505050612ca4565b6000925050505b90565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151515612d93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a8152602001807f44656c6567617461626c65203a204f776e65722063616e6e6f742072656e6f7581526020017f6e63652e205472616e73666572206f776e65722066697273742e00000000000081525060400191505060405180910390fd5b612d9c3361452a565b565b6000600d60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000612e1c336136b8565b1515612eb6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260378152602001807f44656c656761746f72526f6c653a2063616c6c657220646f6573206e6f74206881526020017f617665207468652044656c656761746f7220726f6c652e00000000000000000081525060400191505060405180910390fd5b612ebf876133be565b84141515612f5b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f44656c6567617461626c653a206e6f6e6365206973206e6f7420636f7272656381526020017f740000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600087878787604051602001808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018381526020018281526020019450505050506040516020818303038152906040528051906020012060405160200180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c0182815260200191505060405160208183030381529060405280519060200120905060008173650577d054bddbb85b1d6096486109dfef2fd5e76319045a25909187876040518463ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505094505050505060206040518083038186803b15801561310557600080fd5b505af4158015613119573d6000803e3d6000fd5b505050506040513d602081101561312f57600080fd5b810190808051906020019092919050505090506000613180620186a0613172600d60009054906101000a900461ffff1661ffff168b613d7790919063ffffffff16565b61458490919063ffffffff16565b90508173ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff16141561331f576131c28a8a8a84614617565b156133135760006131e560016131d78d6133be565b613ced90919063ffffffff16565b905080600e60008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f490c5128356df402cae6bc56c9b55bff927877eca4f8220a5606443e06f25db9338c8c8c85604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019550505050505060405180910390a16001945050505050613327565b60009350505050613327565b600093505050505b9695505050505050565b60045481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156134f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4f776e61626c653a206f6e6c79206f776e6572207472616e73666572206f776e81526020017f657273686970000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6134fb81612276565b61350481611123565b61352f600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166115e4565b61355a600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166136d5565b6135638161484d565b50565b60008114151515613605576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260398152602001807f536166655472616e736665723a20617070726f76652066726f6d206e6f6e2d7a81526020017f65726f20746f206e6f6e2d7a65726f20616c6c6f77616e63650000000000000081525060400191505060405180910390fd5b61360e82613cda565b1515156136a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f536166655472616e736665723a207370656e64657220697320636f6e7472616381526020017f740000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6136b38282611080565b505050565b60006136ce82600c61440790919063ffffffff16565b9050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561379a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4f776e61626c653a2063616c6c6572206973206e6f74206f776e65722e00000081525060200191505060405180910390fd5b6137a38161452a565b50565b60006137b3338484614a77565b6001905092915050565b6137d181600c614cf890919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fcf370ba38508da841f48b9981508fd166e3294ca16c4978a7a7bc38123ba582b60405160405180910390a250565b60006138248484846140e1565b6138bd84336138b885600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fa390919063ffffffff16565b614a77565b600190509392505050565b80600d60006101000a81548161ffff021916908361ffff16021790555050565b6138fc816005614dd590919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a250565b600760009054906101000a900460ff1615156139c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b6000600760006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515613b11576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f4d696e7461626c653a206d696e7420746f20746865207a65726f20616464726581526020017f73732e000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b613b196116cc565b613b4c613b24611b98565b613b3e84613b30611119565b613ced90919063ffffffff16565b613ced90919063ffffffff16565b11151515613bc2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f4d696e7461626c653a206361702065786365656465642e00000000000000000081525060200191505060405180910390fd5b613bd781600254613ced90919063ffffffff16565b600281905550613c2e816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ced90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600080823b905060008111915050919050565b6000808284019050838110151515613d6d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600080831415613d8a5760009050613e3e565b60008284029050828482811515613d9d57fe5b04141515613e39576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81526020017f770000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b809150505b92915050565b600760009054906101000a900460ff16151515613ec9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6001600760006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b613f5d816005614cf890919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b600082821115151561401d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b600082840390508091505092915050565b7fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca58282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15050565b80600d60026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156141ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f45524332303a207472616e736665722066726f6d20746865207a65726f20616481526020017f647265737300000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515614277576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f45524332303a207472616e7366657220746f20746865207a65726f206164647281526020017f657373000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6142c8816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fa390919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061435b816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ced90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156144d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f526f6c65733a206163636f756e7420697320746865207a65726f20616464726581526020017f737300000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61453e81600c614dd590919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fb58714f6ca7ab0d3965b234a513e4f738507828a16b2d716b712b93f6642461360405160405180910390a250565b600080821115156145fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b6000828481151561460a57fe5b0490508091505092915050565b60008061462d8385613ced90919063ffffffff16565b90508061463987612002565b1015614649576000915050614845565b6146648161465688612002565b613fa390919063ffffffff16565b6000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506146c1846146b387612002565b613ced90919063ffffffff16565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061472583614717614712612d9e565b612002565b613ced90919063ffffffff16565b600080614730612d9e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a36147db612d9e565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a360019150505b949350505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515614912576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4f776e61626c653a2063616c6c6572206973206e6f74206f776e65722e00000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156149b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4f776e61626c653a2061646472657373206973207a65726f2e0000000000000081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515614b42576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f45524332303a20617070726f76652066726f6d20746865207a65726f2061646481526020017f726573730000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515614c0d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f45524332303a20617070726f766520746f20746865207a65726f20616464726581526020017f737300000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b614d028282614407565b151515614d77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b614ddf8282614407565b1515614e79576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c81526020017f650000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505056fea165627a7a72305820502683953ef938f1c26c7f4c09d9b562bce996cd1b65714a1984e4bf6a3f2d6d0029

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000000000000000000043dacaf91c1a84ff08000000

-----Decoded View---------------
Arg [0] : cap (uint256): 21000000000000000000000000000

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000000000000000000043dacaf91c1a84ff08000000


Libraries Used


Deployed Bytecode Sourcemap

14218:7204:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14498:83;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14498:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;14498:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16929:140;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16929:140:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16929:140:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4957:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4957:91:0;;;;;;;;;;;;;;;;;;;;;;;21191:108;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21191:108:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;21191:108:0;;;;;;;;;;;;;;;;;;;;;;16471:450;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16471:450:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16471:450:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20075:163;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20075:163:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20075:163:0;;;;;;;;;;;;;;;;;;;;;;15507:100;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15507:100:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15507:100:0;;;;;;;;;;;;;;;;;;;;;;14684:83;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14684:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;8552:75;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8552:75:0;;;;;;;;;;;;;;;;;;;;;;;16117:124;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16117:124:0;;;;;;8635:174;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8635:174:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8635:174:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17566:166;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17566:166:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17566:166:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17740:268;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17740:268:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17740:268:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10630:101;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10630:101:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10630:101:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10383:90;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10383:90:0;;;;;;;;;;;;;;;;;;;;;;;9076:78;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9076:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;18533:789;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18533:789:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18533:789:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5056:102;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5056:102:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5056:102:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15984:125;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15984:125:0;;;;;;6612:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6612:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;14589:87;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14589:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;14589:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12771:81;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12771:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;15403:96;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15403:96:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15403:96:0;;;;;;;;;;;;;;;;;;;;;;15215:180;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15215:180:0;;;;;;10862:109;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10862:109:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10862:109:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17102:430;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17102:430:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17102:430:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20246:189;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20246:189:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20246:189:0;;;;;;;;;;;;;;;;;;;;;;16249:214;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16249:214:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16249:214:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7716:109;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7716:109:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7716:109:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19330:709;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19330:709:0;;;;;;;;;;;;;;;;;;;;;;;;;;;20443:190;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20443:190:0;;;;;;12860:92;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12860:92:0;;;;;;;;;;;;;;;;;;;;;;;;;;;10739:115;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10739:115:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10739:115:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13200:1011;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13200:1011:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;13200:1011:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;13200:1011:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;13200:1011:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;13200:1011:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6762:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6762:24:0;;;;;;;;;;;;;;;;;;;;;;;5166:134;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5166:134:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5166:134:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12960:107;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12960:107:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12960:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15640:311;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15640:311:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15640:311:0;;;;;;;;;;;;;;;;;;;;;;18016:270;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18016:270:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18016:270:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11421:115;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11421:115:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11421:115:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21307:112;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21307:112:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;21307:112:0;;;;;;;;;;;;;;;;;;;;;;14498:83;14535:13;14568:5;14561:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14498:83;:::o;16929:140::-;17008:4;9207:7;;;;;;;;;;;9206:8;9198:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17032:29;17046:7;17055:5;17032:13;:29::i;:::-;17025:36;;16929:140;;;;:::o;4957:91::-;5001:7;5028:12;;5021:19;;4957:91;:::o;21191:108::-;6943:5;;;;;;;;;;;6929:19;;:10;:19;;;6921:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21259:30;21279:9;21259:19;:30::i;:::-;21191:108;:::o;16471:450::-;16564:4;9207:7;;;;;;;;;;;9206:8;9198:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16597:1;16589:5;:9;16581:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16690:5;16671:15;16681:4;16671:9;:15::i;:::-;:24;;16663:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16803:5;16770:11;:17;16782:4;16770:17;;;;;;;;;;;;;;;:29;16788:10;16770:29;;;;;;;;;;;;;;;;:38;;16762:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16878:35;16897:4;16903:2;16907:5;16878:18;:35::i;:::-;16871:42;;16471:450;;;;;:::o;20075:163::-;20148:5;;;;;;;;;;;20134:19;;:10;:19;;;20126:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20212:18;20224:5;20212:11;:18::i;:::-;20075:163;:::o;15507:100::-;6943:5;;;;;;;;;;;6929:19;;:10;:19;;;6921:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15572:27;15592:6;15572:19;:27::i;:::-;15507:100;:::o;14684:83::-;14725:5;14750:9;;;;;;;;;;;14743:16;;14684:83;:::o;8552:75::-;8588:7;8615:4;;8608:11;;8552:75;:::o;16117:124::-;6943:5;;;;;;;;;;;6929:19;;:10;:19;;;6921:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16172:8;:6;:8::i;:::-;16164:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16217:16;:14;:16::i;:::-;16117:124::o;8635:174::-;8703:4;7614:20;7623:10;7614:8;:20::i;:::-;7606:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8720:16;8726:2;8730:5;8720;:16::i;:::-;8757:10;8752:27;;;8769:2;8773:5;8752:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;8797:4;8790:11;;8635:174;;;;:::o;17566:166::-;17642:15;17654:2;17642:11;:15::i;:::-;17641:16;17633:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17706:18;17715:2;17718:5;17706:8;:18::i;:::-;;17566:166;;:::o;17740:268::-;17834:17;17846:4;17834:11;:17::i;:::-;17833:18;17825:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17907:15;17919:2;17907:11;:15::i;:::-;17906:16;17898:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17971:29;17984:4;17990:2;17994:5;17971:12;:29::i;:::-;;17740:268;;;:::o;10630:101::-;10683:4;10707:10;:16;10718:4;10707:16;;;;;;;;;;;;;;;;;;;;;;;;;10700:23;;10630:101;;;:::o;10383:90::-;10427:7;10453:12;;10446:19;;10383:90;:::o;9076:78::-;9115:4;9139:7;;;;;;;;;;;9132:14;;9076:78;:::o;18533:789::-;18647:5;;;;;;;;;;;18633:19;;:10;:19;;;18625:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18759:5;:3;:5::i;:::-;18712:43;18748:6;18712:31;18729:13;:11;:13::i;:::-;18712:12;;:16;;:31;;;;:::i;:::-;:35;;:43;;;;:::i;:::-;:52;;18704:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18857:5;18837:25;;:10;:16;18848:4;18837:16;;;;;;;;;;;;;;;;;;;;;;;;;:25;;;18829:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18920:19;18942:45;18962:24;18976:9;18962;:13;;:24;;;;:::i;:::-;18942:15;:19;;:45;;;;:::i;:::-;18920:67;;19134:11;19108:17;:23;19126:4;19108:23;;;;;;;;;;;;;;;:37;;;;19175:4;19156:10;:16;19167:4;19156:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;19209:6;19190:10;:16;19201:4;19190:16;;;;;;;;;;;;;;;:25;;;;19241:24;19258:6;19241:12;;:16;;:24;;;;:::i;:::-;19226:12;:39;;;;19283:31;19288:4;19294:6;19302:11;19283:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18533:789;;;;:::o;5056:102::-;5109:7;5136:9;:14;5146:3;5136:14;;;;;;;;;;;;;;;;5129:21;;5056:102;;;:::o;15984:125::-;6943:5;;;;;;;;;;;6929:19;;:10;:19;;;6921:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16038:8;:6;:8::i;:::-;16037:9;16029:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16087:14;:12;:14::i;:::-;15984:125::o;6612:20::-;;;;;;;;;;;;;:::o;14589:87::-;14628:13;14661:7;14654:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14589:87;:::o;12771:81::-;12811:6;12836:8;;;;;;;;;;;12829:15;;12771:81;:::o;15403:96::-;6943:5;;;;;;;;;;;6929:19;;:10;:19;;;6921:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15465:24;15482:6;15465:16;:24::i;:::-;15403:96;:::o;15215:180::-;15281:5;;;;;;;;;;;15267:19;;:10;:19;;;;15259:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15356:31;15376:10;15356:19;:31::i;:::-;15215:180::o;10862:109::-;10920:7;10947:10;:16;10958:4;10947:16;;;;;;;;;;;;;;;;10940:23;;10862:109;;;:::o;17102:430::-;6943:5;;;;;;;;;;;6929:19;;:10;:19;;;6921:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17203:1;17184:21;;:7;:21;;;;17176:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17287:5;17265:9;:18;17275:7;17265:18;;;;;;;;;;;;;;;;:27;;17257:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17350:23;17367:5;17350:12;;:16;;:23;;;;:::i;:::-;17335:12;:38;;;;17405:29;17428:5;17405:9;:18;17415:7;17405:18;;;;;;;;;;;;;;;;:22;;:29;;;;:::i;:::-;17384:9;:18;17394:7;17384:18;;;;;;;;;;;;;;;:50;;;;17445:27;17457:7;17466:5;17445:11;:27::i;:::-;17514:1;17488:36;;17497:7;17488:36;;;17518:5;17488:36;;;;;;;;;;;;;;;;;;17102:430;;:::o;20246:189::-;20330:5;;;;;;;;;;;20316:19;;:10;:19;;;20308:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20399:28;20416:10;20399:16;:28::i;:::-;20246:189;:::o;16249:214::-;16310:4;16336:8;:6;:8::i;:::-;16335:9;16327:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16395:38;16411:10;16423:2;16427:5;16395:15;:38::i;:::-;16451:4;16444:11;;16249:214;;;;:::o;7716:109::-;7772:4;7796:21;7809:7;7796:8;:12;;:21;;;;:::i;:::-;7789:28;;7716:109;;;:::o;19330:709::-;19376:4;19427;19401:30;;:10;:22;19412:10;19401:22;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;19393:39;;;;;;;;19476:1;19451:10;:22;19462:10;19451:22;;;;;;;;;;;;;;;;:26;19443:35;;;;;;;;19491:19;19513:17;:29;19531:10;19513:29;;;;;;;;;;;;;;;;19491:51;;19553:19;19575:15;19553:37;;19620:11;19606;:25;19603:429;;;19648:14;19665:10;:22;19676:10;19665:22;;;;;;;;;;;;;;;;19648:39;;19736:1;19704:17;:29;19722:10;19704:29;;;;;;;;;;;;;;;:33;;;;19777:5;19752:10;:22;19763:10;19752:22;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;19822:1;19797:10;:22;19808:10;19797:22;;;;;;;;;;;;;;;:26;;;;19853:24;19870:6;19853:12;;:16;;:24;;;;:::i;:::-;19838:12;:39;;;;19916:33;19942:6;19916:9;:21;19926:10;19916:21;;;;;;;;;;;;;;;;:25;;:33;;;;:::i;:::-;19892:9;:21;19902:10;19892:21;;;;;;;;;;;;;;;:57;;;;19971:4;19964:11;;;;;;;19603:429;20015:5;20008:12;;;;19330:709;;:::o;20443:190::-;20512:5;;;;;;;;;;;20498:19;;:10;:19;;;;20490:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20591:34;20614:10;20591:22;:34::i;:::-;20443:190::o;12860:92::-;12905:7;12931:13;;;;;;;;;;;12924:20;;12860:92;:::o;10739:115::-;10796:7;10823:17;:23;10841:4;10823:23;;;;;;;;;;;;;;;;10816:30;;10739:115;;;:::o;13200:1011::-;13345:12;11310:23;11322:10;11310:11;:23::i;:::-;11302:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13387:14;13395:5;13387:7;:14::i;:::-;13377:6;:24;13369:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13452:12;13584:5;13591:3;13596:6;13604;13567:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;13567:44:0;;;13557:55;;;;;;13477:136;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;13477:136:0;;;13467:157;;;;;;13452:172;;13635:14;13652:4;:12;;;;13665:10;;13652:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;13652:24:0;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13652:24:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13652:24:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13652:24:0;;;;;;;;;;;;;;;;13635:41;;13705:9;13717:38;13747:6;13717:20;13728:8;;;;;;;;;;;13717:20;;:6;:10;;:20;;;;:::i;:::-;:24;;:38;;;;:::i;:::-;13705:50;;13780:6;13771:15;;:5;:15;;;13768:436;;;13805:44;13824:5;13831:3;13836:6;13844:4;13805:18;:44::i;:::-;13802:346;;;13869:16;13888:30;13915:1;13888:14;13896:5;13888:7;:14::i;:::-;:18;;:30;;;;:::i;:::-;13869:49;;13954:8;13937:7;:14;13945:5;13937:14;;;;;;;;;;;;;;;:25;;;;13986:51;13996:10;14008:5;14015:3;14020:6;14028:8;13986:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14063:4;14056:11;;;;;;;;13802:346;14127:5;14120:12;;;;;;;13768:436;14187:5;14180:12;;;;;11404:1;13200:1011;;;;;;;;:::o;6762:24::-;;;;:::o;5166:134::-;5238:7;5265:11;:18;5277:5;5265:18;;;;;;;;;;;;;;;:27;5284:7;5265:27;;;;;;;;;;;;;;;;5258:34;;5166:134;;;;:::o;12960:107::-;13013:13;13045:7;:14;13053:5;13045:14;;;;;;;;;;;;;;;;13038:21;;12960:107;;;:::o;15640:311::-;15724:5;;;;;;;;;;;15710:19;;:10;:19;;;15702:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15783:19;15793:8;15783:9;:19::i;:::-;15813:22;15826:8;15813:12;:22::i;:::-;15846:19;15859:5;;;;;;;;;;;15846:12;:19::i;:::-;15876:22;15892:5;;;;;;;;;;;15876:15;:22::i;:::-;15909:34;15934:8;15909:24;:34::i;:::-;15640:311;:::o;18016:270::-;18104:1;18095:5;:10;;18087:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18187:20;18199:7;18187:11;:20::i;:::-;18186:21;18178:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18255:23;18263:7;18272:5;18255:7;:23::i;:::-;;18016:270;;:::o;11421:115::-;11480:4;11504:24;11520:7;11504:11;:15;;:24;;;;:::i;:::-;11497:31;;11421:115;;;:::o;21307:112::-;6943:5;;;;;;;;;;;6929:19;;:10;:19;;;6921:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21378:33;21401:9;21378:22;:33::i;:::-;21307:112;:::o;5456:148::-;5521:4;5538:36;5547:10;5559:7;5568:5;5538:8;:36::i;:::-;5592:4;5585:11;;5456:148;;;;:::o;11588:131::-;11648:24;11664:7;11648:11;:15;;:24;;;;:::i;:::-;11703:7;11688:23;;;;;;;;;;;;11588:131;:::o;5612:231::-;5691:4;5708:26;5718:4;5724:2;5728:5;5708:9;:26::i;:::-;5745:68;5754:4;5760:10;5772:40;5806:5;5772:11;:17;5784:4;5772:17;;;;;;;;;;;;;;;:29;5790:10;5772:29;;;;;;;;;;;;;;;;:33;;:40;;;;:::i;:::-;5745:8;:68::i;:::-;5831:4;5824:11;;5612:231;;;;;:::o;12578:78::-;12643:5;12632:8;;:16;;;;;;;;;;;;;;;;;;12578:78;:::o;8004:130::-;8064:24;8080:7;8064:8;:15;;:24;;;;:::i;:::-;8118:7;8104:22;;;;;;;;;;;;8004:130;:::o;9480:110::-;9304:7;;;;;;;;;;;9296:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9541:5;9531:7;;:15;;;;;;;;;;;;;;;;;;9562:20;9571:10;9562:20;;;;;;;;;;;;;;;;;;;;;;9480:110::o;14800:407::-;14894:1;14875:21;;:7;:21;;;;14867:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15002:5;:3;:5::i;:::-;14955:43;14984:13;:11;:13::i;:::-;14955:24;14973:5;14955:13;:11;:13::i;:::-;:17;;:24;;;;:::i;:::-;:28;;:43;;;;:::i;:::-;:52;;14947:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15063:23;15080:5;15063:12;;:16;;:23;;;;:::i;:::-;15048:12;:38;;;;15118:29;15141:5;15118:9;:18;15128:7;15118:18;;;;;;;;;;;;;;;;:22;;:29;;;;:::i;:::-;15097:9;:18;15107:7;15097:18;;;;;;;;;;;;;;;:50;;;;15184:7;15163:36;;15180:1;15163:36;;;15193:5;15163:36;;;;;;;;;;;;;;;;;;14800:407;;:::o;18294:206::-;18352:16;18380:11;18448:5;18436:18;18426:28;;18490:1;18483:6;:8;18475:17;;;18294:206;;;:::o;3525:181::-;3583:7;3603:9;3619:1;3615;:5;3603:17;;3644:1;3639;:6;;3631:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3697:1;3690:8;;;3525:181;;;;:::o;2177:470::-;2235:7;2484:1;2479;:6;2475:47;;;2509:1;2502:8;;;;2475:47;2534:9;2550:1;2546;:5;2534:17;;2579:1;2574;2570;:5;;;;;;;;:10;2562:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2638:1;2631:8;;;2177:470;;;;;:::o;9364:108::-;9207:7;;;;;;;;;;;9206:8;9198:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9426:4;9416:7;;:14;;;;;;;;;;;;;;;;;;9446:18;9453:10;9446:18;;;;;;;;;;;;;;;;;;;;;;9364:108::o;7874:122::-;7931:21;7944:7;7931:8;:12;;:21;;;;:::i;:::-;7980:7;7968:20;;;;;;;;;;;;7874:122;:::o;3253:184::-;3311:7;3344:1;3339;:6;;3331:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3391:9;3407:1;3403;:5;3391:17;;3428:1;3421:8;;;3253:184;;;;:::o;9829:99::-;9900:20;9905:7;9914:5;9900:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;9829:99;;:::o;12664:::-;12745:10;12729:13;;:26;;;;;;;;;;;;;;;;;;12664:99;:::o;5851:385::-;5957:1;5940:19;;:5;:19;;;;5932:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6034:1;6020:16;;:2;:16;;;;6012:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6108:27;6129:5;6108:9;:16;6118:5;6108:16;;;;;;;;;;;;;;;;:20;;:27;;;;:::i;:::-;6089:9;:16;6099:5;6089:16;;;;;;;;;;;;;;;:46;;;;6162:24;6180:5;6162:9;:13;6172:2;6162:13;;;;;;;;;;;;;;;;:17;;:24;;;;:::i;:::-;6146:9;:13;6156:2;6146:13;;;;;;;;;;;;;;;:40;;;;6218:2;6202:26;;6211:5;6202:26;;;6222:5;6202:26;;;;;;;;;;;;;;;;;;5851:385;;;:::o;1853:203::-;1925:4;1969:1;1950:21;;:7;:21;;;;1942:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2028:4;:11;;:20;2040:7;2028:20;;;;;;;;;;;;;;;;;;;;;;;;;2021:27;;1853:203;;;;:::o;11727:139::-;11790:27;11809:7;11790:11;:18;;:27;;;;:::i;:::-;11850:7;11833:25;;;;;;;;;;;;11727:139;:::o;2782:333::-;2840:7;2939:1;2935;:5;2927:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2982:9;2998:1;2994;:5;;;;;;;;2982:17;;3106:1;3099:8;;;2782:333;;;;:::o;20641:542::-;20744:12;20768;20783:16;20794:4;20783:6;:10;;:16;;;;:::i;:::-;20768:31;;20835:7;20816:16;20826:5;20816:9;:16::i;:::-;:26;20812:57;;;20864:5;20857:12;;;;;20812:57;20899:29;20920:7;20899:16;20909:5;20899:9;:16::i;:::-;:20;;:29;;;;:::i;:::-;20880:9;:16;20890:5;20880:16;;;;;;;;;;;;;;;:48;;;;20956:26;20975:6;20956:14;20966:3;20956:9;:14::i;:::-;:18;;:26;;;;:::i;:::-;20939:9;:14;20949:3;20939:14;;;;;;;;;;;;;;;:43;;;;21021:35;21051:4;21021:25;21031:14;:12;:14::i;:::-;21021:9;:25::i;:::-;:29;;:35;;;;:::i;:::-;20993:9;:25;21003:14;:12;:14::i;:::-;20993:25;;;;;;;;;;;;;;;:63;;;;21088:3;21072:28;;21081:5;21072:28;;;21093:6;21072:28;;;;;;;;;;;;;;;;;;21132:14;:12;:14::i;:::-;21116:37;;21125:5;21116:37;;;21148:4;21116:37;;;;;;;;;;;;;;;;;;21171:4;21164:11;;;20641:542;;;;;;;:::o;7069:224::-;6943:5;;;;;;;;;;;6929:19;;:10;:19;;;6921:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7173:1;7153:22;;:8;:22;;;;7145:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7249:8;7221:37;;7242:5;;;;;;;;;;;7221:37;;;;;;;;;;;;7277:8;7269:5;;:16;;;;;;;;;;;;;;;;;;7069:224;:::o;6244:335::-;6354:1;6337:19;;:5;:19;;;;6329:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6435:1;6416:21;;:7;:21;;;;6408:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6519:5;6489:11;:18;6501:5;6489:18;;;;;;;;;;;;;;;:27;6508:7;6489:27;;;;;;;;;;;;;;;:35;;;;6556:7;6540:31;;6549:5;6540:31;;;6565:5;6540:31;;;;;;;;;;;;;;;;;;6244:335;;;:::o;1317:178::-;1395:18;1399:4;1405:7;1395:3;:18::i;:::-;1394:19;1386:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1483:4;1460;:11;;:20;1472:7;1460:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;1317:178;;:::o;1575:183::-;1655:18;1659:4;1665:7;1655:3;:18::i;:::-;1647:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1745:5;1722:4;:11;;:20;1734:7;1722:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;1575:183;;:::o

Swarm Source

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