ETH Price: $1,877.35 (-3.86%)
Gas: 0.75 Gwei
 

Overview

Max Total Supply

100,000,000,000,000 Zuzalu

Holders

43

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
Coinbase: Fees
Balance
126,731,772,967.37450734 Zuzalu

Value
$0.00
0x382ffce2287252f930e1c8dc9328dac5bf282ba1
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:
Zuzalu

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

pragma solidity 0.8.17;

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

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

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

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 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

library Address {
    function isContract(address account) internal view returns (bool) {
        return account.code.length > 0;
    }

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

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, "Address: low-level call failed");
    }

    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResultFromTarget(target, success, returndata, errorMessage);
    }

    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResultFromTarget(target, success, returndata, errorMessage);
    }

    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResultFromTarget(target, success, returndata, errorMessage);
    }

    function verifyCallResultFromTarget(
        address target,
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        if (success) {
            if (returndata.length == 0) {
                // only check isContract if the call was successful and the return data is empty
                // otherwise we already know that it was a contract
                require(isContract(target), "Address: call to non-contract");
            }
            return returndata;
        } else {
            _revert(returndata, errorMessage);
        }
    }

    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            _revert(returndata, errorMessage);
        }
    }

    function _revert(bytes memory returndata, string memory errorMessage) private pure {
        // Look for revert reason and bubble it up if present
        if (returndata.length > 0) {
            // The easiest way to bubble the revert reason is using memory via assembly
            /// @solidity memory-safe-assembly
            assembly {
                let returndata_size := mload(returndata)
                revert(add(32, returndata), returndata_size)
            }
        } else {
            revert(errorMessage);
        }
    }
}

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

abstract contract Ownable is Context {
    address private _owner;

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

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 9;
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

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

    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
            unchecked {
                _approve(sender, _msgSender(), currentAllowance - amount);
            }
        }

        _transfer(sender, recipient, amount);

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

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

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

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

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

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

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

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

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

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

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

contract Zuzalu is ERC20, Ownable {
    using Address for address payable;

    IUniswapV2Router02 public uniswapV2Router;
    address public  uniswapV2Pair;

    mapping (address => bool) private _isExcludedFromFees;

    uint256 public  liquidityFeeOnBuy;
    uint256 public  liquidityFeeOnSell;

    uint256 private _totalFeesOnBuy;
    uint256 private _totalFeesOnSell;

    uint256 public  swapTokensAtAmount;
    bool    private swapping;

    bool    public swapEnabled;

    event ExcludeFromFees(address indexed account, bool isExcluded);
    event SwapAndLiquify(uint256 tokensSwapped,uint256 bnbReceived,uint256 tokensIntoLiqudity);
    event SwapTokensAtAmountUpdated(uint256 swapTokensAtAmount);

    constructor () ERC20("Zuzalu", "Zuzalu") 
    {   
        address router;
        if (block.chainid == 56) {
            router = 0x10ED43C718714eb63d5aA57B78B54704E256024E; // BSC Pancake Mainnet Router
        } else if (block.chainid == 97) {
            router = 0xD99D1c33F9fC3444f8101754aBC46c52416550D1; // BSC Pancake Testnet Router
        } else if (block.chainid == 1 || block.chainid == 5) {
            router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // ETH Uniswap Mainnet % Testnet
        } else {
            revert();
        }

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router);
        address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair   = _uniswapV2Pair;

        _approve(address(this), address(uniswapV2Router), type(uint256).max);

        liquidityFeeOnBuy  = 1;
        liquidityFeeOnSell = 1;

        _totalFeesOnBuy    = liquidityFeeOnBuy;
        _totalFeesOnSell   = liquidityFeeOnSell;

        transferOwnership(address(0x94ec7Ccad52d0b800e82caED7a84238c987E4E0f));
        
        _isExcludedFromFees[owner()] = true;
        _isExcludedFromFees[address(0xdead)] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[0x663A5C229c09b049E36dCc11a9B0d4a8Eb9db214] = true; //LP Locker

        _mint(owner(), 1e14 * (10 ** decimals()));
        swapTokensAtAmount = totalSupply() / 5_000;

        tradingEnabled = false;
        swapEnabled = false;
    }

    receive() external payable {}

    function claimStuckTokens(address token) external onlyOwner {
        require(token != address(this), "Owner cannot claim contract's balance of its own tokens");
        if (token == address(0x0)) {
            payable(msg.sender).sendValue(address(this).balance);
            return;
        }
        IERC20 ERC20token = IERC20(token);
        uint256 balance = ERC20token.balanceOf(address(this));
        ERC20token.transfer(msg.sender, balance);
    }

    function excludeFromFees(address account, bool excluded) external onlyOwner{
        require(_isExcludedFromFees[account] != excluded,"Account is already the value of 'excluded'");
        _isExcludedFromFees[account] = excluded;

        emit ExcludeFromFees(account, excluded);
    }

    function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }

    bool public tradingEnabled;

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

    function _transfer(address from,address to,uint256 amount) internal  override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(tradingEnabled || _isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading not yet enabled!");
       
        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

                uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (canSwap &&
            !swapping &&
            to == uniswapV2Pair &&
            _totalFeesOnBuy + _totalFeesOnSell > 0 &&
            swapEnabled
        ) {
            swapping = true;

            uint256 totalFee = _totalFeesOnBuy + _totalFeesOnSell;
            uint256 liquidityShare = liquidityFeeOnBuy + liquidityFeeOnSell;

            if (liquidityShare > 0) {
                uint256 liquidityTokens = contractTokenBalance * liquidityShare / totalFee;
                swapAndLiquify(liquidityTokens);
            }       

            swapping = false;
        }

        uint256 _totalFees;
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to] || swapping) {
            _totalFees = 0;
        } else if (from == uniswapV2Pair) {
            _totalFees = _totalFeesOnBuy;
        } else if (to == uniswapV2Pair) {
            _totalFees = _totalFeesOnSell;
        } else {
            _totalFees = 0;
        }

        if (_totalFees > 0) {
            uint256 fees = (amount * _totalFees) / 100;
            amount = amount - fees;
            super._transfer(from, address(this), fees);
        }

        super._transfer(from, to, amount);
    }

    function setSwapEnabled(bool _enabled) external onlyOwner{
        require(swapEnabled != _enabled, "swapEnabled already at this state.");
        swapEnabled = _enabled;
    }

    function setSwapTokensAtAmount(uint256 newAmount) external onlyOwner{
        require(newAmount > totalSupply() / 1_000_000, "SwapTokensAtAmount must be greater than 0.0001% of total supply");
        swapTokensAtAmount = newAmount;

        emit SwapTokensAtAmountUpdated(swapTokensAtAmount);
    }

    function swapAndLiquify(uint256 tokens) private {
        uint256 half = tokens / 2;
        uint256 otherHalf = tokens - half;

        uint256 initialBalance = address(this).balance;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            half,
            0,
            path,
            address(this),
            block.timestamp);
        
        uint256 newBalance = address(this).balance - initialBalance;

        uniswapV2Router.addLiquidityETH{value: newBalance}(
            address(this),
            otherHalf,
            0,
            0,
            address(0xdead),
            block.timestamp
        );

        emit SwapAndLiquify(half, newBalance, otherHalf);
    }
}

Contract Security Audit

Contract ABI

