ETH Price: $2,523.65 (-0.67%)

Token

Shinji Hirako Inu (SHINJI)
 

Overview

Max Total Supply

10,000,000 SHINJI

Holders

37

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
189,958.471490220971564942 SHINJI

Value
$0.00
0x3313555739ce21c39d69bbc6dad18df9f9cf4899
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:
SHINJI

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-10-06
*/

/*
SHINJI INU ($SHINJI)

Shinji Hirako ⚔️


🏆Tokenomics

💦 2% Liquidity Pool
📑 2% Marketing
💰 1% Giveaways
🔒 LP LOCKED

TG : https://t.me/ShinjiErc20

(2%) Max wallet on launch

*/

pragma solidity 0.8.16;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

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

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


contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping (address => uint256) internal _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The defaut 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");
        _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");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is 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");
        _balances[sender] = senderBalance - amount;
        _balances[recipient] += amount;

        emit Transfer(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:
     *
     * - `to` cannot be the zero address.
     */
    function _Initiate(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: Initiate to the zero address");

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

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(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");
        _balances[account] = accountBalance - amount;
        _totalSupply -= amount;

        emit Transfer(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
     * Initiateing and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be to transferred to `to`.
     * - when `from` is zero, `amount` tokens will be Initiateed 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 { }
}

library Address{
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IFactory{
        function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

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

contract SHINJI is ERC20, Ownable{
    using Address for address payable;
    
    IRouter public router;
    address public pair;
    
    bool private swapping;
    bool public swapEnabled;
    bool public tradingEnabled;

   
    uint256 public swapThreshold = 10_000 * 10e18;
    uint256 public maxTxAmount = 10_000_000 * 10**18;
    uint256 public maxWalletAmount = 200_000 * 10**18;
    
    address public marketingWallet = 0xC50e8c3A32A323E0349081f424096182c2338e50;
    address public devWallet = 0xC50e8c3A32A323E0349081f424096182c2338e50;
    
    struct Taxes {
        uint256 marketing;
        uint256 liquidity; 
        uint256 dev;
    }
    
    Taxes public taxes = Taxes(2,2,1);
    Taxes public sellTaxes = Taxes(2,2,1);
    uint256 public totTax = 5;
    uint256 public totSellTax = 5;
    
    mapping (address => bool) public excludedFromFees;
    mapping (address => bool) private isBot;
    
    modifier inSwap() {
        if (!swapping) {
            swapping = true;
            _;
            swapping = false;
        }
    }
        
    constructor() ERC20("Shinji Hirako Inu", "SHINJI") {
        _Initiate(msg.sender, 1e7 * 10 ** decimals());
        excludedFromFees[msg.sender] = true;

        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory())
            .createPair(address(this), _router.WETH());

        router = _router;
        pair = _pair;
        excludedFromFees[address(this)] = true;
        excludedFromFees[marketingWallet] = true;
        excludedFromFees[devWallet] = true;
    }
    
    function _transfer(address sender, address recipient, uint256 amount) internal override {
        require(amount > 0, "Transfer amount must be greater than zero");
        require(!isBot[sender] && !isBot[recipient], "You can't transfer tokens");
                
        
        if(!excludedFromFees[sender] && !excludedFromFees[recipient] && !swapping){
            require(tradingEnabled, "Trading not active yet");
           
            require(amount <= maxTxAmount, "You are exceeding maxTxAmount");
            if(recipient != pair){
                require(balanceOf(recipient) + amount <= maxWalletAmount, "You are exceeding maxWalletAmount");
            }
        }

        uint256 fee;
        
        //set fee to zero if fees in contract are handled or exempted
        if (swapping || excludedFromFees[sender] || excludedFromFees[recipient]) fee = 0;
        
        //calculate fee
        else{
            if(recipient == pair) fee = amount * totSellTax / 100;
            else fee = amount * totTax / 100;
        }
        
        //send fees if threshold has been reached
        //don't do this on buys, breaks swap
        if (swapEnabled && !swapping && sender != pair && fee > 0) swapForFees();

        super._transfer(sender, recipient, amount - fee);
        if(fee > 0) super._transfer(sender, address(this) ,fee);

    }

    function swapForFees() private inSwap {
        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance >= swapThreshold) {

            // Split the contract balance into halves
            uint256 denominator = totSellTax * 2;
            uint256 tokensToAddLiquidityWith = contractBalance * sellTaxes.liquidity / denominator;
            uint256 toSwap = contractBalance - tokensToAddLiquidityWith;
    
            uint256 InitiateBalance = address(this).balance;
    
            swapTokensForETH(toSwap);
    
            uint256 deltaBalance = address(this).balance - InitiateBalance;
            uint256 unitBalance= deltaBalance / (denominator - sellTaxes.liquidity);
            uint256 ethToAddLiquidityWith = unitBalance * sellTaxes.liquidity;
    
            if(ethToAddLiquidityWith > 0){
                // Add liquidity to Uniswap
                addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith);
            }
    
            uint256 marketingAmt = unitBalance * 2 * sellTaxes.marketing;
            if(marketingAmt > 0){
                payable(marketingWallet).sendValue(marketingAmt);
            }
            
            uint256 devAmt = unitBalance * 2 * sellTaxes.dev;
            if(devAmt > 0){
                payable(devWallet).sendValue(devAmt);
            }
        }
    }


    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        _approve(address(this), address(router), tokenAmount);

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount, 0, path, address(this), block.timestamp);

    }

    function addLiquidity(uint256 tokenAmount, uint256 bnbAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(router), tokenAmount);

        // add the liquidity
        router.addLiquidityETH{value: bnbAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            devWallet,
            block.timestamp
        );
    }

    function setSwapEnabled(bool state) external onlyOwner {
        swapEnabled = state;
    }

    function setSwapThreshold(uint256 new_amount) external onlyOwner {
        swapThreshold = new_amount;
    }

    function enableTrading() external onlyOwner{
        require(!tradingEnabled, "Trading already active");
        tradingEnabled = true;
        swapEnabled = true;
    }

    function setTaxes(uint256 _marketing, uint256 _liquidity, uint256 _dev) external onlyOwner{
        taxes = Taxes(_marketing, _liquidity, _dev);
        totTax = _marketing + _liquidity + _dev;
    }

    function setSellTaxes(uint256 _marketing, uint256 _liquidity, uint256 _dev) external onlyOwner{
        sellTaxes = Taxes(_marketing, _liquidity, _dev);
        totSellTax = _marketing + _liquidity + _dev;
    }
    
    function updateMarketingWallet(address newWallet) external onlyOwner{
        marketingWallet = newWallet;
    }
    
    function updateDevWallet(address newWallet) external onlyOwner{
        devWallet = newWallet;
    }

    function updateRouterAndPair(IRouter _router, address _pair) external onlyOwner{
        router = _router;
        pair = _pair;
    }
    
        function addBots(address[] memory isBot_) public onlyOwner {
        for (uint i = 0; i < isBot_.length; i++) {
            isBot[isBot_[i]] = true;
        }
        }
    function updateExcludedFromFees(address _address, bool state) external onlyOwner {
        excludedFromFees[_address] = state;
    }
    
    function updateMaxTxAmount(uint256 amount) external onlyOwner{
        maxTxAmount = amount * 10**18;
    }

    function delBot(address account) external {
        require (msg.sender == marketingWallet);
        isBot[account] = false;
    }
    
    function updateMaxWalletAmount(uint256 amount) external onlyOwner{
        maxWalletAmount = amount * 10**18;
    }

    function rescueERC20(address tokenAddress, uint256 amount) external onlyOwner{
        IERC20(tokenAddress).transfer(owner(), amount);
    }

    function rescueETH(uint256 weiAmount) external onlyOwner{
        payable(owner()).sendValue(weiAmount);
    }

    function manualSwap(uint256 amount, uint256 devPercentage, uint256 marketingPercentage) external onlyOwner{
        uint256 initBalance = address(this).balance;
        swapTokensForETH(amount);
        uint256 newBalance = address(this).balance - initBalance;
        if(marketingPercentage > 0) payable(marketingWallet).sendValue(newBalance * marketingPercentage / (devPercentage + marketingPercentage));
        if(devPercentage > 0) payable(devWallet).sendValue(newBalance * devPercentage / (devPercentage + marketingPercentage));
    }

    // fallbacks
    receive() external payable {}
    
}

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":"isBot_","type":"address[]"}],"name":"addBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"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":[],"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":[{"internalType":"address","name":"account","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"devPercentage","type":"uint256"},{"internalType":"uint256","name":"marketingPercentage","type":"uint256"}],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","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":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"setSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"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":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IRouter","name":"_router","type":"address"},{"internalType":"address","name":"_pair","type":"address"}],"name":"updateRouterAndPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405269152d02c7e14af68000006008556a084595161401484a000000600955692a5a058fc295ed000000600a5573c50e8c3a32a323e0349081f424096182c2338e50600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c50e8c3a32a323e0349081f424096182c2338e50600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604051806060016040528060028152602001600281526020016001815250600d600082015181600001556020820151816001015560408201518160020155505060405180606001604052806002815260200160028152602001600181525060106000820151816000015560208201518160010155604082015181600201555050600560135560056014553480156200017057600080fd5b506040518060400160405280601181526020017f5368696e6a6920486972616b6f20496e750000000000000000000000000000008152506040518060400160405280600681526020017f5348494e4a4900000000000000000000000000000000000000000000000000008152508160039081620001ee919062000acc565b50806004908162000200919062000acc565b50505062000223620002176200061260201b60201c565b6200061a60201b60201c565b620002623362000238620006e060201b60201c565b600a62000246919062000d43565b6298968062000256919062000d94565b620006e960201b60201c565b6001601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000321573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000347919062000e5f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003af573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003d5919062000e5f565b6040518363ffffffff1660e01b8152600401620003f492919062000ea2565b6020604051808303816000875af115801562000414573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200043a919062000e5f565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160156000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160156000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505062000fe1565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200075b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007529062000f56565b60405180910390fd5b6200076f600083836200084d60201b60201c565b806002600082825462000783919062000f78565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620007da919062000f78565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000841919062000fc4565b60405180910390a35050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620008d457607f821691505b602082108103620008ea57620008e96200088c565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620009547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000915565b62000960868362000915565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620009ad620009a7620009a18462000978565b62000982565b62000978565b9050919050565b6000819050919050565b620009c9836200098c565b620009e1620009d882620009b4565b84845462000922565b825550505050565b600090565b620009f8620009e9565b62000a05818484620009be565b505050565b5b8181101562000a2d5762000a21600082620009ee565b60018101905062000a0b565b5050565b601f82111562000a7c5762000a4681620008f0565b62000a518462000905565b8101602085101562000a61578190505b62000a7962000a708562000905565b83018262000a0a565b50505b505050565b600082821c905092915050565b600062000aa16000198460080262000a81565b1980831691505092915050565b600062000abc838362000a8e565b9150826002028217905092915050565b62000ad78262000852565b67ffffffffffffffff81111562000af35762000af26200085d565b5b62000aff8254620008bb565b62000b0c82828562000a31565b600060209050601f83116001811462000b44576000841562000b2f578287015190505b62000b3b858262000aae565b86555062000bab565b601f19841662000b5486620008f0565b60005b8281101562000b7e5784890151825560018201915060208501945060208101905062000b57565b8683101562000b9e578489015162000b9a601f89168262000a8e565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000c415780860481111562000c195762000c1862000bb3565b5b600185161562000c295780820291505b808102905062000c398562000be2565b945062000bf9565b94509492505050565b60008262000c5c576001905062000d2f565b8162000c6c576000905062000d2f565b816001811462000c85576002811462000c905762000cc6565b600191505062000d2f565b60ff84111562000ca55762000ca462000bb3565b5b8360020a91508482111562000cbf5762000cbe62000bb3565b5b5062000d2f565b5060208310610133831016604e8410600b841016171562000d005782820a90508381111562000cfa5762000cf962000bb3565b5b62000d2f565b62000d0f848484600162000bef565b9250905081840481111562000d295762000d2862000bb3565b5b81810290505b9392505050565b600060ff82169050919050565b600062000d508262000978565b915062000d5d8362000d36565b925062000d8c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000c4a565b905092915050565b600062000da18262000978565b915062000dae8362000978565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000dea5762000de962000bb3565b5b828202905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000e278262000dfa565b9050919050565b62000e398162000e1a565b811462000e4557600080fd5b50565b60008151905062000e598162000e2e565b92915050565b60006020828403121562000e785762000e7762000df5565b5b600062000e888482850162000e48565b91505092915050565b62000e9c8162000e1a565b82525050565b600060408201905062000eb9600083018562000e91565b62000ec8602083018462000e91565b9392505050565b600082825260208201905092915050565b7f45524332303a20496e69746961746520746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600062000f3e60238362000ecf565b915062000f4b8262000ee0565b604082019050919050565b6000602082019050818103600083015262000f718162000f2f565b9050919050565b600062000f858262000978565b915062000f928362000978565b925082820190508082111562000fad5762000fac62000bb3565b5b92915050565b62000fbe8162000978565b82525050565b600060208201905062000fdb600083018462000fb3565b92915050565b6145258062000ff16000396000f3fe60806040526004361061026b5760003560e01c80638c0b5e2211610144578063aacebbe3116100b6578063e01af92c1161007a578063e01af92c1461092b578063e545fd6d14610954578063e9dae5ed1461097d578063f2fde38b146109a6578063f66895a3146109cf578063f887ea40146109fc57610272565b8063aacebbe314610836578063c18bc1951461085f578063d34628cc14610888578063dbe66ca0146108b1578063dd62ed3e146108ee57610272565b80639d0014b1116101085780639d0014b1146107145780639e252f001461073d578063a457c2d714610766578063a8aa1b31146107a3578063a9059cbb146107ce578063aa4bde281461080b57610272565b80638c0b5e221461063f5780638cd4426d1461066a5780638da5cb5b146106935780638ea5220f146106be57806395d89b41146106e957610272565b8063313ce567116101dd5780636ddd1713116101a15780636ddd17131461055157806370a082311461057c578063715018a6146105b9578063728f8eea146105d057806375f0a874146105fd5780638a8c523c1461062857610272565b8063313ce5671461046c578063395093511461049757806340b28c2f146104d45780634ada218b146104fd5780636256d1811461052857610272565b80631816467f1161022f5780631816467f1461035e5780632253163d1461038757806323b872dd146103b257806326b5d32f146103ef578063273123b714610418578063293b7ef41461044157610272565b80630445b6671461027757806306fdde03146102a257806308733214146102cd578063095ea7b3146102f657806318160ddd1461033357610272565b3661027257005b600080fd5b34801561028357600080fd5b5061028c610a27565b604051610299919061300f565b60405180910390f35b3480156102ae57600080fd5b506102b7610a2d565b6040516102c491906130ba565b60405180910390f35b3480156102d957600080fd5b506102f460048036038101906102ef919061311c565b610abf565b005b34801561030257600080fd5b5061031d600480360381019061031891906131cd565b610b9b565b60405161032a9190613228565b60405180910390f35b34801561033f57600080fd5b50610348610bb9565b604051610355919061300f565b60405180910390f35b34801561036a57600080fd5b5061038560048036038101906103809190613243565b610bc3565b005b34801561039357600080fd5b5061039c610c83565b6040516103a9919061300f565b60405180910390f35b3480156103be57600080fd5b506103d960048036038101906103d49190613270565b610c89565b6040516103e69190613228565b60405180910390f35b3480156103fb57600080fd5b506104166004803603810190610411919061311c565b610d8a565b005b34801561042457600080fd5b5061043f600480360381019061043a9190613243565b610f17565b005b34801561044d57600080fd5b50610456610fcc565b604051610463919061300f565b60405180910390f35b34801561047857600080fd5b50610481610fd2565b60405161048e91906132df565b60405180910390f35b3480156104a357600080fd5b506104be60048036038101906104b991906131cd565b610fdb565b6040516104cb9190613228565b60405180910390f35b3480156104e057600080fd5b506104fb60048036038101906104f69190613338565b611087565b005b34801561050957600080fd5b50610512611189565b60405161051f9190613228565b60405180910390f35b34801561053457600080fd5b5061054f600480360381019061054a9190613378565b61119c565b005b34801561055d57600080fd5b50610566611235565b6040516105739190613228565b60405180910390f35b34801561058857600080fd5b506105a3600480360381019061059e9190613243565b611248565b6040516105b0919061300f565b60405180910390f35b3480156105c557600080fd5b506105ce611290565b005b3480156105dc57600080fd5b506105e5611318565b6040516105f4939291906133a5565b60405180910390f35b34801561060957600080fd5b50610612611330565b60405161061f91906133eb565b60405180910390f35b34801561063457600080fd5b5061063d611356565b005b34801561064b57600080fd5b5061065461145a565b604051610661919061300f565b60405180910390f35b34801561067657600080fd5b50610691600480360381019061068c91906131cd565b611460565b005b34801561069f57600080fd5b506106a8611566565b6040516106b591906133eb565b60405180910390f35b3480156106ca57600080fd5b506106d3611590565b6040516106e091906133eb565b60405180910390f35b3480156106f557600080fd5b506106fe6115b6565b60405161070b91906130ba565b60405180910390f35b34801561072057600080fd5b5061073b60048036038101906107369190613378565b611648565b005b34801561074957600080fd5b50610764600480360381019061075f9190613378565b6116ce565b005b34801561077257600080fd5b5061078d600480360381019061078891906131cd565b61177d565b60405161079a9190613228565b60405180910390f35b3480156107af57600080fd5b506107b8611871565b6040516107c591906133eb565b60405180910390f35b3480156107da57600080fd5b506107f560048036038101906107f091906131cd565b611897565b6040516108029190613228565b60405180910390f35b34801561081757600080fd5b506108206118b5565b60405161082d919061300f565b60405180910390f35b34801561084257600080fd5b5061085d60048036038101906108589190613243565b6118bb565b005b34801561086b57600080fd5b5061088660048036038101906108819190613378565b61197b565b005b34801561089457600080fd5b506108af60048036038101906108aa919061354e565b611a14565b005b3480156108bd57600080fd5b506108d860048036038101906108d39190613243565b611b25565b6040516108e59190613228565b60405180910390f35b3480156108fa57600080fd5b5061091560048036038101906109109190613597565b611b45565b604051610922919061300f565b60405180910390f35b34801561093757600080fd5b50610952600480360381019061094d9190613603565b611bcc565b005b34801561096057600080fd5b5061097b60048036038101906109769190613630565b611c65565b005b34801561098957600080fd5b506109a4600480360381019061099f919061311c565b611d3c565b005b3480156109b257600080fd5b506109cd60048036038101906109c89190613243565b611e18565b005b3480156109db57600080fd5b506109e4611f0f565b6040516109f3939291906133a5565b60405180910390f35b348015610a0857600080fd5b50610a11611f27565b604051610a1e91906136cf565b60405180910390f35b60085481565b606060038054610a3c90613719565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6890613719565b8015610ab55780601f10610a8a57610100808354040283529160200191610ab5565b820191906000526020600020905b815481529060010190602001808311610a9857829003601f168201915b5050505050905090565b610ac7611f4d565b73ffffffffffffffffffffffffffffffffffffffff16610ae5611566565b73ffffffffffffffffffffffffffffffffffffffff1614610b3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3290613796565b60405180910390fd5b6040518060600160405280848152602001838152602001828152506010600082015181600001556020820151816001015560408201518160020155905050808284610b8691906137e5565b610b9091906137e5565b601481905550505050565b6000610baf610ba8611f4d565b8484611f55565b6001905092915050565b6000600254905090565b610bcb611f4d565b73ffffffffffffffffffffffffffffffffffffffff16610be9611566565b73ffffffffffffffffffffffffffffffffffffffff1614610c3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3690613796565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60145481565b6000610c9684848461211e565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ce1611f4d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610d61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d589061388b565b60405180910390fd5b610d7e85610d6d611f4d565b8584610d7991906138ab565b611f55565b60019150509392505050565b610d92611f4d565b73ffffffffffffffffffffffffffffffffffffffff16610db0611566565b73ffffffffffffffffffffffffffffffffffffffff1614610e06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfd90613796565b60405180910390fd5b6000479050610e1484612673565b60008147610e2291906138ab565b90506000831115610e9a57610e998385610e3c91906137e5565b8483610e4891906138df565b610e529190613968565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166128b690919063ffffffff16565b5b6000841115610f1057610f0f8385610eb291906137e5565b8583610ebe91906138df565b610ec89190613968565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166128b690919063ffffffff16565b5b5050505050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f7157600080fd5b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60135481565b60006012905090565b600061107d610fe8611f4d565b848460016000610ff6611f4d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461107891906137e5565b611f55565b6001905092915050565b61108f611f4d565b73ffffffffffffffffffffffffffffffffffffffff166110ad611566565b73ffffffffffffffffffffffffffffffffffffffff1614611103576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fa90613796565b60405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600760169054906101000a900460ff1681565b6111a4611f4d565b73ffffffffffffffffffffffffffffffffffffffff166111c2611566565b73ffffffffffffffffffffffffffffffffffffffff1614611218576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120f90613796565b60405180910390fd5b670de0b6b3a76400008161122c91906138df565b60098190555050565b600760159054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611298611f4d565b73ffffffffffffffffffffffffffffffffffffffff166112b6611566565b73ffffffffffffffffffffffffffffffffffffffff161461130c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130390613796565b60405180910390fd5b61131660006129aa565b565b600d8060000154908060010154908060020154905083565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61135e611f4d565b73ffffffffffffffffffffffffffffffffffffffff1661137c611566565b73ffffffffffffffffffffffffffffffffffffffff16146113d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c990613796565b60405180910390fd5b600760169054906101000a900460ff1615611422576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611419906139e5565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff021916908315150217905550565b60095481565b611468611f4d565b73ffffffffffffffffffffffffffffffffffffffff16611486611566565b73ffffffffffffffffffffffffffffffffffffffff16146114dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d390613796565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb611500611566565b836040518363ffffffff1660e01b815260040161151e929190613a05565b6020604051808303816000875af115801561153d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115619190613a43565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600480546115c590613719565b80601f01602080910402602001604051908101604052809291908181526020018280546115f190613719565b801561163e5780601f106116135761010080835404028352916020019161163e565b820191906000526020600020905b81548152906001019060200180831161162157829003601f168201915b5050505050905090565b611650611f4d565b73ffffffffffffffffffffffffffffffffffffffff1661166e611566565b73ffffffffffffffffffffffffffffffffffffffff16146116c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bb90613796565b60405180910390fd5b8060088190555050565b6116d6611f4d565b73ffffffffffffffffffffffffffffffffffffffff166116f4611566565b73ffffffffffffffffffffffffffffffffffffffff161461174a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174190613796565b60405180910390fd5b61177a81611756611566565b73ffffffffffffffffffffffffffffffffffffffff166128b690919063ffffffff16565b50565b6000806001600061178c611f4d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611849576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184090613ae2565b60405180910390fd5b611866611854611f4d565b85858461186191906138ab565b611f55565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006118ab6118a4611f4d565b848461211e565b6001905092915050565b600a5481565b6118c3611f4d565b73ffffffffffffffffffffffffffffffffffffffff166118e1611566565b73ffffffffffffffffffffffffffffffffffffffff1614611937576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192e90613796565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611983611f4d565b73ffffffffffffffffffffffffffffffffffffffff166119a1611566565b73ffffffffffffffffffffffffffffffffffffffff16146119f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ee90613796565b60405180910390fd5b670de0b6b3a764000081611a0b91906138df565b600a8190555050565b611a1c611f4d565b73ffffffffffffffffffffffffffffffffffffffff16611a3a611566565b73ffffffffffffffffffffffffffffffffffffffff1614611a90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8790613796565b60405180910390fd5b60005b8151811015611b2157600160166000848481518110611ab557611ab4613b02565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611b1990613b31565b915050611a93565b5050565b60156020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611bd4611f4d565b73ffffffffffffffffffffffffffffffffffffffff16611bf2611566565b73ffffffffffffffffffffffffffffffffffffffff1614611c48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3f90613796565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b611c6d611f4d565b73ffffffffffffffffffffffffffffffffffffffff16611c8b611566565b73ffffffffffffffffffffffffffffffffffffffff1614611ce1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd890613796565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611d44611f4d565b73ffffffffffffffffffffffffffffffffffffffff16611d62611566565b73ffffffffffffffffffffffffffffffffffffffff1614611db8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611daf90613796565b60405180910390fd5b604051806060016040528084815260200183815260200182815250600d600082015181600001556020820151816001015560408201518160020155905050808284611e0391906137e5565b611e0d91906137e5565b601381905550505050565b611e20611f4d565b73ffffffffffffffffffffffffffffffffffffffff16611e3e611566565b73ffffffffffffffffffffffffffffffffffffffff1614611e94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8b90613796565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611f03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611efa90613beb565b60405180910390fd5b611f0c816129aa565b50565b60108060000154908060010154908060020154905083565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611fc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbb90613c7d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612033576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202a90613d0f565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612111919061300f565b60405180910390a3505050565b60008111612161576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215890613da1565b60405180910390fd5b601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156122055750601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612244576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223b90613e0d565b60405180910390fd5b601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156122e85750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156123015750600760149054906101000a900460ff16155b1561244957600760169054906101000a900460ff16612355576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234c90613e79565b60405180910390fd5b60095481111561239a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239190613ee5565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461244857600a54816123fc84611248565b61240691906137e5565b1115612447576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243e90613f77565b60405180910390fd5b5b5b6000600760149054906101000a900460ff16806124af5750601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806125035750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561251157600090506125a5565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036125875760646014548361257691906138df565b6125809190613968565b90506125a4565b60646013548361259791906138df565b6125a19190613968565b90505b5b600760159054906101000a900460ff1680156125ce5750600760149054906101000a900460ff16155b80156126285750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156126345750600081115b1561264257612641612a70565b5b6126588484838561265391906138ab565b612c74565b600081111561266d5761266c843083612c74565b5b50505050565b6000600267ffffffffffffffff8111156126905761268f61340b565b5b6040519080825280602002602001820160405280156126be5781602001602082028036833780820191505090505b50905030816000815181106126d6576126d5613b02565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561277d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127a19190613fac565b816001815181106127b5576127b4613b02565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061281c30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611f55565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016128809594939291906140d2565b600060405180830381600087803b15801561289a57600080fd5b505af11580156128ae573d6000803e3d6000fd5b505050505050565b804710156128f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f090614178565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405161291f906141c9565b60006040518083038185875af1925050503d806000811461295c576040519150601f19603f3d011682016040523d82523d6000602084013e612961565b606091505b50509050806129a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299c90614250565b60405180910390fd5b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600760149054906101000a900460ff16612c72576001600760146101000a81548160ff0219169083151502179055506000612aaa30611248565b90506008548110612c555760006002601454612ac691906138df565b905060008160106001015484612adc91906138df565b612ae69190613968565b905060008184612af691906138ab565b90506000479050612b0682612673565b60008147612b1491906138ab565b9050600060106001015486612b2991906138ab565b82612b349190613968565b9050600060106001015482612b4991906138df565b90506000811115612b5f57612b5e8682612ef1565b5b6000601060000154600284612b7491906138df565b612b7e91906138df565b90506000811115612bd557612bd481600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166128b690919063ffffffff16565b5b6000601060020154600285612bea91906138df565b612bf491906138df565b90506000811115612c4b57612c4a81600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166128b690919063ffffffff16565b5b5050505050505050505b506000600760146101000a81548160ff0219169083151502179055505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612ce3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cda906142e2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d4990614374565b60405180910390fd5b612d5d838383612ff1565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612de3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dda90614406565b60405180910390fd5b8181612def91906138ab565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612e7f91906137e5565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612ee3919061300f565b60405180910390a350505050565b612f1e30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611f55565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612fa796959493929190614426565b60606040518083038185885af1158015612fc5573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612fea919061449c565b5050505050565b505050565b6000819050919050565b61300981612ff6565b82525050565b60006020820190506130246000830184613000565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613064578082015181840152602081019050613049565b60008484015250505050565b6000601f19601f8301169050919050565b600061308c8261302a565b6130968185613035565b93506130a6818560208601613046565b6130af81613070565b840191505092915050565b600060208201905081810360008301526130d48184613081565b905092915050565b6000604051905090565b600080fd5b600080fd5b6130f981612ff6565b811461310457600080fd5b50565b600081359050613116816130f0565b92915050565b600080600060608486031215613135576131346130e6565b5b600061314386828701613107565b935050602061315486828701613107565b925050604061316586828701613107565b9150509250925092565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061319a8261316f565b9050919050565b6131aa8161318f565b81146131b557600080fd5b50565b6000813590506131c7816131a1565b92915050565b600080604083850312156131e4576131e36130e6565b5b60006131f2858286016131b8565b925050602061320385828601613107565b9150509250929050565b60008115159050919050565b6132228161320d565b82525050565b600060208201905061323d6000830184613219565b92915050565b600060208284031215613259576132586130e6565b5b6000613267848285016131b8565b91505092915050565b600080600060608486031215613289576132886130e6565b5b6000613297868287016131b8565b93505060206132a8868287016131b8565b92505060406132b986828701613107565b9150509250925092565b600060ff82169050919050565b6132d9816132c3565b82525050565b60006020820190506132f460008301846132d0565b92915050565b60006133058261318f565b9050919050565b613315816132fa565b811461332057600080fd5b50565b6000813590506133328161330c565b92915050565b6000806040838503121561334f5761334e6130e6565b5b600061335d85828601613323565b925050602061336e858286016131b8565b9150509250929050565b60006020828403121561338e5761338d6130e6565b5b600061339c84828501613107565b91505092915050565b60006060820190506133ba6000830186613000565b6133c76020830185613000565b6133d46040830184613000565b949350505050565b6133e58161318f565b82525050565b600060208201905061340060008301846133dc565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61344382613070565b810181811067ffffffffffffffff821117156134625761346161340b565b5b80604052505050565b60006134756130dc565b9050613481828261343a565b919050565b600067ffffffffffffffff8211156134a1576134a061340b565b5b602082029050602081019050919050565b600080fd5b60006134ca6134c584613486565b61346b565b905080838252602082019050602084028301858111156134ed576134ec6134b2565b5b835b81811015613516578061350288826131b8565b8452602084019350506020810190506134ef565b5050509392505050565b600082601f83011261353557613534613406565b5b81356135458482602086016134b7565b91505092915050565b600060208284031215613564576135636130e6565b5b600082013567ffffffffffffffff811115613582576135816130eb565b5b61358e84828501613520565b91505092915050565b600080604083850312156135ae576135ad6130e6565b5b60006135bc858286016131b8565b92505060206135cd858286016131b8565b9150509250929050565b6135e08161320d565b81146135eb57600080fd5b50565b6000813590506135fd816135d7565b92915050565b600060208284031215613619576136186130e6565b5b6000613627848285016135ee565b91505092915050565b60008060408385031215613647576136466130e6565b5b6000613655858286016131b8565b9250506020613666858286016135ee565b9150509250929050565b6000819050919050565b600061369561369061368b8461316f565b613670565b61316f565b9050919050565b60006136a78261367a565b9050919050565b60006136b98261369c565b9050919050565b6136c9816136ae565b82525050565b60006020820190506136e460008301846136c0565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061373157607f821691505b602082108103613744576137436136ea565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613780602083613035565b915061378b8261374a565b602082019050919050565b600060208201905081810360008301526137af81613773565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006137f082612ff6565b91506137fb83612ff6565b9250828201905080821115613813576138126137b6565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613875602883613035565b915061388082613819565b604082019050919050565b600060208201905081810360008301526138a481613868565b9050919050565b60006138b682612ff6565b91506138c183612ff6565b92508282039050818111156138d9576138d86137b6565b5b92915050565b60006138ea82612ff6565b91506138f583612ff6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561392e5761392d6137b6565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061397382612ff6565b915061397e83612ff6565b92508261398e5761398d613939565b5b828204905092915050565b7f54726164696e6720616c72656164792061637469766500000000000000000000600082015250565b60006139cf601683613035565b91506139da82613999565b602082019050919050565b600060208201905081810360008301526139fe816139c2565b9050919050565b6000604082019050613a1a60008301856133dc565b613a276020830184613000565b9392505050565b600081519050613a3d816135d7565b92915050565b600060208284031215613a5957613a586130e6565b5b6000613a6784828501613a2e565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613acc602583613035565b9150613ad782613a70565b604082019050919050565b60006020820190508181036000830152613afb81613abf565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613b3c82612ff6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613b6e57613b6d6137b6565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613bd5602683613035565b9150613be082613b79565b604082019050919050565b60006020820190508181036000830152613c0481613bc8565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613c67602483613035565b9150613c7282613c0b565b604082019050919050565b60006020820190508181036000830152613c9681613c5a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613cf9602283613035565b9150613d0482613c9d565b604082019050919050565b60006020820190508181036000830152613d2881613cec565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613d8b602983613035565b9150613d9682613d2f565b604082019050919050565b60006020820190508181036000830152613dba81613d7e565b9050919050565b7f596f752063616e2774207472616e7366657220746f6b656e7300000000000000600082015250565b6000613df7601983613035565b9150613e0282613dc1565b602082019050919050565b60006020820190508181036000830152613e2681613dea565b9050919050565b7f54726164696e67206e6f74206163746976652079657400000000000000000000600082015250565b6000613e63601683613035565b9150613e6e82613e2d565b602082019050919050565b60006020820190508181036000830152613e9281613e56565b9050919050565b7f596f752061726520657863656564696e67206d61785478416d6f756e74000000600082015250565b6000613ecf601d83613035565b9150613eda82613e99565b602082019050919050565b60006020820190508181036000830152613efe81613ec2565b9050919050565b7f596f752061726520657863656564696e67206d617857616c6c6574416d6f756e60008201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b6000613f61602183613035565b9150613f6c82613f05565b604082019050919050565b60006020820190508181036000830152613f9081613f54565b9050919050565b600081519050613fa6816131a1565b92915050565b600060208284031215613fc257613fc16130e6565b5b6000613fd084828501613f97565b91505092915050565b6000819050919050565b6000613ffe613ff9613ff484613fd9565b613670565b612ff6565b9050919050565b61400e81613fe3565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6140498161318f565b82525050565b600061405b8383614040565b60208301905092915050565b6000602082019050919050565b600061407f82614014565b614089818561401f565b935061409483614030565b8060005b838110156140c55781516140ac888261404f565b97506140b783614067565b925050600181019050614098565b5085935050505092915050565b600060a0820190506140e76000830188613000565b6140f46020830187614005565b81810360408301526141068186614074565b905061411560608301856133dc565b6141226080830184613000565b9695505050505050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000614162601d83613035565b915061416d8261412c565b602082019050919050565b6000602082019050818103600083015261419181614155565b9050919050565b600081905092915050565b50565b60006141b3600083614198565b91506141be826141a3565b600082019050919050565b60006141d4826141a6565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b600061423a603a83613035565b9150614245826141de565b604082019050919050565b600060208201905081810360008301526142698161422d565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006142cc602583613035565b91506142d782614270565b604082019050919050565b600060208201905081810360008301526142fb816142bf565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061435e602383613035565b915061436982614302565b604082019050919050565b6000602082019050818103600083015261438d81614351565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006143f0602683613035565b91506143fb82614394565b604082019050919050565b6000602082019050818103600083015261441f816143e3565b9050919050565b600060c08201905061443b60008301896133dc565b6144486020830188613000565b6144556040830187614005565b6144626060830186614005565b61446f60808301856133dc565b61447c60a0830184613000565b979650505050505050565b600081519050614496816130f0565b92915050565b6000806000606084860312156144b5576144b46130e6565b5b60006144c386828701614487565b93505060206144d486828701614487565b92505060406144e586828701614487565b915050925092509256fea264697066735822122033be07483a2e6b44b380e005d9926dfe400d41526b422c2d6d91ac5ad96cf0d564736f6c63430008100033

