ETH Price: $3,213.33 (-6.71%)
Gas: 7 Gwei

Token

AiWallet Token (AiWallet)
 

Overview

Max Total Supply

1,000,000,000 AiWallet

Holders

80

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

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:
AiWallet

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

pragma solidity 0.8.17;

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

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

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

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

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

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

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

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

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

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

    function initialize(address, address) external;
}

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

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

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

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

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
   
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

        _transfer(sender, recipient, amount);

        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    IUniswapV2Router02 public uniswapV2Router;
    address public  uniswapV2Pair;

    mapping (address => bool) private _isExcludedFromFees;

    uint256 public  feeOnBuy;
    uint256 public  feeOnSell;

    uint256 private maxFee;

    uint256 public  walletToWalletTransferFee;

    address public  marketingWallet;

    uint256 public  swapTokensAtAmount;
    bool    private swapping;

    bool    public swapEnabled;

    event ExcludeFromFees(address indexed account, bool isExcluded);
    event MarketingWalletChanged(address marketingWallet);
    event DevelopmentWalletChanged(address developmentWallet);
    event UpdateBuyFees(uint256 feeOnBuy);
    event UpdateSellFees(uint256 feeOnSell);
    event UpdateWalletToWalletTransferFee(uint256 walletToWalletTransferFee);
    event SwapAndSendFee(uint256 tokensSwapped, uint256 bnbSend);
    event SwapTokensAtAmountUpdated(uint256 swapTokensAtAmount);

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

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

        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair   = _uniswapV2Pair;

        _approve(address(this), address(uniswapV2Router), type(uint256).max);
        
        feeOnBuy  = 2;
        feeOnSell = 3;

        maxFee = 10;

        walletToWalletTransferFee = 0;

        marketingWallet = 0xd6DF4789a95fC2080d8f8E989D0602374E1Eaa89;

        _isExcludedFromFees[owner()] = true;
        _isExcludedFromFees[address(0xdead)] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[marketingWallet] = true;

        _mint(owner(), _totalSupply);
        swapTokensAtAmount = totalSupply() / 5_000;

        swapEnabled = true;
    }

    receive() external payable {

  	}

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

    /////////////////////////////////////// FEE SYSTEM

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

        emit ExcludeFromFees(account, excluded);
    }

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

    function updateBuyFees(uint256 _feeOnBuy) external onlyOwner {
        feeOnBuy = _feeOnBuy;

        require(_feeOnBuy <= maxFee, "Total Fees cannot exceed the maximum");

        emit UpdateBuyFees(feeOnBuy);
    }

    function updateSellFees(uint256 _feeOnSell) external onlyOwner {
        feeOnSell = _feeOnSell;

        require(_feeOnSell <= maxFee, "Total Fees cannot exceed the maximum");

        emit UpdateSellFees(feeOnSell);
    }

    function updateWalletToWalletTransferFee(uint256 _walletToWalletTransferFee) external onlyOwner {
        require(_walletToWalletTransferFee <= maxFee, "Wallet to Wallet Transfer Fee cannot exceed the maximum");
        walletToWalletTransferFee = _walletToWalletTransferFee;

        emit UpdateWalletToWalletTransferFee(walletToWalletTransferFee);
    }

    function changeMarketingWallet(address _marketingWallet) external onlyOwner{
        require(_marketingWallet != marketingWallet,"Marketing wallet is already that address");
        require(_marketingWallet != address(0),"Marketing wallet cannot be the zero address");
        marketingWallet = _marketingWallet;

        emit MarketingWalletChanged(marketingWallet);
    }


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

		uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

            swapAndSendFee(swapTokensAtAmount);

            swapping = false;
        }

        uint256 _totalFees;
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to] || swapping) {
            _totalFees = 0;
        } else if (from == uniswapV2Pair) {
            _totalFees = feeOnBuy;
        } else if (to == uniswapV2Pair) {
            _totalFees = feeOnSell;
        } else {
            _totalFees = walletToWalletTransferFee;
        }

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

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

    /////////////////////////////////////// SWAP SYSTEM

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

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

        emit SwapTokensAtAmountUpdated(swapTokensAtAmount);
    }

    function swapAndSendFee(uint256 tokenAmount) private {
        uint256 initialBalance = address(this).balance;

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

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp);

        uint256 newBalance = address(this).balance - initialBalance;
        payable(marketingWallet).sendValue(newBalance);
        emit SwapAndSendFee(tokenAmount, newBalance);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"uint256","name":"_totalSupply","type":"uint256"}],"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":false,"internalType":"address","name":"developmentWallet","type":"address"}],"name":"DevelopmentWalletChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"marketingWallet","type":"address"}],"name":"MarketingWalletChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bnbSend","type":"uint256"}],"name":"SwapAndSendFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"SwapTokensAtAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"feeOnBuy","type":"uint256"}],"name":"UpdateBuyFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"feeOnSell","type":"uint256"}],"name":"UpdateSellFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"walletToWalletTransferFee","type":"uint256"}],"name":"UpdateWalletToWalletTransferFee","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"changeMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"claimStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_feeOnBuy","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_feeOnSell","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_walletToWalletTransferFee","type":"uint256"}],"name":"updateWalletToWalletTransferFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"walletToWalletTransferFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040523480156200001157600080fd5b5060405162004dfe38038062004dfe833981810160405281019062000037919062000a89565b6040518060400160405280600e81526020017f416957616c6c657420546f6b656e0000000000000000000000000000000000008152506040518060400160405280600881526020017f416957616c6c65740000000000000000000000000000000000000000000000008152508160039081620000b4919062000d2b565b508060049081620000c6919062000d2b565b5050506000620000db620006ba60201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600060384603620001a2577310ed43c718714eb63d5aa57b78b54704e256024e905062000202565b60614603620001c85773d99d1c33f9fc3444f8101754abc46c52416550d1905062000201565b6001461480620001d85750600546145b15620001fb57737a250d5630b4cf539739df2c5dacb4c659f2488d905062000200565b600080fd5b5b5b600081905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000255573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027b919062000e77565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000309919062000e77565b6040518363ffffffff1660e01b81526004016200032892919062000eba565b6020604051808303816000875af115801562000348573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200036e919062000e77565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200044730600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff620006c260201b60201c565b60026009819055506003600a81905550600a600b819055506000600c8190555073d6df4789a95fc2080d8f8e989d0602374e1eaa89600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000620004d26200089360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016008600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000670620006636200089360201b60201c565b85620008bd60201b60201c565b6113886200068362000a3560201b60201c565b6200068f919062000f45565b600e819055506001600f60016101000a81548160ff0219169083151502179055505050505062001199565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000734576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200072b9062001004565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620007a6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200079d906200109c565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051620008869190620010cf565b60405180910390a3505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200092f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000926906200113c565b60405180910390fd5b620009436000838362000a3f60201b60201c565b80600260008282546200095791906200115e565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620009ae91906200115e565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000a159190620010cf565b60405180910390a362000a316000838362000a4460201b60201c565b5050565b6000600254905090565b505050565b505050565b600080fd5b6000819050919050565b62000a638162000a4e565b811462000a6f57600080fd5b50565b60008151905062000a838162000a58565b92915050565b60006020828403121562000aa25762000aa162000a49565b5b600062000ab28482850162000a72565b91505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000b3d57607f821691505b60208210810362000b535762000b5262000af5565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000bbd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000b7e565b62000bc9868362000b7e565b95508019841693508086168417925050509392505050565b6000819050919050565b600062000c0c62000c0662000c008462000a4e565b62000be1565b62000a4e565b9050919050565b6000819050919050565b62000c288362000beb565b62000c4062000c378262000c13565b84845462000b8b565b825550505050565b600090565b62000c5762000c48565b62000c6481848462000c1d565b505050565b5b8181101562000c8c5762000c8060008262000c4d565b60018101905062000c6a565b5050565b601f82111562000cdb5762000ca58162000b59565b62000cb08462000b6e565b8101602085101562000cc0578190505b62000cd862000ccf8562000b6e565b83018262000c69565b50505b505050565b600082821c905092915050565b600062000d006000198460080262000ce0565b1980831691505092915050565b600062000d1b838362000ced565b9150826002028217905092915050565b62000d368262000abb565b67ffffffffffffffff81111562000d525762000d5162000ac6565b5b62000d5e825462000b24565b62000d6b82828562000c90565b600060209050601f83116001811462000da3576000841562000d8e578287015190505b62000d9a858262000d0d565b86555062000e0a565b601f19841662000db38662000b59565b60005b8281101562000ddd5784890151825560018201915060208501945060208101905062000db6565b8683101562000dfd578489015162000df9601f89168262000ced565b8355505b6001600288020188555050505b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000e3f8262000e12565b9050919050565b62000e518162000e32565b811462000e5d57600080fd5b50565b60008151905062000e718162000e46565b92915050565b60006020828403121562000e905762000e8f62000a49565b5b600062000ea08482850162000e60565b91505092915050565b62000eb48162000e32565b82525050565b600060408201905062000ed1600083018562000ea9565b62000ee0602083018462000ea9565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000f528262000a4e565b915062000f5f8362000a4e565b92508262000f725762000f7162000ee7565b5b828204905092915050565b600082825260208201905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600062000fec60248362000f7d565b915062000ff98262000f8e565b604082019050919050565b600060208201905081810360008301526200101f8162000fdd565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006200108460228362000f7d565b9150620010918262001026565b604082019050919050565b60006020820190508181036000830152620010b78162001075565b9050919050565b620010c98162000a4e565b82525050565b6000602082019050620010e66000830184620010be565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001124601f8362000f7d565b91506200113182620010ec565b602082019050919050565b60006020820190508181036000830152620011578162001115565b9050919050565b60006200116b8262000a4e565b9150620011788362000a4e565b925082820190508082111562001193576200119262000f16565b5b92915050565b613c5580620011a96000396000f3fe6080604052600436106101dc5760003560e01c806371fc468811610102578063bb8c3ee011610095578063e2f4560511610064578063e2f45605146106e1578063eba4c3331461070c578063f2fde38b14610735578063f9d0831a1461075e576101e3565b8063bb8c3ee014610627578063c024666814610652578063dd62ed3e1461067b578063e01af92c146106b8576101e3565b8063a457c2d7116100d1578063a457c2d71461055b578063a9059cbb14610598578063afa4f3b2146105d5578063bb85c6d1146105fe576101e3565b806371fc4688146104b157806375f0a874146104da5780638da5cb5b1461050557806395d89b4114610530576101e3565b806349bd5a5e1161017a5780636ddd1713116101495780636ddd171314610407578063702509fd1461043257806370a082311461045d578063715018a61461049a576101e3565b806349bd5a5e1461034b5780634fbee1931461037657806364c98c44146103b357806365048d08146103dc576101e3565b806318160ddd116101b657806318160ddd1461027b57806323b872dd146102a6578063313ce567146102e3578063395093511461030e576101e3565b806306fdde03146101e8578063095ea7b3146102135780631694505e14610250576101e3565b366101e357005b600080fd5b3480156101f457600080fd5b506101fd610787565b60405161020a9190612931565b60405180910390f35b34801561021f57600080fd5b5061023a600480360381019061023591906129ec565b610819565b6040516102479190612a47565b60405180910390f35b34801561025c57600080fd5b50610265610837565b6040516102729190612ac1565b60405180910390f35b34801561028757600080fd5b5061029061085d565b60405161029d9190612aeb565b60405180910390f35b3480156102b257600080fd5b506102cd60048036038101906102c89190612b06565b610867565b6040516102da9190612a47565b60405180910390f35b3480156102ef57600080fd5b506102f8610986565b6040516103059190612b75565b60405180910390f35b34801561031a57600080fd5b50610335600480360381019061033091906129ec565b61098f565b6040516103429190612a47565b60405180910390f35b34801561035757600080fd5b50610360610a3b565b60405161036d9190612b9f565b60405180910390f35b34801561038257600080fd5b5061039d60048036038101906103989190612bba565b610a61565b6040516103aa9190612a47565b60405180910390f35b3480156103bf57600080fd5b506103da60048036038101906103d59190612be7565b610ab7565b005b3480156103e857600080fd5b506103f1610bd6565b6040516103fe9190612aeb565b60405180910390f35b34801561041357600080fd5b5061041c610bdc565b6040516104299190612a47565b60405180910390f35b34801561043e57600080fd5b50610447610bef565b6040516104549190612aeb565b60405180910390f35b34801561046957600080fd5b50610484600480360381019061047f9190612bba565b610bf5565b6040516104919190612aeb565b60405180910390f35b3480156104a657600080fd5b506104af610c3d565b005b3480156104bd57600080fd5b506104d860048036038101906104d39190612be7565b610d95565b005b3480156104e657600080fd5b506104ef610eb4565b6040516104fc9190612b9f565b60405180910390f35b34801561051157600080fd5b5061051a610eda565b6040516105279190612b9f565b60405180910390f35b34801561053c57600080fd5b50610545610f04565b6040516105529190612931565b60405180910390f35b34801561056757600080fd5b50610582600480360381019061057d91906129ec565b610f96565b60405161058f9190612a47565b60405180910390f35b3480156105a457600080fd5b506105bf60048036038101906105ba91906129ec565b611081565b6040516105cc9190612a47565b60405180910390f35b3480156105e157600080fd5b506105fc60048036038101906105f79190612be7565b61109f565b005b34801561060a57600080fd5b5061062560048036038101906106209190612bba565b6111d0565b005b34801561063357600080fd5b5061063c611403565b6040516106499190612aeb565b60405180910390f35b34801561065e57600080fd5b5061067960048036038101906106749190612c40565b611409565b005b34801561068757600080fd5b506106a2600480360381019061069d9190612c80565b6115db565b6040516106af9190612aeb565b60405180910390f35b3480156106c457600080fd5b506106df60048036038101906106da9190612cc0565b611662565b005b3480156106ed57600080fd5b506106f661176b565b6040516107039190612aeb565b60405180910390f35b34801561071857600080fd5b50610733600480360381019061072e9190612be7565b611771565b005b34801561074157600080fd5b5061075c60048036038101906107579190612bba565b611890565b005b34801561076a57600080fd5b5061078560048036038101906107809190612bba565b611a56565b005b60606003805461079690612d1c565b80601f01602080910402602001604051908101604052809291908181526020018280546107c290612d1c565b801561080f5780601f106107e45761010080835404028352916020019161080f565b820191906000526020600020905b8154815290600101906020018083116107f257829003601f168201915b5050505050905090565b600061082d610826611cc5565b8484611ccd565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108b3611cc5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461096f578281101561095a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095190612dbf565b60405180910390fd5b61096e85610966611cc5565b858403611ccd565b5b61097a858585611e96565b60019150509392505050565b60006012905090565b6000610a3161099c611cc5565b8484600160006109aa611cc5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610a2c9190612e0e565b611ccd565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610abf611cc5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4590612e8e565b60405180910390fd5b600b54811115610b93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8a90612f20565b60405180910390fd5b80600c819055507f925fa17eb1bbdac8e18750276099046910212e51b0d15da024f67ce9fb25cc9b600c54604051610bcb9190612aeb565b60405180910390a150565b600a5481565b600f60019054906101000a900460ff1681565b600c5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610c45611cc5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccb90612e8e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610d9d611cc5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2390612e8e565b60405180910390fd5b80600981905550600b54811115610e78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6f90612fb2565b60405180910390fd5b7f2c18bb7f919d244fa8ee59517018a471ec455b76373719d2d6664fa3b1947da9600954604051610ea99190612aeb565b60405180910390a150565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610f1390612d1c565b80601f0160208091040260200160405190810160405280929190818152602001828054610f3f90612d1c565b8015610f8c5780601f10610f6157610100808354040283529160200191610f8c565b820191906000526020600020905b815481529060010190602001808311610f6f57829003601f168201915b5050505050905090565b60008060016000610fa5611cc5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611062576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105990613044565b60405180910390fd5b61107661106d611cc5565b85858403611ccd565b600191505092915050565b600061109561108e611cc5565b8484611e96565b6001905092915050565b6110a7611cc5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611136576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112d90612e8e565b60405180910390fd5b620f424061114261085d565b61114c9190613093565b811161118d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118490613136565b60405180910390fd5b80600e819055507f7c26bfee26f82e8cb57af48f4019cc64582db6fac7bad778433f10572ae8b145600e546040516111c59190612aeb565b60405180910390a150565b6111d8611cc5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611267576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125e90612e8e565b60405180910390fd5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036112f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ee906131c8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611366576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135d9061325a565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fa964ba5c52d7e7bfcae4fb1ae4db9f211756d0e618e85fac5283b882a39e7a0b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516113f89190612b9f565b60405180910390a150565b60095481565b611411611cc5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149790612e8e565b60405180910390fd5b801515600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503611532576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611529906132ec565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516115cf9190612a47565b60405180910390a25050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61166a611cc5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f090612e8e565b60405180910390fd5b801515600f60019054906101000a900460ff1615150361174e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117459061337e565b60405180910390fd5b80600f60016101000a81548160ff02191690831515021790555050565b600e5481565b611779611cc5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611808576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ff90612e8e565b60405180910390fd5b80600a81905550600b54811115611854576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184b90612fb2565b60405180910390fd5b7fa54a45ff147b987a50c11919090466ad8b9df105c160d2e6bfb296df2b9abfb7600a546040516118859190612aeb565b60405180910390a150565b611898611cc5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611927576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191e90612e8e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611996576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198d90613410565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611a5e611cc5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611aed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae490612e8e565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b52906134a2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611bbd57611bb8473373ffffffffffffffffffffffffffffffffffffffff1661227390919063ffffffff16565b611cc2565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611bfd9190612b9f565b602060405180830381865afa158015611c1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c3e91906134d7565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611c7b929190613504565b6020604051808303816000875af1158015611c9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cbe9190613542565b5050505b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d33906135e1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611dab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da290613673565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e899190612aeb565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611efc90613705565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6b90613797565b60405180910390fd5b60008103611f8d57611f8883836000612367565b61226e565b6000611f9830610bf5565b90506000600e548210159050808015611fbe5750600f60009054906101000a900460ff16155b80156120175750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b801561203257506000600a546009546120309190612e0e565b115b801561204a5750600f60019054906101000a900460ff165b15612091576001600f60006101000a81548160ff021916908315150217905550612075600e546125e6565b6000600f60006101000a81548160ff0219169083151502179055505b6000600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806121345750600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061214b5750600f60009054906101000a900460ff165b15612159576000905061221f565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036121b857600954905061221e565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361221757600a54905061221d565b600c5490505b5b5b600081111561225f5760006064828661223891906137b7565b6122429190613093565b9050808561225091906137f9565b945061225d873083612367565b505b61226a868686612367565b5050505b505050565b804710156122b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ad90613879565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16826040516122dc906138ca565b60006040518083038185875af1925050503d8060008114612319576040519150601f19603f3d011682016040523d82523d6000602084013e61231e565b606091505b5050905080612362576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235990613951565b60405180910390fd5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123cd90613705565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612445576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243c90613797565b60405180910390fd5b612450838383612897565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156124d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124cd906139e3565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125699190612e0e565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516125cd9190612aeb565b60405180910390a36125e084848461289c565b50505050565b60004790506000600267ffffffffffffffff81111561260857612607613a03565b5b6040519080825280602002602001820160405280156126365781602001602082028036833780820191505090505b509050308160008151811061264e5761264d613a32565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127199190613a76565b8160018151811061272d5761272c613a32565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008430426040518663ffffffff1660e01b81526004016127cb959493929190613b9c565b600060405180830381600087803b1580156127e557600080fd5b505af11580156127f9573d6000803e3d6000fd5b505050506000824761280b91906137f9565b905061285881600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661227390919063ffffffff16565b7f54c5e193a68e36b996e0c85b164c5953625d951c488fbad0e67aa32e1c45307b8482604051612889929190613bf6565b60405180910390a150505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156128db5780820151818401526020810190506128c0565b60008484015250505050565b6000601f19601f8301169050919050565b6000612903826128a1565b61290d81856128ac565b935061291d8185602086016128bd565b612926816128e7565b840191505092915050565b6000602082019050818103600083015261294b81846128f8565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061298382612958565b9050919050565b61299381612978565b811461299e57600080fd5b50565b6000813590506129b08161298a565b92915050565b6000819050919050565b6129c9816129b6565b81146129d457600080fd5b50565b6000813590506129e6816129c0565b92915050565b60008060408385031215612a0357612a02612953565b5b6000612a11858286016129a1565b9250506020612a22858286016129d7565b9150509250929050565b60008115159050919050565b612a4181612a2c565b82525050565b6000602082019050612a5c6000830184612a38565b92915050565b6000819050919050565b6000612a87612a82612a7d84612958565b612a62565b612958565b9050919050565b6000612a9982612a6c565b9050919050565b6000612aab82612a8e565b9050919050565b612abb81612aa0565b82525050565b6000602082019050612ad66000830184612ab2565b92915050565b612ae5816129b6565b82525050565b6000602082019050612b006000830184612adc565b92915050565b600080600060608486031215612b1f57612b1e612953565b5b6000612b2d868287016129a1565b9350506020612b3e868287016129a1565b9250506040612b4f868287016129d7565b9150509250925092565b600060ff82169050919050565b612b6f81612b59565b82525050565b6000602082019050612b8a6000830184612b66565b92915050565b612b9981612978565b82525050565b6000602082019050612bb46000830184612b90565b92915050565b600060208284031215612bd057612bcf612953565b5b6000612bde848285016129a1565b91505092915050565b600060208284031215612bfd57612bfc612953565b5b6000612c0b848285016129d7565b91505092915050565b612c1d81612a2c565b8114612c2857600080fd5b50565b600081359050612c3a81612c14565b92915050565b60008060408385031215612c5757612c56612953565b5b6000612c65858286016129a1565b9250506020612c7685828601612c2b565b9150509250929050565b60008060408385031215612c9757612c96612953565b5b6000612ca5858286016129a1565b9250506020612cb6858286016129a1565b9150509250929050565b600060208284031215612cd657612cd5612953565b5b6000612ce484828501612c2b565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612d3457607f821691505b602082108103612d4757612d46612ced565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000612da96028836128ac565b9150612db482612d4d565b604082019050919050565b60006020820190508181036000830152612dd881612d9c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612e19826129b6565b9150612e24836129b6565b9250828201905080821115612e3c57612e3b612ddf565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612e786020836128ac565b9150612e8382612e42565b602082019050919050565b60006020820190508181036000830152612ea781612e6b565b9050919050565b7f57616c6c657420746f2057616c6c6574205472616e736665722046656520636160008201527f6e6e6f742065786365656420746865206d6178696d756d000000000000000000602082015250565b6000612f0a6037836128ac565b9150612f1582612eae565b604082019050919050565b60006020820190508181036000830152612f3981612efd565b9050919050565b7f546f74616c20466565732063616e6e6f742065786365656420746865206d617860008201527f696d756d00000000000000000000000000000000000000000000000000000000602082015250565b6000612f9c6024836128ac565b9150612fa782612f40565b604082019050919050565b60006020820190508181036000830152612fcb81612f8f565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061302e6025836128ac565b915061303982612fd2565b604082019050919050565b6000602082019050818103600083015261305d81613021565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061309e826129b6565b91506130a9836129b6565b9250826130b9576130b8613064565b5b828204905092915050565b7f53776170546f6b656e734174416d6f756e74206d75737420626520677265617460008201527f6572207468616e20302e3030303125206f6620746f74616c20737570706c7900602082015250565b6000613120603f836128ac565b915061312b826130c4565b604082019050919050565b6000602082019050818103600083015261314f81613113565b9050919050565b7f4d61726b6574696e672077616c6c657420697320616c7265616479207468617460008201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b60006131b26028836128ac565b91506131bd82613156565b604082019050919050565b600060208201905081810360008301526131e1816131a5565b9050919050565b7f4d61726b6574696e672077616c6c65742063616e6e6f7420626520746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b6000613244602b836128ac565b915061324f826131e8565b604082019050919050565b6000602082019050818103600083015261327381613237565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b60006132d6602a836128ac565b91506132e18261327a565b604082019050919050565b60006020820190508181036000830152613305816132c9565b9050919050565b7f73776170456e61626c656420616c72656164792061742074686973207374617460008201527f652e000000000000000000000000000000000000000000000000000000000000602082015250565b60006133686022836128ac565b91506133738261330c565b604082019050919050565b600060208201905081810360008301526133978161335b565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006133fa6026836128ac565b91506134058261339e565b604082019050919050565b60006020820190508181036000830152613429816133ed565b9050919050565b7f4f776e65722063616e6e6f7420636c61696d20636f6e7472616374277320626160008201527f6c616e6365206f6620697473206f776e20746f6b656e73000000000000000000602082015250565b600061348c6037836128ac565b915061349782613430565b604082019050919050565b600060208201905081810360008301526134bb8161347f565b9050919050565b6000815190506134d1816129c0565b92915050565b6000602082840312156134ed576134ec612953565b5b60006134fb848285016134c2565b91505092915050565b60006040820190506135196000830185612b90565b6135266020830184612adc565b9392505050565b60008151905061353c81612c14565b92915050565b60006020828403121561355857613557612953565b5b60006135668482850161352d565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006135cb6024836128ac565b91506135d68261356f565b604082019050919050565b600060208201905081810360008301526135fa816135be565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061365d6022836128ac565b915061366882613601565b604082019050919050565b6000602082019050818103600083015261368c81613650565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006136ef6025836128ac565b91506136fa82613693565b604082019050919050565b6000602082019050818103600083015261371e816136e2565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006137816023836128ac565b915061378c82613725565b604082019050919050565b600060208201905081810360008301526137b081613774565b9050919050565b60006137c2826129b6565b91506137cd836129b6565b92508282026137db816129b6565b915082820484148315176137f2576137f1612ddf565b5b5092915050565b6000613804826129b6565b915061380f836129b6565b925082820390508181111561382757613826612ddf565b5b92915050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000613863601d836128ac565b915061386e8261382d565b602082019050919050565b6000602082019050818103600083015261389281613856565b9050919050565b600081905092915050565b50565b60006138b4600083613899565b91506138bf826138a4565b600082019050919050565b60006138d5826138a7565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b600061393b603a836128ac565b9150613946826138df565b604082019050919050565b6000602082019050818103600083015261396a8161392e565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006139cd6026836128ac565b91506139d882613971565b604082019050919050565b600060208201905081810360008301526139fc816139c0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613a708161298a565b92915050565b600060208284031215613a8c57613a8b612953565b5b6000613a9a84828501613a61565b91505092915050565b6000819050919050565b6000613ac8613ac3613abe84613aa3565b612a62565b6129b6565b9050919050565b613ad881613aad565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613b1381612978565b82525050565b6000613b258383613b0a565b60208301905092915050565b6000602082019050919050565b6000613b4982613ade565b613b538185613ae9565b9350613b5e83613afa565b8060005b83811015613b8f578151613b768882613b19565b9750613b8183613b31565b925050600181019050613b62565b5085935050505092915050565b600060a082019050613bb16000830188612adc565b613bbe6020830187613acf565b8181036040830152613bd08186613b3e565b9050613bdf6060830185612b90565b613bec6080830184612adc565b9695505050505050565b6000604082019050613c0b6000830185612adc565b613c186020830184612adc565b939250505056fea264697066735822122078028a58eb0b5f449cdfffaa1df5cc468d7576ac27b682cf7ad533c45bda530764736f6c634300081100330000000000000000000000000000000000000000033b2e3c9fd0803ce8000000