API
[{"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":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bnbReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"SwapTokensAtAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"claimStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","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":"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":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040523480156200001157600080fd5b506040518060400160405280600681526020017f5a757a616c7500000000000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f5a757a616c75000000000000000000000000000000000000000000000000000081525081600390816200008f919062000e89565b508060049081620000a1919062000e89565b5050506000620000b6620006a360201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000603846036200017d577310ed43c718714eb63d5aa57b78b54704e256024e9050620001dd565b60614603620001a35773d99d1c33f9fc3444f8101754abc46c52416550d19050620001dc565b6001461480620001b35750600546145b15620001d657737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001db565b600080fd5b5b5b600081905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000230573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000256919062000fda565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002be573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e4919062000fda565b6040518363ffffffff1660e01b8152600401620003039291906200101d565b6020604051808303816000875af115801562000323573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000349919062000fda565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200042230600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff620006ab60201b60201c565b60016009819055506001600a81905550600954600b81905550600a54600c81905550620004697394ec7ccad52d0b800e82caed7a84238c987e4e0f6200087c60201b60201c565b6001600860006200047f62000a5060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016008600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016008600073663a5c229c09b049e36dcc11a9b0d4a8eb9db21473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200063f6200060262000a5060201b60201c565b6200061262000a7a60201b60201c565b600a620006209190620011da565b655af3107a40006200063391906200122b565b62000a8360201b60201c565b6113886200065262000bfb60201b60201c565b6200065e9190620012a5565b600d819055506000600e60026101000a81548160ff0219169083151502179055506000600e60016101000a81548160ff02191690831515021790555050505062001603565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036200071d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007149062001364565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200078f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200078690620013fc565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516200086f91906200142f565b60405180910390a3505050565b6200088c620006a360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200091e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000915906200149c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000990576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009879062001534565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006009905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000af5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000aec90620015a6565b60405180910390fd5b62000b096000838362000c0560201b60201c565b806002600082825462000b1d9190620015c8565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000b749190620015c8565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000bdb91906200142f565b60405180910390a362000bf76000838362000c0a60201b60201c565b5050565b6000600254905090565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000c9157607f821691505b60208210810362000ca75762000ca662000c49565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000d117fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000cd2565b62000d1d868362000cd2565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000d6a62000d6462000d5e8462000d35565b62000d3f565b62000d35565b9050919050565b6000819050919050565b62000d868362000d49565b62000d9e62000d958262000d71565b84845462000cdf565b825550505050565b600090565b62000db562000da6565b62000dc281848462000d7b565b505050565b5b8181101562000dea5762000dde60008262000dab565b60018101905062000dc8565b5050565b601f82111562000e395762000e038162000cad565b62000e0e8462000cc2565b8101602085101562000e1e578190505b62000e3662000e2d8562000cc2565b83018262000dc7565b50505b505050565b600082821c905092915050565b600062000e5e6000198460080262000e3e565b1980831691505092915050565b600062000e79838362000e4b565b9150826002028217905092915050565b62000e948262000c0f565b67ffffffffffffffff81111562000eb05762000eaf62000c1a565b5b62000ebc825462000c78565b62000ec982828562000dee565b600060209050601f83116001811462000f01576000841562000eec578287015190505b62000ef8858262000e6b565b86555062000f68565b601f19841662000f118662000cad565b60005b8281101562000f3b5784890151825560018201915060208501945060208101905062000f14565b8683101562000f5b578489015162000f57601f89168262000e4b565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000fa28262000f75565b9050919050565b62000fb48162000f95565b811462000fc057600080fd5b50565b60008151905062000fd48162000fa9565b92915050565b60006020828403121562000ff35762000ff262000f70565b5b6000620010038482850162000fc3565b91505092915050565b620010178162000f95565b82525050565b60006040820190506200103460008301856200100c565b6200104360208301846200100c565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620010d857808604811115620010b057620010af6200104a565b5b6001851615620010c05780820291505b8081029050620010d08562001079565b945062001090565b94509492505050565b600082620010f35760019050620011c6565b81620011035760009050620011c6565b81600181146200111c576002811462001127576200115d565b6001915050620011c6565b60ff8411156200113c576200113b6200104a565b5b8360020a9150848211156200115657620011556200104a565b5b50620011c6565b5060208310610133831016604e8410600b8410161715620011975782820a9050838111156200119157620011906200104a565b5b620011c6565b620011a6848484600162001086565b92509050818404811115620011c057620011bf6200104a565b5b81810290505b9392505050565b600060ff82169050919050565b6000620011e78262000d35565b9150620011f483620011cd565b9250620012237fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620010e1565b905092915050565b6000620012388262000d35565b9150620012458362000d35565b9250828202620012558162000d35565b915082820484148315176200126f576200126e6200104a565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620012b28262000d35565b9150620012bf8362000d35565b925082620012d257620012d162001276565b5b828204905092915050565b600082825260208201905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006200134c602483620012dd565b91506200135982620012ee565b604082019050919050565b600060208201905081810360008301526200137f816200133d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000620013e4602283620012dd565b9150620013f18262001386565b604082019050919050565b600060208201905081810360008301526200141781620013d5565b9050919050565b620014298162000d35565b82525050565b60006020820190506200144660008301846200141e565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062001484602083620012dd565b915062001491826200144c565b602082019050919050565b60006020820190508181036000830152620014b78162001475565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006200151c602683620012dd565b91506200152982620014be565b604082019050919050565b600060208201905081810360008301526200154f816200150d565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006200158e601f83620012dd565b91506200159b8262001556565b602082019050919050565b60006020820190508181036000830152620015c1816200157f565b9050919050565b6000620015d58262000d35565b9150620015e28362000d35565b9250828201905080821115620015fd57620015fc6200104a565b5b92915050565b6137f680620016136000396000f3fe6080604052600436106101a05760003560e01c8063715018a6116100ec578063afa4f3b21161008a578063e01af92c11610064578063e01af92c146105ed578063e2f4560514610616578063f2fde38b14610641578063f9d0831a1461066a576101a7565b8063afa4f3b21461055e578063c024666814610587578063dd62ed3e146105b0576101a7565b80638da5cb5b116100c65780638da5cb5b1461048e57806395d89b41146104b9578063a457c2d7146104e4578063a9059cbb14610521576101a7565b8063715018a6146104355780637b3c83b11461044c5780638a8c523c14610477576101a7565b8063313ce567116101595780634ada218b116101335780634ada218b146103655780634fbee193146103905780636ddd1713146103cd57806370a08231146103f8576101a7565b8063313ce567146102d257806339509351146102fd57806349bd5a5e1461033a576101a7565b806306fdde03146101ac578063095ea7b3146101d75780631694505e1461021457806318160ddd1461023f57806323b872dd1461026a5780632ce86fbf146102a7576101a7565b366101a757005b600080fd5b3480156101b857600080fd5b506101c1610693565b6040516101ce9190612580565b60405180910390f35b3480156101e357600080fd5b506101fe60048036038101906101f9919061263b565b610725565b60405161020b9190612696565b60405180910390f35b34801561022057600080fd5b50610229610743565b6040516102369190612710565b60405180910390f35b34801561024b57600080fd5b50610254610769565b604051610261919061273a565b60405180910390f35b34801561027657600080fd5b50610291600480360381019061028c9190612755565b610773565b60405161029e9190612696565b60405180910390f35b3480156102b357600080fd5b506102bc610892565b6040516102c9919061273a565b60405180910390f35b3480156102de57600080fd5b506102e7610898565b6040516102f491906127c4565b60405180910390f35b34801561030957600080fd5b50610324600480360381019061031f919061263b565b6108a1565b6040516103319190612696565b60405180910390f35b34801561034657600080fd5b5061034f61094d565b60405161035c91906127ee565b60405180910390f35b34801561037157600080fd5b5061037a610973565b6040516103879190612696565b60405180910390f35b34801561039c57600080fd5b506103b760048036038101906103b29190612809565b610986565b6040516103c49190612696565b60405180910390f35b3480156103d957600080fd5b506103e26109dc565b6040516103ef9190612696565b60405180910390f35b34801561040457600080fd5b5061041f600480360381019061041a9190612809565b6109ef565b60405161042c919061273a565b60405180910390f35b34801561044157600080fd5b5061044a610a37565b005b34801561045857600080fd5b50610461610b8f565b60405161046e919061273a565b60405180910390f35b34801561048357600080fd5b5061048c610b95565b005b34801561049a57600080fd5b506104a3610cb4565b6040516104b091906127ee565b60405180910390f35b3480156104c557600080fd5b506104ce610cde565b6040516104db9190612580565b60405180910390f35b3480156104f057600080fd5b5061050b6004803603810190610506919061263b565b610d70565b6040516105189190612696565b60405180910390f35b34801561052d57600080fd5b506105486004803603810190610543919061263b565b610e5b565b6040516105559190612696565b60405180910390f35b34801561056a57600080fd5b5061058560048036038101906105809190612836565b610e79565b005b34801561059357600080fd5b506105ae60048036038101906105a9919061288f565b610faa565b005b3480156105bc57600080fd5b506105d760048036038101906105d291906128cf565b61117c565b6040516105e4919061273a565b60405180910390f35b3480156105f957600080fd5b50610614600480360381019061060f919061290f565b611203565b005b34801561062257600080fd5b5061062b61130c565b604051610638919061273a565b60405180910390f35b34801561064d57600080fd5b5061066860048036038101906106639190612809565b611312565b005b34801561067657600080fd5b50610691600480360381019061068c9190612809565b6114d8565b005b6060600380546106a29061296b565b80601f01602080910402602001604051908101604052809291908181526020018280546106ce9061296b565b801561071b5780601f106106f05761010080835404028352916020019161071b565b820191906000526020600020905b8154815290600101906020018083116106fe57829003601f168201915b5050505050905090565b6000610739610732611747565b848461174f565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107bf611747565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461087b5782811015610866576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085d90612a0e565b60405180910390fd5b61087a85610872611747565b85840361174f565b5b610886858585611918565b60019150509392505050565b600a5481565b60006009905090565b60006109436108ae611747565b8484600160006108bc611747565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461093e9190612a5d565b61174f565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e60029054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600e60019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610a3f611747565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ace576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac590612add565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60095481565b610b9d611747565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2390612add565b60405180910390fd5b600e60029054906101000a900460ff1615610c7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7390612b49565b60405180910390fd5b6001600e60026101000a81548160ff0219169083151502179055506001600e60016101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610ced9061296b565b80601f0160208091040260200160405190810160405280929190818152602001828054610d199061296b565b8015610d665780601f10610d3b57610100808354040283529160200191610d66565b820191906000526020600020905b815481529060010190602001808311610d4957829003601f168201915b5050505050905090565b60008060016000610d7f611747565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610e3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3390612bdb565b60405180910390fd5b610e50610e47611747565b8585840361174f565b600191505092915050565b6000610e6f610e68611747565b8484611918565b6001905092915050565b610e81611747565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0790612add565b60405180910390fd5b620f4240610f1c610769565b610f269190612c2a565b8111610f67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5e90612ccd565b60405180910390fd5b80600d819055507f7c26bfee26f82e8cb57af48f4019cc64582db6fac7bad778433f10572ae8b145600d54604051610f9f919061273a565b60405180910390a150565b610fb2611747565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611041576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103890612add565b60405180910390fd5b801515600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036110d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ca90612d5f565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516111709190612696565b60405180910390a25050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61120b611747565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461129a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129190612add565b60405180910390fd5b801515600e60019054906101000a900460ff161515036112ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e690612df1565b60405180910390fd5b80600e60016101000a81548160ff02191690831515021790555050565b600d5481565b61131a611747565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a090612add565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611418576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140f90612e83565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6114e0611747565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461156f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156690612add565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036115dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d490612f15565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361163f5761163a473373ffffffffffffffffffffffffffffffffffffffff16611e3990919063ffffffff16565b611744565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161167f91906127ee565b602060405180830381865afa15801561169c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116c09190612f4a565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016116fd929190612f77565b6020604051808303816000875af115801561171c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117409190612fb5565b5050505b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b590613054565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361182d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611824906130e6565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161190b919061273a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611987576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197e90613178565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ed9061320a565b60405180910390fd5b600e60029054906101000a900460ff1680611a5a5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611aae5750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611aed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae490613276565b60405180910390fd5b60008103611b0657611b0183836000611f2d565b611e34565b6000611b11306109ef565b90506000600d548210159050808015611b375750600e60009054906101000a900460ff16155b8015611b905750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611bab57506000600c54600b54611ba99190612a5d565b115b8015611bc35750600e60019054906101000a900460ff165b15611c58576001600e60006101000a81548160ff0219169083151502179055506000600c54600b54611bf59190612a5d565b90506000600a54600954611c099190612a5d565b90506000811115611c3a576000828286611c239190613296565b611c2d9190612c2a565b9050611c38816121ac565b505b6000600e60006101000a81548160ff02191690831515021790555050505b6000600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611cfb5750600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611d125750600e60009054906101000a900460ff165b15611d205760009050611de5565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603611d7f57600b549050611de4565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611dde57600c549050611de3565b600090505b5b5b6000811115611e2557600060648286611dfe9190613296565b611e089190612c2a565b90508085611e1691906132d8565b9450611e23873083611f2d565b505b611e30868686611f2d565b5050505b505050565b80471015611e7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7390613358565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051611ea2906133a9565b60006040518083038185875af1925050503d8060008114611edf576040519150601f19603f3d011682016040523d82523d6000602084013e611ee4565b606091505b5050905080611f28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1f90613430565b60405180910390fd5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9390613178565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361200b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120029061320a565b60405180910390fd5b6120168383836124e6565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561209c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612093906134c2565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461212f9190612a5d565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612193919061273a565b60405180910390a36121a68484846124eb565b50505050565b60006002826121bb9190612c2a565b9050600081836121cb91906132d8565b905060004790506000600267ffffffffffffffff8111156121ef576121ee6134e2565b5b60405190808252806020026020018201604052801561221d5781602001602082028036833780820191505090505b509050308160008151811061223557612234613511565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123009190613555565b8160018151811061231457612313613511565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478560008430426040518663ffffffff1660e01b81526004016123b295949392919061367b565b600060405180830381600087803b1580156123cc57600080fd5b505af11580156123e0573d6000803e3d6000fd5b50505050600082476123f291906132d8565b9050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308760008061dead426040518863ffffffff1660e01b815260040161245d969594939291906136d5565b60606040518083038185885af115801561247b573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906124a09190613736565b5050507f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618582866040516124d693929190613789565b60405180910390a1505050505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561252a57808201518184015260208101905061250f565b60008484015250505050565b6000601f19601f8301169050919050565b6000612552826124f0565b61255c81856124fb565b935061256c81856020860161250c565b61257581612536565b840191505092915050565b6000602082019050818103600083015261259a8184612547565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006125d2826125a7565b9050919050565b6125e2816125c7565b81146125ed57600080fd5b50565b6000813590506125ff816125d9565b92915050565b6000819050919050565b61261881612605565b811461262357600080fd5b50565b6000813590506126358161260f565b92915050565b60008060408385031215612652576126516125a2565b5b6000612660858286016125f0565b925050602061267185828601612626565b9150509250929050565b60008115159050919050565b6126908161267b565b82525050565b60006020820190506126ab6000830184612687565b92915050565b6000819050919050565b60006126d66126d16126cc846125a7565b6126b1565b6125a7565b9050919050565b60006126e8826126bb565b9050919050565b60006126fa826126dd565b9050919050565b61270a816126ef565b82525050565b60006020820190506127256000830184612701565b92915050565b61273481612605565b82525050565b600060208201905061274f600083018461272b565b92915050565b60008060006060848603121561276e5761276d6125a2565b5b600061277c868287016125f0565b935050602061278d868287016125f0565b925050604061279e86828701612626565b9150509250925092565b600060ff82169050919050565b6127be816127a8565b82525050565b60006020820190506127d960008301846127b5565b92915050565b6127e8816125c7565b82525050565b600060208201905061280360008301846127df565b92915050565b60006020828403121561281f5761281e6125a2565b5b600061282d848285016125f0565b91505092915050565b60006020828403121561284c5761284b6125a2565b5b600061285a84828501612626565b91505092915050565b61286c8161267b565b811461287757600080fd5b50565b60008135905061288981612863565b92915050565b600080604083850312156128a6576128a56125a2565b5b60006128b4858286016125f0565b92505060206128c58582860161287a565b9150509250929050565b600080604083850312156128e6576128e56125a2565b5b60006128f4858286016125f0565b9250506020612905858286016125f0565b9150509250929050565b600060208284031215612925576129246125a2565b5b60006129338482850161287a565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061298357607f821691505b6020821081036129965761299561293c565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006129f86028836124fb565b9150612a038261299c565b604082019050919050565b60006020820190508181036000830152612a27816129eb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612a6882612605565b9150612a7383612605565b9250828201905080821115612a8b57612a8a612a2e565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612ac76020836124fb565b9150612ad282612a91565b602082019050919050565b60006020820190508181036000830152612af681612aba565b9050919050565b7f54726164696e6720616c726561647920656e61626c65642e0000000000000000600082015250565b6000612b336018836124fb565b9150612b3e82612afd565b602082019050919050565b60006020820190508181036000830152612b6281612b26565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612bc56025836124fb565b9150612bd082612b69565b604082019050919050565b60006020820190508181036000830152612bf481612bb8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612c3582612605565b9150612c4083612605565b925082612c5057612c4f612bfb565b5b828204905092915050565b7f53776170546f6b656e734174416d6f756e74206d75737420626520677265617460008201527f6572207468616e20302e3030303125206f6620746f74616c20737570706c7900602082015250565b6000612cb7603f836124fb565b9150612cc282612c5b565b604082019050919050565b60006020820190508181036000830152612ce681612caa565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b6000612d49602a836124fb565b9150612d5482612ced565b604082019050919050565b60006020820190508181036000830152612d7881612d3c565b9050919050565b7f73776170456e61626c656420616c72656164792061742074686973207374617460008201527f652e000000000000000000000000000000000000000000000000000000000000602082015250565b6000612ddb6022836124fb565b9150612de682612d7f565b604082019050919050565b60006020820190508181036000830152612e0a81612dce565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612e6d6026836124fb565b9150612e7882612e11565b604082019050919050565b60006020820190508181036000830152612e9c81612e60565b9050919050565b7f4f776e65722063616e6e6f7420636c61696d20636f6e7472616374277320626160008201527f6c616e6365206f6620697473206f776e20746f6b656e73000000000000000000602082015250565b6000612eff6037836124fb565b9150612f0a82612ea3565b604082019050919050565b60006020820190508181036000830152612f2e81612ef2565b9050919050565b600081519050612f448161260f565b92915050565b600060208284031215612f6057612f5f6125a2565b5b6000612f6e84828501612f35565b91505092915050565b6000604082019050612f8c60008301856127df565b612f99602083018461272b565b9392505050565b600081519050612faf81612863565b92915050565b600060208284031215612fcb57612fca6125a2565b5b6000612fd984828501612fa0565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061303e6024836124fb565b915061304982612fe2565b604082019050919050565b6000602082019050818103600083015261306d81613031565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006130d06022836124fb565b91506130db82613074565b604082019050919050565b600060208201905081810360008301526130ff816130c3565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006131626025836124fb565b915061316d82613106565b604082019050919050565b6000602082019050818103600083015261319181613155565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006131f46023836124fb565b91506131ff82613198565b604082019050919050565b60006020820190508181036000830152613223816131e7565b9050919050565b7f54726164696e67206e6f742079657420656e61626c6564210000000000000000600082015250565b60006132606018836124fb565b915061326b8261322a565b602082019050919050565b6000602082019050818103600083015261328f81613253565b9050919050565b60006132a182612605565b91506132ac83612605565b92508282026132ba81612605565b915082820484148315176132d1576132d0612a2e565b5b5092915050565b60006132e382612605565b91506132ee83612605565b925082820390508181111561330657613305612a2e565b5b92915050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000613342601d836124fb565b915061334d8261330c565b602082019050919050565b6000602082019050818103600083015261337181613335565b9050919050565b600081905092915050565b50565b6000613393600083613378565b915061339e82613383565b600082019050919050565b60006133b482613386565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b600061341a603a836124fb565b9150613425826133be565b604082019050919050565b600060208201905081810360008301526134498161340d565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006134ac6026836124fb565b91506134b782613450565b604082019050919050565b600060208201905081810360008301526134db8161349f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061354f816125d9565b92915050565b60006020828403121561356b5761356a6125a2565b5b600061357984828501613540565b91505092915050565b6000819050919050565b60006135a76135a261359d84613582565b6126b1565b612605565b9050919050565b6135b78161358c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6135f2816125c7565b82525050565b600061360483836135e9565b60208301905092915050565b6000602082019050919050565b6000613628826135bd565b61363281856135c8565b935061363d836135d9565b8060005b8381101561366e57815161365588826135f8565b975061366083613610565b925050600181019050613641565b5085935050505092915050565b600060a082019050613690600083018861272b565b61369d60208301876135ae565b81810360408301526136af818661361d565b90506136be60608301856127df565b6136cb608083018461272b565b9695505050505050565b600060c0820190506136ea60008301896127df565b6136f7602083018861272b565b61370460408301876135ae565b61371160608301866135ae565b61371e60808301856127df565b61372b60a083018461272b565b979650505050505050565b60008060006060848603121561374f5761374e6125a2565b5b600061375d86828701612f35565b935050602061376e86828701612f35565b925050604061377f86828701612f35565b9150509250925092565b600060608201905061379e600083018661272b565b6137ab602083018561272b565b6137b8604083018461272b565b94935050505056fea2646970667358221220f987d9dcd039144ce32cc55a78f23aa7f4e3904776b546b29110aeb66fa6e50264736f6c63430008110033

Deployed Bytecode

0x6080604052600436106101a05760003560e01c8063715018a6116100ec578063afa4f3b21161008a578063e01af92c11610064578063e01af92c146105ed578063e2f4560514610616578063f2fde38b14610641578063f9d0831a1461066a576101a7565b8063afa4f3b21461055e578063c024666814610587578063dd62ed3e146105b0576101a7565b80638da5cb5b116100c65780638da5cb5b1461048e57806395d89b41146104b9578063a457c2d7146104e4578063a9059cbb14610521576101a7565b8063715018a6146104355780637b3c83b11461044c5780638a8c523c14610477576101a7565b8063313ce567116101595780634ada218b116101335780634ada218b146103655780634fbee193146103905780636ddd1713146103cd57806370a08231146103f8576101a7565b8063313ce567146102d257806339509351146102fd57806349bd5a5e1461033a576101a7565b806306fdde03146101ac578063095ea7b3146101d75780631694505e1461021457806318160ddd1461023f57806323b872dd1461026a5780632ce86fbf146102a7576101a7565b366101a757005b600080fd5b3480156101b857600080fd5b506101c1610693565b6040516101ce9190612580565b60405180910390f35b3480156101e357600080fd5b506101fe60048036038101906101f9919061263b565b610725565b60405161020b9190612696565b60405180910390f35b34801561022057600080fd5b50610229610743565b6040516102369190612710565b60405180910390f35b34801561024b57600080fd5b50610254610769565b604051610261919061273a565b60405180910390f35b34801561027657600080fd5b50610291600480360381019061028c9190612755565b610773565b60405161029e9190612696565b60405180910390f35b3480156102b357600080fd5b506102bc610892565b6040516102c9919061273a565b60405180910390f35b3480156102de57600080fd5b506102e7610898565b6040516102f491906127c4565b60405180910390f35b34801561030957600080fd5b50610324600480360381019061031f919061263b565b6108a1565b6040516103319190612696565b60405180910390f35b34801561034657600080fd5b5061034f61094d565b60405161035c91906127ee565b60405180910390f35b34801561037157600080fd5b5061037a610973565b6040516103879190612696565b60405180910390f35b34801561039c57600080fd5b506103b760048036038101906103b29190612809565b610986565b6040516103c49190612696565b60405180910390f35b3480156103d957600080fd5b506103e26109dc565b6040516103ef9190612696565b60405180910390f35b34801561040457600080fd5b5061041f600480360381019061041a9190612809565b6109ef565b60405161042c919061273a565b60405180910390f35b34801561044157600080fd5b5061044a610a37565b005b34801561045857600080fd5b50610461610b8f565b60405161046e919061273a565b60405180910390f35b34801561048357600080fd5b5061048c610b95565b005b34801561049a57600080fd5b506104a3610cb4565b6040516104b091906127ee565b60405180910390f35b3480156104c557600080fd5b506104ce610cde565b6040516104db9190612580565b60405180910390f35b3480156104f057600080fd5b5061050b6004803603810190610506919061263b565b610d70565b6040516105189190612696565b60405180910390f35b34801561052d57600080fd5b506105486004803603810190610543919061263b565b610e5b565b6040516105559190612696565b60405180910390f35b34801561056a57600080fd5b5061058560048036038101906105809190612836565b610e79565b005b34801561059357600080fd5b506105ae60048036038101906105a9919061288f565b610faa565b005b3480156105bc57600080fd5b506105d760048036038101906105d291906128cf565b61117c565b6040516105e4919061273a565b60405180910390f35b3480156105f957600080fd5b50610614600480360381019061060f919061290f565b611203565b005b34801561062257600080fd5b5061062b61130c565b604051610638919061273a565b60405180910390f35b34801561064d57600080fd5b5061066860048036038101906106639190612809565b611312565b005b34801561067657600080fd5b50610691600480360381019061068c9190612809565b6114d8565b005b6060600380546106a29061296b565b80601f01602080910402602001604051908101604052809291908181526020018280546106ce9061296b565b801561071b5780601f106106f05761010080835404028352916020019161071b565b820191906000526020600020905b8154815290600101906020018083116106fe57829003601f168201915b5050505050905090565b6000610739610732611747565b848461174f565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107bf611747565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461087b5782811015610866576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085d90612a0e565b60405180910390fd5b61087a85610872611747565b85840361174f565b5b610886858585611918565b60019150509392505050565b600a5481565b60006009905090565b60006109436108ae611747565b8484600160006108bc611747565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461093e9190612a5d565b61174f565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e60029054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600e60019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610a3f611747565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ace576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac590612add565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60095481565b610b9d611747565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2390612add565b60405180910390fd5b600e60029054906101000a900460ff1615610c7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7390612b49565b60405180910390fd5b6001600e60026101000a81548160ff0219169083151502179055506001600e60016101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610ced9061296b565b80601f0160208091040260200160405190810160405280929190818152602001828054610d199061296b565b8015610d665780601f10610d3b57610100808354040283529160200191610d66565b820191906000526020600020905b815481529060010190602001808311610d4957829003601f168201915b5050505050905090565b60008060016000610d7f611747565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610e3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3390612bdb565b60405180910390fd5b610e50610e47611747565b8585840361174f565b600191505092915050565b6000610e6f610e68611747565b8484611918565b6001905092915050565b610e81611747565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0790612add565b60405180910390fd5b620f4240610f1c610769565b610f269190612c2a565b8111610f67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5e90612ccd565b60405180910390fd5b80600d819055507f7c26bfee26f82e8cb57af48f4019cc64582db6fac7bad778433f10572ae8b145600d54604051610f9f919061273a565b60405180910390a150565b610fb2611747565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611041576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103890612add565b60405180910390fd5b801515600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036110d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ca90612d5f565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516111709190612696565b60405180910390a25050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61120b611747565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461129a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129190612add565b60405180910390fd5b801515600e60019054906101000a900460ff161515036112ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e690612df1565b60405180910390fd5b80600e60016101000a81548160ff02191690831515021790555050565b600d5481565b61131a611747565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a090612add565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611418576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140f90612e83565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6114e0611747565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461156f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156690612add565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036115dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d490612f15565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361163f5761163a473373ffffffffffffffffffffffffffffffffffffffff16611e3990919063ffffffff16565b611744565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161167f91906127ee565b602060405180830381865afa15801561169c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116c09190612f4a565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016116fd929190612f77565b6020604051808303816000875af115801561171c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117409190612fb5565b5050505b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b590613054565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361182d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611824906130e6565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161190b919061273a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611987576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197e90613178565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ed9061320a565b60405180910390fd5b600e60029054906101000a900460ff1680611a5a5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611aae5750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611aed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae490613276565b60405180910390fd5b60008103611b0657611b0183836000611f2d565b611e34565b6000611b11306109ef565b90506000600d548210159050808015611b375750600e60009054906101000a900460ff16155b8015611b905750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611bab57506000600c54600b54611ba99190612a5d565b115b8015611bc35750600e60019054906101000a900460ff165b15611c58576001600e60006101000a81548160ff0219169083151502179055506000600c54600b54611bf59190612a5d565b90506000600a54600954611c099190612a5d565b90506000811115611c3a576000828286611c239190613296565b611c2d9190612c2a565b9050611c38816121ac565b505b6000600e60006101000a81548160ff02191690831515021790555050505b6000600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611cfb5750600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611d125750600e60009054906101000a900460ff165b15611d205760009050611de5565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603611d7f57600b549050611de4565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611dde57600c549050611de3565b600090505b5b5b6000811115611e2557600060648286611dfe9190613296565b611e089190612c2a565b90508085611e1691906132d8565b9450611e23873083611f2d565b505b611e30868686611f2d565b5050505b505050565b80471015611e7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7390613358565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051611ea2906133a9565b60006040518083038185875af1925050503d8060008114611edf576040519150601f19603f3d011682016040523d82523d6000602084013e611ee4565b606091505b5050905080611f28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1f90613430565b60405180910390fd5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9390613178565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361200b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120029061320a565b60405180910390fd5b6120168383836124e6565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561209c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612093906134c2565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461212f9190612a5d565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612193919061273a565b60405180910390a36121a68484846124eb565b50505050565b60006002826121bb9190612c2a565b9050600081836121cb91906132d8565b905060004790506000600267ffffffffffffffff8111156121ef576121ee6134e2565b5b60405190808252806020026020018201604052801561221d5781602001602082028036833780820191505090505b509050308160008151811061223557612234613511565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123009190613555565b8160018151811061231457612313613511565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478560008430426040518663ffffffff1660e01b81526004016123b295949392919061367b565b600060405180830381600087803b1580156123cc57600080fd5b505af11580156123e0573d6000803e3d6000fd5b50505050600082476123f291906132d8565b9050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308760008061dead426040518863ffffffff1660e01b815260040161245d969594939291906136d5565b60606040518083038185885af115801561247b573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906124a09190613736565b5050507f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618582866040516124d693929190613789565b60405180910390a1505050505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561252a57808201518184015260208101905061250f565b60008484015250505050565b6000601f19601f8301169050919050565b6000612552826124f0565b61255c81856124fb565b935061256c81856020860161250c565b61257581612536565b840191505092915050565b6000602082019050818103600083015261259a8184612547565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006125d2826125a7565b9050919050565b6125e2816125c7565b81146125ed57600080fd5b50565b6000813590506125ff816125d9565b92915050565b6000819050919050565b61261881612605565b811461262357600080fd5b50565b6000813590506126358161260f565b92915050565b60008060408385031215612652576126516125a2565b5b6000612660858286016125f0565b925050602061267185828601612626565b9150509250929050565b60008115159050919050565b6126908161267b565b82525050565b60006020820190506126ab6000830184612687565b92915050565b6000819050919050565b60006126d66126d16126cc846125a7565b6126b1565b6125a7565b9050919050565b60006126e8826126bb565b9050919050565b60006126fa826126dd565b9050919050565b61270a816126ef565b82525050565b60006020820190506127256000830184612701565b92915050565b61273481612605565b82525050565b600060208201905061274f600083018461272b565b92915050565b60008060006060848603121561276e5761276d6125a2565b5b600061277c868287016125f0565b935050602061278d868287016125f0565b925050604061279e86828701612626565b9150509250925092565b600060ff82169050919050565b6127be816127a8565b82525050565b60006020820190506127d960008301846127b5565b92915050565b6127e8816125c7565b82525050565b600060208201905061280360008301846127df565b92915050565b60006020828403121561281f5761281e6125a2565b5b600061282d848285016125f0565b91505092915050565b60006020828403121561284c5761284b6125a2565b5b600061285a84828501612626565b91505092915050565b61286c8161267b565b811461287757600080fd5b50565b60008135905061288981612863565b92915050565b600080604083850312156128a6576128a56125a2565b5b60006128b4858286016125f0565b92505060206128c58582860161287a565b9150509250929050565b600080604083850312156128e6576128e56125a2565b5b60006128f4858286016125f0565b9250506020612905858286016125f0565b9150509250929050565b600060208284031215612925576129246125a2565b5b60006129338482850161287a565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061298357607f821691505b6020821081036129965761299561293c565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006129f86028836124fb565b9150612a038261299c565b604082019050919050565b60006020820190508181036000830152612a27816129eb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612a6882612605565b9150612a7383612605565b9250828201905080821115612a8b57612a8a612a2e565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612ac76020836124fb565b9150612ad282612a91565b602082019050919050565b60006020820190508181036000830152612af681612aba565b9050919050565b7f54726164696e6720616c726561647920656e61626c65642e0000000000000000600082015250565b6000612b336018836124fb565b9150612b3e82612afd565b602082019050919050565b60006020820190508181036000830152612b6281612b26565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612bc56025836124fb565b9150612bd082612b69565b604082019050919050565b60006020820190508181036000830152612bf481612bb8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612c3582612605565b9150612c4083612605565b925082612c5057612c4f612bfb565b5b828204905092915050565b7f53776170546f6b656e734174416d6f756e74206d75737420626520677265617460008201527f6572207468616e20302e3030303125206f6620746f74616c20737570706c7900602082015250565b6000612cb7603f836124fb565b9150612cc282612c5b565b604082019050919050565b60006020820190508181036000830152612ce681612caa565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b6000612d49602a836124fb565b9150612d5482612ced565b604082019050919050565b60006020820190508181036000830152612d7881612d3c565b9050919050565b7f73776170456e61626c656420616c72656164792061742074686973207374617460008201527f652e000000000000000000000000000000000000000000000000000000000000602082015250565b6000612ddb6022836124fb565b9150612de682612d7f565b604082019050919050565b60006020820190508181036000830152612e0a81612dce565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612e6d6026836124fb565b9150612e7882612e11565b604082019050919050565b60006020820190508181036000830152612e9c81612e60565b9050919050565b7f4f776e65722063616e6e6f7420636c61696d20636f6e7472616374277320626160008201527f6c616e6365206f6620697473206f776e20746f6b656e73000000000000000000602082015250565b6000612eff6037836124fb565b9150612f0a82612ea3565b604082019050919050565b60006020820190508181036000830152612f2e81612ef2565b9050919050565b600081519050612f448161260f565b92915050565b600060208284031215612f6057612f5f6125a2565b5b6000612f6e84828501612f35565b91505092915050565b6000604082019050612f8c60008301856127df565b612f99602083018461272b565b9392505050565b600081519050612faf81612863565b92915050565b600060208284031215612fcb57612fca6125a2565b5b6000612fd984828501612fa0565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061303e6024836124fb565b915061304982612fe2565b604082019050919050565b6000602082019050818103600083015261306d81613031565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006130d06022836124fb565b91506130db82613074565b604082019050919050565b600060208201905081810360008301526130ff816130c3565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006131626025836124fb565b915061316d82613106565b604082019050919050565b6000602082019050818103600083015261319181613155565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006131f46023836124fb565b91506131ff82613198565b604082019050919050565b60006020820190508181036000830152613223816131e7565b9050919050565b7f54726164696e67206e6f742079657420656e61626c6564210000000000000000600082015250565b60006132606018836124fb565b915061326b8261322a565b602082019050919050565b6000602082019050818103600083015261328f81613253565b9050919050565b60006132a182612605565b91506132ac83612605565b92508282026132ba81612605565b915082820484148315176132d1576132d0612a2e565b5b5092915050565b60006132e382612605565b91506132ee83612605565b925082820390508181111561330657613305612a2e565b5b92915050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000613342601d836124fb565b915061334d8261330c565b602082019050919050565b6000602082019050818103600083015261337181613335565b9050919050565b600081905092915050565b50565b6000613393600083613378565b915061339e82613383565b600082019050919050565b60006133b482613386565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b600061341a603a836124fb565b9150613425826133be565b604082019050919050565b600060208201905081810360008301526134498161340d565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006134ac6026836124fb565b91506134b782613450565b604082019050919050565b600060208201905081810360008301526134db8161349f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061354f816125d9565b92915050565b60006020828403121561356b5761356a6125a2565b5b600061357984828501613540565b91505092915050565b6000819050919050565b60006135a76135a261359d84613582565b6126b1565b612605565b9050919050565b6135b78161358c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6135f2816125c7565b82525050565b600061360483836135e9565b60208301905092915050565b6000602082019050919050565b6000613628826135bd565b61363281856135c8565b935061363d836135d9565b8060005b8381101561366e57815161365588826135f8565b975061366083613610565b925050600181019050613641565b5085935050505092915050565b600060a082019050613690600083018861272b565b61369d60208301876135ae565b81810360408301526136af818661361d565b90506136be60608301856127df565b6136cb608083018461272b565b9695505050505050565b600060c0820190506136ea60008301896127df565b6136f7602083018861272b565b61370460408301876135ae565b61371160608301866135ae565b61371e60808301856127df565b61372b60a083018461272b565b979650505050505050565b60008060006060848603121561374f5761374e6125a2565b5b600061375d86828701612f35565b935050602061376e86828701612f35565b925050604061377f86828701612f35565b9150509250925092565b600060608201905061379e600083018661272b565b6137ab602083018561272b565b6137b8604083018461272b565b94935050505056fea2646970667358221220f987d9dcd039144ce32cc55a78f23aa7f4e3904776b546b29110aeb66fa6e50264736f6c63430008110033

Deployed Bytecode Sourcemap

19661:6772:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14947:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15860:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19744:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15267:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16037:573;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19932:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15167:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16618:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19792:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22989:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22856:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20128:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15383:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14134:148;;;;;;;;;;;;;:::i;:::-;;19892:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23024:175;;;;;;;;;;;;;:::i;:::-;;13920:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15055:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16841:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15518:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25242:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22558:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15701:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25055:179;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20054:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14290:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22085:465;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14947:100;15001:13;15034:5;15027:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14947:100;:::o;15860:169::-;15943:4;15960:39;15969:12;:10;:12::i;:::-;15983:7;15992:6;15960:8;:39::i;:::-;16017:4;16010:11;;15860:169;;;;:::o;19744:41::-;;;;;;;;;;;;;:::o;15267:108::-;15328:7;15355:12;;15348:19;;15267:108;:::o;16037:573::-;16177:4;16194:24;16221:11;:19;16233:6;16221:19;;;;;;;;;;;;;;;:33;16241:12;:10;:12::i;:::-;16221:33;;;;;;;;;;;;;;;;16194:60;;16289:17;16269:16;:37;16265:265;;16351:6;16331:16;:26;;16323:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;16446:57;16455:6;16463:12;:10;:12::i;:::-;16496:6;16477:16;:25;16446:8;:57::i;:::-;16265:265;16542:36;16552:6;16560:9;16571:6;16542:9;:36::i;:::-;16598:4;16591:11;;;16037:573;;;;;:::o;19932:34::-;;;;:::o;15167:92::-;15225:5;15250:1;15243:8;;15167:92;:::o;16618:215::-;16706:4;16723:80;16732:12;:10;:12::i;:::-;16746:7;16792:10;16755:11;:25;16767:12;:10;:12::i;:::-;16755:25;;;;;;;;;;;;;;;:34;16781:7;16755:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;16723:8;:80::i;:::-;16821:4;16814:11;;16618:215;;;;:::o;19792:29::-;;;;;;;;;;;;;:::o;22989:26::-;;;;;;;;;;;;;:::o;22856:125::-;22921:4;22945:19;:28;22965:7;22945:28;;;;;;;;;;;;;;;;;;;;;;;;;22938:35;;22856:125;;;:::o;20128:26::-;;;;;;;;;;;;;:::o;15383:127::-;15457:7;15484:9;:18;15494:7;15484:18;;;;;;;;;;;;;;;;15477:25;;15383:127;;;:::o;14134:148::-;14057:12;:10;:12::i;:::-;14047:22;;:6;;;;;;;;;;;:22;;;14039:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14241:1:::1;14204:40;;14225:6;;;;;;;;;;;14204:40;;;;;;;;;;;;14272:1;14255:6;;:19;;;;;;;;;;;;;;;;;;14134:148::o:0;19892:33::-;;;;:::o;23024:175::-;14057:12;:10;:12::i;:::-;14047:22;;:6;;;;;;;;;;;:22;;;14039:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23087:14:::1;;;;;;;;;;;23086:15;23078:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;23158:4;23141:14;;:21;;;;;;;;;;;;;;;;;;23187:4;23173:11;;:18;;;;;;;;;;;;;;;;;;23024:175::o:0;13920:79::-;13958:7;13985:6;;;;;;;;;;;13978:13;;13920:79;:::o;15055:104::-;15111:13;15144:7;15137:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15055:104;:::o;16841:413::-;16934:4;16951:24;16978:11;:25;16990:12;:10;:12::i;:::-;16978:25;;;;;;;;;;;;;;;:34;17004:7;16978:34;;;;;;;;;;;;;;;;16951:61;;17051:15;17031:16;:35;;17023:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;17144:67;17153:12;:10;:12::i;:::-;17167:7;17195:15;17176:16;:34;17144:8;:67::i;:::-;17242:4;17235:11;;;16841:413;;;;:::o;15518:175::-;15604:4;15621:42;15631:12;:10;:12::i;:::-;15645:9;15656:6;15621:9;:42::i;:::-;15681:4;15674:11;;15518:175;;;;:::o;25242:304::-;14057:12;:10;:12::i;:::-;14047:22;;:6;;;;;;;;;;;:22;;;14039:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25357:9:::1;25341:13;:11;:13::i;:::-;:25;;;;:::i;:::-;25329:9;:37;25321:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;25466:9;25445:18;:30;;;;25493:45;25519:18;;25493:45;;;;;;:::i;:::-;;;;;;;;25242:304:::0;:::o;22558:290::-;14057:12;:10;:12::i;:::-;14047:22;;:6;;;;;;;;;;;:22;;;14039:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22684:8:::1;22652:40;;:19;:28;22672:7;22652:28;;;;;;;;;;;;;;;;;;;;;;;;;:40;;::::0;22644:94:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;22780:8;22749:19;:28;22769:7;22749:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;22822:7;22806:34;;;22831:8;22806:34;;;;;;:::i;:::-;;;;;;;;22558:290:::0;;:::o;15701:151::-;15790:7;15817:11;:18;15829:5;15817:18;;;;;;;;;;;;;;;:27;15836:7;15817:27;;;;;;;;;;;;;;;;15810:34;;15701:151;;;;:::o;25055:179::-;14057:12;:10;:12::i;:::-;14047:22;;:6;;;;;;;;;;;:22;;;14039:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25146:8:::1;25131:23;;:11;;;;;;;;;;;:23;;::::0;25123:70:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;25218:8;25204:11;;:22;;;;;;;;;;;;;;;;;;25055:179:::0;:::o;20054:34::-;;;;:::o;14290:244::-;14057:12;:10;:12::i;:::-;14047:22;;:6;;;;;;;;;;;:22;;;14039:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14399:1:::1;14379:22;;:8;:22;;::::0;14371:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;14489:8;14460:38;;14481:6;;;;;;;;;;;14460:38;;;;;;;;;;;;14518:8;14509:6;;:17;;;;;;;;;;;;;;;;;;14290:244:::0;:::o;22085:465::-;14057:12;:10;:12::i;:::-;14047:22;;:6;;;;;;;;;;;:22;;;14039:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22181:4:::1;22164:22;;:5;:22;;::::0;22156:90:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;22278:3;22261:21;;:5;:21;;::::0;22257:127:::1;;22299:52;22329:21;22307:10;22299:29;;;;:52;;;;:::i;:::-;22366:7;;22257:127;22394:17;22421:5;22394:33;;22438:15;22456:10;:20;;;22485:4;22456:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22438:53;;22502:10;:19;;;22522:10;22534:7;22502:40;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22145:405;;14117:1;22085:465:::0;:::o;13243:98::-;13296:7;13323:10;13316:17;;13243:98;:::o;19009:380::-;19162:1;19145:19;;:5;:19;;;19137:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19243:1;19224:21;;:7;:21;;;19216:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19327:6;19297:11;:18;19309:5;19297:18;;;;;;;;;;;;;;;:27;19316:7;19297:27;;;;;;;;;;;;;;;:36;;;;19365:7;19349:32;;19358:5;19349:32;;;19374:6;19349:32;;;;;;:::i;:::-;;;;;;;;19009:380;;;:::o;23207:1840::-;23320:1;23304:18;;:4;:18;;;23296:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23397:1;23383:16;;:2;:16;;;23375:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;23458:14;;;;;;;;;;;:43;;;;23476:19;:25;23496:4;23476:25;;;;;;;;;;;;;;;;;;;;;;;;;23458:43;:70;;;;23505:19;:23;23525:2;23505:23;;;;;;;;;;;;;;;;;;;;;;;;;23458:70;23450:107;;;;;;;;;;;;:::i;:::-;;;;;;;;;23591:1;23581:6;:11;23577:93;;23609:28;23625:4;23631:2;23635:1;23609:15;:28::i;:::-;23652:7;;23577:93;23690:28;23721:24;23739:4;23721:9;:24::i;:::-;23690:55;;23758:12;23797:18;;23773:20;:42;;23758:57;;23832:7;:33;;;;;23857:8;;;;;;;;;;;23856:9;23832:33;:69;;;;;23888:13;;;;;;;;;;;23882:19;;:2;:19;;;23832:69;:124;;;;;23955:1;23936:16;;23918:15;;:34;;;;:::i;:::-;:38;23832:124;:152;;;;;23973:11;;;;;;;;;;;23832:152;23828:597;;;24022:4;24011:8;;:15;;;;;;;;;;;;;;;;;;24043:16;24080;;24062:15;;:34;;;;:::i;:::-;24043:53;;24111:22;24156:18;;24136:17;;:38;;;;:::i;:::-;24111:63;;24212:1;24195:14;:18;24191:183;;;24234:23;24300:8;24283:14;24260:20;:37;;;;:::i;:::-;:48;;;;:::i;:::-;24234:74;;24327:31;24342:15;24327:14;:31::i;:::-;24215:159;24191:183;24408:5;24397:8;;:16;;;;;;;;;;;;;;;;;;23996:429;;23828:597;24437:18;24470:19;:25;24490:4;24470:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;24499:19;:23;24519:2;24499:23;;;;;;;;;;;;;;;;;;;;;;;;;24470:52;:64;;;;24526:8;;;;;;;;;;;24470:64;24466:333;;;24564:1;24551:14;;24466:333;;;24595:13;;;;;;;;;;;24587:21;;:4;:21;;;24583:216;;24638:15;;24625:28;;24583:216;;;24681:13;;;;;;;;;;;24675:19;;:2;:19;;;24671:128;;24724:16;;24711:29;;24671:128;;;24786:1;24773:14;;24671:128;24583:216;24466:333;24828:1;24815:10;:14;24811:183;;;24846:12;24885:3;24871:10;24862:6;:19;;;;:::i;:::-;24861:27;;;;:::i;:::-;24846:42;;24921:4;24912:6;:13;;;;:::i;:::-;24903:22;;24940:42;24956:4;24970;24977;24940:15;:42::i;:::-;24831:163;24811:183;25006:33;25022:4;25028:2;25032:6;25006:15;:33::i;:::-;23285:1762;;;23207:1840;;;;:::o;9102:317::-;9217:6;9192:21;:31;;9184:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;9271:12;9289:9;:14;;9311:6;9289:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9270:52;;;9341:7;9333:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;9173:246;9102:317;;:::o;17262:733::-;17420:1;17402:20;;:6;:20;;;17394:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;17504:1;17483:23;;:9;:23;;;17475:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;17559:47;17580:6;17588:9;17599:6;17559:20;:47::i;:::-;17619:21;17643:9;:17;17653:6;17643:17;;;;;;;;;;;;;;;;17619:41;;17696:6;17679:13;:23;;17671:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;17817:6;17801:13;:22;17781:9;:17;17791:6;17781:17;;;;;;;;;;;;;;;:42;;;;17869:6;17845:9;:20;17855:9;17845:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;17910:9;17893:35;;17902:6;17893:35;;;17921:6;17893:35;;;;;;:::i;:::-;;;;;;;;17941:46;17961:6;17969:9;17980:6;17941:19;:46::i;:::-;17383:612;17262:733;;;:::o;25554:876::-;25613:12;25637:1;25628:6;:10;;;;:::i;:::-;25613:25;;25649:17;25678:4;25669:6;:13;;;;:::i;:::-;25649:33;;25695:22;25720:21;25695:46;;25754:21;25792:1;25778:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25754:40;;25823:4;25805;25810:1;25805:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;25849:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25839:4;25844:1;25839:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;25884:15;;;;;;;;;;;:66;;;25965:4;25984:1;26000:4;26027;26047:15;25884:179;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26084:18;26129:14;26105:21;:38;;;;:::i;:::-;26084:59;;26156:15;;;;;;;;;;;:31;;;26195:10;26229:4;26249:9;26273:1;26289;26313:6;26335:15;26156:205;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;26379:43;26394:4;26400:10;26412:9;26379:43;;;;;;;;:::i;:::-;;;;;;;;25602:828;;;;;25554:876;:::o;19397:125::-;;;;:::o;19530:124::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:152::-;3868:9;3901:37;3932:5;3901:37;:::i;:::-;3888:50;;3792:152;;;:::o;3950:183::-;4063:63;4120:5;4063:63;:::i;:::-;4058:3;4051:76;3950:183;;:::o;4139:274::-;4258:4;4296:2;4285:9;4281:18;4273:26;;4309:97;4403:1;4392:9;4388:17;4379:6;4309:97;:::i;:::-;4139:274;;;;:::o;4419:118::-;4506:24;4524:5;4506:24;:::i;:::-;4501:3;4494:37;4419:118;;:::o;4543:222::-;4636:4;4674:2;4663:9;4659:18;4651:26;;4687:71;4755:1;4744:9;4740:17;4731:6;4687:71;:::i;:::-;4543:222;;;;:::o;4771:619::-;4848:6;4856;4864;4913:2;4901:9;4892:7;4888:23;4884:32;4881:119;;;4919:79;;:::i;:::-;4881:119;5039:1;5064:53;5109:7;5100:6;5089:9;5085:22;5064:53;:::i;:::-;5054:63;;5010:117;5166:2;5192:53;5237:7;5228:6;5217:9;5213:22;5192:53;:::i;:::-;5182:63;;5137:118;5294:2;5320:53;5365:7;5356:6;5345:9;5341:22;5320:53;:::i;:::-;5310:63;;5265:118;4771:619;;;;;:::o;5396:86::-;5431:7;5471:4;5464:5;5460:16;5449:27;;5396:86;;;:::o;5488:112::-;5571:22;5587:5;5571:22;:::i;:::-;5566:3;5559:35;5488:112;;:::o;5606:214::-;5695:4;5733:2;5722:9;5718:18;5710:26;;5746:67;5810:1;5799:9;5795:17;5786:6;5746:67;:::i;:::-;5606:214;;;;:::o;5826:118::-;5913:24;5931:5;5913:24;:::i;:::-;5908:3;5901:37;5826:118;;:::o;5950:222::-;6043:4;6081:2;6070:9;6066:18;6058:26;;6094:71;6162:1;6151:9;6147:17;6138:6;6094:71;:::i;:::-;5950:222;;;;:::o;6178:329::-;6237:6;6286:2;6274:9;6265:7;6261:23;6257:32;6254:119;;;6292:79;;:::i;:::-;6254:119;6412:1;6437:53;6482:7;6473:6;6462:9;6458:22;6437:53;:::i;:::-;6427:63;;6383:117;6178:329;;;;:::o;6513:::-;6572:6;6621:2;6609:9;6600:7;6596:23;6592:32;6589:119;;;6627:79;;:::i;:::-;6589:119;6747:1;6772:53;6817:7;6808:6;6797:9;6793:22;6772:53;:::i;:::-;6762:63;;6718:117;6513:329;;;;:::o;6848:116::-;6918:21;6933:5;6918:21;:::i;:::-;6911:5;6908:32;6898:60;;6954:1;6951;6944:12;6898:60;6848:116;:::o;6970:133::-;7013:5;7051:6;7038:20;7029:29;;7067:30;7091:5;7067:30;:::i;:::-;6970:133;;;;:::o;7109:468::-;7174:6;7182;7231:2;7219:9;7210:7;7206:23;7202:32;7199:119;;;7237:79;;:::i;:::-;7199:119;7357:1;7382:53;7427:7;7418:6;7407:9;7403:22;7382:53;:::i;:::-;7372:63;;7328:117;7484:2;7510:50;7552:7;7543:6;7532:9;7528:22;7510:50;:::i;:::-;7500:60;;7455:115;7109:468;;;;;:::o;7583:474::-;7651:6;7659;7708:2;7696:9;7687:7;7683:23;7679:32;7676:119;;;7714:79;;:::i;:::-;7676:119;7834:1;7859:53;7904:7;7895:6;7884:9;7880:22;7859:53;:::i;:::-;7849:63;;7805:117;7961:2;7987:53;8032:7;8023:6;8012:9;8008:22;7987:53;:::i;:::-;7977:63;;7932:118;7583:474;;;;;:::o;8063:323::-;8119:6;8168:2;8156:9;8147:7;8143:23;8139:32;8136:119;;;8174:79;;:::i;:::-;8136:119;8294:1;8319:50;8361:7;8352:6;8341:9;8337:22;8319:50;:::i;:::-;8309:60;;8265:114;8063:323;;;;:::o;8392:180::-;8440:77;8437:1;8430:88;8537:4;8534:1;8527:15;8561:4;8558:1;8551:15;8578:320;8622:6;8659:1;8653:4;8649:12;8639:22;;8706:1;8700:4;8696:12;8727:18;8717:81;;8783:4;8775:6;8771:17;8761:27;;8717:81;8845:2;8837:6;8834:14;8814:18;8811:38;8808:84;;8864:18;;:::i;:::-;8808:84;8629:269;8578:320;;;:::o;8904:227::-;9044:34;9040:1;9032:6;9028:14;9021:58;9113:10;9108:2;9100:6;9096:15;9089:35;8904:227;:::o;9137:366::-;9279:3;9300:67;9364:2;9359:3;9300:67;:::i;:::-;9293:74;;9376:93;9465:3;9376:93;:::i;:::-;9494:2;9489:3;9485:12;9478:19;;9137:366;;;:::o;9509:419::-;9675:4;9713:2;9702:9;9698:18;9690:26;;9762:9;9756:4;9752:20;9748:1;9737:9;9733:17;9726:47;9790:131;9916:4;9790:131;:::i;:::-;9782:139;;9509:419;;;:::o;9934:180::-;9982:77;9979:1;9972:88;10079:4;10076:1;10069:15;10103:4;10100:1;10093:15;10120:191;10160:3;10179:20;10197:1;10179:20;:::i;:::-;10174:25;;10213:20;10231:1;10213:20;:::i;:::-;10208:25;;10256:1;10253;10249:9;10242:16;;10277:3;10274:1;10271:10;10268:36;;;10284:18;;:::i;:::-;10268:36;10120:191;;;;:::o;10317:182::-;10457:34;10453:1;10445:6;10441:14;10434:58;10317:182;:::o;10505:366::-;10647:3;10668:67;10732:2;10727:3;10668:67;:::i;:::-;10661:74;;10744:93;10833:3;10744:93;:::i;:::-;10862:2;10857:3;10853:12;10846:19;;10505:366;;;:::o;10877:419::-;11043:4;11081:2;11070:9;11066:18;11058:26;;11130:9;11124:4;11120:20;11116:1;11105:9;11101:17;11094:47;11158:131;11284:4;11158:131;:::i;:::-;11150:139;;10877:419;;;:::o;11302:174::-;11442:26;11438:1;11430:6;11426:14;11419:50;11302:174;:::o;11482:366::-;11624:3;11645:67;11709:2;11704:3;11645:67;:::i;:::-;11638:74;;11721:93;11810:3;11721:93;:::i;:::-;11839:2;11834:3;11830:12;11823:19;;11482:366;;;:::o;11854:419::-;12020:4;12058:2;12047:9;12043:18;12035:26;;12107:9;12101:4;12097:20;12093:1;12082:9;12078:17;12071:47;12135:131;12261:4;12135:131;:::i;:::-;12127:139;;11854:419;;;:::o;12279:224::-;12419:34;12415:1;12407:6;12403:14;12396:58;12488:7;12483:2;12475:6;12471:15;12464:32;12279:224;:::o;12509:366::-;12651:3;12672:67;12736:2;12731:3;12672:67;:::i;:::-;12665:74;;12748:93;12837:3;12748:93;:::i;:::-;12866:2;12861:3;12857:12;12850:19;;12509:366;;;:::o;12881:419::-;13047:4;13085:2;13074:9;13070:18;13062:26;;13134:9;13128:4;13124:20;13120:1;13109:9;13105:17;13098:47;13162:131;13288:4;13162:131;:::i;:::-;13154:139;;12881:419;;;:::o;13306:180::-;13354:77;13351:1;13344:88;13451:4;13448:1;13441:15;13475:4;13472:1;13465:15;13492:185;13532:1;13549:20;13567:1;13549:20;:::i;:::-;13544:25;;13583:20;13601:1;13583:20;:::i;:::-;13578:25;;13622:1;13612:35;;13627:18;;:::i;:::-;13612:35;13669:1;13666;13662:9;13657:14;;13492:185;;;;:::o;13683:250::-;13823:34;13819:1;13811:6;13807:14;13800:58;13892:33;13887:2;13879:6;13875:15;13868:58;13683:250;:::o;13939:366::-;14081:3;14102:67;14166:2;14161:3;14102:67;:::i;:::-;14095:74;;14178:93;14267:3;14178:93;:::i;:::-;14296:2;14291:3;14287:12;14280:19;;13939:366;;;:::o;14311:419::-;14477:4;14515:2;14504:9;14500:18;14492:26;;14564:9;14558:4;14554:20;14550:1;14539:9;14535:17;14528:47;14592:131;14718:4;14592:131;:::i;:::-;14584:139;;14311:419;;;:::o;14736:229::-;14876:34;14872:1;14864:6;14860:14;14853:58;14945:12;14940:2;14932:6;14928:15;14921:37;14736:229;:::o;14971:366::-;15113:3;15134:67;15198:2;15193:3;15134:67;:::i;:::-;15127:74;;15210:93;15299:3;15210:93;:::i;:::-;15328:2;15323:3;15319:12;15312:19;;14971:366;;;:::o;15343:419::-;15509:4;15547:2;15536:9;15532:18;15524:26;;15596:9;15590:4;15586:20;15582:1;15571:9;15567:17;15560:47;15624:131;15750:4;15624:131;:::i;:::-;15616:139;;15343:419;;;:::o;15768:221::-;15908:34;15904:1;15896:6;15892:14;15885:58;15977:4;15972:2;15964:6;15960:15;15953:29;15768:221;:::o;15995:366::-;16137:3;16158:67;16222:2;16217:3;16158:67;:::i;:::-;16151:74;;16234:93;16323:3;16234:93;:::i;:::-;16352:2;16347:3;16343:12;16336:19;;15995:366;;;:::o;16367:419::-;16533:4;16571:2;16560:9;16556:18;16548:26;;16620:9;16614:4;16610:20;16606:1;16595:9;16591:17;16584:47;16648:131;16774:4;16648:131;:::i;:::-;16640:139;;16367:419;;;:::o;16792:225::-;16932:34;16928:1;16920:6;16916:14;16909:58;17001:8;16996:2;16988:6;16984:15;16977:33;16792:225;:::o;17023:366::-;17165:3;17186:67;17250:2;17245:3;17186:67;:::i;:::-;17179:74;;17262:93;17351:3;17262:93;:::i;:::-;17380:2;17375:3;17371:12;17364:19;;17023:366;;;:::o;17395:419::-;17561:4;17599:2;17588:9;17584:18;17576:26;;17648:9;17642:4;17638:20;17634:1;17623:9;17619:17;17612:47;17676:131;17802:4;17676:131;:::i;:::-;17668:139;;17395:419;;;:::o;17820:242::-;17960:34;17956:1;17948:6;17944:14;17937:58;18029:25;18024:2;18016:6;18012:15;18005:50;17820:242;:::o;18068:366::-;18210:3;18231:67;18295:2;18290:3;18231:67;:::i;:::-;18224:74;;18307:93;18396:3;18307:93;:::i;:::-;18425:2;18420:3;18416:12;18409:19;;18068:366;;;:::o;18440:419::-;18606:4;18644:2;18633:9;18629:18;18621:26;;18693:9;18687:4;18683:20;18679:1;18668:9;18664:17;18657:47;18721:131;18847:4;18721:131;:::i;:::-;18713:139;;18440:419;;;:::o;18865:143::-;18922:5;18953:6;18947:13;18938:22;;18969:33;18996:5;18969:33;:::i;:::-;18865:143;;;;:::o;19014:351::-;19084:6;19133:2;19121:9;19112:7;19108:23;19104:32;19101:119;;;19139:79;;:::i;:::-;19101:119;19259:1;19284:64;19340:7;19331:6;19320:9;19316:22;19284:64;:::i;:::-;19274:74;;19230:128;19014:351;;;;:::o;19371:332::-;19492:4;19530:2;19519:9;19515:18;19507:26;;19543:71;19611:1;19600:9;19596:17;19587:6;19543:71;:::i;:::-;19624:72;19692:2;19681:9;19677:18;19668:6;19624:72;:::i;:::-;19371:332;;;;;:::o;19709:137::-;19763:5;19794:6;19788:13;19779:22;;19810:30;19834:5;19810:30;:::i;:::-;19709:137;;;;:::o;19852:345::-;19919:6;19968:2;19956:9;19947:7;19943:23;19939:32;19936:119;;;19974:79;;:::i;:::-;19936:119;20094:1;20119:61;20172:7;20163:6;20152:9;20148:22;20119:61;:::i;:::-;20109:71;;20065:125;19852:345;;;;:::o;20203:223::-;20343:34;20339:1;20331:6;20327:14;20320:58;20412:6;20407:2;20399:6;20395:15;20388:31;20203:223;:::o;20432:366::-;20574:3;20595:67;20659:2;20654:3;20595:67;:::i;:::-;20588:74;;20671:93;20760:3;20671:93;:::i;:::-;20789:2;20784:3;20780:12;20773:19;;20432:366;;;:::o;20804:419::-;20970:4;21008:2;20997:9;20993:18;20985:26;;21057:9;21051:4;21047:20;21043:1;21032:9;21028:17;21021:47;21085:131;21211:4;21085:131;:::i;:::-;21077:139;;20804:419;;;:::o;21229:221::-;21369:34;21365:1;21357:6;21353:14;21346:58;21438:4;21433:2;21425:6;21421:15;21414:29;21229:221;:::o;21456:366::-;21598:3;21619:67;21683:2;21678:3;21619:67;:::i;:::-;21612:74;;21695:93;21784:3;21695:93;:::i;:::-;21813:2;21808:3;21804:12;21797:19;;21456:366;;;:::o;21828:419::-;21994:4;22032:2;22021:9;22017:18;22009:26;;22081:9;22075:4;22071:20;22067:1;22056:9;22052:17;22045:47;22109:131;22235:4;22109:131;:::i;:::-;22101:139;;21828:419;;;:::o;22253:224::-;22393:34;22389:1;22381:6;22377:14;22370:58;22462:7;22457:2;22449:6;22445:15;22438:32;22253:224;:::o;22483:366::-;22625:3;22646:67;22710:2;22705:3;22646:67;:::i;:::-;22639:74;;22722:93;22811:3;22722:93;:::i;:::-;22840:2;22835:3;22831:12;22824:19;;22483:366;;;:::o;22855:419::-;23021:4;23059:2;23048:9;23044:18;23036:26;;23108:9;23102:4;23098:20;23094:1;23083:9;23079:17;23072:47;23136:131;23262:4;23136:131;:::i;:::-;23128:139;;22855:419;;;:::o;23280:222::-;23420:34;23416:1;23408:6;23404:14;23397:58;23489:5;23484:2;23476:6;23472:15;23465:30;23280:222;:::o;23508:366::-;23650:3;23671:67;23735:2;23730:3;23671:67;:::i;:::-;23664:74;;23747:93;23836:3;23747:93;:::i;:::-;23865:2;23860:3;23856:12;23849:19;;23508:366;;;:::o;23880:419::-;24046:4;24084:2;24073:9;24069:18;24061:26;;24133:9;24127:4;24123:20;24119:1;24108:9;24104:17;24097:47;24161:131;24287:4;24161:131;:::i;:::-;24153:139;;23880:419;;;:::o;24305:174::-;24445:26;24441:1;24433:6;24429:14;24422:50;24305:174;:::o;24485:366::-;24627:3;24648:67;24712:2;24707:3;24648:67;:::i;:::-;24641:74;;24724:93;24813:3;24724:93;:::i;:::-;24842:2;24837:3;24833:12;24826:19;;24485:366;;;:::o;24857:419::-;25023:4;25061:2;25050:9;25046:18;25038:26;;25110:9;25104:4;25100:20;25096:1;25085:9;25081:17;25074:47;25138:131;25264:4;25138:131;:::i;:::-;25130:139;;24857:419;;;:::o;25282:410::-;25322:7;25345:20;25363:1;25345:20;:::i;:::-;25340:25;;25379:20;25397:1;25379:20;:::i;:::-;25374:25;;25434:1;25431;25427:9;25456:30;25474:11;25456:30;:::i;:::-;25445:41;;25635:1;25626:7;25622:15;25619:1;25616:22;25596:1;25589:9;25569:83;25546:139;;25665:18;;:::i;:::-;25546:139;25330:362;25282:410;;;;:::o;25698:194::-;25738:4;25758:20;25776:1;25758:20;:::i;:::-;25753:25;;25792:20;25810:1;25792:20;:::i;:::-;25787:25;;25836:1;25833;25829:9;25821:17;;25860:1;25854:4;25851:11;25848:37;;;25865:18;;:::i;:::-;25848:37;25698:194;;;;:::o;25898:179::-;26038:31;26034:1;26026:6;26022:14;26015:55;25898:179;:::o;26083:366::-;26225:3;26246:67;26310:2;26305:3;26246:67;:::i;:::-;26239:74;;26322:93;26411:3;26322:93;:::i;:::-;26440:2;26435:3;26431:12;26424:19;;26083:366;;;:::o;26455:419::-;26621:4;26659:2;26648:9;26644:18;26636:26;;26708:9;26702:4;26698:20;26694:1;26683:9;26679:17;26672:47;26736:131;26862:4;26736:131;:::i;:::-;26728:139;;26455:419;;;:::o;26880:147::-;26981:11;27018:3;27003:18;;26880:147;;;;:::o;27033:114::-;;:::o;27153:398::-;27312:3;27333:83;27414:1;27409:3;27333:83;:::i;:::-;27326:90;;27425:93;27514:3;27425:93;:::i;:::-;27543:1;27538:3;27534:11;27527:18;;27153:398;;;:::o;27557:379::-;27741:3;27763:147;27906:3;27763:147;:::i;:::-;27756:154;;27927:3;27920:10;;27557:379;;;:::o;27942:245::-;28082:34;28078:1;28070:6;28066:14;28059:58;28151:28;28146:2;28138:6;28134:15;28127:53;27942:245;:::o;28193:366::-;28335:3;28356:67;28420:2;28415:3;28356:67;:::i;:::-;28349:74;;28432:93;28521:3;28432:93;:::i;:::-;28550:2;28545:3;28541:12;28534:19;;28193:366;;;:::o;28565:419::-;28731:4;28769:2;28758:9;28754:18;28746:26;;28818:9;28812:4;28808:20;28804:1;28793:9;28789:17;28782:47;28846:131;28972:4;28846:131;:::i;:::-;28838:139;;28565:419;;;:::o;28990:225::-;29130:34;29126:1;29118:6;29114:14;29107:58;29199:8;29194:2;29186:6;29182:15;29175:33;28990:225;:::o;29221:366::-;29363:3;29384:67;29448:2;29443:3;29384:67;:::i;:::-;29377:74;;29460:93;29549:3;29460:93;:::i;:::-;29578:2;29573:3;29569:12;29562:19;;29221:366;;;:::o;29593:419::-;29759:4;29797:2;29786:9;29782:18;29774:26;;29846:9;29840:4;29836:20;29832:1;29821:9;29817:17;29810:47;29874:131;30000:4;29874:131;:::i;:::-;29866:139;;29593:419;;;:::o;30018:180::-;30066:77;30063:1;30056:88;30163:4;30160:1;30153:15;30187:4;30184:1;30177:15;30204:180;30252:77;30249:1;30242:88;30349:4;30346:1;30339:15;30373:4;30370:1;30363:15;30390:143;30447:5;30478:6;30472:13;30463:22;;30494:33;30521:5;30494:33;:::i;:::-;30390:143;;;;:::o;30539:351::-;30609:6;30658:2;30646:9;30637:7;30633:23;30629:32;30626:119;;;30664:79;;:::i;:::-;30626:119;30784:1;30809:64;30865:7;30856:6;30845:9;30841:22;30809:64;:::i;:::-;30799:74;;30755:128;30539:351;;;;:::o;30896:85::-;30941:7;30970:5;30959:16;;30896:85;;;:::o;30987:158::-;31045:9;31078:61;31096:42;31105:32;31131:5;31105:32;:::i;:::-;31096:42;:::i;:::-;31078:61;:::i;:::-;31065:74;;30987:158;;;:::o;31151:147::-;31246:45;31285:5;31246:45;:::i;:::-;31241:3;31234:58;31151:147;;:::o;31304:114::-;31371:6;31405:5;31399:12;31389:22;;31304:114;;;:::o;31424:184::-;31523:11;31557:6;31552:3;31545:19;31597:4;31592:3;31588:14;31573:29;;31424:184;;;;:::o;31614:132::-;31681:4;31704:3;31696:11;;31734:4;31729:3;31725:14;31717:22;;31614:132;;;:::o;31752:108::-;31829:24;31847:5;31829:24;:::i;:::-;31824:3;31817:37;31752:108;;:::o;31866:179::-;31935:10;31956:46;31998:3;31990:6;31956:46;:::i;:::-;32034:4;32029:3;32025:14;32011:28;;31866:179;;;;:::o;32051:113::-;32121:4;32153;32148:3;32144:14;32136:22;;32051:113;;;:::o;32200:732::-;32319:3;32348:54;32396:5;32348:54;:::i;:::-;32418:86;32497:6;32492:3;32418:86;:::i;:::-;32411:93;;32528:56;32578:5;32528:56;:::i;:::-;32607:7;32638:1;32623:284;32648:6;32645:1;32642:13;32623:284;;;32724:6;32718:13;32751:63;32810:3;32795:13;32751:63;:::i;:::-;32744:70;;32837:60;32890:6;32837:60;:::i;:::-;32827:70;;32683:224;32670:1;32667;32663:9;32658:14;;32623:284;;;32627:14;32923:3;32916:10;;32324:608;;;32200:732;;;;:::o;32938:831::-;33201:4;33239:3;33228:9;33224:19;33216:27;;33253:71;33321:1;33310:9;33306:17;33297:6;33253:71;:::i;:::-;33334:80;33410:2;33399:9;33395:18;33386:6;33334:80;:::i;:::-;33461:9;33455:4;33451:20;33446:2;33435:9;33431:18;33424:48;33489:108;33592:4;33583:6;33489:108;:::i;:::-;33481:116;;33607:72;33675:2;33664:9;33660:18;33651:6;33607:72;:::i;:::-;33689:73;33757:3;33746:9;33742:19;33733:6;33689:73;:::i;:::-;32938:831;;;;;;;;:::o;33775:807::-;34024:4;34062:3;34051:9;34047:19;34039:27;;34076:71;34144:1;34133:9;34129:17;34120:6;34076:71;:::i;:::-;34157:72;34225:2;34214:9;34210:18;34201:6;34157:72;:::i;:::-;34239:80;34315:2;34304:9;34300:18;34291:6;34239:80;:::i;:::-;34329;34405:2;34394:9;34390:18;34381:6;34329:80;:::i;:::-;34419:73;34487:3;34476:9;34472:19;34463:6;34419:73;:::i;:::-;34502;34570:3;34559:9;34555:19;34546:6;34502:73;:::i;:::-;33775:807;;;;;;;;;:::o;34588:663::-;34676:6;34684;34692;34741:2;34729:9;34720:7;34716:23;34712:32;34709:119;;;34747:79;;:::i;:::-;34709:119;34867:1;34892:64;34948:7;34939:6;34928:9;34924:22;34892:64;:::i;:::-;34882:74;;34838:128;35005:2;35031:64;35087:7;35078:6;35067:9;35063:22;35031:64;:::i;:::-;35021:74;;34976:129;35144:2;35170:64;35226:7;35217:6;35206:9;35202:22;35170:64;:::i;:::-;35160:74;;35115:129;34588:663;;;;;:::o;35257:442::-;35406:4;35444:2;35433:9;35429:18;35421:26;;35457:71;35525:1;35514:9;35510:17;35501:6;35457:71;:::i;:::-;35538:72;35606:2;35595:9;35591:18;35582:6;35538:72;:::i;:::-;35620;35688:2;35677:9;35673:18;35664:6;35620:72;:::i;:::-;35257:442;;;;;;:::o

Swarm Source

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