ETH Price: $2,287.46 (+1.02%)

Token

Two Lands (LANDS)
 

Overview

Max Total Supply

1,000,000,000 LANDS

Holders

198

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0 LANDS

Value
$0.00
0xd6bcad28a88a1ea2ffb030ee5ab1169c0fe3ae3b
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:
TwoLands

Compiler Version
v0.8.12+commit.f00d7308

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-12-19
*/

/**
TG: https://t.me/twolandstokenportal
Website: https://twolandstoken.com/
Author: @bLock_doctor
*/
// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.12;
 
library Address {
    function isContract(address account) internal view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");
        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");
        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");
        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }
    function _verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) private pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}
interface IUniRouterV1
{
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
 
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}
interface IUniRouterV2 is IUniRouterV1
{
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}
interface IDEXFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}
library SafeMath {
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }
    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}
contract Ownable {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor () {
        _owner = msg.sender;
        emit OwnershipTransferred(address(0), _owner);
    }
    function owner() public view returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(msg.sender==owner(), "Ownable: caller is not the owner");
        _;
    }
    function renounceOwnership() public virtual onlyOwner {
        _owner = address(0);
        emit OwnershipTransferred(_owner, address(0));
    }
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _owner = newOwner;
        emit OwnershipTransferred(_owner, newOwner);
    }
}
 