Deployed Bytecode

0x6080604052600436106101dc5760003560e01c806371fc468811610102578063bb8c3ee011610095578063e2f4560511610064578063e2f45605146106e1578063eba4c3331461070c578063f2fde38b14610735578063f9d0831a1461075e576101e3565b8063bb8c3ee014610627578063c024666814610652578063dd62ed3e1461067b578063e01af92c146106b8576101e3565b8063a457c2d7116100d1578063a457c2d71461055b578063a9059cbb14610598578063afa4f3b2146105d5578063bb85c6d1146105fe576101e3565b806371fc4688146104b157806375f0a874146104da5780638da5cb5b1461050557806395d89b4114610530576101e3565b806349bd5a5e1161017a5780636ddd1713116101495780636ddd171314610407578063702509fd1461043257806370a082311461045d578063715018a61461049a576101e3565b806349bd5a5e1461034b5780634fbee1931461037657806364c98c44146103b357806365048d08146103dc576101e3565b806318160ddd116101b657806318160ddd1461027b57806323b872dd146102a6578063313ce567146102e3578063395093511461030e576101e3565b806306fdde03146101e8578063095ea7b3146102135780631694505e14610250576101e3565b366101e357005b600080fd5b3480156101f457600080fd5b506101fd610787565b60405161020a9190612931565b60405180910390f35b34801561021f57600080fd5b5061023a600480360381019061023591906129ec565b610819565b6040516102479190612a47565b60405180910390f35b34801561025c57600080fd5b50610265610837565b6040516102729190612ac1565b60405180910390f35b34801561028757600080fd5b5061029061085d565b60405161029d9190612aeb565b60405180910390f35b3480156102b257600080fd5b506102cd60048036038101906102c89190612b06565b610867565b6040516102da9190612a47565b60405180910390f35b3480156102ef57600080fd5b506102f8610986565b6040516103059190612b75565b60405180910390f35b34801561031a57600080fd5b50610335600480360381019061033091906129ec565b61098f565b6040516103429190612a47565b60405180910390f35b34801561035757600080fd5b50610360610a3b565b60405161036d9190612b9f565b60405180910390f35b34801561038257600080fd5b5061039d60048036038101906103989190612bba565b610a61565b6040516103aa9190612a47565b60405180910390f35b3480156103bf57600080fd5b506103da60048036038101906103d59190612be7565b610ab7565b005b3480156103e857600080fd5b506103f1610bd6565b6040516103fe9190612aeb565b60405180910390f35b34801561041357600080fd5b5061041c610bdc565b6040516104299190612a47565b60405180910390f35b34801561043e57600080fd5b50610447610bef565b6040516104549190612aeb565b60405180910390f35b34801561046957600080fd5b50610484600480360381019061047f9190612bba565b610bf5565b6040516104919190612aeb565b60405180910390f35b3480156104a657600080fd5b506104af610c3d565b005b3480156104bd57600080fd5b506104d860048036038101906104d39190612be7565b610d95565b005b3480156104e657600080fd5b506104ef610eb4565b6040516104fc9190612b9f565b60405180910390f35b34801561051157600080fd5b5061051a610eda565b6040516105279190612b9f565b60405180910390f35b34801561053c57600080fd5b50610545610f04565b6040516105529190612931565b60405180910390f35b34801561056757600080fd5b50610582600480360381019061057d91906129ec565b610f96565b60405161058f9190612a47565b60405180910390f35b3480156105a457600080fd5b506105bf60048036038101906105ba91906129ec565b611081565b6040516105cc9190612a47565b60405180910390f35b3480156105e157600080fd5b506105fc60048036038101906105f79190612be7565b61109f565b005b34801561060a57600080fd5b5061062560048036038101906106209190612bba565b6111d0565b005b34801561063357600080fd5b5061063c611403565b6040516106499190612aeb565b60405180910390f35b34801561065e57600080fd5b5061067960048036038101906106749190612c40565b611409565b005b34801561068757600080fd5b506106a2600480360381019061069d9190612c80565b6115db565b6040516106af9190612aeb565b60405180910390f35b3480156106c457600080fd5b506106df60048036038101906106da9190612cc0565b611662565b005b3480156106ed57600080fd5b506106f661176b565b6040516107039190612aeb565b60405180910390f35b34801561071857600080fd5b50610733600480360381019061072e9190612be7565b611771565b005b34801561074157600080fd5b5061075c60048036038101906107579190612bba565b611890565b005b34801561076a57600080fd5b5061078560048036038101906107809190612bba565b611a56565b005b60606003805461079690612d1c565b80601f01602080910402602001604051908101604052809291908181526020018280546107c290612d1c565b801561080f5780601f106107e45761010080835404028352916020019161080f565b820191906000526020600020905b8154815290600101906020018083116107f257829003601f168201915b5050505050905090565b600061082d610826611cc5565b8484611ccd565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108b3611cc5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461096f578281101561095a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095190612dbf565b60405180910390fd5b61096e85610966611cc5565b858403611ccd565b5b61097a858585611e96565b60019150509392505050565b60006012905090565b6000610a3161099c611cc5565b8484600160006109aa611cc5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610a2c9190612e0e565b611ccd565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610abf611cc5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4590612e8e565b60405180910390fd5b600b54811115610b93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8a90612f20565b60405180910390fd5b80600c819055507f925fa17eb1bbdac8e18750276099046910212e51b0d15da024f67ce9fb25cc9b600c54604051610bcb9190612aeb565b60405180910390a150565b600a5481565b600f60019054906101000a900460ff1681565b600c5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610c45611cc5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccb90612e8e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610d9d611cc5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2390612e8e565b60405180910390fd5b80600981905550600b54811115610e78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6f90612fb2565b60405180910390fd5b7f2c18bb7f919d244fa8ee59517018a471ec455b76373719d2d6664fa3b1947da9600954604051610ea99190612aeb565b60405180910390a150565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610f1390612d1c565b80601f0160208091040260200160405190810160405280929190818152602001828054610f3f90612d1c565b8015610f8c5780601f10610f6157610100808354040283529160200191610f8c565b820191906000526020600020905b815481529060010190602001808311610f6f57829003601f168201915b5050505050905090565b60008060016000610fa5611cc5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611062576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105990613044565b60405180910390fd5b61107661106d611cc5565b85858403611ccd565b600191505092915050565b600061109561108e611cc5565b8484611e96565b6001905092915050565b6110a7611cc5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611136576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112d90612e8e565b60405180910390fd5b620f424061114261085d565b61114c9190613093565b811161118d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118490613136565b60405180910390fd5b80600e819055507f7c26bfee26f82e8cb57af48f4019cc64582db6fac7bad778433f10572ae8b145600e546040516111c59190612aeb565b60405180910390a150565b6111d8611cc5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611267576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125e90612e8e565b60405180910390fd5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036112f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ee906131c8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611366576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135d9061325a565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fa964ba5c52d7e7bfcae4fb1ae4db9f211756d0e618e85fac5283b882a39e7a0b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516113f89190612b9f565b60405180910390a150565b60095481565b611411611cc5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149790612e8e565b60405180910390fd5b801515600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503611532576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611529906132ec565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516115cf9190612a47565b60405180910390a25050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61166a611cc5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f090612e8e565b60405180910390fd5b801515600f60019054906101000a900460ff1615150361174e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117459061337e565b60405180910390fd5b80600f60016101000a81548160ff02191690831515021790555050565b600e5481565b611779611cc5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611808576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ff90612e8e565b60405180910390fd5b80600a81905550600b54811115611854576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184b90612fb2565b60405180910390fd5b7fa54a45ff147b987a50c11919090466ad8b9df105c160d2e6bfb296df2b9abfb7600a546040516118859190612aeb565b60405180910390a150565b611898611cc5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611927576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191e90612e8e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611996576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198d90613410565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611a5e611cc5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611aed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae490612e8e565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b52906134a2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611bbd57611bb8473373ffffffffffffffffffffffffffffffffffffffff1661227390919063ffffffff16565b611cc2565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611bfd9190612b9f565b602060405180830381865afa158015611c1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c3e91906134d7565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611c7b929190613504565b6020604051808303816000875af1158015611c9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cbe9190613542565b5050505b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d33906135e1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611dab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da290613673565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e899190612aeb565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611efc90613705565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6b90613797565b60405180910390fd5b60008103611f8d57611f8883836000612367565b61226e565b6000611f9830610bf5565b90506000600e548210159050808015611fbe5750600f60009054906101000a900460ff16155b80156120175750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b801561203257506000600a546009546120309190612e0e565b115b801561204a5750600f60019054906101000a900460ff165b15612091576001600f60006101000a81548160ff021916908315150217905550612075600e546125e6565b6000600f60006101000a81548160ff0219169083151502179055505b6000600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806121345750600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061214b5750600f60009054906101000a900460ff165b15612159576000905061221f565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036121b857600954905061221e565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361221757600a54905061221d565b600c5490505b5b5b600081111561225f5760006064828661223891906137b7565b6122429190613093565b9050808561225091906137f9565b945061225d873083612367565b505b61226a868686612367565b5050505b505050565b804710156122b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ad90613879565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16826040516122dc906138ca565b60006040518083038185875af1925050503d8060008114612319576040519150601f19603f3d011682016040523d82523d6000602084013e61231e565b606091505b5050905080612362576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235990613951565b60405180910390fd5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123cd90613705565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612445576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243c90613797565b60405180910390fd5b612450838383612897565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156124d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124cd906139e3565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125699190612e0e565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516125cd9190612aeb565b60405180910390a36125e084848461289c565b50505050565b60004790506000600267ffffffffffffffff81111561260857612607613a03565b5b6040519080825280602002602001820160405280156126365781602001602082028036833780820191505090505b509050308160008151811061264e5761264d613a32565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127199190613a76565b8160018151811061272d5761272c613a32565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008430426040518663ffffffff1660e01b81526004016127cb959493929190613b9c565b600060405180830381600087803b1580156127e557600080fd5b505af11580156127f9573d6000803e3d6000fd5b505050506000824761280b91906137f9565b905061285881600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661227390919063ffffffff16565b7f54c5e193a68e36b996e0c85b164c5953625d951c488fbad0e67aa32e1c45307b8482604051612889929190613bf6565b60405180910390a150505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156128db5780820151818401526020810190506128c0565b60008484015250505050565b6000601f19601f8301169050919050565b6000612903826128a1565b61290d81856128ac565b935061291d8185602086016128bd565b612926816128e7565b840191505092915050565b6000602082019050818103600083015261294b81846128f8565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061298382612958565b9050919050565b61299381612978565b811461299e57600080fd5b50565b6000813590506129b08161298a565b92915050565b6000819050919050565b6129c9816129b6565b81146129d457600080fd5b50565b6000813590506129e6816129c0565b92915050565b60008060408385031215612a0357612a02612953565b5b6000612a11858286016129a1565b9250506020612a22858286016129d7565b9150509250929050565b60008115159050919050565b612a4181612a2c565b82525050565b6000602082019050612a5c6000830184612a38565b92915050565b6000819050919050565b6000612a87612a82612a7d84612958565b612a62565b612958565b9050919050565b6000612a9982612a6c565b9050919050565b6000612aab82612a8e565b9050919050565b612abb81612aa0565b82525050565b6000602082019050612ad66000830184612ab2565b92915050565b612ae5816129b6565b82525050565b6000602082019050612b006000830184612adc565b92915050565b600080600060608486031215612b1f57612b1e612953565b5b6000612b2d868287016129a1565b9350506020612b3e868287016129a1565b9250506040612b4f868287016129d7565b9150509250925092565b600060ff82169050919050565b612b6f81612b59565b82525050565b6000602082019050612b8a6000830184612b66565b92915050565b612b9981612978565b82525050565b6000602082019050612bb46000830184612b90565b92915050565b600060208284031215612bd057612bcf612953565b5b6000612bde848285016129a1565b91505092915050565b600060208284031215612bfd57612bfc612953565b5b6000612c0b848285016129d7565b91505092915050565b612c1d81612a2c565b8114612c2857600080fd5b50565b600081359050612c3a81612c14565b92915050565b60008060408385031215612c5757612c56612953565b5b6000612c65858286016129a1565b9250506020612c7685828601612c2b565b9150509250929050565b60008060408385031215612c9757612c96612953565b5b6000612ca5858286016129a1565b9250506020612cb6858286016129a1565b9150509250929050565b600060208284031215612cd657612cd5612953565b5b6000612ce484828501612c2b565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612d3457607f821691505b602082108103612d4757612d46612ced565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000612da96028836128ac565b9150612db482612d4d565b604082019050919050565b60006020820190508181036000830152612dd881612d9c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612e19826129b6565b9150612e24836129b6565b9250828201905080821115612e3c57612e3b612ddf565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612e786020836128ac565b9150612e8382612e42565b602082019050919050565b60006020820190508181036000830152612ea781612e6b565b9050919050565b7f57616c6c657420746f2057616c6c6574205472616e736665722046656520636160008201527f6e6e6f742065786365656420746865206d6178696d756d000000000000000000602082015250565b6000612f0a6037836128ac565b9150612f1582612eae565b604082019050919050565b60006020820190508181036000830152612f3981612efd565b9050919050565b7f546f74616c20466565732063616e6e6f742065786365656420746865206d617860008201527f696d756d00000000000000000000000000000000000000000000000000000000602082015250565b6000612f9c6024836128ac565b9150612fa782612f40565b604082019050919050565b60006020820190508181036000830152612fcb81612f8f565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061302e6025836128ac565b915061303982612fd2565b604082019050919050565b6000602082019050818103600083015261305d81613021565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061309e826129b6565b91506130a9836129b6565b9250826130b9576130b8613064565b5b828204905092915050565b7f53776170546f6b656e734174416d6f756e74206d75737420626520677265617460008201527f6572207468616e20302e3030303125206f6620746f74616c20737570706c7900602082015250565b6000613120603f836128ac565b915061312b826130c4565b604082019050919050565b6000602082019050818103600083015261314f81613113565b9050919050565b7f4d61726b6574696e672077616c6c657420697320616c7265616479207468617460008201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b60006131b26028836128ac565b91506131bd82613156565b604082019050919050565b600060208201905081810360008301526131e1816131a5565b9050919050565b7f4d61726b6574696e672077616c6c65742063616e6e6f7420626520746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b6000613244602b836128ac565b915061324f826131e8565b604082019050919050565b6000602082019050818103600083015261327381613237565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b60006132d6602a836128ac565b91506132e18261327a565b604082019050919050565b60006020820190508181036000830152613305816132c9565b9050919050565b7f73776170456e61626c656420616c72656164792061742074686973207374617460008201527f652e000000000000000000000000000000000000000000000000000000000000602082015250565b60006133686022836128ac565b91506133738261330c565b604082019050919050565b600060208201905081810360008301526133978161335b565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006133fa6026836128ac565b91506134058261339e565b604082019050919050565b60006020820190508181036000830152613429816133ed565b9050919050565b7f4f776e65722063616e6e6f7420636c61696d20636f6e7472616374277320626160008201527f6c616e6365206f6620697473206f776e20746f6b656e73000000000000000000602082015250565b600061348c6037836128ac565b915061349782613430565b604082019050919050565b600060208201905081810360008301526134bb8161347f565b9050919050565b6000815190506134d1816129c0565b92915050565b6000602082840312156134ed576134ec612953565b5b60006134fb848285016134c2565b91505092915050565b60006040820190506135196000830185612b90565b6135266020830184612adc565b9392505050565b60008151905061353c81612c14565b92915050565b60006020828403121561355857613557612953565b5b60006135668482850161352d565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006135cb6024836128ac565b91506135d68261356f565b604082019050919050565b600060208201905081810360008301526135fa816135be565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061365d6022836128ac565b915061366882613601565b604082019050919050565b6000602082019050818103600083015261368c81613650565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006136ef6025836128ac565b91506136fa82613693565b604082019050919050565b6000602082019050818103600083015261371e816136e2565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006137816023836128ac565b915061378c82613725565b604082019050919050565b600060208201905081810360008301526137b081613774565b9050919050565b60006137c2826129b6565b91506137cd836129b6565b92508282026137db816129b6565b915082820484148315176137f2576137f1612ddf565b5b5092915050565b6000613804826129b6565b915061380f836129b6565b925082820390508181111561382757613826612ddf565b5b92915050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000613863601d836128ac565b915061386e8261382d565b602082019050919050565b6000602082019050818103600083015261389281613856565b9050919050565b600081905092915050565b50565b60006138b4600083613899565b91506138bf826138a4565b600082019050919050565b60006138d5826138a7565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b600061393b603a836128ac565b9150613946826138df565b604082019050919050565b6000602082019050818103600083015261396a8161392e565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006139cd6026836128ac565b91506139d882613971565b604082019050919050565b600060208201905081810360008301526139fc816139c0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613a708161298a565b92915050565b600060208284031215613a8c57613a8b612953565b5b6000613a9a84828501613a61565b91505092915050565b6000819050919050565b6000613ac8613ac3613abe84613aa3565b612a62565b6129b6565b9050919050565b613ad881613aad565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613b1381612978565b82525050565b6000613b258383613b0a565b60208301905092915050565b6000602082019050919050565b6000613b4982613ade565b613b538185613ae9565b9350613b5e83613afa565b8060005b83811015613b8f578151613b768882613b19565b9750613b8183613b31565b925050600181019050613b62565b5085935050505092915050565b600060a082019050613bb16000830188612adc565b613bbe6020830187613acf565b8181036040830152613bd08186613b3e565b9050613bdf6060830185612b90565b613bec6080830184612adc565b9695505050505050565b6000604082019050613c0b6000830185612adc565b613c186020830184612adc565b939250505056fea264697066735822122078028a58eb0b5f449cdfffaa1df5cc468d7576ac27b682cf7ad533c45bda530764736f6c63430008110033

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

