ETH Price: $2,676.63 (+1.57%)
Gas: 1 Gwei

Token

QARK Token of QAN Platform (QARK)
 

Overview

Max Total Supply

333,333,000 QARK

Holders

5,935 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
5.5 QARK

Value
$0.00
0xcad44d41657b774826fabd7b36f983833f5fc0c8
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

QARK Token of QAN Platform token contract has migrated to 0xAAA7A10a8ee237ea61E8AC46C50A8Db8bCC1baaa

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
QARK

Compiler Version
v0.5.12+commit.7709ece9

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2019-12-10
*/

pragma solidity ^0.5.0;

contract ERC20Interface {
    function totalSupply() public view returns (uint);
    function balanceOf(address tokenOwner) public view returns (uint balance);
    function allowance(address tokenOwner, address spender) public view returns (uint remaining);
    function transfer(address to, uint tokens) public returns (bool success);
    function approve(address spender, uint tokens) public returns (bool success);
    function transferFrom(address from, address to, uint tokens) public returns (bool success);

    event Transfer(address indexed from, address indexed to, uint tokens);
    event Approval(address indexed tokenOwner, address indexed spender, uint tokens);
    event LockBalance(address indexed from, address indexed to, uint tokens);
    event FreezeBalance(address indexed from, uint tokens, uint until);
    event LogUint(string key, uint value);
    event LogString(string key, string value);
    event LogAddress(string key, address value);
}

contract Owned {
    address public owner;
    address public newOwner;

    event OwnershipTransferred(address indexed _from, address indexed _to);

    constructor() public {
        owner = msg.sender;
    }

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

    function transferOwnership(address _newOwner) public onlyOwner {
        newOwner = _newOwner;
    }
    function acceptOwnership() public {
        require(msg.sender == newOwner);
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
        newOwner = address(0);
    }
}

library SafeMath {
    function add(uint a, uint b) internal pure returns (uint c) {
        c = a + b;
        require(c >= a);
    }
    function sub(uint a, uint b) internal pure returns (uint c) {
        require(b <= a);
        c = a - b;
    }
    function mul(uint a, uint b) internal pure returns (uint c) {
        c = a * b;
        require(a == 0 || c / a == b);
    }
    function div(uint a, uint b) internal pure returns (uint c) {
        require(b > 0);
        c = a / b;
    }
}

