ETH Price: $3,350.34 (-0.93%)

Token

Uniswap (UNI)
 

Overview

Max Total Supply

1,000,000,000 UNI

Holders

357,189 ( -0.003%)

Market

Price

$13.09 @ 0.003907 ETH (-1.46%)

Onchain Market Cap

$13,090,000,000.00

Circulating Supply Market Cap

$7,861,491,086.00

Other Info

Token Contract (WITH 18 Decimals)

Balance
0 UNI

Value
$0.00
0x09588b020b3e9a2849a2d5ebab32a7ba08a78210
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

UNI token served as governance token for Uniswap protocol with 1 billion UNI have been minted at genesis. 60% of the UNI genesis supply is allocated to Uniswap community members and remaining for team, investors and advisors.

Market

Volume (24H):$257,470,435.00
Market Capitalization:$7,861,491,086.00
Circulating Supply:600,483,074.00 UNI
Market Data Source: Coinmarketcap

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Uni

Compiler Version
v0.5.16+commit.9c3226ce

Optimization Enabled:
Yes with 999999 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-09-16
*/

/**
 *Submitted for verification at Etherscan.io on 2020-09-15
*/

pragma solidity ^0.5.16;
pragma experimental ABIEncoderV2;

// From https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/math/Math.sol
// Subject to the MIT license.

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the addition of two unsigned integers, reverting with custom message on overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, errorMessage);

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on underflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot underflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction underflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on underflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot underflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

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

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, errorMessage);

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers.
     * Reverts on division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers.
     * Reverts with custom message on division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