contract TwoLands is IERC20, Ownable {
 
    uint8 private _buyTax = 5;
    uint8 private _sellTax = 5;
    uint8 private constant START_TAX = 90;
    uint8 private constant TAX_DECREMENT = 10;
    uint8 private constant _decimals = 18;
 
    uint16 private _liquidityTax = 30;
    uint16 private _marketingTax = 35;
    uint16 private _operationsTax = 35; 
 
    uint256 private constant _totalSupply = 1000000000 * 10 ** _decimals;
    uint256 private _swapTokenThreshold = 500000 * 10 ** _decimals;
    uint256 private _maxWallet = 5000000 * 10 ** _decimals;
    uint256 private _maxTransaction = 5000000 * 10 ** _decimals;
    uint256 private _tradingEnabledTimeStamp;
    uint256 private constant DECREMENT_INTERVAL = 1 minutes;
 
    bool private _tradingEnabled;
    bool private _swapEnabled;
    bool private _inSwap;
 
    string private constant _tokenName = "Two Lands";
    string private constant _tokenSymbol = "LANDS";
 
    IUniRouterV2 private _router;
    address private _pairAddress;
    address public constant burnWallet = address(0xdead);
    address public constant zeroAddress = address(0);
    address public marketingWallet = 0xcea821B9aDd4949e4a9703b87DF70E37039b884c;
    address public operationsWallet = 0xe96AE647dac359DB5c0c3afc41e73a7E7C6A731C;
 
    mapping(address => uint256) private _balances;
    mapping(address => bool) private _excludedFromFees;
    mapping(address => bool) private _automatedMarketMakers;
    mapping(address => mapping (address => uint256)) private _allowances;
 
    modifier LockTheSwap {
        _inSwap = true;
        _;
        _inSwap = false;
    }
 
    event SwapAndLiquify(
        uint256 liquidityTokens,
        uint256 liquidityETH
    );
 
    constructor() {
        _router = IUniRouterV2(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _pairAddress = IDEXFactory(_router.factory()).createPair(_router.WETH(), address(this));
        _allowances[address(this)][address(_router)] = type(uint256).max;
        _automatedMarketMakers[_pairAddress] = true;
        _excludedFromFees[msg.sender] = true;
        _excludedFromFees[address(this)] = true;
        _excludedFromFees[burnWallet] = true;
        _excludedFromFees[zeroAddress] = true;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }
 
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        bool isExcluded = _excludedFromFees[from] || _excludedFromFees[to];
        bool isBuy = _automatedMarketMakers[from];
        bool isSell = _automatedMarketMakers[to];
        if (isExcluded) _transferTokens(from, to, amount, 0);
        else {
            require(_tradingEnabled, "Trading is not enabled!");
            if (isBuy) _buyTokens(from, to, amount);
            else if (isSell) {
                if (_swapEnabled && !_inSwap) _swapAndLiquify(false);
                _sellTokens(from, to, amount);
            } else _transferTokens(from, to, amount, 0);
        }
    }
 
    function _getBuyTax() private view returns (uint8) {
        uint256 timeElapsed = block.timestamp - _tradingEnabledTimeStamp;
        uint256 decrements = timeElapsed / DECREMENT_INTERVAL;
        if (decrements < 8) {
            return uint8(START_TAX - (decrements * TAX_DECREMENT));
        } else {
            return _buyTax;
        }
    }
 
    function _buyTokens(
        address from,
        address to,
        uint256 amount
    ) private {
        require(amount <= _maxTransaction, "Cannot exceed max transaction.");
        require(_balances[to] + amount <= _maxWallet, "Cannot exceed max wallet.");
        _transferTokens(from, to, amount, _getBuyTax());
    }
 
    function _sellTokens(
        address from,
        address to,
        uint256 amount
    ) private {
        require(amount <= _maxTransaction, "Cannot exceed max transaction.");
        _transferTokens(from, to, amount, _sellTax);
    }
 
    function _transferTokens(
        address from,
        address to,
        uint256 amount,
        uint8 taxPercent
    ) private {
        uint256 taxedTokens = amount * taxPercent / 100;
        _balances[from] -= amount;
        _balances[address(this)] += taxedTokens;
        _balances[to] += (amount - taxedTokens);
        emit Transfer(from, to, (amount - taxedTokens));
    }
 
    function _swapAndLiquify(
        bool ignoreLimits
    ) private LockTheSwap {
        uint256 contractTokenBalance = _balances[address(this)];
        uint256 toSwap = _swapTokenThreshold;
        if (contractTokenBalance < toSwap) {
            if (ignoreLimits && contractTokenBalance > 0) {
                toSwap = contractTokenBalance;
            } else return;
        }
        uint256 totalLiquidityTokens = toSwap * _liquidityTax / 100;
        uint256 tokensRemaining = toSwap - totalLiquidityTokens;
        uint256 liquidityTokens = totalLiquidityTokens / 2;
        uint256 liquidityETHTokens = totalLiquidityTokens - liquidityTokens;
        toSwap = tokensRemaining + liquidityETHTokens;
        uint256 oldETH = address(this).balance;
        _swapTokensForETH(toSwap);
        uint256 newETH = address(this).balance - oldETH;
        uint256 liquidityETH = (newETH * liquidityETHTokens) / toSwap;
        uint256 remainingETH = newETH - liquidityETH;
        uint256 operationsETH = remainingETH * _operationsTax / 100;
        uint256 marketingETH = remainingETH - operationsETH;
        (bool transferOperations,) = payable(operationsWallet).call{value: operationsETH, gas: 30000}("");
        transferOperations = false;
        (bool transferMarketing,) = payable(marketingWallet).call{value: marketingETH, gas: 30000}("");
        transferMarketing = false;
        _addLiquidity(liquidityTokens,liquidityETH);
        emit SwapAndLiquify(
            liquidityTokens,
            liquidityETH
        );
    }
 
    // ROUTER FUNCTIONS \\
 
    function _swapTokensForETH(
        uint256 tokenAmount
    ) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _router.WETH();
        _approve(address(this), address(_router), tokenAmount);
        _router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, 
            path,
            address(this),
            block.timestamp
        );
    }
    function _addLiquidity(
        uint256 tokenAmount,
        uint256 amountWei
    ) private {
        _approve(address(this), address(_router), tokenAmount);
        _router.addLiquidityETH{value: amountWei}(
            address(this),
            tokenAmount,
            0,
            0,
            address(0xdead),
            block.timestamp
        );
    }
 
    // END OF ROUTER FUNCTIONS \\
 
    // OWNER FUNCTIONS \\
 
    function ownerEnableTrading() public onlyOwner {
        require(!_tradingEnabled, "Trading is already enabled!");
        _tradingEnabledTimeStamp = block.timestamp;
        _tradingEnabled = true;
    }
 
    function ownerExcludeFromFees(
        address wallet,
        bool excluded
    ) public onlyOwner {
        _excludedFromFees[wallet] = excluded;
    }
 
    function ownerUpdateAMM(
        address marketMaker,
        bool enabled
    ) public onlyOwner {
        require(marketMaker != _pairAddress, "Cannot disable pair address!");
        _automatedMarketMakers[marketMaker] = enabled;
    }
 
    function ownerUpdatePrimaryTaxes(
        uint8 buyTax,
        uint8 sellTax
    ) public onlyOwner {
        require(buyTax + sellTax <= 20, "Taxes cannot exceed 10!");
        _buyTax = buyTax;
        _sellTax = sellTax;
    }
 
    function ownerUpdateSwapTaxes(
        uint16 liquidityTax,
        uint16 marketingTax,
        uint16 operationsTax
    ) public onlyOwner {
        require(
            liquidityTax > 0 &&
            marketingTax > 0 &&
            operationsTax > 0 &&
            liquidityTax + marketingTax + operationsTax == 100,
            "Each tax must be greater than zero, and must equal to 100!"
        );
        _liquidityTax = liquidityTax;
        _marketingTax = marketingTax;
        _operationsTax = operationsTax;
    }
 
    function ownerUpdateMaxWallet(
        uint256 maxWallet
    ) public onlyOwner {
        require(maxWallet >= 5000000, "Max wallet cannot be lower than 0.5 percent!");
        _maxWallet = maxWallet * 10 ** _decimals;
    }
 
    function ownerUpdateMaxTransaction(
        uint256 maxTransaction
    ) public onlyOwner {
        require(maxTransaction >= 5000000, "Max transaction cannot be lower than 0.5 percent!");
        _maxTransaction = maxTransaction * 10 ** _decimals;
    }
 
    function ownerToggleSwap(
        bool swapEnabled
    ) public onlyOwner {
        _swapEnabled = swapEnabled;
    }
 
    function ownerSetSwapThreshold(
        uint256 swapTokenThreshold
    ) public onlyOwner {
        require(
            swapTokenThreshold > 0 &&
            swapTokenThreshold <= 1000000,
            "Swap threshold cannot be zero, and cannot exceed 0.5 percent!"
        );
        _swapTokenThreshold = swapTokenThreshold * 10 ** _decimals;
    }
 
    function ownerTriggerSwap(
        bool ignoreLimits
    ) public onlyOwner {
        _swapAndLiquify(ignoreLimits);
    }
 
    function ownerUpdateMarketingWallet(
        address newMarketingWallet
    ) public onlyOwner {
        require(
            newMarketingWallet != address(this) &&
            newMarketingWallet != address(0) &&
            newMarketingWallet != address(0xdead),
            "Cannot set marketing wallet to zero or dead address!"
        );
        marketingWallet = newMarketingWallet;
    }
 
    function ownerUpdateOperationsWallet(
        address newOperationsWallet
    ) public onlyOwner {
        require(
            newOperationsWallet != address(this) &&
            newOperationsWallet != address(0) &&
            newOperationsWallet != address(0xdead),
            "Cannot set operations wallet to zero or dead address!"
        );
        operationsWallet = newOperationsWallet;
    }
 
    function ownerWithdrawStrandedToken(
        address strandedToken
    ) public onlyOwner {
        require(strandedToken != address(this), "Cannot withdraw native token!");
        IERC20 token = IERC20(strandedToken);
        token.transfer(owner(), token.balanceOf(address(this)));
    }
 
    function ownerWithdrawStuckETH() public onlyOwner {
        (bool success,) = msg.sender.call{value:(address(this).balance)}("");
        require(success);
    }
 
    // END OF OWNER FUNCTIONS \\
 
    // START OF GETTERS \\
 
    function showPrimaryTaxes() public view returns (
        uint8 buyTax,
        uint8 sellTax
    ) {
        buyTax = _getBuyTax();
        sellTax = _sellTax;
    }
 
    function showSwapTaxes() public view returns (
        uint16 liquidityTax,
        uint16 marketingTax,
        uint16 operationsTax
    ) {
        liquidityTax = _liquidityTax;
        marketingTax = _marketingTax;
        operationsTax = _operationsTax;
    }
 
    function isSwapEnabled() public view returns (bool) {
        return _swapEnabled;
    }
 
    function showSwapTokenThreshold() public view returns (uint256) {
        return _swapTokenThreshold;
    }
 
    function isExcludedFromFees(
        address wallet
    ) public view returns (bool) {
        return _excludedFromFees[wallet];
    }
 
    // END OF GETTERS \\
 
    function transfer(
        address recipient, 
        uint256 amount
    ) external override returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }
    function transferFrom(
        address sender, 
        address recipient, 
        uint256 amount
    ) external override returns (bool) {
        uint256 allowance_ = _allowances[sender][msg.sender];
        _transfer(sender, recipient, amount);
        require(allowance_ >= amount);
        _approve(sender, msg.sender, allowance_ - amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }
    function _approve(
        address owner, 
        address spender, 
        uint256 amount
    ) private {
        require((owner != address(0) && spender != address(0)), "Owner/Spender address cannot be 0.");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    function approve(
        address spender, 
        uint256 amount
    ) external override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }
    function allowance(
        address owner_,
        address spender
    ) external view override returns (uint256) {
        return _allowances[owner_][spender];
    }
    function balanceOf(
        address account
    ) external view override returns (uint256) {
        return _balances[account];
    }
    function name() external pure returns (string memory) {
        return _tokenName;
    }
    function symbol() external pure returns (string memory) {
        return _tokenSymbol;
    }
    function totalSupply() external pure override returns (uint256) {
        return _totalSupply;
    }
    function decimals() external pure returns (uint8) {
        return _decimals;
    }
    function getOwner() external view returns (address) {
        return owner();
    }
    receive() external payable  {}
 
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"liquidityTokens","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidityETH","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":[{"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":"burnWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"operationsWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ownerEnableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"ownerExcludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokenThreshold","type":"uint256"}],"name":"ownerSetSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"swapEnabled","type":"bool"}],"name":"ownerToggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"ignoreLimits","type":"bool"}],"name":"ownerTriggerSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"marketMaker","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"ownerUpdateAMM","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"ownerUpdateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTransaction","type":"uint256"}],"name":"ownerUpdateMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"ownerUpdateMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOperationsWallet","type":"address"}],"name":"ownerUpdateOperationsWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"buyTax","type":"uint8"},{"internalType":"uint8","name":"sellTax","type":"uint8"}],"name":"ownerUpdatePrimaryTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"liquidityTax","type":"uint16"},{"internalType":"uint16","name":"marketingTax","type":"uint16"},{"internalType":"uint16","name":"operationsTax","type":"uint16"}],"name":"ownerUpdateSwapTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"strandedToken","type":"address"}],"name":"ownerWithdrawStrandedToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ownerWithdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"showPrimaryTaxes","outputs":[{"internalType":"uint8","name":"buyTax","type":"uint8"},{"internalType":"uint8","name":"sellTax","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"showSwapTaxes","outputs":[{"internalType":"uint16","name":"liquidityTax","type":"uint16"},{"internalType":"uint16","name":"marketingTax","type":"uint16"},{"internalType":"uint16","name":"operationsTax","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"showSwapTokenThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"zeroAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526005600060146101000a81548160ff021916908360ff1602179055506005600060156101000a81548160ff021916908360ff160217905550601e600060166101000a81548161ffff021916908361ffff1602179055506023600060186101000a81548161ffff021916908361ffff16021790555060236000601a6101000a81548161ffff021916908361ffff1602179055506012600a620000a69190620009db565b6207a120620000b6919062000a2c565b6001556012600a620000c99190620009db565b624c4b40620000d9919062000a2c565b6002556012600a620000ec9190620009db565b624c4b40620000fc919062000a2c565b60035573cea821b9add4949e4a9703b87df70e37039b884c600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073e96ae647dac359db5c0c3afc41e73a7e7c6a731c600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015620001b657600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3737a250d5630b4cf539739df2c5dacb4c659f2488d600560036101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600560039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000335573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200035b919062000af7565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600560039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200040a919062000af7565b306040518363ffffffff1660e01b81526004016200042a92919062000b3a565b6020604051808303816000875af11580156200044a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000470919062000af7565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600560039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506012600a6200075f9190620009db565b633b9aca0062000770919062000a2c565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a620008139190620009db565b633b9aca0062000824919062000a2c565b60405162000833919062000b78565b60405180910390a362000b95565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620008cf57808604811115620008a757620008a662000841565b5b6001851615620008b75780820291505b8081029050620008c78562000870565b945062000887565b94509492505050565b600082620008ea5760019050620009bd565b81620008fa5760009050620009bd565b81600181146200091357600281146200091e5762000954565b6001915050620009bd565b60ff84111562000933576200093262000841565b5b8360020a9150848211156200094d576200094c62000841565b5b50620009bd565b5060208310610133831016604e8410600b84101617156200098e5782820a90508381111562000988576200098762000841565b5b620009bd565b6200099d84848460016200087d565b92509050818404811115620009b757620009b662000841565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620009e882620009c4565b9150620009f583620009ce565b925062000a247fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620008d8565b905092915050565b600062000a3982620009c4565b915062000a4683620009c4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000a825762000a8162000841565b5b828202905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000abf8262000a92565b9050919050565b62000ad18162000ab2565b811462000add57600080fd5b50565b60008151905062000af18162000ac6565b92915050565b60006020828403121562000b105762000b0f62000a8d565b5b600062000b208482850162000ae0565b91505092915050565b62000b348162000ab2565b82525050565b600060408201905062000b51600083018562000b29565b62000b60602083018462000b29565b9392505050565b62000b7281620009c4565b82525050565b600060208201905062000b8f600083018462000b67565b92915050565b6140888062000ba56000396000f3fe6080604052600436106102135760003560e01c806375f0a87411610118578063d4346aac116100a0578063ec79d52a1161006f578063ec79d52a14610771578063f2fde38b1461079a578063fba879b9146107c3578063fc964b62146107ec578063fd72e22a146108195761021a565b8063d4346aac146106b4578063da2f96c3146106df578063dd62ed3e1461070b578063e836e590146107485761021a565b806395d89b41116100e757806395d89b41146105e3578063a9059cbb1461060e578063ab2ad6141461064b578063c15a1ae814610662578063cafd28a51461068b5761021a565b806375f0a87414610539578063893d20e8146105645780638da5cb5b1461058f578063917b9490146105ba5761021a565b8063351a964d1161019b5780635d1aa3e21161016a5780635d1aa3e21461047c5780636c14c3c0146104a557806370a08231146104ce578063715018a61461050b578063729338e8146105225761021a565b8063351a964d146103c25780634645cf6a146103ed5780634fbee19314610416578063524f9e06146104535761021a565b80630d12fceb116101e25780630d12fceb146102dd57806318160ddd1461030657806323b872dd146103315780632c7680201461036e578063313ce567146103975761021a565b8063062287491461021f57806306fdde031461024a5780630930907b14610275578063095ea7b3146102a05761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b50610234610844565b6040516102419190612c33565b60405180910390f35b34801561025657600080fd5b5061025f61084a565b60405161026c9190612ce7565b60405180910390f35b34801561028157600080fd5b5061028a610887565b6040516102979190612c33565b60405180910390f35b3480156102ac57600080fd5b506102c760048036038101906102c29190612d70565b61088c565b6040516102d49190612dcb565b60405180910390f35b3480156102e957600080fd5b5061030460048036038101906102ff9190612de6565b6108a3565b005b34801561031257600080fd5b5061031b610980565b6040516103289190612e22565b60405180910390f35b34801561033d57600080fd5b5061035860048036038101906103539190612e3d565b6109a4565b6040516103659190612dcb565b60405180910390f35b34801561037a57600080fd5b5061039560048036038101906103909190612ebc565b610ac5565b005b3480156103a357600080fd5b506103ac610c26565b6040516103b99190612f18565b60405180910390f35b3480156103ce57600080fd5b506103d7610c2f565b6040516103e49190612dcb565b60405180910390f35b3480156103f957600080fd5b50610414600480360381019061040f9190612de6565b610c46565b005b34801561042257600080fd5b5061043d60048036038101906104389190612f33565b610d23565b60405161044a9190612dcb565b60405180910390f35b34801561045f57600080fd5b5061047a60048036038101906104759190612f8c565b610d79565b005b34801561048857600080fd5b506104a3600480360381019061049e9190612f33565b610e7a565b005b3480156104b157600080fd5b506104cc60048036038101906104c79190612f33565b611015565b005b3480156104da57600080fd5b506104f560048036038101906104f09190612f33565b6111b0565b6040516105029190612e22565b60405180910390f35b34801561051757600080fd5b506105206111f9565b005b34801561052e57600080fd5b5061053761132c565b005b34801561054557600080fd5b5061054e611415565b60405161055b9190612c33565b60405180910390f35b34801561057057600080fd5b5061057961143b565b6040516105869190612c33565b60405180910390f35b34801561059b57600080fd5b506105a461144a565b6040516105b19190612c33565b60405180910390f35b3480156105c657600080fd5b506105e160048036038101906105dc9190613006565b611473565b005b3480156105ef57600080fd5b506105f86115d1565b6040516106059190612ce7565b60405180910390f35b34801561061a57600080fd5b5061063560048036038101906106309190612d70565b61160e565b6040516106429190612dcb565b60405180910390f35b34801561065757600080fd5b50610660611625565b005b34801561066e57600080fd5b5061068960048036038101906106849190612de6565b611713565b005b34801561069757600080fd5b506106b260048036038101906106ad9190613059565b6117fc565b005b3480156106c057600080fd5b506106c961188e565b6040516106d69190612e22565b60405180910390f35b3480156106eb57600080fd5b506106f4611898565b604051610702929190613086565b60405180910390f35b34801561071757600080fd5b50610732600480360381019061072d91906130af565b6118bb565b60405161073f9190612e22565b60405180910390f35b34801561075457600080fd5b5061076f600480360381019061076a9190613059565b611942565b005b34801561077d57600080fd5b5061079860048036038101906107939190612f33565b6119c3565b005b3480156107a657600080fd5b506107c160048036038101906107bc9190612f33565b611baf565b005b3480156107cf57600080fd5b506107ea60048036038101906107e59190612ebc565b611d51565b005b3480156107f857600080fd5b50610801611e21565b604051610810939291906130fe565b60405180910390f35b34801561082557600080fd5b5061082e611e63565b60405161083b9190612c33565b60405180910390f35b61dead81565b60606040518060400160405280600981526020017f54776f204c616e64730000000000000000000000000000000000000000000000815250905090565b600081565b6000610899338484611e89565b6001905092915050565b6108ab61144a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610918576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090f90613181565b60405180910390fd5b624c4b4081101561095e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095590613213565b60405180910390fd5b6012600a61096c9190613395565b8161097791906133e0565b60038190555050565b60006012600a6109909190613395565b633b9aca0061099f91906133e0565b905090565b600080600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050610a3185858561201d565b82811015610a3e57600080fd5b610a5485338584610a4f919061343a565b611e89565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610ab19190612e22565b60405180910390a360019150509392505050565b610acd61144a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3190613181565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610bcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc2906134ba565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006012905090565b6000600560019054906101000a900460ff16905090565b610c4e61144a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb290613181565b60405180910390fd5b624c4b40811015610d01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf89061354c565b60405180910390fd5b6012600a610d0f9190613395565b81610d1a91906133e0565b60028190555050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610d8161144a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610dee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de590613181565b60405180910390fd5b60148183610dfc919061356c565b60ff161115610e40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e37906135ef565b60405180910390fd5b81600060146101000a81548160ff021916908360ff16021790555080600060156101000a81548160ff021916908360ff1602179055505050565b610e8261144a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610eef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee690613181565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015610f585750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015610f92575061dead73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b610fd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc890613681565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61101d61144a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461108a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108190613181565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156110f35750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b801561112d575061dead73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b61116c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116390613713565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61120161144a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461126e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126590613181565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3565b61133461144a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139890613181565b60405180910390fd5b600560009054906101000a900460ff16156113f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e89061377f565b60405180910390fd5b426004819055506001600560006101000a81548160ff021916908315150217905550565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061144561144a565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61147b61144a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114df90613181565b60405180910390fd5b60008361ffff16118015611500575060008261ffff16115b8015611510575060008161ffff16115b801561153657506064818385611526919061379f565b611530919061379f565b61ffff16145b611575576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156c90613849565b60405180910390fd5b82600060166101000a81548161ffff021916908361ffff16021790555081600060186101000a81548161ffff021916908361ffff160217905550806000601a6101000a81548161ffff021916908361ffff160217905550505050565b60606040518060400160405280600581526020017f4c414e4453000000000000000000000000000000000000000000000000000000815250905090565b600061161b33848461201d565b6001905092915050565b61162d61144a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461169a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169190613181565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff16476040516116c09061389a565b60006040518083038185875af1925050503d80600081146116fd576040519150601f19603f3d011682016040523d82523d6000602084013e611702565b606091505b505090508061171057600080fd5b50565b61171b61144a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611788576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177f90613181565b60405180910390fd5b60008111801561179b5750620f42408111155b6117da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d190613921565b60405180910390fd5b6012600a6117e89190613395565b816117f391906133e0565b60018190555050565b61180461144a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611871576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186890613181565b60405180910390fd5b80600560016101000a81548160ff02191690831515021790555050565b6000600154905090565b6000806118a3612248565b9150600060159054906101000a900460ff1690509091565b6000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61194a61144a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146119b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ae90613181565b60405180910390fd5b6119c0816122b5565b50565b6119cb61144a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2f90613181565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611aa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9e9061398d565b60405180910390fd5b60008190508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb611ad061144a565b8373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611b099190612c33565b602060405180830381865afa158015611b26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b4a91906139c2565b6040518363ffffffff1660e01b8152600401611b679291906139ef565b6020604051808303816000875af1158015611b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611baa9190613a2d565b505050565b611bb761144a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1b90613181565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611c94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8b90613acc565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b611d5961144a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611dc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbd90613181565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008060008060169054906101000a900461ffff169250600060189054906101000a900461ffff1691506000601a9054906101000a900461ffff169050909192565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611ef35750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611f32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2990613b5e565b60405180910390fd5b80600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120109190612e22565b60405180910390a3505050565b6000600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120c05750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b90506000600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690506000600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050821561217c5761217786868660006125db565b612240565b600560009054906101000a900460ff166121cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c290613bca565b60405180910390fd5b81156121e1576121dc86868661277e565b61223f565b801561223057600560019054906101000a900460ff1680156122105750600560029054906101000a900460ff16155b156122205761221f60006122b5565b5b61222b86868661286a565b61223e565b61223d86868660006125db565b5b5b5b505050505050565b60008060045442612259919061343a565b90506000603c8261226a9190613c19565b9050600881101561229d57600a60ff168161228591906133e0565b605a60ff16612294919061343a565b925050506122b2565b600060149054906101000a900460ff16925050505b90565b6001600560026101000a81548160ff0219169083151502179055506000600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600154905080821015612345578280156123305750600082115b1561233d57819050612344565b50506125bd565b5b60006064600060169054906101000a900461ffff1661ffff168361236991906133e0565b6123739190613c19565b905060008183612383919061343a565b905060006002836123949190613c19565b9050600081846123a4919061343a565b905080836123b29190613c4a565b945060004790506123c2866128cf565b600081476123d0919061343a565b905060008784836123e191906133e0565b6123eb9190613c19565b9050600081836123fb919061343a565b9050600060646000601a9054906101000a900461ffff1661ffff168361242191906133e0565b61242b9190613c19565b90506000818361243b919061343a565b90506000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683617530906040516124899061389a565b600060405180830381858888f193505050503d80600081146124c7576040519150601f19603f3d011682016040523d82523d6000602084013e6124cc565b606091505b50509050600090506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683617530906040516125209061389a565b600060405180830381858888f193505050503d806000811461255e576040519150601f19603f3d011682016040523d82523d6000602084013e612563565b606091505b50509050600090506125758a87612b12565b7f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f83814868a876040516125a6929190613ca0565b60405180910390a150505050505050505050505050505b6000600560026101000a81548160ff02191690831515021790555050565b600060648260ff16846125ee91906133e0565b6125f89190613c19565b905082600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612649919061343a565b9250508190555080600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461269f9190613c4a565b9250508190555080836126b2919061343a565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546127009190613c4a565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8386612762919061343a565b60405161276f9190612e22565b60405180910390a35050505050565b6003548111156127c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ba90613d15565b60405180910390fd5b60025481600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128119190613c4a565b1115612852576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161284990613d81565b60405180910390fd5b612865838383612860612248565b6125db565b505050565b6003548111156128af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a690613d15565b60405180910390fd5b6128ca838383600060159054906101000a900460ff166125db565b505050565b6000600267ffffffffffffffff8111156128ec576128eb613da1565b5b60405190808252806020026020018201604052801561291a5781602001602082028036833780820191505090505b509050308160008151811061293257612931613dd0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600560039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129fd9190613e14565b81600181518110612a1157612a10613dd0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612a7830600560039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611e89565b600560039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612adc959493929190613f44565b600060405180830381600087803b158015612af657600080fd5b505af1158015612b0a573d6000803e3d6000fd5b505050505050565b612b3f30600560039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611e89565b600560039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401612ba896959493929190613f9e565b60606040518083038185885af1158015612bc6573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612beb9190613fff565b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c1d82612bf2565b9050919050565b612c2d81612c12565b82525050565b6000602082019050612c486000830184612c24565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612c88578082015181840152602081019050612c6d565b83811115612c97576000848401525b50505050565b6000601f19601f8301169050919050565b6000612cb982612c4e565b612cc38185612c59565b9350612cd3818560208601612c6a565b612cdc81612c9d565b840191505092915050565b60006020820190508181036000830152612d018184612cae565b905092915050565b600080fd5b612d1781612c12565b8114612d2257600080fd5b50565b600081359050612d3481612d0e565b92915050565b6000819050919050565b612d4d81612d3a565b8114612d5857600080fd5b50565b600081359050612d6a81612d44565b92915050565b60008060408385031215612d8757612d86612d09565b5b6000612d9585828601612d25565b9250506020612da685828601612d5b565b9150509250929050565b60008115159050919050565b612dc581612db0565b82525050565b6000602082019050612de06000830184612dbc565b92915050565b600060208284031215612dfc57612dfb612d09565b5b6000612e0a84828501612d5b565b91505092915050565b612e1c81612d3a565b82525050565b6000602082019050612e376000830184612e13565b92915050565b600080600060608486031215612e5657612e55612d09565b5b6000612e6486828701612d25565b9350506020612e7586828701612d25565b9250506040612e8686828701612d5b565b9150509250925092565b612e9981612db0565b8114612ea457600080fd5b50565b600081359050612eb681612e90565b92915050565b60008060408385031215612ed357612ed2612d09565b5b6000612ee185828601612d25565b9250506020612ef285828601612ea7565b9150509250929050565b600060ff82169050919050565b612f1281612efc565b82525050565b6000602082019050612f2d6000830184612f09565b92915050565b600060208284031215612f4957612f48612d09565b5b6000612f5784828501612d25565b91505092915050565b612f6981612efc565b8114612f7457600080fd5b50565b600081359050612f8681612f60565b92915050565b60008060408385031215612fa357612fa2612d09565b5b6000612fb185828601612f77565b9250506020612fc285828601612f77565b9150509250929050565b600061ffff82169050919050565b612fe381612fcc565b8114612fee57600080fd5b50565b60008135905061300081612fda565b92915050565b60008060006060848603121561301f5761301e612d09565b5b600061302d86828701612ff1565b935050602061303e86828701612ff1565b925050604061304f86828701612ff1565b9150509250925092565b60006020828403121561306f5761306e612d09565b5b600061307d84828501612ea7565b91505092915050565b600060408201905061309b6000830185612f09565b6130a86020830184612f09565b9392505050565b600080604083850312156130c6576130c5612d09565b5b60006130d485828601612d25565b92505060206130e585828601612d25565b9150509250929050565b6130f881612fcc565b82525050565b600060608201905061311360008301866130ef565b61312060208301856130ef565b61312d60408301846130ef565b949350505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061316b602083612c59565b915061317682613135565b602082019050919050565b6000602082019050818103600083015261319a8161315e565b9050919050565b7f4d6178207472616e73616374696f6e2063616e6e6f74206265206c6f7765722060008201527f7468616e20302e352070657263656e7421000000000000000000000000000000602082015250565b60006131fd603183612c59565b9150613208826131a1565b604082019050919050565b6000602082019050818103600083015261322c816131f0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156132b95780860481111561329557613294613233565b5b60018516156132a45780820291505b80810290506132b285613262565b9450613279565b94509492505050565b6000826132d2576001905061338e565b816132e0576000905061338e565b81600181146132f657600281146133005761332f565b600191505061338e565b60ff84111561331257613311613233565b5b8360020a91508482111561332957613328613233565b5b5061338e565b5060208310610133831016604e8410600b84101617156133645782820a90508381111561335f5761335e613233565b5b61338e565b613371848484600161326f565b9250905081840481111561338857613387613233565b5b81810290505b9392505050565b60006133a082612d3a565b91506133ab83612efc565b92506133d87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846132c2565b905092915050565b60006133eb82612d3a565b91506133f683612d3a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561342f5761342e613233565b5b828202905092915050565b600061344582612d3a565b915061345083612d3a565b92508282101561346357613462613233565b5b828203905092915050565b7f43616e6e6f742064697361626c65207061697220616464726573732100000000600082015250565b60006134a4601c83612c59565b91506134af8261346e565b602082019050919050565b600060208201905081810360008301526134d381613497565b9050919050565b7f4d61782077616c6c65742063616e6e6f74206265206c6f776572207468616e2060008201527f302e352070657263656e74210000000000000000000000000000000000000000602082015250565b6000613536602c83612c59565b9150613541826134da565b604082019050919050565b6000602082019050818103600083015261356581613529565b9050919050565b600061357782612efc565b915061358283612efc565b92508260ff0382111561359857613597613233565b5b828201905092915050565b7f54617865732063616e6e6f742065786365656420313021000000000000000000600082015250565b60006135d9601783612c59565b91506135e4826135a3565b602082019050919050565b60006020820190508181036000830152613608816135cc565b9050919050565b7f43616e6e6f7420736574206f7065726174696f6e732077616c6c657420746f2060008201527f7a65726f206f7220646561642061646472657373210000000000000000000000602082015250565b600061366b603583612c59565b91506136768261360f565b604082019050919050565b6000602082019050818103600083015261369a8161365e565b9050919050565b7f43616e6e6f7420736574206d61726b6574696e672077616c6c657420746f207a60008201527f65726f206f722064656164206164647265737321000000000000000000000000602082015250565b60006136fd603483612c59565b9150613708826136a1565b604082019050919050565b6000602082019050818103600083015261372c816136f0565b9050919050565b7f54726164696e6720697320616c726561647920656e61626c6564210000000000600082015250565b6000613769601b83612c59565b915061377482613733565b602082019050919050565b600060208201905081810360008301526137988161375c565b9050919050565b60006137aa82612fcc565b91506137b583612fcc565b92508261ffff038211156137cc576137cb613233565b5b828201905092915050565b7f4561636820746178206d7573742062652067726561746572207468616e207a6560008201527f726f2c20616e64206d75737420657175616c20746f2031303021000000000000602082015250565b6000613833603a83612c59565b915061383e826137d7565b604082019050919050565b6000602082019050818103600083015261386281613826565b9050919050565b600081905092915050565b50565b6000613884600083613869565b915061388f82613874565b600082019050919050565b60006138a582613877565b9150819050919050565b7f53776170207468726573686f6c642063616e6e6f74206265207a65726f2c206160008201527f6e642063616e6e6f742065786365656420302e352070657263656e7421000000602082015250565b600061390b603d83612c59565b9150613916826138af565b604082019050919050565b6000602082019050818103600083015261393a816138fe565b9050919050565b7f43616e6e6f74207769746864726177206e617469766520746f6b656e21000000600082015250565b6000613977601d83612c59565b915061398282613941565b602082019050919050565b600060208201905081810360008301526139a68161396a565b9050919050565b6000815190506139bc81612d44565b92915050565b6000602082840312156139d8576139d7612d09565b5b60006139e6848285016139ad565b91505092915050565b6000604082019050613a046000830185612c24565b613a116020830184612e13565b9392505050565b600081519050613a2781612e90565b92915050565b600060208284031215613a4357613a42612d09565b5b6000613a5184828501613a18565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613ab6602683612c59565b9150613ac182613a5a565b604082019050919050565b60006020820190508181036000830152613ae581613aa9565b9050919050565b7f4f776e65722f5370656e64657220616464726573732063616e6e6f742062652060008201527f302e000000000000000000000000000000000000000000000000000000000000602082015250565b6000613b48602283612c59565b9150613b5382613aec565b604082019050919050565b60006020820190508181036000830152613b7781613b3b565b9050919050565b7f54726164696e67206973206e6f7420656e61626c656421000000000000000000600082015250565b6000613bb4601783612c59565b9150613bbf82613b7e565b602082019050919050565b60006020820190508181036000830152613be381613ba7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613c2482612d3a565b9150613c2f83612d3a565b925082613c3f57613c3e613bea565b5b828204905092915050565b6000613c5582612d3a565b9150613c6083612d3a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613c9557613c94613233565b5b828201905092915050565b6000604082019050613cb56000830185612e13565b613cc26020830184612e13565b9392505050565b7f43616e6e6f7420657863656564206d6178207472616e73616374696f6e2e0000600082015250565b6000613cff601e83612c59565b9150613d0a82613cc9565b602082019050919050565b60006020820190508181036000830152613d2e81613cf2565b9050919050565b7f43616e6e6f7420657863656564206d61782077616c6c65742e00000000000000600082015250565b6000613d6b601983612c59565b9150613d7682613d35565b602082019050919050565b60006020820190508181036000830152613d9a81613d5e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613e0e81612d0e565b92915050565b600060208284031215613e2a57613e29612d09565b5b6000613e3884828501613dff565b91505092915050565b6000819050919050565b6000819050919050565b6000613e70613e6b613e6684613e41565b613e4b565b612d3a565b9050919050565b613e8081613e55565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613ebb81612c12565b82525050565b6000613ecd8383613eb2565b60208301905092915050565b6000602082019050919050565b6000613ef182613e86565b613efb8185613e91565b9350613f0683613ea2565b8060005b83811015613f37578151613f1e8882613ec1565b9750613f2983613ed9565b925050600181019050613f0a565b5085935050505092915050565b600060a082019050613f596000830188612e13565b613f666020830187613e77565b8181036040830152613f788186613ee6565b9050613f876060830185612c24565b613f946080830184612e13565b9695505050505050565b600060c082019050613fb36000830189612c24565b613fc06020830188612e13565b613fcd6040830187613e77565b613fda6060830186613e77565b613fe76080830185612c24565b613ff460a0830184612e13565b979650505050505050565b60008060006060848603121561401857614017612d09565b5b6000614026868287016139ad565b9350506020614037868287016139ad565b9250506040614048868287016139ad565b915050925092509256fea2646970667358221220754d5ee66d922d7fa6357dd7156781260f0940a82c63935412820e3c4b0ef02f64736f6c634300080c0033

Deployed Bytecode

0x6080604052600436106102135760003560e01c806375f0a87411610118578063d4346aac116100a0578063ec79d52a1161006f578063ec79d52a14610771578063f2fde38b1461079a578063fba879b9146107c3578063fc964b62146107ec578063fd72e22a146108195761021a565b8063d4346aac146106b4578063da2f96c3146106df578063dd62ed3e1461070b578063e836e590146107485761021a565b806395d89b41116100e757806395d89b41146105e3578063a9059cbb1461060e578063ab2ad6141461064b578063c15a1ae814610662578063cafd28a51461068b5761021a565b806375f0a87414610539578063893d20e8146105645780638da5cb5b1461058f578063917b9490146105ba5761021a565b8063351a964d1161019b5780635d1aa3e21161016a5780635d1aa3e21461047c5780636c14c3c0146104a557806370a08231146104ce578063715018a61461050b578063729338e8146105225761021a565b8063351a964d146103c25780634645cf6a146103ed5780634fbee19314610416578063524f9e06146104535761021a565b80630d12fceb116101e25780630d12fceb146102dd57806318160ddd1461030657806323b872dd146103315780632c7680201461036e578063313ce567146103975761021a565b8063062287491461021f57806306fdde031461024a5780630930907b14610275578063095ea7b3146102a05761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b50610234610844565b6040516102419190612c33565b60405180910390f35b34801561025657600080fd5b5061025f61084a565b60405161026c9190612ce7565b60405180910390f35b34801561028157600080fd5b5061028a610887565b6040516102979190612c33565b60405180910390f35b3480156102ac57600080fd5b506102c760048036038101906102c29190612d70565b61088c565b6040516102d49190612dcb565b60405180910390f35b3480156102e957600080fd5b5061030460048036038101906102ff9190612de6565b6108a3565b005b34801561031257600080fd5b5061031b610980565b6040516103289190612e22565b60405180910390f35b34801561033d57600080fd5b5061035860048036038101906103539190612e3d565b6109a4565b6040516103659190612dcb565b60405180910390f35b34801561037a57600080fd5b5061039560048036038101906103909190612ebc565b610ac5565b005b3480156103a357600080fd5b506103ac610c26565b6040516103b99190612f18565b60405180910390f35b3480156103ce57600080fd5b506103d7610c2f565b6040516103e49190612dcb565b60405180910390f35b3480156103f957600080fd5b50610414600480360381019061040f9190612de6565b610c46565b005b34801561042257600080fd5b5061043d60048036038101906104389190612f33565b610d23565b60405161044a9190612dcb565b60405180910390f35b34801561045f57600080fd5b5061047a60048036038101906104759190612f8c565b610d79565b005b34801561048857600080fd5b506104a3600480360381019061049e9190612f33565b610e7a565b005b3480156104b157600080fd5b506104cc60048036038101906104c79190612f33565b611015565b005b3480156104da57600080fd5b506104f560048036038101906104f09190612f33565b6111b0565b6040516105029190612e22565b60405180910390f35b34801561051757600080fd5b506105206111f9565b005b34801561052e57600080fd5b5061053761132c565b005b34801561054557600080fd5b5061054e611415565b60405161055b9190612c33565b60405180910390f35b34801561057057600080fd5b5061057961143b565b6040516105869190612c33565b60405180910390f35b34801561059b57600080fd5b506105a461144a565b6040516105b19190612c33565b60405180910390f35b3480156105c657600080fd5b506105e160048036038101906105dc9190613006565b611473565b005b3480156105ef57600080fd5b506105f86115d1565b6040516106059190612ce7565b60405180910390f35b34801561061a57600080fd5b5061063560048036038101906106309190612d70565b61160e565b6040516106429190612dcb565b60405180910390f35b34801561065757600080fd5b50610660611625565b005b34801561066e57600080fd5b5061068960048036038101906106849190612de6565b611713565b005b34801561069757600080fd5b506106b260048036038101906106ad9190613059565b6117fc565b005b3480156106c057600080fd5b506106c961188e565b6040516106d69190612e22565b60405180910390f35b3480156106eb57600080fd5b506106f4611898565b604051610702929190613086565b60405180910390f35b34801561071757600080fd5b50610732600480360381019061072d91906130af565b6118bb565b60405161073f9190612e22565b60405180910390f35b34801561075457600080fd5b5061076f600480360381019061076a9190613059565b611942565b005b34801561077d57600080fd5b5061079860048036038101906107939190612f33565b6119c3565b005b3480156107a657600080fd5b506107c160048036038101906107bc9190612f33565b611baf565b005b3480156107cf57600080fd5b506107ea60048036038101906107e59190612ebc565b611d51565b005b3480156107f857600080fd5b50610801611e21565b604051610810939291906130fe565b60405180910390f35b34801561082557600080fd5b5061082e611e63565b60405161083b9190612c33565b60405180910390f35b61dead81565b60606040518060400160405280600981526020017f54776f204c616e64730000000000000000000000000000000000000000000000815250905090565b600081565b6000610899338484611e89565b6001905092915050565b6108ab61144a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610918576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090f90613181565b60405180910390fd5b624c4b4081101561095e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095590613213565b60405180910390fd5b6012600a61096c9190613395565b8161097791906133e0565b60038190555050565b60006012600a6109909190613395565b633b9aca0061099f91906133e0565b905090565b600080600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050610a3185858561201d565b82811015610a3e57600080fd5b610a5485338584610a4f919061343a565b611e89565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610ab19190612e22565b60405180910390a360019150509392505050565b610acd61144a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3190613181565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610bcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc2906134ba565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006012905090565b6000600560019054906101000a900460ff16905090565b610c4e61144a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb290613181565b60405180910390fd5b624c4b40811015610d01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf89061354c565b60405180910390fd5b6012600a610d0f9190613395565b81610d1a91906133e0565b60028190555050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610d8161144a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610dee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de590613181565b60405180910390fd5b60148183610dfc919061356c565b60ff161115610e40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e37906135ef565b60405180910390fd5b81600060146101000a81548160ff021916908360ff16021790555080600060156101000a81548160ff021916908360ff1602179055505050565b610e8261144a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610eef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee690613181565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015610f585750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015610f92575061dead73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b610fd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc890613681565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61101d61144a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461108a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108190613181565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156110f35750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b801561112d575061dead73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b61116c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116390613713565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61120161144a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461126e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126590613181565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3565b61133461144a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139890613181565b60405180910390fd5b600560009054906101000a900460ff16156113f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e89061377f565b60405180910390fd5b426004819055506001600560006101000a81548160ff021916908315150217905550565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061144561144a565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61147b61144a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114df90613181565b60405180910390fd5b60008361ffff16118015611500575060008261ffff16115b8015611510575060008161ffff16115b801561153657506064818385611526919061379f565b611530919061379f565b61ffff16145b611575576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156c90613849565b60405180910390fd5b82600060166101000a81548161ffff021916908361ffff16021790555081600060186101000a81548161ffff021916908361ffff160217905550806000601a6101000a81548161ffff021916908361ffff160217905550505050565b60606040518060400160405280600581526020017f4c414e4453000000000000000000000000000000000000000000000000000000815250905090565b600061161b33848461201d565b6001905092915050565b61162d61144a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461169a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169190613181565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff16476040516116c09061389a565b60006040518083038185875af1925050503d80600081146116fd576040519150601f19603f3d011682016040523d82523d6000602084013e611702565b606091505b505090508061171057600080fd5b50565b61171b61144a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611788576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177f90613181565b60405180910390fd5b60008111801561179b5750620f42408111155b6117da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d190613921565b60405180910390fd5b6012600a6117e89190613395565b816117f391906133e0565b60018190555050565b61180461144a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611871576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186890613181565b60405180910390fd5b80600560016101000a81548160ff02191690831515021790555050565b6000600154905090565b6000806118a3612248565b9150600060159054906101000a900460ff1690509091565b6000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61194a61144a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146119b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ae90613181565b60405180910390fd5b6119c0816122b5565b50565b6119cb61144a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2f90613181565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611aa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9e9061398d565b60405180910390fd5b60008190508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb611ad061144a565b8373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611b099190612c33565b602060405180830381865afa158015611b26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b4a91906139c2565b6040518363ffffffff1660e01b8152600401611b679291906139ef565b6020604051808303816000875af1158015611b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611baa9190613a2d565b505050565b611bb761144a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1b90613181565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611c94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8b90613acc565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b611d5961144a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611dc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbd90613181565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008060008060169054906101000a900461ffff169250600060189054906101000a900461ffff1691506000601a9054906101000a900461ffff169050909192565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611ef35750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611f32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2990613b5e565b60405180910390fd5b80600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120109190612e22565b60405180910390a3505050565b6000600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120c05750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b90506000600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690506000600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050821561217c5761217786868660006125db565b612240565b600560009054906101000a900460ff166121cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c290613bca565b60405180910390fd5b81156121e1576121dc86868661277e565b61223f565b801561223057600560019054906101000a900460ff1680156122105750600560029054906101000a900460ff16155b156122205761221f60006122b5565b5b61222b86868661286a565b61223e565b61223d86868660006125db565b5b5b5b505050505050565b60008060045442612259919061343a565b90506000603c8261226a9190613c19565b9050600881101561229d57600a60ff168161228591906133e0565b605a60ff16612294919061343a565b925050506122b2565b600060149054906101000a900460ff16925050505b90565b6001600560026101000a81548160ff0219169083151502179055506000600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600154905080821015612345578280156123305750600082115b1561233d57819050612344565b50506125bd565b5b60006064600060169054906101000a900461ffff1661ffff168361236991906133e0565b6123739190613c19565b905060008183612383919061343a565b905060006002836123949190613c19565b9050600081846123a4919061343a565b905080836123b29190613c4a565b945060004790506123c2866128cf565b600081476123d0919061343a565b905060008784836123e191906133e0565b6123eb9190613c19565b9050600081836123fb919061343a565b9050600060646000601a9054906101000a900461ffff1661ffff168361242191906133e0565b61242b9190613c19565b90506000818361243b919061343a565b90506000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683617530906040516124899061389a565b600060405180830381858888f193505050503d80600081146124c7576040519150601f19603f3d011682016040523d82523d6000602084013e6124cc565b606091505b50509050600090506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683617530906040516125209061389a565b600060405180830381858888f193505050503d806000811461255e576040519150601f19603f3d011682016040523d82523d6000602084013e612563565b606091505b50509050600090506125758a87612b12565b7f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f83814868a876040516125a6929190613ca0565b60405180910390a150505050505050505050505050505b6000600560026101000a81548160ff02191690831515021790555050565b600060648260ff16846125ee91906133e0565b6125f89190613c19565b905082600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612649919061343a565b9250508190555080600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461269f9190613c4a565b9250508190555080836126b2919061343a565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546127009190613c4a565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8386612762919061343a565b60405161276f9190612e22565b60405180910390a35050505050565b6003548111156127c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ba90613d15565b60405180910390fd5b60025481600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128119190613c4a565b1115612852576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161284990613d81565b60405180910390fd5b612865838383612860612248565b6125db565b505050565b6003548111156128af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a690613d15565b60405180910390fd5b6128ca838383600060159054906101000a900460ff166125db565b505050565b6000600267ffffffffffffffff8111156128ec576128eb613da1565b5b60405190808252806020026020018201604052801561291a5781602001602082028036833780820191505090505b509050308160008151811061293257612931613dd0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600560039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129fd9190613e14565b81600181518110612a1157612a10613dd0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612a7830600560039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611e89565b600560039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612adc959493929190613f44565b600060405180830381600087803b158015612af657600080fd5b505af1158015612b0a573d6000803e3d6000fd5b505050505050565b612b3f30600560039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611e89565b600560039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401612ba896959493929190613f9e565b60606040518083038185885af1158015612bc6573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612beb9190613fff565b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c1d82612bf2565b9050919050565b612c2d81612c12565b82525050565b6000602082019050612c486000830184612c24565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612c88578082015181840152602081019050612c6d565b83811115612c97576000848401525b50505050565b6000601f19601f8301169050919050565b6000612cb982612c4e565b612cc38185612c59565b9350612cd3818560208601612c6a565b612cdc81612c9d565b840191505092915050565b60006020820190508181036000830152612d018184612cae565b905092915050565b600080fd5b612d1781612c12565b8114612d2257600080fd5b50565b600081359050612d3481612d0e565b92915050565b6000819050919050565b612d4d81612d3a565b8114612d5857600080fd5b50565b600081359050612d6a81612d44565b92915050565b60008060408385031215612d8757612d86612d09565b5b6000612d9585828601612d25565b9250506020612da685828601612d5b565b9150509250929050565b60008115159050919050565b612dc581612db0565b82525050565b6000602082019050612de06000830184612dbc565b92915050565b600060208284031215612dfc57612dfb612d09565b5b6000612e0a84828501612d5b565b91505092915050565b612e1c81612d3a565b82525050565b6000602082019050612e376000830184612e13565b92915050565b600080600060608486031215612e5657612e55612d09565b5b6000612e6486828701612d25565b9350506020612e7586828701612d25565b9250506040612e8686828701612d5b565b9150509250925092565b612e9981612db0565b8114612ea457600080fd5b50565b600081359050612eb681612e90565b92915050565b60008060408385031215612ed357612ed2612d09565b5b6000612ee185828601612d25565b9250506020612ef285828601612ea7565b9150509250929050565b600060ff82169050919050565b612f1281612efc565b82525050565b6000602082019050612f2d6000830184612f09565b92915050565b600060208284031215612f4957612f48612d09565b5b6000612f5784828501612d25565b91505092915050565b612f6981612efc565b8114612f7457600080fd5b50565b600081359050612f8681612f60565b92915050565b60008060408385031215612fa357612fa2612d09565b5b6000612fb185828601612f77565b9250506020612fc285828601612f77565b9150509250929050565b600061ffff82169050919050565b612fe381612fcc565b8114612fee57600080fd5b50565b60008135905061300081612fda565b92915050565b60008060006060848603121561301f5761301e612d09565b5b600061302d86828701612ff1565b935050602061303e86828701612ff1565b925050604061304f86828701612ff1565b9150509250925092565b60006020828403121561306f5761306e612d09565b5b600061307d84828501612ea7565b91505092915050565b600060408201905061309b6000830185612f09565b6130a86020830184612f09565b9392505050565b600080604083850312156130c6576130c5612d09565b5b60006130d485828601612d25565b92505060206130e585828601612d25565b9150509250929050565b6130f881612fcc565b82525050565b600060608201905061311360008301866130ef565b61312060208301856130ef565b61312d60408301846130ef565b949350505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061316b602083612c59565b915061317682613135565b602082019050919050565b6000602082019050818103600083015261319a8161315e565b9050919050565b7f4d6178207472616e73616374696f6e2063616e6e6f74206265206c6f7765722060008201527f7468616e20302e352070657263656e7421000000000000000000000000000000602082015250565b60006131fd603183612c59565b9150613208826131a1565b604082019050919050565b6000602082019050818103600083015261322c816131f0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156132b95780860481111561329557613294613233565b5b60018516156132a45780820291505b80810290506132b285613262565b9450613279565b94509492505050565b6000826132d2576001905061338e565b816132e0576000905061338e565b81600181146132f657600281146133005761332f565b600191505061338e565b60ff84111561331257613311613233565b5b8360020a91508482111561332957613328613233565b5b5061338e565b5060208310610133831016604e8410600b84101617156133645782820a90508381111561335f5761335e613233565b5b61338e565b613371848484600161326f565b9250905081840481111561338857613387613233565b5b81810290505b9392505050565b60006133a082612d3a565b91506133ab83612efc565b92506133d87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846132c2565b905092915050565b60006133eb82612d3a565b91506133f683612d3a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561342f5761342e613233565b5b828202905092915050565b600061344582612d3a565b915061345083612d3a565b92508282101561346357613462613233565b5b828203905092915050565b7f43616e6e6f742064697361626c65207061697220616464726573732100000000600082015250565b60006134a4601c83612c59565b91506134af8261346e565b602082019050919050565b600060208201905081810360008301526134d381613497565b9050919050565b7f4d61782077616c6c65742063616e6e6f74206265206c6f776572207468616e2060008201527f302e352070657263656e74210000000000000000000000000000000000000000602082015250565b6000613536602c83612c59565b9150613541826134da565b604082019050919050565b6000602082019050818103600083015261356581613529565b9050919050565b600061357782612efc565b915061358283612efc565b92508260ff0382111561359857613597613233565b5b828201905092915050565b7f54617865732063616e6e6f742065786365656420313021000000000000000000600082015250565b60006135d9601783612c59565b91506135e4826135a3565b602082019050919050565b60006020820190508181036000830152613608816135cc565b9050919050565b7f43616e6e6f7420736574206f7065726174696f6e732077616c6c657420746f2060008201527f7a65726f206f7220646561642061646472657373210000000000000000000000602082015250565b600061366b603583612c59565b91506136768261360f565b604082019050919050565b6000602082019050818103600083015261369a8161365e565b9050919050565b7f43616e6e6f7420736574206d61726b6574696e672077616c6c657420746f207a60008201527f65726f206f722064656164206164647265737321000000000000000000000000602082015250565b60006136fd603483612c59565b9150613708826136a1565b604082019050919050565b6000602082019050818103600083015261372c816136f0565b9050919050565b7f54726164696e6720697320616c726561647920656e61626c6564210000000000600082015250565b6000613769601b83612c59565b915061377482613733565b602082019050919050565b600060208201905081810360008301526137988161375c565b9050919050565b60006137aa82612fcc565b91506137b583612fcc565b92508261ffff038211156137cc576137cb613233565b5b828201905092915050565b7f4561636820746178206d7573742062652067726561746572207468616e207a6560008201527f726f2c20616e64206d75737420657175616c20746f2031303021000000000000602082015250565b6000613833603a83612c59565b915061383e826137d7565b604082019050919050565b6000602082019050818103600083015261386281613826565b9050919050565b600081905092915050565b50565b6000613884600083613869565b915061388f82613874565b600082019050919050565b60006138a582613877565b9150819050919050565b7f53776170207468726573686f6c642063616e6e6f74206265207a65726f2c206160008201527f6e642063616e6e6f742065786365656420302e352070657263656e7421000000602082015250565b600061390b603d83612c59565b9150613916826138af565b604082019050919050565b6000602082019050818103600083015261393a816138fe565b9050919050565b7f43616e6e6f74207769746864726177206e617469766520746f6b656e21000000600082015250565b6000613977601d83612c59565b915061398282613941565b602082019050919050565b600060208201905081810360008301526139a68161396a565b9050919050565b6000815190506139bc81612d44565b92915050565b6000602082840312156139d8576139d7612d09565b5b60006139e6848285016139ad565b91505092915050565b6000604082019050613a046000830185612c24565b613a116020830184612e13565b9392505050565b600081519050613a2781612e90565b92915050565b600060208284031215613a4357613a42612d09565b5b6000613a5184828501613a18565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613ab6602683612c59565b9150613ac182613a5a565b604082019050919050565b60006020820190508181036000830152613ae581613aa9565b9050919050565b7f4f776e65722f5370656e64657220616464726573732063616e6e6f742062652060008201527f302e000000000000000000000000000000000000000000000000000000000000602082015250565b6000613b48602283612c59565b9150613b5382613aec565b604082019050919050565b60006020820190508181036000830152613b7781613b3b565b9050919050565b7f54726164696e67206973206e6f7420656e61626c656421000000000000000000600082015250565b6000613bb4601783612c59565b9150613bbf82613b7e565b602082019050919050565b60006020820190508181036000830152613be381613ba7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613c2482612d3a565b9150613c2f83612d3a565b925082613c3f57613c3e613bea565b5b828204905092915050565b6000613c5582612d3a565b9150613c6083612d3a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613c9557613c94613233565b5b828201905092915050565b6000604082019050613cb56000830185612e13565b613cc26020830184612e13565b9392505050565b7f43616e6e6f7420657863656564206d6178207472616e73616374696f6e2e0000600082015250565b6000613cff601e83612c59565b9150613d0a82613cc9565b602082019050919050565b60006020820190508181036000830152613d2e81613cf2565b9050919050565b7f43616e6e6f7420657863656564206d61782077616c6c65742e00000000000000600082015250565b6000613d6b601983612c59565b9150613d7682613d35565b602082019050919050565b60006020820190508181036000830152613d9a81613d5e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613e0e81612d0e565b92915050565b600060208284031215613e2a57613e29612d09565b5b6000613e3884828501613dff565b91505092915050565b6000819050919050565b6000819050919050565b6000613e70613e6b613e6684613e41565b613e4b565b612d3a565b9050919050565b613e8081613e55565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613ebb81612c12565b82525050565b6000613ecd8383613eb2565b60208301905092915050565b6000602082019050919050565b6000613ef182613e86565b613efb8185613e91565b9350613f0683613ea2565b8060005b83811015613f37578151613f1e8882613ec1565b9750613f2983613ed9565b925050600181019050613f0a565b5085935050505092915050565b600060a082019050613f596000830188612e13565b613f666020830187613e77565b8181036040830152613f788186613ee6565b9050613f876060830185612c24565b613f946080830184612e13565b9695505050505050565b600060c082019050613fb36000830189612c24565b613fc06020830188612e13565b613fcd6040830187613e77565b613fda6060830186613e77565b613fe76080830185612c24565b613ff460a0830184612e13565b979650505050505050565b60008060006060848603121561401857614017612d09565b5b6000614026868287016139ad565b9350506020614037868287016139ad565b9250506040614048868287016139ad565b915050925092509256fea2646970667358221220754d5ee66d922d7fa6357dd7156781260f0940a82c63935412820e3c4b0ef02f64736f6c634300080c0033

Deployed Bytecode Sourcemap

12607:13827:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13644:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25912:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13703:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25398:187;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21304:259;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26108:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24636:433;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20017:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26216:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24044:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21066:229;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24261:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20270:237;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22617:411;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22205:403;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25769:137;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12201:148;;;;;;;;;;;;;:::i;:::-;;19633:208;;;;;;;;;;;;;:::i;:::-;;13758:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26307:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11994:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20516:541;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26008:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24437:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23342:164;;;;;;;;;;;;;:::i;:::-;;21702:359;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21572:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24143:109;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23583:172;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;25591;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22070:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23037:296;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12355:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19850:158;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23764:271;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;13840:76;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13644:52;13689:6;13644:52;:::o;25912:90::-;25951:13;25984:10;;;;;;;;;;;;;;;;;25977:17;;25912:90;:::o;13703:48::-;13749:1;13703:48;:::o;25398:187::-;25501:4;25518:37;25527:10;25539:7;25548:6;25518:8;:37::i;:::-;25573:4;25566:11;;25398:187;;;;:::o;21304:259::-;12131:7;:5;:7::i;:::-;12119:19;;:10;:19;;;12111:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;21433:7:::1;21415:14;:25;;21407:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;12846:2;21540;:15;;;;:::i;:::-;21523:14;:32;;;;:::i;:::-;21505:15;:50;;;;21304:259:::0;:::o;26108:102::-;26163:7;12846:2;13036;:15;;;;:::i;:::-;13023:10;:28;;;;:::i;:::-;26183:19;;26108:102;:::o;24636:433::-;24772:4;24789:18;24810:11;:19;24822:6;24810:19;;;;;;;;;;;;;;;:31;24830:10;24810:31;;;;;;;;;;;;;;;;24789:52;;24852:36;24862:6;24870:9;24881:6;24852:9;:36::i;:::-;24921:6;24907:10;:20;;24899:29;;;;;;24939:49;24948:6;24956:10;24981:6;24968:10;:19;;;;:::i;:::-;24939:8;:49::i;:::-;25021:9;25004:35;;25013:6;25004:35;;;25032:6;25004:35;;;;;;:::i;:::-;;;;;;;;25057:4;25050:11;;;24636:433;;;;;:::o;20017:244::-;12131:7;:5;:7::i;:::-;12119:19;;:10;:19;;;12111:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;20152:12:::1;;;;;;;;;;;20137:27;;:11;:27;;;;20129:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20246:7;20208:22;:35;20231:11;20208:35;;;;;;;;;;;;;;;;:45;;;;;;;;;;;;;;;;;;20017:244:::0;;:::o;26216:85::-;26259:5;12846:2;26277:16;;26216:85;:::o;24044:90::-;24090:4;24114:12;;;;;;;;;;;24107:19;;24044:90;:::o;21066:229::-;12131:7;:5;:7::i;:::-;12119:19;;:10;:19;;;12111:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;21180:7:::1;21167:9;:20;;21159:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;12846:2;21272;:15;;;;:::i;:::-;21260:9;:27;;;;:::i;:::-;21247:10;:40;;;;21066:229:::0;:::o;24261:138::-;24342:4;24366:17;:25;24384:6;24366:25;;;;;;;;;;;;;;;;;;;;;;;;;24359:32;;24261:138;;;:::o;20270:237::-;12131:7;:5;:7::i;:::-;12119:19;;:10;:19;;;12111:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;20413:2:::1;20402:7;20393:6;:16;;;;:::i;:::-;:22;;;;20385:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;20464:6;20454:7;;:16;;;;;;;;;;;;;;;;;;20492:7;20481:8;;:18;;;;;;;;;;;;;;;;;;20270:237:::0;;:::o;22617:411::-;12131:7;:5;:7::i;:::-;12119:19;;:10;:19;;;12111:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;22780:4:::1;22749:36;;:19;:36;;;;:86;;;;;22833:1;22802:33;;:19;:33;;;;22749:86;:141;;;;;22883:6;22852:38;;:19;:38;;;;22749:141;22727:244;;;;;;;;;;;;:::i;:::-;;;;;;;;;23001:19;22982:16;;:38;;;;;;;;;;;;;;;;;;22617:411:::0;:::o;22205:403::-;12131:7;:5;:7::i;:::-;12119:19;;:10;:19;;;12111:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;22365:4:::1;22335:35;;:18;:35;;;;:84;;;;;22417:1;22387:32;;:18;:32;;;;22335:84;:138;;;;;22466:6;22436:37;;:18;:37;;;;22335:138;22313:240;;;;;;;;;;;;:::i;:::-;;;;;;;;;22582:18;22564:15;;:36;;;;;;;;;;;;;;;;;;22205:403:::0;:::o;25769:137::-;25853:7;25880:9;:18;25890:7;25880:18;;;;;;;;;;;;;;;;25873:25;;25769:137;;;:::o;12201:148::-;12131:7;:5;:7::i;:::-;12119:19;;:10;:19;;;12111:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12283:1:::1;12266:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;12338:1;12301:40;;12322:6;::::0;::::1;;;;;;;;12301:40;;;;;;;;;;;;12201:148::o:0;19633:208::-;12131:7;:5;:7::i;:::-;12119:19;;:10;:19;;;12111:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;19700:15:::1;;;;;;;;;;;19699:16;19691:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;19785:15;19758:24;:42;;;;19829:4;19811:15;;:22;;;;;;;;;;;;;;;;;;19633:208::o:0;13758:75::-;;;;;;;;;;;;;:::o;26307:85::-;26350:7;26377;:5;:7::i;:::-;26370:14;;26307:85;:::o;11994:79::-;12032:7;12059:6;;;;;;;;;;;12052:13;;11994:79;:::o;20516:541::-;12131:7;:5;:7::i;:::-;12119:19;;:10;:19;;;12111:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;20709:1:::1;20694:12;:16;;;:49;;;;;20742:1;20727:12;:16;;;20694:49;:83;;;;;20776:1;20760:13;:17;;;20694:83;:150;;;;;20841:3;20824:13;20809:12;20794;:27;;;;:::i;:::-;:43;;;;:::i;:::-;:50;;;20694:150;20672:258;;;;;;;;;;;;:::i;:::-;;;;;;;;;20957:12;20941:13;;:28;;;;;;;;;;;;;;;;;;20996:12;20980:13;;:28;;;;;;;;;;;;;;;;;;21036:13;21019:14;;:30;;;;;;;;;;;;;;;;;;20516:541:::0;;;:::o;26008:94::-;26049:13;26082:12;;;;;;;;;;;;;;;;;26075:19;;26008:94;:::o;24437:193::-;24543:4;24560:40;24570:10;24582:9;24593:6;24560:9;:40::i;:::-;24618:4;24611:11;;24437:193;;;;:::o;23342:164::-;12131:7;:5;:7::i;:::-;12119:19;;:10;:19;;;12111:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;23404:12:::1;23421:10;:15;;23444:21;23421:50;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23403:68;;;23490:7;23482:16;;;::::0;::::1;;23392:114;23342:164::o:0;21702:359::-;12131:7;:5;:7::i;:::-;12119:19;;:10;:19;;;12111:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;21848:1:::1;21827:18;:22;:68;;;;;21888:7;21866:18;:29;;21827:68;21805:179;;;;;;;;;;;;:::i;:::-;;;;;;;;;12846:2;22038;:15;;;;:::i;:::-;22017:18;:36;;;;:::i;:::-;21995:19;:58;;;;21702:359:::0;:::o;21572:121::-;12131:7;:5;:7::i;:::-;12119:19;;:10;:19;;;12111:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;21674:11:::1;21659:12;;:26;;;;;;;;;;;;;;;;;;21572:121:::0;:::o;24143:109::-;24198:7;24225:19;;24218:26;;24143:109;:::o;23583:172::-;23642:12;23665:13;23706:12;:10;:12::i;:::-;23697:21;;23739:8;;;;;;;;;;;23729:18;;23583:172;;:::o;25591:::-;25700:7;25727:11;:19;25739:6;25727:19;;;;;;;;;;;;;;;:28;25747:7;25727:28;;;;;;;;;;;;;;;;25720:35;;25591:172;;;;:::o;22070:126::-;12131:7;:5;:7::i;:::-;12119:19;;:10;:19;;;12111:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;22159:29:::1;22175:12;22159:15;:29::i;:::-;22070:126:::0;:::o;23037:296::-;12131:7;:5;:7::i;:::-;12119:19;;:10;:19;;;12111:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;23173:4:::1;23148:30;;:13;:30;;;;23140:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;23223:12;23245:13;23223:36;;23270:5;:14;;;23285:7;:5;:7::i;:::-;23294:5;:15;;;23318:4;23294:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23270:55;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23129:204;23037:296:::0;:::o;12355:244::-;12131:7;:5;:7::i;:::-;12119:19;;:10;:19;;;12111:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12464:1:::1;12444:22;;:8;:22;;;;12436:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;12529:8;12520:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;12582:8;12553:38;;12574:6;::::0;::::1;;;;;;;;12553:38;;;;;;;;;;;;12355:244:::0;:::o;19850:158::-;12131:7;:5;:7::i;:::-;12119:19;;:10;:19;;;12111:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;19992:8:::1;19964:17;:25;19982:6;19964:25;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;19850:158:::0;;:::o;23764:271::-;23820:19;23850;23880:20;23934:13;;;;;;;;;;;23919:28;;23973:13;;;;;;;;;;;23958:28;;24013:14;;;;;;;;;;;23997:30;;23764:271;;;:::o;13840:76::-;;;;;;;;;;;;;:::o;25075:317::-;25222:1;25205:19;;:5;:19;;;;:44;;;;;25247:1;25228:21;;:7;:21;;;;25205:44;25196:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;25330:6;25300:11;:18;25312:5;25300:18;;;;;;;;;;;;;;;:27;25319:7;25300:27;;;;;;;;;;;;;;;:36;;;;25368:7;25352:32;;25361:5;25352:32;;;25377:6;25352:32;;;;;;:::i;:::-;;;;;;;;25075:317;;;:::o;15014:710::-;15128:15;15146:17;:23;15164:4;15146:23;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;15173:17;:21;15191:2;15173:21;;;;;;;;;;;;;;;;;;;;;;;;;15146:48;15128:66;;15205:10;15218:22;:28;15241:4;15218:28;;;;;;;;;;;;;;;;;;;;;;;;;15205:41;;15257:11;15271:22;:26;15294:2;15271:26;;;;;;;;;;;;;;;;;;;;;;;;;15257:40;;15312:10;15308:409;;;15324:36;15340:4;15346:2;15350:6;15358:1;15324:15;:36::i;:::-;15308:409;;;15399:15;;;;;;;;;;;15391:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;15461:5;15457:248;;;15468:28;15479:4;15485:2;15489:6;15468:10;:28::i;:::-;15457:248;;;15520:6;15516:189;;;15551:12;;;;;;;;;;;:24;;;;;15568:7;;;;;;;;;;;15567:8;15551:24;15547:52;;;15577:22;15593:5;15577:15;:22::i;:::-;15547:52;15618:29;15630:4;15636:2;15640:6;15618:11;:29::i;:::-;15516:189;;;15669:36;15685:4;15691:2;15695:6;15703:1;15669:15;:36::i;:::-;15516:189;15457:248;15308:409;15117:607;;;15014:710;;;:::o;15733:356::-;15777:5;15795:19;15835:24;;15817:15;:42;;;;:::i;:::-;15795:64;;15870:18;13347:9;15891:11;:32;;;;:::i;:::-;15870:53;;15951:1;15938:10;:14;15934:148;;;12802:2;15995:26;;:10;:26;;;;:::i;:::-;12754:2;15982:40;;;;;;:::i;:::-;15969:54;;;;;;15934:148;16063:7;;;;;;;;;;;16056:14;;;;15733:356;;:::o;17101:1566::-;14217:4;14207:7;;:14;;;;;;;;;;;;;;;;;;17192:28:::1;17223:9;:24;17241:4;17223:24;;;;;;;;;;;;;;;;17192:55;;17258:14;17275:19;;17258:36;;17332:6;17309:20;:29;17305:184;;;17359:12;:40;;;;;17398:1;17375:20;:24;17359:40;17355:123;;;17429:20;17420:29;;17355:123;;;17471:7;;;;17355:123;17305:184;17499:28;17555:3;17539:13;;;;;;;;;;;17530:22;;:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;17499:59;;17569:23;17604:20;17595:6;:29;;;;:::i;:::-;17569:55;;17635:23;17684:1;17661:20;:24;;;;:::i;:::-;17635:50;;17696:26;17748:15;17725:20;:38;;;;:::i;:::-;17696:67;;17801:18;17783:15;:36;;;;:::i;:::-;17774:45;;17830:14;17847:21;17830:38;;17879:25;17897:6;17879:17;:25::i;:::-;17915:14;17956:6;17932:21;:30;;;;:::i;:::-;17915:47;;17973:20;18028:6;18006:18;17997:6;:27;;;;:::i;:::-;17996:38;;;;:::i;:::-;17973:61;;18045:20;18077:12;18068:6;:21;;;;:::i;:::-;18045:44;;18100:21;18156:3;18139:14;;;;;;;;;;;18124:29;;:12;:29;;;;:::i;:::-;:35;;;;:::i;:::-;18100:59;;18170:20;18208:13;18193:12;:28;;;;:::i;:::-;18170:51;;18233:23;18269:16;;;;;;;;;;;18261:30;;18299:13;18319:5;18261:68;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18232:97;;;18361:5;18340:26;;18378:22;18413:15;;;;;;;;;;;18405:29;;18442:12;18461:5;18405:66;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18377:94;;;18502:5;18482:25;;18518:43;18532:15;18548:12;18518:13;:43::i;:::-;18577:82;18606:15;18636:12;18577:82;;;;;;;:::i;:::-;;;;;;;;17181:1486;;;;;;;;;;;;;;14232:1;14254:5:::0;14244:7;;:15;;;;;;;;;;;;;;;;;;17101:1566;:::o;16696:396::-;16843:19;16887:3;16874:10;16865:19;;:6;:19;;;;:::i;:::-;:25;;;;:::i;:::-;16843:47;;16920:6;16901:9;:15;16911:4;16901:15;;;;;;;;;;;;;;;;:25;;;;;;;:::i;:::-;;;;;;;;16965:11;16937:9;:24;16955:4;16937:24;;;;;;;;;;;;;;;;:39;;;;;;;:::i;:::-;;;;;;;;17014:11;17005:6;:20;;;;:::i;:::-;16987:9;:13;16997:2;16987:13;;;;;;;;;;;;;;;;:39;;;;;;;:::i;:::-;;;;;;;;17057:2;17042:42;;17051:4;17042:42;;;17071:11;17062:6;:20;;;;:::i;:::-;17042:42;;;;;;:::i;:::-;;;;;;;;16832:260;16696:396;;;;:::o;16098:334::-;16231:15;;16221:6;:25;;16213:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16326:10;;16316:6;16300:9;:13;16310:2;16300:13;;;;;;;;;;;;;;;;:22;;;;:::i;:::-;:36;;16292:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;16377:47;16393:4;16399:2;16403:6;16411:12;:10;:12::i;:::-;16377:15;:47::i;:::-;16098:334;;;:::o;16441:246::-;16575:15;;16565:6;:25;;16557:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16636:43;16652:4;16658:2;16662:6;16670:8;;;;;;;;;;;16636:15;:43::i;:::-;16441:246;;;:::o;18707:465::-;18790:21;18828:1;18814:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18790:40;;18859:4;18841;18846:1;18841:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;18885:7;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18875:4;18880:1;18875:7;;;;;;;;:::i;:::-;;;;;;;:24;;;;;;;;;;;18910:54;18927:4;18942:7;;;;;;;;;;;18952:11;18910:8;:54::i;:::-;18975:7;;;;;;;;;;;:58;;;19048:11;19074:1;19091:4;19118;19138:15;18975:189;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18779:393;18707:465;:::o;19178:378::-;19285:54;19302:4;19317:7;;;;;;;;;;;19327:11;19285:8;:54::i;:::-;19350:7;;;;;;;;;;;:23;;;19381:9;19414:4;19434:11;19460:1;19476;19500:6;19522:15;19350:198;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;19178:378;;:::o;7:126:1:-;44:7;84:42;77:5;73:54;62:65;;7:126;;;:::o;139:96::-;176:7;205:24;223:5;205:24;:::i;:::-;194:35;;139:96;;;:::o;241:118::-;328:24;346:5;328:24;:::i;:::-;323:3;316:37;241:118;;:::o;365:222::-;458:4;496:2;485:9;481:18;473:26;;509:71;577:1;566:9;562:17;553:6;509:71;:::i;:::-;365:222;;;;:::o;593:99::-;645:6;679:5;673:12;663:22;;593:99;;;:::o;698:169::-;782:11;816:6;811:3;804:19;856:4;851:3;847:14;832:29;;698:169;;;;:::o;873:307::-;941:1;951:113;965:6;962:1;959:13;951:113;;;1050:1;1045:3;1041:11;1035:18;1031:1;1026:3;1022:11;1015:39;987:2;984:1;980:10;975:15;;951:113;;;1082:6;1079:1;1076:13;1073:101;;;1162:1;1153:6;1148:3;1144:16;1137:27;1073:101;922:258;873:307;;;:::o;1186:102::-;1227:6;1278:2;1274:7;1269:2;1262:5;1258:14;1254:28;1244:38;;1186:102;;;:::o;1294:364::-;1382:3;1410:39;1443:5;1410:39;:::i;:::-;1465:71;1529:6;1524:3;1465:71;:::i;:::-;1458:78;;1545:52;1590:6;1585:3;1578:4;1571:5;1567:16;1545:52;:::i;:::-;1622:29;1644:6;1622:29;:::i;:::-;1617:3;1613:39;1606:46;;1386:272;1294:364;;;;:::o;1664:313::-;1777:4;1815:2;1804:9;1800:18;1792:26;;1864:9;1858:4;1854:20;1850:1;1839:9;1835:17;1828:47;1892:78;1965:4;1956:6;1892:78;:::i;:::-;1884:86;;1664:313;;;;:::o;2064:117::-;2173:1;2170;2163:12;2310:122;2383:24;2401:5;2383:24;:::i;:::-;2376:5;2373:35;2363:63;;2422:1;2419;2412:12;2363:63;2310:122;:::o;2438:139::-;2484:5;2522:6;2509:20;2500:29;;2538:33;2565:5;2538:33;:::i;:::-;2438:139;;;;:::o;2583:77::-;2620:7;2649:5;2638:16;;2583:77;;;:::o;2666:122::-;2739:24;2757:5;2739:24;:::i;:::-;2732:5;2729:35;2719:63;;2778:1;2775;2768:12;2719:63;2666:122;:::o;2794:139::-;2840:5;2878:6;2865:20;2856:29;;2894:33;2921:5;2894:33;:::i;:::-;2794:139;;;;:::o;2939:474::-;3007:6;3015;3064:2;3052:9;3043:7;3039:23;3035:32;3032:119;;;3070:79;;:::i;:::-;3032:119;3190:1;3215:53;3260:7;3251:6;3240:9;3236:22;3215:53;:::i;:::-;3205:63;;3161:117;3317:2;3343:53;3388:7;3379:6;3368:9;3364:22;3343:53;:::i;:::-;3333:63;;3288:118;2939:474;;;;;:::o;3419:90::-;3453:7;3496:5;3489:13;3482:21;3471:32;;3419:90;;;:::o;3515:109::-;3596:21;3611:5;3596:21;:::i;:::-;3591:3;3584:34;3515:109;;:::o;3630:210::-;3717:4;3755:2;3744:9;3740:18;3732:26;;3768:65;3830:1;3819:9;3815:17;3806:6;3768:65;:::i;:::-;3630:210;;;;:::o;3846:329::-;3905:6;3954:2;3942:9;3933:7;3929:23;3925:32;3922:119;;;3960:79;;:::i;:::-;3922:119;4080:1;4105:53;4150:7;4141:6;4130:9;4126:22;4105:53;:::i;:::-;4095:63;;4051:117;3846:329;;;;:::o;4181:118::-;4268:24;4286:5;4268:24;:::i;:::-;4263:3;4256:37;4181:118;;:::o;4305:222::-;4398:4;4436:2;4425:9;4421:18;4413:26;;4449:71;4517:1;4506:9;4502:17;4493:6;4449:71;:::i;:::-;4305:222;;;;:::o;4533:619::-;4610:6;4618;4626;4675:2;4663:9;4654:7;4650:23;4646:32;4643:119;;;4681:79;;:::i;:::-;4643:119;4801:1;4826:53;4871:7;4862:6;4851:9;4847:22;4826:53;:::i;:::-;4816:63;;4772:117;4928:2;4954:53;4999:7;4990:6;4979:9;4975:22;4954:53;:::i;:::-;4944:63;;4899:118;5056:2;5082:53;5127:7;5118:6;5107:9;5103:22;5082:53;:::i;:::-;5072:63;;5027:118;4533:619;;;;;:::o;5158:116::-;5228:21;5243:5;5228:21;:::i;:::-;5221:5;5218:32;5208:60;;5264:1;5261;5254:12;5208:60;5158:116;:::o;5280:133::-;5323:5;5361:6;5348:20;5339:29;;5377:30;5401:5;5377:30;:::i;:::-;5280:133;;;;:::o;5419:468::-;5484:6;5492;5541:2;5529:9;5520:7;5516:23;5512:32;5509:119;;;5547:79;;:::i;:::-;5509:119;5667:1;5692:53;5737:7;5728:6;5717:9;5713:22;5692:53;:::i;:::-;5682:63;;5638:117;5794:2;5820:50;5862:7;5853:6;5842:9;5838:22;5820:50;:::i;:::-;5810:60;;5765:115;5419:468;;;;;:::o;5893:86::-;5928:7;5968:4;5961:5;5957:16;5946:27;;5893:86;;;:::o;5985:112::-;6068:22;6084:5;6068:22;:::i;:::-;6063:3;6056:35;5985:112;;:::o;6103:214::-;6192:4;6230:2;6219:9;6215:18;6207:26;;6243:67;6307:1;6296:9;6292:17;6283:6;6243:67;:::i;:::-;6103:214;;;;:::o;6323:329::-;6382:6;6431:2;6419:9;6410:7;6406:23;6402:32;6399:119;;;6437:79;;:::i;:::-;6399:119;6557:1;6582:53;6627:7;6618:6;6607:9;6603:22;6582:53;:::i;:::-;6572:63;;6528:117;6323:329;;;;:::o;6658:118::-;6729:22;6745:5;6729:22;:::i;:::-;6722:5;6719:33;6709:61;;6766:1;6763;6756:12;6709:61;6658:118;:::o;6782:135::-;6826:5;6864:6;6851:20;6842:29;;6880:31;6905:5;6880:31;:::i;:::-;6782:135;;;;:::o;6923:466::-;6987:6;6995;7044:2;7032:9;7023:7;7019:23;7015:32;7012:119;;;7050:79;;:::i;:::-;7012:119;7170:1;7195:51;7238:7;7229:6;7218:9;7214:22;7195:51;:::i;:::-;7185:61;;7141:115;7295:2;7321:51;7364:7;7355:6;7344:9;7340:22;7321:51;:::i;:::-;7311:61;;7266:116;6923:466;;;;;:::o;7395:89::-;7431:7;7471:6;7464:5;7460:18;7449:29;;7395:89;;;:::o;7490:120::-;7562:23;7579:5;7562:23;:::i;:::-;7555:5;7552:34;7542:62;;7600:1;7597;7590:12;7542:62;7490:120;:::o;7616:137::-;7661:5;7699:6;7686:20;7677:29;;7715:32;7741:5;7715:32;:::i;:::-;7616:137;;;;:::o;7759:613::-;7833:6;7841;7849;7898:2;7886:9;7877:7;7873:23;7869:32;7866:119;;;7904:79;;:::i;:::-;7866:119;8024:1;8049:52;8093:7;8084:6;8073:9;8069:22;8049:52;:::i;:::-;8039:62;;7995:116;8150:2;8176:52;8220:7;8211:6;8200:9;8196:22;8176:52;:::i;:::-;8166:62;;8121:117;8277:2;8303:52;8347:7;8338:6;8327:9;8323:22;8303:52;:::i;:::-;8293:62;;8248:117;7759:613;;;;;:::o;8378:323::-;8434:6;8483:2;8471:9;8462:7;8458:23;8454:32;8451:119;;;8489:79;;:::i;:::-;8451:119;8609:1;8634:50;8676:7;8667:6;8656:9;8652:22;8634:50;:::i;:::-;8624:60;;8580:114;8378:323;;;;:::o;8707:316::-;8820:4;8858:2;8847:9;8843:18;8835:26;;8871:67;8935:1;8924:9;8920:17;8911:6;8871:67;:::i;:::-;8948:68;9012:2;9001:9;8997:18;8988:6;8948:68;:::i;:::-;8707:316;;;;;:::o;9029:474::-;9097:6;9105;9154:2;9142:9;9133:7;9129:23;9125:32;9122:119;;;9160:79;;:::i;:::-;9122:119;9280:1;9305:53;9350:7;9341:6;9330:9;9326:22;9305:53;:::i;:::-;9295:63;;9251:117;9407:2;9433:53;9478:7;9469:6;9458:9;9454:22;9433:53;:::i;:::-;9423:63;;9378:118;9029:474;;;;;:::o;9509:115::-;9594:23;9611:5;9594:23;:::i;:::-;9589:3;9582:36;9509:115;;:::o;9630:430::-;9773:4;9811:2;9800:9;9796:18;9788:26;;9824:69;9890:1;9879:9;9875:17;9866:6;9824:69;:::i;:::-;9903:70;9969:2;9958:9;9954:18;9945:6;9903:70;:::i;:::-;9983;10049:2;10038:9;10034:18;10025:6;9983:70;:::i;:::-;9630:430;;;;;;:::o;10066:182::-;10206:34;10202:1;10194:6;10190:14;10183:58;10066:182;:::o;10254:366::-;10396:3;10417:67;10481:2;10476:3;10417:67;:::i;:::-;10410:74;;10493:93;10582:3;10493:93;:::i;:::-;10611:2;10606:3;10602:12;10595:19;;10254:366;;;:::o;10626:419::-;10792:4;10830:2;10819:9;10815:18;10807:26;;10879:9;10873:4;10869:20;10865:1;10854:9;10850:17;10843:47;10907:131;11033:4;10907:131;:::i;:::-;10899:139;;10626:419;;;:::o;11051:236::-;11191:34;11187:1;11179:6;11175:14;11168:58;11260:19;11255:2;11247:6;11243:15;11236:44;11051:236;:::o;11293:366::-;11435:3;11456:67;11520:2;11515:3;11456:67;:::i;:::-;11449:74;;11532:93;11621:3;11532:93;:::i;:::-;11650:2;11645:3;11641:12;11634:19;;11293:366;;;:::o;11665:419::-;11831:4;11869:2;11858:9;11854:18;11846:26;;11918:9;11912:4;11908:20;11904:1;11893:9;11889:17;11882:47;11946:131;12072:4;11946:131;:::i;:::-;11938:139;;11665:419;;;:::o;12090:180::-;12138:77;12135:1;12128:88;12235:4;12232:1;12225:15;12259:4;12256:1;12249:15;12276:102;12318:8;12365:5;12362:1;12358:13;12337:34;;12276:102;;;:::o;12384:848::-;12445:5;12452:4;12476:6;12467:15;;12500:5;12491:14;;12514:712;12535:1;12525:8;12522:15;12514:712;;;12630:4;12625:3;12621:14;12615:4;12612:24;12609:50;;;12639:18;;:::i;:::-;12609:50;12689:1;12679:8;12675:16;12672:451;;;13104:4;13097:5;13093:16;13084:25;;12672:451;13154:4;13148;13144:15;13136:23;;13184:32;13207:8;13184:32;:::i;:::-;13172:44;;12514:712;;;12384:848;;;;;;;:::o;13238:1073::-;13292:5;13483:8;13473:40;;13504:1;13495:10;;13506:5;;13473:40;13532:4;13522:36;;13549:1;13540:10;;13551:5;;13522:36;13618:4;13666:1;13661:27;;;;13702:1;13697:191;;;;13611:277;;13661:27;13679:1;13670:10;;13681:5;;;13697:191;13742:3;13732:8;13729:17;13726:43;;;13749:18;;:::i;:::-;13726:43;13798:8;13795:1;13791:16;13782:25;;13833:3;13826:5;13823:14;13820:40;;;13840:18;;:::i;:::-;13820:40;13873:5;;;13611:277;;13997:2;13987:8;13984:16;13978:3;13972:4;13969:13;13965:36;13947:2;13937:8;13934:16;13929:2;13923:4;13920:12;13916:35;13900:111;13897:246;;;14053:8;14047:4;14043:19;14034:28;;14088:3;14081:5;14078:14;14075:40;;;14095:18;;:::i;:::-;14075:40;14128:5;;13897:246;14168:42;14206:3;14196:8;14190:4;14187:1;14168:42;:::i;:::-;14153:57;;;;14242:4;14237:3;14233:14;14226:5;14223:25;14220:51;;;14251:18;;:::i;:::-;14220:51;14300:4;14293:5;14289:16;14280:25;;13238:1073;;;;;;:::o;14317:281::-;14375:5;14399:23;14417:4;14399:23;:::i;:::-;14391:31;;14443:25;14459:8;14443:25;:::i;:::-;14431:37;;14487:104;14524:66;14514:8;14508:4;14487:104;:::i;:::-;14478:113;;14317:281;;;;:::o;14604:348::-;14644:7;14667:20;14685:1;14667:20;:::i;:::-;14662:25;;14701:20;14719:1;14701:20;:::i;:::-;14696:25;;14889:1;14821:66;14817:74;14814:1;14811:81;14806:1;14799:9;14792:17;14788:105;14785:131;;;14896:18;;:::i;:::-;14785:131;14944:1;14941;14937:9;14926:20;;14604:348;;;;:::o;14958:191::-;14998:4;15018:20;15036:1;15018:20;:::i;:::-;15013:25;;15052:20;15070:1;15052:20;:::i;:::-;15047:25;;15091:1;15088;15085:8;15082:34;;;15096:18;;:::i;:::-;15082:34;15141:1;15138;15134:9;15126:17;;14958:191;;;;:::o;15155:178::-;15295:30;15291:1;15283:6;15279:14;15272:54;15155:178;:::o;15339:366::-;15481:3;15502:67;15566:2;15561:3;15502:67;:::i;:::-;15495:74;;15578:93;15667:3;15578:93;:::i;:::-;15696:2;15691:3;15687:12;15680:19;;15339:366;;;:::o;15711:419::-;15877:4;15915:2;15904:9;15900:18;15892:26;;15964:9;15958:4;15954:20;15950:1;15939:9;15935:17;15928:47;15992:131;16118:4;15992:131;:::i;:::-;15984:139;;15711:419;;;:::o;16136:231::-;16276:34;16272:1;16264:6;16260:14;16253:58;16345:14;16340:2;16332:6;16328:15;16321:39;16136:231;:::o;16373:366::-;16515:3;16536:67;16600:2;16595:3;16536:67;:::i;:::-;16529:74;;16612:93;16701:3;16612:93;:::i;:::-;16730:2;16725:3;16721:12;16714:19;;16373:366;;;:::o;16745:419::-;16911:4;16949:2;16938:9;16934:18;16926:26;;16998:9;16992:4;16988:20;16984:1;16973:9;16969:17;16962:47;17026:131;17152:4;17026:131;:::i;:::-;17018:139;;16745:419;;;:::o;17170:237::-;17208:3;17227:18;17243:1;17227:18;:::i;:::-;17222:23;;17259:18;17275:1;17259:18;:::i;:::-;17254:23;;17349:1;17343:4;17339:12;17336:1;17333:19;17330:45;;;17355:18;;:::i;:::-;17330:45;17399:1;17396;17392:9;17385:16;;17170:237;;;;:::o;17413:173::-;17553:25;17549:1;17541:6;17537:14;17530:49;17413:173;:::o;17592:366::-;17734:3;17755:67;17819:2;17814:3;17755:67;:::i;:::-;17748:74;;17831:93;17920:3;17831:93;:::i;:::-;17949:2;17944:3;17940:12;17933:19;;17592:366;;;:::o;17964:419::-;18130:4;18168:2;18157:9;18153:18;18145:26;;18217:9;18211:4;18207:20;18203:1;18192:9;18188:17;18181:47;18245:131;18371:4;18245:131;:::i;:::-;18237:139;;17964:419;;;:::o;18389:240::-;18529:34;18525:1;18517:6;18513:14;18506:58;18598:23;18593:2;18585:6;18581:15;18574:48;18389:240;:::o;18635:366::-;18777:3;18798:67;18862:2;18857:3;18798:67;:::i;:::-;18791:74;;18874:93;18963:3;18874:93;:::i;:::-;18992:2;18987:3;18983:12;18976:19;;18635:366;;;:::o;19007:419::-;19173:4;19211:2;19200:9;19196:18;19188:26;;19260:9;19254:4;19250:20;19246:1;19235:9;19231:17;19224:47;19288:131;19414:4;19288:131;:::i;:::-;19280:139;;19007:419;;;:::o;19432:239::-;19572:34;19568:1;19560:6;19556:14;19549:58;19641:22;19636:2;19628:6;19624:15;19617:47;19432:239;:::o;19677:366::-;19819:3;19840:67;19904:2;19899:3;19840:67;:::i;:::-;19833:74;;19916:93;20005:3;19916:93;:::i;:::-;20034:2;20029:3;20025:12;20018:19;;19677:366;;;:::o;20049:419::-;20215:4;20253:2;20242:9;20238:18;20230:26;;20302:9;20296:4;20292:20;20288:1;20277:9;20273:17;20266:47;20330:131;20456:4;20330:131;:::i;:::-;20322:139;;20049:419;;;:::o;20474:177::-;20614:29;20610:1;20602:6;20598:14;20591:53;20474:177;:::o;20657:366::-;20799:3;20820:67;20884:2;20879:3;20820:67;:::i;:::-;20813:74;;20896:93;20985:3;20896:93;:::i;:::-;21014:2;21009:3;21005:12;20998:19;;20657:366;;;:::o;21029:419::-;21195:4;21233:2;21222:9;21218:18;21210:26;;21282:9;21276:4;21272:20;21268:1;21257:9;21253:17;21246:47;21310:131;21436:4;21310:131;:::i;:::-;21302:139;;21029:419;;;:::o;21454:242::-;21493:3;21512:19;21529:1;21512:19;:::i;:::-;21507:24;;21545:19;21562:1;21545:19;:::i;:::-;21540:24;;21638:1;21630:6;21626:14;21623:1;21620:21;21617:47;;;21644:18;;:::i;:::-;21617:47;21688:1;21685;21681:9;21674:16;;21454:242;;;;:::o;21702:245::-;21842:34;21838:1;21830:6;21826:14;21819:58;21911:28;21906:2;21898:6;21894:15;21887:53;21702:245;:::o;21953:366::-;22095:3;22116:67;22180:2;22175:3;22116:67;:::i;:::-;22109:74;;22192:93;22281:3;22192:93;:::i;:::-;22310:2;22305:3;22301:12;22294:19;;21953:366;;;:::o;22325:419::-;22491:4;22529:2;22518:9;22514:18;22506:26;;22578:9;22572:4;22568:20;22564:1;22553:9;22549:17;22542:47;22606:131;22732:4;22606:131;:::i;:::-;22598:139;;22325:419;;;:::o;22750:147::-;22851:11;22888:3;22873:18;;22750:147;;;;:::o;22903:114::-;;:::o;23023:398::-;23182:3;23203:83;23284:1;23279:3;23203:83;:::i;:::-;23196:90;;23295:93;23384:3;23295:93;:::i;:::-;23413:1;23408:3;23404:11;23397:18;;23023:398;;;:::o;23427:379::-;23611:3;23633:147;23776:3;23633:147;:::i;:::-;23626:154;;23797:3;23790:10;;23427:379;;;:::o;23812:248::-;23952:34;23948:1;23940:6;23936:14;23929:58;24021:31;24016:2;24008:6;24004:15;23997:56;23812:248;:::o;24066:366::-;24208:3;24229:67;24293:2;24288:3;24229:67;:::i;:::-;24222:74;;24305:93;24394:3;24305:93;:::i;:::-;24423:2;24418:3;24414:12;24407:19;;24066:366;;;:::o;24438:419::-;24604:4;24642:2;24631:9;24627:18;24619:26;;24691:9;24685:4;24681:20;24677:1;24666:9;24662:17;24655:47;24719:131;24845:4;24719:131;:::i;:::-;24711:139;;24438:419;;;:::o;24863:179::-;25003:31;24999:1;24991:6;24987:14;24980:55;24863:179;:::o;25048:366::-;25190:3;25211:67;25275:2;25270:3;25211:67;:::i;:::-;25204:74;;25287:93;25376:3;25287:93;:::i;:::-;25405:2;25400:3;25396:12;25389:19;;25048:366;;;:::o;25420:419::-;25586:4;25624:2;25613:9;25609:18;25601:26;;25673:9;25667:4;25663:20;25659:1;25648:9;25644:17;25637:47;25701:131;25827:4;25701:131;:::i;:::-;25693:139;;25420:419;;;:::o;25845:143::-;25902:5;25933:6;25927:13;25918:22;;25949:33;25976:5;25949:33;:::i;:::-;25845:143;;;;:::o;25994:351::-;26064:6;26113:2;26101:9;26092:7;26088:23;26084:32;26081:119;;;26119:79;;:::i;:::-;26081:119;26239:1;26264:64;26320:7;26311:6;26300:9;26296:22;26264:64;:::i;:::-;26254:74;;26210:128;25994:351;;;;:::o;26351:332::-;26472:4;26510:2;26499:9;26495:18;26487:26;;26523:71;26591:1;26580:9;26576:17;26567:6;26523:71;:::i;:::-;26604:72;26672:2;26661:9;26657:18;26648:6;26604:72;:::i;:::-;26351:332;;;;;:::o;26689:137::-;26743:5;26774:6;26768:13;26759:22;;26790:30;26814:5;26790:30;:::i;:::-;26689:137;;;;:::o;26832:345::-;26899:6;26948:2;26936:9;26927:7;26923:23;26919:32;26916:119;;;26954:79;;:::i;:::-;26916:119;27074:1;27099:61;27152:7;27143:6;27132:9;27128:22;27099:61;:::i;:::-;27089:71;;27045:125;26832:345;;;;:::o;27183:225::-;27323:34;27319:1;27311:6;27307:14;27300:58;27392:8;27387:2;27379:6;27375:15;27368:33;27183:225;:::o;27414:366::-;27556:3;27577:67;27641:2;27636:3;27577:67;:::i;:::-;27570:74;;27653:93;27742:3;27653:93;:::i;:::-;27771:2;27766:3;27762:12;27755:19;;27414:366;;;:::o;27786:419::-;27952:4;27990:2;27979:9;27975:18;27967:26;;28039:9;28033:4;28029:20;28025:1;28014:9;28010:17;28003:47;28067:131;28193:4;28067:131;:::i;:::-;28059:139;;27786:419;;;:::o;28211:221::-;28351:34;28347:1;28339:6;28335:14;28328:58;28420:4;28415:2;28407:6;28403:15;28396:29;28211:221;:::o;28438:366::-;28580:3;28601:67;28665:2;28660:3;28601:67;:::i;:::-;28594:74;;28677:93;28766:3;28677:93;:::i;:::-;28795:2;28790:3;28786:12;28779:19;;28438:366;;;:::o;28810:419::-;28976:4;29014:2;29003:9;28999:18;28991:26;;29063:9;29057:4;29053:20;29049:1;29038:9;29034:17;29027:47;29091:131;29217:4;29091:131;:::i;:::-;29083:139;;28810:419;;;:::o;29235:173::-;29375:25;29371:1;29363:6;29359:14;29352:49;29235:173;:::o;29414:366::-;29556:3;29577:67;29641:2;29636:3;29577:67;:::i;:::-;29570:74;;29653:93;29742:3;29653:93;:::i;:::-;29771:2;29766:3;29762:12;29755:19;;29414:366;;;:::o;29786:419::-;29952:4;29990:2;29979:9;29975:18;29967:26;;30039:9;30033:4;30029:20;30025:1;30014:9;30010:17;30003:47;30067:131;30193:4;30067:131;:::i;:::-;30059:139;;29786:419;;;:::o;30211:180::-;30259:77;30256:1;30249:88;30356:4;30353:1;30346:15;30380:4;30377:1;30370:15;30397:185;30437:1;30454:20;30472:1;30454:20;:::i;:::-;30449:25;;30488:20;30506:1;30488:20;:::i;:::-;30483:25;;30527:1;30517:35;;30532:18;;:::i;:::-;30517:35;30574:1;30571;30567:9;30562:14;;30397:185;;;;:::o;30588:305::-;30628:3;30647:20;30665:1;30647:20;:::i;:::-;30642:25;;30681:20;30699:1;30681:20;:::i;:::-;30676:25;;30835:1;30767:66;30763:74;30760:1;30757:81;30754:107;;;30841:18;;:::i;:::-;30754:107;30885:1;30882;30878:9;30871:16;;30588:305;;;;:::o;30899:332::-;31020:4;31058:2;31047:9;31043:18;31035:26;;31071:71;31139:1;31128:9;31124:17;31115:6;31071:71;:::i;:::-;31152:72;31220:2;31209:9;31205:18;31196:6;31152:72;:::i;:::-;30899:332;;;;;:::o;31237:180::-;31377:32;31373:1;31365:6;31361:14;31354:56;31237:180;:::o;31423:366::-;31565:3;31586:67;31650:2;31645:3;31586:67;:::i;:::-;31579:74;;31662:93;31751:3;31662:93;:::i;:::-;31780:2;31775:3;31771:12;31764:19;;31423:366;;;:::o;31795:419::-;31961:4;31999:2;31988:9;31984:18;31976:26;;32048:9;32042:4;32038:20;32034:1;32023:9;32019:17;32012:47;32076:131;32202:4;32076:131;:::i;:::-;32068:139;;31795:419;;;:::o;32220:175::-;32360:27;32356:1;32348:6;32344:14;32337:51;32220:175;:::o;32401:366::-;32543:3;32564:67;32628:2;32623:3;32564:67;:::i;:::-;32557:74;;32640:93;32729:3;32640:93;:::i;:::-;32758:2;32753:3;32749:12;32742:19;;32401:366;;;:::o;32773:419::-;32939:4;32977:2;32966:9;32962:18;32954:26;;33026:9;33020:4;33016:20;33012:1;33001:9;32997:17;32990:47;33054:131;33180:4;33054:131;:::i;:::-;33046:139;;32773:419;;;:::o;33198:180::-;33246:77;33243:1;33236:88;33343:4;33340:1;33333:15;33367:4;33364:1;33357:15;33384:180;33432:77;33429:1;33422:88;33529:4;33526:1;33519:15;33553:4;33550:1;33543:15;33570:143;33627:5;33658:6;33652:13;33643:22;;33674:33;33701:5;33674:33;:::i;:::-;33570:143;;;;:::o;33719:351::-;33789:6;33838:2;33826:9;33817:7;33813:23;33809:32;33806:119;;;33844:79;;:::i;:::-;33806:119;33964:1;33989:64;34045:7;34036:6;34025:9;34021:22;33989:64;:::i;:::-;33979:74;;33935:128;33719:351;;;;:::o;34076:85::-;34121:7;34150:5;34139:16;;34076:85;;;:::o;34167:60::-;34195:3;34216:5;34209:12;;34167:60;;;:::o;34233:158::-;34291:9;34324:61;34342:42;34351:32;34377:5;34351:32;:::i;:::-;34342:42;:::i;:::-;34324:61;:::i;:::-;34311:74;;34233:158;;;:::o;34397:147::-;34492:45;34531:5;34492:45;:::i;:::-;34487:3;34480:58;34397:147;;:::o;34550:114::-;34617:6;34651:5;34645:12;34635:22;;34550:114;;;:::o;34670:184::-;34769:11;34803:6;34798:3;34791:19;34843:4;34838:3;34834:14;34819:29;;34670:184;;;;:::o;34860:132::-;34927:4;34950:3;34942:11;;34980:4;34975:3;34971:14;34963:22;;34860:132;;;:::o;34998:108::-;35075:24;35093:5;35075:24;:::i;:::-;35070:3;35063:37;34998:108;;:::o;35112:179::-;35181:10;35202:46;35244:3;35236:6;35202:46;:::i;:::-;35280:4;35275:3;35271:14;35257:28;;35112:179;;;;:::o;35297:113::-;35367:4;35399;35394:3;35390:14;35382:22;;35297:113;;;:::o;35446:732::-;35565:3;35594:54;35642:5;35594:54;:::i;:::-;35664:86;35743:6;35738:3;35664:86;:::i;:::-;35657:93;;35774:56;35824:5;35774:56;:::i;:::-;35853:7;35884:1;35869:284;35894:6;35891:1;35888:13;35869:284;;;35970:6;35964:13;35997:63;36056:3;36041:13;35997:63;:::i;:::-;35990:70;;36083:60;36136:6;36083:60;:::i;:::-;36073:70;;35929:224;35916:1;35913;35909:9;35904:14;;35869:284;;;35873:14;36169:3;36162:10;;35570:608;;;35446:732;;;;:::o;36184:831::-;36447:4;36485:3;36474:9;36470:19;36462:27;;36499:71;36567:1;36556:9;36552:17;36543:6;36499:71;:::i;:::-;36580:80;36656:2;36645:9;36641:18;36632:6;36580:80;:::i;:::-;36707:9;36701:4;36697:20;36692:2;36681:9;36677:18;36670:48;36735:108;36838:4;36829:6;36735:108;:::i;:::-;36727:116;;36853:72;36921:2;36910:9;36906:18;36897:6;36853:72;:::i;:::-;36935:73;37003:3;36992:9;36988:19;36979:6;36935:73;:::i;:::-;36184:831;;;;;;;;:::o;37021:807::-;37270:4;37308:3;37297:9;37293:19;37285:27;;37322:71;37390:1;37379:9;37375:17;37366:6;37322:71;:::i;:::-;37403:72;37471:2;37460:9;37456:18;37447:6;37403:72;:::i;:::-;37485:80;37561:2;37550:9;37546:18;37537:6;37485:80;:::i;:::-;37575;37651:2;37640:9;37636:18;37627:6;37575:80;:::i;:::-;37665:73;37733:3;37722:9;37718:19;37709:6;37665:73;:::i;:::-;37748;37816:3;37805:9;37801:19;37792:6;37748:73;:::i;:::-;37021:807;;;;;;;;;:::o;37834:663::-;37922:6;37930;37938;37987:2;37975:9;37966:7;37962:23;37958:32;37955:119;;;37993:79;;:::i;:::-;37955:119;38113:1;38138:64;38194:7;38185:6;38174:9;38170:22;38138:64;:::i;:::-;38128:74;;38084:128;38251:2;38277:64;38333:7;38324:6;38313:9;38309:22;38277:64;:::i;:::-;38267:74;;38222:129;38390:2;38416:64;38472:7;38463:6;38452:9;38448:22;38416:64;:::i;:::-;38406:74;;38361:129;37834:663;;;;;:::o

Swarm Source

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