contract QARK is ERC20Interface, Owned {

    /*
     * Use SafeMath Library
     * for uint operations.
     */
    using SafeMath for uint;

    /*
     * Token symbol listed
     * on exchanges.
     */
    string public symbol;

    /*
     * Token name displayed
     * on block explorers
     */
    string public  name;

    /*
     * Atomic unit of the token.
     */
    uint8 public decimals;

    /*
     * Total supply available
     * of the token.
     */
    uint _totalSupply;

    /*
     * Stores token holder
     * balances.
     */
    mapping(address => uint) balances;

    /*
     * Stores allowances
     * of tokens holders to
     * each other.
     */
    mapping(address => mapping(address => uint)) allowed;

    /*
     * Method to claim unsold
     * private sale tokens into
     * the reserve.
     */
    function claimReserve() public {

        //ONLY RESERVE ADDRESS CAN CLAIM
        require(msg.sender == roles[4], 'Only reserve address can claim!');

        //RESERVE CAN ONLY BE CLAIMED AFTER END OF PUBLIC SALE
        if(block.timestamp < pubSaleEnd + 7 * 24 * 60 * 60){
            revert('Reserve can not be claimed before end of public sale!');
        }

        //CLAIM FUNDS
        balances[roles[4]] = balances[roles[4]].add(balances[roles[0]]);

        //EMIT TRANSFER EVENTS
        emit Transfer(roles[0], roles[4], balances[roles[0]]);

        //DEDUCT BALANCES OF EXCHANGE AND PRIV SELLER
        balances[roles[0]] = 0;
    }

    /*
     * Mapping for roles
     * to addresses:
     * 0 => Private seller
     * 1 => Exchange
     * 2 => Management
     * 3 => Centrum Circle
     * 4 => Reserve
     * 5 => Rate updater
     */
    mapping(uint => address) roles;

    /*
     * Get the current address
     * for a given role.
     */
    function getRoleAddress(uint _roleId) public view returns (address) {
        return roles[_roleId];
    }

    /*
     * Sets an address
     * for a given role.
     */
    function setRoleAddress(uint _roleId, address _newAddress) public onlyOwner {

        //ENSURE THAT ONLY ADDRESSES WITHOUT BALANCE CAN BE ASSIGNED
        require(balances[_newAddress] == 0, 'Only zero balance addresses can be assigned!');

        //GET OLD ADDRESS OF THE ROLE
        address _oldAddress = roles[_roleId];

        //IF TRYING TO UPDATE EXCHANGE ADDRESS, REVERT
        if(_roleId == 1 && _oldAddress != address(0)){
            revert('Exchange address MUST not be updated!');
        }

        //IF THIS IS THE INITIALIZATION OF THE ADDRESS
        if(_oldAddress == address(0)){

            //INITIALIZATION BALANCE
            uint initBalance = 0;

            //PRIVATE SELLER
            if(_roleId == 0){
                initBalance = 133333200;
            }

            //EXCHANGE
            if(_roleId == 1){
                initBalance = 88888800;
            }

            //MANAGEMENT
            if(_roleId == 2){
                initBalance = 44444400;
            }

            //CENTRUM
            if(_roleId == 3){
                initBalance = 44444400;
            }

            //RESERVE
            if(_roleId == 4){
                initBalance = 22222200;
            }

            //5 = RATE UPDATER

            //IF THERE IS BALANCE TO BE INITIALIZED, DO IT
            if(initBalance > 0){
                initBalance = initBalance * 10**uint(decimals);
                balances[_newAddress] = initBalance;
                emit Transfer(address(0), _newAddress, initBalance);

                //FOR MANAGEMENT AND RESERVE, APPLY FREEZE TO THE INIT BALANCE
                if(_roleId == 2 || _roleId == 4){
                    frozenBalances[_newAddress] = initBalance;
                    frozenTiming[_newAddress] = block.timestamp + 180 * 24 * 60 * 60;
                    emit FreezeBalance(_newAddress, initBalance, frozenTiming[_newAddress]);
                }
            }
        }

        //IF CURRENT ACCOUNT HAS BALANCE
        if(balances[_oldAddress] > 0){

            //MOVE FUNDS OF OLD ACCOUNT TO NEW ACCOUNT
            balances[_newAddress] = balances[_oldAddress];

            //EMIT TRANSFER EVENT
            emit Transfer(_oldAddress, _newAddress, balances[_oldAddress]);

            //REMOVE OLD BALANCE
            balances[_oldAddress] = 0;

            //TRANSFER FROZEN BALANCES AS WELL
            if(frozenBalances[_oldAddress] > 0){

                frozenBalances[_newAddress] = frozenBalances[_oldAddress];
                frozenTiming[_newAddress] = frozenTiming[_oldAddress];

                emit FreezeBalance(_newAddress, frozenBalances[_newAddress], frozenTiming[_newAddress]);

                frozenBalances[_oldAddress] = 0;
                frozenTiming[_oldAddress] = 0;
            }
        }

        //ASSIGN NEW ADDRESS
        roles[_roleId] = _newAddress;
    }

    /*
     * The current conversion rate of
     * 1 QARK => USD cents.
     */
    uint public conversionRate;

    function setRate(uint _newConversionRate) public {
        require(msg.sender == roles[5], 'Only rate updater is allowed to perform this!');
        conversionRate = _newConversionRate;
    }

    /*
     * Stores the locked balances
     * of those who bought during
     * private sale and are restricted
     * from selling after public sale.
     */
    mapping(address => uint256) lockedBalances;

    /*
     * UNIX timestamp of the start
     * time of the public sale.
     */
    uint public pubSaleStart;

    /*
     * UNIX timestamp of the end
     * time of the public sale.
     */
    uint public pubSaleEnd;

    /*
     * UNIX timestamp of the end
     * time of the private buyers'
     * restrictions.
     */
    uint public restrictionEnd;

    /*
     * Sets the public sale and
     * restrictions related timings.
     */
    function setTiming(uint _pubSaleStart, uint _pubSaleEnd, uint _restrictionEnd) public onlyOwner {
        require(pubSaleStart == 0 && pubSaleEnd == 0 && restrictionEnd == 0, 'Timing only can be set once');
        pubSaleStart = _pubSaleStart;
        pubSaleEnd = _pubSaleEnd;
        restrictionEnd = _restrictionEnd;
    }

    /*
     * Constructs the contract
     * with 333,333,300 QARK tokens
     * with 18 decimals.
     */
    constructor() public {
        symbol = "QARK";
        name = "QARK Token of QAN Platform";
        decimals = 18;
        _totalSupply = 333333000 * 10**uint(decimals);
    }

    /*
     * Returns the total supply
     * minus the amounts of burned tokens.
     */
    function totalSupply() public view returns (uint) {
        return _totalSupply.sub(balances[address(0)]);
    }

    /*
     * Returns the balance
     * of a given token holder.
     */
    function balanceOf(address tokenOwner) public view returns (uint balance) {
        return balances[tokenOwner];
    }

    /*
     * Returns the locked balance
     * of a given token holder.
     */
    function lockedBalanceOf(address tokenOwner) public view returns (uint lockedBalance) {
        return lockedBalances[tokenOwner];
    }

    /*
     * Stores the frozen balances
     * of those who bought have
     * frozen their own balances
     * until a certain UNIX timestamp.
     */
    mapping(address => uint) frozenBalances;

    /*
     * Stores the UNIX timestamps
     * until when a certain token
     * holders' tokens have frozen
     * their own tokens.
     */
    mapping(address => uint) frozenTiming;

    /*
     * Method to freeze own
     * tokens until a certain time.
     */
    function freezeOwnTokens(uint amount, uint until) public {

        //FIRST AUTO UNFREEZE ANY PREVIOUSLY LOCKED TOKENS
        _autoUnfreeze();

        //AVAIL BALANCE MUST BE GREATER THAN TOKENS TO BE LOCKED
        require(balances[msg.sender] - lockedBalances[msg.sender] > amount);

        //ALSO CURRENTLY LOCKED AMOUNT MUST BE LESS THAN TOKENS TO BE LOCKED
        require(frozenBalances[msg.sender] < amount);

        //LOCK PERIOD MUST BE FUTURE, AND GREATER THAN CURRENT LOCK
        require(until > block.timestamp && until > frozenTiming[msg.sender]);

        //MAKE FREEZE
        frozenBalances[msg.sender] = amount;
        frozenTiming[msg.sender] = until;
    }

    /*
     * Returns the frozen balance
     * of a given token holder.
     */
    function frozenBalanceOf(address tokenOwner) public view returns (uint frozenBalance) {
        return frozenBalances[tokenOwner];
    }

    /*
     * Returns the UNIX timestamp
     * until when some tokens
     * of a given token holder
     * are frozen.
     */
    function frozenTimingOf(address tokenOwner) public view returns (uint until) {
        return frozenTiming[tokenOwner];
    }

    /*
     * Automatically unfreezes
     * all tokens of msg.sender
     * if freeze time has passed.
     */
    function _autoUnfreeze() private {

        if(frozenBalances[msg.sender] > 0 && block.timestamp > frozenTiming[msg.sender]){
            frozenBalances[msg.sender] = 0;
        }
    }

    /*
     * Private method to handle private
     * sale transfers.
     */
    function _privTransfer(address to, uint tokens) private returns (bool success) {

        //ONLY PRIVATE SELLER CAN EXECUTE PRIVATE SALE TRANSACTION
        require(msg.sender == roles[0], 'Only private seller can make private sale TX!');

        //NO PRIVATE SALE TRANSACTION CAN BE MADE AFTER PUBLIC SALE CLOSED
        require(block.timestamp < pubSaleEnd, 'No transfer from private seller after public sale!');

        //LOCK THE TOKEN AMOUNT OF THE BUYER
        lockedBalances[to] = lockedBalances[to].add(tokens);
        emit LockBalance(msg.sender, to, tokens);
        emit LogAddress('PrivateSaleFrom', msg.sender);
        //MAKE A REGULAR TRANSFER
        return _regularTransfer(to, tokens);
    }

    /*
     * Private method to handle public
     * sale (IEO) transfers.
     */
    function _pubTransfer(address to, uint tokens) private returns (bool success) {

        //MAKE SURE PRIVATE AND RESTRICTED TRANSACTIONS ARE NOT HANDLED HERE
        require(msg.sender != roles[0], 'Public transfer not allowed from private seller');

        //MAKE SURE THAT ONLY REGULAR TRANSACTIONS CAN BE EXECUTED NOT INVOLVING LOCKED TOKENS
        require(balances[msg.sender].sub(lockedBalances[msg.sender]) >= tokens, 'Not enough unlocked tokens!');
        emit LogAddress('PublicSaleFrom', msg.sender);
        //MAKE A REGULAR TRANSFER
        return _regularTransfer(to, tokens);
    }

    /*
     * Private method to handle secondary
     * market transfers (after IEO).
     */
    function _postPubTransfer(address to, uint tokens) private returns (bool success) {

        //IF PUBLIC SALE ENDED AND EXCHANGE OR PRIVATE SELLER TRIES TO MAKE A TRANSFER
        if(block.timestamp > pubSaleEnd + 7 * 24 * 60 * 60 && (msg.sender == roles[1] || msg.sender == roles[0])){
            revert('No transfer from exchange / private seller after public sale!');
        }

        //IF PRIVATE SALE RESTRICTIONS DID NOT END YET AND SENDER IS A PRIVATE SALE BUYER
        if(block.timestamp < restrictionEnd && lockedBalances[msg.sender] > 0){
            emit LogAddress('RestrictedSaleFrom', msg.sender);
            return _restrictedTransfer(to, tokens);
        }
        emit LogAddress('PostPublicSaleFrom', msg.sender);
        //ELSE MAKE A REGULAR TRANSFER
        return _regularTransfer(to, tokens);
    }

    /*
     * Makes sure that private sale buyers
     * can withdraw unsold tokens on exchanges
     * even if restrictions are active.
     */
    mapping(address => address) withdrawMap;

    /*
     * Private method to handle transactions
     * of private sale buyers to whom certain
     * restrictions apply to protect market prices.
     */
    function _restrictedTransfer(address to, uint tokens) private returns (bool success) {

        //DECLARE CURRENT BALANCES
        uint totalBalance = balances[msg.sender];
        uint lockedBalance = lockedBalances[msg.sender];
        uint unlockedBalance = totalBalance.sub(lockedBalance);

        //IF PRICE IS LOW, THIS ADDRESS IS RESTRICTED, AND IS NOT TRYING TO WITHDRAW TO HIS PREVIOUS ACCOUNT
        if(conversionRate < 39 && unlockedBalance < tokens && to != withdrawMap[msg.sender]){
            revert('Private token trading halted because of low market prices!');
        }

        //IF THERE IS NOT ENOUGH UNLOCKED BALANCE TO SEND TOKENS
        if(unlockedBalance < tokens){

            //CALCULATE TOKENS TO BE LOCKED ON RECIPIENT'S ACCOUNT
            uint lockables = tokens.sub(unlockedBalance);

            //LOCK THEM
            lockedBalances[to] = lockedBalances[to].add(lockables);
            emit LockBalance(msg.sender, to, lockables);

            //RELEASE LOCK ON SENDER
            lockedBalances[msg.sender] = lockedBalances[msg.sender].sub(lockables);

            //UPDATE WITHDRAW MAP TO ENABLE SENDER TO SEND FUNDS BACK TO HIMSELF LATER
            withdrawMap[to] = msg.sender;
        }

        //PERFORM A REGULAR TRANSFER
        return _regularTransfer(to, tokens);
    }

    /*
     * Performs a regular
     * ERC20 transfer.
     */
    function _regularTransfer(address to, uint tokens) private returns (bool success) {

        //DEDUCT FROM SENDER, CREDIT BENEFICIARY
        balances[msg.sender] = balances[msg.sender].sub(tokens);
        balances[to] = balances[to].add(tokens);
        emit Transfer(msg.sender, to, tokens);
        return true;
    }

    /*
     * Transfer logic to handle
     * all possible scenarios:
     * - Private sale
     * - Public sale (IEO)
     * - Secondary market trading
     */
    function transfer(address to, uint tokens) public returns (bool success) {

        //AUTOMATICALLY UNFREEZE ANY UNFREEZABLE TOKENS
        _autoUnfreeze();

        //IF THE SENDER STILL HAS FROZEN BALANCE, CHECK FOR LIQUIDITY
        if(frozenBalances[msg.sender] > 0 && balances[msg.sender] - frozenBalances[msg.sender] < tokens){
            revert('Frozen balance can not be spent yet, insufficient tokens!');
        }

        //REQUIRE THAT SENDER HAS THE BALANCE TO MAKE THE TRANSFER
        require(balances[msg.sender] >= tokens, 'Not enough liquid tokens!');

        //IF RESERVE IS TRYING TO MAKE A TRANSFER AND 1 YEAR FREEZE NOT PASSED YET, REVERT
        if(msg.sender == roles[4] && block.timestamp < pubSaleEnd + 60 * 60 * 24 * 30 * 12){
            revert('Reserve can not be accessed before the 1 year freeze period');
        }

        //HANDLE PRIVATE SALE TRANSACTIONS
        if(msg.sender == roles[0]){
            return _privTransfer(to, tokens);
        }

        //HANDLE PUBLIC SALE TRANSACTIONS
        if(block.timestamp > pubSaleStart && block.timestamp < pubSaleEnd){
            return _pubTransfer(to, tokens);
        }

        //HANDLE TRANSACTIONS AFTER PUBLIC SALE ENDED
        if(block.timestamp > pubSaleEnd){
            return _postPubTransfer(to, tokens);
        }

        //NO CASES MATCHED
        return false;
    }

    /*
     * Grant spend ability
     * of tokens to a third party.
     */
    function approve(address spender, uint tokens) public returns (bool success) {

        //DURING RESTRICTION PERIOD, NO APPROVAL TRANSFERS FOR PRIV BUYERS
        if(block.timestamp < restrictionEnd){
            require(lockedBalances[msg.sender] == 0, 'This address MUST not start approval related transactions!');
            require(lockedBalances[spender] == 0, 'This address MUST not start approval related transactions!');
        }

        allowed[msg.sender][spender] = tokens;
        emit Approval(msg.sender, spender, tokens);
        return true;
    }

    /*
     * Transfer tokens from another
     * address given they granted approval
     * to msg.sender of the current call.
     */
    function transferFrom(address from, address to, uint tokens) public returns (bool success) {

        //DURING RESTRICTION PERIOD, NO APPROVAL TRANSFERS FOR PRIV BUYERS
        if(block.timestamp < restrictionEnd){
            require(lockedBalances[msg.sender] == 0, 'This address MUST not start approval related transactions!');
            require(lockedBalances[from] == 0, 'This address MUST not start approval related transactions!');
            require(lockedBalances[to] == 0, 'This address MUST not start approval related transactions!');
        }

        balances[from] = balances[from].sub(tokens);
        allowed[from][msg.sender] = allowed[from][msg.sender].sub(tokens);
        balances[to] = balances[to].add(tokens);
        emit Transfer(from, to, tokens);
        return true;
    }

    /*
     * Returns the amount of tokens a
     * spender is allowed to spend
     * from tokenOwner's balance.
     */
    function allowance(address tokenOwner, address spender) public view returns (uint remaining) {
        return allowed[tokenOwner][spender];
    }

    function () external payable {

        //DON'T ACCEPT ETH
        revert();
    }

    /*
     * Enables the contract owner
     * to retrieve other ERC20 tokens
     * sent to the contract.
     */
    function transferAnyERC20Token(address tokenAddress, uint tokens) public onlyOwner returns (bool success) {
        return ERC20Interface(tokenAddress).transfer(owner, tokens);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"tokenOwner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"until","type":"uint256"}],"name":"FreezeBalance","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"LockBalance","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"key","type":"string"},{"indexed":false,"internalType":"address","name":"value","type":"address"}],"name":"LogAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"key","type":"string"},{"indexed":false,"internalType":"string","name":"value","type":"string"}],"name":"LogString","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"key","type":"string"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"LogUint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"Transfer","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"tokenOwner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"tokenOwner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"claimReserve","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"conversionRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"until","type":"uint256"}],"name":"freezeOwnTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"tokenOwner","type":"address"}],"name":"frozenBalanceOf","outputs":[{"internalType":"uint256","name":"frozenBalance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"tokenOwner","type":"address"}],"name":"frozenTimingOf","outputs":[{"internalType":"uint256","name":"until","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_roleId","type":"uint256"}],"name":"getRoleAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"tokenOwner","type":"address"}],"name":"lockedBalanceOf","outputs":[{"internalType":"uint256","name":"lockedBalance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"newOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pubSaleEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pubSaleStart","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"restrictionEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_newConversionRate","type":"uint256"}],"name":"setRate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_roleId","type":"uint256"},{"internalType":"address","name":"_newAddress","type":"address"}],"name":"setRoleAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_pubSaleStart","type":"uint256"},{"internalType":"uint256","name":"_pubSaleEnd","type":"uint256"},{"internalType":"uint256","name":"_restrictionEnd","type":"uint256"}],"name":"setTiming","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"transferAnyERC20Token","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060400160405280600481526020017f5141524b00000000000000000000000000000000000000000000000000000000815250600290805190602001906200009f92919062000132565b506040518060400160405280601a81526020017f5141524b20546f6b656e206f662051414e20506c6174666f726d00000000000081525060039080519060200190620000ed92919062000132565b506012600460006101000a81548160ff021916908360ff160217905550600460009054906101000a900460ff1660ff16600a0a6313de420802600581905550620001e1565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200017557805160ff1916838001178555620001a6565b82800160010185558215620001a6579182015b82811115620001a557825182559160200191906001019062000188565b5b509050620001b59190620001b9565b5090565b620001de91905b80821115620001da576000816000905550600101620001c0565b5090565b90565b613e5b80620001f16000396000f3fe60806040526004361061019c5760003560e01c806379ba5097116100ec578063cfd9480b1161008a578063dc39d06d11610064578063dc39d06d146108fc578063dd62ed3e1461096f578063e5d382ed146109f4578063f2fde38b14610a4f5761019c565b8063cfd9480b1461084f578063d4ee1d901461087a578063dacec154146108d15761019c565b806395d89b41116100c657806395d89b41146106a2578063a238b62d14610732578063a9059cbb14610777578063be91de53146107ea5761019c565b806379ba5097146106095780637ffdf53e146106205780638da5cb5b1461064b5761019c565b806334fcf43711610159578063593557361161013357806359355736146104995780635ea8d05d146104fe57806370a0823114610529578063789a670b1461058e5761019c565b806334fcf437146103f85780633fe5f054146104335780634445f0991461044a5761019c565b806306fdde03146101a1578063095ea7b31461023157806318160ddd146102a45780631a864d1d146102cf57806323b872dd14610334578063313ce567146103c7575b600080fd5b3480156101ad57600080fd5b506101b6610aa0565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101f65780820151818401526020810190506101db565b50505050905090810190601f1680156102235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561023d57600080fd5b5061028a6004803603604081101561025457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b3e565b604051808215151515815260200191505060405180910390f35b3480156102b057600080fd5b506102b9610d6b565b6040518082815260200191505060405180910390f35b3480156102db57600080fd5b5061031e600480360360208110156102f257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610dc6565b6040518082815260200191505060405180910390f35b34801561034057600080fd5b506103ad6004803603606081101561035757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e0f565b604051808215151515815260200191505060405180910390f35b3480156103d357600080fd5b506103dc61128d565b604051808260ff1660ff16815260200191505060405180910390f35b34801561040457600080fd5b506104316004803603602081101561041b57600080fd5b81019080803590602001909291905050506112a0565b005b34801561043f57600080fd5b50610448611362565b005b34801561045657600080fd5b506104976004803603606081101561046d57600080fd5b810190808035906020019092919080359060200190929190803590602001909291905050506117be565b005b3480156104a557600080fd5b506104e8600480360360208110156104bc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118c5565b6040518082815260200191505060405180910390f35b34801561050a57600080fd5b5061051361190e565b6040518082815260200191505060405180910390f35b34801561053557600080fd5b506105786004803603602081101561054c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611914565b6040518082815260200191505060405180910390f35b34801561059a57600080fd5b506105c7600480360360208110156105b157600080fd5b810190808035906020019092919050505061195d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561061557600080fd5b5061061e61199a565b005b34801561062c57600080fd5b50610635611b37565b6040518082815260200191505060405180910390f35b34801561065757600080fd5b50610660611b3d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156106ae57600080fd5b506106b7611b62565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156106f75780820151818401526020810190506106dc565b50505050905090810190601f1680156107245780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561073e57600080fd5b506107756004803603604081101561075557600080fd5b810190808035906020019092919080359060200190929190505050611c00565b005b34801561078357600080fd5b506107d06004803603604081101561079a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611dc1565b604051808215151515815260200191505060405180910390f35b3480156107f657600080fd5b506108396004803603602081101561080d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612136565b6040518082815260200191505060405180910390f35b34801561085b57600080fd5b5061086461217f565b6040518082815260200191505060405180910390f35b34801561088657600080fd5b5061088f612185565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156108dd57600080fd5b506108e66121ab565b6040518082815260200191505060405180910390f35b34801561090857600080fd5b506109556004803603604081101561091f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506121b1565b604051808215151515815260200191505060405180910390f35b34801561097b57600080fd5b506109de6004803603604081101561099257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122f7565b6040518082815260200191505060405180910390f35b348015610a0057600080fd5b50610a4d60048036036040811015610a1757600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061237e565b005b348015610a5b57600080fd5b50610a9e60048036036020811015610a7257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612c89565b005b60038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b365780601f10610b0b57610100808354040283529160200191610b36565b820191906000526020600020905b815481529060010190602001808311610b1957829003601f168201915b505050505081565b6000600d54421015610c7b576000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610be2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180613cb0603a913960400191505060405180910390fd5b6000600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610c7a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180613cb0603a913960400191505060405180910390fd5b5b81600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000610dc1600660008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600554612d2690919063ffffffff16565b905090565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600d54421015610fe4576000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610eb3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180613cb0603a913960400191505060405180910390fd5b6000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610f4b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180613cb0603a913960400191505060405180910390fd5b6000600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610fe3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180613cb0603a913960400191505060405180910390fd5b5b61103682600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d2690919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061110882600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d2690919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506111da82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d4090919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600460009054906101000a900460ff1681565b600860006005815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611358576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180613d1c602d913960400191505060405180910390fd5b8060098190555050565b600860006004815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611437576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4f6e6c79207265736572766520616464726573732063616e20636c61696d210081525060200191505060405180910390fd5b62093a80600c5401421015611497576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526035815260200180613c7b6035913960400191505060405180910390fd5b61158f600660006008600080815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460066000600860006004815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d4090919063ffffffff16565b60066000600860006004815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600860006004815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166008600080815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600660006008600080815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36000600660006008600080815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461181757600080fd5b6000600b5414801561182b57506000600c54145b801561183957506000600d54145b6118ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f54696d696e67206f6e6c792063616e20626520736574206f6e6365000000000081525060200191505060405180910390fd5b82600b8190555081600c8190555080600d81905550505050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600c5481565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006008600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146119f457600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60095481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611bf85780601f10611bcd57610100808354040283529160200191611bf8565b820191906000526020600020905b815481529060010190602001808311611bdb57829003601f168201915b505050505081565b611c08612d5a565b81600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540311611c9457600080fd5b81600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611cdf57600080fd5b4281118015611d2c5750600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481115b611d3557600080fd5b81600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b6000611dcb612d5a565b6000600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118015611e99575081600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403105b15611eef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526039815260200180613bc16039913960400191505060405180910390fd5b81600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611fa4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4e6f7420656e6f756768206c697175696420746f6b656e73210000000000000081525060200191505060405180910390fd5b600860006004815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614801561201a57506301da9c00600c540142105b15612070576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b815260200180613d83603b913960400191505060405180910390fd5b6008600080815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156120e8576120e18383612e34565b9050612130565b600b54421180156120fa5750600c5442105b156121105761210983836130ef565b9050612130565b600c5442111561212b57612124838361335d565b9050612130565b600090505b92915050565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600b5481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461220c57600080fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156122b457600080fd5b505af11580156122c8573d6000803e3d6000fd5b505050506040513d60208110156122de57600080fd5b8101908080519060200190929190505050905092915050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146123d757600080fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461246f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180613dfb602c913960400191505060405180910390fd5b60006008600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506001831480156124e45750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1561253a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180613c276025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156127d05760008090506000841415612585576307f280d090505b60018414156125965763054c55e090505b60028414156125a7576302a62af090505b60038414156125b8576302a62af090505b60048414156125c957630153157890505b60008111156127ce57600460009054906101000a900460ff1660ff16600a0a8102905080600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a360028414806126a55750600484145b156127cd5780600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062ed4e004201600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff167fc11cbbff64e22615735928e4b268605ecf66b6f7df3beb072453343af1d3eae982600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051808381526020018281526020019250505060405180910390a25b5b505b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115612c3257600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115612c3157600e60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600f60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167fc11cbbff64e22615735928e4b268605ecf66b6f7df3beb072453343af1d3eae9600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051808381526020018281526020019250505060405180910390a26000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b816008600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612ce257600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600082821115612d3557600080fd5b818303905092915050565b6000818301905082811015612d5457600080fd5b92915050565b6000600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118015612de75750600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442115b15612e32576000600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b565b60006008600080815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612eed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180613bfa602d913960400191505060405180910390fd5b600c544210612f47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180613cea6032913960400191505060405180910390fd5b612f9982600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d4090919063ffffffff16565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f890e7ae9c3352ecc07d1748fdf39104b2982d8b502cacc2b0c57f0134a60c6e0846040518082815260200191505060405180910390a37f62ddffe5b5108385f7a590f100e1ee414ad9551a31f089e64e82998440785e1e3360405180806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281038252600f8152602001807f5072697661746553616c6546726f6d00000000000000000000000000000000008152506020019250505060405180910390a16130e78383613644565b905092915050565b60006008600080815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156131a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180613c4c602f913960400191505060405180910390fd5b8161323b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d2690919063ffffffff16565b10156132af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4e6f7420656e6f75676820756e6c6f636b656420746f6b656e7321000000000081525060200191505060405180910390fd5b7f62ddffe5b5108385f7a590f100e1ee414ad9551a31f089e64e82998440785e1e3360405180806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281038252600e8152602001807f5075626c696353616c6546726f6d0000000000000000000000000000000000008152506020019250505060405180910390a16133558383613644565b905092915050565b600062093a80600c54014211801561343d5750600860006001815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061343c57506008600080815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b5b15613493576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d815260200180613dbe603d913960400191505060405180910390fd5b600d54421080156134e357506000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15613595577f62ddffe5b5108385f7a590f100e1ee414ad9551a31f089e64e82998440785e1e3360405180806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825260128152602001807f5265737472696374656453616c6546726f6d00000000000000000000000000008152506020019250505060405180910390a161358e83836137df565b905061363e565b7f62ddffe5b5108385f7a590f100e1ee414ad9551a31f089e64e82998440785e1e3360405180806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825260128152602001807f506f73745075626c696353616c6546726f6d00000000000000000000000000008152506020019250505060405180910390a161363b8383613644565b90505b92915050565b600061369882600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d2690919063ffffffff16565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061372d82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d4090919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600080600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600061387d8284612d2690919063ffffffff16565b9050602760095410801561389057508481105b80156139275750601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b1561397d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180613d49603a913960400191505060405180910390fd5b84811015613bab57600061399a8287612d2690919063ffffffff16565b90506139ee81600a60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d4090919063ffffffff16565b600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f890e7ae9c3352ecc07d1748fdf39104b2982d8b502cacc2b0c57f0134a60c6e0836040518082815260200191505060405180910390a3613ae881600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d2690919063ffffffff16565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555033601060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505b613bb58686613644565b93505050509291505056fe46726f7a656e2062616c616e63652063616e206e6f74206265207370656e74207965742c20696e73756666696369656e7420746f6b656e73214f6e6c7920707269766174652073656c6c65722063616e206d616b6520707269766174652073616c652054582145786368616e67652061646472657373204d555354206e6f742062652075706461746564215075626c6963207472616e73666572206e6f7420616c6c6f7765642066726f6d20707269766174652073656c6c6572526573657276652063616e206e6f7420626520636c61696d6564206265666f726520656e64206f66207075626c69632073616c6521546869732061646472657373204d555354206e6f7420737461727420617070726f76616c2072656c61746564207472616e73616374696f6e73214e6f207472616e736665722066726f6d20707269766174652073656c6c6572206166746572207075626c69632073616c65214f6e6c792072617465207570646174657220697320616c6c6f77656420746f20706572666f726d2074686973215072697661746520746f6b656e2074726164696e672068616c7465642062656361757365206f66206c6f77206d61726b65742070726963657321526573657276652063616e206e6f74206265206163636573736564206265666f7265207468652031207965617220667265657a6520706572696f644e6f207472616e736665722066726f6d2065786368616e6765202f20707269766174652073656c6c6572206166746572207075626c69632073616c65214f6e6c79207a65726f2062616c616e6365206164647265737365732063616e2062652061737369676e656421a265627a7a723158206db395f728c0e52cbf364b05a79c620e9214933e428c1f89663fdc7d55ed614864736f6c634300050c0032

