ETH Price: $2,614.89 (-2.26%)

Token

DTUBE (DTUBE)
 

Overview

Max Total Supply

1,000,000,000 DTUBE

Holders

112

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0 DTUBE

Value
$0.00
0x64b4be62f62d4ae006984c23b18ebe2099de1ba7
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:
DTUBE

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity Multiple files format)

File 2 of 4: main.sol
/*
TG: https://t.me/Dtube_ETH
Website: https://dtube.ai
Twitter: https://x.com/DTUBE_ETH
*/
// SPDX-License-Identifier: MIT
pragma solidity 0.8.20;

import "./IERC20.sol";
import "./ownable.sol";
import "./UniswapV2.sol";

contract DTUBE is Context, IERC20, Ownable {

    string private constant _name = "DTUBE";
    string private constant _symbol = "DTUBE";
    uint8 private constant _decimals = 18;
    uint256 private constant _totalSupply = 1000000000 * 10**_decimals;

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

    uint256 private constant onePercent = (_totalSupply)/100;
    uint256 private constant minimumSwapAmount = onePercent/20;

    uint256 private maxSwap = onePercent / 2;

    uint256 public MaxTX = onePercent;
    uint256 public MaxWallet = onePercent;

    uint256 private InitialBlockNo;

    uint256 public buyTax = 20;
    uint256 public sellTax = 25;

    IUniswapV2Router02 private uniswapV2Router;
    address public uniswapV2Pair;
    address public DevWallet;
    address public OperationWallet;
    address public MarketingWallet;

    bool private launch = false;

    constructor() {
        DevWallet  = 0x2bA29948203C1cA9Bf5e8588c533E4f4a17926F7; //58
        OperationWallet = 0x302e42859213cf05dAAcd7eac454642F37e35155; //25
        MarketingWallet = 0x302e42859213cf05dAAcd7eac454642F37e35155; //5

        _balance[msg.sender] = _totalSupply;

        _ExcludedWallets[msg.sender] = 1;
        _ExcludedWallets[address(this)] = 1;

        emit Transfer(address(0), _msgSender(), _totalSupply);
    }

    function name() public pure returns (string memory) {
        return _name;
    }

    function symbol() public pure returns (string memory) {
        return _symbol;
    }

    function decimals() public pure returns (uint8) {
        return _decimals;
    }

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

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

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if(currentAllowance != type(uint256).max) { 
            require(
                currentAllowance >= amount,
                "ERC20: transfer amount exceeds allowance"
            );
            unchecked {
                _approve(sender, _msgSender(), currentAllowance - amount);
            }
        }
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        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 startTrading() external onlyOwner {
        require(!launch,"trading is already open");
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        _approve(address(this), address(uniswapV2Router), _totalSupply);
        
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        launch = true;
        InitialBlockNo = block.number;
    }

    function _ExcludedWallet(address wallet, uint256 value) external onlyOwner {
        _ExcludedWallets[wallet] = value;
    }

    function ChangeTaxWallet(address NewDevWallet, address NewOperationWallet, address NewMarketWallet) external onlyOwner {
        DevWallet = NewDevWallet;
        OperationWallet = NewOperationWallet;
        MarketingWallet = NewMarketWallet;
    }

    function RemoveLimits() external onlyOwner {
        MaxTX = _totalSupply;
        MaxWallet = _totalSupply;
    }

    function EditDTTaxes(uint256 newBuyTax, uint256 newSellTax) external onlyOwner {
        require(newBuyTax <= 99 && newSellTax <= 99, "Tax cannot be increased");
        buyTax = newBuyTax;
        sellTax = newSellTax;
    }

    function ChangeDTSettings(uint256 newMaxWalletX10, uint256 newMaxTrxX10, uint256 newMaxSwapX10) external onlyOwner {
        require(newMaxSwapX10 <= 30, "can't be more than 3%");

        MaxWallet = newMaxWalletX10*(onePercent/10); //type 10 if 1%
        MaxTX = newMaxTrxX10*(onePercent/10);
        maxSwap = newMaxSwapX10*(onePercent/10);
    }

    function _tokenTransfer(address from, address to, uint256 amount, uint256 _tax) private {
        uint256 taxTokens = (amount * _tax) / 100;
        uint256 transferAmount = amount - taxTokens;

        _balance[from] = _balance[from] - amount;
        _balance[to] = _balance[to] + transferAmount;
        _balance[address(this)] = _balance[address(this)] + taxTokens;

        emit Transfer(from, to, transferAmount);
    }

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(amount > 0, "ERC20: no tokens transferred");
        uint256 _tax = 0;
        if (_ExcludedWallets[from] == 0 && _ExcludedWallets[to] == 0)
        {
            require(launch, "Trading not open");
            require(amount <= MaxTX, "MaxTx Enabled at launch");
            if (to != uniswapV2Pair && to != address(0xdead)) require(balanceOf(to) + amount <= MaxWallet, "MaxWallet Enabled at launch");
            if (block.number < InitialBlockNo + 3) {
                _tax = (from == uniswapV2Pair) ? 20 : 25;
            } else {
                if (from == uniswapV2Pair) {
                    _tax = buyTax;
                } else if (to == uniswapV2Pair) {
                    uint256 tokensToSwap = balanceOf(address(this));
                    if (tokensToSwap > minimumSwapAmount) { 
                        uint256 mxSw = maxSwap;
                        if (tokensToSwap > amount) tokensToSwap = amount;
                        if (tokensToSwap > mxSw) tokensToSwap = mxSw;
                        swapTokensForEth(tokensToSwap);
                    }
                    _tax = sellTax;
                }
            }
        }
        _tokenTransfer(from, to, amount, _tax);
    }

    function RescueETH() external onlyOwner {
        bool success;
        (success, ) = owner().call{value: address(this).balance}("");
    } 

    function ManualSwap(uint256 percent) external onlyOwner {
        uint256 contractBalance = balanceOf(address(this));
        uint256 amtswap = (percent*contractBalance)/100;
        swapTokensForEth(amtswap);
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
        bool success;

        uint256 devtax = address(this).balance *50/100;
        uint256 operationtax = address(this).balance *25/100;
        uint256 markettax = address(this).balance *25/100;

        (success, ) = DevWallet.call{value: devtax}("");
        (success, ) = OperationWallet.call{value: operationtax}("");
        (success, ) =  MarketingWallet.call{value: markettax}("");
    }
    receive() external payable {}
}

File 1 of 4: IERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.20;

