ETH Price: $3,223.94 (+2.32%)
Gas: 57 Gwei

Token

DeFIL-V2 (DFL)
 

Overview

Max Total Supply

100,208,465.139974924829082343 DFL

Holders

1,421

Total Transfers

-

Market

Fully Diluted Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
DFL

Compiler Version
v0.5.17+commit.d19bba13

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-08-12
*/

pragma solidity ^0.5.16;
pragma experimental ABIEncoderV2;


// Copied from compound/EIP20Interface
/**
 * @title ERC 20 Token Standard Interface
 *  https://eips.ethereum.org/EIPS/eip-20
 */
interface EIP20Interface {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);

    /**
      * @notice Get the total number of tokens in circulation
      * @return The supply of tokens
      */
    function totalSupply() external view returns (uint256);

    /**
     * @notice Gets the balance of the specified address
     * @param owner The address from which the balance will be retrieved
     * @return The balance
     */
    function balanceOf(address owner) external view returns (uint256 balance);

    /**
      * @notice Transfer `amount` tokens from `msg.sender` to `dst`
      * @param dst The address of the destination account
      * @param amount The number of tokens to transfer
      * @return Whether or not the transfer succeeded
      */
    function transfer(address dst, uint256 amount) external returns (bool success);

    /**
      * @notice Transfer `amount` tokens from `src` to `dst`
      * @param src The address of the source account
      * @param dst The address of the destination account
      * @param amount The number of tokens to transfer
      * @return Whether or not the transfer succeeded
      */
    function transferFrom(address src, address dst, uint256 amount) external returns (bool success);

    /**
      * @notice Approve `spender` to transfer up to `amount` from `src`
      * @dev This will overwrite the approval amount for `spender`
      *  and is subject to issues noted [here](https://eips.ethereum.org/EIPS/eip-20#approve)
      * @param spender The address of the account which may transfer tokens
      * @param amount The number of tokens that are approved (-1 means infinite)
      * @return Whether or not the approval succeeded
      */
    function approve(address spender, uint256 amount) external returns (bool success);

    /**
      * @notice Get the current allowance from `owner` for `spender`
      * @param owner The address of the account which owns the tokens to be spent
      * @param spender The address of the account which may transfer tokens
      * @return The number of tokens allowed to be spent (-1 means infinite)
      */
    function allowance(address owner, address spender) external view returns (uint256 remaining);

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

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
contract Ownable {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () internal {
        _owner = msg.sender;
        emit OwnershipTransferred(address(0), msg.sender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == msg.sender, "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

// Modified from Compound/COMP
contract DFL is EIP20Interface, Ownable {
    /// @notice EIP-20 token name for this token
    string public constant name = "DeFIL-V2";

    /// @notice EIP-20 token symbol for this token
    string public constant symbol = "DFL";

    /// @notice EIP-20 token decimals for this token
    uint8 public constant decimals = 18;

    /// @notice Total number of tokens in circulation
    uint96 internal _totalSupply;

    /// @notice Allowance amounts on behalf of others
    mapping (address => mapping (address => uint96)) internal allowances;

    /// @notice Official record of token balances for each account
    mapping (address => uint96) internal balances;

    /// @notice A record of each accounts delegate
    mapping (address => address) public delegates;

    /// @notice A checkpoint for marking number of votes from a given block
    struct Checkpoint {
        uint32 fromBlock;
        uint96 votes;
    }

    /// @notice A record of votes checkpoints for each account, by index
    mapping (address => mapping (uint32 => Checkpoint)) public checkpoints;

    /// @notice The number of checkpoints for each account
    mapping (address => uint32) public numCheckpoints;

    /// @notice The EIP-712 typehash for the contract's domain
    bytes32 public constant DOMAIN_TYPEHASH = keccak256("EIP712Domain(string name,uint256 chainId,address verifyingContract)");

    /// @notice The EIP-712 typehash for the delegation struct used by the contract
    bytes32 public constant DELEGATION_TYPEHASH = keccak256("Delegation(address delegatee,uint256 nonce,uint256 expiry)");

    /// @notice A record of states for signing / validating signatures
    mapping (address => uint) public nonces;

    /// @notice An event thats emitted when an account changes its delegate
    event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate);

    /// @notice An event thats emitted when a delegate account's vote balance changes
    event DelegateVotesChanged(address indexed delegate, uint previousBalance, uint newBalance);

    /// @notice The standard EIP-20 transfer event
    event Transfer(address indexed from, address indexed to, uint256 amount);

    /// @notice The standard EIP-20 approval event
    event Approval(address indexed owner, address indexed spender, uint256 amount);

    /**
     * @notice Construct a new DFL token
     */
    constructor() public {
        emit Transfer(address(0), address(this), 0);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     * Emits a {Transfer} event with `from` set to the zero address.
     * @param account The address of the account holding the new funds
     * @param rawAmount The number of tokens that are minted
     */
    function mint(address account, uint rawAmount) public onlyOwner {
        require(account != address(0), "DFL:: mint: cannot mint to the zero address");
        uint96 amount = safe96(rawAmount, "DFL::mint: amount exceeds 96 bits");
        _totalSupply = add96(_totalSupply, amount, "DFL::mint: total supply exceeds");
        balances[account] = add96(balances[account], amount, "DFL::mint: mint amount exceeds balance");

        _moveDelegates(address(0), delegates[account], amount);
        emit Transfer(address(0), account, amount);
    }

    /** @dev Burns `amount` tokens, decreasing the total supply.
     * @param rawAmount The number of tokens that are bruned
     */
    function burn(uint rawAmount) external {
        uint96 amount = safe96(rawAmount, "DFL::burn: amount exceeds 96 bits");
        _totalSupply = sub96(_totalSupply, amount, "DFL::burn: total supply exceeds");
        balances[msg.sender] = sub96(balances[msg.sender], amount, "DFL::burn: burn amount exceeds balance");

        _moveDelegates(delegates[msg.sender], address(0), amount);
        emit Transfer(msg.sender, address(0), amount);
    }

    /**
     * @notice Get the number of tokens `spender` is approved to spend on behalf of `account`
     * @param account The address of the account holding the funds
     * @param spender The address of the account spending the funds
     * @return The number of tokens approved
     */
    function allowance(address account, address spender) external view returns (uint) {
        return allowances[account][spender];
    }

    /**
     * @notice Approve `spender` to transfer up to `amount` from `src`
     * @dev This will overwrite the approval amount for `spender`
     *  and is subject to issues noted [here](https://eips.ethereum.org/EIPS/eip-20#approve)
     * @param spender The address of the account which may transfer tokens
     * @param rawAmount The number of tokens that are approved (2^256-1 means infinite)
     * @return Whether or not the approval succeeded
     */
    function approve(address spender, uint rawAmount) external returns (bool) {
        uint96 amount;
        if (rawAmount == uint(-1)) {
            amount = uint96(-1);
        } else {
            amount = safe96(rawAmount, "DFL::approve: amount exceeds 96 bits");
        }

        allowances[msg.sender][spender] = amount;

        emit Approval(msg.sender, spender, amount);
        return true;
    }

    /**
     * @notice Get the total supply of tokens
     * @return The total supply of tokens
     */
    function totalSupply() external view returns (uint) {
        return _totalSupply;
    }

    /**
     * @notice Get the number of tokens held by the `account`
     * @param account The address of the account to get the balance of
     * @return The number of tokens held
     */
    function balanceOf(address account) external view returns (uint) {
        return balances[account];
    }

    /**
     * @notice Transfer `amount` tokens from `msg.sender` to `dst`
     * @param dst The address of the destination account
     * @param rawAmount The number of tokens to transfer
     * @return Whether or not the transfer succeeded
     */
    function transfer(address dst, uint rawAmount) external returns (bool) {
        uint96 amount = safe96(rawAmount, "DFL::transfer: amount exceeds 96 bits");
        _transferTokens(msg.sender, dst, amount);
        return true;
    }

    /**
     * @notice Transfer `amount` tokens from `src` to `dst`
     * @param src The address of the source account
     * @param dst The address of the destination account
     * @param rawAmount The number of tokens to transfer
     * @return Whether or not the transfer succeeded
     */
    function transferFrom(address src, address dst, uint rawAmount) external returns (bool) {
        address spender = msg.sender;
        uint96 spenderAllowance = allowances[src][spender];
        uint96 amount = safe96(rawAmount, "DFL::approve: amount exceeds 96 bits");

        if (spender != src && spenderAllowance != uint96(-1)) {
            uint96 newAllowance = sub96(spenderAllowance, amount, "DFL::transferFrom: transfer amount exceeds spender allowance");
            allowances[src][spender] = newAllowance;

            emit Approval(src, spender, newAllowance);
        }

        _transferTokens(src, dst, amount);
        return true;
    }

    /**
     * @notice Delegate votes from `msg.sender` to `delegatee`
     * @param delegatee The address to delegate votes to
     */
    function delegate(address delegatee) public {
        return _delegate(msg.sender, delegatee);
    }

    /**
     * @notice Delegates votes from signatory to `delegatee`
     * @param delegatee The address to delegate votes to
     * @param nonce The contract state required to match the signature
     * @param expiry The time at which to expire the signature
     * @param v The recovery byte of the signature
     * @param r Half of the ECDSA signature pair
     * @param s Half of the ECDSA signature pair
     */
    function delegateBySig(address delegatee, uint nonce, uint expiry, uint8 v, bytes32 r, bytes32 s) public {
        bytes32 domainSeparator = keccak256(abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(name)), getChainId(), address(this)));
        bytes32 structHash = keccak256(abi.encode(DELEGATION_TYPEHASH, delegatee, nonce, expiry));
        bytes32 digest = keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash));
        address signatory = ecrecover(digest, v, r, s);
        require(signatory != address(0), "DFL::delegateBySig: invalid signature");
        require(nonce == nonces[signatory]++, "DFL::delegateBySig: invalid nonce");
        require(block.timestamp <= expiry, "DFL::delegateBySig: signature expired");
        return _delegate(signatory, delegatee);
    }

    /**
     * @notice Gets the current votes balance for `account`
     * @param account The address to get votes balance
     * @return The number of current votes for `account`
     */
    function getCurrentVotes(address account) external view returns (uint96) {
        uint32 nCheckpoints = numCheckpoints[account];
        return nCheckpoints > 0 ? checkpoints[account][nCheckpoints - 1].votes : 0;
    }

    /**
     * @notice Determine the prior number of votes for an account as of a block number
     * @dev Block number must be a finalized block or else this function will revert to prevent misinformation.
     * @param account The address of the account to check
     * @param blockNumber The block number to get the vote balance at
     * @return The number of votes the account had as of the given block
     */
    function getPriorVotes(address account, uint blockNumber) public view returns (uint96) {
        require(blockNumber < block.number, "DFL::getPriorVotes: not yet determined");

        uint32 nCheckpoints = numCheckpoints[account];
        if (nCheckpoints == 0) {
            return 0;
        }

        // First check most recent balance
        if (checkpoints[account][nCheckpoints - 1].fromBlock <= blockNumber) {
            return checkpoints[account][nCheckpoints - 1].votes;
        }

        // Next check implicit zero balance
        if (checkpoints[account][0].fromBlock > blockNumber) {
            return 0;
        }

        uint32 lower = 0;
        uint32 upper = nCheckpoints - 1;
        while (upper > lower) {
            uint32 center = upper - (upper - lower) / 2; // ceil, avoiding overflow
            Checkpoint memory cp = checkpoints[account][center];
            if (cp.fromBlock == blockNumber) {
                return cp.votes;
            } else if (cp.fromBlock < blockNumber) {
                lower = center;
            } else {
                upper = center - 1;
            }
        }
        return checkpoints[account][lower].votes;
    }

    function _delegate(address delegator, address delegatee) internal {
        address currentDelegate = delegates[delegator];
        uint96 delegatorBalance = balances[delegator];
        delegates[delegator] = delegatee;

        emit DelegateChanged(delegator, currentDelegate, delegatee);

        _moveDelegates(currentDelegate, delegatee, delegatorBalance);
    }

    function _transferTokens(address src, address dst, uint96 amount) internal {
        require(src != address(0), "DFL::_transferTokens: cannot transfer from the zero address");
        require(dst != address(0), "DFL::_transferTokens: cannot transfer to the zero address");

        balances[src] = sub96(balances[src], amount, "DFL::_transferTokens: transfer amount exceeds balance");
        balances[dst] = add96(balances[dst], amount, "DFL::_transferTokens: transfer amount overflows");
        emit Transfer(src, dst, amount);

        _moveDelegates(delegates[src], delegates[dst], amount);
    }

    function _moveDelegates(address srcRep, address dstRep, uint96 amount) internal {
        if (srcRep != dstRep && amount > 0) {
            if (srcRep != address(0)) {
                uint32 srcRepNum = numCheckpoints[srcRep];
                uint96 srcRepOld = srcRepNum > 0 ? checkpoints[srcRep][srcRepNum - 1].votes : 0;
                uint96 srcRepNew = sub96(srcRepOld, amount, "DFL::_moveVotes: vote amount underflows");
                _writeCheckpoint(srcRep, srcRepNum, srcRepOld, srcRepNew);
            }

            if (dstRep != address(0)) {
                uint32 dstRepNum = numCheckpoints[dstRep];
                uint96 dstRepOld = dstRepNum > 0 ? checkpoints[dstRep][dstRepNum - 1].votes : 0;
                uint96 dstRepNew = add96(dstRepOld, amount, "DFL::_moveVotes: vote amount overflows");
                _writeCheckpoint(dstRep, dstRepNum, dstRepOld, dstRepNew);
            }
        }
    }

    function _writeCheckpoint(address delegatee, uint32 nCheckpoints, uint96 oldVotes, uint96 newVotes) internal {
      uint32 blockNumber = safe32(block.number, "DFL::_writeCheckpoint: block number exceeds 32 bits");

      if (nCheckpoints > 0 && checkpoints[delegatee][nCheckpoints - 1].fromBlock == blockNumber) {
          checkpoints[delegatee][nCheckpoints - 1].votes = newVotes;
      } else {
          checkpoints[delegatee][nCheckpoints] = Checkpoint(blockNumber, newVotes);
          numCheckpoints[delegatee] = nCheckpoints + 1;
      }

      emit DelegateVotesChanged(delegatee, oldVotes, newVotes);
    }

    function safe32(uint n, string memory errorMessage) internal pure returns (uint32) {
        require(n < 2**32, errorMessage);
        return uint32(n);
    }

    function safe96(uint n, string memory errorMessage) internal pure returns (uint96) {
        require(n < 2**96, errorMessage);
        return uint96(n);
    }

    function add96(uint96 a, uint96 b, string memory errorMessage) internal pure returns (uint96) {
        uint96 c = a + b;
        require(c >= a, errorMessage);
        return c;
    }

    function sub96(uint96 a, uint96 b, string memory errorMessage) internal pure returns (uint96) {
        require(b <= a, errorMessage);
        return a - b;
    }

    function getChainId() internal pure returns (uint) {
        uint256 chainId;
        assembly { chainId := chainid() }
        return chainId;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"fromDelegate","type":"address"},{"indexed":true,"internalType":"address","name":"toDelegate","type":"address"}],"name":"DelegateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBalance","type":"uint256"}],"name":"DelegateVotesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","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":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"constant":true,"inputs":[],"name":"DELEGATION_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"DOMAIN_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint32","name":"","type":"uint32"}],"name":"checkpoints","outputs":[{"internalType":"uint32","name":"fromBlock","type":"uint32"},{"internalType":"uint96","name":"votes","type":"uint96"}],"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":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"delegateBySig","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getCurrentVotes","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPriorVotes","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"mint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"numCheckpoints","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","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":"dst","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b50600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a360405130906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9062000088908390620000a7565b60405180910390a3620000cd565b620000a181620000c0565b82525050565b60208101620000b7828462000096565b92915050565b90565b6000620000b782620000bd565b61211580620000dd6000396000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c8063715018a6116100c3578063b4b5ea571161007c578063b4b5ea57146102cc578063c3cda520146102df578063dd62ed3e146102f2578063e7a324dc14610305578063f1127ed81461030d578063f2fde38b1461032e57610158565b8063715018a61461026e578063782d6fe1146102765780637ecebe00146102965780638da5cb5b146102a957806395d89b41146102b1578063a9059cbb146102b957610158565b806340c10f191161011557806340c10f19146101e057806342966c68146101f5578063587cde1e146102085780635c19a95c146102285780636fcfff451461023b57806370a082311461025b57610158565b806306fdde031461015d578063095ea7b31461017b57806318160ddd1461019b57806320606b70146101b057806323b872dd146101b8578063313ce567146101cb575b600080fd5b610165610341565b6040516101729190611d10565b60405180910390f35b61018e6101893660046116f1565b610365565b6040516101729190611c66565b6101a3610424565b6040516101729190611c74565b6101a361043a565b61018e6101c63660046116a4565b610451565b6101d361059a565b6040516101729190611dda565b6101f36101ee3660046116f1565b61059f565b005b6101f36102033660046117d8565b610770565b61021b610216366004611644565b6108d5565b6040516101729190611c58565b6101f3610236366004611644565b6108f0565b61024e610249366004611644565b6108fd565b6040516101729190611db1565b6101a3610269366004611644565b610915565b6101f3610939565b6102896102843660046116f1565b6109ad565b6040516101729190611df6565b6101a36102a4366004611644565b610bbb565b61021b610bcd565b610165610bdc565b61018e6102c73660046116f1565b610bfb565b6102896102da366004611644565b610c37565b6101f36102ed366004611721565b610ca7565b6101a361030036600461166a565b610e90565b6101a3610ec4565b61032061031b3660046117a8565b610ed0565b604051610172929190611dbf565b6101f361033c366004611644565b610f05565b604051806040016040528060088152602001672232a324a616ab1960c11b81525081565b60008060001983141561037b57506000196103a0565b61039d8360405180606001604052806024815260200161203e60249139610fb0565b90505b3360008181526001602090815260408083206001600160a01b03891680855292529182902080546001600160601b0319166001600160601b03861617905590519091907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610410908590611de8565b60405180910390a360019150505b92915050565b600054600160a01b90046001600160601b031690565b60405161044690611c42565b604051809103902081565b6001600160a01b03831660009081526001602090815260408083203380855290835281842054825160608101909352602480845291936001600160601b039091169285926104a9928892919061203e90830139610fb0565b9050866001600160a01b0316836001600160a01b0316141580156104d657506001600160601b0382811614155b1561058057600061050083836040518060600160405280603c8152602001611edc603c9139610fdf565b6001600160a01b038981166000818152600160209081526040808320948a16808452949091529081902080546001600160601b0319166001600160601b0386161790555192935090917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610576908590611de8565b60405180910390a3505b61058b87878361101e565b600193505050505b9392505050565b601281565b6000546001600160a01b031633146105d25760405162461bcd60e51b81526004016105c990611d71565b60405180910390fd5b6001600160a01b0382166105f85760405162461bcd60e51b81526004016105c990611d61565b600061061c82604051806060016040528060218152602001611f7c60219139610fb0565b9050610673600060149054906101000a90046001600160601b0316826040518060400160405280601f81526020017f44464c3a3a6d696e743a20746f74616c20737570706c792065786365656473008152506111c9565b600080546001600160601b03928316600160a01b026001600160a01b0391821617825585168152600260209081526040918290205482516060810190935260268084526106d09491909116928592909190612062908301396111c9565b6001600160a01b03848116600090815260026020908152604080832080546001600160601b0319166001600160601b039690961695909517909455600390529182205461071f92911683611205565b826001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107639190611de8565b60405180910390a3505050565b600061079482604051806060016040528060218152602001611fea60219139610fb0565b90506107eb600060149054906101000a90046001600160601b0316826040518060400160405280601f81526020017f44464c3a3a6275726e3a20746f74616c20737570706c79206578636565647300815250610fdf565b600080546001600160a01b0316600160a01b6001600160601b039384160217815533815260026020908152604091829020548251606081019093526026808452610845949190911692859290919061208890830139610fdf565b33600090815260026020908152604080832080546001600160601b0319166001600160601b0395909516949094179093556003905290812054610894916001600160a01b039091169083611205565b60405160009033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906108c9908590611de8565b60405180910390a35050565b6003602052600090815260409020546001600160a01b031681565b6108fa3382611397565b50565b60056020526000908152604090205463ffffffff1681565b6001600160a01b03166000908152600260205260409020546001600160601b031690565b6000546001600160a01b031633146109635760405162461bcd60e51b81526004016105c990611d71565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60004382106109ce5760405162461bcd60e51b81526004016105c990611d91565b6001600160a01b03831660009081526005602052604090205463ffffffff16806109fc57600091505061041e565b6001600160a01b038416600090815260046020908152604080832063ffffffff600019860181168552925290912054168310610a78576001600160a01b03841660009081526004602090815260408083206000199490940163ffffffff1683529290522054600160201b90046001600160601b0316905061041e565b6001600160a01b038416600090815260046020908152604080832083805290915290205463ffffffff16831015610ab357600091505061041e565b600060001982015b8163ffffffff168163ffffffff161115610b7657600282820363ffffffff16048103610ae5611601565b506001600160a01b038716600090815260046020908152604080832063ffffffff858116855290835292819020815180830190925254928316808252600160201b9093046001600160601b03169181019190915290871415610b515760200151945061041e9350505050565b805163ffffffff16871115610b6857819350610b6f565b6001820392505b5050610abb565b506001600160a01b038516600090815260046020908152604080832063ffffffff909416835292905220546001600160601b03600160201b9091041691505092915050565b60066020526000908152604090205481565b6000546001600160a01b031690565b6040518060400160405280600381526020016211119360ea1b81525081565b600080610c20836040518060600160405280602581526020016120ae60259139610fb0565b9050610c2d33858361101e565b5060019392505050565b6001600160a01b03811660009081526005602052604081205463ffffffff1680610c62576000610593565b6001600160a01b0383166000908152600460209081526040808320600019850163ffffffff168452909152902054600160201b90046001600160601b03169392505050565b6000604051610cb590611c42565b6040805191829003822082820190915260088252672232a324a616ab1960c11b6020909201919091527e0b9109e5374d9723dd128302f144bf192e2795f94ac4f92b130a620b0662df610d06611421565b30604051602001610d1a9493929190611cc0565b6040516020818303038152906040528051906020012090506000604051610d4090611c4d565b604051908190038120610d5b918a908a908a90602001611c82565b60405160208183030381529060405280519060200120905060008282604051602001610d88929190611c11565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051610dc59493929190611cf5565b6020604051602081039080840390855afa158015610de7573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610e1a5760405162461bcd60e51b81526004016105c990611da1565b6001600160a01b03811660009081526006602052604090208054600181019091558914610e595760405162461bcd60e51b81526004016105c990611d41565b87421115610e795760405162461bcd60e51b81526004016105c990611d21565b610e83818b611397565b505050505b505050505050565b6001600160a01b0391821660009081526001602090815260408083209390941682529190915220546001600160601b031690565b60405161044690611c4d565b600460209081526000928352604080842090915290825290205463ffffffff811690600160201b90046001600160601b031682565b6000546001600160a01b03163314610f2f5760405162461bcd60e51b81526004016105c990611d71565b6001600160a01b038116610f555760405162461bcd60e51b81526004016105c990611d31565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600081600160601b8410610fd75760405162461bcd60e51b81526004016105c99190611d10565b509192915050565b6000836001600160601b0316836001600160601b0316111582906110165760405162461bcd60e51b81526004016105c99190611d10565b505050900390565b6001600160a01b0383166110445760405162461bcd60e51b81526004016105c990611d81565b6001600160a01b03821661106a5760405162461bcd60e51b81526004016105c990611d51565b6001600160a01b0383166000908152600260209081526040918290205482516060810190935260358084526110b5936001600160601b039092169285929190611f4790830139610fdf565b6001600160a01b03848116600090815260026020908152604080832080546001600160601b0319166001600160601b0396871617905592861682529082902054825160608101909352602f80845261111d9491909116928592909190611f18908301396111c9565b6001600160a01b038381166000818152600260205260409081902080546001600160601b0319166001600160601b0395909516949094179093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061118a908590611de8565b60405180910390a36001600160a01b038084166000908152600360205260408082205485841683529120546111c492918216911683611205565b505050565b6000838301826001600160601b0380871690831610156111fc5760405162461bcd60e51b81526004016105c99190611d10565b50949350505050565b816001600160a01b0316836001600160a01b03161415801561123057506000816001600160601b0316115b156111c4576001600160a01b038316156112e8576001600160a01b03831660009081526005602052604081205463ffffffff1690816112705760006112af565b6001600160a01b0385166000908152600460209081526040808320600019860163ffffffff168452909152902054600160201b90046001600160601b03165b905060006112d68285604051806060016040528060278152602001611fc360279139610fdf565b90506112e486848484611425565b5050505b6001600160a01b038216156111c4576001600160a01b03821660009081526005602052604081205463ffffffff169081611323576000611362565b6001600160a01b0384166000908152600460209081526040808320600019860163ffffffff168452909152902054600160201b90046001600160601b03165b905060006113898285604051806060016040528060268152602001611f9d602691396111c9565b9050610e8885848484611425565b6001600160a01b03808316600081815260036020818152604080842080546002845282862054949093528787166001600160a01b031984168117909155905191909516946001600160601b039092169391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a461141b828483611205565b50505050565b4690565b60006114494360405180606001604052806033815260200161200b603391396115da565b905060008463ffffffff1611801561149257506001600160a01b038516600090815260046020908152604080832063ffffffff6000198901811685529252909120548282169116145b156114f1576001600160a01b0385166000908152600460209081526040808320600019880163ffffffff168452909152902080546fffffffffffffffffffffffff000000001916600160201b6001600160601b03851602179055611590565b60408051808201825263ffffffff80841682526001600160601b0380861660208085019182526001600160a01b038b166000818152600483528781208c871682528352878120965187549451909516600160201b026fffffffffffffffffffffffff000000001995871663ffffffff19958616179590951694909417909555938252600590935292909220805460018801909316929091169190911790555b846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72484846040516115cb929190611e04565b60405180910390a25050505050565b600081600160201b8410610fd75760405162461bcd60e51b81526004016105c99190611d10565b604080518082019091526000808252602082015290565b803561041e81611eac565b803561041e81611ec0565b803561041e81611ec9565b803561041e81611ed2565b60006020828403121561165657600080fd5b60006116628484611618565b949350505050565b6000806040838503121561167d57600080fd5b60006116898585611618565b925050602061169a85828601611618565b9150509250929050565b6000806000606084860312156116b957600080fd5b60006116c58686611618565b93505060206116d686828701611618565b92505060406116e786828701611623565b9150509250925092565b6000806040838503121561170457600080fd5b60006117108585611618565b925050602061169a85828601611623565b60008060008060008060c0878903121561173a57600080fd5b60006117468989611618565b965050602061175789828a01611623565b955050604061176889828a01611623565b945050606061177989828a01611639565b935050608061178a89828a01611623565b92505060a061179b89828a01611623565b9150509295509295509295565b600080604083850312156117bb57600080fd5b60006117c78585611618565b925050602061169a8582860161162e565b6000602082840312156117ea57600080fd5b60006116628484611623565b6117ff81611e31565b82525050565b6117ff81611e3c565b6117ff81611e41565b6117ff61182382611e41565b611e41565b600061183382611e1f565b61183d8185611e23565b935061184d818560208601611e76565b61185681611ea2565b9093019392505050565b600061186d602583611e23565b7f44464c3a3a64656c656761746542795369673a207369676e61747572652065788152641c1a5c995960da1b602082015260400192915050565b60006118b4602683611e23565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b60006118fc600283611e2c565b61190160f01b815260020192915050565b600061191a602183611e23565b7f44464c3a3a64656c656761746542795369673a20696e76616c6964206e6f6e638152606560f81b602082015260400192915050565b600061195d603983611e23565b7f44464c3a3a5f7472616e73666572546f6b656e733a2063616e6e6f742074726181527f6e7366657220746f20746865207a65726f206164647265737300000000000000602082015260400192915050565b60006119bc604383611e2c565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201526263742960e81b604082015260430192915050565b6000611a27602b83611e23565b7f44464c3a3a206d696e743a2063616e6e6f74206d696e7420746f20746865207a81526a65726f206164647265737360a81b602082015260400192915050565b6000611a74602083611e23565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572815260200192915050565b6000611aad603b83611e23565b7f44464c3a3a5f7472616e73666572546f6b656e733a2063616e6e6f742074726181527f6e736665722066726f6d20746865207a65726f20616464726573730000000000602082015260400192915050565b6000611b0c602683611e23565b7f44464c3a3a6765745072696f72566f7465733a206e6f742079657420646574658152651c9b5a5b995960d21b602082015260400192915050565b6000611b54603a83611e2c565b7f44656c65676174696f6e28616464726573732064656c6567617465652c75696e81527f74323536206e6f6e63652c75696e7432353620657870697279290000000000006020820152603a0192915050565b6000611bb3602583611e23565b7f44464c3a3a64656c656761746542795369673a20696e76616c6964207369676e815264617475726560d81b602082015260400192915050565b6117ff81611e50565b6117ff81611e59565b6117ff81611e6b565b6117ff81611e5f565b6000611c1c826118ef565b9150611c288285611817565b602082019150611c388284611817565b5060200192915050565b600061041e826119af565b600061041e82611b47565b6020810161041e82846117f6565b6020810161041e8284611805565b6020810161041e828461180e565b60808101611c90828761180e565b611c9d60208301866117f6565b611caa604083018561180e565b611cb7606083018461180e565b95945050505050565b60808101611cce828761180e565b611cdb602083018661180e565b611ce8604083018561180e565b611cb760608301846117f6565b60808101611d03828761180e565b611c9d6020830186611bf6565b602080825281016105938184611828565b6020808252810161041e81611860565b6020808252810161041e816118a7565b6020808252810161041e8161190d565b6020808252810161041e81611950565b6020808252810161041e81611a1a565b6020808252810161041e81611a67565b6020808252810161041e81611aa0565b6020808252810161041e81611aff565b6020808252810161041e81611ba6565b6020810161041e8284611bed565b60408101611dcd8285611bed565b6105936020830184611c08565b6020810161041e8284611bf6565b6020810161041e8284611bff565b6020810161041e8284611c08565b60408101611e128285611bff565b6105936020830184611bff565b5190565b90815260200190565b919050565b600061041e82611e44565b151590565b90565b6001600160a01b031690565b63ffffffff1690565b60ff1690565b6001600160601b031690565b600061041e82611e5f565b60005b83811015611e91578181015183820152602001611e79565b8381111561141b5750506000910152565b601f01601f191690565b611eb581611e31565b81146108fa57600080fd5b611eb581611e41565b611eb581611e50565b611eb581611e5956fe44464c3a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e636544464c3a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f777344464c3a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e636544464c3a3a6d696e743a20616d6f756e742065786365656473203936206269747344464c3a3a5f6d6f7665566f7465733a20766f746520616d6f756e74206f766572666c6f777344464c3a3a5f6d6f7665566f7465733a20766f746520616d6f756e7420756e646572666c6f777344464c3a3a6275726e3a20616d6f756e742065786365656473203936206269747344464c3a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d6265722065786365656473203332206269747344464c3a3a617070726f76653a20616d6f756e742065786365656473203936206269747344464c3a3a6d696e743a206d696e7420616d6f756e7420657863656564732062616c616e636544464c3a3a6275726e3a206275726e20616d6f756e7420657863656564732062616c616e636544464c3a3a7472616e736665723a20616d6f756e7420657863656564732039362062697473a365627a7a723158204424399eca259a71c247eb0b9a830ed329d2342007a83e3a45fb81440d05f4b96c6578706572696d656e74616cf564736f6c63430005110040

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101585760003560e01c8063715018a6116100c3578063b4b5ea571161007c578063b4b5ea57146102cc578063c3cda520146102df578063dd62ed3e146102f2578063e7a324dc14610305578063f1127ed81461030d578063f2fde38b1461032e57610158565b8063715018a61461026e578063782d6fe1146102765780637ecebe00146102965780638da5cb5b146102a957806395d89b41146102b1578063a9059cbb146102b957610158565b806340c10f191161011557806340c10f19146101e057806342966c68146101f5578063587cde1e146102085780635c19a95c146102285780636fcfff451461023b57806370a082311461025b57610158565b806306fdde031461015d578063095ea7b31461017b57806318160ddd1461019b57806320606b70146101b057806323b872dd146101b8578063313ce567146101cb575b600080fd5b610165610341565b6040516101729190611d10565b60405180910390f35b61018e6101893660046116f1565b610365565b6040516101729190611c66565b6101a3610424565b6040516101729190611c74565b6101a361043a565b61018e6101c63660046116a4565b610451565b6101d361059a565b6040516101729190611dda565b6101f36101ee3660046116f1565b61059f565b005b6101f36102033660046117d8565b610770565b61021b610216366004611644565b6108d5565b6040516101729190611c58565b6101f3610236366004611644565b6108f0565b61024e610249366004611644565b6108fd565b6040516101729190611db1565b6101a3610269366004611644565b610915565b6101f3610939565b6102896102843660046116f1565b6109ad565b6040516101729190611df6565b6101a36102a4366004611644565b610bbb565b61021b610bcd565b610165610bdc565b61018e6102c73660046116f1565b610bfb565b6102896102da366004611644565b610c37565b6101f36102ed366004611721565b610ca7565b6101a361030036600461166a565b610e90565b6101a3610ec4565b61032061031b3660046117a8565b610ed0565b604051610172929190611dbf565b6101f361033c366004611644565b610f05565b604051806040016040528060088152602001672232a324a616ab1960c11b81525081565b60008060001983141561037b57506000196103a0565b61039d8360405180606001604052806024815260200161203e60249139610fb0565b90505b3360008181526001602090815260408083206001600160a01b03891680855292529182902080546001600160601b0319166001600160601b03861617905590519091907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610410908590611de8565b60405180910390a360019150505b92915050565b600054600160a01b90046001600160601b031690565b60405161044690611c42565b604051809103902081565b6001600160a01b03831660009081526001602090815260408083203380855290835281842054825160608101909352602480845291936001600160601b039091169285926104a9928892919061203e90830139610fb0565b9050866001600160a01b0316836001600160a01b0316141580156104d657506001600160601b0382811614155b1561058057600061050083836040518060600160405280603c8152602001611edc603c9139610fdf565b6001600160a01b038981166000818152600160209081526040808320948a16808452949091529081902080546001600160601b0319166001600160601b0386161790555192935090917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610576908590611de8565b60405180910390a3505b61058b87878361101e565b600193505050505b9392505050565b601281565b6000546001600160a01b031633146105d25760405162461bcd60e51b81526004016105c990611d71565b60405180910390fd5b6001600160a01b0382166105f85760405162461bcd60e51b81526004016105c990611d61565b600061061c82604051806060016040528060218152602001611f7c60219139610fb0565b9050610673600060149054906101000a90046001600160601b0316826040518060400160405280601f81526020017f44464c3a3a6d696e743a20746f74616c20737570706c792065786365656473008152506111c9565b600080546001600160601b03928316600160a01b026001600160a01b0391821617825585168152600260209081526040918290205482516060810190935260268084526106d09491909116928592909190612062908301396111c9565b6001600160a01b03848116600090815260026020908152604080832080546001600160601b0319166001600160601b039690961695909517909455600390529182205461071f92911683611205565b826001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107639190611de8565b60405180910390a3505050565b600061079482604051806060016040528060218152602001611fea60219139610fb0565b90506107eb600060149054906101000a90046001600160601b0316826040518060400160405280601f81526020017f44464c3a3a6275726e3a20746f74616c20737570706c79206578636565647300815250610fdf565b600080546001600160a01b0316600160a01b6001600160601b039384160217815533815260026020908152604091829020548251606081019093526026808452610845949190911692859290919061208890830139610fdf565b33600090815260026020908152604080832080546001600160601b0319166001600160601b0395909516949094179093556003905290812054610894916001600160a01b039091169083611205565b60405160009033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906108c9908590611de8565b60405180910390a35050565b6003602052600090815260409020546001600160a01b031681565b6108fa3382611397565b50565b60056020526000908152604090205463ffffffff1681565b6001600160a01b03166000908152600260205260409020546001600160601b031690565b6000546001600160a01b031633146109635760405162461bcd60e51b81526004016105c990611d71565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60004382106109ce5760405162461bcd60e51b81526004016105c990611d91565b6001600160a01b03831660009081526005602052604090205463ffffffff16806109fc57600091505061041e565b6001600160a01b038416600090815260046020908152604080832063ffffffff600019860181168552925290912054168310610a78576001600160a01b03841660009081526004602090815260408083206000199490940163ffffffff1683529290522054600160201b90046001600160601b0316905061041e565b6001600160a01b038416600090815260046020908152604080832083805290915290205463ffffffff16831015610ab357600091505061041e565b600060001982015b8163ffffffff168163ffffffff161115610b7657600282820363ffffffff16048103610ae5611601565b506001600160a01b038716600090815260046020908152604080832063ffffffff858116855290835292819020815180830190925254928316808252600160201b9093046001600160601b03169181019190915290871415610b515760200151945061041e9350505050565b805163ffffffff16871115610b6857819350610b6f565b6001820392505b5050610abb565b506001600160a01b038516600090815260046020908152604080832063ffffffff909416835292905220546001600160601b03600160201b9091041691505092915050565b60066020526000908152604090205481565b6000546001600160a01b031690565b6040518060400160405280600381526020016211119360ea1b81525081565b600080610c20836040518060600160405280602581526020016120ae60259139610fb0565b9050610c2d33858361101e565b5060019392505050565b6001600160a01b03811660009081526005602052604081205463ffffffff1680610c62576000610593565b6001600160a01b0383166000908152600460209081526040808320600019850163ffffffff168452909152902054600160201b90046001600160601b03169392505050565b6000604051610cb590611c42565b6040805191829003822082820190915260088252672232a324a616ab1960c11b6020909201919091527e0b9109e5374d9723dd128302f144bf192e2795f94ac4f92b130a620b0662df610d06611421565b30604051602001610d1a9493929190611cc0565b6040516020818303038152906040528051906020012090506000604051610d4090611c4d565b604051908190038120610d5b918a908a908a90602001611c82565b60405160208183030381529060405280519060200120905060008282604051602001610d88929190611c11565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051610dc59493929190611cf5565b6020604051602081039080840390855afa158015610de7573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610e1a5760405162461bcd60e51b81526004016105c990611da1565b6001600160a01b03811660009081526006602052604090208054600181019091558914610e595760405162461bcd60e51b81526004016105c990611d41565b87421115610e795760405162461bcd60e51b81526004016105c990611d21565b610e83818b611397565b505050505b505050505050565b6001600160a01b0391821660009081526001602090815260408083209390941682529190915220546001600160601b031690565b60405161044690611c4d565b600460209081526000928352604080842090915290825290205463ffffffff811690600160201b90046001600160601b031682565b6000546001600160a01b03163314610f2f5760405162461bcd60e51b81526004016105c990611d71565b6001600160a01b038116610f555760405162461bcd60e51b81526004016105c990611d31565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600081600160601b8410610fd75760405162461bcd60e51b81526004016105c99190611d10565b509192915050565b6000836001600160601b0316836001600160601b0316111582906110165760405162461bcd60e51b81526004016105c99190611d10565b505050900390565b6001600160a01b0383166110445760405162461bcd60e51b81526004016105c990611d81565b6001600160a01b03821661106a5760405162461bcd60e51b81526004016105c990611d51565b6001600160a01b0383166000908152600260209081526040918290205482516060810190935260358084526110b5936001600160601b039092169285929190611f4790830139610fdf565b6001600160a01b03848116600090815260026020908152604080832080546001600160601b0319166001600160601b0396871617905592861682529082902054825160608101909352602f80845261111d9491909116928592909190611f18908301396111c9565b6001600160a01b038381166000818152600260205260409081902080546001600160601b0319166001600160601b0395909516949094179093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061118a908590611de8565b60405180910390a36001600160a01b038084166000908152600360205260408082205485841683529120546111c492918216911683611205565b505050565b6000838301826001600160601b0380871690831610156111fc5760405162461bcd60e51b81526004016105c99190611d10565b50949350505050565b816001600160a01b0316836001600160a01b03161415801561123057506000816001600160601b0316115b156111c4576001600160a01b038316156112e8576001600160a01b03831660009081526005602052604081205463ffffffff1690816112705760006112af565b6001600160a01b0385166000908152600460209081526040808320600019860163ffffffff168452909152902054600160201b90046001600160601b03165b905060006112d68285604051806060016040528060278152602001611fc360279139610fdf565b90506112e486848484611425565b5050505b6001600160a01b038216156111c4576001600160a01b03821660009081526005602052604081205463ffffffff169081611323576000611362565b6001600160a01b0384166000908152600460209081526040808320600019860163ffffffff168452909152902054600160201b90046001600160601b03165b905060006113898285604051806060016040528060268152602001611f9d602691396111c9565b9050610e8885848484611425565b6001600160a01b03808316600081815260036020818152604080842080546002845282862054949093528787166001600160a01b031984168117909155905191909516946001600160601b039092169391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a461141b828483611205565b50505050565b4690565b60006114494360405180606001604052806033815260200161200b603391396115da565b905060008463ffffffff1611801561149257506001600160a01b038516600090815260046020908152604080832063ffffffff6000198901811685529252909120548282169116145b156114f1576001600160a01b0385166000908152600460209081526040808320600019880163ffffffff168452909152902080546fffffffffffffffffffffffff000000001916600160201b6001600160601b03851602179055611590565b60408051808201825263ffffffff80841682526001600160601b0380861660208085019182526001600160a01b038b166000818152600483528781208c871682528352878120965187549451909516600160201b026fffffffffffffffffffffffff000000001995871663ffffffff19958616179590951694909417909555938252600590935292909220805460018801909316929091169190911790555b846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72484846040516115cb929190611e04565b60405180910390a25050505050565b600081600160201b8410610fd75760405162461bcd60e51b81526004016105c99190611d10565b604080518082019091526000808252602082015290565b803561041e81611eac565b803561041e81611ec0565b803561041e81611ec9565b803561041e81611ed2565b60006020828403121561165657600080fd5b60006116628484611618565b949350505050565b6000806040838503121561167d57600080fd5b60006116898585611618565b925050602061169a85828601611618565b9150509250929050565b6000806000606084860312156116b957600080fd5b60006116c58686611618565b93505060206116d686828701611618565b92505060406116e786828701611623565b9150509250925092565b6000806040838503121561170457600080fd5b60006117108585611618565b925050602061169a85828601611623565b60008060008060008060c0878903121561173a57600080fd5b60006117468989611618565b965050602061175789828a01611623565b955050604061176889828a01611623565b945050606061177989828a01611639565b935050608061178a89828a01611623565b92505060a061179b89828a01611623565b9150509295509295509295565b600080604083850312156117bb57600080fd5b60006117c78585611618565b925050602061169a8582860161162e565b6000602082840312156117ea57600080fd5b60006116628484611623565b6117ff81611e31565b82525050565b6117ff81611e3c565b6117ff81611e41565b6117ff61182382611e41565b611e41565b600061183382611e1f565b61183d8185611e23565b935061184d818560208601611e76565b61185681611ea2565b9093019392505050565b600061186d602583611e23565b7f44464c3a3a64656c656761746542795369673a207369676e61747572652065788152641c1a5c995960da1b602082015260400192915050565b60006118b4602683611e23565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b60006118fc600283611e2c565b61190160f01b815260020192915050565b600061191a602183611e23565b7f44464c3a3a64656c656761746542795369673a20696e76616c6964206e6f6e638152606560f81b602082015260400192915050565b600061195d603983611e23565b7f44464c3a3a5f7472616e73666572546f6b656e733a2063616e6e6f742074726181527f6e7366657220746f20746865207a65726f206164647265737300000000000000602082015260400192915050565b60006119bc604383611e2c565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201526263742960e81b604082015260430192915050565b6000611a27602b83611e23565b7f44464c3a3a206d696e743a2063616e6e6f74206d696e7420746f20746865207a81526a65726f206164647265737360a81b602082015260400192915050565b6000611a74602083611e23565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572815260200192915050565b6000611aad603b83611e23565b7f44464c3a3a5f7472616e73666572546f6b656e733a2063616e6e6f742074726181527f6e736665722066726f6d20746865207a65726f20616464726573730000000000602082015260400192915050565b6000611b0c602683611e23565b7f44464c3a3a6765745072696f72566f7465733a206e6f742079657420646574658152651c9b5a5b995960d21b602082015260400192915050565b6000611b54603a83611e2c565b7f44656c65676174696f6e28616464726573732064656c6567617465652c75696e81527f74323536206e6f6e63652c75696e7432353620657870697279290000000000006020820152603a0192915050565b6000611bb3602583611e23565b7f44464c3a3a64656c656761746542795369673a20696e76616c6964207369676e815264617475726560d81b602082015260400192915050565b6117ff81611e50565b6117ff81611e59565b6117ff81611e6b565b6117ff81611e5f565b6000611c1c826118ef565b9150611c288285611817565b602082019150611c388284611817565b5060200192915050565b600061041e826119af565b600061041e82611b47565b6020810161041e82846117f6565b6020810161041e8284611805565b6020810161041e828461180e565b60808101611c90828761180e565b611c9d60208301866117f6565b611caa604083018561180e565b611cb7606083018461180e565b95945050505050565b60808101611cce828761180e565b611cdb602083018661180e565b611ce8604083018561180e565b611cb760608301846117f6565b60808101611d03828761180e565b611c9d6020830186611bf6565b602080825281016105938184611828565b6020808252810161041e81611860565b6020808252810161041e816118a7565b6020808252810161041e8161190d565b6020808252810161041e81611950565b6020808252810161041e81611a1a565b6020808252810161041e81611a67565b6020808252810161041e81611aa0565b6020808252810161041e81611aff565b6020808252810161041e81611ba6565b6020810161041e8284611bed565b60408101611dcd8285611bed565b6105936020830184611c08565b6020810161041e8284611bf6565b6020810161041e8284611bff565b6020810161041e8284611c08565b60408101611e128285611bff565b6105936020830184611bff565b5190565b90815260200190565b919050565b600061041e82611e44565b151590565b90565b6001600160a01b031690565b63ffffffff1690565b60ff1690565b6001600160601b031690565b600061041e82611e5f565b60005b83811015611e91578181015183820152602001611e79565b8381111561141b5750506000910152565b601f01601f191690565b611eb581611e31565b81146108fa57600080fd5b611eb581611e41565b611eb581611e50565b611eb581611e5956fe44464c3a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e636544464c3a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f777344464c3a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e636544464c3a3a6d696e743a20616d6f756e742065786365656473203936206269747344464c3a3a5f6d6f7665566f7465733a20766f746520616d6f756e74206f766572666c6f777344464c3a3a5f6d6f7665566f7465733a20766f746520616d6f756e7420756e646572666c6f777344464c3a3a6275726e3a20616d6f756e742065786365656473203936206269747344464c3a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d6265722065786365656473203332206269747344464c3a3a617070726f76653a20616d6f756e742065786365656473203936206269747344464c3a3a6d696e743a206d696e7420616d6f756e7420657863656564732062616c616e636544464c3a3a6275726e3a206275726e20616d6f756e7420657863656564732062616c616e636544464c3a3a7472616e736665723a20616d6f756e7420657863656564732039362062697473a365627a7a723158204424399eca259a71c247eb0b9a830ed329d2342007a83e3a45fb81440d05f4b96c6578706572696d656e74616cf564736f6c63430005110040