Deployed Bytecode

0x60806040526004361061019c5760003560e01c806379ba5097116100ec578063cfd9480b1161008a578063dc39d06d11610064578063dc39d06d146108fc578063dd62ed3e1461096f578063e5d382ed146109f4578063f2fde38b14610a4f5761019c565b8063cfd9480b1461084f578063d4ee1d901461087a578063dacec154146108d15761019c565b806395d89b41116100c657806395d89b41146106a2578063a238b62d14610732578063a9059cbb14610777578063be91de53146107ea5761019c565b806379ba5097146106095780637ffdf53e146106205780638da5cb5b1461064b5761019c565b806334fcf43711610159578063593557361161013357806359355736146104995780635ea8d05d146104fe57806370a0823114610529578063789a670b1461058e5761019c565b806334fcf437146103f85780633fe5f054146104335780634445f0991461044a5761019c565b806306fdde03146101a1578063095ea7b31461023157806318160ddd146102a45780631a864d1d146102cf57806323b872dd14610334578063313ce567146103c7575b600080fd5b3480156101ad57600080fd5b506101b6610aa0565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101f65780820151818401526020810190506101db565b50505050905090810190601f1680156102235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561023d57600080fd5b5061028a6004803603604081101561025457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b3e565b604051808215151515815260200191505060405180910390f35b3480156102b057600080fd5b506102b9610d6b565b6040518082815260200191505060405180910390f35b3480156102db57600080fd5b5061031e600480360360208110156102f257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610dc6565b6040518082815260200191505060405180910390f35b34801561034057600080fd5b506103ad6004803603606081101561035757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e0f565b604051808215151515815260200191505060405180910390f35b3480156103d357600080fd5b506103dc61128d565b604051808260ff1660ff16815260200191505060405180910390f35b34801561040457600080fd5b506104316004803603602081101561041b57600080fd5b81019080803590602001909291905050506112a0565b005b34801561043f57600080fd5b50610448611362565b005b34801561045657600080fd5b506104976004803603606081101561046d57600080fd5b810190808035906020019092919080359060200190929190803590602001909291905050506117be565b005b3480156104a557600080fd5b506104e8600480360360208110156104bc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118c5565b6040518082815260200191505060405180910390f35b34801561050a57600080fd5b5061051361190e565b6040518082815260200191505060405180910390f35b34801561053557600080fd5b506105786004803603602081101561054c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611914565b6040518082815260200191505060405180910390f35b34801561059a57600080fd5b506105c7600480360360208110156105b157600080fd5b810190808035906020019092919050505061195d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561061557600080fd5b5061061e61199a565b005b34801561062c57600080fd5b50610635611b37565b6040518082815260200191505060405180910390f35b34801561065757600080fd5b50610660611b3d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156106ae57600080fd5b506106b7611b62565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156106f75780820151818401526020810190506106dc565b50505050905090810190601f1680156107245780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561073e57600080fd5b506107756004803603604081101561075557600080fd5b810190808035906020019092919080359060200190929190505050611c00565b005b34801561078357600080fd5b506107d06004803603604081101561079a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611dc1565b604051808215151515815260200191505060405180910390f35b3480156107f657600080fd5b506108396004803603602081101561080d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612136565b6040518082815260200191505060405180910390f35b34801561085b57600080fd5b5061086461217f565b6040518082815260200191505060405180910390f35b34801561088657600080fd5b5061088f612185565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156108dd57600080fd5b506108e66121ab565b6040518082815260200191505060405180910390f35b34801561090857600080fd5b506109556004803603604081101561091f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506121b1565b604051808215151515815260200191505060405180910390f35b34801561097b57600080fd5b506109de6004803603604081101561099257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122f7565b6040518082815260200191505060405180910390f35b348015610a0057600080fd5b50610a4d60048036036040811015610a1757600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061237e565b005b348015610a5b57600080fd5b50610a9e60048036036020811015610a7257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612c89565b005b60038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b365780601f10610b0b57610100808354040283529160200191610b36565b820191906000526020600020905b815481529060010190602001808311610b1957829003601f168201915b505050505081565b6000600d54421015610c7b576000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610be2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180613cb0603a913960400191505060405180910390fd5b6000600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610c7a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180613cb0603a913960400191505060405180910390fd5b5b81600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000610dc1600660008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600554612d2690919063ffffffff16565b905090565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600d54421015610fe4576000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610eb3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180613cb0603a913960400191505060405180910390fd5b6000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610f4b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180613cb0603a913960400191505060405180910390fd5b6000600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610fe3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180613cb0603a913960400191505060405180910390fd5b5b61103682600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d2690919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061110882600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d2690919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506111da82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d4090919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600460009054906101000a900460ff1681565b600860006005815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611358576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180613d1c602d913960400191505060405180910390fd5b8060098190555050565b600860006004815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611437576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4f6e6c79207265736572766520616464726573732063616e20636c61696d210081525060200191505060405180910390fd5b62093a80600c5401421015611497576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526035815260200180613c7b6035913960400191505060405180910390fd5b61158f600660006008600080815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460066000600860006004815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d4090919063ffffffff16565b60066000600860006004815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600860006004815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166008600080815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600660006008600080815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36000600660006008600080815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461181757600080fd5b6000600b5414801561182b57506000600c54145b801561183957506000600d54145b6118ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f54696d696e67206f6e6c792063616e20626520736574206f6e6365000000000081525060200191505060405180910390fd5b82600b8190555081600c8190555080600d81905550505050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600c5481565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006008600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146119f457600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60095481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611bf85780601f10611bcd57610100808354040283529160200191611bf8565b820191906000526020600020905b815481529060010190602001808311611bdb57829003601f168201915b505050505081565b611c08612d5a565b81600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540311611c9457600080fd5b81600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611cdf57600080fd5b4281118015611d2c5750600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481115b611d3557600080fd5b81600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b6000611dcb612d5a565b6000600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118015611e99575081600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403105b15611eef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526039815260200180613bc16039913960400191505060405180910390fd5b81600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611fa4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4e6f7420656e6f756768206c697175696420746f6b656e73210000000000000081525060200191505060405180910390fd5b600860006004815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614801561201a57506301da9c00600c540142105b15612070576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b815260200180613d83603b913960400191505060405180910390fd5b6008600080815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156120e8576120e18383612e34565b9050612130565b600b54421180156120fa5750600c5442105b156121105761210983836130ef565b9050612130565b600c5442111561212b57612124838361335d565b9050612130565b600090505b92915050565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600b5481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461220c57600080fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156122b457600080fd5b505af11580156122c8573d6000803e3d6000fd5b505050506040513d60208110156122de57600080fd5b8101908080519060200190929190505050905092915050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146123d757600080fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461246f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180613dfb602c913960400191505060405180910390fd5b60006008600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506001831480156124e45750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1561253a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180613c276025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156127d05760008090506000841415612585576307f280d090505b60018414156125965763054c55e090505b60028414156125a7576302a62af090505b60038414156125b8576302a62af090505b60048414156125c957630153157890505b60008111156127ce57600460009054906101000a900460ff1660ff16600a0a8102905080600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a360028414806126a55750600484145b156127cd5780600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062ed4e004201600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff167fc11cbbff64e22615735928e4b268605ecf66b6f7df3beb072453343af1d3eae982600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051808381526020018281526020019250505060405180910390a25b5b505b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115612c3257600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115612c3157600e60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600f60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167fc11cbbff64e22615735928e4b268605ecf66b6f7df3beb072453343af1d3eae9600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051808381526020018281526020019250505060405180910390a26000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b816008600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612ce257600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600082821115612d3557600080fd5b818303905092915050565b6000818301905082811015612d5457600080fd5b92915050565b6000600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118015612de75750600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442115b15612e32576000600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b565b60006008600080815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612eed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180613bfa602d913960400191505060405180910390fd5b600c544210612f47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180613cea6032913960400191505060405180910390fd5b612f9982600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d4090919063ffffffff16565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f890e7ae9c3352ecc07d1748fdf39104b2982d8b502cacc2b0c57f0134a60c6e0846040518082815260200191505060405180910390a37f62ddffe5b5108385f7a590f100e1ee414ad9551a31f089e64e82998440785e1e3360405180806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281038252600f8152602001807f5072697661746553616c6546726f6d00000000000000000000000000000000008152506020019250505060405180910390a16130e78383613644565b905092915050565b60006008600080815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156131a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180613c4c602f913960400191505060405180910390fd5b8161323b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d2690919063ffffffff16565b10156132af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4e6f7420656e6f75676820756e6c6f636b656420746f6b656e7321000000000081525060200191505060405180910390fd5b7f62ddffe5b5108385f7a590f100e1ee414ad9551a31f089e64e82998440785e1e3360405180806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281038252600e8152602001807f5075626c696353616c6546726f6d0000000000000000000000000000000000008152506020019250505060405180910390a16133558383613644565b905092915050565b600062093a80600c54014211801561343d5750600860006001815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061343c57506008600080815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b5b15613493576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d815260200180613dbe603d913960400191505060405180910390fd5b600d54421080156134e357506000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15613595577f62ddffe5b5108385f7a590f100e1ee414ad9551a31f089e64e82998440785e1e3360405180806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825260128152602001807f5265737472696374656453616c6546726f6d00000000000000000000000000008152506020019250505060405180910390a161358e83836137df565b905061363e565b7f62ddffe5b5108385f7a590f100e1ee414ad9551a31f089e64e82998440785e1e3360405180806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825260128152602001807f506f73745075626c696353616c6546726f6d00000000000000000000000000008152506020019250505060405180910390a161363b8383613644565b90505b92915050565b600061369882600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d2690919063ffffffff16565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061372d82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d4090919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600080600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600061387d8284612d2690919063ffffffff16565b9050602760095410801561389057508481105b80156139275750601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b1561397d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180613d49603a913960400191505060405180910390fd5b84811015613bab57600061399a8287612d2690919063ffffffff16565b90506139ee81600a60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d4090919063ffffffff16565b600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f890e7ae9c3352ecc07d1748fdf39104b2982d8b502cacc2b0c57f0134a60c6e0836040518082815260200191505060405180910390a3613ae881600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d2690919063ffffffff16565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555033601060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505b613bb58686613644565b93505050509291505056fe46726f7a656e2062616c616e63652063616e206e6f74206265207370656e74207965742c20696e73756666696369656e7420746f6b656e73214f6e6c7920707269766174652073656c6c65722063616e206d616b6520707269766174652073616c652054582145786368616e67652061646472657373204d555354206e6f742062652075706461746564215075626c6963207472616e73666572206e6f7420616c6c6f7765642066726f6d20707269766174652073656c6c6572526573657276652063616e206e6f7420626520636c61696d6564206265666f726520656e64206f66207075626c69632073616c6521546869732061646472657373204d555354206e6f7420737461727420617070726f76616c2072656c61746564207472616e73616374696f6e73214e6f207472616e736665722066726f6d20707269766174652073656c6c6572206166746572207075626c69632073616c65214f6e6c792072617465207570646174657220697320616c6c6f77656420746f20706572666f726d2074686973215072697661746520746f6b656e2074726164696e672068616c7465642062656361757365206f66206c6f77206d61726b65742070726963657321526573657276652063616e206e6f74206265206163636573736564206265666f7265207468652031207965617220667265657a6520706572696f644e6f207472616e736665722066726f6d2065786368616e6765202f20707269766174652073656c6c6572206166746572207075626c69632073616c65214f6e6c79207a65726f2062616c616e6365206164647265737365732063616e2062652061737369676e656421a265627a7a723158206db395f728c0e52cbf364b05a79c620e9214933e428c1f89663fdc7d55ed614864736f6c634300050c0032