Deployed Bytecode

0x60806040526004361061026b5760003560e01c80638c0b5e2211610144578063aacebbe3116100b6578063e01af92c1161007a578063e01af92c1461092b578063e545fd6d14610954578063e9dae5ed1461097d578063f2fde38b146109a6578063f66895a3146109cf578063f887ea40146109fc57610272565b8063aacebbe314610836578063c18bc1951461085f578063d34628cc14610888578063dbe66ca0146108b1578063dd62ed3e146108ee57610272565b80639d0014b1116101085780639d0014b1146107145780639e252f001461073d578063a457c2d714610766578063a8aa1b31146107a3578063a9059cbb146107ce578063aa4bde281461080b57610272565b80638c0b5e221461063f5780638cd4426d1461066a5780638da5cb5b146106935780638ea5220f146106be57806395d89b41146106e957610272565b8063313ce567116101dd5780636ddd1713116101a15780636ddd17131461055157806370a082311461057c578063715018a6146105b9578063728f8eea146105d057806375f0a874146105fd5780638a8c523c1461062857610272565b8063313ce5671461046c578063395093511461049757806340b28c2f146104d45780634ada218b146104fd5780636256d1811461052857610272565b80631816467f1161022f5780631816467f1461035e5780632253163d1461038757806323b872dd146103b257806326b5d32f146103ef578063273123b714610418578063293b7ef41461044157610272565b80630445b6671461027757806306fdde03146102a257806308733214146102cd578063095ea7b3146102f657806318160ddd1461033357610272565b3661027257005b600080fd5b34801561028357600080fd5b5061028c610a27565b604051610299919061300f565b60405180910390f35b3480156102ae57600080fd5b506102b7610a2d565b6040516102c491906130ba565b60405180910390f35b3480156102d957600080fd5b506102f460048036038101906102ef919061311c565b610abf565b005b34801561030257600080fd5b5061031d600480360381019061031891906131cd565b610b9b565b60405161032a9190613228565b60405180910390f35b34801561033f57600080fd5b50610348610bb9565b604051610355919061300f565b60405180910390f35b34801561036a57600080fd5b5061038560048036038101906103809190613243565b610bc3565b005b34801561039357600080fd5b5061039c610c83565b6040516103a9919061300f565b60405180910390f35b3480156103be57600080fd5b506103d960048036038101906103d49190613270565b610c89565b6040516103e69190613228565b60405180910390f35b3480156103fb57600080fd5b506104166004803603810190610411919061311c565b610d8a565b005b34801561042457600080fd5b5061043f600480360381019061043a9190613243565b610f17565b005b34801561044d57600080fd5b50610456610fcc565b604051610463919061300f565b60405180910390f35b34801561047857600080fd5b50610481610fd2565b60405161048e91906132df565b60405180910390f35b3480156104a357600080fd5b506104be60048036038101906104b991906131cd565b610fdb565b6040516104cb9190613228565b60405180910390f35b3480156104e057600080fd5b506104fb60048036038101906104f69190613338565b611087565b005b34801561050957600080fd5b50610512611189565b60405161051f9190613228565b60405180910390f35b34801561053457600080fd5b5061054f600480360381019061054a9190613378565b61119c565b005b34801561055d57600080fd5b50610566611235565b6040516105739190613228565b60405180910390f35b34801561058857600080fd5b506105a3600480360381019061059e9190613243565b611248565b6040516105b0919061300f565b60405180910390f35b3480156105c557600080fd5b506105ce611290565b005b3480156105dc57600080fd5b506105e5611318565b6040516105f4939291906133a5565b60405180910390f35b34801561060957600080fd5b50610612611330565b60405161061f91906133eb565b60405180910390f35b34801561063457600080fd5b5061063d611356565b005b34801561064b57600080fd5b5061065461145a565b604051610661919061300f565b60405180910390f35b34801561067657600080fd5b50610691600480360381019061068c91906131cd565b611460565b005b34801561069f57600080fd5b506106a8611566565b6040516106b591906133eb565b60405180910390f35b3480156106ca57600080fd5b506106d3611590565b6040516106e091906133eb565b60405180910390f35b3480156106f557600080fd5b506106fe6115b6565b60405161070b91906130ba565b60405180910390f35b34801561072057600080fd5b5061073b60048036038101906107369190613378565b611648565b005b34801561074957600080fd5b50610764600480360381019061075f9190613378565b6116ce565b005b34801561077257600080fd5b5061078d600480360381019061078891906131cd565b61177d565b60405161079a9190613228565b60405180910390f35b3480156107af57600080fd5b506107b8611871565b6040516107c591906133eb565b60405180910390f35b3480156107da57600080fd5b506107f560048036038101906107f091906131cd565b611897565b6040516108029190613228565b60405180910390f35b34801561081757600080fd5b506108206118b5565b60405161082d919061300f565b60405180910390f35b34801561084257600080fd5b5061085d60048036038101906108589190613243565b6118bb565b005b34801561086b57600080fd5b5061088660048036038101906108819190613378565b61197b565b005b34801561089457600080fd5b506108af60048036038101906108aa919061354e565b611a14565b005b3480156108bd57600080fd5b506108d860048036038101906108d39190613243565b611b25565b6040516108e59190613228565b60405180910390f35b3480156108fa57600080fd5b5061091560048036038101906109109190613597565b611b45565b604051610922919061300f565b60405180910390f35b34801561093757600080fd5b50610952600480360381019061094d9190613603565b611bcc565b005b34801561096057600080fd5b5061097b60048036038101906109769190613630565b611c65565b005b34801561098957600080fd5b506109a4600480360381019061099f919061311c565b611d3c565b005b3480156109b257600080fd5b506109cd60048036038101906109c89190613243565b611e18565b005b3480156109db57600080fd5b506109e4611f0f565b6040516109f3939291906133a5565b60405180910390f35b348015610a0857600080fd5b50610a11611f27565b604051610a1e91906136cf565b60405180910390f35b60085481565b606060038054610a3c90613719565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6890613719565b8015610ab55780601f10610a8a57610100808354040283529160200191610ab5565b820191906000526020600020905b815481529060010190602001808311610a9857829003601f168201915b5050505050905090565b610ac7611f4d565b73ffffffffffffffffffffffffffffffffffffffff16610ae5611566565b73ffffffffffffffffffffffffffffffffffffffff1614610b3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3290613796565b60405180910390fd5b6040518060600160405280848152602001838152602001828152506010600082015181600001556020820151816001015560408201518160020155905050808284610b8691906137e5565b610b9091906137e5565b601481905550505050565b6000610baf610ba8611f4d565b8484611f55565b6001905092915050565b6000600254905090565b610bcb611f4d565b73ffffffffffffffffffffffffffffffffffffffff16610be9611566565b73ffffffffffffffffffffffffffffffffffffffff1614610c3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3690613796565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60145481565b6000610c9684848461211e565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ce1611f4d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610d61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d589061388b565b60405180910390fd5b610d7e85610d6d611f4d565b8584610d7991906138ab565b611f55565b60019150509392505050565b610d92611f4d565b73ffffffffffffffffffffffffffffffffffffffff16610db0611566565b73ffffffffffffffffffffffffffffffffffffffff1614610e06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfd90613796565b60405180910390fd5b6000479050610e1484612673565b60008147610e2291906138ab565b90506000831115610e9a57610e998385610e3c91906137e5565b8483610e4891906138df565b610e529190613968565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166128b690919063ffffffff16565b5b6000841115610f1057610f0f8385610eb291906137e5565b8583610ebe91906138df565b610ec89190613968565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166128b690919063ffffffff16565b5b5050505050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f7157600080fd5b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60135481565b60006012905090565b600061107d610fe8611f4d565b848460016000610ff6611f4d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461107891906137e5565b611f55565b6001905092915050565b61108f611f4d565b73ffffffffffffffffffffffffffffffffffffffff166110ad611566565b73ffffffffffffffffffffffffffffffffffffffff1614611103576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fa90613796565b60405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600760169054906101000a900460ff1681565b6111a4611f4d565b73ffffffffffffffffffffffffffffffffffffffff166111c2611566565b73ffffffffffffffffffffffffffffffffffffffff1614611218576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120f90613796565b60405180910390fd5b670de0b6b3a76400008161122c91906138df565b60098190555050565b600760159054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611298611f4d565b73ffffffffffffffffffffffffffffffffffffffff166112b6611566565b73ffffffffffffffffffffffffffffffffffffffff161461130c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130390613796565b60405180910390fd5b61131660006129aa565b565b600d8060000154908060010154908060020154905083565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61135e611f4d565b73ffffffffffffffffffffffffffffffffffffffff1661137c611566565b73ffffffffffffffffffffffffffffffffffffffff16146113d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c990613796565b60405180910390fd5b600760169054906101000a900460ff1615611422576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611419906139e5565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff021916908315150217905550565b60095481565b611468611f4d565b73ffffffffffffffffffffffffffffffffffffffff16611486611566565b73ffffffffffffffffffffffffffffffffffffffff16146114dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d390613796565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb611500611566565b836040518363ffffffff1660e01b815260040161151e929190613a05565b6020604051808303816000875af115801561153d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115619190613a43565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600480546115c590613719565b80601f01602080910402602001604051908101604052809291908181526020018280546115f190613719565b801561163e5780601f106116135761010080835404028352916020019161163e565b820191906000526020600020905b81548152906001019060200180831161162157829003601f168201915b5050505050905090565b611650611f4d565b73ffffffffffffffffffffffffffffffffffffffff1661166e611566565b73ffffffffffffffffffffffffffffffffffffffff16146116c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bb90613796565b60405180910390fd5b8060088190555050565b6116d6611f4d565b73ffffffffffffffffffffffffffffffffffffffff166116f4611566565b73ffffffffffffffffffffffffffffffffffffffff161461174a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174190613796565b60405180910390fd5b61177a81611756611566565b73ffffffffffffffffffffffffffffffffffffffff166128b690919063ffffffff16565b50565b6000806001600061178c611f4d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611849576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184090613ae2565b60405180910390fd5b611866611854611f4d565b85858461186191906138ab565b611f55565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006118ab6118a4611f4d565b848461211e565b6001905092915050565b600a5481565b6118c3611f4d565b73ffffffffffffffffffffffffffffffffffffffff166118e1611566565b73ffffffffffffffffffffffffffffffffffffffff1614611937576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192e90613796565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611983611f4d565b73ffffffffffffffffffffffffffffffffffffffff166119a1611566565b73ffffffffffffffffffffffffffffffffffffffff16146119f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ee90613796565b60405180910390fd5b670de0b6b3a764000081611a0b91906138df565b600a8190555050565b611a1c611f4d565b73ffffffffffffffffffffffffffffffffffffffff16611a3a611566565b73ffffffffffffffffffffffffffffffffffffffff1614611a90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8790613796565b60405180910390fd5b60005b8151811015611b2157600160166000848481518110611ab557611ab4613b02565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611b1990613b31565b915050611a93565b5050565b60156020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611bd4611f4d565b73ffffffffffffffffffffffffffffffffffffffff16611bf2611566565b73ffffffffffffffffffffffffffffffffffffffff1614611c48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3f90613796565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b611c6d611f4d565b73ffffffffffffffffffffffffffffffffffffffff16611c8b611566565b73ffffffffffffffffffffffffffffffffffffffff1614611ce1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd890613796565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611d44611f4d565b73ffffffffffffffffffffffffffffffffffffffff16611d62611566565b73ffffffffffffffffffffffffffffffffffffffff1614611db8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611daf90613796565b60405180910390fd5b604051806060016040528084815260200183815260200182815250600d600082015181600001556020820151816001015560408201518160020155905050808284611e0391906137e5565b611e0d91906137e5565b601381905550505050565b611e20611f4d565b73ffffffffffffffffffffffffffffffffffffffff16611e3e611566565b73ffffffffffffffffffffffffffffffffffffffff1614611e94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8b90613796565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611f03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611efa90613beb565b60405180910390fd5b611f0c816129aa565b50565b60108060000154908060010154908060020154905083565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611fc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbb90613c7d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612033576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202a90613d0f565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612111919061300f565b60405180910390a3505050565b60008111612161576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215890613da1565b60405180910390fd5b601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156122055750601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612244576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223b90613e0d565b60405180910390fd5b601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156122e85750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156123015750600760149054906101000a900460ff16155b1561244957600760169054906101000a900460ff16612355576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234c90613e79565b60405180910390fd5b60095481111561239a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239190613ee5565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461244857600a54816123fc84611248565b61240691906137e5565b1115612447576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243e90613f77565b60405180910390fd5b5b5b6000600760149054906101000a900460ff16806124af5750601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806125035750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561251157600090506125a5565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036125875760646014548361257691906138df565b6125809190613968565b90506125a4565b60646013548361259791906138df565b6125a19190613968565b90505b5b600760159054906101000a900460ff1680156125ce5750600760149054906101000a900460ff16155b80156126285750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156126345750600081115b1561264257612641612a70565b5b6126588484838561265391906138ab565b612c74565b600081111561266d5761266c843083612c74565b5b50505050565b6000600267ffffffffffffffff8111156126905761268f61340b565b5b6040519080825280602002602001820160405280156126be5781602001602082028036833780820191505090505b50905030816000815181106126d6576126d5613b02565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561277d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127a19190613fac565b816001815181106127b5576127b4613b02565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061281c30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611f55565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016128809594939291906140d2565b600060405180830381600087803b15801561289a57600080fd5b505af11580156128ae573d6000803e3d6000fd5b505050505050565b804710156128f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f090614178565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405161291f906141c9565b60006040518083038185875af1925050503d806000811461295c576040519150601f19603f3d011682016040523d82523d6000602084013e612961565b606091505b50509050806129a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299c90614250565b60405180910390fd5b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600760149054906101000a900460ff16612c72576001600760146101000a81548160ff0219169083151502179055506000612aaa30611248565b90506008548110612c555760006002601454612ac691906138df565b905060008160106001015484612adc91906138df565b612ae69190613968565b905060008184612af691906138ab565b90506000479050612b0682612673565b60008147612b1491906138ab565b9050600060106001015486612b2991906138ab565b82612b349190613968565b9050600060106001015482612b4991906138df565b90506000811115612b5f57612b5e8682612ef1565b5b6000601060000154600284612b7491906138df565b612b7e91906138df565b90506000811115612bd557612bd481600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166128b690919063ffffffff16565b5b6000601060020154600285612bea91906138df565b612bf491906138df565b90506000811115612c4b57612c4a81600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166128b690919063ffffffff16565b5b5050505050505050505b506000600760146101000a81548160ff0219169083151502179055505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612ce3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cda906142e2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d4990614374565b60405180910390fd5b612d5d838383612ff1565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612de3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dda90614406565b60405180910390fd5b8181612def91906138ab565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612e7f91906137e5565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612ee3919061300f565b60405180910390a350505050565b612f1e30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611f55565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612fa796959493929190614426565b60606040518083038185885af1158015612fc5573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612fea919061449c565b5050505050565b505050565b6000819050919050565b61300981612ff6565b82525050565b60006020820190506130246000830184613000565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613064578082015181840152602081019050613049565b60008484015250505050565b6000601f19601f8301169050919050565b600061308c8261302a565b6130968185613035565b93506130a6818560208601613046565b6130af81613070565b840191505092915050565b600060208201905081810360008301526130d48184613081565b905092915050565b6000604051905090565b600080fd5b600080fd5b6130f981612ff6565b811461310457600080fd5b50565b600081359050613116816130f0565b92915050565b600080600060608486031215613135576131346130e6565b5b600061314386828701613107565b935050602061315486828701613107565b925050604061316586828701613107565b9150509250925092565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061319a8261316f565b9050919050565b6131aa8161318f565b81146131b557600080fd5b50565b6000813590506131c7816131a1565b92915050565b600080604083850312156131e4576131e36130e6565b5b60006131f2858286016131b8565b925050602061320385828601613107565b9150509250929050565b60008115159050919050565b6132228161320d565b82525050565b600060208201905061323d6000830184613219565b92915050565b600060208284031215613259576132586130e6565b5b6000613267848285016131b8565b91505092915050565b600080600060608486031215613289576132886130e6565b5b6000613297868287016131b8565b93505060206132a8868287016131b8565b92505060406132b986828701613107565b9150509250925092565b600060ff82169050919050565b6132d9816132c3565b82525050565b60006020820190506132f460008301846132d0565b92915050565b60006133058261318f565b9050919050565b613315816132fa565b811461332057600080fd5b50565b6000813590506133328161330c565b92915050565b6000806040838503121561334f5761334e6130e6565b5b600061335d85828601613323565b925050602061336e858286016131b8565b9150509250929050565b60006020828403121561338e5761338d6130e6565b5b600061339c84828501613107565b91505092915050565b60006060820190506133ba6000830186613000565b6133c76020830185613000565b6133d46040830184613000565b949350505050565b6133e58161318f565b82525050565b600060208201905061340060008301846133dc565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61344382613070565b810181811067ffffffffffffffff821117156134625761346161340b565b5b80604052505050565b60006134756130dc565b9050613481828261343a565b919050565b600067ffffffffffffffff8211156134a1576134a061340b565b5b602082029050602081019050919050565b600080fd5b60006134ca6134c584613486565b61346b565b905080838252602082019050602084028301858111156134ed576134ec6134b2565b5b835b81811015613516578061350288826131b8565b8452602084019350506020810190506134ef565b5050509392505050565b600082601f83011261353557613534613406565b5b81356135458482602086016134b7565b91505092915050565b600060208284031215613564576135636130e6565b5b600082013567ffffffffffffffff811115613582576135816130eb565b5b61358e84828501613520565b91505092915050565b600080604083850312156135ae576135ad6130e6565b5b60006135bc858286016131b8565b92505060206135cd858286016131b8565b9150509250929050565b6135e08161320d565b81146135eb57600080fd5b50565b6000813590506135fd816135d7565b92915050565b600060208284031215613619576136186130e6565b5b6000613627848285016135ee565b91505092915050565b60008060408385031215613647576136466130e6565b5b6000613655858286016131b8565b9250506020613666858286016135ee565b9150509250929050565b6000819050919050565b600061369561369061368b8461316f565b613670565b61316f565b9050919050565b60006136a78261367a565b9050919050565b60006136b98261369c565b9050919050565b6136c9816136ae565b82525050565b60006020820190506136e460008301846136c0565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061373157607f821691505b602082108103613744576137436136ea565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613780602083613035565b915061378b8261374a565b602082019050919050565b600060208201905081810360008301526137af81613773565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006137f082612ff6565b91506137fb83612ff6565b9250828201905080821115613813576138126137b6565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613875602883613035565b915061388082613819565b604082019050919050565b600060208201905081810360008301526138a481613868565b9050919050565b60006138b682612ff6565b91506138c183612ff6565b92508282039050818111156138d9576138d86137b6565b5b92915050565b60006138ea82612ff6565b91506138f583612ff6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561392e5761392d6137b6565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061397382612ff6565b915061397e83612ff6565b92508261398e5761398d613939565b5b828204905092915050565b7f54726164696e6720616c72656164792061637469766500000000000000000000600082015250565b60006139cf601683613035565b91506139da82613999565b602082019050919050565b600060208201905081810360008301526139fe816139c2565b9050919050565b6000604082019050613a1a60008301856133dc565b613a276020830184613000565b9392505050565b600081519050613a3d816135d7565b92915050565b600060208284031215613a5957613a586130e6565b5b6000613a6784828501613a2e565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613acc602583613035565b9150613ad782613a70565b604082019050919050565b60006020820190508181036000830152613afb81613abf565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613b3c82612ff6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613b6e57613b6d6137b6565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613bd5602683613035565b9150613be082613b79565b604082019050919050565b60006020820190508181036000830152613c0481613bc8565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613c67602483613035565b9150613c7282613c0b565b604082019050919050565b60006020820190508181036000830152613c9681613c5a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613cf9602283613035565b9150613d0482613c9d565b604082019050919050565b60006020820190508181036000830152613d2881613cec565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613d8b602983613035565b9150613d9682613d2f565b604082019050919050565b60006020820190508181036000830152613dba81613d7e565b9050919050565b7f596f752063616e2774207472616e7366657220746f6b656e7300000000000000600082015250565b6000613df7601983613035565b9150613e0282613dc1565b602082019050919050565b60006020820190508181036000830152613e2681613dea565b9050919050565b7f54726164696e67206e6f74206163746976652079657400000000000000000000600082015250565b6000613e63601683613035565b9150613e6e82613e2d565b602082019050919050565b60006020820190508181036000830152613e9281613e56565b9050919050565b7f596f752061726520657863656564696e67206d61785478416d6f756e74000000600082015250565b6000613ecf601d83613035565b9150613eda82613e99565b602082019050919050565b60006020820190508181036000830152613efe81613ec2565b9050919050565b7f596f752061726520657863656564696e67206d617857616c6c6574416d6f756e60008201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b6000613f61602183613035565b9150613f6c82613f05565b604082019050919050565b60006020820190508181036000830152613f9081613f54565b9050919050565b600081519050613fa6816131a1565b92915050565b600060208284031215613fc257613fc16130e6565b5b6000613fd084828501613f97565b91505092915050565b6000819050919050565b6000613ffe613ff9613ff484613fd9565b613670565b612ff6565b9050919050565b61400e81613fe3565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6140498161318f565b82525050565b600061405b8383614040565b60208301905092915050565b6000602082019050919050565b600061407f82614014565b614089818561401f565b935061409483614030565b8060005b838110156140c55781516140ac888261404f565b97506140b783614067565b925050600181019050614098565b5085935050505092915050565b600060a0820190506140e76000830188613000565b6140f46020830187614005565b81810360408301526141068186614074565b905061411560608301856133dc565b6141226080830184613000565b9695505050505050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000614162601d83613035565b915061416d8261412c565b602082019050919050565b6000602082019050818103600083015261419181614155565b9050919050565b600081905092915050565b50565b60006141b3600083614198565b91506141be826141a3565b600082019050919050565b60006141d4826141a6565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b600061423a603a83613035565b9150614245826141de565b604082019050919050565b600060208201905081810360008301526142698161422d565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006142cc602583613035565b91506142d782614270565b604082019050919050565b600060208201905081810360008301526142fb816142bf565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061435e602383613035565b915061436982614302565b604082019050919050565b6000602082019050818103600083015261438d81614351565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006143f0602683613035565b91506143fb82614394565b604082019050919050565b6000602082019050818103600083015261441f816143e3565b9050919050565b600060c08201905061443b60008301896133dc565b6144486020830188613000565b6144556040830187614005565b6144626060830186614005565b61446f60808301856133dc565b61447c60a0830184613000565b979650505050505050565b600081519050614496816130f0565b92915050565b6000806000606084860312156144b5576144b46130e6565b5b60006144c386828701614487565b93505060206144d486828701614487565b92505060406144e586828701614487565b915050925092509256fea264697066735822122033be07483a2e6b44b380e005d9926dfe400d41526b422c2d6d91ac5ad96cf0d564736f6c63430008100033