0000000000000000000000000000000000000000033b2e3c9fd0803ce8000000

-----Decoded View---------------
Arg [0] : _totalSupply (uint256): 1000000000000000000000000000

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000033b2e3c9fd0803ce8000000


Deployed Bytecode Sourcemap

19662:7388:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14947:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15861:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19747:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15268:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16038:573;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15167:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16619:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19795:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23092:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23692:360;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19926:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20155:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19991:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15384:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14134:148;;;;;;;;;;;;;:::i;:::-;;23225:222;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20041:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13920:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15055:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16842:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15519:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26104:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24060:379;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19895:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22794:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15702:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25917:179;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20081:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23455:229;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14290:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22263:465;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14947:100;15001:13;15034:5;15027:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14947:100;:::o;15861:169::-;15944:4;15961:39;15970:12;:10;:12::i;:::-;15984:7;15993:6;15961:8;:39::i;:::-;16018:4;16011:11;;15861:169;;;;:::o;19747:41::-;;;;;;;;;;;;;:::o;15268:108::-;15329:7;15356:12;;15349:19;;15268:108;:::o;16038:573::-;16178:4;16195:24;16222:11;:19;16234:6;16222:19;;;;;;;;;;;;;;;:33;16242:12;:10;:12::i;:::-;16222:33;;;;;;;;;;;;;;;;16195:60;;16290:17;16270:16;:37;16266:265;;16352:6;16332:16;:26;;16324:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;16447:57;16456:6;16464:12;:10;:12::i;:::-;16497:6;16478:16;:25;16447:8;:57::i;:::-;16266:265;16543:36;16553:6;16561:9;16572:6;16543:9;:36::i;:::-;16599:4;16592:11;;;16038:573;;;;;:::o;15167:93::-;15225:5;15250:2;15243:9;;15167:93;:::o;16619:215::-;16707:4;16724:80;16733:12;:10;:12::i;:::-;16747:7;16793:10;16756:11;:25;16768:12;:10;:12::i;:::-;16756:25;;;;;;;;;;;;;;;:34;16782:7;16756:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;16724:8;:80::i;:::-;16822:4;16815:11;;16619:215;;;;:::o;19795:29::-;;;;;;;;;;;;;:::o;23092:125::-;23157:4;23181:19;:28;23201:7;23181:28;;;;;;;;;;;;;;;;;;;;;;;;;23174:35;;23092:125;;;:::o;23692:360::-;14057:12;:10;:12::i;:::-;14047:22;;:6;;;;;;;;;;;:22;;;14039:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23837:6:::1;;23807:26;:36;;23799:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;23942:26;23914:25;:54;;;;23986:58;24018:25;;23986:58;;;;;;:::i;:::-;;;;;;;;23692:360:::0;:::o;19926:25::-;;;;:::o;20155:26::-;;;;;;;;;;;;;:::o;19991:41::-;;;;:::o;15384:127::-;15458:7;15485:9;:18;15495:7;15485:18;;;;;;;;;;;;;;;;15478:25;;15384:127;;;:::o;14134:148::-;14057:12;:10;:12::i;:::-;14047:22;;:6;;;;;;;;;;;:22;;;14039:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14241:1:::1;14204:40;;14225:6;;;;;;;;;;;14204:40;;;;;;;;;;;;14272:1;14255:6;;:19;;;;;;;;;;;;;;;;;;14134:148::o:0;23225:222::-;14057:12;:10;:12::i;:::-;14047:22;;:6;;;;;;;;;;;:22;;;14039:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23308:9:::1;23297:8;:20;;;;23351:6;;23338:9;:19;;23330:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23416:23;23430:8;;23416:23;;;;;;:::i;:::-;;;;;;;;23225:222:::0;:::o;20041:31::-;;;;;;;;;;;;;:::o;13920:79::-;13958:7;13985:6;;;;;;;;;;;13978:13;;13920:79;:::o;15055:104::-;15111:13;15144:7;15137:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15055:104;:::o;16842:413::-;16935:4;16952:24;16979:11;:25;16991:12;:10;:12::i;:::-;16979:25;;;;;;;;;;;;;;;:34;17005:7;16979:34;;;;;;;;;;;;;;;;16952:61;;17052:15;17032:16;:35;;17024:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;17145:67;17154:12;:10;:12::i;:::-;17168:7;17196:15;17177:16;:34;17145:8;:67::i;:::-;17243:4;17236:11;;;16842:413;;;;:::o;15519:175::-;15605:4;15622:42;15632:12;:10;:12::i;:::-;15646:9;15657:6;15622:9;:42::i;:::-;15682:4;15675:11;;15519:175;;;;:::o;26104:304::-;14057:12;:10;:12::i;:::-;14047:22;;:6;;;;;;;;;;;:22;;;14039:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26219:9:::1;26203:13;:11;:13::i;:::-;:25;;;;:::i;:::-;26191:9;:37;26183:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;26328:9;26307:18;:30;;;;26355:45;26381:18;;26355:45;;;;;;:::i;:::-;;;;;;;;26104:304:::0;:::o;24060:379::-;14057:12;:10;:12::i;:::-;14047:22;;:6;;;;;;;;;;;:22;;;14039:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24174:15:::1;;;;;;;;;;;24154:35;;:16;:35;;::::0;24146:87:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;24280:1;24252:30;;:16;:30;;::::0;24244:85:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;24358:16;24340:15;;:34;;;;;;;;;;;;;;;;;;24392:39;24415:15;;;;;;;;;;;24392:39;;;;;;:::i;:::-;;;;;;;;24060:379:::0;:::o;19895:24::-;;;;:::o;22794:290::-;14057:12;:10;:12::i;:::-;14047:22;;:6;;;;;;;;;;;:22;;;14039:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22920:8:::1;22888:40;;:19;:28;22908:7;22888:28;;;;;;;;;;;;;;;;;;;;;;;;;:40;;::::0;22880:94:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;23016:8;22985:19;:28;23005:7;22985:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;23058:7;23042:34;;;23067:8;23042:34;;;;;;:::i;:::-;;;;;;;;22794:290:::0;;:::o;15702:151::-;15791:7;15818:11;:18;15830:5;15818:18;;;;;;;;;;;;;;;:27;15837:7;15818:27;;;;;;;;;;;;;;;;15811:34;;15702:151;;;;:::o;25917:179::-;14057:12;:10;:12::i;:::-;14047:22;;:6;;;;;;;;;;;:22;;;14039:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26008:8:::1;25993:23;;:11;;;;;;;;;;;:23;;::::0;25985:70:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;26080:8;26066:11;;:22;;;;;;;;;;;;;;;;;;25917:179:::0;:::o;20081:34::-;;;;:::o;23455:229::-;14057:12;:10;:12::i;:::-;14047:22;;:6;;;;;;;;;;;:22;;;14039:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23541:10:::1;23529:9;:22;;;;23586:6;;23572:10;:20;;23564:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;23651:25;23666:9;;23651:25;;;;;;:::i;:::-;;;;;;;;23455:229:::0;:::o;14290:244::-;14057:12;:10;:12::i;:::-;14047:22;;:6;;;;;;;;;;;:22;;;14039:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14399:1:::1;14379:22;;:8;:22;;::::0;14371:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;14489:8;14460:38;;14481:6;;;;;;;;;;;14460:38;;;;;;;;;;;;14518:8;14509:6;;:17;;;;;;;;;;;;;;;;;;14290:244:::0;:::o;22263:465::-;14057:12;:10;:12::i;:::-;14047:22;;:6;;;;;;;;;;;:22;;;14039:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22359:4:::1;22342:22;;:5;:22;;::::0;22334:90:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;22456:3;22439:21;;:5;:21;;::::0;22435:127:::1;;22477:52;22507:21;22485:10;22477:29;;;;:52;;;;:::i;:::-;22544:7;;22435:127;22572:17;22599:5;22572:33;;22616:15;22634:10;:20;;;22663:4;22634:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22616:53;;22680:10;:19;;;22700:10;22712:7;22680:40;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22323:405;;14117:1;22263:465:::0;:::o;13243:98::-;13296:7;13323:10;13316:17;;13243:98;:::o;19010:380::-;19163:1;19146:19;;:5;:19;;;19138:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19244:1;19225:21;;:7;:21;;;19217:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19328:6;19298:11;:18;19310:5;19298:18;;;;;;;;;;;;;;;:27;19317:7;19298:27;;;;;;;;;;;;;;;:36;;;;19366:7;19350:32;;19359:5;19350:32;;;19375:6;19350:32;;;;;;:::i;:::-;;;;;;;;19010:380;;;:::o;24449:1401::-;24562:1;24546:18;;:4;:18;;;24538:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24639:1;24625:16;;:2;:16;;;24617:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;24715:1;24705:6;:11;24701:93;;24733:28;24749:4;24755:2;24759:1;24733:15;:28::i;:::-;24776:7;;24701:93;24800:28;24831:24;24849:4;24831:9;:24::i;:::-;24800:55;;24868:12;24907:18;;24883:20;:42;;24868:57;;24942:7;:33;;;;;24967:8;;;;;;;;;;;24966:9;24942:33;:69;;;;;24998:13;;;;;;;;;;;24992:19;;:2;:19;;;24942:69;:110;;;;;25051:1;25039:9;;25028:8;;:20;;;;:::i;:::-;:24;24942:110;:138;;;;;25069:11;;;;;;;;;;;24942:138;24938:280;;;25118:4;25107:8;;:15;;;;;;;;;;;;;;;;;;25139:34;25154:18;;25139:14;:34::i;:::-;25201:5;25190:8;;:16;;;;;;;;;;;;;;;;;;24938:280;25230:18;25263:19;:25;25283:4;25263:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;25292:19;:23;25312:2;25292:23;;;;;;;;;;;;;;;;;;;;;;;;;25263:52;:64;;;;25319:8;;;;;;;;;;;25263:64;25259:343;;;25357:1;25344:14;;25259:343;;;25388:13;;;;;;;;;;;25380:21;;:4;:21;;;25376:226;;25431:8;;25418:21;;25376:226;;;25467:13;;;;;;;;;;;25461:19;;:2;:19;;;25457:145;;25510:9;;25497:22;;25457:145;;;25565:25;;25552:38;;25457:145;25376:226;25259:343;25631:1;25618:10;:14;25614:183;;;25649:12;25688:3;25674:10;25665:6;:19;;;;:::i;:::-;25664:27;;;;:::i;:::-;25649:42;;25724:4;25715:6;:13;;;;:::i;:::-;25706:22;;25743:42;25759:4;25773;25780;25743:15;:42::i;:::-;25634:163;25614:183;25809:33;25825:4;25831:2;25835:6;25809:15;:33::i;:::-;24527:1323;;;24449:1401;;;;:::o;9102:317::-;9217:6;9192:21;:31;;9184:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;9271:12;9289:9;:14;;9311:6;9289:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9270:52;;;9341:7;9333:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;9173:246;9102:317;;:::o;17263:733::-;17421:1;17403:20;;:6;:20;;;17395:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;17505:1;17484:23;;:9;:23;;;17476:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;17560:47;17581:6;17589:9;17600:6;17560:20;:47::i;:::-;17620:21;17644:9;:17;17654:6;17644:17;;;;;;;;;;;;;;;;17620:41;;17697:6;17680:13;:23;;17672:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;17818:6;17802:13;:22;17782:9;:17;17792:6;17782:17;;;;;;;;;;;;;;;:42;;;;17870:6;17846:9;:20;17856:9;17846:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;17911:9;17894:35;;17903:6;17894:35;;;17922:6;17894:35;;;;;;:::i;:::-;;;;;;;;17942:46;17962:6;17970:9;17981:6;17942:19;:46::i;:::-;17384:612;17263:733;;;:::o;26416:631::-;26480:22;26505:21;26480:46;;26539:21;26577:1;26563:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26539:40;;26608:4;26590;26595:1;26590:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;26634:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26624:4;26629:1;26624:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;26669:15;;;;;;;;;;;:66;;;26750:11;26776:1;26792:4;26819;26839:15;26669:186;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26868:18;26913:14;26889:21;:38;;;;:::i;:::-;26868:59;;26938:46;26973:10;26946:15;;;;;;;;;;;26938:34;;;;:46;;;;:::i;:::-;27000:39;27015:11;27028:10;27000:39;;;;;;;:::i;:::-;;;;;;;;26469:578;;;26416:631;:::o;19398:125::-;;;;:::o;19531:124::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:152::-;3868:9;3901:37;3932:5;3901:37;:::i;:::-;3888:50;;3792:152;;;:::o;3950:183::-;4063:63;4120:5;4063:63;:::i;:::-;4058:3;4051:76;3950:183;;:::o;4139:274::-;4258:4;4296:2;4285:9;4281:18;4273:26;;4309:97;4403:1;4392:9;4388:17;4379:6;4309:97;:::i;:::-;4139:274;;;;:::o;4419:118::-;4506:24;4524:5;4506:24;:::i;:::-;4501:3;4494:37;4419:118;;:::o;4543:222::-;4636:4;4674:2;4663:9;4659:18;4651:26;;4687:71;4755:1;4744:9;4740:17;4731:6;4687:71;:::i;:::-;4543:222;;;;:::o;4771:619::-;4848:6;4856;4864;4913:2;4901:9;4892:7;4888:23;4884:32;4881:119;;;4919:79;;:::i;:::-;4881:119;5039:1;5064:53;5109:7;5100:6;5089:9;5085:22;5064:53;:::i;:::-;5054:63;;5010:117;5166:2;5192:53;5237:7;5228:6;5217:9;5213:22;5192:53;:::i;:::-;5182:63;;5137:118;5294:2;5320:53;5365:7;5356:6;5345:9;5341:22;5320:53;:::i;:::-;5310:63;;5265:118;4771:619;;;;;:::o;5396:86::-;5431:7;5471:4;5464:5;5460:16;5449:27;;5396:86;;;:::o;5488:112::-;5571:22;5587:5;5571:22;:::i;:::-;5566:3;5559:35;5488:112;;:::o;5606:214::-;5695:4;5733:2;5722:9;5718:18;5710:26;;5746:67;5810:1;5799:9;5795:17;5786:6;5746:67;:::i;:::-;5606:214;;;;:::o;5826:118::-;5913:24;5931:5;5913:24;:::i;:::-;5908:3;5901:37;5826:118;;:::o;5950:222::-;6043:4;6081:2;6070:9;6066:18;6058:26;;6094:71;6162:1;6151:9;6147:17;6138:6;6094:71;:::i;:::-;5950:222;;;;:::o;6178:329::-;6237:6;6286:2;6274:9;6265:7;6261:23;6257:32;6254:119;;;6292:79;;:::i;:::-;6254:119;6412:1;6437:53;6482:7;6473:6;6462:9;6458:22;6437:53;:::i;:::-;6427:63;;6383:117;6178:329;;;;:::o;6513:::-;6572:6;6621:2;6609:9;6600:7;6596:23;6592:32;6589:119;;;6627:79;;:::i;:::-;6589:119;6747:1;6772:53;6817:7;6808:6;6797:9;6793:22;6772:53;:::i;:::-;6762:63;;6718:117;6513:329;;;;:::o;6848:116::-;6918:21;6933:5;6918:21;:::i;:::-;6911:5;6908:32;6898:60;;6954:1;6951;6944:12;6898:60;6848:116;:::o;6970:133::-;7013:5;7051:6;7038:20;7029:29;;7067:30;7091:5;7067:30;:::i;:::-;6970:133;;;;:::o;7109:468::-;7174:6;7182;7231:2;7219:9;7210:7;7206:23;7202:32;7199:119;;;7237:79;;:::i;:::-;7199:119;7357:1;7382:53;7427:7;7418:6;7407:9;7403:22;7382:53;:::i;:::-;7372:63;;7328:117;7484:2;7510:50;7552:7;7543:6;7532:9;7528:22;7510:50;:::i;:::-;7500:60;;7455:115;7109:468;;;;;:::o;7583:474::-;7651:6;7659;7708:2;7696:9;7687:7;7683:23;7679:32;7676:119;;;7714:79;;:::i;:::-;7676:119;7834:1;7859:53;7904:7;7895:6;7884:9;7880:22;7859:53;:::i;:::-;7849:63;;7805:117;7961:2;7987:53;8032:7;8023:6;8012:9;8008:22;7987:53;:::i;:::-;7977:63;;7932:118;7583:474;;;;;:::o;8063:323::-;8119:6;8168:2;8156:9;8147:7;8143:23;8139:32;8136:119;;;8174:79;;:::i;:::-;8136:119;8294:1;8319:50;8361:7;8352:6;8341:9;8337:22;8319:50;:::i;:::-;8309:60;;8265:114;8063:323;;;;:::o;8392:180::-;8440:77;8437:1;8430:88;8537:4;8534:1;8527:15;8561:4;8558:1;8551:15;8578:320;8622:6;8659:1;8653:4;8649:12;8639:22;;8706:1;8700:4;8696:12;8727:18;8717:81;;8783:4;8775:6;8771:17;8761:27;;8717:81;8845:2;8837:6;8834:14;8814:18;8811:38;8808:84;;8864:18;;:::i;:::-;8808:84;8629:269;8578:320;;;:::o;8904:227::-;9044:34;9040:1;9032:6;9028:14;9021:58;9113:10;9108:2;9100:6;9096:15;9089:35;8904:227;:::o;9137:366::-;9279:3;9300:67;9364:2;9359:3;9300:67;:::i;:::-;9293:74;;9376:93;9465:3;9376:93;:::i;:::-;9494:2;9489:3;9485:12;9478:19;;9137:366;;;:::o;9509:419::-;9675:4;9713:2;9702:9;9698:18;9690:26;;9762:9;9756:4;9752:20;9748:1;9737:9;9733:17;9726:47;9790:131;9916:4;9790:131;:::i;:::-;9782:139;;9509:419;;;:::o;9934:180::-;9982:77;9979:1;9972:88;10079:4;10076:1;10069:15;10103:4;10100:1;10093:15;10120:191;10160:3;10179:20;10197:1;10179:20;:::i;:::-;10174:25;;10213:20;10231:1;10213:20;:::i;:::-;10208:25;;10256:1;10253;10249:9;10242:16;;10277:3;10274:1;10271:10;10268:36;;;10284:18;;:::i;:::-;10268:36;10120:191;;;;:::o;10317:182::-;10457:34;10453:1;10445:6;10441:14;10434:58;10317:182;:::o;10505:366::-;10647:3;10668:67;10732:2;10727:3;10668:67;:::i;:::-;10661:74;;10744:93;10833:3;10744:93;:::i;:::-;10862:2;10857:3;10853:12;10846:19;;10505:366;;;:::o;10877:419::-;11043:4;11081:2;11070:9;11066:18;11058:26;;11130:9;11124:4;11120:20;11116:1;11105:9;11101:17;11094:47;11158:131;11284:4;11158:131;:::i;:::-;11150:139;;10877:419;;;:::o;11302:242::-;11442:34;11438:1;11430:6;11426:14;11419:58;11511:25;11506:2;11498:6;11494:15;11487:50;11302:242;:::o;11550:366::-;11692:3;11713:67;11777:2;11772:3;11713:67;:::i;:::-;11706:74;;11789:93;11878:3;11789:93;:::i;:::-;11907:2;11902:3;11898:12;11891:19;;11550:366;;;:::o;11922:419::-;12088:4;12126:2;12115:9;12111:18;12103:26;;12175:9;12169:4;12165:20;12161:1;12150:9;12146:17;12139:47;12203:131;12329:4;12203:131;:::i;:::-;12195:139;;11922:419;;;:::o;12347:223::-;12487:34;12483:1;12475:6;12471:14;12464:58;12556:6;12551:2;12543:6;12539:15;12532:31;12347:223;:::o;12576:366::-;12718:3;12739:67;12803:2;12798:3;12739:67;:::i;:::-;12732:74;;12815:93;12904:3;12815:93;:::i;:::-;12933:2;12928:3;12924:12;12917:19;;12576:366;;;:::o;12948:419::-;13114:4;13152:2;13141:9;13137:18;13129:26;;13201:9;13195:4;13191:20;13187:1;13176:9;13172:17;13165:47;13229:131;13355:4;13229:131;:::i;:::-;13221:139;;12948:419;;;:::o;13373:224::-;13513:34;13509:1;13501:6;13497:14;13490:58;13582:7;13577:2;13569:6;13565:15;13558:32;13373:224;:::o;13603:366::-;13745:3;13766:67;13830:2;13825:3;13766:67;:::i;:::-;13759:74;;13842:93;13931:3;13842:93;:::i;:::-;13960:2;13955:3;13951:12;13944:19;;13603:366;;;:::o;13975:419::-;14141:4;14179:2;14168:9;14164:18;14156:26;;14228:9;14222:4;14218:20;14214:1;14203:9;14199:17;14192:47;14256:131;14382:4;14256:131;:::i;:::-;14248:139;;13975:419;;;:::o;14400:180::-;14448:77;14445:1;14438:88;14545:4;14542:1;14535:15;14569:4;14566:1;14559:15;14586:185;14626:1;14643:20;14661:1;14643:20;:::i;:::-;14638:25;;14677:20;14695:1;14677:20;:::i;:::-;14672:25;;14716:1;14706:35;;14721:18;;:::i;:::-;14706:35;14763:1;14760;14756:9;14751:14;;14586:185;;;;:::o;14777:250::-;14917:34;14913:1;14905:6;14901:14;14894:58;14986:33;14981:2;14973:6;14969:15;14962:58;14777:250;:::o;15033:366::-;15175:3;15196:67;15260:2;15255:3;15196:67;:::i;:::-;15189:74;;15272:93;15361:3;15272:93;:::i;:::-;15390:2;15385:3;15381:12;15374:19;;15033:366;;;:::o;15405:419::-;15571:4;15609:2;15598:9;15594:18;15586:26;;15658:9;15652:4;15648:20;15644:1;15633:9;15629:17;15622:47;15686:131;15812:4;15686:131;:::i;:::-;15678:139;;15405:419;;;:::o;15830:227::-;15970:34;15966:1;15958:6;15954:14;15947:58;16039:10;16034:2;16026:6;16022:15;16015:35;15830:227;:::o;16063:366::-;16205:3;16226:67;16290:2;16285:3;16226:67;:::i;:::-;16219:74;;16302:93;16391:3;16302:93;:::i;:::-;16420:2;16415:3;16411:12;16404:19;;16063:366;;;:::o;16435:419::-;16601:4;16639:2;16628:9;16624:18;16616:26;;16688:9;16682:4;16678:20;16674:1;16663:9;16659:17;16652:47;16716:131;16842:4;16716:131;:::i;:::-;16708:139;;16435:419;;;:::o;16860:230::-;17000:34;16996:1;16988:6;16984:14;16977:58;17069:13;17064:2;17056:6;17052:15;17045:38;16860:230;:::o;17096:366::-;17238:3;17259:67;17323:2;17318:3;17259:67;:::i;:::-;17252:74;;17335:93;17424:3;17335:93;:::i;:::-;17453:2;17448:3;17444:12;17437:19;;17096:366;;;:::o;17468:419::-;17634:4;17672:2;17661:9;17657:18;17649:26;;17721:9;17715:4;17711:20;17707:1;17696:9;17692:17;17685:47;17749:131;17875:4;17749:131;:::i;:::-;17741:139;;17468:419;;;:::o;17893:229::-;18033:34;18029:1;18021:6;18017:14;18010:58;18102:12;18097:2;18089:6;18085:15;18078:37;17893:229;:::o;18128:366::-;18270:3;18291:67;18355:2;18350:3;18291:67;:::i;:::-;18284:74;;18367:93;18456:3;18367:93;:::i;:::-;18485:2;18480:3;18476:12;18469:19;;18128:366;;;:::o;18500:419::-;18666:4;18704:2;18693:9;18689:18;18681:26;;18753:9;18747:4;18743:20;18739:1;18728:9;18724:17;18717:47;18781:131;18907:4;18781:131;:::i;:::-;18773:139;;18500:419;;;:::o;18925:221::-;19065:34;19061:1;19053:6;19049:14;19042:58;19134:4;19129:2;19121:6;19117:15;19110:29;18925:221;:::o;19152:366::-;19294:3;19315:67;19379:2;19374:3;19315:67;:::i;:::-;19308:74;;19391:93;19480:3;19391:93;:::i;:::-;19509:2;19504:3;19500:12;19493:19;;19152:366;;;:::o;19524:419::-;19690:4;19728:2;19717:9;19713:18;19705:26;;19777:9;19771:4;19767:20;19763:1;19752:9;19748:17;19741:47;19805:131;19931:4;19805:131;:::i;:::-;19797:139;;19524:419;;;:::o;19949:225::-;20089:34;20085:1;20077:6;20073:14;20066:58;20158:8;20153:2;20145:6;20141:15;20134:33;19949:225;:::o;20180:366::-;20322:3;20343:67;20407:2;20402:3;20343:67;:::i;:::-;20336:74;;20419:93;20508:3;20419:93;:::i;:::-;20537:2;20532:3;20528:12;20521:19;;20180:366;;;:::o;20552:419::-;20718:4;20756:2;20745:9;20741:18;20733:26;;20805:9;20799:4;20795:20;20791:1;20780:9;20776:17;20769:47;20833:131;20959:4;20833:131;:::i;:::-;20825:139;;20552:419;;;:::o;20977:242::-;21117:34;21113:1;21105:6;21101:14;21094:58;21186:25;21181:2;21173:6;21169:15;21162:50;20977:242;:::o;21225:366::-;21367:3;21388:67;21452:2;21447:3;21388:67;:::i;:::-;21381:74;;21464:93;21553:3;21464:93;:::i;:::-;21582:2;21577:3;21573:12;21566:19;;21225:366;;;:::o;21597:419::-;21763:4;21801:2;21790:9;21786:18;21778:26;;21850:9;21844:4;21840:20;21836:1;21825:9;21821:17;21814:47;21878:131;22004:4;21878:131;:::i;:::-;21870:139;;21597:419;;;:::o;22022:143::-;22079:5;22110:6;22104:13;22095:22;;22126:33;22153:5;22126:33;:::i;:::-;22022:143;;;;:::o;22171:351::-;22241:6;22290:2;22278:9;22269:7;22265:23;22261:32;22258:119;;;22296:79;;:::i;:::-;22258:119;22416:1;22441:64;22497:7;22488:6;22477:9;22473:22;22441:64;:::i;:::-;22431:74;;22387:128;22171:351;;;;:::o;22528:332::-;22649:4;22687:2;22676:9;22672:18;22664:26;;22700:71;22768:1;22757:9;22753:17;22744:6;22700:71;:::i;:::-;22781:72;22849:2;22838:9;22834:18;22825:6;22781:72;:::i;:::-;22528:332;;;;;:::o;22866:137::-;22920:5;22951:6;22945:13;22936:22;;22967:30;22991:5;22967:30;:::i;:::-;22866:137;;;;:::o;23009:345::-;23076:6;23125:2;23113:9;23104:7;23100:23;23096:32;23093:119;;;23131:79;;:::i;:::-;23093:119;23251:1;23276:61;23329:7;23320:6;23309:9;23305:22;23276:61;:::i;:::-;23266:71;;23222:125;23009:345;;;;:::o;23360:223::-;23500:34;23496:1;23488:6;23484:14;23477:58;23569:6;23564:2;23556:6;23552:15;23545:31;23360:223;:::o;23589:366::-;23731:3;23752:67;23816:2;23811:3;23752:67;:::i;:::-;23745:74;;23828:93;23917:3;23828:93;:::i;:::-;23946:2;23941:3;23937:12;23930:19;;23589:366;;;:::o;23961:419::-;24127:4;24165:2;24154:9;24150:18;24142:26;;24214:9;24208:4;24204:20;24200:1;24189:9;24185:17;24178:47;24242:131;24368:4;24242:131;:::i;:::-;24234:139;;23961:419;;;:::o;24386:221::-;24526:34;24522:1;24514:6;24510:14;24503:58;24595:4;24590:2;24582:6;24578:15;24571:29;24386:221;:::o;24613:366::-;24755:3;24776:67;24840:2;24835:3;24776:67;:::i;:::-;24769:74;;24852:93;24941:3;24852:93;:::i;:::-;24970:2;24965:3;24961:12;24954:19;;24613:366;;;:::o;24985:419::-;25151:4;25189:2;25178:9;25174:18;25166:26;;25238:9;25232:4;25228:20;25224:1;25213:9;25209:17;25202:47;25266:131;25392:4;25266:131;:::i;:::-;25258:139;;24985:419;;;:::o;25410:224::-;25550:34;25546:1;25538:6;25534:14;25527:58;25619:7;25614:2;25606:6;25602:15;25595:32;25410:224;:::o;25640:366::-;25782:3;25803:67;25867:2;25862:3;25803:67;:::i;:::-;25796:74;;25879:93;25968:3;25879:93;:::i;:::-;25997:2;25992:3;25988:12;25981:19;;25640:366;;;:::o;26012:419::-;26178:4;26216:2;26205:9;26201:18;26193:26;;26265:9;26259:4;26255:20;26251:1;26240:9;26236:17;26229:47;26293:131;26419:4;26293:131;:::i;:::-;26285:139;;26012:419;;;:::o;26437:222::-;26577:34;26573:1;26565:6;26561:14;26554:58;26646:5;26641:2;26633:6;26629:15;26622:30;26437:222;:::o;26665:366::-;26807:3;26828:67;26892:2;26887:3;26828:67;:::i;:::-;26821:74;;26904:93;26993:3;26904:93;:::i;:::-;27022:2;27017:3;27013:12;27006:19;;26665:366;;;:::o;27037:419::-;27203:4;27241:2;27230:9;27226:18;27218:26;;27290:9;27284:4;27280:20;27276:1;27265:9;27261:17;27254:47;27318:131;27444:4;27318:131;:::i;:::-;27310:139;;27037:419;;;:::o;27462:410::-;27502:7;27525:20;27543:1;27525:20;:::i;:::-;27520:25;;27559:20;27577:1;27559:20;:::i;:::-;27554:25;;27614:1;27611;27607:9;27636:30;27654:11;27636:30;:::i;:::-;27625:41;;27815:1;27806:7;27802:15;27799:1;27796:22;27776:1;27769:9;27749:83;27726:139;;27845:18;;:::i;:::-;27726:139;27510:362;27462:410;;;;:::o;27878:194::-;27918:4;27938:20;27956:1;27938:20;:::i;:::-;27933:25;;27972:20;27990:1;27972:20;:::i;:::-;27967:25;;28016:1;28013;28009:9;28001:17;;28040:1;28034:4;28031:11;28028:37;;;28045:18;;:::i;:::-;28028:37;27878:194;;;;:::o;28078:179::-;28218:31;28214:1;28206:6;28202:14;28195:55;28078:179;:::o;28263:366::-;28405:3;28426:67;28490:2;28485:3;28426:67;:::i;:::-;28419:74;;28502:93;28591:3;28502:93;:::i;:::-;28620:2;28615:3;28611:12;28604:19;;28263:366;;;:::o;28635:419::-;28801:4;28839:2;28828:9;28824:18;28816:26;;28888:9;28882:4;28878:20;28874:1;28863:9;28859:17;28852:47;28916:131;29042:4;28916:131;:::i;:::-;28908:139;;28635:419;;;:::o;29060:147::-;29161:11;29198:3;29183:18;;29060:147;;;;:::o;29213:114::-;;:::o;29333:398::-;29492:3;29513:83;29594:1;29589:3;29513:83;:::i;:::-;29506:90;;29605:93;29694:3;29605:93;:::i;:::-;29723:1;29718:3;29714:11;29707:18;;29333:398;;;:::o;29737:379::-;29921:3;29943:147;30086:3;29943:147;:::i;:::-;29936:154;;30107:3;30100:10;;29737:379;;;:::o;30122:245::-;30262:34;30258:1;30250:6;30246:14;30239:58;30331:28;30326:2;30318:6;30314:15;30307:53;30122:245;:::o;30373:366::-;30515:3;30536:67;30600:2;30595:3;30536:67;:::i;:::-;30529:74;;30612:93;30701:3;30612:93;:::i;:::-;30730:2;30725:3;30721:12;30714:19;;30373:366;;;:::o;30745:419::-;30911:4;30949:2;30938:9;30934:18;30926:26;;30998:9;30992:4;30988:20;30984:1;30973:9;30969:17;30962:47;31026:131;31152:4;31026:131;:::i;:::-;31018:139;;30745:419;;;:::o;31170:225::-;31310:34;31306:1;31298:6;31294:14;31287:58;31379:8;31374:2;31366:6;31362:15;31355:33;31170:225;:::o;31401:366::-;31543:3;31564:67;31628:2;31623:3;31564:67;:::i;:::-;31557:74;;31640:93;31729:3;31640:93;:::i;:::-;31758:2;31753:3;31749:12;31742:19;;31401:366;;;:::o;31773:419::-;31939:4;31977:2;31966:9;31962:18;31954:26;;32026:9;32020:4;32016:20;32012:1;32001:9;31997:17;31990:47;32054:131;32180:4;32054:131;:::i;:::-;32046:139;;31773:419;;;:::o;32198:180::-;32246:77;32243:1;32236:88;32343:4;32340:1;32333:15;32367:4;32364:1;32357:15;32384:180;32432:77;32429:1;32422:88;32529:4;32526:1;32519:15;32553:4;32550:1;32543:15;32570:143;32627:5;32658:6;32652:13;32643:22;;32674:33;32701:5;32674:33;:::i;:::-;32570:143;;;;:::o;32719:351::-;32789:6;32838:2;32826:9;32817:7;32813:23;32809:32;32806:119;;;32844:79;;:::i;:::-;32806:119;32964:1;32989:64;33045:7;33036:6;33025:9;33021:22;32989:64;:::i;:::-;32979:74;;32935:128;32719:351;;;;:::o;33076:85::-;33121:7;33150:5;33139:16;;33076:85;;;:::o;33167:158::-;33225:9;33258:61;33276:42;33285:32;33311:5;33285:32;:::i;:::-;33276:42;:::i;:::-;33258:61;:::i;:::-;33245:74;;33167:158;;;:::o;33331:147::-;33426:45;33465:5;33426:45;:::i;:::-;33421:3;33414:58;33331:147;;:::o;33484:114::-;33551:6;33585:5;33579:12;33569:22;;33484:114;;;:::o;33604:184::-;33703:11;33737:6;33732:3;33725:19;33777:4;33772:3;33768:14;33753:29;;33604:184;;;;:::o;33794:132::-;33861:4;33884:3;33876:11;;33914:4;33909:3;33905:14;33897:22;;33794:132;;;:::o;33932:108::-;34009:24;34027:5;34009:24;:::i;:::-;34004:3;33997:37;33932:108;;:::o;34046:179::-;34115:10;34136:46;34178:3;34170:6;34136:46;:::i;:::-;34214:4;34209:3;34205:14;34191:28;;34046:179;;;;:::o;34231:113::-;34301:4;34333;34328:3;34324:14;34316:22;;34231:113;;;:::o;34380:732::-;34499:3;34528:54;34576:5;34528:54;:::i;:::-;34598:86;34677:6;34672:3;34598:86;:::i;:::-;34591:93;;34708:56;34758:5;34708:56;:::i;:::-;34787:7;34818:1;34803:284;34828:6;34825:1;34822:13;34803:284;;;34904:6;34898:13;34931:63;34990:3;34975:13;34931:63;:::i;:::-;34924:70;;35017:60;35070:6;35017:60;:::i;:::-;35007:70;;34863:224;34850:1;34847;34843:9;34838:14;;34803:284;;;34807:14;35103:3;35096:10;;34504:608;;;34380:732;;;;:::o;35118:831::-;35381:4;35419:3;35408:9;35404:19;35396:27;;35433:71;35501:1;35490:9;35486:17;35477:6;35433:71;:::i;:::-;35514:80;35590:2;35579:9;35575:18;35566:6;35514:80;:::i;:::-;35641:9;35635:4;35631:20;35626:2;35615:9;35611:18;35604:48;35669:108;35772:4;35763:6;35669:108;:::i;:::-;35661:116;;35787:72;35855:2;35844:9;35840:18;35831:6;35787:72;:::i;:::-;35869:73;35937:3;35926:9;35922:19;35913:6;35869:73;:::i;:::-;35118:831;;;;;;;;:::o;35955:332::-;36076:4;36114:2;36103:9;36099:18;36091:26;;36127:71;36195:1;36184:9;36180:17;36171:6;36127:71;:::i;:::-;36208:72;36276:2;36265:9;36261:18;36252:6;36208:72;:::i;:::-;35955:332;;;;;:::o

Swarm Source

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