/**
 * @dev Interface of the ERC-20 standard as defined in the ERC.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);

    /**
     * @dev Returns the value of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

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

    /**
     * @dev Moves a `value` amount of tokens from the caller's account to `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, uint256 value) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

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

    /**
     * @dev Moves a `value` amount of tokens from `from` to `to` using the
     * allowance mechanism. `value` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address from, address to, uint256 value) external returns (bool);
}

File 3 of 4: ownable.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.20;

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

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 transferOwnership(address newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }

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

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

File 4 of 4: UniswapV2.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.20;

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

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

    function factory() external pure returns (address);
    function WETH() external pure returns (address);

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint256","name":"newMaxWalletX10","type":"uint256"},{"internalType":"uint256","name":"newMaxTrxX10","type":"uint256"},{"internalType":"uint256","name":"newMaxSwapX10","type":"uint256"}],"name":"ChangeDTSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"NewDevWallet","type":"address"},{"internalType":"address","name":"NewOperationWallet","type":"address"},{"internalType":"address","name":"NewMarketWallet","type":"address"}],"name":"ChangeTaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"DevWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyTax","type":"uint256"},{"internalType":"uint256","name":"newSellTax","type":"uint256"}],"name":"EditDTTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"ManualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"MarketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MaxTX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MaxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"OperationWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RemoveLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"RescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"_ExcludedWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600260646012600a6200001891906200059f565b633b9aca00620000299190620005ef565b62000035919062000666565b62000041919062000666565b60045560646012600a6200005691906200059f565b633b9aca00620000679190620005ef565b62000073919062000666565b60055560646012600a6200008891906200059f565b633b9aca00620000999190620005ef565b620000a5919062000666565b600655601460085560196009555f600e60146101000a81548160ff021916908315150217905550348015620000d8575f80fd5b505f620000ea6200040660201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350732ba29948203c1ca9bf5e8588c533e4f4a17926f7600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073302e42859213cf05daacd7eac454642f37e35155600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073302e42859213cf05daacd7eac454642f37e35155600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a6200029291906200059f565b633b9aca00620002a39190620005ef565b60015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506200037a6200040660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a620003d891906200059f565b633b9aca00620003e99190620005ef565b604051620003f89190620006ae565b60405180910390a3620006c9565b5f33905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000497578086048111156200046f576200046e6200040d565b5b60018516156200047f5780820291505b80810290506200048f856200043a565b94506200044f565b94509492505050565b5f82620004b1576001905062000583565b81620004c0575f905062000583565b8160018114620004d95760028114620004e4576200051a565b600191505062000583565b60ff841115620004f957620004f86200040d565b5b8360020a9150848211156200051357620005126200040d565b5b5062000583565b5060208310610133831016604e8410600b8410161715620005545782820a9050838111156200054e576200054d6200040d565b5b62000583565b62000563848484600162000446565b925090508184048111156200057d576200057c6200040d565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f620005ab826200058a565b9150620005b88362000593565b9250620005e77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620004a0565b905092915050565b5f620005fb826200058a565b915062000608836200058a565b925082820262000618816200058a565b915082820484148315176200063257620006316200040d565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000672826200058a565b91506200067f836200058a565b92508262000692576200069162000639565b5b828204905092915050565b620006a8816200058a565b82525050565b5f602082019050620006c35f8301846200069d565b92915050565b6136a780620006d75f395ff3fe6080604052600436106101ba575f3560e01c806356ca8a41116100eb578063b115e4df11610089578063dd62ed3e11610063578063dd62ed3e146105a7578063e6fb0b35146105e3578063e9a327a21461060b578063f2fde38b14610633576101c1565b8063b115e4df14610529578063cc1776d314610553578063daaf85011461057d576101c1565b8063715018a6116100c5578063715018a6146104835780638da5cb5b1461049957806395d89b41146104c3578063a9059cbb146104ed576101c1565b806356ca8a411461040957806356cd40e71461043157806370a0823114610447576101c1565b80632598cdb2116101585780633297acb4116101325780633297acb41461036157806349bd5a5e1461038b5780634a4a9a68146103b55780634f7041a5146103df576101c1565b80632598cdb2146102f7578063293230b814610321578063313ce56714610337576101c1565b8063148798fe11610194578063148798fe1461025357806318160ddd1461026957806318a295341461029357806323b872dd146102bb576101c1565b806306fdde03146101c5578063092db639146101ef578063095ea7b314610217576101c1565b366101c157005b5f80fd5b3480156101d0575f80fd5b506101d961065b565b6040516101e691906126c8565b60405180910390f35b3480156101fa575f80fd5b506102156004803603810190610210919061271f565b610698565b005b348015610222575f80fd5b5061023d600480360381019061023891906127c9565b610847565b60405161024a9190612821565b60405180910390f35b34801561025e575f80fd5b50610267610864565b005b348015610274575f80fd5b5061027d61096c565b60405161028a9190612849565b60405180910390f35b34801561029e575f80fd5b506102b960048036038101906102b49190612862565b61098f565b005b3480156102c6575f80fd5b506102e160048036038101906102dc91906128b2565b610ae8565b6040516102ee9190612821565b60405180910390f35b348015610302575f80fd5b5061030b610c02565b6040516103189190612911565b60405180910390f35b34801561032c575f80fd5b50610335610c27565b005b348015610342575f80fd5b5061034b611135565b6040516103589190612945565b60405180910390f35b34801561036c575f80fd5b5061037561113d565b6040516103829190612849565b60405180910390f35b348015610396575f80fd5b5061039f611143565b6040516103ac9190612911565b60405180910390f35b3480156103c0575f80fd5b506103c9611168565b6040516103d69190612849565b60405180910390f35b3480156103ea575f80fd5b506103f361116e565b6040516104009190612849565b60405180910390f35b348015610414575f80fd5b5061042f600480360381019061042a919061295e565b611174565b005b34801561043c575f80fd5b5061044561123d565b005b348015610452575f80fd5b5061046d60048036038101906104689190612989565b611319565b60405161047a9190612849565b60405180910390f35b34801561048e575f80fd5b5061049761135f565b005b3480156104a4575f80fd5b506104ad6114ad565b6040516104ba9190612911565b60405180910390f35b3480156104ce575f80fd5b506104d76114d4565b6040516104e491906126c8565b60405180910390f35b3480156104f8575f80fd5b50610513600480360381019061050e91906127c9565b611511565b6040516105209190612821565b60405180910390f35b348015610534575f80fd5b5061053d61152e565b60405161054a9190612911565b60405180910390f35b34801561055e575f80fd5b50610567611553565b6040516105749190612849565b60405180910390f35b348015610588575f80fd5b50610591611559565b60405161059e9190612911565b60405180910390f35b3480156105b2575f80fd5b506105cd60048036038101906105c891906129b4565b61157e565b6040516105da9190612849565b60405180910390f35b3480156105ee575f80fd5b50610609600480360381019061060491906127c9565b611600565b005b348015610616575f80fd5b50610631600480360381019061062c91906129f2565b6116da565b005b34801561063e575f80fd5b5061065960048036038101906106549190612989565b6117d1565b005b60606040518060400160405280600581526020017f4454554245000000000000000000000000000000000000000000000000000000815250905090565b6106a0611871565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461072c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072390612a7a565b60405180910390fd5b601e811115610770576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076790612ae2565b60405180910390fd5b600a60646012600a6107829190612c5c565b633b9aca006107919190612ca6565b61079b9190612d14565b6107a59190612d14565b836107b09190612ca6565b600681905550600a60646012600a6107c89190612c5c565b633b9aca006107d79190612ca6565b6107e19190612d14565b6107eb9190612d14565b826107f69190612ca6565b600581905550600a60646012600a61080e9190612c5c565b633b9aca0061081d9190612ca6565b6108279190612d14565b6108319190612d14565b8161083c9190612ca6565b600481905550505050565b5f61085a610853611871565b8484611878565b6001905092915050565b61086c611871565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ef90612a7a565b60405180910390fd5b5f6109016114ad565b73ffffffffffffffffffffffffffffffffffffffff164760405161092490612d71565b5f6040518083038185875af1925050503d805f811461095e576040519150601f19603f3d011682016040523d82523d5f602084013e610963565b606091505b50508091505050565b5f6012600a61097b9190612c5c565b633b9aca0061098a9190612ca6565b905090565b610997611871565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1a90612a7a565b60405180910390fd5b82600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b5f610af4848484611a3b565b5f60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610b3b611871565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610bf65782811015610be1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd890612df5565b60405180910390fd5b610bf585610bed611871565b858403611878565b5b60019150509392505050565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610c2f611871565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb290612a7a565b60405180910390fd5b600e60149054906101000a900460ff1615610d0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0290612e5d565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dc9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ded9190612e8f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e73573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e979190612e8f565b6040518363ffffffff1660e01b8152600401610eb4929190612eba565b6020604051808303815f875af1158015610ed0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ef49190612e8f565b600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610f7b30600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166012600a610f679190612c5c565b633b9aca00610f769190612ca6565b611878565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610fc330611319565b5f80610fcd6114ad565b426040518863ffffffff1660e01b8152600401610fef96959493929190612f23565b60606040518083038185885af115801561100b573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906110309190612f96565b505050600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016110d0929190612fe6565b6020604051808303815f875af11580156110ec573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111109190613037565b506001600e60146101000a81548160ff02191690831515021790555043600781905550565b5f6012905090565b60055481565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60065481565b60085481565b61117c611871565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611208576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ff90612a7a565b60405180910390fd5b5f61121230611319565b90505f606482846112239190612ca6565b61122d9190612d14565b905061123881611eb3565b505050565b611245611871565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c890612a7a565b60405180910390fd5b6012600a6112df9190612c5c565b633b9aca006112ee9190612ca6565b6005819055506012600a6113029190612c5c565b633b9aca006113119190612ca6565b600681905550565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b611367611871565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ea90612a7a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f4454554245000000000000000000000000000000000000000000000000000000815250905090565b5f61152461151d611871565b8484611a3b565b6001905092915050565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60095481565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611608611871565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611694576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168b90612a7a565b60405180910390fd5b8060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505050565b6116e2611871565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461176e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176590612a7a565b60405180910390fd5b60638211158015611780575060638111155b6117bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b6906130ac565b60405180910390fd5b81600881905550806009819055505050565b6117d9611871565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611865576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185c90612a7a565b60405180910390fd5b61186e816122e0565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118dd9061313a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611954576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194b906131c8565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611a2e9190612849565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611aa9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa090613256565b60405180910390fd5b5f8111611aeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae2906132be565b60405180910390fd5b5f8060035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054148015611b7457505f60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054145b15611ea157600e60149054906101000a900460ff16611bc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbf90613326565b60405180910390fd5b600554821115611c0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c049061338e565b60405180910390fd5b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611c98575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611cf65760065482611caa85611319565b611cb491906133ac565b1115611cf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cec90613429565b60405180910390fd5b5b6003600754611d0591906133ac565b431015611d7457600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611d67576019611d6a565b60145b60ff169050611ea0565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611dd2576008549050611e9f565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e9e575f611e3030611319565b9050601460646012600a611e449190612c5c565b633b9aca00611e539190612ca6565b611e5d9190612d14565b611e679190612d14565b811115611e97575f600454905083821115611e80578391505b80821115611e8c578091505b611e9582611eb3565b505b6009549150505b5b5b5b611ead84848484612409565b50505050565b5f600267ffffffffffffffff811115611ecf57611ece613447565b5b604051908082528060200260200182016040528015611efd5781602001602082028036833780820191505090505b50905030815f81518110611f1457611f13613474565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fb8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fdc9190612e8f565b81600181518110611ff057611fef613474565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061205630600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611878565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016120b8959493929190613558565b5f604051808303815f87803b1580156120cf575f80fd5b505af11580156120e1573d5f803e3d5ffd5b505050505f8060646032476120f69190612ca6565b6121009190612d14565b90505f60646019476121129190612ca6565b61211c9190612d14565b90505f606460194761212e9190612ca6565b6121389190612d14565b9050600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360405161217f90612d71565b5f6040518083038185875af1925050503d805f81146121b9576040519150601f19603f3d011682016040523d82523d5f602084013e6121be565b606091505b505080945050600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161220990612d71565b5f6040518083038185875af1925050503d805f8114612243576040519150601f19603f3d011682016040523d82523d5f602084013e612248565b606091505b505080945050600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161229390612d71565b5f6040518083038185875af1925050503d805f81146122cd576040519150601f19603f3d011682016040523d82523d5f602084013e6122d2565b606091505b505080945050505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361234e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234590613620565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f606482846124189190612ca6565b6124229190612d14565b90505f8184612431919061363e565b90508360015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461247c919061363e565b60015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508060015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461250691906133ac565b60015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461259091906133ac565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161262e9190612849565b60405180910390a3505050505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561267557808201518184015260208101905061265a565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61269a8261263e565b6126a48185612648565b93506126b4818560208601612658565b6126bd81612680565b840191505092915050565b5f6020820190508181035f8301526126e08184612690565b905092915050565b5f80fd5b5f819050919050565b6126fe816126ec565b8114612708575f80fd5b50565b5f81359050612719816126f5565b92915050565b5f805f60608486031215612736576127356126e8565b5b5f6127438682870161270b565b93505060206127548682870161270b565b92505060406127658682870161270b565b9150509250925092565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6127988261276f565b9050919050565b6127a88161278e565b81146127b2575f80fd5b50565b5f813590506127c38161279f565b92915050565b5f80604083850312156127df576127de6126e8565b5b5f6127ec858286016127b5565b92505060206127fd8582860161270b565b9150509250929050565b5f8115159050919050565b61281b81612807565b82525050565b5f6020820190506128345f830184612812565b92915050565b612843816126ec565b82525050565b5f60208201905061285c5f83018461283a565b92915050565b5f805f60608486031215612879576128786126e8565b5b5f612886868287016127b5565b9350506020612897868287016127b5565b92505060406128a8868287016127b5565b9150509250925092565b5f805f606084860312156128c9576128c86126e8565b5b5f6128d6868287016127b5565b93505060206128e7868287016127b5565b92505060406128f88682870161270b565b9150509250925092565b61290b8161278e565b82525050565b5f6020820190506129245f830184612902565b92915050565b5f60ff82169050919050565b61293f8161292a565b82525050565b5f6020820190506129585f830184612936565b92915050565b5f60208284031215612973576129726126e8565b5b5f6129808482850161270b565b91505092915050565b5f6020828403121561299e5761299d6126e8565b5b5f6129ab848285016127b5565b91505092915050565b5f80604083850312156129ca576129c96126e8565b5b5f6129d7858286016127b5565b92505060206129e8858286016127b5565b9150509250929050565b5f8060408385031215612a0857612a076126e8565b5b5f612a158582860161270b565b9250506020612a268582860161270b565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612a64602083612648565b9150612a6f82612a30565b602082019050919050565b5f6020820190508181035f830152612a9181612a58565b9050919050565b7f63616e2774206265206d6f7265207468616e20332500000000000000000000005f82015250565b5f612acc601583612648565b9150612ad782612a98565b602082019050919050565b5f6020820190508181035f830152612af981612ac0565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612b8257808604811115612b5e57612b5d612b00565b5b6001851615612b6d5780820291505b8081029050612b7b85612b2d565b9450612b42565b94509492505050565b5f82612b9a5760019050612c55565b81612ba7575f9050612c55565b8160018114612bbd5760028114612bc757612bf6565b6001915050612c55565b60ff841115612bd957612bd8612b00565b5b8360020a915084821115612bf057612bef612b00565b5b50612c55565b5060208310610133831016604e8410600b8410161715612c2b5782820a905083811115612c2657612c25612b00565b5b612c55565b612c388484846001612b39565b92509050818404811115612c4f57612c4e612b00565b5b81810290505b9392505050565b5f612c66826126ec565b9150612c718361292a565b9250612c9e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612b8b565b905092915050565b5f612cb0826126ec565b9150612cbb836126ec565b9250828202612cc9816126ec565b91508282048414831517612ce057612cdf612b00565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612d1e826126ec565b9150612d29836126ec565b925082612d3957612d38612ce7565b5b828204905092915050565b5f81905092915050565b50565b5f612d5c5f83612d44565b9150612d6782612d4e565b5f82019050919050565b5f612d7b82612d51565b9150819050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f612ddf602883612648565b9150612dea82612d85565b604082019050919050565b5f6020820190508181035f830152612e0c81612dd3565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612e47601783612648565b9150612e5282612e13565b602082019050919050565b5f6020820190508181035f830152612e7481612e3b565b9050919050565b5f81519050612e898161279f565b92915050565b5f60208284031215612ea457612ea36126e8565b5b5f612eb184828501612e7b565b91505092915050565b5f604082019050612ecd5f830185612902565b612eda6020830184612902565b9392505050565b5f819050919050565b5f819050919050565b5f612f0d612f08612f0384612ee1565b612eea565b6126ec565b9050919050565b612f1d81612ef3565b82525050565b5f60c082019050612f365f830189612902565b612f43602083018861283a565b612f506040830187612f14565b612f5d6060830186612f14565b612f6a6080830185612902565b612f7760a083018461283a565b979650505050505050565b5f81519050612f90816126f5565b92915050565b5f805f60608486031215612fad57612fac6126e8565b5b5f612fba86828701612f82565b9350506020612fcb86828701612f82565b9250506040612fdc86828701612f82565b9150509250925092565b5f604082019050612ff95f830185612902565b613006602083018461283a565b9392505050565b61301681612807565b8114613020575f80fd5b50565b5f815190506130318161300d565b92915050565b5f6020828403121561304c5761304b6126e8565b5b5f61305984828501613023565b91505092915050565b7f5461782063616e6e6f7420626520696e637265617365640000000000000000005f82015250565b5f613096601783612648565b91506130a182613062565b602082019050919050565b5f6020820190508181035f8301526130c38161308a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613124602483612648565b915061312f826130ca565b604082019050919050565b5f6020820190508181035f83015261315181613118565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6131b2602283612648565b91506131bd82613158565b604082019050919050565b5f6020820190508181035f8301526131df816131a6565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613240602583612648565b915061324b826131e6565b604082019050919050565b5f6020820190508181035f83015261326d81613234565b9050919050565b7f45524332303a206e6f20746f6b656e73207472616e73666572726564000000005f82015250565b5f6132a8601c83612648565b91506132b382613274565b602082019050919050565b5f6020820190508181035f8301526132d58161329c565b9050919050565b7f54726164696e67206e6f74206f70656e000000000000000000000000000000005f82015250565b5f613310601083612648565b915061331b826132dc565b602082019050919050565b5f6020820190508181035f83015261333d81613304565b9050919050565b7f4d6178547820456e61626c6564206174206c61756e63680000000000000000005f82015250565b5f613378601783612648565b915061338382613344565b602082019050919050565b5f6020820190508181035f8301526133a58161336c565b9050919050565b5f6133b6826126ec565b91506133c1836126ec565b92508282019050808211156133d9576133d8612b00565b5b92915050565b7f4d617857616c6c657420456e61626c6564206174206c61756e636800000000005f82015250565b5f613413601b83612648565b915061341e826133df565b602082019050919050565b5f6020820190508181035f83015261344081613407565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6134d38161278e565b82525050565b5f6134e483836134ca565b60208301905092915050565b5f602082019050919050565b5f613506826134a1565b61351081856134ab565b935061351b836134bb565b805f5b8381101561354b57815161353288826134d9565b975061353d836134f0565b92505060018101905061351e565b5085935050505092915050565b5f60a08201905061356b5f83018861283a565b6135786020830187612f14565b818103604083015261358a81866134fc565b90506135996060830185612902565b6135a6608083018461283a565b9695505050505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61360a602683612648565b9150613615826135b0565b604082019050919050565b5f6020820190508181035f830152613637816135fe565b9050919050565b5f613648826126ec565b9150613653836126ec565b925082820390508181111561366b5761366a612b00565b5b9291505056fea2646970667358221220445fcd24d3ff0f762a25a14a1c0efb86f04963e7e8e639caf8dde0cd88f8e18564736f6c63430008140033

Deployed Bytecode

0x6080604052600436106101ba575f3560e01c806356ca8a41116100eb578063b115e4df11610089578063dd62ed3e11610063578063dd62ed3e146105a7578063e6fb0b35146105e3578063e9a327a21461060b578063f2fde38b14610633576101c1565b8063b115e4df14610529578063cc1776d314610553578063daaf85011461057d576101c1565b8063715018a6116100c5578063715018a6146104835780638da5cb5b1461049957806395d89b41146104c3578063a9059cbb146104ed576101c1565b806356ca8a411461040957806356cd40e71461043157806370a0823114610447576101c1565b80632598cdb2116101585780633297acb4116101325780633297acb41461036157806349bd5a5e1461038b5780634a4a9a68146103b55780634f7041a5146103df576101c1565b80632598cdb2146102f7578063293230b814610321578063313ce56714610337576101c1565b8063148798fe11610194578063148798fe1461025357806318160ddd1461026957806318a295341461029357806323b872dd146102bb576101c1565b806306fdde03146101c5578063092db639146101ef578063095ea7b314610217576101c1565b366101c157005b5f80fd5b3480156101d0575f80fd5b506101d961065b565b6040516101e691906126c8565b60405180910390f35b3480156101fa575f80fd5b506102156004803603810190610210919061271f565b610698565b005b348015610222575f80fd5b5061023d600480360381019061023891906127c9565b610847565b60405161024a9190612821565b60405180910390f35b34801561025e575f80fd5b50610267610864565b005b348015610274575f80fd5b5061027d61096c565b60405161028a9190612849565b60405180910390f35b34801561029e575f80fd5b506102b960048036038101906102b49190612862565b61098f565b005b3480156102c6575f80fd5b506102e160048036038101906102dc91906128b2565b610ae8565b6040516102ee9190612821565b60405180910390f35b348015610302575f80fd5b5061030b610c02565b6040516103189190612911565b60405180910390f35b34801561032c575f80fd5b50610335610c27565b005b348015610342575f80fd5b5061034b611135565b6040516103589190612945565b60405180910390f35b34801561036c575f80fd5b5061037561113d565b6040516103829190612849565b60405180910390f35b348015610396575f80fd5b5061039f611143565b6040516103ac9190612911565b60405180910390f35b3480156103c0575f80fd5b506103c9611168565b6040516103d69190612849565b60405180910390f35b3480156103ea575f80fd5b506103f361116e565b6040516104009190612849565b60405180910390f35b348015610414575f80fd5b5061042f600480360381019061042a919061295e565b611174565b005b34801561043c575f80fd5b5061044561123d565b005b348015610452575f80fd5b5061046d60048036038101906104689190612989565b611319565b60405161047a9190612849565b60405180910390f35b34801561048e575f80fd5b5061049761135f565b005b3480156104a4575f80fd5b506104ad6114ad565b6040516104ba9190612911565b60405180910390f35b3480156104ce575f80fd5b506104d76114d4565b6040516104e491906126c8565b60405180910390f35b3480156104f8575f80fd5b50610513600480360381019061050e91906127c9565b611511565b6040516105209190612821565b60405180910390f35b348015610534575f80fd5b5061053d61152e565b60405161054a9190612911565b60405180910390f35b34801561055e575f80fd5b50610567611553565b6040516105749190612849565b60405180910390f35b348015610588575f80fd5b50610591611559565b60405161059e9190612911565b60405180910390f35b3480156105b2575f80fd5b506105cd60048036038101906105c891906129b4565b61157e565b6040516105da9190612849565b60405180910390f35b3480156105ee575f80fd5b50610609600480360381019061060491906127c9565b611600565b005b348015610616575f80fd5b50610631600480360381019061062c91906129f2565b6116da565b005b34801561063e575f80fd5b5061065960048036038101906106549190612989565b6117d1565b005b60606040518060400160405280600581526020017f4454554245000000000000000000000000000000000000000000000000000000815250905090565b6106a0611871565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461072c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072390612a7a565b60405180910390fd5b601e811115610770576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076790612ae2565b60405180910390fd5b600a60646012600a6107829190612c5c565b633b9aca006107919190612ca6565b61079b9190612d14565b6107a59190612d14565b836107b09190612ca6565b600681905550600a60646012600a6107c89190612c5c565b633b9aca006107d79190612ca6565b6107e19190612d14565b6107eb9190612d14565b826107f69190612ca6565b600581905550600a60646012600a61080e9190612c5c565b633b9aca0061081d9190612ca6565b6108279190612d14565b6108319190612d14565b8161083c9190612ca6565b600481905550505050565b5f61085a610853611871565b8484611878565b6001905092915050565b61086c611871565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ef90612a7a565b60405180910390fd5b5f6109016114ad565b73ffffffffffffffffffffffffffffffffffffffff164760405161092490612d71565b5f6040518083038185875af1925050503d805f811461095e576040519150601f19603f3d011682016040523d82523d5f602084013e610963565b606091505b50508091505050565b5f6012600a61097b9190612c5c565b633b9aca0061098a9190612ca6565b905090565b610997611871565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1a90612a7a565b60405180910390fd5b82600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b5f610af4848484611a3b565b5f60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610b3b611871565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610bf65782811015610be1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd890612df5565b60405180910390fd5b610bf585610bed611871565b858403611878565b5b60019150509392505050565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610c2f611871565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb290612a7a565b60405180910390fd5b600e60149054906101000a900460ff1615610d0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0290612e5d565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dc9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ded9190612e8f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e73573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e979190612e8f565b6040518363ffffffff1660e01b8152600401610eb4929190612eba565b6020604051808303815f875af1158015610ed0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ef49190612e8f565b600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610f7b30600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166012600a610f679190612c5c565b633b9aca00610f769190612ca6565b611878565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610fc330611319565b5f80610fcd6114ad565b426040518863ffffffff1660e01b8152600401610fef96959493929190612f23565b60606040518083038185885af115801561100b573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906110309190612f96565b505050600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016110d0929190612fe6565b6020604051808303815f875af11580156110ec573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111109190613037565b506001600e60146101000a81548160ff02191690831515021790555043600781905550565b5f6012905090565b60055481565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60065481565b60085481565b61117c611871565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611208576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ff90612a7a565b60405180910390fd5b5f61121230611319565b90505f606482846112239190612ca6565b61122d9190612d14565b905061123881611eb3565b505050565b611245611871565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c890612a7a565b60405180910390fd5b6012600a6112df9190612c5c565b633b9aca006112ee9190612ca6565b6005819055506012600a6113029190612c5c565b633b9aca006113119190612ca6565b600681905550565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b611367611871565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ea90612a7a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f4454554245000000000000000000000000000000000000000000000000000000815250905090565b5f61152461151d611871565b8484611a3b565b6001905092915050565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60095481565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611608611871565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611694576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168b90612a7a565b60405180910390fd5b8060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505050565b6116e2611871565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461176e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176590612a7a565b60405180910390fd5b60638211158015611780575060638111155b6117bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b6906130ac565b60405180910390fd5b81600881905550806009819055505050565b6117d9611871565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611865576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185c90612a7a565b60405180910390fd5b61186e816122e0565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118dd9061313a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611954576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194b906131c8565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611a2e9190612849565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611aa9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa090613256565b60405180910390fd5b5f8111611aeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae2906132be565b60405180910390fd5b5f8060035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054148015611b7457505f60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054145b15611ea157600e60149054906101000a900460ff16611bc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbf90613326565b60405180910390fd5b600554821115611c0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c049061338e565b60405180910390fd5b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611c98575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611cf65760065482611caa85611319565b611cb491906133ac565b1115611cf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cec90613429565b60405180910390fd5b5b6003600754611d0591906133ac565b431015611d7457600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611d67576019611d6a565b60145b60ff169050611ea0565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611dd2576008549050611e9f565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e9e575f611e3030611319565b9050601460646012600a611e449190612c5c565b633b9aca00611e539190612ca6565b611e5d9190612d14565b611e679190612d14565b811115611e97575f600454905083821115611e80578391505b80821115611e8c578091505b611e9582611eb3565b505b6009549150505b5b5b5b611ead84848484612409565b50505050565b5f600267ffffffffffffffff811115611ecf57611ece613447565b5b604051908082528060200260200182016040528015611efd5781602001602082028036833780820191505090505b50905030815f81518110611f1457611f13613474565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fb8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fdc9190612e8f565b81600181518110611ff057611fef613474565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061205630600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611878565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016120b8959493929190613558565b5f604051808303815f87803b1580156120cf575f80fd5b505af11580156120e1573d5f803e3d5ffd5b505050505f8060646032476120f69190612ca6565b6121009190612d14565b90505f60646019476121129190612ca6565b61211c9190612d14565b90505f606460194761212e9190612ca6565b6121389190612d14565b9050600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360405161217f90612d71565b5f6040518083038185875af1925050503d805f81146121b9576040519150601f19603f3d011682016040523d82523d5f602084013e6121be565b606091505b505080945050600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161220990612d71565b5f6040518083038185875af1925050503d805f8114612243576040519150601f19603f3d011682016040523d82523d5f602084013e612248565b606091505b505080945050600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161229390612d71565b5f6040518083038185875af1925050503d805f81146122cd576040519150601f19603f3d011682016040523d82523d5f602084013e6122d2565b606091505b505080945050505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361234e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234590613620565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f606482846124189190612ca6565b6124229190612d14565b90505f8184612431919061363e565b90508360015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461247c919061363e565b60015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508060015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461250691906133ac565b60015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461259091906133ac565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161262e9190612849565b60405180910390a3505050505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561267557808201518184015260208101905061265a565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61269a8261263e565b6126a48185612648565b93506126b4818560208601612658565b6126bd81612680565b840191505092915050565b5f6020820190508181035f8301526126e08184612690565b905092915050565b5f80fd5b5f819050919050565b6126fe816126ec565b8114612708575f80fd5b50565b5f81359050612719816126f5565b92915050565b5f805f60608486031215612736576127356126e8565b5b5f6127438682870161270b565b93505060206127548682870161270b565b92505060406127658682870161270b565b9150509250925092565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6127988261276f565b9050919050565b6127a88161278e565b81146127b2575f80fd5b50565b5f813590506127c38161279f565b92915050565b5f80604083850312156127df576127de6126e8565b5b5f6127ec858286016127b5565b92505060206127fd8582860161270b565b9150509250929050565b5f8115159050919050565b61281b81612807565b82525050565b5f6020820190506128345f830184612812565b92915050565b612843816126ec565b82525050565b5f60208201905061285c5f83018461283a565b92915050565b5f805f60608486031215612879576128786126e8565b5b5f612886868287016127b5565b9350506020612897868287016127b5565b92505060406128a8868287016127b5565b9150509250925092565b5f805f606084860312156128c9576128c86126e8565b5b5f6128d6868287016127b5565b93505060206128e7868287016127b5565b92505060406128f88682870161270b565b9150509250925092565b61290b8161278e565b82525050565b5f6020820190506129245f830184612902565b92915050565b5f60ff82169050919050565b61293f8161292a565b82525050565b5f6020820190506129585f830184612936565b92915050565b5f60208284031215612973576129726126e8565b5b5f6129808482850161270b565b91505092915050565b5f6020828403121561299e5761299d6126e8565b5b5f6129ab848285016127b5565b91505092915050565b5f80604083850312156129ca576129c96126e8565b5b5f6129d7858286016127b5565b92505060206129e8858286016127b5565b9150509250929050565b5f8060408385031215612a0857612a076126e8565b5b5f612a158582860161270b565b9250506020612a268582860161270b565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612a64602083612648565b9150612a6f82612a30565b602082019050919050565b5f6020820190508181035f830152612a9181612a58565b9050919050565b7f63616e2774206265206d6f7265207468616e20332500000000000000000000005f82015250565b5f612acc601583612648565b9150612ad782612a98565b602082019050919050565b5f6020820190508181035f830152612af981612ac0565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612b8257808604811115612b5e57612b5d612b00565b5b6001851615612b6d5780820291505b8081029050612b7b85612b2d565b9450612b42565b94509492505050565b5f82612b9a5760019050612c55565b81612ba7575f9050612c55565b8160018114612bbd5760028114612bc757612bf6565b6001915050612c55565b60ff841115612bd957612bd8612b00565b5b8360020a915084821115612bf057612bef612b00565b5b50612c55565b5060208310610133831016604e8410600b8410161715612c2b5782820a905083811115612c2657612c25612b00565b5b612c55565b612c388484846001612b39565b92509050818404811115612c4f57612c4e612b00565b5b81810290505b9392505050565b5f612c66826126ec565b9150612c718361292a565b9250612c9e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612b8b565b905092915050565b5f612cb0826126ec565b9150612cbb836126ec565b9250828202612cc9816126ec565b91508282048414831517612ce057612cdf612b00565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612d1e826126ec565b9150612d29836126ec565b925082612d3957612d38612ce7565b5b828204905092915050565b5f81905092915050565b50565b5f612d5c5f83612d44565b9150612d6782612d4e565b5f82019050919050565b5f612d7b82612d51565b9150819050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f612ddf602883612648565b9150612dea82612d85565b604082019050919050565b5f6020820190508181035f830152612e0c81612dd3565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612e47601783612648565b9150612e5282612e13565b602082019050919050565b5f6020820190508181035f830152612e7481612e3b565b9050919050565b5f81519050612e898161279f565b92915050565b5f60208284031215612ea457612ea36126e8565b5b5f612eb184828501612e7b565b91505092915050565b5f604082019050612ecd5f830185612902565b612eda6020830184612902565b9392505050565b5f819050919050565b5f819050919050565b5f612f0d612f08612f0384612ee1565b612eea565b6126ec565b9050919050565b612f1d81612ef3565b82525050565b5f60c082019050612f365f830189612902565b612f43602083018861283a565b612f506040830187612f14565b612f5d6060830186612f14565b612f6a6080830185612902565b612f7760a083018461283a565b979650505050505050565b5f81519050612f90816126f5565b92915050565b5f805f60608486031215612fad57612fac6126e8565b5b5f612fba86828701612f82565b9350506020612fcb86828701612f82565b9250506040612fdc86828701612f82565b9150509250925092565b5f604082019050612ff95f830185612902565b613006602083018461283a565b9392505050565b61301681612807565b8114613020575f80fd5b50565b5f815190506130318161300d565b92915050565b5f6020828403121561304c5761304b6126e8565b5b5f61305984828501613023565b91505092915050565b7f5461782063616e6e6f7420626520696e637265617365640000000000000000005f82015250565b5f613096601783612648565b91506130a182613062565b602082019050919050565b5f6020820190508181035f8301526130c38161308a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613124602483612648565b915061312f826130ca565b604082019050919050565b5f6020820190508181035f83015261315181613118565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6131b2602283612648565b91506131bd82613158565b604082019050919050565b5f6020820190508181035f8301526131df816131a6565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613240602583612648565b915061324b826131e6565b604082019050919050565b5f6020820190508181035f83015261326d81613234565b9050919050565b7f45524332303a206e6f20746f6b656e73207472616e73666572726564000000005f82015250565b5f6132a8601c83612648565b91506132b382613274565b602082019050919050565b5f6020820190508181035f8301526132d58161329c565b9050919050565b7f54726164696e67206e6f74206f70656e000000000000000000000000000000005f82015250565b5f613310601083612648565b915061331b826132dc565b602082019050919050565b5f6020820190508181035f83015261333d81613304565b9050919050565b7f4d6178547820456e61626c6564206174206c61756e63680000000000000000005f82015250565b5f613378601783612648565b915061338382613344565b602082019050919050565b5f6020820190508181035f8301526133a58161336c565b9050919050565b5f6133b6826126ec565b91506133c1836126ec565b92508282019050808211156133d9576133d8612b00565b5b92915050565b7f4d617857616c6c657420456e61626c6564206174206c61756e636800000000005f82015250565b5f613413601b83612648565b915061341e826133df565b602082019050919050565b5f6020820190508181035f83015261344081613407565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6134d38161278e565b82525050565b5f6134e483836134ca565b60208301905092915050565b5f602082019050919050565b5f613506826134a1565b61351081856134ab565b935061351b836134bb565b805f5b8381101561354b57815161353288826134d9565b975061353d836134f0565b92505060018101905061351e565b5085935050505092915050565b5f60a08201905061356b5f83018861283a565b6135786020830187612f14565b818103604083015261358a81866134fc565b90506135996060830185612902565b6135a6608083018461283a565b9695505050505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61360a602683612648565b9150613615826135b0565b604082019050919050565b5f6020820190508181035f830152613637816135fe565b9050919050565b5f613648826126ec565b9150613653836126ec565b925082820390508181111561366b5761366a612b00565b5b9291505056fea2646970667358221220445fcd24d3ff0f762a25a14a1c0efb86f04963e7e8e639caf8dde0cd88f8e18564736f6c63430008140033

Deployed Bytecode Sourcemap

235:8385:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1743:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5127:356;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2577:160;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7330:142;;;;;;;;;;;;;:::i;:::-;;2020:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4504:253;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2745:578;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1211:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3676:686;;;;;;;;;;;;;:::i;:::-;;1929:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;865:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1108:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;905:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;990:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7481:219;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4765:117;;;;;;;;;;;;;:::i;:::-;;2128:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1111:148:3;;;;;;;;;;;;;:::i;:::-;;543:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1834:87:2;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2254:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1143:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1023:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1174:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2427:142;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4370:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4890:229;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;757:109:3;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1743:83:2;1780:13;1813:5;;;;;;;;;;;;;;;;;1806:12;;1743:83;:::o;5127:356::-;680:12:3;:10;:12::i;:::-;670:22;;:6;;;;;;;;;;:22;;;662:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5278:2:2::1;5261:13;:19;;5253:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;5359:2;739:3;416:2;478;:13;;;;:::i;:::-;465:10;:26;;;;:::i;:::-;724:18;;;;:::i;:::-;5348:13;;;;:::i;:::-;5331:15;:31;;;;:::i;:::-;5319:9;:43;;;;5422:2;739:3;416:2;478;:13;;;;:::i;:::-;465:10;:26;;;;:::i;:::-;724:18;;;;:::i;:::-;5411:13;;;;:::i;:::-;5397:12;:28;;;;:::i;:::-;5389:5;:36;;;;5472:2;739:3;416:2;478;:13;;;;:::i;:::-;465:10;:26;;;;:::i;:::-;724:18;;;;:::i;:::-;5461:13;;;;:::i;:::-;5446;:29;;;;:::i;:::-;5436:7;:39;;;;5127:356:::0;;;:::o;2577:160::-;2652:4;2668:39;2677:12;:10;:12::i;:::-;2691:7;2700:6;2668:8;:39::i;:::-;2725:4;2718:11;;2577:160;;;;:::o;7330:142::-;680:12:3;:10;:12::i;:::-;670:22;;:6;;;;;;;;;;:22;;;662:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7381:12:2::1;7418:7;:5;:7::i;:::-;:12;;7438:21;7418:46;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7404:60;;;;;7370:102;7330:142::o:0;2020:100::-;2073:7;416:2;478;:13;;;;:::i;:::-;465:10;:26;;;;:::i;:::-;2093:19;;2020:100;:::o;4504:253::-;680:12:3;:10;:12::i;:::-;670:22;;:6;;;;;;;;;;:22;;;662:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4646:12:2::1;4634:9;;:24;;;;;;;;;;;;;;;;;;4687:18;4669:15;;:36;;;;;;;;;;;;;;;;;;4734:15;4716;;:33;;;;;;;;;;;;;;;;;;4504:253:::0;;;:::o;2745:578::-;2843:4;2860:36;2870:6;2878:9;2889:6;2860:9;:36::i;:::-;2909:24;2936:11;:19;2948:6;2936:19;;;;;;;;;;;;;;;:33;2956:12;:10;:12::i;:::-;2936:33;;;;;;;;;;;;;;;;2909:60;;3003:17;2983:16;:37;2980:314;;3084:6;3064:16;:26;;3038:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;3210:57;3219:6;3227:12;:10;:12::i;:::-;3260:6;3241:16;:25;3210:8;:57::i;:::-;2980:314;3311:4;3304:11;;;2745:578;;;;;:::o;1211:30::-;;;;;;;;;;;;;:::o;3676:686::-;680:12:3;:10;:12::i;:::-;670:22;;:6;;;;;;;;;;:22;;;662:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3739:6:2::1;;;;;;;;;;;3738:7;3730:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;3820;3783:15;;:80;;;;;;;;;;;;;;;;;;3908:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3890:55;;;3954:4;3961:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3890:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3874:13;;:110;;;;;;;;;;;;;;;;;;3995:63;4012:4;4027:15;;;;;;;;;;;416:2;478;:13;;;;:::i;:::-;465:10;:26;;;;:::i;:::-;3995:8;:63::i;:::-;4079:15;;;;;;;;;;;:31;;;4118:21;4149:4;4155:24;4173:4;4155:9;:24::i;:::-;4180:1;4182::::0;4184:7:::1;:5;:7::i;:::-;4192:15;4079:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;4226:13;;;;;;;;;;;4219:29;;;4257:15;;;;;;;;;;;4275:14;4219:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4310:4;4301:6;;:13;;;;;;;;;;;;;;;;;;4342:12;4325:14;:29;;;;3676:686::o:0;1929:83::-;1970:5;416:2;1988:16;;1929:83;:::o;865:33::-;;;;:::o;1108:28::-;;;;;;;;;;;;;:::o;905:37::-;;;;:::o;990:26::-;;;;:::o;7481:219::-;680:12:3;:10;:12::i;:::-;670:22;;:6;;;;;;;;;;:22;;;662:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7548:23:2::1;7574:24;7592:4;7574:9;:24::i;:::-;7548:50;;7609:15;7653:3;7636:15;7628:7;:23;;;;:::i;:::-;7627:29;;;;:::i;:::-;7609:47;;7667:25;7684:7;7667:16;:25::i;:::-;7537:163;;7481:219:::0;:::o;4765:117::-;680:12:3;:10;:12::i;:::-;670:22;;:6;;;;;;;;;;:22;;;662:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;416:2:2::1;478;:13;;;;:::i;:::-;465:10;:26;;;;:::i;:::-;4819:5;:20;;;;416:2;478;:13;;;;:::i;:::-;465:10;:26;;;;:::i;:::-;4850:9;:24;;;;4765:117::o:0;2128:118::-;2194:7;2221:8;:17;2230:7;2221:17;;;;;;;;;;;;;;;;2214:24;;2128:118;;;:::o;1111:148:3:-;680:12;:10;:12::i;:::-;670:22;;:6;;;;;;;;;;:22;;;662:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1218:1:::1;1181:40;;1202:6;::::0;::::1;;;;;;;;1181:40;;;;;;;;;;;;1249:1;1232:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1111:148::o:0;543:79::-;581:7;608:6;;;;;;;;;;;601:13;;543:79;:::o;1834:87:2:-;1873:13;1906:7;;;;;;;;;;;;;;;;;1899:14;;1834:87;:::o;2254:165::-;2331:4;2347:42;2357:12;:10;:12::i;:::-;2371:9;2382:6;2347:9;:42::i;:::-;2407:4;2400:11;;2254:165;;;;:::o;1143:24::-;;;;;;;;;;;;;:::o;1023:27::-;;;;:::o;1174:30::-;;;;;;;;;;;;;:::o;2427:142::-;2508:7;2534:11;:18;2546:5;2534:18;;;;;;;;;;;;;;;:27;2553:7;2534:27;;;;;;;;;;;;;;;;2527:34;;2427:142;;;;:::o;4370:126::-;680:12:3;:10;:12::i;:::-;670:22;;:6;;;;;;;;;;:22;;;662:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4483:5:2::1;4456:16;:24;4473:6;4456:24;;;;;;;;;;;;;;;:32;;;;4370:126:::0;;:::o;4890:229::-;680:12:3;:10;:12::i;:::-;670:22;;:6;;;;;;;;;;:22;;;662:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5001:2:2::1;4988:9;:15;;:35;;;;;5021:2;5007:10;:16;;4988:35;4980:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5071:9;5062:6;:18;;;;5101:10;5091:7;:20;;;;4890:229:::0;;:::o;757:109:3:-;680:12;:10;:12::i;:::-;670:22;;:6;;;;;;;;;;:22;;;662:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;830:28:::1;849:8;830:18;:28::i;:::-;757:109:::0;:::o;96:98::-;149:7;176:10;169:17;;96:98;:::o;3331:335:2:-;3441:1;3424:19;;:5;:19;;;3416:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3522:1;3503:21;;:7;:21;;;3495:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3604:6;3574:11;:18;3586:5;3574:18;;;;;;;;;;;;;;;:27;3593:7;3574:27;;;;;;;;;;;;;;;:36;;;;3642:7;3626:32;;3635:5;3626:32;;;3651:6;3626:32;;;;;;:::i;:::-;;;;;;;;3331:335;;;:::o;5933:1389::-;6037:1;6021:18;;:4;:18;;;6013:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6109:1;6100:6;:10;6092:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;6154:12;6211:1;6185:16;:22;6202:4;6185:22;;;;;;;;;;;;;;;;:27;:56;;;;;6240:1;6216:16;:20;6233:2;6216:20;;;;;;;;;;;;;;;;:25;6185:56;6181:1085;;;6275:6;;;;;;;;;;;6267:35;;;;;;;;;;;;:::i;:::-;;;;;;;;;6335:5;;6325:6;:15;;6317:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;6393:13;;;;;;;;;;;6387:19;;:2;:19;;;;:44;;;;;6424:6;6410:21;;:2;:21;;;;6387:44;6383:125;;;6467:9;;6457:6;6441:13;6451:2;6441:9;:13::i;:::-;:22;;;;:::i;:::-;:35;;6433:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;6383:125;6559:1;6542:14;;:18;;;;:::i;:::-;6527:12;:33;6523:732;;;6597:13;;;;;;;;;;;6589:21;;:4;:21;;;6588:33;;6619:2;6588:33;;;6614:2;6588:33;6581:40;;;;6523:732;;;6674:13;;;;;;;;;;;6666:21;;:4;:21;;;6662:578;;6719:6;;6712:13;;6662:578;;;6761:13;;;;;;;;;;;6755:19;;:2;:19;;;6751:489;;6799:20;6822:24;6840:4;6822:9;:24::i;:::-;6799:47;;805:2;739:3;416:2;478;:13;;;;:::i;:::-;465:10;:26;;;;:::i;:::-;724:18;;;;:::i;:::-;794:13;;;;:::i;:::-;6873:12;:32;6869:315;;;6935:12;6950:7;;6935:22;;7003:6;6988:12;:21;6984:48;;;7026:6;7011:21;;6984:48;7078:4;7063:12;:19;7059:44;;;7099:4;7084:19;;7059:44;7130:30;7147:12;7130:16;:30::i;:::-;6907:277;6869:315;7213:7;;7206:14;;6776:464;6751:489;6662:578;6523:732;6181:1085;7276:38;7291:4;7297:2;7301:6;7309:4;7276:14;:38::i;:::-;6002:1320;5933:1389;;;:::o;7708:874::-;7774:21;7812:1;7798:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7774:40;;7843:4;7825;7830:1;7825:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;7869:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7859:4;7864:1;7859:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;7902:62;7919:4;7934:15;;;;;;;;;;;7952:11;7902:8;:62::i;:::-;7975:15;;;;;;;;;;;:66;;;8056:11;8082:1;8098:4;8125;8145:15;7975:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8182:12;8207:14;8250:3;8247:2;8224:21;:25;;;;:::i;:::-;:29;;;;:::i;:::-;8207:46;;8264:20;8313:3;8310:2;8287:21;:25;;;;:::i;:::-;:29;;;;:::i;:::-;8264:52;;8327:17;8373:3;8370:2;8347:21;:25;;;;:::i;:::-;:29;;;;:::i;:::-;8327:49;;8403:9;;;;;;;;;;;:14;;8425:6;8403:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8389:47;;;;;8461:15;;;;;;;;;;;:20;;8489:12;8461:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8447:59;;;;;8532:15;;;;;;;;;;;:20;;8560:9;8532:42;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8517:57;;;;;7763:819;;;;;7708:874;:::o;874:229:3:-;968:1;948:22;;:8;:22;;;940:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;1058:8;1029:38;;1050:6;;;;;;;;;;1029:38;;;;;;;;;;;;1087:8;1078:6;;:17;;;;;;;;;;;;;;;;;;874:229;:::o;5491:434:2:-;5590:17;5628:3;5620:4;5611:6;:13;;;;:::i;:::-;5610:21;;;;:::i;:::-;5590:41;;5642:22;5676:9;5667:6;:18;;;;:::i;:::-;5642:43;;5732:6;5715:8;:14;5724:4;5715:14;;;;;;;;;;;;;;;;:23;;;;:::i;:::-;5698:8;:14;5707:4;5698:14;;;;;;;;;;;;;;;:40;;;;5779:14;5764:8;:12;5773:2;5764:12;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;5749:8;:12;5758:2;5749:12;;;;;;;;;;;;;;;:44;;;;5856:9;5830:8;:23;5847:4;5830:23;;;;;;;;;;;;;;;;:35;;;;:::i;:::-;5804:8;:23;5821:4;5804:23;;;;;;;;;;;;;;;:61;;;;5898:2;5883:34;;5892:4;5883:34;;;5902:14;5883:34;;;;;;:::i;:::-;;;;;;;;5579:346;;5491:434;;;;:::o;7:99:4:-;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:77;1713:7;1742:5;1731:16;;1676:77;;;:::o;1759:122::-;1832:24;1850:5;1832:24;:::i;:::-;1825:5;1822:35;1812:63;;1871:1;1868;1861:12;1812:63;1759:122;:::o;1887:139::-;1933:5;1971:6;1958:20;1949:29;;1987:33;2014:5;1987:33;:::i;:::-;1887:139;;;;:::o;2032:619::-;2109:6;2117;2125;2174:2;2162:9;2153:7;2149:23;2145:32;2142:119;;;2180:79;;:::i;:::-;2142:119;2300:1;2325:53;2370:7;2361:6;2350:9;2346:22;2325:53;:::i;:::-;2315:63;;2271:117;2427:2;2453:53;2498:7;2489:6;2478:9;2474:22;2453:53;:::i;:::-;2443:63;;2398:118;2555:2;2581:53;2626:7;2617:6;2606:9;2602:22;2581:53;:::i;:::-;2571:63;;2526:118;2032:619;;;;;:::o;2657:126::-;2694:7;2734:42;2727:5;2723:54;2712:65;;2657:126;;;:::o;2789:96::-;2826:7;2855:24;2873:5;2855:24;:::i;:::-;2844:35;;2789:96;;;:::o;2891:122::-;2964:24;2982:5;2964:24;:::i;:::-;2957:5;2954:35;2944:63;;3003:1;3000;2993:12;2944:63;2891:122;:::o;3019:139::-;3065:5;3103:6;3090:20;3081:29;;3119:33;3146:5;3119:33;:::i;:::-;3019:139;;;;:::o;3164:474::-;3232:6;3240;3289:2;3277:9;3268:7;3264:23;3260:32;3257:119;;;3295:79;;:::i;:::-;3257:119;3415:1;3440:53;3485:7;3476:6;3465:9;3461:22;3440:53;:::i;:::-;3430:63;;3386:117;3542:2;3568:53;3613:7;3604:6;3593:9;3589:22;3568:53;:::i;:::-;3558:63;;3513:118;3164:474;;;;;:::o;3644:90::-;3678:7;3721:5;3714:13;3707:21;3696:32;;3644:90;;;:::o;3740:109::-;3821:21;3836:5;3821:21;:::i;:::-;3816:3;3809:34;3740:109;;:::o;3855:210::-;3942:4;3980:2;3969:9;3965:18;3957:26;;3993:65;4055:1;4044:9;4040:17;4031:6;3993:65;:::i;:::-;3855:210;;;;:::o;4071:118::-;4158:24;4176:5;4158:24;:::i;:::-;4153:3;4146:37;4071:118;;:::o;4195:222::-;4288:4;4326:2;4315:9;4311:18;4303:26;;4339:71;4407:1;4396:9;4392:17;4383:6;4339:71;:::i;:::-;4195:222;;;;:::o;4423:619::-;4500:6;4508;4516;4565:2;4553:9;4544:7;4540:23;4536:32;4533:119;;;4571:79;;:::i;:::-;4533:119;4691:1;4716:53;4761:7;4752:6;4741:9;4737:22;4716:53;:::i;:::-;4706:63;;4662:117;4818:2;4844:53;4889:7;4880:6;4869:9;4865:22;4844:53;:::i;:::-;4834:63;;4789:118;4946:2;4972:53;5017:7;5008:6;4997:9;4993:22;4972:53;:::i;:::-;4962:63;;4917:118;4423:619;;;;;:::o;5048:::-;5125:6;5133;5141;5190:2;5178:9;5169:7;5165:23;5161:32;5158:119;;;5196:79;;:::i;:::-;5158:119;5316:1;5341:53;5386:7;5377:6;5366:9;5362:22;5341:53;:::i;:::-;5331:63;;5287:117;5443:2;5469:53;5514:7;5505:6;5494:9;5490:22;5469:53;:::i;:::-;5459:63;;5414:118;5571:2;5597:53;5642:7;5633:6;5622:9;5618:22;5597:53;:::i;:::-;5587:63;;5542:118;5048:619;;;;;:::o;5673:118::-;5760:24;5778:5;5760:24;:::i;:::-;5755:3;5748:37;5673:118;;:::o;5797:222::-;5890:4;5928:2;5917:9;5913:18;5905:26;;5941:71;6009:1;5998:9;5994:17;5985:6;5941:71;:::i;:::-;5797:222;;;;:::o;6025:86::-;6060:7;6100:4;6093:5;6089:16;6078:27;;6025:86;;;:::o;6117:112::-;6200:22;6216:5;6200:22;:::i;:::-;6195:3;6188:35;6117:112;;:::o;6235:214::-;6324:4;6362:2;6351:9;6347:18;6339:26;;6375:67;6439:1;6428:9;6424:17;6415:6;6375:67;:::i;:::-;6235:214;;;;:::o;6455:329::-;6514:6;6563:2;6551:9;6542:7;6538:23;6534:32;6531:119;;;6569:79;;:::i;:::-;6531:119;6689:1;6714:53;6759:7;6750:6;6739:9;6735:22;6714:53;:::i;:::-;6704:63;;6660:117;6455:329;;;;:::o;6790:::-;6849:6;6898:2;6886:9;6877:7;6873:23;6869:32;6866:119;;;6904:79;;:::i;:::-;6866:119;7024:1;7049:53;7094:7;7085:6;7074:9;7070:22;7049:53;:::i;:::-;7039:63;;6995:117;6790:329;;;;:::o;7125:474::-;7193:6;7201;7250:2;7238:9;7229:7;7225:23;7221:32;7218:119;;;7256:79;;:::i;:::-;7218:119;7376:1;7401:53;7446:7;7437:6;7426:9;7422:22;7401:53;:::i;:::-;7391:63;;7347:117;7503:2;7529:53;7574:7;7565:6;7554:9;7550:22;7529:53;:::i;:::-;7519:63;;7474:118;7125:474;;;;;:::o;7605:::-;7673:6;7681;7730:2;7718:9;7709:7;7705:23;7701:32;7698:119;;;7736:79;;:::i;:::-;7698:119;7856:1;7881:53;7926:7;7917:6;7906:9;7902:22;7881:53;:::i;:::-;7871:63;;7827:117;7983:2;8009:53;8054:7;8045:6;8034:9;8030:22;8009:53;:::i;:::-;7999:63;;7954:118;7605:474;;;;;:::o;8085:182::-;8225:34;8221:1;8213:6;8209:14;8202:58;8085:182;:::o;8273:366::-;8415:3;8436:67;8500:2;8495:3;8436:67;:::i;:::-;8429:74;;8512:93;8601:3;8512:93;:::i;:::-;8630:2;8625:3;8621:12;8614:19;;8273:366;;;:::o;8645:419::-;8811:4;8849:2;8838:9;8834:18;8826:26;;8898:9;8892:4;8888:20;8884:1;8873:9;8869:17;8862:47;8926:131;9052:4;8926:131;:::i;:::-;8918:139;;8645:419;;;:::o;9070:171::-;9210:23;9206:1;9198:6;9194:14;9187:47;9070:171;:::o;9247:366::-;9389:3;9410:67;9474:2;9469:3;9410:67;:::i;:::-;9403:74;;9486:93;9575:3;9486:93;:::i;:::-;9604:2;9599:3;9595:12;9588:19;;9247:366;;;:::o;9619:419::-;9785:4;9823:2;9812:9;9808:18;9800:26;;9872:9;9866:4;9862:20;9858:1;9847:9;9843:17;9836:47;9900:131;10026:4;9900:131;:::i;:::-;9892:139;;9619:419;;;:::o;10044:180::-;10092:77;10089:1;10082:88;10189:4;10186:1;10179:15;10213:4;10210:1;10203:15;10230:102;10272:8;10319:5;10316:1;10312:13;10291:34;;10230:102;;;:::o;10338:848::-;10399:5;10406:4;10430:6;10421:15;;10454:5;10445:14;;10468:712;10489:1;10479:8;10476:15;10468:712;;;10584:4;10579:3;10575:14;10569:4;10566:24;10563:50;;;10593:18;;:::i;:::-;10563:50;10643:1;10633:8;10629:16;10626:451;;;11058:4;11051:5;11047:16;11038:25;;10626:451;11108:4;11102;11098:15;11090:23;;11138:32;11161:8;11138:32;:::i;:::-;11126:44;;10468:712;;;10338:848;;;;;;;:::o;11192:1073::-;11246:5;11437:8;11427:40;;11458:1;11449:10;;11460:5;;11427:40;11486:4;11476:36;;11503:1;11494:10;;11505:5;;11476:36;11572:4;11620:1;11615:27;;;;11656:1;11651:191;;;;11565:277;;11615:27;11633:1;11624:10;;11635:5;;;11651:191;11696:3;11686:8;11683:17;11680:43;;;11703:18;;:::i;:::-;11680:43;11752:8;11749:1;11745:16;11736:25;;11787:3;11780:5;11777:14;11774:40;;;11794:18;;:::i;:::-;11774:40;11827:5;;;11565:277;;11951:2;11941:8;11938:16;11932:3;11926:4;11923:13;11919:36;11901:2;11891:8;11888:16;11883:2;11877:4;11874:12;11870:35;11854:111;11851:246;;;12007:8;12001:4;11997:19;11988:28;;12042:3;12035:5;12032:14;12029:40;;;12049:18;;:::i;:::-;12029:40;12082:5;;11851:246;12122:42;12160:3;12150:8;12144:4;12141:1;12122:42;:::i;:::-;12107:57;;;;12196:4;12191:3;12187:14;12180:5;12177:25;12174:51;;;12205:18;;:::i;:::-;12174:51;12254:4;12247:5;12243:16;12234:25;;11192:1073;;;;;;:::o;12271:281::-;12329:5;12353:23;12371:4;12353:23;:::i;:::-;12345:31;;12397:25;12413:8;12397:25;:::i;:::-;12385:37;;12441:104;12478:66;12468:8;12462:4;12441:104;:::i;:::-;12432:113;;12271:281;;;;:::o;12558:410::-;12598:7;12621:20;12639:1;12621:20;:::i;:::-;12616:25;;12655:20;12673:1;12655:20;:::i;:::-;12650:25;;12710:1;12707;12703:9;12732:30;12750:11;12732:30;:::i;:::-;12721:41;;12911:1;12902:7;12898:15;12895:1;12892:22;12872:1;12865:9;12845:83;12822:139;;12941:18;;:::i;:::-;12822:139;12606:362;12558:410;;;;:::o;12974:180::-;13022:77;13019:1;13012:88;13119:4;13116:1;13109:15;13143:4;13140:1;13133:15;13160:185;13200:1;13217:20;13235:1;13217:20;:::i;:::-;13212:25;;13251:20;13269:1;13251:20;:::i;:::-;13246:25;;13290:1;13280:35;;13295:18;;:::i;:::-;13280:35;13337:1;13334;13330:9;13325:14;;13160:185;;;;:::o;13351:147::-;13452:11;13489:3;13474:18;;13351:147;;;;:::o;13504:114::-;;:::o;13624:398::-;13783:3;13804:83;13885:1;13880:3;13804:83;:::i;:::-;13797:90;;13896:93;13985:3;13896:93;:::i;:::-;14014:1;14009:3;14005:11;13998:18;;13624:398;;;:::o;14028:379::-;14212:3;14234:147;14377:3;14234:147;:::i;:::-;14227:154;;14398:3;14391:10;;14028:379;;;:::o;14413:227::-;14553:34;14549:1;14541:6;14537:14;14530:58;14622:10;14617:2;14609:6;14605:15;14598:35;14413:227;:::o;14646:366::-;14788:3;14809:67;14873:2;14868:3;14809:67;:::i;:::-;14802:74;;14885:93;14974:3;14885:93;:::i;:::-;15003:2;14998:3;14994:12;14987:19;;14646:366;;;:::o;15018:419::-;15184:4;15222:2;15211:9;15207:18;15199:26;;15271:9;15265:4;15261:20;15257:1;15246:9;15242:17;15235:47;15299:131;15425:4;15299:131;:::i;:::-;15291:139;;15018:419;;;:::o;15443:173::-;15583:25;15579:1;15571:6;15567:14;15560:49;15443:173;:::o;15622:366::-;15764:3;15785:67;15849:2;15844:3;15785:67;:::i;:::-;15778:74;;15861:93;15950:3;15861:93;:::i;:::-;15979:2;15974:3;15970:12;15963:19;;15622:366;;;:::o;15994:419::-;16160:4;16198:2;16187:9;16183:18;16175:26;;16247:9;16241:4;16237:20;16233:1;16222:9;16218:17;16211:47;16275:131;16401:4;16275:131;:::i;:::-;16267:139;;15994:419;;;:::o;16419:143::-;16476:5;16507:6;16501:13;16492:22;;16523:33;16550:5;16523:33;:::i;:::-;16419:143;;;;:::o;16568:351::-;16638:6;16687:2;16675:9;16666:7;16662:23;16658:32;16655:119;;;16693:79;;:::i;:::-;16655:119;16813:1;16838:64;16894:7;16885:6;16874:9;16870:22;16838:64;:::i;:::-;16828:74;;16784:128;16568:351;;;;:::o;16925:332::-;17046:4;17084:2;17073:9;17069:18;17061:26;;17097:71;17165:1;17154:9;17150:17;17141:6;17097:71;:::i;:::-;17178:72;17246:2;17235:9;17231:18;17222:6;17178:72;:::i;:::-;16925:332;;;;;:::o;17263:85::-;17308:7;17337:5;17326:16;;17263:85;;;:::o;17354:60::-;17382:3;17403:5;17396:12;;17354:60;;;:::o;17420:158::-;17478:9;17511:61;17529:42;17538:32;17564:5;17538:32;:::i;:::-;17529:42;:::i;:::-;17511:61;:::i;:::-;17498:74;;17420:158;;;:::o;17584:147::-;17679:45;17718:5;17679:45;:::i;:::-;17674:3;17667:58;17584:147;;:::o;17737:807::-;17986:4;18024:3;18013:9;18009:19;18001:27;;18038:71;18106:1;18095:9;18091:17;18082:6;18038:71;:::i;:::-;18119:72;18187:2;18176:9;18172:18;18163:6;18119:72;:::i;:::-;18201:80;18277:2;18266:9;18262:18;18253:6;18201:80;:::i;:::-;18291;18367:2;18356:9;18352:18;18343:6;18291:80;:::i;:::-;18381:73;18449:3;18438:9;18434:19;18425:6;18381:73;:::i;:::-;18464;18532:3;18521:9;18517:19;18508:6;18464:73;:::i;:::-;17737:807;;;;;;;;;:::o;18550:143::-;18607:5;18638:6;18632:13;18623:22;;18654:33;18681:5;18654:33;:::i;:::-;18550:143;;;;:::o;18699:663::-;18787:6;18795;18803;18852:2;18840:9;18831:7;18827:23;18823:32;18820:119;;;18858:79;;:::i;:::-;18820:119;18978:1;19003:64;19059:7;19050:6;19039:9;19035:22;19003:64;:::i;:::-;18993:74;;18949:128;19116:2;19142:64;19198:7;19189:6;19178:9;19174:22;19142:64;:::i;:::-;19132:74;;19087:129;19255:2;19281:64;19337:7;19328:6;19317:9;19313:22;19281:64;:::i;:::-;19271:74;;19226:129;18699:663;;;;;:::o;19368:332::-;19489:4;19527:2;19516:9;19512:18;19504:26;;19540:71;19608:1;19597:9;19593:17;19584:6;19540:71;:::i;:::-;19621:72;19689:2;19678:9;19674:18;19665:6;19621:72;:::i;:::-;19368:332;;;;;:::o;19706:116::-;19776:21;19791:5;19776:21;:::i;:::-;19769:5;19766:32;19756:60;;19812:1;19809;19802:12;19756:60;19706:116;:::o;19828:137::-;19882:5;19913:6;19907:13;19898:22;;19929:30;19953:5;19929:30;:::i;:::-;19828:137;;;;:::o;19971:345::-;20038:6;20087:2;20075:9;20066:7;20062:23;20058:32;20055:119;;;20093:79;;:::i;:::-;20055:119;20213:1;20238:61;20291:7;20282:6;20271:9;20267:22;20238:61;:::i;:::-;20228:71;;20184:125;19971:345;;;;:::o;20322:173::-;20462:25;20458:1;20450:6;20446:14;20439:49;20322:173;:::o;20501:366::-;20643:3;20664:67;20728:2;20723:3;20664:67;:::i;:::-;20657:74;;20740:93;20829:3;20740:93;:::i;:::-;20858:2;20853:3;20849:12;20842:19;;20501:366;;;:::o;20873:419::-;21039:4;21077:2;21066:9;21062:18;21054:26;;21126:9;21120:4;21116:20;21112:1;21101:9;21097:17;21090:47;21154:131;21280:4;21154:131;:::i;:::-;21146:139;;20873:419;;;:::o;21298:223::-;21438:34;21434:1;21426:6;21422:14;21415:58;21507:6;21502:2;21494:6;21490:15;21483:31;21298:223;:::o;21527:366::-;21669:3;21690:67;21754:2;21749:3;21690:67;:::i;:::-;21683:74;;21766:93;21855:3;21766:93;:::i;:::-;21884:2;21879:3;21875:12;21868:19;;21527:366;;;:::o;21899:419::-;22065:4;22103:2;22092:9;22088:18;22080:26;;22152:9;22146:4;22142:20;22138:1;22127:9;22123:17;22116:47;22180:131;22306:4;22180:131;:::i;:::-;22172:139;;21899:419;;;:::o;22324:221::-;22464:34;22460:1;22452:6;22448:14;22441:58;22533:4;22528:2;22520:6;22516:15;22509:29;22324:221;:::o;22551:366::-;22693:3;22714:67;22778:2;22773:3;22714:67;:::i;:::-;22707:74;;22790:93;22879:3;22790:93;:::i;:::-;22908:2;22903:3;22899:12;22892:19;;22551:366;;;:::o;22923:419::-;23089:4;23127:2;23116:9;23112:18;23104:26;;23176:9;23170:4;23166:20;23162:1;23151:9;23147:17;23140:47;23204:131;23330:4;23204:131;:::i;:::-;23196:139;;22923:419;;;:::o;23348:224::-;23488:34;23484:1;23476:6;23472:14;23465:58;23557:7;23552:2;23544:6;23540:15;23533:32;23348:224;:::o;23578:366::-;23720:3;23741:67;23805:2;23800:3;23741:67;:::i;:::-;23734:74;;23817:93;23906:3;23817:93;:::i;:::-;23935:2;23930:3;23926:12;23919:19;;23578:366;;;:::o;23950:419::-;24116:4;24154:2;24143:9;24139:18;24131:26;;24203:9;24197:4;24193:20;24189:1;24178:9;24174:17;24167:47;24231:131;24357:4;24231:131;:::i;:::-;24223:139;;23950:419;;;:::o;24375:178::-;24515:30;24511:1;24503:6;24499:14;24492:54;24375:178;:::o;24559:366::-;24701:3;24722:67;24786:2;24781:3;24722:67;:::i;:::-;24715:74;;24798:93;24887:3;24798:93;:::i;:::-;24916:2;24911:3;24907:12;24900:19;;24559:366;;;:::o;24931:419::-;25097:4;25135:2;25124:9;25120:18;25112:26;;25184:9;25178:4;25174:20;25170:1;25159:9;25155:17;25148:47;25212:131;25338:4;25212:131;:::i;:::-;25204:139;;24931:419;;;:::o;25356:166::-;25496:18;25492:1;25484:6;25480:14;25473:42;25356:166;:::o;25528:366::-;25670:3;25691:67;25755:2;25750:3;25691:67;:::i;:::-;25684:74;;25767:93;25856:3;25767:93;:::i;:::-;25885:2;25880:3;25876:12;25869:19;;25528:366;;;:::o;25900:419::-;26066:4;26104:2;26093:9;26089:18;26081:26;;26153:9;26147:4;26143:20;26139:1;26128:9;26124:17;26117:47;26181:131;26307:4;26181:131;:::i;:::-;26173:139;;25900:419;;;:::o;26325:173::-;26465:25;26461:1;26453:6;26449:14;26442:49;26325:173;:::o;26504:366::-;26646:3;26667:67;26731:2;26726:3;26667:67;:::i;:::-;26660:74;;26743:93;26832:3;26743:93;:::i;:::-;26861:2;26856:3;26852:12;26845:19;;26504:366;;;:::o;26876:419::-;27042:4;27080:2;27069:9;27065:18;27057:26;;27129:9;27123:4;27119:20;27115:1;27104:9;27100:17;27093:47;27157:131;27283:4;27157:131;:::i;:::-;27149:139;;26876:419;;;:::o;27301:191::-;27341:3;27360:20;27378:1;27360:20;:::i;:::-;27355:25;;27394:20;27412:1;27394:20;:::i;:::-;27389:25;;27437:1;27434;27430:9;27423:16;;27458:3;27455:1;27452:10;27449:36;;;27465:18;;:::i;:::-;27449:36;27301:191;;;;:::o;27498:177::-;27638:29;27634:1;27626:6;27622:14;27615:53;27498:177;:::o;27681:366::-;27823:3;27844:67;27908:2;27903:3;27844:67;:::i;:::-;27837:74;;27920:93;28009:3;27920:93;:::i;:::-;28038:2;28033:3;28029:12;28022:19;;27681:366;;;:::o;28053:419::-;28219:4;28257:2;28246:9;28242:18;28234:26;;28306:9;28300:4;28296:20;28292:1;28281:9;28277:17;28270:47;28334:131;28460:4;28334:131;:::i;:::-;28326:139;;28053:419;;;:::o;28478:180::-;28526:77;28523:1;28516:88;28623:4;28620:1;28613:15;28647:4;28644:1;28637:15;28664:180;28712:77;28709:1;28702:88;28809:4;28806:1;28799:15;28833:4;28830:1;28823:15;28850:114;28917:6;28951:5;28945:12;28935:22;;28850:114;;;:::o;28970:184::-;29069:11;29103:6;29098:3;29091:19;29143:4;29138:3;29134:14;29119:29;;28970:184;;;;:::o;29160:132::-;29227:4;29250:3;29242:11;;29280:4;29275:3;29271:14;29263:22;;29160:132;;;:::o;29298:108::-;29375:24;29393:5;29375:24;:::i;:::-;29370:3;29363:37;29298:108;;:::o;29412:179::-;29481:10;29502:46;29544:3;29536:6;29502:46;:::i;:::-;29580:4;29575:3;29571:14;29557:28;;29412:179;;;;:::o;29597:113::-;29667:4;29699;29694:3;29690:14;29682:22;;29597:113;;;:::o;29746:732::-;29865:3;29894:54;29942:5;29894:54;:::i;:::-;29964:86;30043:6;30038:3;29964:86;:::i;:::-;29957:93;;30074:56;30124:5;30074:56;:::i;:::-;30153:7;30184:1;30169:284;30194:6;30191:1;30188:13;30169:284;;;30270:6;30264:13;30297:63;30356:3;30341:13;30297:63;:::i;:::-;30290:70;;30383:60;30436:6;30383:60;:::i;:::-;30373:70;;30229:224;30216:1;30213;30209:9;30204:14;;30169:284;;;30173:14;30469:3;30462:10;;29870:608;;;29746:732;;;;:::o;30484:831::-;30747:4;30785:3;30774:9;30770:19;30762:27;;30799:71;30867:1;30856:9;30852:17;30843:6;30799:71;:::i;:::-;30880:80;30956:2;30945:9;30941:18;30932:6;30880:80;:::i;:::-;31007:9;31001:4;30997:20;30992:2;30981:9;30977:18;30970:48;31035:108;31138:4;31129:6;31035:108;:::i;:::-;31027:116;;31153:72;31221:2;31210:9;31206:18;31197:6;31153:72;:::i;:::-;31235:73;31303:3;31292:9;31288:19;31279:6;31235:73;:::i;:::-;30484:831;;;;;;;;:::o;31321:225::-;31461:34;31457:1;31449:6;31445:14;31438:58;31530:8;31525:2;31517:6;31513:15;31506:33;31321:225;:::o;31552:366::-;31694:3;31715:67;31779:2;31774:3;31715:67;:::i;:::-;31708:74;;31791:93;31880:3;31791:93;:::i;:::-;31909:2;31904:3;31900:12;31893:19;;31552:366;;;:::o;31924:419::-;32090:4;32128:2;32117:9;32113:18;32105:26;;32177:9;32171:4;32167:20;32163:1;32152:9;32148:17;32141:47;32205:131;32331:4;32205:131;:::i;:::-;32197:139;;31924:419;;;:::o;32349:194::-;32389:4;32409:20;32427:1;32409:20;:::i;:::-;32404:25;;32443:20;32461:1;32443:20;:::i;:::-;32438:25;;32487:1;32484;32480:9;32472:17;;32511:1;32505:4;32502:11;32499:37;;;32516:18;;:::i;:::-;32499:37;32349:194;;;;:::o

Swarm Source

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