contract Uni {
    /// @notice EIP-20 token name for this token
    string public constant name = "Uniswap";

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

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

    /// @notice Total number of tokens in circulation
    uint public totalSupply = 1_000_000_000e18; // 1 billion Uni

    /// @notice Address which may mint new tokens
    address public minter;

    /// @notice The timestamp after which minting may occur
    uint public mintingAllowedAfter;

    /// @notice Minimum time between mints
    uint32 public constant minimumTimeBetweenMints = 1 days * 365;

    /// @notice Cap on the percentage of totalSupply that can be minted at each mint
    uint8 public constant mintCap = 2;

    /// @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 The EIP-712 typehash for the permit struct used by the contract
    bytes32 public constant PERMIT_TYPEHASH = keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)");

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

    /// @notice An event thats emitted when the minter address is changed
    event MinterChanged(address minter, address newMinter);

    /// @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 Uni token
     * @param account The initial account to grant all the tokens
     * @param minter_ The account with minting ability
     * @param mintingAllowedAfter_ The timestamp after which minting may occur
     */
    constructor(address account, address minter_, uint mintingAllowedAfter_) public {
        require(mintingAllowedAfter_ >= block.timestamp, "Uni::constructor: minting can only begin after deployment");

        balances[account] = uint96(totalSupply);
        emit Transfer(address(0), account, totalSupply);
        minter = minter_;
        emit MinterChanged(address(0), minter);
        mintingAllowedAfter = mintingAllowedAfter_;
    }

    /**
     * @notice Change the minter address
     * @param minter_ The address of the new minter
     */
    function setMinter(address minter_) external {
        require(msg.sender == minter, "Uni::setMinter: only the minter can change the minter address");
        emit MinterChanged(minter, minter_);
        minter = minter_;
    }

    /**
     * @notice Mint new tokens
     * @param dst The address of the destination account
     * @param rawAmount The number of tokens to be minted
     */
    function mint(address dst, uint rawAmount) external {
        require(msg.sender == minter, "Uni::mint: only the minter can mint");
        require(block.timestamp >= mintingAllowedAfter, "Uni::mint: minting not allowed yet");
        require(dst != address(0), "Uni::mint: cannot transfer to the zero address");

        // record the mint
        mintingAllowedAfter = SafeMath.add(block.timestamp, minimumTimeBetweenMints);

        // mint the amount
        uint96 amount = safe96(rawAmount, "Uni::mint: amount exceeds 96 bits");
        require(amount <= SafeMath.div(SafeMath.mul(totalSupply, mintCap), 100), "Uni::mint: exceeded mint cap");
        totalSupply = safe96(SafeMath.add(totalSupply, amount), "Uni::mint: totalSupply exceeds 96 bits");

        // transfer the amount to the recipient
        balances[dst] = add96(balances[dst], amount, "Uni::mint: transfer amount overflows");
        emit Transfer(address(0), dst, amount);

        // move delegates
        _moveDelegates(address(0), delegates[dst], 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, "Uni::approve: amount exceeds 96 bits");
        }

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

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

    /**
     * @notice Triggers an approval from owner to spends
     * @param owner The address to approve from
     * @param spender The address to be approved
     * @param rawAmount The number of tokens that are approved (2^256-1 means infinite)
     * @param deadline 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 permit(address owner, address spender, uint rawAmount, uint deadline, uint8 v, bytes32 r, bytes32 s) external {
        uint96 amount;
        if (rawAmount == uint(-1)) {
            amount = uint96(-1);
        } else {
            amount = safe96(rawAmount, "Uni::permit: amount exceeds 96 bits");
        }

        bytes32 domainSeparator = keccak256(abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(name)), getChainId(), address(this)));
        bytes32 structHash = keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, rawAmount, nonces[owner]++, deadline));
        bytes32 digest = keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash));
        address signatory = ecrecover(digest, v, r, s);
        require(signatory != address(0), "Uni::permit: invalid signature");
        require(signatory == owner, "Uni::permit: unauthorized");
        require(now <= deadline, "Uni::permit: signature expired");

        allowances[owner][spender] = amount;

        emit Approval(owner, spender, amount);
    }

    /**
     * @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, "Uni::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, "Uni::approve: amount exceeds 96 bits");

        if (spender != src && spenderAllowance != uint96(-1)) {
            uint96 newAllowance = sub96(spenderAllowance, amount, "Uni::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), "Uni::delegateBySig: invalid signature");
        require(nonce == nonces[signatory]++, "Uni::delegateBySig: invalid nonce");
        require(now <= expiry, "Uni::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, "Uni::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), "Uni::_transferTokens: cannot transfer from the zero address");
        require(dst != address(0), "Uni::_transferTokens: cannot transfer to the zero address");

        balances[src] = sub96(balances[src], amount, "Uni::_transferTokens: transfer amount exceeds balance");
        balances[dst] = add96(balances[dst], amount, "Uni::_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, "Uni::_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, "Uni::_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, "Uni::_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":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"minter_","type":"address"},{"internalType":"uint256","name":"mintingAllowedAfter_","type":"uint256"}],"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":false,"internalType":"address","name":"minter","type":"address"},{"indexed":false,"internalType":"address","name":"newMinter","type":"address"}],"name":"MinterChanged","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":[],"name":"PERMIT_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":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":true,"inputs":[],"name":"minimumTimeBetweenMints","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"mint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"mintCap","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minter","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"mintingAllowedAfter","outputs":[{"internalType":"uint256","name":"","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":[{"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":false,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"minter_","type":"address"}],"name":"setMinter","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"}]

60806040526b033b2e3c9fd0803ce80000006000553480156200002157600080fd5b506040516200341338038062003413833981016040819052620000449162000171565b42811015620000705760405162461bcd60e51b8152600401620000679062000273565b60405180910390fd5b600080546001600160a01b0385168083526004602052604080842080546001600160601b0319166001600160601b0390941693909317909255825491519092917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91620000de919062000285565b60405180910390a3600180546001600160a01b0319166001600160a01b0384811691909117918290556040517f3b0007eb941cf645526cbb3a4fdaecda9d28ce4843167d9263b536a1f1edc0f6926200013d926000929116906200024d565b60405180910390a160025550620002ec9050565b80516200015e81620002c7565b92915050565b80516200015e81620002e1565b6000806000606084860312156200018757600080fd5b600062000195868662000151565b9350506020620001a88682870162000151565b9250506040620001bb8682870162000164565b9150509250925092565b620001d081620002b3565b82525050565b620001d0816200029e565b6000620001f060398362000295565b7f556e693a3a636f6e7374727563746f723a206d696e74696e672063616e206f6e81527f6c7920626567696e206166746572206465706c6f796d656e7400000000000000602082015260400192915050565b620001d081620002b0565b604081016200025d8285620001c5565b6200026c6020830184620001d6565b9392505050565b602080825281016200015e81620001e1565b602081016200015e828462000242565b90815260200190565b60006001600160a01b0382166200015e565b90565b60006200015e8260006200015e826200029e565b620002d2816200029e565b8114620002de57600080fd5b50565b620002d281620002b0565b61311780620002fc6000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80636fcfff45116100f9578063b4b5ea5711610097578063dd62ed3e11610071578063dd62ed3e1461036b578063e7a324dc1461037e578063f1127ed814610386578063fca3b5aa146103a7576101b9565b8063b4b5ea5714610332578063c3cda52014610345578063d505accf14610358576101b9565b8063782d6fe1116100d3578063782d6fe1146102e45780637ecebe001461030457806395d89b4114610317578063a9059cbb1461031f576101b9565b80636fcfff45146102b657806370a08231146102c957806376c71ca1146102dc576101b9565b806330adf81f1161016657806340c10f191161014057806340c10f1914610266578063587cde1e1461027b5780635c11d62f1461028e5780635c19a95c146102a3576101b9565b806330adf81f1461024157806330b36cef14610249578063313ce56714610251576101b9565b806318160ddd1161019757806318160ddd1461021157806320606b701461022657806323b872dd1461022e576101b9565b806306fdde03146101be57806307546172146101dc578063095ea7b3146101f1575b600080fd5b6101c66103ba565b6040516101d39190612c72565b60405180910390f35b6101e46103f3565b6040516101d39190612b45565b6102046101ff3660046122aa565b61040f565b6040516101d39190612b6e565b610219610534565b6040516101d39190612b7c565b61021961053a565b61020461023c3660046121c1565b610551565b6102196106f5565b610219610701565b610259610707565b6040516101d39190612dac565b6102796102743660046122aa565b61070c565b005b6101e4610289366004612161565b6109fc565b610296610a24565b6040516101d39190612d83565b6102796102b1366004612161565b610a2c565b6102966102c4366004612161565b610a39565b6102196102d7366004612161565b610a51565b610259610a87565b6102f76102f23660046122aa565b610a8c565b6040516101d39190612dc8565b610219610312366004612161565b610d6e565b6101c6610d80565b61020461032d3660046122aa565b610db9565b6102f7610340366004612161565b610df5565b6102796103533660046122da565b610ea3565b61027961036636600461220e565b611128565b610219610379366004612187565b61155d565b6102196115a3565b610399610394366004612361565b6115af565b6040516101d3929190612d91565b6102796103b5366004612161565b6115ea565b6040518060400160405280600781526020017f556e69737761700000000000000000000000000000000000000000000000000081525081565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83141561046157507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610486565b61048383604051806060016040528060248152602001613082602491396116d6565b90505b33600081815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff891680855292529182902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff861617905590519091907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610520908590612dba565b60405180910390a360019150505b92915050565b60005481565b60405161054690612b2f565b604051809103902081565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602090815260408083203380855290835281842054825160608101909352602480845291936bffffffffffffffffffffffff9091169285926105bb9288929190613082908301396116d6565b90508673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561060757506bffffffffffffffffffffffff82811614155b156106db57600061063183836040518060600160405280603c8152602001612f02603c9139611728565b73ffffffffffffffffffffffffffffffffffffffff8981166000818152600360209081526040808320948a16808452949091529081902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff86161790555192935090917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106d1908590612dba565b60405180910390a3505b6106e687878361178b565b600193505050505b9392505050565b60405161054690612b24565b60025481565b601281565b60015473ffffffffffffffffffffffffffffffffffffffff163314610766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612d13565b60405180910390fd5b6002544210156107a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612cd3565b73ffffffffffffffffffffffffffffffffffffffff82166107ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612cc3565b6107fd426301e133806119f2565b600281905550600061082782604051806060016040528060218152602001613061602191396116d6565b905061084361083c600054600260ff16611a31565b6064611a85565b816bffffffffffffffffffffffff16111561088a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612d03565b6108c56108a7600054836bffffffffffffffffffffffff166119f2565b604051806060016040528060268152602001612f3e602691396116d6565b6bffffffffffffffffffffffff908116600090815573ffffffffffffffffffffffffffffffffffffffff85168152600460209081526040918290205482516060810190935260248084526109299491909116928592909190612ede90830139611ac7565b73ffffffffffffffffffffffffffffffffffffffff841660008181526004602052604080822080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff959095169490941790935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906109bd908590612dba565b60405180910390a373ffffffffffffffffffffffffffffffffffffffff8084166000908152600560205260408120546109f7921683611b22565b505050565b60056020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6301e1338081565b610a363382611d69565b50565b60076020526000908152604090205463ffffffff1681565b73ffffffffffffffffffffffffffffffffffffffff166000908152600460205260409020546bffffffffffffffffffffffff1690565b600281565b6000438210610ac7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612cb3565b73ffffffffffffffffffffffffffffffffffffffff831660009081526007602052604090205463ffffffff1680610b0257600091505061052e565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260066020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff860181168552925290912054168310610bda5773ffffffffffffffffffffffffffffffffffffffff841660009081526006602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9490940163ffffffff168352929052205464010000000090046bffffffffffffffffffffffff16905061052e565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260066020908152604080832083805290915290205463ffffffff16831015610c2257600091505061052e565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82015b8163ffffffff168163ffffffff161115610d1657600282820363ffffffff16048103610c7261211e565b5073ffffffffffffffffffffffffffffffffffffffff8716600090815260066020908152604080832063ffffffff8581168552908352928190208151808301909252549283168082526401000000009093046bffffffffffffffffffffffff169181019190915290871415610cf15760200151945061052e9350505050565b805163ffffffff16871115610d0857819350610d0f565b6001820392505b5050610c48565b5073ffffffffffffffffffffffffffffffffffffffff8516600090815260066020908152604080832063ffffffff909416835292905220546bffffffffffffffffffffffff6401000000009091041691505092915050565b60086020526000908152604090205481565b6040518060400160405280600381526020017f554e49000000000000000000000000000000000000000000000000000000000081525081565b600080610dde8360405180606001604052806025815260200161303c602591396116d6565b9050610deb33858361178b565b5060019392505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526007602052604081205463ffffffff1680610e2d5760006106ee565b73ffffffffffffffffffffffffffffffffffffffff831660009081526006602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff850163ffffffff16845290915290205464010000000090046bffffffffffffffffffffffff169392505050565b6000604051610eb190612b2f565b60408051918290038220828201909152600782527f556e6973776170000000000000000000000000000000000000000000000000006020909201919091527f99c45e8ee5dde061ced9c812089094fbd28a020e7e37f2851198887e5ca64985610f18611e1d565b30604051602001610f2c9493929190612c22565b6040516020818303038152906040528051906020012090506000604051610f5290612b3a565b604051908190038120610f6d918a908a908a90602001612be4565b60405160208183030381529060405280519060200120905060008282604051602001610f9a929190612af3565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051610fd79493929190612c57565b6020604051602081039080840390855afa158015610ff9573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116611071576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612ca3565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260086020526040902080546001810190915589146110d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612d33565b87421115611111576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612c83565b61111b818b611d69565b505050505b505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86141561117957507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61119e565b61119b86604051806060016040528060238152602001612f99602391396116d6565b90505b60006040516111ac90612b2f565b60408051918290038220828201909152600782527f556e6973776170000000000000000000000000000000000000000000000000006020909201919091527f99c45e8ee5dde061ced9c812089094fbd28a020e7e37f2851198887e5ca64985611213611e1d565b306040516020016112279493929190612c22565b604051602081830303815290604052805190602001209050600060405161124d90612b24565b6040805191829003822073ffffffffffffffffffffffffffffffffffffffff8d1660009081526008602090815292902080546001810190915561129c9391928e928e928e9290918e9101612b8a565b604051602081830303815290604052805190602001209050600082826040516020016112c9929190612af3565b6040516020818303038152906040528051906020012090506000600182898989604051600081526020016040526040516113069493929190612c57565b6020604051602081039080840390855afa158015611328573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166113a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612d63565b8b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611405576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612d73565b8842111561143f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612d53565b84600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925876040516115479190612dba565b60405180910390a3505050505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff91821660009081526003602090815260408083209390941682529190915220546bffffffffffffffffffffffff1690565b60405161054690612b3a565b600660209081526000928352604080842090915290825290205463ffffffff81169064010000000090046bffffffffffffffffffffffff1682565b60015473ffffffffffffffffffffffffffffffffffffffff16331461163b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612d23565b6001546040517f3b0007eb941cf645526cbb3a4fdaecda9d28ce4843167d9263b536a1f1edc0f6916116879173ffffffffffffffffffffffffffffffffffffffff909116908490612b53565b60405180910390a1600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000816c010000000000000000000000008410611720576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d9190612c72565b509192915050565b6000836bffffffffffffffffffffffff16836bffffffffffffffffffffffff1611158290611783576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d9190612c72565b505050900390565b73ffffffffffffffffffffffffffffffffffffffff83166117d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612d43565b73ffffffffffffffffffffffffffffffffffffffff8216611825576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612ce3565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260046020908152604091829020548251606081019093526035808452611882936bffffffffffffffffffffffff9092169285929190612f6490830139611728565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260046020908152604080832080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff96871617905592861682529082902054825160608101909352602f80845261191494919091169285929091906130a690830139611ac7565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152600460205260409081902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff95909516949094179093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906119ab908590612dba565b60405180910390a373ffffffffffffffffffffffffffffffffffffffff8084166000908152600560205260408082205485841683529120546109f792918216911683611b22565b6000828201838110156106ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612c93565b600082611a405750600061052e565b82820282848281611a4d57fe5b04146106ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612cf3565b60006106ee83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e21565b6000838301826bffffffffffffffffffffffff8087169083161015611b19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d9190612c72565b50949350505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b6c57506000816bffffffffffffffffffffffff16115b156109f75773ffffffffffffffffffffffffffffffffffffffff831615611c6f5773ffffffffffffffffffffffffffffffffffffffff831660009081526007602052604081205463ffffffff169081611bc6576000611c36565b73ffffffffffffffffffffffffffffffffffffffff851660009081526006602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff860163ffffffff16845290915290205464010000000090046bffffffffffffffffffffffff165b90506000611c5d828560405180606001604052806027815260200161301560279139611728565b9050611c6b86848484611e72565b5050505b73ffffffffffffffffffffffffffffffffffffffff8216156109f75773ffffffffffffffffffffffffffffffffffffffff821660009081526007602052604081205463ffffffff169081611cc4576000611d34565b73ffffffffffffffffffffffffffffffffffffffff841660009081526006602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff860163ffffffff16845290915290205464010000000090046bffffffffffffffffffffffff165b90506000611d5b8285604051806060016040528060268152602001612fbc60269139611ac7565b905061112085848484611e72565b73ffffffffffffffffffffffffffffffffffffffff808316600081815260056020818152604080842080546004845282862054949093528787167fffffffffffffffffffffffff000000000000000000000000000000000000000084168117909155905191909516946bffffffffffffffffffffffff9092169391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4611e17828483611b22565b50505050565b4690565b60008183611e5c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d9190612c72565b506000838581611e6857fe5b0495945050505050565b6000611e9643604051806060016040528060338152602001612fe2603391396120dc565b905060008463ffffffff16118015611f0a575073ffffffffffffffffffffffffffffffffffffffff8516600090815260066020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8901811685529252909120548282169116145b15611fa95773ffffffffffffffffffffffffffffffffffffffff851660009081526006602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff880163ffffffff168452909152902080547fffffffffffffffffffffffffffffffff000000000000000000000000ffffffff166401000000006bffffffffffffffffffffffff851602179055612085565b60408051808201825263ffffffff80841682526bffffffffffffffffffffffff808616602080850191825273ffffffffffffffffffffffffffffffffffffffff8b166000818152600683528781208c871682528352878120965187549451909516640100000000027fffffffffffffffffffffffffffffffff000000000000000000000000ffffffff9587167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000958616179590951694909417909555938252600790935292909220805460018801909316929091169190911790555b8473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72484846040516120cd929190612dd6565b60405180910390a25050505050565b6000816401000000008410611720576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d9190612c72565b604080518082019091526000808252602082015290565b803561052e81612eae565b803561052e81612ec2565b803561052e81612ecb565b803561052e81612ed4565b60006020828403121561217357600080fd5b600061217f8484612135565b949350505050565b6000806040838503121561219a57600080fd5b60006121a68585612135565b92505060206121b785828601612135565b9150509250929050565b6000806000606084860312156121d657600080fd5b60006121e28686612135565b93505060206121f386828701612135565b925050604061220486828701612140565b9150509250925092565b600080600080600080600060e0888a03121561222957600080fd5b60006122358a8a612135565b97505060206122468a828b01612135565b96505060406122578a828b01612140565b95505060606122688a828b01612140565b94505060806122798a828b01612156565b93505060a061228a8a828b01612140565b92505060c061229b8a828b01612140565b91505092959891949750929550565b600080604083850312156122bd57600080fd5b60006122c98585612135565b92505060206121b785828601612140565b60008060008060008060c087890312156122f357600080fd5b60006122ff8989612135565b965050602061231089828a01612140565b955050604061232189828a01612140565b945050606061233289828a01612156565b935050608061234389828a01612140565b92505060a061235489828a01612140565b9150509295509295509295565b6000806040838503121561237457600080fd5b60006123808585612135565b92505060206121b78582860161214b565b61239a81612e03565b82525050565b61239a81612e0e565b61239a81612e13565b61239a6123be82612e13565b612e13565b60006123ce82612df1565b6123d88185612df5565b93506123e8818560208601612e5a565b6123f181612e86565b9093019392505050565b6000612408602583612df5565b7f556e693a3a64656c656761746542795369673a207369676e617475726520657881527f7069726564000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000612467600283612dfe565b7f1901000000000000000000000000000000000000000000000000000000000000815260020192915050565b60006124a0601b83612df5565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b60006124d9602583612df5565b7f556e693a3a64656c656761746542795369673a20696e76616c6964207369676e81527f6174757265000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000612538602683612df5565b7f556e693a3a6765745072696f72566f7465733a206e6f7420796574206465746581527f726d696e65640000000000000000000000000000000000000000000000000000602082015260400192915050565b6000612597602e83612df5565b7f556e693a3a6d696e743a2063616e6e6f74207472616e7366657220746f20746881527f65207a65726f2061646472657373000000000000000000000000000000000000602082015260400192915050565b60006125f6605283612dfe565b7f5065726d69742861646472657373206f776e65722c616464726573732073706581527f6e6465722c75696e743235362076616c75652c75696e74323536206e6f6e636560208201527f2c75696e7432353620646561646c696e65290000000000000000000000000000604082015260520192915050565b600061267b602283612df5565b7f556e693a3a6d696e743a206d696e74696e67206e6f7420616c6c6f776564207981527f6574000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b60006126da604383612dfe565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201527f6374290000000000000000000000000000000000000000000000000000000000604082015260430192915050565b600061275f603983612df5565b7f556e693a3a5f7472616e73666572546f6b656e733a2063616e6e6f742074726181527f6e7366657220746f20746865207a65726f206164647265737300000000000000602082015260400192915050565b60006127be602183612df5565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81527f7700000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b600061281d601c83612df5565b7f556e693a3a6d696e743a206578636565646564206d696e742063617000000000815260200192915050565b6000612856602383612df5565b7f556e693a3a6d696e743a206f6e6c7920746865206d696e7465722063616e206d81527f696e740000000000000000000000000000000000000000000000000000000000602082015260400192915050565b60006128b5603d83612df5565b7f556e693a3a7365744d696e7465723a206f6e6c7920746865206d696e7465722081527f63616e206368616e676520746865206d696e7465722061646472657373000000602082015260400192915050565b6000612914602183612df5565b7f556e693a3a64656c656761746542795369673a20696e76616c6964206e6f6e6381527f6500000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000612973603b83612df5565b7f556e693a3a5f7472616e73666572546f6b656e733a2063616e6e6f742074726181527f6e736665722066726f6d20746865207a65726f20616464726573730000000000602082015260400192915050565b60006129d2601e83612df5565b7f556e693a3a7065726d69743a207369676e617475726520657870697265640000815260200192915050565b6000612a0b603a83612dfe565b7f44656c65676174696f6e28616464726573732064656c6567617465652c75696e81527f74323536206e6f6e63652c75696e7432353620657870697279290000000000006020820152603a0192915050565b6000612a6a601e83612df5565b7f556e693a3a7065726d69743a20696e76616c6964207369676e61747572650000815260200192915050565b6000612aa3601983612df5565b7f556e693a3a7065726d69743a20756e617574686f72697a656400000000000000815260200192915050565b61239a81612e2f565b61239a81612e38565b61239a81612e4f565b61239a81612e3e565b6000612afe8261245a565b9150612b0a82856123b2565b602082019150612b1a82846123b2565b5060200192915050565b600061052e826125e9565b600061052e826126cd565b600061052e826129fe565b6020810161052e8284612391565b60408101612b618285612391565b6106ee6020830184612391565b6020810161052e82846123a0565b6020810161052e82846123a9565b60c08101612b9882896123a9565b612ba56020830188612391565b612bb26040830187612391565b612bbf60608301866123a9565b612bcc60808301856123a9565b612bd960a08301846123a9565b979650505050505050565b60808101612bf282876123a9565b612bff6020830186612391565b612c0c60408301856123a9565b612c1960608301846123a9565b95945050505050565b60808101612c3082876123a9565b612c3d60208301866123a9565b612c4a60408301856123a9565b612c196060830184612391565b60808101612c6582876123a9565b612bff6020830186612ad8565b602080825281016106ee81846123c3565b6020808252810161052e816123fb565b6020808252810161052e81612493565b6020808252810161052e816124cc565b6020808252810161052e8161252b565b6020808252810161052e8161258a565b6020808252810161052e8161266e565b6020808252810161052e81612752565b6020808252810161052e816127b1565b6020808252810161052e81612810565b6020808252810161052e81612849565b6020808252810161052e816128a8565b6020808252810161052e81612907565b6020808252810161052e81612966565b6020808252810161052e816129c5565b6020808252810161052e81612a5d565b6020808252810161052e81612a96565b6020810161052e8284612acf565b60408101612d9f8285612acf565b6106ee6020830184612aea565b6020810161052e8284612ad8565b6020810161052e8284612ae1565b6020810161052e8284612aea565b60408101612de48285612ae1565b6106ee6020830184612ae1565b5190565b90815260200190565b919050565b600061052e82612e16565b151590565b90565b73ffffffffffffffffffffffffffffffffffffffff1690565b63ffffffff1690565b60ff1690565b6bffffffffffffffffffffffff1690565b600061052e82612e3e565b60005b83811015612e75578181015183820152602001612e5d565b83811115611e175750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b612eb781612e03565b8114610a3657600080fd5b612eb781612e13565b612eb781612e2f565b612eb781612e3856fe556e693a3a6d696e743a207472616e7366657220616d6f756e74206f766572666c6f7773556e693a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e6365556e693a3a6d696e743a20746f74616c537570706c7920657863656564732039362062697473556e693a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e6365556e693a3a7065726d69743a20616d6f756e7420657863656564732039362062697473556e693a3a5f6d6f7665566f7465733a20766f746520616d6f756e74206f766572666c6f7773556e693a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473556e693a3a5f6d6f7665566f7465733a20766f746520616d6f756e7420756e646572666c6f7773556e693a3a7472616e736665723a20616d6f756e7420657863656564732039362062697473556e693a3a6d696e743a20616d6f756e7420657863656564732039362062697473556e693a3a617070726f76653a20616d6f756e7420657863656564732039362062697473556e693a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f7773a365627a7a7231582068d42e51eae03f461fed8d2db904ba521e900521e0a2199b4a57d733502ad3da6c6578706572696d656e74616cf564736f6c6343000510004000000000000000000000000041653c7d61609d856f29355e404f310ec4142cfb00000000000000000000000041653c7d61609d856f29355e404f310ec4142cfb0000000000000000000000000000000000000000000000000000000065920080

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101b95760003560e01c80636fcfff45116100f9578063b4b5ea5711610097578063dd62ed3e11610071578063dd62ed3e1461036b578063e7a324dc1461037e578063f1127ed814610386578063fca3b5aa146103a7576101b9565b8063b4b5ea5714610332578063c3cda52014610345578063d505accf14610358576101b9565b8063782d6fe1116100d3578063782d6fe1146102e45780637ecebe001461030457806395d89b4114610317578063a9059cbb1461031f576101b9565b80636fcfff45146102b657806370a08231146102c957806376c71ca1146102dc576101b9565b806330adf81f1161016657806340c10f191161014057806340c10f1914610266578063587cde1e1461027b5780635c11d62f1461028e5780635c19a95c146102a3576101b9565b806330adf81f1461024157806330b36cef14610249578063313ce56714610251576101b9565b806318160ddd1161019757806318160ddd1461021157806320606b701461022657806323b872dd1461022e576101b9565b806306fdde03146101be57806307546172146101dc578063095ea7b3146101f1575b600080fd5b6101c66103ba565b6040516101d39190612c72565b60405180910390f35b6101e46103f3565b6040516101d39190612b45565b6102046101ff3660046122aa565b61040f565b6040516101d39190612b6e565b610219610534565b6040516101d39190612b7c565b61021961053a565b61020461023c3660046121c1565b610551565b6102196106f5565b610219610701565b610259610707565b6040516101d39190612dac565b6102796102743660046122aa565b61070c565b005b6101e4610289366004612161565b6109fc565b610296610a24565b6040516101d39190612d83565b6102796102b1366004612161565b610a2c565b6102966102c4366004612161565b610a39565b6102196102d7366004612161565b610a51565b610259610a87565b6102f76102f23660046122aa565b610a8c565b6040516101d39190612dc8565b610219610312366004612161565b610d6e565b6101c6610d80565b61020461032d3660046122aa565b610db9565b6102f7610340366004612161565b610df5565b6102796103533660046122da565b610ea3565b61027961036636600461220e565b611128565b610219610379366004612187565b61155d565b6102196115a3565b610399610394366004612361565b6115af565b6040516101d3929190612d91565b6102796103b5366004612161565b6115ea565b6040518060400160405280600781526020017f556e69737761700000000000000000000000000000000000000000000000000081525081565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83141561046157507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610486565b61048383604051806060016040528060248152602001613082602491396116d6565b90505b33600081815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff891680855292529182902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff861617905590519091907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610520908590612dba565b60405180910390a360019150505b92915050565b60005481565b60405161054690612b2f565b604051809103902081565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602090815260408083203380855290835281842054825160608101909352602480845291936bffffffffffffffffffffffff9091169285926105bb9288929190613082908301396116d6565b90508673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561060757506bffffffffffffffffffffffff82811614155b156106db57600061063183836040518060600160405280603c8152602001612f02603c9139611728565b73ffffffffffffffffffffffffffffffffffffffff8981166000818152600360209081526040808320948a16808452949091529081902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff86161790555192935090917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106d1908590612dba565b60405180910390a3505b6106e687878361178b565b600193505050505b9392505050565b60405161054690612b24565b60025481565b601281565b60015473ffffffffffffffffffffffffffffffffffffffff163314610766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612d13565b60405180910390fd5b6002544210156107a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612cd3565b73ffffffffffffffffffffffffffffffffffffffff82166107ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612cc3565b6107fd426301e133806119f2565b600281905550600061082782604051806060016040528060218152602001613061602191396116d6565b905061084361083c600054600260ff16611a31565b6064611a85565b816bffffffffffffffffffffffff16111561088a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612d03565b6108c56108a7600054836bffffffffffffffffffffffff166119f2565b604051806060016040528060268152602001612f3e602691396116d6565b6bffffffffffffffffffffffff908116600090815573ffffffffffffffffffffffffffffffffffffffff85168152600460209081526040918290205482516060810190935260248084526109299491909116928592909190612ede90830139611ac7565b73ffffffffffffffffffffffffffffffffffffffff841660008181526004602052604080822080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff959095169490941790935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906109bd908590612dba565b60405180910390a373ffffffffffffffffffffffffffffffffffffffff8084166000908152600560205260408120546109f7921683611b22565b505050565b60056020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6301e1338081565b610a363382611d69565b50565b60076020526000908152604090205463ffffffff1681565b73ffffffffffffffffffffffffffffffffffffffff166000908152600460205260409020546bffffffffffffffffffffffff1690565b600281565b6000438210610ac7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612cb3565b73ffffffffffffffffffffffffffffffffffffffff831660009081526007602052604090205463ffffffff1680610b0257600091505061052e565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260066020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff860181168552925290912054168310610bda5773ffffffffffffffffffffffffffffffffffffffff841660009081526006602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9490940163ffffffff168352929052205464010000000090046bffffffffffffffffffffffff16905061052e565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260066020908152604080832083805290915290205463ffffffff16831015610c2257600091505061052e565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82015b8163ffffffff168163ffffffff161115610d1657600282820363ffffffff16048103610c7261211e565b5073ffffffffffffffffffffffffffffffffffffffff8716600090815260066020908152604080832063ffffffff8581168552908352928190208151808301909252549283168082526401000000009093046bffffffffffffffffffffffff169181019190915290871415610cf15760200151945061052e9350505050565b805163ffffffff16871115610d0857819350610d0f565b6001820392505b5050610c48565b5073ffffffffffffffffffffffffffffffffffffffff8516600090815260066020908152604080832063ffffffff909416835292905220546bffffffffffffffffffffffff6401000000009091041691505092915050565b60086020526000908152604090205481565b6040518060400160405280600381526020017f554e49000000000000000000000000000000000000000000000000000000000081525081565b600080610dde8360405180606001604052806025815260200161303c602591396116d6565b9050610deb33858361178b565b5060019392505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526007602052604081205463ffffffff1680610e2d5760006106ee565b73ffffffffffffffffffffffffffffffffffffffff831660009081526006602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff850163ffffffff16845290915290205464010000000090046bffffffffffffffffffffffff169392505050565b6000604051610eb190612b2f565b60408051918290038220828201909152600782527f556e6973776170000000000000000000000000000000000000000000000000006020909201919091527f99c45e8ee5dde061ced9c812089094fbd28a020e7e37f2851198887e5ca64985610f18611e1d565b30604051602001610f2c9493929190612c22565b6040516020818303038152906040528051906020012090506000604051610f5290612b3a565b604051908190038120610f6d918a908a908a90602001612be4565b60405160208183030381529060405280519060200120905060008282604051602001610f9a929190612af3565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051610fd79493929190612c57565b6020604051602081039080840390855afa158015610ff9573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116611071576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612ca3565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260086020526040902080546001810190915589146110d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612d33565b87421115611111576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612c83565b61111b818b611d69565b505050505b505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86141561117957507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61119e565b61119b86604051806060016040528060238152602001612f99602391396116d6565b90505b60006040516111ac90612b2f565b60408051918290038220828201909152600782527f556e6973776170000000000000000000000000000000000000000000000000006020909201919091527f99c45e8ee5dde061ced9c812089094fbd28a020e7e37f2851198887e5ca64985611213611e1d565b306040516020016112279493929190612c22565b604051602081830303815290604052805190602001209050600060405161124d90612b24565b6040805191829003822073ffffffffffffffffffffffffffffffffffffffff8d1660009081526008602090815292902080546001810190915561129c9391928e928e928e9290918e9101612b8a565b604051602081830303815290604052805190602001209050600082826040516020016112c9929190612af3565b6040516020818303038152906040528051906020012090506000600182898989604051600081526020016040526040516113069493929190612c57565b6020604051602081039080840390855afa158015611328573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166113a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612d63565b8b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611405576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612d73565b8842111561143f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612d53565b84600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925876040516115479190612dba565b60405180910390a3505050505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff91821660009081526003602090815260408083209390941682529190915220546bffffffffffffffffffffffff1690565b60405161054690612b3a565b600660209081526000928352604080842090915290825290205463ffffffff81169064010000000090046bffffffffffffffffffffffff1682565b60015473ffffffffffffffffffffffffffffffffffffffff16331461163b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612d23565b6001546040517f3b0007eb941cf645526cbb3a4fdaecda9d28ce4843167d9263b536a1f1edc0f6916116879173ffffffffffffffffffffffffffffffffffffffff909116908490612b53565b60405180910390a1600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000816c010000000000000000000000008410611720576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d9190612c72565b509192915050565b6000836bffffffffffffffffffffffff16836bffffffffffffffffffffffff1611158290611783576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d9190612c72565b505050900390565b73ffffffffffffffffffffffffffffffffffffffff83166117d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612d43565b73ffffffffffffffffffffffffffffffffffffffff8216611825576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612ce3565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260046020908152604091829020548251606081019093526035808452611882936bffffffffffffffffffffffff9092169285929190612f6490830139611728565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260046020908152604080832080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff96871617905592861682529082902054825160608101909352602f80845261191494919091169285929091906130a690830139611ac7565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152600460205260409081902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff95909516949094179093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906119ab908590612dba565b60405180910390a373ffffffffffffffffffffffffffffffffffffffff8084166000908152600560205260408082205485841683529120546109f792918216911683611b22565b6000828201838110156106ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612c93565b600082611a405750600061052e565b82820282848281611a4d57fe5b04146106ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612cf3565b60006106ee83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e21565b6000838301826bffffffffffffffffffffffff8087169083161015611b19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d9190612c72565b50949350505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b6c57506000816bffffffffffffffffffffffff16115b156109f75773ffffffffffffffffffffffffffffffffffffffff831615611c6f5773ffffffffffffffffffffffffffffffffffffffff831660009081526007602052604081205463ffffffff169081611bc6576000611c36565b73ffffffffffffffffffffffffffffffffffffffff851660009081526006602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff860163ffffffff16845290915290205464010000000090046bffffffffffffffffffffffff165b90506000611c5d828560405180606001604052806027815260200161301560279139611728565b9050611c6b86848484611e72565b5050505b73ffffffffffffffffffffffffffffffffffffffff8216156109f75773ffffffffffffffffffffffffffffffffffffffff821660009081526007602052604081205463ffffffff169081611cc4576000611d34565b73ffffffffffffffffffffffffffffffffffffffff841660009081526006602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff860163ffffffff16845290915290205464010000000090046bffffffffffffffffffffffff165b90506000611d5b8285604051806060016040528060268152602001612fbc60269139611ac7565b905061112085848484611e72565b73ffffffffffffffffffffffffffffffffffffffff808316600081815260056020818152604080842080546004845282862054949093528787167fffffffffffffffffffffffff000000000000000000000000000000000000000084168117909155905191909516946bffffffffffffffffffffffff9092169391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4611e17828483611b22565b50505050565b4690565b60008183611e5c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d9190612c72565b506000838581611e6857fe5b0495945050505050565b6000611e9643604051806060016040528060338152602001612fe2603391396120dc565b905060008463ffffffff16118015611f0a575073ffffffffffffffffffffffffffffffffffffffff8516600090815260066020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8901811685529252909120548282169116145b15611fa95773ffffffffffffffffffffffffffffffffffffffff851660009081526006602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff880163ffffffff168452909152902080547fffffffffffffffffffffffffffffffff000000000000000000000000ffffffff166401000000006bffffffffffffffffffffffff851602179055612085565b60408051808201825263ffffffff80841682526bffffffffffffffffffffffff808616602080850191825273ffffffffffffffffffffffffffffffffffffffff8b166000818152600683528781208c871682528352878120965187549451909516640100000000027fffffffffffffffffffffffffffffffff000000000000000000000000ffffffff9587167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000958616179590951694909417909555938252600790935292909220805460018801909316929091169190911790555b8473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72484846040516120cd929190612dd6565b60405180910390a25050505050565b6000816401000000008410611720576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d9190612c72565b604080518082019091526000808252602082015290565b803561052e81612eae565b803561052e81612ec2565b803561052e81612ecb565b803561052e81612ed4565b60006020828403121561217357600080fd5b600061217f8484612135565b949350505050565b6000806040838503121561219a57600080fd5b60006121a68585612135565b92505060206121b785828601612135565b9150509250929050565b6000806000606084860312156121d657600080fd5b60006121e28686612135565b93505060206121f386828701612135565b925050604061220486828701612140565b9150509250925092565b600080600080600080600060e0888a03121561222957600080fd5b60006122358a8a612135565b97505060206122468a828b01612135565b96505060406122578a828b01612140565b95505060606122688a828b01612140565b94505060806122798a828b01612156565b93505060a061228a8a828b01612140565b92505060c061229b8a828b01612140565b91505092959891949750929550565b600080604083850312156122bd57600080fd5b60006122c98585612135565b92505060206121b785828601612140565b60008060008060008060c087890312156122f357600080fd5b60006122ff8989612135565b965050602061231089828a01612140565b955050604061232189828a01612140565b945050606061233289828a01612156565b935050608061234389828a01612140565b92505060a061235489828a01612140565b9150509295509295509295565b6000806040838503121561237457600080fd5b60006123808585612135565b92505060206121b78582860161214b565b61239a81612e03565b82525050565b61239a81612e0e565b61239a81612e13565b61239a6123be82612e13565b612e13565b60006123ce82612df1565b6123d88185612df5565b93506123e8818560208601612e5a565b6123f181612e86565b9093019392505050565b6000612408602583612df5565b7f556e693a3a64656c656761746542795369673a207369676e617475726520657881527f7069726564000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000612467600283612dfe565b7f1901000000000000000000000000000000000000000000000000000000000000815260020192915050565b60006124a0601b83612df5565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b60006124d9602583612df5565b7f556e693a3a64656c656761746542795369673a20696e76616c6964207369676e81527f6174757265000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000612538602683612df5565b7f556e693a3a6765745072696f72566f7465733a206e6f7420796574206465746581527f726d696e65640000000000000000000000000000000000000000000000000000602082015260400192915050565b6000612597602e83612df5565b7f556e693a3a6d696e743a2063616e6e6f74207472616e7366657220746f20746881527f65207a65726f2061646472657373000000000000000000000000000000000000602082015260400192915050565b60006125f6605283612dfe565b7f5065726d69742861646472657373206f776e65722c616464726573732073706581527f6e6465722c75696e743235362076616c75652c75696e74323536206e6f6e636560208201527f2c75696e7432353620646561646c696e65290000000000000000000000000000604082015260520192915050565b600061267b602283612df5565b7f556e693a3a6d696e743a206d696e74696e67206e6f7420616c6c6f776564207981527f6574000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b60006126da604383612dfe565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201527f6374290000000000000000000000000000000000000000000000000000000000604082015260430192915050565b600061275f603983612df5565b7f556e693a3a5f7472616e73666572546f6b656e733a2063616e6e6f742074726181527f6e7366657220746f20746865207a65726f206164647265737300000000000000602082015260400192915050565b60006127be602183612df5565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81527f7700000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b600061281d601c83612df5565b7f556e693a3a6d696e743a206578636565646564206d696e742063617000000000815260200192915050565b6000612856602383612df5565b7f556e693a3a6d696e743a206f6e6c7920746865206d696e7465722063616e206d81527f696e740000000000000000000000000000000000000000000000000000000000602082015260400192915050565b60006128b5603d83612df5565b7f556e693a3a7365744d696e7465723a206f6e6c7920746865206d696e7465722081527f63616e206368616e676520746865206d696e7465722061646472657373000000602082015260400192915050565b6000612914602183612df5565b7f556e693a3a64656c656761746542795369673a20696e76616c6964206e6f6e6381527f6500000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000612973603b83612df5565b7f556e693a3a5f7472616e73666572546f6b656e733a2063616e6e6f742074726181527f6e736665722066726f6d20746865207a65726f20616464726573730000000000602082015260400192915050565b60006129d2601e83612df5565b7f556e693a3a7065726d69743a207369676e617475726520657870697265640000815260200192915050565b6000612a0b603a83612dfe565b7f44656c65676174696f6e28616464726573732064656c6567617465652c75696e81527f74323536206e6f6e63652c75696e7432353620657870697279290000000000006020820152603a0192915050565b6000612a6a601e83612df5565b7f556e693a3a7065726d69743a20696e76616c6964207369676e61747572650000815260200192915050565b6000612aa3601983612df5565b7f556e693a3a7065726d69743a20756e617574686f72697a656400000000000000815260200192915050565b61239a81612e2f565b61239a81612e38565b61239a81612e4f565b61239a81612e3e565b6000612afe8261245a565b9150612b0a82856123b2565b602082019150612b1a82846123b2565b5060200192915050565b600061052e826125e9565b600061052e826126cd565b600061052e826129fe565b6020810161052e8284612391565b60408101612b618285612391565b6106ee6020830184612391565b6020810161052e82846123a0565b6020810161052e82846123a9565b60c08101612b9882896123a9565b612ba56020830188612391565b612bb26040830187612391565b612bbf60608301866123a9565b612bcc60808301856123a9565b612bd960a08301846123a9565b979650505050505050565b60808101612bf282876123a9565b612bff6020830186612391565b612c0c60408301856123a9565b612c1960608301846123a9565b95945050505050565b60808101612c3082876123a9565b612c3d60208301866123a9565b612c4a60408301856123a9565b612c196060830184612391565b60808101612c6582876123a9565b612bff6020830186612ad8565b602080825281016106ee81846123c3565b6020808252810161052e816123fb565b6020808252810161052e81612493565b6020808252810161052e816124cc565b6020808252810161052e8161252b565b6020808252810161052e8161258a565b6020808252810161052e8161266e565b6020808252810161052e81612752565b6020808252810161052e816127b1565b6020808252810161052e81612810565b6020808252810161052e81612849565b6020808252810161052e816128a8565b6020808252810161052e81612907565b6020808252810161052e81612966565b6020808252810161052e816129c5565b6020808252810161052e81612a5d565b6020808252810161052e81612a96565b6020810161052e8284612acf565b60408101612d9f8285612acf565b6106ee6020830184612aea565b6020810161052e8284612ad8565b6020810161052e8284612ae1565b6020810161052e8284612aea565b60408101612de48285612ae1565b6106ee6020830184612ae1565b5190565b90815260200190565b919050565b600061052e82612e16565b151590565b90565b73ffffffffffffffffffffffffffffffffffffffff1690565b63ffffffff1690565b60ff1690565b6bffffffffffffffffffffffff1690565b600061052e82612e3e565b60005b83811015612e75578181015183820152602001612e5d565b83811115611e175750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b612eb781612e03565b8114610a3657600080fd5b612eb781612e13565b612eb781612e2f565b612eb781612e3856fe556e693a3a6d696e743a207472616e7366657220616d6f756e74206f766572666c6f7773556e693a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e6365556e693a3a6d696e743a20746f74616c537570706c7920657863656564732039362062697473556e693a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e6365556e693a3a7065726d69743a20616d6f756e7420657863656564732039362062697473556e693a3a5f6d6f7665566f7465733a20766f746520616d6f756e74206f766572666c6f7773556e693a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473556e693a3a5f6d6f7665566f7465733a20766f746520616d6f756e7420756e646572666c6f7773556e693a3a7472616e736665723a20616d6f756e7420657863656564732039362062697473556e693a3a6d696e743a20616d6f756e7420657863656564732039362062697473556e693a3a617070726f76653a20616d6f756e7420657863656564732039362062697473556e693a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f7773a365627a7a7231582068d42e51eae03f461fed8d2db904ba521e900521e0a2199b4a57d733502ad3da6c6578706572696d656e74616cf564736f6c63430005100040

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

00000000000000000000000041653c7d61609d856f29355e404f310ec4142cfb00000000000000000000000041653c7d61609d856f29355e404f310ec4142cfb0000000000000000000000000000000000000000000000000000000065920080

-----Decoded View---------------
Arg [0] : account (address): 0x41653c7d61609D856f29355E404F310Ec4142Cfb
Arg [1] : minter_ (address): 0x41653c7d61609D856f29355E404F310Ec4142Cfb
Arg [2] : mintingAllowedAfter_ (uint256): 1704067200

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 00000000000000000000000041653c7d61609d856f29355e404f310ec4142cfb
Arg [1] : 00000000000000000000000041653c7d61609d856f29355e404f310ec4142cfb
Arg [2] : 0000000000000000000000000000000000000000000000000000000065920080


Deployed Bytecode Sourcemap

6706:17152:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6706:17152:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6776:39;;;:::i;:::-;;;;;;;;;;;;;;;;7194:21;;;:::i;:::-;;;;;;;;13114:418;;;;;;;;;:::i;:::-;;;;;;;;7075:42;;;:::i;:::-;;;;;;;;8423:122;;;:::i;16194:670::-;;;;;;;;;:::i;8846:137::-;;;:::i;7285:31::-;;;:::i;6976:35::-;;;:::i;:::-;;;;;;;;11138:1058;;;;;;;;;:::i;:::-;;7873:45;;;;;;;;;:::i;7369:61::-;;;:::i;:::-;;;;;;;;17012:102;;;;;;;;;:::i;8301:49::-;;;;;;;;;:::i;15275:108::-;;;;;;;;;:::i;7525:33::-;;;:::i;19188:1217::-;;;;;;;;;:::i;:::-;;;;;;;;9064:39;;;;;;;;;:::i;6876:37::-;;;:::i;15647:237::-;;;;;;;;;:::i;18535:222::-;;;;;;;;;:::i;17548:786::-;;;;;;;;;:::i;14022:1050::-;;;;;;;;;:::i;12500:136::-;;;;;;;;;:::i;8639:117::-;;;:::i;8162:70::-;;;;;;;;;:::i;:::-;;;;;;;;;10732:231;;;;;;;;;:::i;6776:39::-;;;;;;;;;;;;;;;;;;;:::o;7194:21::-;;;;;;:::o;13114:418::-;13182:4;13199:13;13245:2;13227:9;:21;13223:172;;;-1:-1:-1;13281:2:0;13223:172;;;13326:57;13333:9;13326:57;;;;;;;;;;;;;;;;;:6;:57::i;:::-;13317:66;;13223:172;13418:10;13407:22;;;;:10;:22;;;;;;;;;:31;;;;;;;;;;;:40;;;;;;;;;;13465:37;;13407:31;;13418:10;13465:37;;;;13407:40;;13465:37;;;;;;;;;;13520:4;13513:11;;;13114:418;;;;;:::o;7075:42::-;;;;:::o;8423:122::-;8465:80;;;;;;;;;;;;;;8423:122;:::o;16194:670::-;16358:15;;;16276:4;16358:15;;;:10;:15;;;;;;;;16311:10;16358:24;;;;;;;;;;16409:57;;;;;;;;;;;;16311:10;;16358:24;;;;;16276:4;;16409:57;;16416:9;;16409:57;;;;;;;:6;:57::i;:::-;16393:73;;16494:3;16483:14;;:7;:14;;;;:48;;;;-1:-1:-1;16501:30:0;;;;;;16483:48;16479:310;;;16548:19;16570:95;16576:16;16594:6;16570:95;;;;;;;;;;;;;;;;;:5;:95::i;:::-;16680:15;;;;;;;;:10;:15;;;;;;;;:24;;;;;;;;;;;;;;:39;;;;;;;;;;16741:36;16680:39;;-1:-1:-1;16680:24:0;;16741:36;;;;16680:39;;16741:36;;;;;;;;;;16479:310;;16801:33;16817:3;16822;16827:6;16801:15;:33::i;:::-;16852:4;16845:11;;;;;16194:670;;;;;;:::o;8846:137::-;8888:95;;;;;;7285:31;;;;:::o;6976:35::-;7009:2;6976:35;:::o;11138:1058::-;11223:6;;;;11209:10;:20;11201:68;;;;;;;;;;;;;;;;;;;;;;11307:19;;11288:15;:38;;11280:85;;;;;;;;;;;;;;11384:17;;;11376:76;;;;;;;;;;;;;;11515:54;11528:15;7418:12;11515;:54::i;:::-;11493:19;:76;;;;11610:13;11626:54;11633:9;11626:54;;;;;;;;;;;;;;;;;:6;:54::i;:::-;11610:70;;11709:53;11722:34;11735:11;;7557:1;11722:34;;:12;:34::i;:::-;11758:3;11709:12;:53::i;:::-;11699:6;:63;;;;11691:104;;;;;;;;;;;;;;11820:83;11827:33;11840:11;;11853:6;11827:33;;:12;:33::i;:::-;11820:83;;;;;;;;;;;;;;;;;:6;:83::i;:::-;11806:97;;;;:11;:97;;;11987:13;;;;;:8;:13;;;;;;;;;;11981:68;;;;;;;;;;;;;;11987:13;;;;;12002:6;;11981:68;;;;;;;;:5;:68::i;:::-;11965:13;;;;;;;:8;:13;;;;;;:84;;;;;;;;;;;;;;;;12065:33;;11965:13;;;12065:33;;;;12091:6;;12065:33;;;;;;;;;;12165:14;;;;12161:1;12165:14;;;:9;:14;;;;;;12138:50;;12165:14;12181:6;12138:14;:50::i;:::-;11138:1058;;;:::o;7873:45::-;;;;;;;;;;;;;;;:::o;7369:61::-;7418:12;7369:61;:::o;17012:102::-;17074:32;17084:10;17096:9;17074;:32::i;:::-;17012:102;:::o;8301:49::-;;;;;;;;;;;;;;;:::o;15275:108::-;15358:17;;15334:4;15358:17;;;:8;:17;;;;;;;;;15275:108::o;7525:33::-;7557:1;7525:33;:::o;19188:1217::-;19267:6;19308:12;19294:11;:26;19286:77;;;;;;;;;;;;;;19398:23;;;19376:19;19398:23;;;:14;:23;;;;;;;;19436:17;19432:58;;19477:1;19470:8;;;;;19432:58;19550:20;;;;;;;:11;:20;;;;;;;;:38;19571:16;;;19550:38;;;;;;;;;:48;;:63;-1:-1:-1;19546:147:0;;19637:20;;;;;;;:11;:20;;;;;;;;19658:16;;;;;19637:38;;;;;;;;:44;;;;;;;-1:-1:-1;19630:51:0;;19546:147;19754:20;;;;;;;:11;:20;;;;;;;;:23;;;;;;;;:33;:23;:33;:47;-1:-1:-1;19750:88:0;;;19825:1;19818:8;;;;;19750:88;19850:12;19892:16;;;19919:428;19934:5;19926:13;;:5;:13;;;19919:428;;;19998:1;19981:13;;;19980:19;;;19972:27;;20041:20;;:::i;:::-;-1:-1:-1;20064:20:0;;;;;;;:11;:20;;;;;;;;:28;;;;;;;;;;;;;20041:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20111:27;;20107:229;;;20166:8;;;;-1:-1:-1;20159:15:0;;-1:-1:-1;;;;20159:15:0;20107:229;20200:12;;:26;;;-1:-1:-1;20196:140:0;;;20255:6;20247:14;;20196:140;;;20319:1;20310:6;:10;20302:18;;20196:140;19919:428;;;;;-1:-1:-1;20364:20:0;;;;;;;:11;:20;;;;;;;;:27;;;;;;;;;;:33;;;;;;;;-1:-1:-1;;19188:1217:0;;;;:::o;9064:39::-;;;;;;;;;;;;;:::o;6876:37::-;;;;;;;;;;;;;;;;;;;:::o;15647:237::-;15712:4;15729:13;15745:58;15752:9;15745:58;;;;;;;;;;;;;;;;;:6;:58::i;:::-;15729:74;;15814:40;15830:10;15842:3;15847:6;15814:15;:40::i;:::-;-1:-1:-1;15872:4:0;;15647:237;-1:-1:-1;;;15647:237:0:o;18535:222::-;18641:23;;;18600:6;18641:23;;;:14;:23;;;;;;;;18682:16;:67;;18748:1;18682:67;;;18701:20;;;;;;;:11;:20;;;;;;;;18722:16;;;18701:38;;;;;;;;;:44;;;;;;18675:74;18535:222;-1:-1:-1;;;18535:222:0:o;17548:786::-;17664:23;8465:80;;;;;;;;;;;;;;;;17744:4;;;;;;;;;;;;;;;;;;17728:22;17752:12;:10;:12::i;:::-;17774:4;17700:80;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;17700:80:0;;;17690:91;;;;;;17664:117;;17792:18;8685:71;;;;;;;;;;;;;;;17823:57;;17855:9;;17866:5;;17873:6;;17823:57;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;17823:57:0;;;17813:68;;;;;;17792:89;;17892:14;17948:15;17965:10;17919:57;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;17919:57:0;;;17909:68;;;;;;17892:85;;17988:17;18008:26;18018:6;18026:1;18029;18032;18008:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;18008:26:0;;;;;;-1:-1:-1;;18053:23:0;;;18045:73;;;;;;;;;;;;;;18146:17;;;;;;;:6;:17;;;;;:19;;;;;;;;18137:28;;18129:74;;;;;;;;;;;;;;18229:6;18222:3;:13;;18214:63;;;;;;;;;;;;;;18295:31;18305:9;18316;18295;:31::i;:::-;18288:38;;;;17548:786;;;;;;;:::o;14022:1050::-;14152:13;14198:2;14180:9;:21;14176:171;;;-1:-1:-1;14234:2:0;14176:171;;;14279:56;14286:9;14279:56;;;;;;;;;;;;;;;;;:6;:56::i;:::-;14270:65;;14176:171;14359:23;8465:80;;;;;;;;;;;;;;;;14439:4;;;;;;;;;;;;;;;;;;14423:22;14447:12;:10;:12::i;:::-;14469:4;14395:80;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;14395:80:0;;;14385:91;;;;;;14359:117;;14487:18;8888:95;;;;;;;;;;;;;;;;14573:13;;;;;;;:6;:13;;;;;;;:15;;;;;;;;14518:81;;8888:95;;14546:5;;14553:7;;14562:9;;14573:15;;14590:8;;14518:81;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;14518:81:0;;;14508:92;;;;;;14487:113;;14611:14;14667:15;14684:10;14638:57;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;14638:57:0;;;14628:68;;;;;;14611:85;;14707:17;14727:26;14737:6;14745:1;14748;14751;14727:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;14727:26:0;;;;;;-1:-1:-1;;14772:23:0;;;14764:66;;;;;;;;;;;;;;14862:5;14849:18;;:9;:18;;;14841:56;;;;;;;;;;;;;;14923:8;14916:3;:15;;14908:58;;;;;;;;;;;;;;15008:6;14979:10;:17;14990:5;14979:17;;;;;;;;;;;;;;;:26;14997:7;14979:26;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;15048:7;15032:32;;15041:5;15032:32;;;15057:6;15032:32;;;;;;;;;;;;;;;14022:1050;;;;;;;;;;;;:::o;12500:136::-;12600:19;;;;12576:4;12600:19;;;:10;:19;;;;;;;;:28;;;;;;;;;;;;;;;12500:136::o;8639:117::-;8685:71;;;;;;8162:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10732:231::-;10810:6;;;;10796:10;:20;10788:94;;;;;;;;;;;;;;10912:6;;10898:30;;;;;;10912:6;;;;;10920:7;;10898:30;;;;;;;;;;10939:6;:16;;;;;;;;;;;;;;;10732:231::o;23164:161::-;23239:6;23277:12;23270:5;23266:9;;23258:32;;;;;;;;;;;;;;;-1:-1:-1;23315:1:0;;23164:161;-1:-1:-1;;23164:161:0:o;23529:165::-;23615:6;23647:1;23642:6;;:1;:6;;;;23650:12;23634:29;;;;;;;;;;;;;;;;-1:-1:-1;;;23681:5:0;;;23529:165::o;20796:610::-;20890:17;;;20882:89;;;;;;;;;;;;;;20990:17;;;20982:87;;;;;;;;;;;;;;21104:13;;;;;;;:8;:13;;;;;;;;;;21098:85;;;;;;;;;;;;;;21104:13;;;;;21119:6;;21098:85;;;;;;;:5;:85::i;:::-;21082:13;;;;;;;;:8;:13;;;;;;;;:101;;;;;;;;;;;21216:13;;;;;;;;;;21210:79;;;;;;;;;;;;;;21216:13;;;;;21231:6;;21210:79;;;;;;;;:5;:79::i;:::-;21194:13;;;;;;;;:8;:13;;;;;;;:95;;;;;;;;;;;;;;;;21305:26;;;;;;;;;;21324:6;;21305:26;;;;;;;;;;21359:14;;;;;;;;:9;:14;;;;;;;21375;;;;;;;;21344:54;;21359:14;;;;21375;21391:6;21344:14;:54::i;1092:181::-;1150:7;1182:5;;;1206:6;;;;1198:46;;;;;;;;;;;;;2846:471;2904:7;3149:6;3145:47;;-1:-1:-1;3179:1:0;3172:8;;3145:47;3216:5;;;3220:1;3216;:5;:1;3240:5;;;;;:10;3232:56;;;;;;;;;;;;;4504:132;4562:7;4589:39;4593:1;4596;4589:39;;;;;;;;;;;;;;;;;:3;:39::i;23333:188::-;23419:6;23449:5;;;23481:12;23473:6;;;;;;;;;23465:29;;;;;;;;;;;;;;;-1:-1:-1;23512:1:0;23333:188;-1:-1:-1;;;;23333:188:0:o;21414:937::-;21519:6;21509:16;;:6;:16;;;;:30;;;;;21538:1;21529:6;:10;;;21509:30;21505:839;;;21560:20;;;;21556:381;;21620:22;;;21601:16;21620:22;;;:14;:22;;;;;;;;;21680:13;:60;;21739:1;21680:60;;;21696:19;;;;;;;:11;:19;;;;;;;;21716:13;;;21696:34;;;;;;;;;:40;;;;;;21680:60;21661:79;;21759:16;21778:67;21784:9;21795:6;21778:67;;;;;;;;;;;;;;;;;:5;:67::i;:::-;21759:86;;21864:57;21881:6;21889:9;21900;21911;21864:16;:57::i;:::-;21556:381;;;;21957:20;;;;21953:380;;22017:22;;;21998:16;22017:22;;;:14;:22;;;;;;;;;22077:13;:60;;22136:1;22077:60;;;22093:19;;;;;;;:11;:19;;;;;;;;22113:13;;;22093:34;;;;;;;;;:40;;;;;;22077:60;22058:79;;22156:16;22175:66;22181:9;22192:6;22175:66;;;;;;;;;;;;;;;;;:5;:66::i;:::-;22156:85;;22260:57;22277:6;22285:9;22296;22307;22260:16;:57::i;20413:375::-;20516:20;;;;20490:23;20516:20;;;:9;:20;;;;;;;;;;20573:8;:19;;;;;;20603:20;;;;:32;;;;;;;;;;;20653:54;;20516:20;;;;;20573:19;;;;;20603:32;;20516:20;;;20653:54;;20490:23;20653:54;20720:60;20735:15;20752:9;20763:16;20720:14;:60::i;:::-;20413:375;;;;:::o;23702:153::-;23812:9;23702:153;:::o;5124:345::-;5210:7;5312:12;5305:5;5297:28;;;;;;;;;;;;;;;;5336:9;5352:1;5348;:5;;;;;;;5124:345;-1:-1:-1;;;;;5124:345:0:o;22359:628::-;22477:18;22498:75;22505:12;22498:75;;;;;;;;;;;;;;;;;:6;:75::i;:::-;22477:96;;22603:1;22588:12;:16;;;:85;;;;-1:-1:-1;22608:22:0;;;;;;;:11;:22;;;;;;;;:65;22631:16;;;22608:40;;;;;;;;;:50;:65;;;:50;;:65;22588:85;22584:329;;;22688:22;;;;;;;:11;:22;;;;;;;;22711:16;;;22688:40;;;;;;;;;:57;;;;;;;;;;;;22584:329;;;22813:33;;;;;;;;;;;;;;;;;;;;;;;;;22774:22;;;-1:-1:-1;22774:22:0;;;:11;:22;;;;;:36;;;;;;;;;;:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22859:25;;;:14;:25;;;;;;;:44;;22774:72;22887:16;;22859:44;;;;;;;;;;;;;22584:329;22949:9;22928:51;;;22960:8;22970;22928:51;;;;;;;;;;;;;;;;22359:628;;;;;:::o;22995:161::-;23070:6;23108:12;23101:5;23097:9;;23089:32;;;;;;;;;;;;;;6706:17152;;;;;;;;;;-1:-1:-1;6706:17152: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:991;;;;;;;;2007:3;1995:9;1986:7;1982:23;1978:33;1975:2;;;2024:1;2021;2014:12;1975:2;2059:1;2076:53;2121:7;2101:9;2076:53;;;2066:63;;2038:97;2166:2;2184:53;2229:7;2220:6;2209:9;2205:22;2184:53;;;2174:63;;2145:98;2274:2;2292:53;2337:7;2328:6;2317:9;2313:22;2292:53;;;2282:63;;2253:98;2382:2;2400:53;2445:7;2436:6;2425:9;2421:22;2400:53;;;2390:63;;2361:98;2490:3;2509:51;2552:7;2543:6;2532:9;2528:22;2509:51;;;2499:61;;2469:97;2597:3;2616:53;2661:7;2652:6;2641:9;2637:22;2616:53;;;2606:63;;2576:99;2706:3;2725:53;2770:7;2761:6;2750:9;2746:22;2725:53;;;2715:63;;2685:99;1969:825;;;;;;;;;;;2801:366;;;2922:2;2910:9;2901:7;2897:23;2893:32;2890:2;;;2938:1;2935;2928:12;2890:2;2973:1;2990:53;3035:7;3015:9;2990:53;;;2980:63;;2952:97;3080:2;3098:53;3143:7;3134:6;3123:9;3119:22;3098:53;;3174:865;;;;;;;3361:3;3349:9;3340:7;3336:23;3332:33;3329:2;;;3378:1;3375;3368:12;3329:2;3413:1;3430:53;3475:7;3455:9;3430:53;;;3420:63;;3392:97;3520:2;3538:53;3583:7;3574:6;3563:9;3559:22;3538:53;;;3528:63;;3499:98;3628:2;3646:53;3691:7;3682:6;3671:9;3667:22;3646:53;;;3636:63;;3607:98;3736:2;3754:51;3797:7;3788:6;3777:9;3773:22;3754:51;;;3744:61;;3715:96;3842:3;3861:53;3906:7;3897:6;3886:9;3882:22;3861:53;;;3851:63;;3821:99;3951:3;3970:53;4015:7;4006:6;3995:9;3991:22;3970:53;;;3960:63;;3930:99;3323:716;;;;;;;;;4046:364;;;4166:2;4154:9;4145:7;4141:23;4137:32;4134:2;;;4182:1;4179;4172:12;4134:2;4217:1;4234:53;4279:7;4259:9;4234:53;;;4224:63;;4196:97;4324:2;4342:52;4386:7;4377:6;4366:9;4362:22;4342:52;;4417:113;4500:24;4518:5;4500:24;;;4495:3;4488:37;4482:48;;;4537:104;4614:21;4629:5;4614:21;;4648:113;4731:24;4749:5;4731:24;;4768:152;4869:45;4889:24;4907:5;4889:24;;;4869:45;;4927:347;;5039:39;5072:5;5039:39;;;5090:71;5154:6;5149:3;5090:71;;;5083:78;;5166:52;5211:6;5206:3;5199:4;5192:5;5188:16;5166:52;;;5239:29;5261:6;5239:29;;;5230:39;;;;5019:255;-1:-1;;;5019:255;5628:374;;5788:67;5852:2;5847:3;5788:67;;;5888:34;5868:55;;5957:7;5952:2;5943:12;;5936:29;5993:2;5984:12;;5774:228;-1:-1;;5774:228;6011:398;;6189:84;6271:1;6266:3;6189:84;;;6306:66;6286:87;;6401:1;6392:11;;6175:234;-1:-1;;6175:234;6418:327;;6578:67;6642:2;6637:3;6578:67;;;6678:29;6658:50;;6736:2;6727:12;;6564:181;-1:-1;;6564:181;6754:374;;6914:67;6978:2;6973:3;6914:67;;;7014:34;6994:55;;7083:7;7078:2;7069:12;;7062:29;7119:2;7110:12;;6900:228;-1:-1;;6900:228;7137:375;;7297:67;7361:2;7356:3;7297:67;;;7397:34;7377:55;;7466:8;7461:2;7452:12;;7445:30;7503:2;7494:12;;7283:229;-1:-1;;7283:229;7521:383;;7681:67;7745:2;7740:3;7681:67;;;7781:34;7761:55;;7850:16;7845:2;7836:12;;7829:38;7895:2;7886:12;;7667:237;-1:-1;;7667:237;7913:492;;8091:85;8173:2;8168:3;8091:85;;;8209:34;8189:55;;8278:34;8273:2;8264:12;;8257:56;8347:20;8342:2;8333:12;;8326:42;8396:2;8387:12;;8077:328;-1:-1;;8077:328;8414:371;;8574:67;8638:2;8633:3;8574:67;;;8674:34;8654:55;;8743:4;8738:2;8729:12;;8722:26;8776:2;8767:12;;8560:225;-1:-1;;8560:225;8794:477;;8972:85;9054:2;9049:3;8972:85;;;9090:34;9070:55;;9159:34;9154:2;9145:12;;9138:56;9228:5;9223:2;9214:12;;9207:27;9262:2;9253:12;;8958:313;-1:-1;;8958:313;9280:394;;9440:67;9504:2;9499:3;9440:67;;;9540:34;9520:55;;9609:27;9604:2;9595:12;;9588:49;9665:2;9656:12;;9426:248;-1:-1;;9426:248;9683:370;;9843:67;9907:2;9902:3;9843:67;;;9943:34;9923:55;;10012:3;10007:2;9998:12;;9991:25;10044:2;10035:12;;9829:224;-1:-1;;9829:224;10062:328;;10222:67;10286:2;10281:3;10222:67;;;10322:30;10302:51;;10381:2;10372:12;;10208:182;-1:-1;;10208:182;10399:372;;10559:67;10623:2;10618:3;10559:67;;;10659:34;10639:55;;10728:5;10723:2;10714:12;;10707:27;10762:2;10753:12;;10545:226;-1:-1;;10545:226;10780:398;;10940:67;11004:2;10999:3;10940:67;;;11040:34;11020:55;;11109:31;11104:2;11095:12;;11088:53;11169:2;11160:12;;10926:252;-1:-1;;10926:252;11187:370;;11347:67;11411:2;11406:3;11347:67;;;11447:34;11427:55;;11516:3;11511:2;11502:12;;11495:25;11548:2;11539:12;;11333:224;-1:-1;;11333:224;11566:396;;11726:67;11790:2;11785:3;11726:67;;;11826:34;11806:55;;11895:29;11890:2;11881:12;;11874:51;11953:2;11944:12;;11712:250;-1:-1;;11712:250;11971:330;;12131:67;12195:2;12190:3;12131:67;;;12231:32;12211:53;;12292:2;12283:12;;12117:184;-1:-1;;12117:184;12310:431;;12488:85;12570:2;12565:3;12488:85;;;12606:34;12586:55;;12675:28;12670:2;12661:12;;12654:50;12732:2;12723:12;;12474:267;-1:-1;;12474:267;12750:330;;12910:67;12974:2;12969:3;12910:67;;;13010:32;12990:53;;13071:2;13062:12;;12896:184;-1:-1;;12896:184;13089:325;;13249:67;13313:2;13308:3;13249:67;;;13349:27;13329:48;;13405:2;13396:12;;13235:179;-1:-1;;13235:179;13542:110;13623:23;13640:5;13623:23;;13659:107;13738:22;13754:5;13738:22;;13773:124;13855:36;13885:5;13855:36;;13904:110;13985:23;14002:5;13985:23;;14021:650;;14276:148;14420:3;14276:148;;;14269:155;;14435:75;14506:3;14497:6;14435:75;;;14532:2;14527:3;14523:12;14516:19;;14546:75;14617:3;14608:6;14546:75;;;-1:-1;14643:2;14634:12;;14257:414;-1:-1;;14257:414;14678:372;;14877:148;15021:3;14877:148;;15057:372;;15256:148;15400:3;15256:148;;15436:372;;15635:148;15779:3;15635:148;;15815:213;15933:2;15918:18;;15947:71;15922:9;15991:6;15947:71;;16035:324;16181:2;16166:18;;16195:71;16170:9;16239:6;16195:71;;;16277:72;16345:2;16334:9;16330:18;16321:6;16277:72;;16366:201;16478:2;16463:18;;16492:65;16467:9;16530:6;16492:65;;16574:213;16692:2;16677:18;;16706:71;16681:9;16750:6;16706:71;;16794:771;17052:3;17037:19;;17067:71;17041:9;17111:6;17067:71;;;17149:72;17217:2;17206:9;17202:18;17193:6;17149:72;;;17232;17300:2;17289:9;17285:18;17276:6;17232:72;;;17315;17383:2;17372:9;17368:18;17359:6;17315:72;;;17398:73;17466:3;17455:9;17451:19;17442:6;17398:73;;;17482;17550:3;17539:9;17535:19;17526:6;17482:73;;;17023:542;;;;;;;;;;17572:547;17774:3;17759:19;;17789:71;17763:9;17833:6;17789:71;;;17871:72;17939:2;17928:9;17924:18;17915:6;17871:72;;;17954;18022:2;18011:9;18007:18;17998:6;17954:72;;;18037;18105:2;18094:9;18090:18;18081:6;18037:72;;;17745:374;;;;;;;;18126:547;18328:3;18313:19;;18343:71;18317:9;18387:6;18343:71;;;18425:72;18493:2;18482:9;18478:18;18469:6;18425:72;;;18508;18576:2;18565:9;18561:18;18552:6;18508:72;;;18591;18659:2;18648:9;18644:18;18635:6;18591:72;;18680:539;18878:3;18863:19;;18893:71;18867:9;18937:6;18893:71;;;18975:68;19039:2;19028:9;19024:18;19015:6;18975:68;;19226:293;19360:2;19374:47;;;19345:18;;19435:74;19345:18;19495:6;19435:74;;19834:407;20025:2;20039:47;;;20010:18;;20100:131;20010:18;20100:131;;20248:407;20439:2;20453:47;;;20424:18;;20514:131;20424:18;20514:131;;20662:407;20853:2;20867:47;;;20838:18;;20928:131;20838:18;20928:131;;21076:407;21267:2;21281:47;;;21252:18;;21342:131;21252:18;21342:131;;21490:407;21681:2;21695:47;;;21666:18;;21756:131;21666:18;21756:131;;21904:407;22095:2;22109:47;;;22080:18;;22170:131;22080:18;22170:131;;22318:407;22509:2;22523:47;;;22494:18;;22584:131;22494:18;22584:131;;22732:407;22923:2;22937:47;;;22908:18;;22998:131;22908:18;22998:131;;23146:407;23337:2;23351:47;;;23322:18;;23412:131;23322:18;23412:131;;23560:407;23751:2;23765:47;;;23736:18;;23826:131;23736:18;23826:131;;23974:407;24165:2;24179:47;;;24150:18;;24240:131;24150:18;24240:131;;24388:407;24579:2;24593:47;;;24564:18;;24654:131;24564:18;24654:131;;24802:407;24993:2;25007:47;;;24978:18;;25068:131;24978:18;25068:131;;25216:407;25407:2;25421:47;;;25392:18;;25482:131;25392:18;25482:131;;25630:407;25821:2;25835:47;;;25806:18;;25896:131;25806:18;25896:131;;26044:407;26235:2;26249:47;;;26220:18;;26310:131;26220:18;26310:131;;26678:209;26794:2;26779:18;;26808:69;26783:9;26850:6;26808:69;;26894:316;27036:2;27021:18;;27050:69;27025:9;27092:6;27050:69;;;27130:70;27196:2;27185:9;27181:18;27172:6;27130:70;;27217:205;27331:2;27316:18;;27345:67;27320:9;27385:6;27345:67;;27429:211;27546:2;27531:18;;27560:70;27535:9;27603:6;27560:70;;27647:209;27763:2;27748:18;;27777:69;27752:9;27819:6;27777:69;;27863:320;28007:2;27992:18;;28021:70;27996:9;28064:6;28021:70;;;28102:71;28169:2;28158:9;28154:18;28145:6;28102:71;;28190:118;28274:12;;28245:63;28445:163;28548:19;;;28597:4;28588:14;;28541:67;28617:145;28753:3;28731:31;-1:-1;28731:31;28770:91;;28832:24;28850:5;28832:24;;28868:85;28934:13;28927:21;;28910:43;28960:72;29022:5;29005:27;29039:121;29112:42;29101:54;;29084:76;29246:88;29318:10;29307:22;;29290:44;29341:81;29412:4;29401:16;;29384:38;29429:104;29501:26;29490:38;;29473:60;29540:106;;29618:23;29635:5;29618:23;;29654:268;29719:1;29726:101;29740:6;29737:1;29734:13;29726:101;;;29807:11;;;29801:18;29788:11;;;29781:39;29762:2;29755:10;29726:101;;;29842:6;29839:1;29836:13;29833:2;;;-1:-1;;29907:1;29889:16;;29882:27;29703:219;30011:97;30099:2;30079:14;30095:7;30075:28;;30059:49;30116:117;30185:24;30203:5;30185:24;;;30178:5;30175:35;30165:2;;30224:1;30221;30214:12;30240:117;30309:24;30327:5;30309:24;;30488:115;30556:23;30573:5;30556:23;;30610:113;30677:22;30693:5;30677:22;

Swarm Source

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