Deployed Bytecode Sourcemap

2153:17833:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19654:8;;;2477:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2477:19:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2477:19:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17750:577;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17750:577:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17750:577:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8932:114;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8932:114:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11048:127;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11048:127:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11048:127:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18476:818;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18476:818:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18476:818:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2556:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2556:21:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7312:194;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7312:194:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7312:194:0;;;;;;;;;;;;;;;;;:::i;:::-;;3042:664;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3042:664:0;;;:::i;:::-;;8198:331;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8198:331:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8198:331:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9345:138;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9345:138:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9345:138:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7935:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7935:22:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9132:120;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9132:120:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9132:120:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4042:108;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4042:108:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4042:108:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1432:196;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1432:196:0;;;:::i;:::-;;7277:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7277:26:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1034:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1034:20:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2375;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2375:20:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2375:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9976:698;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9976:698:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9976:698:0;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16256:1405;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16256:1405:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16256:1405:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10767:138;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10767:138:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10767:138:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7818:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7818:24:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1061:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1061:23:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8075:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8075:26:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19799:184;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19799:184:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19799:184:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;19429:147;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19429:147:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19429:147:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4225:2959;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4225:2959:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4225:2959:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1324:102;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1324:102:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1324:102:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;2477:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;17750:577::-;17813:12;17937:14;;17919:15;:32;17916:279;;;18005:1;17975:14;:26;17990:10;17975:26;;;;;;;;;;;;;;;;:31;17967:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18119:1;18092:14;:23;18107:7;18092:23;;;;;;;;;;;;;;;;:28;18084:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17916:279;18238:6;18207:7;:19;18215:10;18207:19;;;;;;;;;;;;;;;:28;18227:7;18207:28;;;;;;;;;;;;;;;:37;;;;18281:7;18260:37;;18269:10;18260:37;;;18290:6;18260:37;;;;;;;;;;;;;;;;;;18315:4;18308:11;;17750:577;;;;:::o;8932:114::-;8976:4;9000:38;9017:8;:20;9034:1;9017:20;;;;;;;;;;;;;;;;9000:12;;:16;;:38;;;;:::i;:::-;8993:45;;8932:114;:::o;11048:127::-;11113:10;11143:12;:24;11156:10;11143:24;;;;;;;;;;;;;;;;11136:31;;11048:127;;;:::o;18476:818::-;18553:12;18677:14;;18659:15;:32;18656:385;;;18745:1;18715:14;:26;18730:10;18715:26;;;;;;;;;;;;;;;;:31;18707:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18856:1;18832:14;:20;18847:4;18832:20;;;;;;;;;;;;;;;;:25;18824:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18965:1;18943:14;:18;18958:2;18943:18;;;;;;;;;;;;;;;;:23;18935:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18656:385;19070:26;19089:6;19070:8;:14;19079:4;19070:14;;;;;;;;;;;;;;;;:18;;:26;;;;:::i;:::-;19053:8;:14;19062:4;19053:14;;;;;;;;;;;;;;;:43;;;;19135:37;19165:6;19135:7;:13;19143:4;19135:13;;;;;;;;;;;;;;;:25;19149:10;19135:25;;;;;;;;;;;;;;;;:29;;:37;;;;:::i;:::-;19107:7;:13;19115:4;19107:13;;;;;;;;;;;;;;;:25;19121:10;19107:25;;;;;;;;;;;;;;;:65;;;;19198:24;19215:6;19198:8;:12;19207:2;19198:12;;;;;;;;;;;;;;;;:16;;:24;;;;:::i;:::-;19183:8;:12;19192:2;19183:12;;;;;;;;;;;;;;;:39;;;;19253:2;19238:26;;19247:4;19238:26;;;19257:6;19238:26;;;;;;;;;;;;;;;;;;19282:4;19275:11;;18476:818;;;;;:::o;2556:21::-;;;;;;;;;;;;;:::o;7312:194::-;7394:5;:8;7400:1;7394:8;;;;;;;;;;;;;;;;;;;;;7380:22;;:10;:22;;;7372:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7480:18;7463:14;:35;;;;7312:194;:::o;3042:664::-;3150:5;:8;3156:1;3150:8;;;;;;;;;;;;;;;;;;;;;3136:22;;:10;:22;;;3128:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3305:16;3292:10;;:29;3274:15;:47;3271:141;;;3337:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3271:141;3468:42;3491:8;:18;3500:5;:8;3506:1;3500:8;;;;;;;;;;;;;;;;;;;;;3491:18;;;;;;;;;;;;;;;;3468:8;:18;3477:5;:8;3483:1;3477:8;;;;;;;;;;;;;;;;;;;;;3468:18;;;;;;;;;;;;;;;;:22;;:42;;;;:::i;:::-;3447:8;:18;3456:5;:8;3462:1;3456:8;;;;;;;;;;;;;;;;;;;;;3447:18;;;;;;;;;;;;;;;:63;;;;3579:5;:8;3585:1;3579:8;;;;;;;;;;;;;;;;;;;;;3560:48;;3569:5;:8;3575:1;3569:8;;;;;;;;;;;;;;;;;;;;;3560:48;;;3589:8;:18;3598:5;:8;3604:1;3598:8;;;;;;;;;;;;;;;;;;;;;3589:18;;;;;;;;;;;;;;;;3560:48;;;;;;;;;;;;;;;;;;3697:1;3676:8;:18;3685:5;:8;3691:1;3685:8;;;;;;;;;;;;;;;;;;;;;3676:18;;;;;;;;;;;;;;;:22;;;;3042:664::o;8198:331::-;1290:5;;;;;;;;;;;1276:19;;:10;:19;;;1268:28;;;;;;8329:1;8313:12;;:17;:36;;;;;8348:1;8334:10;;:15;8313:36;:59;;;;;8371:1;8353:14;;:19;8313:59;8305:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8430:13;8415:12;:28;;;;8467:11;8454:10;:24;;;;8506:15;8489:14;:32;;;;8198:331;;;:::o;9345:138::-;9411:18;9449:14;:26;9464:10;9449:26;;;;;;;;;;;;;;;;9442:33;;9345:138;;;:::o;7935:22::-;;;;:::o;9132:120::-;9192:12;9224:8;:20;9233:10;9224:20;;;;;;;;;;;;;;;;9217:27;;9132:120;;;:::o;4042:108::-;4101:7;4128:5;:14;4134:7;4128:14;;;;;;;;;;;;;;;;;;;;;4121:21;;4042:108;;;:::o;1432:196::-;1499:8;;;;;;;;;;;1485:22;;:10;:22;;;1477:31;;;;;;1552:8;;;;;;;;;;;1524:37;;1545:5;;;;;;;;;;;1524:37;;;;;;;;;;;;1580:8;;;;;;;;;;;1572:5;;:16;;;;;;;;;;;;;;;;;;1618:1;1599:8;;:21;;;;;;;;;;;;;;;;;;1432:196::o;7277:26::-;;;;:::o;1034:20::-;;;;;;;;;;;;;:::o;2375:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9976:698::-;10106:15;:13;:15::i;:::-;10260:6;10231:14;:26;10246:10;10231:26;;;;;;;;;;;;;;;;10208:8;:20;10217:10;10208:20;;;;;;;;;;;;;;;;:49;:58;10200:67;;;;;;10395:6;10366:14;:26;10381:10;10366:26;;;;;;;;;;;;;;;;:35;10358:44;;;;;;10500:15;10492:5;:23;:59;;;;;10527:12;:24;10540:10;10527:24;;;;;;;;;;;;;;;;10519:5;:32;10492:59;10484:68;;;;;;10617:6;10588:14;:26;10603:10;10588:26;;;;;;;;;;;;;;;:35;;;;10661:5;10634:12;:24;10647:10;10634:24;;;;;;;;;;;;;;;:32;;;;9976:698;;:::o;16256:1405::-;16315:12;16399:15;:13;:15::i;:::-;16530:1;16501:14;:26;16516:10;16501:26;;;;;;;;;;;;;;;;:30;:92;;;;;16587:6;16558:14;:26;16573:10;16558:26;;;;;;;;;;;;;;;;16535:8;:20;16544:10;16535:20;;;;;;;;;;;;;;;;:49;:58;16501:92;16498:190;;;16609:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16498:190;16800:6;16776:8;:20;16785:10;16776:20;;;;;;;;;;;;;;;;:30;;16768:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16958:5;:8;16964:1;16958:8;;;;;;;;;;;;;;;;;;;;;16944:22;;:10;:22;;;:79;;;;;17001:22;16988:10;;:35;16970:15;:53;16944:79;16941:179;;;17039:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16941:179;17193:5;:8;17199:1;17193:8;;;;;;;;;;;;;;;;;;;;;17179:22;;:10;:22;;;17176:85;;;17224:25;17238:2;17242:6;17224:13;:25::i;:::-;17217:32;;;;17176:85;17337:12;;17319:15;:30;:62;;;;;17371:10;;17353:15;:28;17319:62;17316:124;;;17404:24;17417:2;17421:6;17404:12;:24::i;:::-;17397:31;;;;17316:124;17528:10;;17510:15;:28;17507:94;;;17561:28;17578:2;17582:6;17561:16;:28::i;:::-;17554:35;;;;17507:94;17648:5;17641:12;;16256:1405;;;;;:::o;10767:138::-;10833:18;10871:14;:26;10886:10;10871:26;;;;;;;;;;;;;;;;10864:33;;10767:138;;;:::o;7818:24::-;;;;:::o;1061:23::-;;;;;;;;;;;;;:::o;8075:26::-;;;;:::o;19799:184::-;19891:12;1290:5;;;;;;;;;;;1276:19;;:10;:19;;;1268:28;;;;;;19938:12;19923:37;;;19961:5;;;;;;;;;;;19968:6;19923:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19923:52:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19923:52:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19923:52:0;;;;;;;;;;;;;;;;19916:59;;19799:184;;;;:::o;19429:147::-;19506:14;19540:7;:19;19548:10;19540:19;;;;;;;;;;;;;;;:28;19560:7;19540:28;;;;;;;;;;;;;;;;19533:35;;19429:147;;;;:::o;4225:2959::-;1290:5;;;;;;;;;;;1276:19;;:10;:19;;;1268:28;;;;;;4417:1;4392:8;:21;4401:11;4392:21;;;;;;;;;;;;;;;;:26;4384:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4519:19;4541:5;:14;4547:7;4541:14;;;;;;;;;;;;;;;;;;;;;4519:36;;4638:1;4627:7;:12;:41;;;;;4666:1;4643:25;;:11;:25;;;;4627:41;4624:119;;;4684:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4624:119;4837:1;4814:25;;:11;:25;;;4811:1419;;;4895:16;4914:1;4895:20;;4976:1;4965:7;:12;4962:74;;;5011:9;4997:23;;4962:74;5090:1;5079:7;:12;5076:73;;;5125:8;5111:22;;5076:73;5205:1;5194:7;:12;5191:73;;;5240:8;5226:22;;5191:73;5317:1;5306:7;:12;5303:73;;;5352:8;5338:22;;5303:73;5429:1;5418:7;:12;5415:73;;;5464:8;5450:22;;5415:73;5615:1;5601:11;:15;5598:621;;;5673:8;;;;;;;;;;;5668:14;;5664:2;:18;5650:11;:32;5636:46;;5725:11;5701:8;:21;5710:11;5701:21;;;;;;;;;;;;;;;:35;;;;5781:11;5760:46;;5777:1;5760:46;;;5794:11;5760:46;;;;;;;;;;;;;;;;;;5921:1;5910:7;:12;:28;;;;5937:1;5926:7;:12;5910:28;5907:297;;;5992:11;5962:14;:27;5977:11;5962:27;;;;;;;;;;;;;;;:41;;;;6072:18;6054:15;:36;6026:12;:25;6039:11;6026:25;;;;;;;;;;;;;;;:64;;;;6132:11;6118:66;;;6145:11;6158:12;:25;6171:11;6158:25;;;;;;;;;;;;;;;;6118:66;;;;;;;;;;;;;;;;;;;;;;;;5907:297;5598:621;4811:1419;;6311:1;6287:8;:21;6296:11;6287:21;;;;;;;;;;;;;;;;:25;6284:822;;;6410:8;:21;6419:11;6410:21;;;;;;;;;;;;;;;;6386:8;:21;6395:11;6386:21;;;;;;;;;;;;;;;:45;;;;6510:11;6488:57;;6497:11;6488:57;;;6523:8;:21;6532:11;6523:21;;;;;;;;;;;;;;;;6488:57;;;;;;;;;;;;;;;;;;6620:1;6596:8;:21;6605:11;6596:21;;;;;;;;;;;;;;;:25;;;;6719:1;6689:14;:27;6704:11;6689:27;;;;;;;;;;;;;;;;:31;6686:409;;;6772:14;:27;6787:11;6772:27;;;;;;;;;;;;;;;;6742:14;:27;6757:11;6742:27;;;;;;;;;;;;;;;:57;;;;6846:12;:25;6859:11;6846:25;;;;;;;;;;;;;;;;6818:12;:25;6831:11;6818:25;;;;;;;;;;;;;;;:53;;;;6911:11;6897:82;;;6924:14;:27;6939:11;6924:27;;;;;;;;;;;;;;;;6953:12;:25;6966:11;6953:25;;;;;;;;;;;;;;;;6897:82;;;;;;;;;;;;;;;;;;;;;;;;7030:1;7000:14;:27;7015:11;7000:27;;;;;;;;;;;;;;;:31;;;;7078:1;7050:12;:25;7063:11;7050:25;;;;;;;;;;;;;;;:29;;;;6686:409;6284:822;7165:11;7148:5;:14;7154:7;7148:14;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;1307:1;4225:2959;;:::o;1324:102::-;1290:5;;;;;;;;;;;1276:19;;:10;:19;;;1268:28;;;;;;1409:9;1398:8;;:20;;;;;;;;;;;;;;;;;;1324:102;:::o;1779:114::-;1831:6;1863:1;1858;:6;;1850:15;;;;;;1884:1;1880;:5;1876:9;;1779:114;;;;:::o;1659:::-;1711:6;1738:1;1734;:5;1730:9;;1763:1;1758;:6;;1750:15;;;;;;1659:114;;;;:::o;11300:190::-;11378:1;11349:14;:26;11364:10;11349:26;;;;;;;;;;;;;;;;:30;:76;;;;;11401:12;:24;11414:10;11401:24;;;;;;;;;;;;;;;;11383:15;:42;11349:76;11346:137;;;11470:1;11441:14;:26;11456:10;11441:26;;;;;;;;;;;;;;;:30;;;;11346:137;11300:190::o;11580:727::-;11645:12;11762:5;:8;11768:1;11762:8;;;;;;;;;;;;;;;;;;;;;11748:22;;:10;:22;;;11740:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11935:10;;11917:15;:28;11909:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12080:30;12103:6;12080:14;:18;12095:2;12080:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;12059:14;:18;12074:2;12059:18;;;;;;;;;;;;;;;:51;;;;12150:2;12126:35;;12138:10;12126:35;;;12154:6;12126:35;;;;;;;;;;;;;;;;;;12177:41;12207:10;12177:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12271:28;12288:2;12292:6;12271:16;:28::i;:::-;12264:35;;11580:727;;;;:::o;12402:607::-;12466:12;12593:5;:8;12599:1;12593:8;;;;;;;;;;;;;;;;;;;;;12579:22;;:10;:22;;;;12571:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12826:6;12770:52;12795:14;:26;12810:10;12795:26;;;;;;;;;;;;;;;;12770:8;:20;12779:10;12770:20;;;;;;;;;;;;;;;;:24;;:52;;;;:::i;:::-;:62;;12762:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12880:40;12909:10;12880:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12973:28;12990:2;12994:6;12973:16;:28::i;:::-;12966:35;;12402:607;;;;:::o;13115:841::-;13183:12;13332:16;13319:10;;:29;13301:15;:47;:101;;;;;13367:5;:8;13373:1;13367:8;;;;;;;;;;;;;;;;;;;;;13353:22;;:10;:22;;;:48;;;;13393:5;:8;13399:1;13393:8;;;;;;;;;;;;;;;;;;;;;13379:22;;:10;:22;;;13353:48;13301:101;13298:203;;;13418:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13298:203;13625:14;;13607:15;:32;:66;;;;;13672:1;13643:14;:26;13658:10;13643:26;;;;;;;;;;;;;;;;:30;13607:66;13604:199;;;13694:44;13727:10;13694:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13760:31;13780:2;13784:6;13760:19;:31::i;:::-;13753:38;;;;13604:199;13818:44;13851:10;13818:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13920:28;13937:2;13941:6;13920:16;:28::i;:::-;13913:35;;13115:841;;;;;:::o;15752:328::-;15820:12;15920:32;15945:6;15920:8;:20;15929:10;15920:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;15897:8;:20;15906:10;15897:20;;;;;;;;;;;;;;;:55;;;;15978:24;15995:6;15978:8;:12;15987:2;15978:12;;;;;;;;;;;;;;;;:16;;:24;;;;:::i;:::-;15963:8;:12;15972:2;15963:12;;;;;;;;;;;;;;;:39;;;;16039:2;16018:32;;16027:10;16018:32;;;16043:6;16018:32;;;;;;;;;;;;;;;;;;16068:4;16061:11;;15752:328;;;;:::o;14325:1351::-;14396:12;14459:17;14479:8;:20;14488:10;14479:20;;;;;;;;;;;;;;;;14459:40;;14510:18;14531:14;:26;14546:10;14531:26;;;;;;;;;;;;;;;;14510:47;;14568:20;14591:31;14608:13;14591:12;:16;;:31;;;;:::i;:::-;14568:54;;14765:2;14748:14;;:19;:47;;;;;14789:6;14771:15;:24;14748:47;:80;;;;;14805:11;:23;14817:10;14805:23;;;;;;;;;;;;;;;;;;;;;;;;;14799:29;;:2;:29;;;;14748:80;14745:179;;;14844:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14745:179;15023:6;15005:15;:24;15002:581;;;15115:14;15132:27;15143:15;15132:6;:10;;:27;;;;:::i;:::-;15115:44;;15222:33;15245:9;15222:14;:18;15237:2;15222:18;;;;;;;;;;;;;;;;:22;;:33;;;;:::i;:::-;15201:14;:18;15216:2;15201:18;;;;;;;;;;;;;;;:54;;;;15299:2;15275:38;;15287:10;15275:38;;;15303:9;15275:38;;;;;;;;;;;;;;;;;;15397:41;15428:9;15397:14;:26;15412:10;15397:26;;;;;;;;;;;;;;;;:30;;:41;;;;:::i;:::-;15368:14;:26;15383:10;15368:26;;;;;;;;;;;;;;;:70;;;;15561:10;15543:11;:15;15555:2;15543:15;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;15002:581;;15640:28;15657:2;15661:6;15640:16;:28::i;:::-;15633:35;;;;;14325:1351;;;;:::o

Swarm Source

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