Deployed Bytecode Sourcemap

13374:8185:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13618:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2564:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19353:214;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4731:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3684:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19705:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14179:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5382:422;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20949:546;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20409:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14147:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3526:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6213:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19815:137;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13578:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20292:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13548:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3855:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12151:94;;;;;;;;;;;;;:::i;:::-;;14063:33;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;13787:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18962:173;;;;;;;;;;;;;:::i;:::-;;13670:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20679:142;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11928:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13869:69;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2783:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18844:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20829:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6931:377;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13488:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4195:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13725:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19579:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20554:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19968:172;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14221:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4433:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18743:93;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20146:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19143:202;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12253:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14103:37;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;13460:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13618:45;;;;:::o;2564:100::-;2618:13;2651:5;2644:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2564:100;:::o;19353:214::-;12074:12;:10;:12::i;:::-;12063:23;;:7;:5;:7::i;:::-;:23;;;12055:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19470:35:::1;;;;;;;;19476:10;19470:35;;;;19488:10;19470:35;;;;19500:4;19470:35;;::::0;19458:9:::1;:47;;;;;;;;;;;;;;;;;;;;;;;;;;;19555:4;19542:10;19529;:23;;;;:::i;:::-;:30;;;;:::i;:::-;19516:10;:43;;;;19353:214:::0;;;:::o;4731:169::-;4814:4;4831:39;4840:12;:10;:12::i;:::-;4854:7;4863:6;4831:8;:39::i;:::-;4888:4;4881:11;;4731:169;;;;:::o;3684:108::-;3745:7;3772:12;;3765:19;;3684:108;:::o;19705:102::-;12074:12;:10;:12::i;:::-;12063:23;;:7;:5;:7::i;:::-;:23;;;12055:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19790:9:::1;19778;;:21;;;;;;;;;;;;;;;;;;19705:102:::0;:::o;14179:29::-;;;;:::o;5382:422::-;5488:4;5505:36;5515:6;5523:9;5534:6;5505:9;:36::i;:::-;5554:24;5581:11;:19;5593:6;5581:19;;;;;;;;;;;;;;;:33;5601:12;:10;:12::i;:::-;5581:33;;;;;;;;;;;;;;;;5554:60;;5653:6;5633:16;:26;;5625:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;5715:57;5724:6;5732:12;:10;:12::i;:::-;5765:6;5746:16;:25;;;;:::i;:::-;5715:8;:57::i;:::-;5792:4;5785:11;;;5382:422;;;;;:::o;20949:546::-;12074:12;:10;:12::i;:::-;12063:23;;:7;:5;:7::i;:::-;:23;;;12055:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21066:19:::1;21088:21;21066:43;;21120:24;21137:6;21120:16;:24::i;:::-;21155:18;21200:11;21176:21;:35;;;;:::i;:::-;21155:56;;21247:1;21225:19;:23;21222:136;;;21250:108;21337:19;21321:13;:35;;;;:::i;:::-;21298:19;21285:10;:32;;;;:::i;:::-;:72;;;;:::i;:::-;21258:15;;;;;;;;;;;21250:34;;;;:108;;;;:::i;:::-;21222:136;21388:1;21372:13;:17;21369:118;;;21391:96;21466:19;21450:13;:35;;;;:::i;:::-;21433:13;21420:10;:26;;;;:::i;:::-;:66;;;;:::i;:::-;21399:9;;;;;;;;;;;21391:28;;;;:96;;;;:::i;:::-;21369:118;21055:440;;20949:546:::0;;;:::o;20409:133::-;20485:15;;;;;;;;;;;20471:29;;:10;:29;;;20462:39;;;;;;20529:5;20512;:14;20518:7;20512:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;20409:133;:::o;14147:25::-;;;;:::o;3526:93::-;3584:5;3609:2;3602:9;;3526:93;:::o;6213:215::-;6301:4;6318:80;6327:12;:10;:12::i;:::-;6341:7;6387:10;6350:11;:25;6362:12;:10;:12::i;:::-;6350:25;;;;;;;;;;;;;;;:34;6376:7;6350:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;6318:8;:80::i;:::-;6416:4;6409:11;;6213:215;;;;:::o;19815:137::-;12074:12;:10;:12::i;:::-;12063:23;;:7;:5;:7::i;:::-;:23;;;12055:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19914:7:::1;19905:6;;:16;;;;;;;;;;;;;;;;;;19939:5;19932:4;;:12;;;;;;;;;;;;;;;;;;19815:137:::0;;:::o;13578:26::-;;;;;;;;;;;;;:::o;20292:109::-;12074:12;:10;:12::i;:::-;12063:23;;:7;:5;:7::i;:::-;:23;;;12055:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20387:6:::1;20378;:15;;;;:::i;:::-;20364:11;:29;;;;20292:109:::0;:::o;13548:23::-;;;;;;;;;;;;;:::o;3855:127::-;3929:7;3956:9;:18;3966:7;3956:18;;;;;;;;;;;;;;;;3949:25;;3855:127;;;:::o;12151:94::-;12074:12;:10;:12::i;:::-;12063:23;;:7;:5;:7::i;:::-;:23;;;12055:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12216:21:::1;12234:1;12216:9;:21::i;:::-;12151:94::o:0;14063:33::-;;;;;;;;;;;;;;;;;;;:::o;13787:75::-;;;;;;;;;;;;;:::o;18962:173::-;12074:12;:10;:12::i;:::-;12063:23;;:7;:5;:7::i;:::-;:23;;;12055:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19025:14:::1;;;;;;;;;;;19024:15;19016:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;19094:4;19077:14;;:21;;;;;;;;;;;;;;;;;;19123:4;19109:11;;:18;;;;;;;;;;;;;;;;;;18962:173::o:0;13670:48::-;;;;:::o;20679:142::-;12074:12;:10;:12::i;:::-;12063:23;;:7;:5;:7::i;:::-;:23;;;12055:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20774:12:::1;20767:29;;;20797:7;:5;:7::i;:::-;20806:6;20767:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20679:142:::0;;:::o;11928:87::-;11974:7;12001:6;;;;;;;;;;;11994:13;;11928:87;:::o;13869:69::-;;;;;;;;;;;;;:::o;2783:104::-;2839:13;2872:7;2865:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2783:104;:::o;18844:110::-;12074:12;:10;:12::i;:::-;12063:23;;:7;:5;:7::i;:::-;:23;;;12055:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18936:10:::1;18920:13;:26;;;;18844:110:::0;:::o;20829:112::-;12074:12;:10;:12::i;:::-;12063:23;;:7;:5;:7::i;:::-;:23;;;12055:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20896:37:::1;20923:9;20904:7;:5;:7::i;:::-;20896:26;;;;:37;;;;:::i;:::-;20829:112:::0;:::o;6931:377::-;7024:4;7041:24;7068:11;:25;7080:12;:10;:12::i;:::-;7068:25;;;;;;;;;;;;;;;:34;7094:7;7068:34;;;;;;;;;;;;;;;;7041:61;;7141:15;7121:16;:35;;7113:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;7209:67;7218:12;:10;:12::i;:::-;7232:7;7260:15;7241:16;:34;;;;:::i;:::-;7209:8;:67::i;:::-;7296:4;7289:11;;;6931:377;;;;:::o;13488:19::-;;;;;;;;;;;;;:::o;4195:175::-;4281:4;4298:42;4308:12;:10;:12::i;:::-;4322:9;4333:6;4298:9;:42::i;:::-;4358:4;4351:11;;4195:175;;;;:::o;13725:49::-;;;;:::o;19579:114::-;12074:12;:10;:12::i;:::-;12063:23;;:7;:5;:7::i;:::-;:23;;;12055:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19676:9:::1;19658:15;;:27;;;;;;;;;;;;;;;;;;19579:114:::0;:::o;20554:117::-;12074:12;:10;:12::i;:::-;12063:23;;:7;:5;:7::i;:::-;:23;;;12055:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20657:6:::1;20648;:15;;;;:::i;:::-;20630;:33;;;;20554:117:::0;:::o;19968:172::-;12074:12;:10;:12::i;:::-;12063:23;;:7;:5;:7::i;:::-;:23;;;12055:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20043:6:::1;20038:91;20059:6;:13;20055:1;:17;20038:91;;;20113:4;20094:5;:16;20100:6;20107:1;20100:9;;;;;;;;:::i;:::-;;;;;;;;20094:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;20074:3;;;;;:::i;:::-;;;;20038:91;;;;19968:172:::0;:::o;14221:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;4433:151::-;4522:7;4549:11;:18;4561:5;4549:18;;;;;;;;;;;;;;;:27;4568:7;4549:27;;;;;;;;;;;;;;;;4542:34;;4433:151;;;;:::o;18743:93::-;12074:12;:10;:12::i;:::-;12063:23;;:7;:5;:7::i;:::-;:23;;;12055:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18823:5:::1;18809:11;;:19;;;;;;;;;;;;;;;;;;18743:93:::0;:::o;20146:134::-;12074:12;:10;:12::i;:::-;12063:23;;:7;:5;:7::i;:::-;:23;;;12055:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20267:5:::1;20238:16;:26;20255:8;20238:26;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;20146:134:::0;;:::o;19143:202::-;12074:12;:10;:12::i;:::-;12063:23;;:7;:5;:7::i;:::-;:23;;;12055:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19252:35:::1;;;;;;;;19258:10;19252:35;;;;19270:10;19252:35;;;;19282:4;19252:35;;::::0;19244:5:::1;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;19333:4;19320:10;19307;:23;;;;:::i;:::-;:30;;;;:::i;:::-;19298:6;:39;;;;19143:202:::0;;;:::o;12253:192::-;12074:12;:10;:12::i;:::-;12063:23;;:7;:5;:7::i;:::-;:23;;;12055:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12362:1:::1;12342:22;;:8;:22;;::::0;12334:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;12418:19;12428:8;12418:9;:19::i;:::-;12253:192:::0;:::o;14103:37::-;;;;;;;;;;;;;;;;;;;:::o;13460:21::-;;;;;;;;;;;;;:::o;280:98::-;333:7;360:10;353:17;;280:98;:::o;10295:346::-;10414:1;10397:19;;:5;:19;;;10389:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10495:1;10476:21;;:7;:21;;;10468:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10579:6;10549:11;:18;10561:5;10549:18;;;;;;;;;;;;;;;:27;10568:7;10549:27;;;;;;;;;;;;;;;:36;;;;10617:7;10601:32;;10610:5;10601:32;;;10626:6;10601:32;;;;;;:::i;:::-;;;;;;;;10295:346;;;:::o;15047:1389::-;15163:1;15154:6;:10;15146:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15230:5;:13;15236:6;15230:13;;;;;;;;;;;;;;;;;;;;;;;;;15229:14;:35;;;;;15248:5;:16;15254:9;15248:16;;;;;;;;;;;;;;;;;;;;;;;;;15247:17;15229:35;15221:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;15337:16;:24;15354:6;15337:24;;;;;;;;;;;;;;;;;;;;;;;;;15336:25;:57;;;;;15366:16;:27;15383:9;15366:27;;;;;;;;;;;;;;;;;;;;;;;;;15365:28;15336:57;:70;;;;;15398:8;;;;;;;;;;;15397:9;15336:70;15333:405;;;15430:14;;;;;;;;;;;15422:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;15517:11;;15507:6;:21;;15499:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;15593:4;;;;;;;;;;;15580:17;;:9;:17;;;15577:150;;15658:15;;15648:6;15625:20;15635:9;15625;:20::i;:::-;:29;;;;:::i;:::-;:48;;15617:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;15577:150;15333:405;15750:11;15857:8;;;;;;;;;;;:36;;;;15869:16;:24;15886:6;15869:24;;;;;;;;;;;;;;;;;;;;;;;;;15857:36;:67;;;;15897:16;:27;15914:9;15897:27;;;;;;;;;;;;;;;;;;;;;;;;;15857:67;15853:257;;;15932:1;15926:7;;15853:257;;;16014:4;;;;;;;;;;;16001:17;;:9;:17;;;15998:100;;16048:3;16035:10;;16026:6;:19;;;;:::i;:::-;:25;;;;:::i;:::-;16020:31;;15998:100;;;16095:3;16086:6;;16077;:15;;;;:::i;:::-;:21;;;;:::i;:::-;16071:27;;15998:100;15853:257;16231:11;;;;;;;;;;;:24;;;;;16247:8;;;;;;;;;;;16246:9;16231:24;:42;;;;;16269:4;;;;;;;;;;;16259:14;;:6;:14;;;;16231:42;:53;;;;;16283:1;16277:3;:7;16231:53;16227:72;;;16286:13;:11;:13::i;:::-;16227:72;16312:48;16328:6;16336:9;16356:3;16347:6;:12;;;;:::i;:::-;16312:15;:48::i;:::-;16380:1;16374:3;:7;16371:55;;;16383:43;16399:6;16415:4;16422:3;16383:15;:43::i;:::-;16371:55;15135:1301;15047:1389;;;:::o;17830:400::-;17896:21;17934:1;17920:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17896:40;;17965:4;17947;17952:1;17947:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;17991:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17981:4;17986:1;17981:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;18017:53;18034:4;18049:6;;;;;;;;;;;18058:11;18017:8;:53::i;:::-;18109:6;;;;;;;;;;;:57;;;18167:11;18180:1;18183:4;18197;18204:15;18109:111;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17885:345;17830:400;:::o;11373:317::-;11488:6;11463:21;:31;;11455:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;11542:12;11560:9;:14;;11582:6;11560:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11541:52;;;11612:7;11604:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;11444:246;11373:317;;:::o;12453:173::-;12509:16;12528:6;;;;;;;;;;;12509:25;;12554:8;12545:6;;:17;;;;;;;;;;;;;;;;;;12609:8;12578:40;;12599:8;12578:40;;;;;;;;;;;;12498:128;12453:173;:::o;16444:1376::-;14363:8;;;;;;;;;;;14358:104;;14399:4;14388:8;;:15;;;;;;;;;;;;;;;;;;16493:23:::1;16519:24;16537:4;16519:9;:24::i;:::-;16493:50;;16577:13;;16558:15;:32;16554:1259;;16664:19;16699:1;16686:10;;:14;;;;:::i;:::-;16664:36;;16715:32;16790:11;16768:9;:19;;;16750:15;:37;;;;:::i;:::-;:51;;;;:::i;:::-;16715:86;;16816:14;16851:24;16833:15;:42;;;;:::i;:::-;16816:59;;16896:23;16922:21;16896:47;;16964:24;16981:6;16964:16;:24::i;:::-;17009:20;17056:15;17032:21;:39;;;;:::i;:::-;17009:62;;17086:19;17137:9;:19;;;17123:11;:33;;;;:::i;:::-;17107:12;:50;;;;:::i;:::-;17086:71;;17172:29;17218:9;:19;;;17204:11;:33;;;;:::i;:::-;17172:65;;17285:1;17261:21;:25;17258:170;;;17351:61;17364:24;17390:21;17351:12;:61::i;:::-;17258:170;17448:20;17489:9;:19;;;17485:1;17471:11;:15;;;;:::i;:::-;:37;;;;:::i;:::-;17448:60;;17541:1;17526:12;:16;17523:103;;;17562:48;17597:12;17570:15;;;;;;;;;;;17562:34;;;;:48;;;;:::i;:::-;17523:103;17654:14;17689:9;:13;;;17685:1;17671:11;:15;;;;:::i;:::-;:31;;;;:::i;:::-;17654:48;;17729:1;17720:6;:10;17717:85;;;17750:36;17779:6;17758:9;;;;;;;;;;;17750:28;;;;:36;;;;:::i;:::-;17717:85;16592:1221;;;;;;;;;16554:1259;16482:1338;14445:5:::0;14434:8;;:16;;;;;;;;;;;;;;;;;;14358:104;16444:1376::o;7798:604::-;7922:1;7904:20;;:6;:20;;;7896:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;8006:1;7985:23;;:9;:23;;;7977:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;8061:47;8082:6;8090:9;8101:6;8061:20;:47::i;:::-;8121:21;8145:9;:17;8155:6;8145:17;;;;;;;;;;;;;;;;8121:41;;8198:6;8181:13;:23;;8173:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;8294:6;8278:13;:22;;;;:::i;:::-;8258:9;:17;8268:6;8258:17;;;;;;;;;;;;;;;:42;;;;8335:6;8311:9;:20;8321:9;8311:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;8376:9;8359:35;;8368:6;8359:35;;;8387:6;8359:35;;;;;;:::i;:::-;;;;;;;;7885:517;7798:604;;;:::o;18238:497::-;18386:53;18403:4;18418:6;;;;;;;;;;;18427:11;18386:8;:53::i;:::-;18482:6;;;;;;;;;;;:22;;;18512:9;18545:4;18565:11;18591:1;18634;18677:9;;;;;;;;;;;18701:15;18482:245;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18238:497;;:::o;11252:92::-;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1784:75::-;1817:6;1850:2;1844:9;1834:19;;1784:75;:::o;1865:117::-;1974:1;1971;1964:12;1988:117;2097:1;2094;2087:12;2111:122;2184:24;2202:5;2184:24;:::i;:::-;2177:5;2174:35;2164:63;;2223:1;2220;2213:12;2164:63;2111:122;:::o;2239:139::-;2285:5;2323:6;2310:20;2301:29;;2339:33;2366:5;2339:33;:::i;:::-;2239:139;;;;:::o;2384:619::-;2461:6;2469;2477;2526:2;2514:9;2505:7;2501:23;2497:32;2494:119;;;2532:79;;:::i;:::-;2494:119;2652:1;2677:53;2722:7;2713:6;2702:9;2698:22;2677:53;:::i;:::-;2667:63;;2623:117;2779:2;2805:53;2850:7;2841:6;2830:9;2826:22;2805:53;:::i;:::-;2795:63;;2750:118;2907:2;2933:53;2978:7;2969:6;2958:9;2954:22;2933:53;:::i;:::-;2923:63;;2878:118;2384:619;;;;;:::o;3009:126::-;3046:7;3086:42;3079:5;3075:54;3064:65;;3009:126;;;:::o;3141:96::-;3178:7;3207:24;3225:5;3207:24;:::i;:::-;3196:35;;3141:96;;;:::o;3243:122::-;3316:24;3334:5;3316:24;:::i;:::-;3309:5;3306:35;3296:63;;3355:1;3352;3345:12;3296:63;3243:122;:::o;3371:139::-;3417:5;3455:6;3442:20;3433:29;;3471:33;3498:5;3471:33;:::i;:::-;3371:139;;;;:::o;3516:474::-;3584:6;3592;3641:2;3629:9;3620:7;3616:23;3612:32;3609:119;;;3647:79;;:::i;:::-;3609:119;3767:1;3792:53;3837:7;3828:6;3817:9;3813:22;3792:53;:::i;:::-;3782:63;;3738:117;3894:2;3920:53;3965:7;3956:6;3945:9;3941:22;3920:53;:::i;:::-;3910:63;;3865:118;3516:474;;;;;:::o;3996:90::-;4030:7;4073:5;4066:13;4059:21;4048:32;;3996:90;;;:::o;4092:109::-;4173:21;4188:5;4173:21;:::i;:::-;4168:3;4161:34;4092:109;;:::o;4207:210::-;4294:4;4332:2;4321:9;4317:18;4309:26;;4345:65;4407:1;4396:9;4392:17;4383:6;4345:65;:::i;:::-;4207:210;;;;:::o;4423:329::-;4482:6;4531:2;4519:9;4510:7;4506:23;4502:32;4499:119;;;4537:79;;:::i;:::-;4499:119;4657:1;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4628:117;4423:329;;;;:::o;4758:619::-;4835:6;4843;4851;4900:2;4888:9;4879:7;4875:23;4871:32;4868:119;;;4906:79;;:::i;:::-;4868:119;5026:1;5051:53;5096:7;5087:6;5076:9;5072:22;5051:53;:::i;:::-;5041:63;;4997:117;5153:2;5179:53;5224:7;5215:6;5204:9;5200:22;5179:53;:::i;:::-;5169:63;;5124:118;5281:2;5307:53;5352:7;5343:6;5332:9;5328:22;5307:53;:::i;:::-;5297:63;;5252:118;4758:619;;;;;:::o;5383:86::-;5418:7;5458:4;5451:5;5447:16;5436:27;;5383:86;;;:::o;5475:112::-;5558:22;5574:5;5558:22;:::i;:::-;5553:3;5546:35;5475:112;;:::o;5593:214::-;5682:4;5720:2;5709:9;5705:18;5697:26;;5733:67;5797:1;5786:9;5782:17;5773:6;5733:67;:::i;:::-;5593:214;;;;:::o;5813:111::-;5865:7;5894:24;5912:5;5894:24;:::i;:::-;5883:35;;5813:111;;;:::o;5930:152::-;6018:39;6051:5;6018:39;:::i;:::-;6011:5;6008:50;5998:78;;6072:1;6069;6062:12;5998:78;5930:152;:::o;6088:169::-;6149:5;6187:6;6174:20;6165:29;;6203:48;6245:5;6203:48;:::i;:::-;6088:169;;;;:::o;6263:504::-;6346:6;6354;6403:2;6391:9;6382:7;6378:23;6374:32;6371:119;;;6409:79;;:::i;:::-;6371:119;6529:1;6554:68;6614:7;6605:6;6594:9;6590:22;6554:68;:::i;:::-;6544:78;;6500:132;6671:2;6697:53;6742:7;6733:6;6722:9;6718:22;6697:53;:::i;:::-;6687:63;;6642:118;6263:504;;;;;:::o;6773:329::-;6832:6;6881:2;6869:9;6860:7;6856:23;6852:32;6849:119;;;6887:79;;:::i;:::-;6849:119;7007:1;7032:53;7077:7;7068:6;7057:9;7053:22;7032:53;:::i;:::-;7022:63;;6978:117;6773:329;;;;:::o;7108:442::-;7257:4;7295:2;7284:9;7280:18;7272:26;;7308:71;7376:1;7365:9;7361:17;7352:6;7308:71;:::i;:::-;7389:72;7457:2;7446:9;7442:18;7433:6;7389:72;:::i;:::-;7471;7539:2;7528:9;7524:18;7515:6;7471:72;:::i;:::-;7108:442;;;;;;:::o;7556:118::-;7643:24;7661:5;7643:24;:::i;:::-;7638:3;7631:37;7556:118;;:::o;7680:222::-;7773:4;7811:2;7800:9;7796:18;7788:26;;7824:71;7892:1;7881:9;7877:17;7868:6;7824:71;:::i;:::-;7680:222;;;;:::o;7908:117::-;8017:1;8014;8007:12;8031:180;8079:77;8076:1;8069:88;8176:4;8173:1;8166:15;8200:4;8197:1;8190:15;8217:281;8300:27;8322:4;8300:27;:::i;:::-;8292:6;8288:40;8430:6;8418:10;8415:22;8394:18;8382:10;8379:34;8376:62;8373:88;;;8441:18;;:::i;:::-;8373:88;8481:10;8477:2;8470:22;8260:238;8217:281;;:::o;8504:129::-;8538:6;8565:20;;:::i;:::-;8555:30;;8594:33;8622:4;8614:6;8594:33;:::i;:::-;8504:129;;;:::o;8639:311::-;8716:4;8806:18;8798:6;8795:30;8792:56;;;8828:18;;:::i;:::-;8792:56;8878:4;8870:6;8866:17;8858:25;;8938:4;8932;8928:15;8920:23;;8639:311;;;:::o;8956:117::-;9065:1;9062;9055:12;9096:710;9192:5;9217:81;9233:64;9290:6;9233:64;:::i;:::-;9217:81;:::i;:::-;9208:90;;9318:5;9347:6;9340:5;9333:21;9381:4;9374:5;9370:16;9363:23;;9434:4;9426:6;9422:17;9414:6;9410:30;9463:3;9455:6;9452:15;9449:122;;;9482:79;;:::i;:::-;9449:122;9597:6;9580:220;9614:6;9609:3;9606:15;9580:220;;;9689:3;9718:37;9751:3;9739:10;9718:37;:::i;:::-;9713:3;9706:50;9785:4;9780:3;9776:14;9769:21;;9656:144;9640:4;9635:3;9631:14;9624:21;;9580:220;;;9584:21;9198:608;;9096:710;;;;;:::o;9829:370::-;9900:5;9949:3;9942:4;9934:6;9930:17;9926:27;9916:122;;9957:79;;:::i;:::-;9916:122;10074:6;10061:20;10099:94;10189:3;10181:6;10174:4;10166:6;10162:17;10099:94;:::i;:::-;10090:103;;9906:293;9829:370;;;;:::o;10205:539::-;10289:6;10338:2;10326:9;10317:7;10313:23;10309:32;10306:119;;;10344:79;;:::i;:::-;10306:119;10492:1;10481:9;10477:17;10464:31;10522:18;10514:6;10511:30;10508:117;;;10544:79;;:::i;:::-;10508:117;10649:78;10719:7;10710:6;10699:9;10695:22;10649:78;:::i;:::-;10639:88;;10435:302;10205:539;;;;:::o;10750:474::-;10818:6;10826;10875:2;10863:9;10854:7;10850:23;10846:32;10843:119;;;10881:79;;:::i;:::-;10843:119;11001:1;11026:53;11071:7;11062:6;11051:9;11047:22;11026:53;:::i;:::-;11016:63;;10972:117;11128:2;11154:53;11199:7;11190:6;11179:9;11175:22;11154:53;:::i;:::-;11144:63;;11099:118;10750:474;;;;;:::o;11230:116::-;11300:21;11315:5;11300:21;:::i;:::-;11293:5;11290:32;11280:60;;11336:1;11333;11326:12;11280:60;11230:116;:::o;11352:133::-;11395:5;11433:6;11420:20;11411:29;;11449:30;11473:5;11449:30;:::i;:::-;11352:133;;;;:::o;11491:323::-;11547:6;11596:2;11584:9;11575:7;11571:23;11567:32;11564:119;;;11602:79;;:::i;:::-;11564:119;11722:1;11747:50;11789:7;11780:6;11769:9;11765:22;11747:50;:::i;:::-;11737:60;;11693:114;11491:323;;;;:::o;11820:468::-;11885:6;11893;11942:2;11930:9;11921:7;11917:23;11913:32;11910:119;;;11948:79;;:::i;:::-;11910:119;12068:1;12093:53;12138:7;12129:6;12118:9;12114:22;12093:53;:::i;:::-;12083:63;;12039:117;12195:2;12221:50;12263:7;12254:6;12243:9;12239:22;12221:50;:::i;:::-;12211:60;;12166:115;11820:468;;;;;:::o;12294:60::-;12322:3;12343:5;12336:12;;12294:60;;;:::o;12360:142::-;12410:9;12443:53;12461:34;12470:24;12488:5;12470:24;:::i;:::-;12461:34;:::i;:::-;12443:53;:::i;:::-;12430:66;;12360:142;;;:::o;12508:126::-;12558:9;12591:37;12622:5;12591:37;:::i;:::-;12578:50;;12508:126;;;:::o;12640:141::-;12705:9;12738:37;12769:5;12738:37;:::i;:::-;12725:50;;12640:141;;;:::o;12787:161::-;12889:52;12935:5;12889:52;:::i;:::-;12884:3;12877:65;12787:161;;:::o;12954:252::-;13062:4;13100:2;13089:9;13085:18;13077:26;;13113:86;13196:1;13185:9;13181:17;13172:6;13113:86;:::i;:::-;12954:252;;;;:::o;13212:180::-;13260:77;13257:1;13250:88;13357:4;13354:1;13347:15;13381:4;13378:1;13371:15;13398:320;13442:6;13479:1;13473:4;13469:12;13459:22;;13526:1;13520:4;13516:12;13547:18;13537:81;;13603:4;13595:6;13591:17;13581:27;;13537:81;13665:2;13657:6;13654:14;13634:18;13631:38;13628:84;;13684:18;;:::i;:::-;13628:84;13449:269;13398:320;;;:::o;13724:182::-;13864:34;13860:1;13852:6;13848:14;13841:58;13724:182;:::o;13912:366::-;14054:3;14075:67;14139:2;14134:3;14075:67;:::i;:::-;14068:74;;14151:93;14240:3;14151:93;:::i;:::-;14269:2;14264:3;14260:12;14253:19;;13912:366;;;:::o;14284:419::-;14450:4;14488:2;14477:9;14473:18;14465:26;;14537:9;14531:4;14527:20;14523:1;14512:9;14508:17;14501:47;14565:131;14691:4;14565:131;:::i;:::-;14557:139;;14284:419;;;:::o;14709:180::-;14757:77;14754:1;14747:88;14854:4;14851:1;14844:15;14878:4;14875:1;14868:15;14895:191;14935:3;14954:20;14972:1;14954:20;:::i;:::-;14949:25;;14988:20;15006:1;14988:20;:::i;:::-;14983:25;;15031:1;15028;15024:9;15017:16;;15052:3;15049:1;15046:10;15043:36;;;15059:18;;:::i;:::-;15043:36;14895:191;;;;:::o;15092:227::-;15232:34;15228:1;15220:6;15216:14;15209:58;15301:10;15296:2;15288:6;15284:15;15277:35;15092:227;:::o;15325:366::-;15467:3;15488:67;15552:2;15547:3;15488:67;:::i;:::-;15481:74;;15564:93;15653:3;15564:93;:::i;:::-;15682:2;15677:3;15673:12;15666:19;;15325:366;;;:::o;15697:419::-;15863:4;15901:2;15890:9;15886:18;15878:26;;15950:9;15944:4;15940:20;15936:1;15925:9;15921:17;15914:47;15978:131;16104:4;15978:131;:::i;:::-;15970:139;;15697:419;;;:::o;16122:194::-;16162:4;16182:20;16200:1;16182:20;:::i;:::-;16177:25;;16216:20;16234:1;16216:20;:::i;:::-;16211:25;;16260:1;16257;16253:9;16245:17;;16284:1;16278:4;16275:11;16272:37;;;16289:18;;:::i;:::-;16272:37;16122:194;;;;:::o;16322:348::-;16362:7;16385:20;16403:1;16385:20;:::i;:::-;16380:25;;16419:20;16437:1;16419:20;:::i;:::-;16414:25;;16607:1;16539:66;16535:74;16532:1;16529:81;16524:1;16517:9;16510:17;16506:105;16503:131;;;16614:18;;:::i;:::-;16503:131;16662:1;16659;16655:9;16644:20;;16322:348;;;;:::o;16676:180::-;16724:77;16721:1;16714:88;16821:4;16818:1;16811:15;16845:4;16842:1;16835:15;16862:185;16902:1;16919:20;16937:1;16919:20;:::i;:::-;16914:25;;16953:20;16971:1;16953:20;:::i;:::-;16948:25;;16992:1;16982:35;;16997:18;;:::i;:::-;16982:35;17039:1;17036;17032:9;17027:14;;16862:185;;;;:::o;17053:172::-;17193:24;17189:1;17181:6;17177:14;17170:48;17053:172;:::o;17231:366::-;17373:3;17394:67;17458:2;17453:3;17394:67;:::i;:::-;17387:74;;17470:93;17559:3;17470:93;:::i;:::-;17588:2;17583:3;17579:12;17572:19;;17231:366;;;:::o;17603:419::-;17769:4;17807:2;17796:9;17792:18;17784:26;;17856:9;17850:4;17846:20;17842:1;17831:9;17827:17;17820:47;17884:131;18010:4;17884:131;:::i;:::-;17876:139;;17603:419;;;:::o;18028:332::-;18149:4;18187:2;18176:9;18172:18;18164:26;;18200:71;18268:1;18257:9;18253:17;18244:6;18200:71;:::i;:::-;18281:72;18349:2;18338:9;18334:18;18325:6;18281:72;:::i;:::-;18028:332;;;;;:::o;18366:137::-;18420:5;18451:6;18445:13;18436:22;;18467:30;18491:5;18467:30;:::i;:::-;18366:137;;;;:::o;18509:345::-;18576:6;18625:2;18613:9;18604:7;18600:23;18596:32;18593:119;;;18631:79;;:::i;:::-;18593:119;18751:1;18776:61;18829:7;18820:6;18809:9;18805:22;18776:61;:::i;:::-;18766:71;;18722:125;18509:345;;;;:::o;18860:224::-;19000:34;18996:1;18988:6;18984:14;18977:58;19069:7;19064:2;19056:6;19052:15;19045:32;18860:224;:::o;19090:366::-;19232:3;19253:67;19317:2;19312:3;19253:67;:::i;:::-;19246:74;;19329:93;19418:3;19329:93;:::i;:::-;19447:2;19442:3;19438:12;19431:19;;19090:366;;;:::o;19462:419::-;19628:4;19666:2;19655:9;19651:18;19643:26;;19715:9;19709:4;19705:20;19701:1;19690:9;19686:17;19679:47;19743:131;19869:4;19743:131;:::i;:::-;19735:139;;19462:419;;;:::o;19887:180::-;19935:77;19932:1;19925:88;20032:4;20029:1;20022:15;20056:4;20053:1;20046:15;20073:233;20112:3;20135:24;20153:5;20135:24;:::i;:::-;20126:33;;20181:66;20174:5;20171:77;20168:103;;20251:18;;:::i;:::-;20168:103;20298:1;20291:5;20287:13;20280:20;;20073:233;;;:::o;20312:225::-;20452:34;20448:1;20440:6;20436:14;20429:58;20521:8;20516:2;20508:6;20504:15;20497:33;20312:225;:::o;20543:366::-;20685:3;20706:67;20770:2;20765:3;20706:67;:::i;:::-;20699:74;;20782:93;20871:3;20782:93;:::i;:::-;20900:2;20895:3;20891:12;20884:19;;20543:366;;;:::o;20915:419::-;21081:4;21119:2;21108:9;21104:18;21096:26;;21168:9;21162:4;21158:20;21154:1;21143:9;21139:17;21132:47;21196:131;21322:4;21196:131;:::i;:::-;21188:139;;20915:419;;;:::o;21340:223::-;21480:34;21476:1;21468:6;21464:14;21457:58;21549:6;21544:2;21536:6;21532:15;21525:31;21340:223;:::o;21569:366::-;21711:3;21732:67;21796:2;21791:3;21732:67;:::i;:::-;21725:74;;21808:93;21897:3;21808:93;:::i;:::-;21926:2;21921:3;21917:12;21910:19;;21569:366;;;:::o;21941:419::-;22107:4;22145:2;22134:9;22130:18;22122:26;;22194:9;22188:4;22184:20;22180:1;22169:9;22165:17;22158:47;22222:131;22348:4;22222:131;:::i;:::-;22214:139;;21941:419;;;:::o;22366:221::-;22506:34;22502:1;22494:6;22490:14;22483:58;22575:4;22570:2;22562:6;22558:15;22551:29;22366:221;:::o;22593:366::-;22735:3;22756:67;22820:2;22815:3;22756:67;:::i;:::-;22749:74;;22832:93;22921:3;22832:93;:::i;:::-;22950:2;22945:3;22941:12;22934:19;;22593:366;;;:::o;22965:419::-;23131:4;23169:2;23158:9;23154:18;23146:26;;23218:9;23212:4;23208:20;23204:1;23193:9;23189:17;23182:47;23246:131;23372:4;23246:131;:::i;:::-;23238:139;;22965:419;;;:::o;23390:228::-;23530:34;23526:1;23518:6;23514:14;23507:58;23599:11;23594:2;23586:6;23582:15;23575:36;23390:228;:::o;23624:366::-;23766:3;23787:67;23851:2;23846:3;23787:67;:::i;:::-;23780:74;;23863:93;23952:3;23863:93;:::i;:::-;23981:2;23976:3;23972:12;23965:19;;23624:366;;;:::o;23996:419::-;24162:4;24200:2;24189:9;24185:18;24177:26;;24249:9;24243:4;24239:20;24235:1;24224:9;24220:17;24213:47;24277:131;24403:4;24277:131;:::i;:::-;24269:139;;23996:419;;;:::o;24421:175::-;24561:27;24557:1;24549:6;24545:14;24538:51;24421:175;:::o;24602:366::-;24744:3;24765:67;24829:2;24824:3;24765:67;:::i;:::-;24758:74;;24841:93;24930:3;24841:93;:::i;:::-;24959:2;24954:3;24950:12;24943:19;;24602:366;;;:::o;24974:419::-;25140:4;25178:2;25167:9;25163:18;25155:26;;25227:9;25221:4;25217:20;25213:1;25202:9;25198:17;25191:47;25255:131;25381:4;25255:131;:::i;:::-;25247:139;;24974:419;;;:::o;25399:172::-;25539:24;25535:1;25527:6;25523:14;25516:48;25399:172;:::o;25577:366::-;25719:3;25740:67;25804:2;25799:3;25740:67;:::i;:::-;25733:74;;25816:93;25905:3;25816:93;:::i;:::-;25934:2;25929:3;25925:12;25918:19;;25577:366;;;:::o;25949:419::-;26115:4;26153:2;26142:9;26138:18;26130:26;;26202:9;26196:4;26192:20;26188:1;26177:9;26173:17;26166:47;26230:131;26356:4;26230:131;:::i;:::-;26222:139;;25949:419;;;:::o;26374:179::-;26514:31;26510:1;26502:6;26498:14;26491:55;26374:179;:::o;26559:366::-;26701:3;26722:67;26786:2;26781:3;26722:67;:::i;:::-;26715:74;;26798:93;26887:3;26798:93;:::i;:::-;26916:2;26911:3;26907:12;26900:19;;26559:366;;;:::o;26931:419::-;27097:4;27135:2;27124:9;27120:18;27112:26;;27184:9;27178:4;27174:20;27170:1;27159:9;27155:17;27148:47;27212:131;27338:4;27212:131;:::i;:::-;27204:139;;26931:419;;;:::o;27356:220::-;27496:34;27492:1;27484:6;27480:14;27473:58;27565:3;27560:2;27552:6;27548:15;27541:28;27356:220;:::o;27582:366::-;27724:3;27745:67;27809:2;27804:3;27745:67;:::i;:::-;27738:74;;27821:93;27910:3;27821:93;:::i;:::-;27939:2;27934:3;27930:12;27923:19;;27582:366;;;:::o;27954:419::-;28120:4;28158:2;28147:9;28143:18;28135:26;;28207:9;28201:4;28197:20;28193:1;28182:9;28178:17;28171:47;28235:131;28361:4;28235:131;:::i;:::-;28227:139;;27954:419;;;:::o;28379:143::-;28436:5;28467:6;28461:13;28452:22;;28483:33;28510:5;28483:33;:::i;:::-;28379:143;;;;:::o;28528:351::-;28598:6;28647:2;28635:9;28626:7;28622:23;28618:32;28615:119;;;28653:79;;:::i;:::-;28615:119;28773:1;28798:64;28854:7;28845:6;28834:9;28830:22;28798:64;:::i;:::-;28788:74;;28744:128;28528:351;;;;:::o;28885:85::-;28930:7;28959:5;28948:16;;28885:85;;;:::o;28976:158::-;29034:9;29067:61;29085:42;29094:32;29120:5;29094:32;:::i;:::-;29085:42;:::i;:::-;29067:61;:::i;:::-;29054:74;;28976:158;;;:::o;29140:147::-;29235:45;29274:5;29235:45;:::i;:::-;29230:3;29223:58;29140:147;;:::o;29293:114::-;29360:6;29394:5;29388:12;29378:22;;29293:114;;;:::o;29413:184::-;29512:11;29546:6;29541:3;29534:19;29586:4;29581:3;29577:14;29562:29;;29413:184;;;;:::o;29603:132::-;29670:4;29693:3;29685:11;;29723:4;29718:3;29714:14;29706:22;;29603:132;;;:::o;29741:108::-;29818:24;29836:5;29818:24;:::i;:::-;29813:3;29806:37;29741:108;;:::o;29855:179::-;29924:10;29945:46;29987:3;29979:6;29945:46;:::i;:::-;30023:4;30018:3;30014:14;30000:28;;29855:179;;;;:::o;30040:113::-;30110:4;30142;30137:3;30133:14;30125:22;;30040:113;;;:::o;30189:732::-;30308:3;30337:54;30385:5;30337:54;:::i;:::-;30407:86;30486:6;30481:3;30407:86;:::i;:::-;30400:93;;30517:56;30567:5;30517:56;:::i;:::-;30596:7;30627:1;30612:284;30637:6;30634:1;30631:13;30612:284;;;30713:6;30707:13;30740:63;30799:3;30784:13;30740:63;:::i;:::-;30733:70;;30826:60;30879:6;30826:60;:::i;:::-;30816:70;;30672:224;30659:1;30656;30652:9;30647:14;;30612:284;;;30616:14;30912:3;30905:10;;30313:608;;;30189:732;;;;:::o;30927:831::-;31190:4;31228:3;31217:9;31213:19;31205:27;;31242:71;31310:1;31299:9;31295:17;31286:6;31242:71;:::i;:::-;31323:80;31399:2;31388:9;31384:18;31375:6;31323:80;:::i;:::-;31450:9;31444:4;31440:20;31435:2;31424:9;31420:18;31413:48;31478:108;31581:4;31572:6;31478:108;:::i;:::-;31470:116;;31596:72;31664:2;31653:9;31649:18;31640:6;31596:72;:::i;:::-;31678:73;31746:3;31735:9;31731:19;31722:6;31678:73;:::i;:::-;30927:831;;;;;;;;:::o;31764:179::-;31904:31;31900:1;31892:6;31888:14;31881:55;31764:179;:::o;31949:366::-;32091:3;32112:67;32176:2;32171:3;32112:67;:::i;:::-;32105:74;;32188:93;32277:3;32188:93;:::i;:::-;32306:2;32301:3;32297:12;32290:19;;31949:366;;;:::o;32321:419::-;32487:4;32525:2;32514:9;32510:18;32502:26;;32574:9;32568:4;32564:20;32560:1;32549:9;32545:17;32538:47;32602:131;32728:4;32602:131;:::i;:::-;32594:139;;32321:419;;;:::o;32746:147::-;32847:11;32884:3;32869:18;;32746:147;;;;:::o;32899:114::-;;:::o;33019:398::-;33178:3;33199:83;33280:1;33275:3;33199:83;:::i;:::-;33192:90;;33291:93;33380:3;33291:93;:::i;:::-;33409:1;33404:3;33400:11;33393:18;;33019:398;;;:::o;33423:379::-;33607:3;33629:147;33772:3;33629:147;:::i;:::-;33622:154;;33793:3;33786:10;;33423:379;;;:::o;33808:245::-;33948:34;33944:1;33936:6;33932:14;33925:58;34017:28;34012:2;34004:6;34000:15;33993:53;33808:245;:::o;34059:366::-;34201:3;34222:67;34286:2;34281:3;34222:67;:::i;:::-;34215:74;;34298:93;34387:3;34298:93;:::i;:::-;34416:2;34411:3;34407:12;34400:19;;34059:366;;;:::o;34431:419::-;34597:4;34635:2;34624:9;34620:18;34612:26;;34684:9;34678:4;34674:20;34670:1;34659:9;34655:17;34648:47;34712:131;34838:4;34712:131;:::i;:::-;34704:139;;34431:419;;;:::o;34856:224::-;34996:34;34992:1;34984:6;34980:14;34973:58;35065:7;35060:2;35052:6;35048:15;35041:32;34856:224;:::o;35086:366::-;35228:3;35249:67;35313:2;35308:3;35249:67;:::i;:::-;35242:74;;35325:93;35414:3;35325:93;:::i;:::-;35443:2;35438:3;35434:12;35427:19;;35086:366;;;:::o;35458:419::-;35624:4;35662:2;35651:9;35647:18;35639:26;;35711:9;35705:4;35701:20;35697:1;35686:9;35682:17;35675:47;35739:131;35865:4;35739:131;:::i;:::-;35731:139;;35458:419;;;:::o;35883:222::-;36023:34;36019:1;36011:6;36007:14;36000:58;36092:5;36087:2;36079:6;36075:15;36068:30;35883:222;:::o;36111:366::-;36253:3;36274:67;36338:2;36333:3;36274:67;:::i;:::-;36267:74;;36350:93;36439:3;36350:93;:::i;:::-;36468:2;36463:3;36459:12;36452:19;;36111:366;;;:::o;36483:419::-;36649:4;36687:2;36676:9;36672:18;36664:26;;36736:9;36730:4;36726:20;36722:1;36711:9;36707:17;36700:47;36764:131;36890:4;36764:131;:::i;:::-;36756:139;;36483:419;;;:::o;36908:225::-;37048:34;37044:1;37036:6;37032:14;37025:58;37117:8;37112:2;37104:6;37100:15;37093:33;36908:225;:::o;37139:366::-;37281:3;37302:67;37366:2;37361:3;37302:67;:::i;:::-;37295:74;;37378:93;37467:3;37378:93;:::i;:::-;37496:2;37491:3;37487:12;37480:19;;37139:366;;;:::o;37511:419::-;37677:4;37715:2;37704:9;37700:18;37692:26;;37764:9;37758:4;37754:20;37750:1;37739:9;37735:17;37728:47;37792:131;37918:4;37792:131;:::i;:::-;37784:139;;37511:419;;;:::o;37936:807::-;38185:4;38223:3;38212:9;38208:19;38200:27;;38237:71;38305:1;38294:9;38290:17;38281:6;38237:71;:::i;:::-;38318:72;38386:2;38375:9;38371:18;38362:6;38318:72;:::i;:::-;38400:80;38476:2;38465:9;38461:18;38452:6;38400:80;:::i;:::-;38490;38566:2;38555:9;38551:18;38542:6;38490:80;:::i;:::-;38580:73;38648:3;38637:9;38633:19;38624:6;38580:73;:::i;:::-;38663;38731:3;38720:9;38716:19;38707:6;38663:73;:::i;:::-;37936:807;;;;;;;;;:::o;38749:143::-;38806:5;38837:6;38831:13;38822:22;;38853:33;38880:5;38853:33;:::i;:::-;38749:143;;;;:::o;38898:663::-;38986:6;38994;39002;39051:2;39039:9;39030:7;39026:23;39022:32;39019:119;;;39057:79;;:::i;:::-;39019:119;39177:1;39202:64;39258:7;39249:6;39238:9;39234:22;39202:64;:::i;:::-;39192:74;;39148:128;39315:2;39341:64;39397:7;39388:6;39377:9;39373:22;39341:64;:::i;:::-;39331:74;;39286:129;39454:2;39480:64;39536:7;39527:6;39516:9;39512:22;39480:64;:::i;:::-;39470:74;;39425:129;38898:663;;;;;:::o

Swarm Source

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