Deployed Bytecode Sourcemap

4928:14365:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4928:14365:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5025:40;;;:::i;:::-;;;;;;;;;;;;;;;;9871:418;;;;;;;;;:::i;:::-;;;;;;;;10405:90;;;:::i;:::-;;;;;;;;6218:122;;;:::i;11617:670::-;;;;;;;;;:::i;5226:35::-;;;:::i;:::-;;;;;;;;7801:554;;;;;;;;;:::i;:::-;;8500:453;;;;;;;;;:::i;5668:45::-;;;;;;;;;:::i;:::-;;;;;;;;12435:102;;;;;;;;;:::i;6096:49::-;;;;;;;;;:::i;:::-;;;;;;;;10698:108;;;;;;;;;:::i;4358:140::-;;;:::i;14623:1217::-;;;;;;;;;:::i;:::-;;;;;;;;6632:39;;;;;;;;;:::i;3718:79::-;;;:::i;5126:37::-;;;:::i;11070:237::-;;;;;;;;;:::i;13970:222::-;;;;;;;;;:::i;12971:798::-;;;;;;;;;:::i;9257:136::-;;;;;;;;;:::i;6434:117::-;;;:::i;5957:70::-;;;;;;;;;:::i;:::-;;;;;;;;;4653:236;;;;;;;;;:::i;5025:40::-;;;;;;;;;;;;;;-1:-1:-1;;;5025:40:0;;;;:::o;9871:418::-;9939:4;9956:13;-1:-1:-1;;9984:9:0;:21;9980:172;;;-1:-1:-1;;;9980:172:0;;;10083:57;10090:9;10083:57;;;;;;;;;;;;;;;;;:6;:57::i;:::-;10074:66;;9980:172;10175:10;10164:22;;;;:10;:22;;;;;;;;-1:-1:-1;;;;;10164:31:0;;;;;;;;;;;:40;;-1:-1:-1;;;;;;10164:40:0;-1:-1:-1;;;;;10164:40:0;;;;;10222:37;;10164:31;;10175:10;10222:37;;;;10164:40;;10222:37;;;;;;;;;;10277:4;10270:11;;;9871:418;;;;;:::o;10405:90::-;10451:4;10475:12;-1:-1:-1;;;10475:12:0;;-1:-1:-1;;;;;10475:12:0;;10405:90::o;6218:122::-;6260:80;;;;;;;;;;;;;;6218:122;:::o;11617:670::-;-1:-1:-1;;;;;11781:15:0;;11699:4;11781:15;;;:10;:15;;;;;;;;11734:10;11781:24;;;;;;;;;;11832:57;;;;;;;;;;;;11734:10;;-1:-1:-1;;;;;11781:24:0;;;;11699:4;;11832:57;;11839:9;;11832:57;;;;;;;:6;:57::i;:::-;11816:73;;11917:3;-1:-1:-1;;;;;11906:14:0;:7;-1:-1:-1;;;;;11906:14:0;;;:48;;;;-1:-1:-1;;;;;;11924:30:0;;;;;11906:48;11902:310;;;11971:19;11993:95;11999:16;12017:6;11993:95;;;;;;;;;;;;;;;;;:5;:95::i;:::-;-1:-1:-1;;;;;12103:15:0;;;;;;;:10;:15;;;;;;;;:24;;;;;;;;;;;;;;:39;;-1:-1:-1;;;;;;12103:39:0;-1:-1:-1;;;;;12103:39:0;;;;;12164:36;12103:39;;-1:-1:-1;12103:24:0;;12164:36;;;;12103:39;;12164:36;;;;;;;;;;11902:310;;12224:33;12240:3;12245;12250:6;12224:15;:33::i;:::-;12275:4;12268:11;;;;;11617:670;;;;;;:::o;5226:35::-;5259:2;5226:35;:::o;7801:554::-;3930:6;;-1:-1:-1;;;;;3930:6:0;3940:10;3930:20;3922:65;;;;-1:-1:-1;;;3922:65:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7884:21:0;;7876:77;;;;-1:-1:-1;;;7876:77:0;;;;;;;;;7964:13;7980:54;7987:9;7980:54;;;;;;;;;;;;;;;;;:6;:54::i;:::-;7964:70;;8060:62;8066:12;;;;;;;;;-1:-1:-1;;;;;8066:12:0;8080:6;8060:62;;;;;;;;;;;;;;;;;:5;:62::i;:::-;8045:12;:77;;-1:-1:-1;;;;;8045:77:0;;;-1:-1:-1;;;8045:77:0;-1:-1:-1;;;;;8045:77:0;;;;;;8159:17;;;;:8;:17;;;;;;;;;;8153:74;;;;;;;;;;;;;;8159:17;;;;;8178:6;;8153:74;;;;;;;;:5;:74::i;:::-;-1:-1:-1;;;;;8133:17:0;;;;;;;:8;:17;;;;;;;;:94;;-1:-1:-1;;;;;;8133:94:0;-1:-1:-1;;;;;8133:94:0;;;;;;;;;;;8267:9;:18;;;;;;8240:54;;8133:17;8267:18;8287:6;8240:14;:54::i;:::-;8331:7;-1:-1:-1;;;;;8310:37:0;8327:1;-1:-1:-1;;;;;8310:37:0;;8340:6;8310:37;;;;;;;;;;;;;;;3998:1;7801:554;;:::o;8500:453::-;8550:13;8566:54;8573:9;8566:54;;;;;;;;;;;;;;;;;:6;:54::i;:::-;8550:70;;8646:62;8652:12;;;;;;;;;-1:-1:-1;;;;;8652:12:0;8666:6;8646:62;;;;;;;;;;;;;;;;;:5;:62::i;:::-;8631:12;:77;;-1:-1:-1;;;;;8631:77:0;-1:-1:-1;;;;;;;;8631:77:0;;;;;;;8757:10;8748:20;;:8;:20;;;;;;;;;;8742:77;;;;;;;;;;;;;;8748:20;;;;;8770:6;;8742:77;;;;;;;;:5;:77::i;:::-;8728:10;8719:20;;;;:8;:20;;;;;;;;:100;;-1:-1:-1;;;;;;8719:100:0;-1:-1:-1;;;;;8719:100:0;;;;;;;;;;;8847:9;:21;;;;;;8832:57;;-1:-1:-1;;;;;8847:21:0;;;;8882:6;8832:14;:57::i;:::-;8905:40;;8934:1;;8914:10;;8905:40;;;;8938:6;;8905:40;;;;;;;;;;8500:453;;:::o;5668:45::-;;;;;;;;;;;;-1:-1:-1;;;;;5668:45:0;;:::o;12435:102::-;12497:32;12507:10;12519:9;12497;:32::i;:::-;12435:102;:::o;6096:49::-;;;;;;;;;;;;;;;:::o;10698:108::-;-1:-1:-1;;;;;10781:17:0;10757:4;10781:17;;;:8;:17;;;;;;-1:-1:-1;;;;;10781:17:0;;10698:108::o;4358:140::-;3930:6;;-1:-1:-1;;;;;3930:6:0;3940:10;3930:20;3922:65;;;;-1:-1:-1;;;3922:65:0;;;;;;;;;4457:1;4441:6;;4420:40;;-1:-1:-1;;;;;4441:6:0;;;;4420:40;;4457:1;;4420:40;4488:1;4471:19;;-1:-1:-1;;;;;;4471:19:0;;;4358:140::o;14623:1217::-;14702:6;14743:12;14729:11;:26;14721:77;;;;-1:-1:-1;;;14721:77:0;;;;;;;;;-1:-1:-1;;;;;14833:23:0;;14811:19;14833:23;;;:14;:23;;;;;;;;14871:17;14867:58;;14912:1;14905:8;;;;;14867:58;-1:-1:-1;;;;;14985:20:0;;;;;;:11;:20;;;;;;;;:38;-1:-1:-1;;15006:16:0;;14985:38;;;;;;;;;:48;;:63;-1:-1:-1;14981:147:0;;-1:-1:-1;;;;;15072:20:0;;;;;;:11;:20;;;;;;;;-1:-1:-1;;15093:16:0;;;;15072:38;;;;;;;;:44;-1:-1:-1;;;15072:44:0;;-1:-1:-1;;;;;15072:44:0;;-1:-1:-1;15065:51:0;;14981:147;-1:-1:-1;;;;;15189:20:0;;;;;;:11;:20;;;;;;;;:23;;;;;;;;:33;:23;:33;:47;-1:-1:-1;15185:88:0;;;15260:1;15253:8;;;;;15185:88;15285:12;-1:-1:-1;;15327:16:0;;15354:428;15369:5;15361:13;;:5;:13;;;15354:428;;;15433:1;15416:13;;;15415:19;;;15407:27;;15476:20;;:::i;:::-;-1:-1:-1;;;;;;15499:20:0;;;;;;:11;:20;;;;;;;;:28;;;;;;;;;;;;;15476:51;;;;;;;;;;;;;;;-1:-1:-1;;;15476:51:0;;;-1:-1:-1;;;;;15476:51:0;;;;;;;;;15546:27;;15542:229;;;15601:8;;;;-1:-1:-1;15594:15:0;;-1:-1:-1;;;;15594:15:0;15542:229;15635:12;;:26;;;-1:-1:-1;15631:140:0;;;15690:6;15682:14;;15631:140;;;15754:1;15745:6;:10;15737:18;;15631:140;15354:428;;;;;-1:-1:-1;;;;;;15799:20:0;;;;;;:11;:20;;;;;;;;:27;;;;;;;;;;:33;-1:-1:-1;;;;;;;;15799:33:0;;;;;-1:-1:-1;;14623:1217:0;;;;:::o;6632:39::-;;;;;;;;;;;;;:::o;3718:79::-;3756:7;3783:6;-1:-1:-1;;;;;3783:6:0;3718:79;:::o;5126:37::-;;;;;;;;;;;;;;-1:-1:-1;;;5126:37:0;;;;:::o;11070:237::-;11135:4;11152:13;11168:58;11175:9;11168:58;;;;;;;;;;;;;;;;;:6;:58::i;:::-;11152:74;;11237:40;11253:10;11265:3;11270:6;11237:15;:40::i;:::-;-1:-1:-1;11295:4:0;;11070:237;-1:-1:-1;;;11070:237:0:o;13970:222::-;-1:-1:-1;;;;;14076:23:0;;14035:6;14076:23;;;:14;:23;;;;;;;;14117:16;:67;;14183:1;14117:67;;;-1:-1:-1;;;;;14136:20:0;;;;;;:11;:20;;;;;;;;-1:-1:-1;;14157:16:0;;14136:38;;;;;;;;;:44;-1:-1:-1;;;14136:44:0;;-1:-1:-1;;;;;14136:44:0;14110:74;13970:222;-1:-1:-1;;;13970:222:0:o;12971:798::-;13087:23;6260:80;;;;;;;;;;;;;;;;13167:4;;;;;;;;;-1:-1:-1;;;13167:4:0;;;;;;;;13151:22;13175:12;:10;:12::i;:::-;13197:4;13123:80;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;13123:80:0;;;13113:91;;;;;;13087:117;;13215:18;6480:71;;;;;;;;;;;;;;;13246:57;;13278:9;;13289:5;;13296:6;;13246:57;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;13246:57:0;;;13236:68;;;;;;13215:89;;13315:14;13371:15;13388:10;13342:57;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;13342:57:0;;;13332:68;;;;;;13315:85;;13411:17;13431:26;13441:6;13449:1;13452;13455;13431:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;13431:26:0;;-1:-1:-1;;13431:26:0;;;-1:-1:-1;;;;;;;13476:23:0;;13468:73;;;;-1:-1:-1;;;13468:73:0;;;;;;;;;-1:-1:-1;;;;;13569:17:0;;;;;;:6;:17;;;;;:19;;;;;;;;13560:28;;13552:74;;;;-1:-1:-1;;;13552:74:0;;;;;;;;;13664:6;13645:15;:25;;13637:75;;;;-1:-1:-1;;;13637:75:0;;;;;;;;;13730:31;13740:9;13751;13730;:31::i;:::-;13723:38;;;;12971:798;;;;;;;:::o;9257:136::-;-1:-1:-1;;;;;9357:19:0;;;9333:4;9357:19;;;:10;:19;;;;;;;;:28;;;;;;;;;;;;-1:-1:-1;;;;;9357:28:0;;9257:136::o;6434:117::-;6480:71;;;;;;5957:70;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5957:70:0;;-1:-1:-1;;;;;5957:70:0;;:::o;4653:236::-;3930:6;;-1:-1:-1;;;;;3930:6:0;3940:10;3930:20;3922:65;;;;-1:-1:-1;;;3922:65:0;;;;;;;;;-1:-1:-1;;;;;4734:22:0;;4726:73;;;;-1:-1:-1;;;4726:73:0;;;;;;;;;4836:6;;;4815:38;;-1:-1:-1;;;;;4815:38:0;;;;4836:6;;;4815:38;;;4864:6;:17;;-1:-1:-1;;;;;;4864:17:0;-1:-1:-1;;;;;4864:17:0;;;;;;;;;;4653:236::o;18599:161::-;18674:6;18712:12;-1:-1:-1;;;18701:9:0;;18693:32;;;;-1:-1:-1;;;18693:32:0;;;;;;;;;;-1:-1:-1;18750:1:0;;18599:161;-1:-1:-1;;18599:161:0:o;18964:165::-;19050:6;19082:1;-1:-1:-1;;;;;19077:6:0;:1;-1:-1:-1;;;;;19077:6:0;;;19085:12;19069:29;;;;;-1:-1:-1;;;19069:29:0;;;;;;;;;;-1:-1:-1;;;19116:5:0;;;18964:165::o;16231:610::-;-1:-1:-1;;;;;16325:17:0;;16317:89;;;;-1:-1:-1;;;16317:89:0;;;;;;;;;-1:-1:-1;;;;;16425:17:0;;16417:87;;;;-1:-1:-1;;;16417:87:0;;;;;;;;;-1:-1:-1;;;;;16539:13:0;;;;;;:8;:13;;;;;;;;;;16533:85;;;;;;;;;;;;;;-1:-1:-1;;;;;16539:13:0;;;;16554:6;;16533:85;;;;;;;:5;:85::i;:::-;-1:-1:-1;;;;;16517:13:0;;;;;;;:8;:13;;;;;;;;:101;;-1:-1:-1;;;;;;16517:101:0;-1:-1:-1;;;;;16517:101:0;;;;;;16651:13;;;;;;;;;;16645:79;;;;;;;;;;;;;;16651:13;;;;;16666:6;;16645:79;;;;;;;;:5;:79::i;:::-;-1:-1:-1;;;;;16629:13:0;;;;;;;:8;:13;;;;;;;:95;;-1:-1:-1;;;;;;16629:95:0;-1:-1:-1;;;;;16629:95:0;;;;;;;;;;;16740:26;;;;;;;;;;16759:6;;16740:26;;;;;;;;;;-1:-1:-1;;;;;16794:14:0;;;;;;;:9;:14;;;;;;;16810;;;;;;;;16779:54;;16794:14;;;;16810;16826:6;16779:14;:54::i;:::-;16231:610;;;:::o;18768:188::-;18854:6;18884:5;;;18916:12;-1:-1:-1;;;;;18908:6:0;;;;;;;;18900:29;;;;-1:-1:-1;;;18900:29:0;;;;;;;;;;-1:-1:-1;18947:1:0;18768:188;-1:-1:-1;;;;18768:188:0:o;16849:937::-;16954:6;-1:-1:-1;;;;;16944:16:0;:6;-1:-1:-1;;;;;16944:16:0;;;:30;;;;;16973:1;16964:6;-1:-1:-1;;;;;16964:10:0;;16944:30;16940:839;;;-1:-1:-1;;;;;16995:20:0;;;16991:381;;-1:-1:-1;;;;;17055:22:0;;17036:16;17055:22;;;:14;:22;;;;;;;;;17115:13;:60;;17174:1;17115:60;;;-1:-1:-1;;;;;17131:19:0;;;;;;:11;:19;;;;;;;;-1:-1:-1;;17151:13:0;;17131:34;;;;;;;;;:40;-1:-1:-1;;;17131:40:0;;-1:-1:-1;;;;;17131:40:0;17115:60;17096:79;;17194:16;17213:67;17219:9;17230:6;17213:67;;;;;;;;;;;;;;;;;:5;:67::i;:::-;17194:86;;17299:57;17316:6;17324:9;17335;17346;17299:16;:57::i;:::-;16991:381;;;;-1:-1:-1;;;;;17392:20:0;;;17388:380;;-1:-1:-1;;;;;17452:22:0;;17433:16;17452:22;;;:14;:22;;;;;;;;;17512:13;:60;;17571:1;17512:60;;;-1:-1:-1;;;;;17528:19:0;;;;;;:11;:19;;;;;;;;-1:-1:-1;;17548:13:0;;17528:34;;;;;;;;;:40;-1:-1:-1;;;17528:40:0;;-1:-1:-1;;;;;17528:40:0;17512:60;17493:79;;17591:16;17610:66;17616:9;17627:6;17610:66;;;;;;;;;;;;;;;;;:5;:66::i;:::-;17591:85;;17695:57;17712:6;17720:9;17731;17742;17695:16;:57::i;15848:375::-;-1:-1:-1;;;;;15951:20:0;;;15925:23;15951:20;;;:9;:20;;;;;;;;;;16008:8;:19;;;;;;16038:20;;;;:32;;;-1:-1:-1;;;;;;16038:32:0;;;;;;;16088:54;;15951:20;;;;;-1:-1:-1;;;;;16008:19:0;;;;16038:32;;15951:20;;;16088:54;;15925:23;16088:54;16155:60;16170:15;16187:9;16198:16;16155:14;:60::i;:::-;15848:375;;;;:::o;19137:153::-;19247:9;19137:153;:::o;17794:628::-;17912:18;17933:75;17940:12;17933:75;;;;;;;;;;;;;;;;;:6;:75::i;:::-;17912:96;;18038:1;18023:12;:16;;;:85;;;;-1:-1:-1;;;;;;18043:22:0;;;;;;:11;:22;;;;;;;;:65;-1:-1:-1;;18066:16:0;;18043:40;;;;;;;;;:50;:65;;;:50;;:65;18023:85;18019:329;;;-1:-1:-1;;;;;18123:22:0;;;;;;:11;:22;;;;;;;;-1:-1:-1;;18146:16:0;;18123:40;;;;;;;;;:57;;-1:-1:-1;;18123:57:0;-1:-1:-1;;;;;;;;18123:57:0;;;;;;18019:329;;;18248:33;;;;;;;;;;;;;;-1:-1:-1;;;;;18248:33:0;;;;;;;;;;-1:-1:-1;;;;;18209:22:0;;-1:-1:-1;18209:22:0;;;:11;:22;;;;;:36;;;;;;;;;;:72;;;;;;;;;-1:-1:-1;;;18209:72:0;-1:-1:-1;;18209:72:0;;;-1:-1:-1;;18209:72:0;;;;;;;;;;;;;;;18294:25;;;:14;:25;;;;;;;:44;;18209:72;18322:16;;18294:44;;;;;;;;;;;;;18019:329;18384:9;-1:-1:-1;;;;;18363:51:0;;18395:8;18405;18363:51;;;;;;;;;;;;;;;;17794:628;;;;;:::o;18430:161::-;18505:6;18543:12;-1:-1:-1;;;18532:9:0;;18524:32;;;;-1:-1:-1;;;18524:32:0;;;;;;;;;4928:14365;;;;;;;;;;-1:-1:-1;4928:14365:0;;;;;;;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:130;209:20;;234:33;209:20;234:33;;416:128;482:20;;507:32;482:20;507:32;;551:126;616:20;;641:31;616:20;641:31;;684:241;;788:2;776:9;767:7;763:23;759:32;756:2;;;804:1;801;794:12;756:2;839:1;856:53;901:7;881:9;856:53;;;846:63;750:175;-1:-1;;;;750:175;932:366;;;1053:2;1041:9;1032:7;1028:23;1024:32;1021:2;;;1069:1;1066;1059:12;1021:2;1104:1;1121:53;1166:7;1146:9;1121:53;;;1111:63;;1083:97;1211:2;1229:53;1274:7;1265:6;1254:9;1250:22;1229:53;;;1219:63;;1190:98;1015:283;;;;;;1305:491;;;;1443:2;1431:9;1422:7;1418:23;1414:32;1411:2;;;1459:1;1456;1449:12;1411:2;1494:1;1511:53;1556:7;1536:9;1511:53;;;1501:63;;1473:97;1601:2;1619:53;1664:7;1655:6;1644:9;1640:22;1619:53;;;1609:63;;1580:98;1709:2;1727:53;1772:7;1763:6;1752:9;1748:22;1727:53;;;1717:63;;1688:98;1405:391;;;;;;1803:366;;;1924:2;1912:9;1903:7;1899:23;1895:32;1892:2;;;1940:1;1937;1930:12;1892:2;1975:1;1992:53;2037:7;2017:9;1992:53;;;1982:63;;1954:97;2082:2;2100:53;2145:7;2136:6;2125:9;2121:22;2100:53;;2176:865;;;;;;;2363:3;2351:9;2342:7;2338:23;2334:33;2331:2;;;2380:1;2377;2370:12;2331:2;2415:1;2432:53;2477:7;2457:9;2432:53;;;2422:63;;2394:97;2522:2;2540:53;2585:7;2576:6;2565:9;2561:22;2540:53;;;2530:63;;2501:98;2630:2;2648:53;2693:7;2684:6;2673:9;2669:22;2648:53;;;2638:63;;2609:98;2738:2;2756:51;2799:7;2790:6;2779:9;2775:22;2756:51;;;2746:61;;2717:96;2844:3;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;;;2853:63;;2823:99;2953:3;2972:53;3017:7;3008:6;2997:9;2993:22;2972:53;;;2962:63;;2932:99;2325:716;;;;;;;;;3048:364;;;3168:2;3156:9;3147:7;3143:23;3139:32;3136:2;;;3184:1;3181;3174:12;3136:2;3219:1;3236:53;3281:7;3261:9;3236:53;;;3226:63;;3198:97;3326:2;3344:52;3388:7;3379:6;3368:9;3364:22;3344:52;;3419:241;;3523:2;3511:9;3502:7;3498:23;3494:32;3491:2;;;3539:1;3536;3529:12;3491:2;3574:1;3591:53;3636:7;3616:9;3591:53;;3667:113;3750:24;3768:5;3750:24;;;3745:3;3738:37;3732:48;;;3787:104;3864:21;3879:5;3864:21;;3898:113;3981:24;3999:5;3981:24;;4018:152;4119:45;4139:24;4157:5;4139:24;;;4119:45;;4177:347;;4289:39;4322:5;4289:39;;;4340:71;4404:6;4399:3;4340:71;;;4333:78;;4416:52;4461:6;4456:3;4449:4;4442:5;4438:16;4416:52;;;4489:29;4511:6;4489:29;;;4480:39;;;;4269:255;-1:-1;;;4269:255;4878:374;;5038:67;5102:2;5097:3;5038:67;;;5138:34;5118:55;;-1:-1;;;5202:2;5193:12;;5186:29;5243:2;5234:12;;5024:228;-1:-1;;5024:228;5261:375;;5421:67;5485:2;5480:3;5421:67;;;5521:34;5501:55;;-1:-1;;;5585:2;5576:12;;5569:30;5627:2;5618:12;;5407:229;-1:-1;;5407:229;5645:398;;5823:84;5905:1;5900:3;5823:84;;;-1:-1;;;5920:87;;6035:1;6026:11;;5809:234;-1:-1;;5809:234;6052:370;;6212:67;6276:2;6271:3;6212:67;;;6312:34;6292:55;;-1:-1;;;6376:2;6367:12;;6360:25;6413:2;6404:12;;6198:224;-1:-1;;6198:224;6431:394;;6591:67;6655:2;6650:3;6591:67;;;6691:34;6671:55;;6760:27;6755:2;6746:12;;6739:49;6816:2;6807:12;;6577:248;-1:-1;;6577:248;6834:477;;7012:85;7094:2;7089:3;7012:85;;;7130:34;7110:55;;7199:34;7194:2;7185:12;;7178:56;-1:-1;;;7263:2;7254:12;;7247:27;7302:2;7293:12;;6998:313;-1:-1;;6998:313;7320:380;;7480:67;7544:2;7539:3;7480:67;;;7580:34;7560:55;;-1:-1;;;7644:2;7635:12;;7628:35;7691:2;7682:12;;7466:234;-1:-1;;7466:234;7709:332;;7869:67;7933:2;7928:3;7869:67;;;7969:34;7949:55;;8032:2;8023:12;;7855:186;-1:-1;;7855:186;8050:396;;8210:67;8274:2;8269:3;8210:67;;;8310:34;8290:55;;8379:29;8374:2;8365:12;;8358:51;8437:2;8428:12;;8196:250;-1:-1;;8196:250;8455:375;;8615:67;8679:2;8674:3;8615:67;;;8715:34;8695:55;;-1:-1;;;8779:2;8770:12;;8763:30;8821:2;8812:12;;8601:229;-1:-1;;8601:229;8839:431;;9017:85;9099:2;9094:3;9017:85;;;9135:34;9115:55;;9204:28;9199:2;9190:12;;9183:50;9261:2;9252:12;;9003:267;-1:-1;;9003:267;9279:374;;9439:67;9503:2;9498:3;9439:67;;;9539:34;9519:55;;-1:-1;;;9603:2;9594:12;;9587:29;9644:2;9635:12;;9425:228;-1:-1;;9425:228;9781:110;9862:23;9879:5;9862:23;;9898:107;9977:22;9993:5;9977:22;;10012:124;10094:36;10124:5;10094:36;;10143:110;10224:23;10241:5;10224:23;;10260:650;;10515:148;10659:3;10515:148;;;10508:155;;10674:75;10745:3;10736:6;10674:75;;;10771:2;10766:3;10762:12;10755:19;;10785:75;10856:3;10847:6;10785:75;;;-1:-1;10882:2;10873:12;;10496:414;-1:-1;;10496:414;10917:372;;11116:148;11260:3;11116:148;;11296:372;;11495:148;11639:3;11495:148;;11675:213;11793:2;11778:18;;11807:71;11782:9;11851:6;11807:71;;11895:201;12007:2;11992:18;;12021:65;11996:9;12059:6;12021:65;;12103:213;12221:2;12206:18;;12235:71;12210:9;12279:6;12235:71;;12323:547;12525:3;12510:19;;12540:71;12514:9;12584:6;12540:71;;;12622:72;12690:2;12679:9;12675:18;12666:6;12622:72;;;12705;12773:2;12762:9;12758:18;12749:6;12705:72;;;12788;12856:2;12845:9;12841:18;12832:6;12788:72;;;12496:374;;;;;;;;12877:547;13079:3;13064:19;;13094:71;13068:9;13138:6;13094:71;;;13176:72;13244:2;13233:9;13229:18;13220:6;13176:72;;;13259;13327:2;13316:9;13312:18;13303:6;13259:72;;;13342;13410:2;13399:9;13395:18;13386:6;13342:72;;13431:539;13629:3;13614:19;;13644:71;13618:9;13688:6;13644:71;;;13726:68;13790:2;13779:9;13775:18;13766:6;13726:68;;13977:293;14111:2;14125:47;;;14096:18;;14186:74;14096:18;14246:6;14186:74;;14585:407;14776:2;14790:47;;;14761:18;;14851:131;14761:18;14851:131;;14999:407;15190:2;15204:47;;;15175:18;;15265:131;15175:18;15265:131;;15413:407;15604:2;15618:47;;;15589:18;;15679:131;15589:18;15679:131;;15827:407;16018:2;16032:47;;;16003:18;;16093:131;16003:18;16093:131;;16241:407;16432:2;16446:47;;;16417:18;;16507:131;16417:18;16507:131;;16655:407;16846:2;16860:47;;;16831:18;;16921:131;16831:18;16921:131;;17069:407;17260:2;17274:47;;;17245:18;;17335:131;17245:18;17335:131;;17483:407;17674:2;17688:47;;;17659:18;;17749:131;17659:18;17749:131;;17897:407;18088:2;18102:47;;;18073:18;;18163:131;18073:18;18163:131;;18531:209;18647:2;18632:18;;18661:69;18636:9;18703:6;18661:69;;18747:316;18889:2;18874:18;;18903:69;18878:9;18945:6;18903:69;;;18983:70;19049:2;19038:9;19034:18;19025:6;18983:70;;19070:205;19184:2;19169:18;;19198:67;19173:9;19238:6;19198:67;;19282:211;19399:2;19384:18;;19413:70;19388:9;19456:6;19413:70;;19500:209;19616:2;19601:18;;19630:69;19605:9;19672:6;19630:69;;19716:320;19860:2;19845:18;;19874:70;19849:9;19917:6;19874:70;;;19955:71;20022:2;20011:9;20007:18;19998:6;19955:71;;20043:118;20127:12;;20098:63;20298:163;20401:19;;;20450:4;20441:14;;20394:67;20470:145;20606:3;20584:31;-1:-1;20584:31;20623:91;;20685:24;20703:5;20685:24;;20721:85;20787:13;20780:21;;20763:43;20813:72;20875:5;20858:27;20892:121;-1:-1;;;;;20954:54;;20937:76;21099:88;21171:10;21160:22;;21143:44;21194:81;21265:4;21254:16;;21237:38;21282:104;-1:-1;;;;;21343:38;;21326:60;21393:106;;21471:23;21488:5;21471:23;;21507:268;21572:1;21579:101;21593:6;21590:1;21587:13;21579:101;;;21660:11;;;21654:18;21641:11;;;21634:39;21615:2;21608:10;21579:101;;;21695:6;21692:1;21689:13;21686:2;;;-1:-1;;21760:1;21742:16;;21735:27;21556:219;21864:97;21952:2;21932:14;-1:-1;;21928:28;;21912:49;21969:117;22038:24;22056:5;22038:24;;;22031:5;22028:35;22018:2;;22077:1;22074;22067:12;22093:117;22162:24;22180:5;22162:24;;22341:115;22409:23;22426:5;22409:23;;22463:113;22530:22;22546:5;22530:22;

Swarm Source

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