ETH Price: $2,508.01 (-0.11%)

Token

Quantum Cloak (QTC)
 

Overview

Max Total Supply

180,000,000 QTC

Holders

749

Market

Price

$0.00 @ 0.000000 ETH

Onchain Market Cap

$31,341.60

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 18 Decimals)

Balance
3,633.02364456210424583 QTC

Value
$0.63 ( ~0.000251194869650616 Eth) [0.0020%]
0x5FC40b17C40613E2625417764b6daf232e22d51B
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Quantum Cloak is a Layer 1 blockchain designed to provide the highest level of security and privacy

# Exchange Pair Price  24H Volume % Volume
1
Uniswap V2 (Ethereum)
0X22C158A3F3EA3419176C083AA11EB593E94965DC-0XC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2$0.0002
0.0000001 Eth
$52.37
303,357.299 0X22C158A3F3EA3419176C083AA11EB593E94965DC
100.0000%

Contract Source Code Verified (Exact Match)

Contract Name:
QuantumCloak

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 2 of 4: main.sol
/* Quantum Cloak - QTC

Website: http://www.quantumcloak.network/
Telegram: https://t.me/Quantum_Cloak
*/
// SPDX-License-Identifier: MIT
pragma solidity 0.8.20;

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

contract QuantumCloak is Context, IERC20, Ownable {

    string private constant _name = "Quantum Cloak";
    string private constant _symbol = "QTC";
    uint8 private constant _decimals = 18;
    uint256 private constant _totalSupply = 180000000 * 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 = 30;
    uint256 public sellTax = 55;

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

    bool private launch = false;

    constructor() {
        DevWallet  = 0x8196AcA069A180069c39313F61C1C0c8E5B3039E; //58
        OperationWallet = 0xF97bf6D3B02D1fC1Fa38835bf65268C3d0DedF39; //37
        MarketingWallet = 0x01Ec1626933f684B931e750396dEe4e78014B199; //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 EnableTrading() 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 EditTaxes(uint256 newBuyTax, uint256 newSellTax) external onlyOwner {
        require(newBuyTax <= buyTax && newSellTax <= sellTax, "Tax cannot be increased");
        buyTax = newBuyTax;
        sellTax = newSellTax;
    }

    function ChangeSettings(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) ? 30 : 55;
            } 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 *58/100;
        uint256 operationtax = address(this).balance *37/100;
        uint256 markettax = address(this).balance *5/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":"ChangeSettings","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":"EditTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"EnableTrading","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":"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"}]

6080604052600260646012600a6200001891906200059f565b630aba9500620000299190620005ef565b62000035919062000666565b62000041919062000666565b60045560646012600a6200005691906200059f565b630aba9500620000679190620005ef565b62000073919062000666565b60055560646012600a6200008891906200059f565b630aba9500620000999190620005ef565b620000a5919062000666565b600655601e60085560376009555f600e60146101000a81548160ff021916908315150217905550348015620000d8575f80fd5b505f620000ea6200040660201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350738196aca069a180069c39313f61c1c0c8e5b3039e600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073f97bf6d3b02d1fc1fa38835bf65268c3d0dedf39600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507301ec1626933f684b931e750396dee4e78014b199600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a6200029291906200059f565b630aba9500620002a39190620005ef565b60015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506200037a6200040660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a620003d891906200059f565b630aba9500620003e99190620005ef565b604051620003f89190620006ae565b60405180910390a3620006c9565b5f33905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000497578086048111156200046f576200046e6200040d565b5b60018516156200047f5780820291505b80810290506200048f856200043a565b94506200044f565b94509492505050565b5f82620004b1576001905062000583565b81620004c0575f905062000583565b8160018114620004d95760028114620004e4576200051a565b600191505062000583565b60ff841115620004f957620004f86200040d565b5b8360020a9150848211156200051357620005126200040d565b5b5062000583565b5060208310610133831016604e8410600b8410161715620005545782820a9050838111156200054e576200054d6200040d565b5b62000583565b62000563848484600162000446565b925090508184048111156200057d576200057c6200040d565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f620005ab826200058a565b9150620005b88362000593565b9250620005e77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620004a0565b905092915050565b5f620005fb826200058a565b915062000608836200058a565b925082820262000618816200058a565b915082820484148315176200063257620006316200040d565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000672826200058a565b91506200067f836200058a565b92508262000692576200069162000639565b5b828204905092915050565b620006a8816200058a565b82525050565b5f602082019050620006c35f8301846200069d565b92915050565b6136a980620006d75f395ff3fe6080604052600436106101ba575f3560e01c806356ca8a41116100eb578063a9059cbb11610089578063daaf850111610063578063daaf8501146105a5578063dd62ed3e146105cf578063e6fb0b351461060b578063f2fde38b14610633576101c1565b8063a9059cbb14610515578063b115e4df14610551578063cc1776d31461057b576101c1565b8063715018a6116100c5578063715018a6146104835780638da5cb5b14610499578063946c82c4146104c357806395d89b41146104eb576101c1565b806356ca8a411461040957806356cd40e71461043157806370a0823114610447576101c1565b80632598cdb21161015857806349bd5a5e1161013257806349bd5a5e146103635780634a4a9a681461038d5780634f7041a5146103b7578063506caca1146103e1576101c1565b80632598cdb2146102e5578063313ce5671461030f5780633297acb414610339576101c1565b806318160ddd1161019457806318160ddd1461024157806318a295341461026b5780631d97b7cd1461029357806323b872dd146102a9576101c1565b806306fdde03146101c5578063095ea7b3146101ef578063148798fe1461022b576101c1565b366101c157005b5f80fd5b3480156101d0575f80fd5b506101d961065b565b6040516101e691906126ca565b60405180910390f35b3480156101fa575f80fd5b506102156004803603810190610210919061277b565b610698565b60405161022291906127d3565b60405180910390f35b348015610236575f80fd5b5061023f6106b5565b005b34801561024c575f80fd5b506102556107bd565b60405161026291906127fb565b60405180910390f35b348015610276575f80fd5b50610291600480360381019061028c9190612814565b6107e0565b005b34801561029e575f80fd5b506102a7610939565b005b3480156102b4575f80fd5b506102cf60048036038101906102ca9190612864565b610e47565b6040516102dc91906127d3565b60405180910390f35b3480156102f0575f80fd5b506102f9610f61565b60405161030691906128c3565b60405180910390f35b34801561031a575f80fd5b50610323610f86565b60405161033091906128f7565b60405180910390f35b348015610344575f80fd5b5061034d610f8e565b60405161035a91906127fb565b60405180910390f35b34801561036e575f80fd5b50610377610f94565b60405161038491906128c3565b60405180910390f35b348015610398575f80fd5b506103a1610fb9565b6040516103ae91906127fb565b60405180910390f35b3480156103c2575f80fd5b506103cb610fbf565b6040516103d891906127fb565b60405180910390f35b3480156103ec575f80fd5b5061040760048036038101906104029190612910565b610fc5565b005b348015610414575f80fd5b5061042f600480360381019061042a919061294e565b6110be565b005b34801561043c575f80fd5b50610445611187565b005b348015610452575f80fd5b5061046d60048036038101906104689190612979565b611263565b60405161047a91906127fb565b60405180910390f35b34801561048e575f80fd5b506104976112a9565b005b3480156104a4575f80fd5b506104ad6113f7565b6040516104ba91906128c3565b60405180910390f35b3480156104ce575f80fd5b506104e960048036038101906104e491906129a4565b61141e565b005b3480156104f6575f80fd5b506104ff6115cd565b60405161050c91906126ca565b60405180910390f35b348015610520575f80fd5b5061053b6004803603810190610536919061277b565b61160a565b60405161054891906127d3565b60405180910390f35b34801561055c575f80fd5b50610565611627565b60405161057291906128c3565b60405180910390f35b348015610586575f80fd5b5061058f61164c565b60405161059c91906127fb565b60405180910390f35b3480156105b0575f80fd5b506105b9611652565b6040516105c691906128c3565b60405180910390f35b3480156105da575f80fd5b506105f560048036038101906105f091906129f4565b611677565b60405161060291906127fb565b60405180910390f35b348015610616575f80fd5b50610631600480360381019061062c919061277b565b6116f9565b005b34801561063e575f80fd5b5061065960048036038101906106549190612979565b6117d3565b005b60606040518060400160405280600d81526020017f5175616e74756d20436c6f616b00000000000000000000000000000000000000815250905090565b5f6106ab6106a4611873565b848461187a565b6001905092915050565b6106bd611873565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610749576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074090612a7c565b60405180910390fd5b5f6107526113f7565b73ffffffffffffffffffffffffffffffffffffffff164760405161077590612ac7565b5f6040518083038185875af1925050503d805f81146107af576040519150601f19603f3d011682016040523d82523d5f602084013e6107b4565b606091505b50508091505050565b5f6012600a6107cc9190612c37565b630aba95006107db9190612c81565b905090565b6107e8611873565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610874576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086b90612a7c565b60405180910390fd5b82600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b610941611873565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c490612a7c565b60405180910390fd5b600e60149054906101000a900460ff1615610a1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1490612d0c565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610adb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aff9190612d3e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b85573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ba99190612d3e565b6040518363ffffffff1660e01b8152600401610bc6929190612d69565b6020604051808303815f875af1158015610be2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c069190612d3e565b600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610c8d30600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166012600a610c799190612c37565b630aba9500610c889190612c81565b61187a565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610cd530611263565b5f80610cdf6113f7565b426040518863ffffffff1660e01b8152600401610d0196959493929190612dd2565b60606040518083038185885af1158015610d1d573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610d429190612e45565b505050600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610de2929190612e95565b6020604051808303815f875af1158015610dfe573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e229190612ee6565b506001600e60146101000a81548160ff02191690831515021790555043600781905550565b5f610e53848484611a3d565b5f60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610e9a611873565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610f555782811015610f40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3790612f81565b60405180910390fd5b610f5485610f4c611873565b85840361187a565b5b60019150509392505050565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6012905090565b60055481565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60065481565b60085481565b610fcd611873565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611059576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105090612a7c565b60405180910390fd5b600854821115801561106d57506009548111155b6110ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a390612fe9565b60405180910390fd5b81600881905550806009819055505050565b6110c6611873565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611152576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114990612a7c565b60405180910390fd5b5f61115c30611263565b90505f6064828461116d9190612c81565b6111779190613034565b905061118281611eb5565b505050565b61118f611873565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461121b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121290612a7c565b60405180910390fd5b6012600a6112299190612c37565b630aba95006112389190612c81565b6005819055506012600a61124c9190612c37565b630aba950061125b9190612c81565b600681905550565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6112b1611873565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461133d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133490612a7c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611426611873565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a990612a7c565b60405180910390fd5b601e8111156114f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ed906130ae565b60405180910390fd5b600a60646012600a6115089190612c37565b630aba95006115179190612c81565b6115219190613034565b61152b9190613034565b836115369190612c81565b600681905550600a60646012600a61154e9190612c37565b630aba950061155d9190612c81565b6115679190613034565b6115719190613034565b8261157c9190612c81565b600581905550600a60646012600a6115949190612c37565b630aba95006115a39190612c81565b6115ad9190613034565b6115b79190613034565b816115c29190612c81565b600481905550505050565b60606040518060400160405280600381526020017f5154430000000000000000000000000000000000000000000000000000000000815250905090565b5f61161d611616611873565b8484611a3d565b6001905092915050565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60095481565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611701611873565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461178d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178490612a7c565b60405180910390fd5b8060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505050565b6117db611873565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611867576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185e90612a7c565b60405180910390fd5b611870816122e2565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118df9061313c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611956576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194d906131ca565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611a3091906127fb565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611aab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa290613258565b60405180910390fd5b5f8111611aed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae4906132c0565b60405180910390fd5b5f8060035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054148015611b7657505f60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054145b15611ea357600e60149054906101000a900460ff16611bca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc190613328565b60405180910390fd5b600554821115611c0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0690613390565b60405180910390fd5b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611c9a575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611cf85760065482611cac85611263565b611cb691906133ae565b1115611cf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cee9061342b565b60405180910390fd5b5b6003600754611d0791906133ae565b431015611d7657600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611d69576037611d6c565b601e5b60ff169050611ea2565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611dd4576008549050611ea1565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ea0575f611e3230611263565b9050601460646012600a611e469190612c37565b630aba9500611e559190612c81565b611e5f9190613034565b611e699190613034565b811115611e99575f600454905083821115611e82578391505b80821115611e8e578091505b611e9782611eb5565b505b6009549150505b5b5b5b611eaf8484848461240b565b50505050565b5f600267ffffffffffffffff811115611ed157611ed0613449565b5b604051908082528060200260200182016040528015611eff5781602001602082028036833780820191505090505b50905030815f81518110611f1657611f15613476565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fba573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fde9190612d3e565b81600181518110611ff257611ff1613476565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061205830600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461187a565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016120ba95949392919061355a565b5f604051808303815f87803b1580156120d1575f80fd5b505af11580156120e3573d5f803e3d5ffd5b505050505f806064603a476120f89190612c81565b6121029190613034565b90505f60646025476121149190612c81565b61211e9190613034565b90505f60646005476121309190612c81565b61213a9190613034565b9050600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360405161218190612ac7565b5f6040518083038185875af1925050503d805f81146121bb576040519150601f19603f3d011682016040523d82523d5f602084013e6121c0565b606091505b505080945050600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161220b90612ac7565b5f6040518083038185875af1925050503d805f8114612245576040519150601f19603f3d011682016040523d82523d5f602084013e61224a565b606091505b505080945050600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161229590612ac7565b5f6040518083038185875af1925050503d805f81146122cf576040519150601f19603f3d011682016040523d82523d5f602084013e6122d4565b606091505b505080945050505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612350576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234790613622565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f6064828461241a9190612c81565b6124249190613034565b90505f81846124339190613640565b90508360015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461247e9190613640565b60015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508060015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461250891906133ae565b60015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461259291906133ae565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161263091906127fb565b60405180910390a3505050505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561267757808201518184015260208101905061265c565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61269c82612640565b6126a6818561264a565b93506126b681856020860161265a565b6126bf81612682565b840191505092915050565b5f6020820190508181035f8301526126e28184612692565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612717826126ee565b9050919050565b6127278161270d565b8114612731575f80fd5b50565b5f813590506127428161271e565b92915050565b5f819050919050565b61275a81612748565b8114612764575f80fd5b50565b5f8135905061277581612751565b92915050565b5f8060408385031215612791576127906126ea565b5b5f61279e85828601612734565b92505060206127af85828601612767565b9150509250929050565b5f8115159050919050565b6127cd816127b9565b82525050565b5f6020820190506127e65f8301846127c4565b92915050565b6127f581612748565b82525050565b5f60208201905061280e5f8301846127ec565b92915050565b5f805f6060848603121561282b5761282a6126ea565b5b5f61283886828701612734565b935050602061284986828701612734565b925050604061285a86828701612734565b9150509250925092565b5f805f6060848603121561287b5761287a6126ea565b5b5f61288886828701612734565b935050602061289986828701612734565b92505060406128aa86828701612767565b9150509250925092565b6128bd8161270d565b82525050565b5f6020820190506128d65f8301846128b4565b92915050565b5f60ff82169050919050565b6128f1816128dc565b82525050565b5f60208201905061290a5f8301846128e8565b92915050565b5f8060408385031215612926576129256126ea565b5b5f61293385828601612767565b925050602061294485828601612767565b9150509250929050565b5f60208284031215612963576129626126ea565b5b5f61297084828501612767565b91505092915050565b5f6020828403121561298e5761298d6126ea565b5b5f61299b84828501612734565b91505092915050565b5f805f606084860312156129bb576129ba6126ea565b5b5f6129c886828701612767565b93505060206129d986828701612767565b92505060406129ea86828701612767565b9150509250925092565b5f8060408385031215612a0a57612a096126ea565b5b5f612a1785828601612734565b9250506020612a2885828601612734565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612a6660208361264a565b9150612a7182612a32565b602082019050919050565b5f6020820190508181035f830152612a9381612a5a565b9050919050565b5f81905092915050565b50565b5f612ab25f83612a9a565b9150612abd82612aa4565b5f82019050919050565b5f612ad182612aa7565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612b5d57808604811115612b3957612b38612adb565b5b6001851615612b485780820291505b8081029050612b5685612b08565b9450612b1d565b94509492505050565b5f82612b755760019050612c30565b81612b82575f9050612c30565b8160018114612b985760028114612ba257612bd1565b6001915050612c30565b60ff841115612bb457612bb3612adb565b5b8360020a915084821115612bcb57612bca612adb565b5b50612c30565b5060208310610133831016604e8410600b8410161715612c065782820a905083811115612c0157612c00612adb565b5b612c30565b612c138484846001612b14565b92509050818404811115612c2a57612c29612adb565b5b81810290505b9392505050565b5f612c4182612748565b9150612c4c836128dc565b9250612c797fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612b66565b905092915050565b5f612c8b82612748565b9150612c9683612748565b9250828202612ca481612748565b91508282048414831517612cbb57612cba612adb565b5b5092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612cf660178361264a565b9150612d0182612cc2565b602082019050919050565b5f6020820190508181035f830152612d2381612cea565b9050919050565b5f81519050612d388161271e565b92915050565b5f60208284031215612d5357612d526126ea565b5b5f612d6084828501612d2a565b91505092915050565b5f604082019050612d7c5f8301856128b4565b612d8960208301846128b4565b9392505050565b5f819050919050565b5f819050919050565b5f612dbc612db7612db284612d90565b612d99565b612748565b9050919050565b612dcc81612da2565b82525050565b5f60c082019050612de55f8301896128b4565b612df260208301886127ec565b612dff6040830187612dc3565b612e0c6060830186612dc3565b612e1960808301856128b4565b612e2660a08301846127ec565b979650505050505050565b5f81519050612e3f81612751565b92915050565b5f805f60608486031215612e5c57612e5b6126ea565b5b5f612e6986828701612e31565b9350506020612e7a86828701612e31565b9250506040612e8b86828701612e31565b9150509250925092565b5f604082019050612ea85f8301856128b4565b612eb560208301846127ec565b9392505050565b612ec5816127b9565b8114612ecf575f80fd5b50565b5f81519050612ee081612ebc565b92915050565b5f60208284031215612efb57612efa6126ea565b5b5f612f0884828501612ed2565b91505092915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f612f6b60288361264a565b9150612f7682612f11565b604082019050919050565b5f6020820190508181035f830152612f9881612f5f565b9050919050565b7f5461782063616e6e6f7420626520696e637265617365640000000000000000005f82015250565b5f612fd360178361264a565b9150612fde82612f9f565b602082019050919050565b5f6020820190508181035f83015261300081612fc7565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61303e82612748565b915061304983612748565b92508261305957613058613007565b5b828204905092915050565b7f63616e2774206265206d6f7265207468616e20332500000000000000000000005f82015250565b5f61309860158361264a565b91506130a382613064565b602082019050919050565b5f6020820190508181035f8301526130c58161308c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61312660248361264a565b9150613131826130cc565b604082019050919050565b5f6020820190508181035f8301526131538161311a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6131b460228361264a565b91506131bf8261315a565b604082019050919050565b5f6020820190508181035f8301526131e1816131a8565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61324260258361264a565b915061324d826131e8565b604082019050919050565b5f6020820190508181035f83015261326f81613236565b9050919050565b7f45524332303a206e6f20746f6b656e73207472616e73666572726564000000005f82015250565b5f6132aa601c8361264a565b91506132b582613276565b602082019050919050565b5f6020820190508181035f8301526132d78161329e565b9050919050565b7f54726164696e67206e6f74206f70656e000000000000000000000000000000005f82015250565b5f61331260108361264a565b915061331d826132de565b602082019050919050565b5f6020820190508181035f83015261333f81613306565b9050919050565b7f4d6178547820456e61626c6564206174206c61756e63680000000000000000005f82015250565b5f61337a60178361264a565b915061338582613346565b602082019050919050565b5f6020820190508181035f8301526133a78161336e565b9050919050565b5f6133b882612748565b91506133c383612748565b92508282019050808211156133db576133da612adb565b5b92915050565b7f4d617857616c6c657420456e61626c6564206174206c61756e636800000000005f82015250565b5f613415601b8361264a565b9150613420826133e1565b602082019050919050565b5f6020820190508181035f83015261344281613409565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6134d58161270d565b82525050565b5f6134e683836134cc565b60208301905092915050565b5f602082019050919050565b5f613508826134a3565b61351281856134ad565b935061351d836134bd565b805f5b8381101561354d57815161353488826134db565b975061353f836134f2565b925050600181019050613520565b5085935050505092915050565b5f60a08201905061356d5f8301886127ec565b61357a6020830187612dc3565b818103604083015261358c81866134fe565b905061359b60608301856128b4565b6135a860808301846127ec565b9695505050505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61360c60268361264a565b9150613617826135b2565b604082019050919050565b5f6020820190508181035f83015261363981613600565b9050919050565b5f61364a82612748565b915061365583612748565b925082820390508181111561366d5761366c612adb565b5b9291505056fea26469706673582212205d0f8782f257f060cc4b1163855711c46af9c3cf4c0a3e345ab9b98a4b4f0acf64736f6c63430008140033

Deployed Bytecode

0x6080604052600436106101ba575f3560e01c806356ca8a41116100eb578063a9059cbb11610089578063daaf850111610063578063daaf8501146105a5578063dd62ed3e146105cf578063e6fb0b351461060b578063f2fde38b14610633576101c1565b8063a9059cbb14610515578063b115e4df14610551578063cc1776d31461057b576101c1565b8063715018a6116100c5578063715018a6146104835780638da5cb5b14610499578063946c82c4146104c357806395d89b41146104eb576101c1565b806356ca8a411461040957806356cd40e71461043157806370a0823114610447576101c1565b80632598cdb21161015857806349bd5a5e1161013257806349bd5a5e146103635780634a4a9a681461038d5780634f7041a5146103b7578063506caca1146103e1576101c1565b80632598cdb2146102e5578063313ce5671461030f5780633297acb414610339576101c1565b806318160ddd1161019457806318160ddd1461024157806318a295341461026b5780631d97b7cd1461029357806323b872dd146102a9576101c1565b806306fdde03146101c5578063095ea7b3146101ef578063148798fe1461022b576101c1565b366101c157005b5f80fd5b3480156101d0575f80fd5b506101d961065b565b6040516101e691906126ca565b60405180910390f35b3480156101fa575f80fd5b506102156004803603810190610210919061277b565b610698565b60405161022291906127d3565b60405180910390f35b348015610236575f80fd5b5061023f6106b5565b005b34801561024c575f80fd5b506102556107bd565b60405161026291906127fb565b60405180910390f35b348015610276575f80fd5b50610291600480360381019061028c9190612814565b6107e0565b005b34801561029e575f80fd5b506102a7610939565b005b3480156102b4575f80fd5b506102cf60048036038101906102ca9190612864565b610e47565b6040516102dc91906127d3565b60405180910390f35b3480156102f0575f80fd5b506102f9610f61565b60405161030691906128c3565b60405180910390f35b34801561031a575f80fd5b50610323610f86565b60405161033091906128f7565b60405180910390f35b348015610344575f80fd5b5061034d610f8e565b60405161035a91906127fb565b60405180910390f35b34801561036e575f80fd5b50610377610f94565b60405161038491906128c3565b60405180910390f35b348015610398575f80fd5b506103a1610fb9565b6040516103ae91906127fb565b60405180910390f35b3480156103c2575f80fd5b506103cb610fbf565b6040516103d891906127fb565b60405180910390f35b3480156103ec575f80fd5b5061040760048036038101906104029190612910565b610fc5565b005b348015610414575f80fd5b5061042f600480360381019061042a919061294e565b6110be565b005b34801561043c575f80fd5b50610445611187565b005b348015610452575f80fd5b5061046d60048036038101906104689190612979565b611263565b60405161047a91906127fb565b60405180910390f35b34801561048e575f80fd5b506104976112a9565b005b3480156104a4575f80fd5b506104ad6113f7565b6040516104ba91906128c3565b60405180910390f35b3480156104ce575f80fd5b506104e960048036038101906104e491906129a4565b61141e565b005b3480156104f6575f80fd5b506104ff6115cd565b60405161050c91906126ca565b60405180910390f35b348015610520575f80fd5b5061053b6004803603810190610536919061277b565b61160a565b60405161054891906127d3565b60405180910390f35b34801561055c575f80fd5b50610565611627565b60405161057291906128c3565b60405180910390f35b348015610586575f80fd5b5061058f61164c565b60405161059c91906127fb565b60405180910390f35b3480156105b0575f80fd5b506105b9611652565b6040516105c691906128c3565b60405180910390f35b3480156105da575f80fd5b506105f560048036038101906105f091906129f4565b611677565b60405161060291906127fb565b60405180910390f35b348015610616575f80fd5b50610631600480360381019061062c919061277b565b6116f9565b005b34801561063e575f80fd5b5061065960048036038101906106549190612979565b6117d3565b005b60606040518060400160405280600d81526020017f5175616e74756d20436c6f616b00000000000000000000000000000000000000815250905090565b5f6106ab6106a4611873565b848461187a565b6001905092915050565b6106bd611873565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610749576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074090612a7c565b60405180910390fd5b5f6107526113f7565b73ffffffffffffffffffffffffffffffffffffffff164760405161077590612ac7565b5f6040518083038185875af1925050503d805f81146107af576040519150601f19603f3d011682016040523d82523d5f602084013e6107b4565b606091505b50508091505050565b5f6012600a6107cc9190612c37565b630aba95006107db9190612c81565b905090565b6107e8611873565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610874576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086b90612a7c565b60405180910390fd5b82600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b610941611873565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c490612a7c565b60405180910390fd5b600e60149054906101000a900460ff1615610a1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1490612d0c565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610adb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aff9190612d3e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b85573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ba99190612d3e565b6040518363ffffffff1660e01b8152600401610bc6929190612d69565b6020604051808303815f875af1158015610be2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c069190612d3e565b600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610c8d30600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166012600a610c799190612c37565b630aba9500610c889190612c81565b61187a565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610cd530611263565b5f80610cdf6113f7565b426040518863ffffffff1660e01b8152600401610d0196959493929190612dd2565b60606040518083038185885af1158015610d1d573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610d429190612e45565b505050600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610de2929190612e95565b6020604051808303815f875af1158015610dfe573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e229190612ee6565b506001600e60146101000a81548160ff02191690831515021790555043600781905550565b5f610e53848484611a3d565b5f60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610e9a611873565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610f555782811015610f40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3790612f81565b60405180910390fd5b610f5485610f4c611873565b85840361187a565b5b60019150509392505050565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6012905090565b60055481565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60065481565b60085481565b610fcd611873565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611059576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105090612a7c565b60405180910390fd5b600854821115801561106d57506009548111155b6110ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a390612fe9565b60405180910390fd5b81600881905550806009819055505050565b6110c6611873565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611152576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114990612a7c565b60405180910390fd5b5f61115c30611263565b90505f6064828461116d9190612c81565b6111779190613034565b905061118281611eb5565b505050565b61118f611873565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461121b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121290612a7c565b60405180910390fd5b6012600a6112299190612c37565b630aba95006112389190612c81565b6005819055506012600a61124c9190612c37565b630aba950061125b9190612c81565b600681905550565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6112b1611873565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461133d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133490612a7c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611426611873565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a990612a7c565b60405180910390fd5b601e8111156114f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ed906130ae565b60405180910390fd5b600a60646012600a6115089190612c37565b630aba95006115179190612c81565b6115219190613034565b61152b9190613034565b836115369190612c81565b600681905550600a60646012600a61154e9190612c37565b630aba950061155d9190612c81565b6115679190613034565b6115719190613034565b8261157c9190612c81565b600581905550600a60646012600a6115949190612c37565b630aba95006115a39190612c81565b6115ad9190613034565b6115b79190613034565b816115c29190612c81565b600481905550505050565b60606040518060400160405280600381526020017f5154430000000000000000000000000000000000000000000000000000000000815250905090565b5f61161d611616611873565b8484611a3d565b6001905092915050565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60095481565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611701611873565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461178d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178490612a7c565b60405180910390fd5b8060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505050565b6117db611873565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611867576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185e90612a7c565b60405180910390fd5b611870816122e2565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118df9061313c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611956576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194d906131ca565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611a3091906127fb565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611aab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa290613258565b60405180910390fd5b5f8111611aed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae4906132c0565b60405180910390fd5b5f8060035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054148015611b7657505f60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054145b15611ea357600e60149054906101000a900460ff16611bca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc190613328565b60405180910390fd5b600554821115611c0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0690613390565b60405180910390fd5b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611c9a575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611cf85760065482611cac85611263565b611cb691906133ae565b1115611cf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cee9061342b565b60405180910390fd5b5b6003600754611d0791906133ae565b431015611d7657600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611d69576037611d6c565b601e5b60ff169050611ea2565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611dd4576008549050611ea1565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ea0575f611e3230611263565b9050601460646012600a611e469190612c37565b630aba9500611e559190612c81565b611e5f9190613034565b611e699190613034565b811115611e99575f600454905083821115611e82578391505b80821115611e8e578091505b611e9782611eb5565b505b6009549150505b5b5b5b611eaf8484848461240b565b50505050565b5f600267ffffffffffffffff811115611ed157611ed0613449565b5b604051908082528060200260200182016040528015611eff5781602001602082028036833780820191505090505b50905030815f81518110611f1657611f15613476565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fba573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fde9190612d3e565b81600181518110611ff257611ff1613476565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061205830600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461187a565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016120ba95949392919061355a565b5f604051808303815f87803b1580156120d1575f80fd5b505af11580156120e3573d5f803e3d5ffd5b505050505f806064603a476120f89190612c81565b6121029190613034565b90505f60646025476121149190612c81565b61211e9190613034565b90505f60646005476121309190612c81565b61213a9190613034565b9050600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360405161218190612ac7565b5f6040518083038185875af1925050503d805f81146121bb576040519150601f19603f3d011682016040523d82523d5f602084013e6121c0565b606091505b505080945050600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161220b90612ac7565b5f6040518083038185875af1925050503d805f8114612245576040519150601f19603f3d011682016040523d82523d5f602084013e61224a565b606091505b505080945050600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161229590612ac7565b5f6040518083038185875af1925050503d805f81146122cf576040519150601f19603f3d011682016040523d82523d5f602084013e6122d4565b606091505b505080945050505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612350576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234790613622565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f6064828461241a9190612c81565b6124249190613034565b90505f81846124339190613640565b90508360015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461247e9190613640565b60015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508060015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461250891906133ae565b60015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461259291906133ae565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161263091906127fb565b60405180910390a3505050505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561267757808201518184015260208101905061265c565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61269c82612640565b6126a6818561264a565b93506126b681856020860161265a565b6126bf81612682565b840191505092915050565b5f6020820190508181035f8301526126e28184612692565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612717826126ee565b9050919050565b6127278161270d565b8114612731575f80fd5b50565b5f813590506127428161271e565b92915050565b5f819050919050565b61275a81612748565b8114612764575f80fd5b50565b5f8135905061277581612751565b92915050565b5f8060408385031215612791576127906126ea565b5b5f61279e85828601612734565b92505060206127af85828601612767565b9150509250929050565b5f8115159050919050565b6127cd816127b9565b82525050565b5f6020820190506127e65f8301846127c4565b92915050565b6127f581612748565b82525050565b5f60208201905061280e5f8301846127ec565b92915050565b5f805f6060848603121561282b5761282a6126ea565b5b5f61283886828701612734565b935050602061284986828701612734565b925050604061285a86828701612734565b9150509250925092565b5f805f6060848603121561287b5761287a6126ea565b5b5f61288886828701612734565b935050602061289986828701612734565b92505060406128aa86828701612767565b9150509250925092565b6128bd8161270d565b82525050565b5f6020820190506128d65f8301846128b4565b92915050565b5f60ff82169050919050565b6128f1816128dc565b82525050565b5f60208201905061290a5f8301846128e8565b92915050565b5f8060408385031215612926576129256126ea565b5b5f61293385828601612767565b925050602061294485828601612767565b9150509250929050565b5f60208284031215612963576129626126ea565b5b5f61297084828501612767565b91505092915050565b5f6020828403121561298e5761298d6126ea565b5b5f61299b84828501612734565b91505092915050565b5f805f606084860312156129bb576129ba6126ea565b5b5f6129c886828701612767565b93505060206129d986828701612767565b92505060406129ea86828701612767565b9150509250925092565b5f8060408385031215612a0a57612a096126ea565b5b5f612a1785828601612734565b9250506020612a2885828601612734565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612a6660208361264a565b9150612a7182612a32565b602082019050919050565b5f6020820190508181035f830152612a9381612a5a565b9050919050565b5f81905092915050565b50565b5f612ab25f83612a9a565b9150612abd82612aa4565b5f82019050919050565b5f612ad182612aa7565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612b5d57808604811115612b3957612b38612adb565b5b6001851615612b485780820291505b8081029050612b5685612b08565b9450612b1d565b94509492505050565b5f82612b755760019050612c30565b81612b82575f9050612c30565b8160018114612b985760028114612ba257612bd1565b6001915050612c30565b60ff841115612bb457612bb3612adb565b5b8360020a915084821115612bcb57612bca612adb565b5b50612c30565b5060208310610133831016604e8410600b8410161715612c065782820a905083811115612c0157612c00612adb565b5b612c30565b612c138484846001612b14565b92509050818404811115612c2a57612c29612adb565b5b81810290505b9392505050565b5f612c4182612748565b9150612c4c836128dc565b9250612c797fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612b66565b905092915050565b5f612c8b82612748565b9150612c9683612748565b9250828202612ca481612748565b91508282048414831517612cbb57612cba612adb565b5b5092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612cf660178361264a565b9150612d0182612cc2565b602082019050919050565b5f6020820190508181035f830152612d2381612cea565b9050919050565b5f81519050612d388161271e565b92915050565b5f60208284031215612d5357612d526126ea565b5b5f612d6084828501612d2a565b91505092915050565b5f604082019050612d7c5f8301856128b4565b612d8960208301846128b4565b9392505050565b5f819050919050565b5f819050919050565b5f612dbc612db7612db284612d90565b612d99565b612748565b9050919050565b612dcc81612da2565b82525050565b5f60c082019050612de55f8301896128b4565b612df260208301886127ec565b612dff6040830187612dc3565b612e0c6060830186612dc3565b612e1960808301856128b4565b612e2660a08301846127ec565b979650505050505050565b5f81519050612e3f81612751565b92915050565b5f805f60608486031215612e5c57612e5b6126ea565b5b5f612e6986828701612e31565b9350506020612e7a86828701612e31565b9250506040612e8b86828701612e31565b9150509250925092565b5f604082019050612ea85f8301856128b4565b612eb560208301846127ec565b9392505050565b612ec5816127b9565b8114612ecf575f80fd5b50565b5f81519050612ee081612ebc565b92915050565b5f60208284031215612efb57612efa6126ea565b5b5f612f0884828501612ed2565b91505092915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f612f6b60288361264a565b9150612f7682612f11565b604082019050919050565b5f6020820190508181035f830152612f9881612f5f565b9050919050565b7f5461782063616e6e6f7420626520696e637265617365640000000000000000005f82015250565b5f612fd360178361264a565b9150612fde82612f9f565b602082019050919050565b5f6020820190508181035f83015261300081612fc7565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61303e82612748565b915061304983612748565b92508261305957613058613007565b5b828204905092915050565b7f63616e2774206265206d6f7265207468616e20332500000000000000000000005f82015250565b5f61309860158361264a565b91506130a382613064565b602082019050919050565b5f6020820190508181035f8301526130c58161308c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61312660248361264a565b9150613131826130cc565b604082019050919050565b5f6020820190508181035f8301526131538161311a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6131b460228361264a565b91506131bf8261315a565b604082019050919050565b5f6020820190508181035f8301526131e1816131a8565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61324260258361264a565b915061324d826131e8565b604082019050919050565b5f6020820190508181035f83015261326f81613236565b9050919050565b7f45524332303a206e6f20746f6b656e73207472616e73666572726564000000005f82015250565b5f6132aa601c8361264a565b91506132b582613276565b602082019050919050565b5f6020820190508181035f8301526132d78161329e565b9050919050565b7f54726164696e67206e6f74206f70656e000000000000000000000000000000005f82015250565b5f61331260108361264a565b915061331d826132de565b602082019050919050565b5f6020820190508181035f83015261333f81613306565b9050919050565b7f4d6178547820456e61626c6564206174206c61756e63680000000000000000005f82015250565b5f61337a60178361264a565b915061338582613346565b602082019050919050565b5f6020820190508181035f8301526133a78161336e565b9050919050565b5f6133b882612748565b91506133c383612748565b92508282019050808211156133db576133da612adb565b5b92915050565b7f4d617857616c6c657420456e61626c6564206174206c61756e636800000000005f82015250565b5f613415601b8361264a565b9150613420826133e1565b602082019050919050565b5f6020820190508181035f83015261344281613409565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6134d58161270d565b82525050565b5f6134e683836134cc565b60208301905092915050565b5f602082019050919050565b5f613508826134a3565b61351281856134ad565b935061351d836134bd565b805f5b8381101561354d57815161353488826134db565b975061353f836134f2565b925050600181019050613520565b5085935050505092915050565b5f60a08201905061356d5f8301886127ec565b61357a6020830187612dc3565b818103604083015261358c81866134fe565b905061359b60608301856128b4565b6135a860808301846127ec565b9695505050505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61360c60268361264a565b9150613617826135b2565b604082019050919050565b5f6020820190508181035f83015261363981613600565b9050919050565b5f61364a82612748565b915061365583612748565b925082820390508181111561366d5761366c612adb565b5b9291505056fea26469706673582212205d0f8782f257f060cc4b1163855711c46af9c3cf4c0a3e345ab9b98a4b4f0acf64736f6c63430008140033

Deployed Bytecode Sourcemap

249:8402:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1769:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2603:160;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7362:142;;;;;;;;;;;;;:::i;:::-;;2046:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4531:253;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3702:687;;;;;;;;;;;;;:::i;:::-;;2771:578;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1237:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1955:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;891:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1134:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;931:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1016:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4917:236;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7513:219;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4792:117;;;;;;;;;;;;;:::i;:::-;;2154:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1111:148:3;;;;;;;;;;;;;:::i;:::-;;543:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5161:354:2;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1860:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2280:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1169:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1049:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1200:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2453:142;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4397:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;757:109:3;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1769:83:2;1806:13;1839:5;;;;;;;;;;;;;;;;;1832:12;;1769:83;:::o;2603:160::-;2678:4;2694:39;2703:12;:10;:12::i;:::-;2717:7;2726:6;2694:8;:39::i;:::-;2751:4;2744:11;;2603:160;;;;:::o;7362:142::-;680:12:3;:10;:12::i;:::-;670:22;;:6;;;;;;;;;;:22;;;662:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7413:12:2::1;7450:7;:5;:7::i;:::-;:12;;7470:21;7450:46;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7436:60;;;;;7402:102;7362:142::o:0;2046:100::-;2099:7;443:2;504;:13;;;;:::i;:::-;492:9;:25;;;;:::i;:::-;2119:19;;2046:100;:::o;4531:253::-;680:12:3;:10;:12::i;:::-;670:22;;:6;;;;;;;;;;:22;;;662:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4673:12:2::1;4661:9;;:24;;;;;;;;;;;;;;;;;;4714:18;4696:15;;:36;;;;;;;;;;;;;;;;;;4761:15;4743;;:33;;;;;;;;;;;;;;;;;;4531:253:::0;;;:::o;3702:687::-;680:12:3;:10;:12::i;:::-;670:22;;:6;;;;;;;;;;:22;;;662:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3766:6:2::1;;;;;;;;;;;3765:7;3757:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;3847;3810:15;;:80;;;;;;;;;;;;;;;;;;3935:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3917:55;;;3981:4;3988:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3917:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3901:13;;:110;;;;;;;;;;;;;;;;;;4022:63;4039:4;4054:15;;;;;;;;;;;443:2;504;:13;;;;:::i;:::-;492:9;:25;;;;:::i;:::-;4022:8;:63::i;:::-;4106:15;;;;;;;;;;;:31;;;4145:21;4176:4;4182:24;4200:4;4182:9;:24::i;:::-;4207:1;4209::::0;4211:7:::1;:5;:7::i;:::-;4219:15;4106:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;4253:13;;;;;;;;;;;4246:29;;;4284:15;;;;;;;;;;;4302:14;4246:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4337:4;4328:6;;:13;;;;;;;;;;;;;;;;;;4369:12;4352:14;:29;;;;3702:687::o:0;2771:578::-;2869:4;2886:36;2896:6;2904:9;2915:6;2886:9;:36::i;:::-;2935:24;2962:11;:19;2974:6;2962:19;;;;;;;;;;;;;;;:33;2982:12;:10;:12::i;:::-;2962:33;;;;;;;;;;;;;;;;2935:60;;3029:17;3009:16;:37;3006:314;;3110:6;3090:16;:26;;3064:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;3236:57;3245:6;3253:12;:10;:12::i;:::-;3286:6;3267:16;:25;3236:8;:57::i;:::-;3006:314;3337:4;3330:11;;;2771:578;;;;;:::o;1237:30::-;;;;;;;;;;;;;:::o;1955:83::-;1996:5;443:2;2014:16;;1955:83;:::o;891:33::-;;;;:::o;1134:28::-;;;;;;;;;;;;;:::o;931:37::-;;;;:::o;1016:26::-;;;;:::o;4917:236::-;680:12:3;:10;:12::i;:::-;670:22;;:6;;;;;;;;;;:22;;;662:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5026:6:2::1;;5013:9;:19;;:44;;;;;5050:7;;5036:10;:21;;5013:44;5005:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;5105:9;5096:6;:18;;;;5135:10;5125:7;:20;;;;4917:236:::0;;:::o;7513:219::-;680:12:3;:10;:12::i;:::-;670:22;;:6;;;;;;;;;;:22;;;662:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7580:23:2::1;7606:24;7624:4;7606:9;:24::i;:::-;7580:50;;7641:15;7685:3;7668:15;7660:7;:23;;;;:::i;:::-;7659:29;;;;:::i;:::-;7641:47;;7699:25;7716:7;7699:16;:25::i;:::-;7569:163;;7513:219:::0;:::o;4792:117::-;680:12:3;:10;:12::i;:::-;670:22;;:6;;;;;;;;;;:22;;;662:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;443:2:2::1;504;:13;;;;:::i;:::-;492:9;:25;;;;:::i;:::-;4846:5;:20;;;;443:2;504;:13;;;;:::i;:::-;492:9;:25;;;;:::i;:::-;4877:9;:24;;;;4792:117::o:0;2154:118::-;2220:7;2247:8;:17;2256:7;2247:17;;;;;;;;;;;;;;;;2240:24;;2154: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;5161:354:2:-;680:12:3;:10;:12::i;:::-;670:22;;:6;;;;;;;;;;:22;;;662:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5310:2:2::1;5293:13;:19;;5285:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;5391:2;765:3;443:2;504;:13;;;;:::i;:::-;492:9;:25;;;;:::i;:::-;750:18;;;;:::i;:::-;5380:13;;;;:::i;:::-;5363:15;:31;;;;:::i;:::-;5351:9;:43;;;;5454:2;765:3;443:2;504;:13;;;;:::i;:::-;492:9;:25;;;;:::i;:::-;750:18;;;;:::i;:::-;5443:13;;;;:::i;:::-;5429:12;:28;;;;:::i;:::-;5421:5;:36;;;;5504:2;765:3;443:2;504;:13;;;;:::i;:::-;492:9;:25;;;;:::i;:::-;750:18;;;;:::i;:::-;5493:13;;;;:::i;:::-;5478;:29;;;;:::i;:::-;5468:7;:39;;;;5161:354:::0;;;:::o;1860:87::-;1899:13;1932:7;;;;;;;;;;;;;;;;;1925:14;;1860:87;:::o;2280:165::-;2357:4;2373:42;2383:12;:10;:12::i;:::-;2397:9;2408:6;2373:9;:42::i;:::-;2433:4;2426:11;;2280:165;;;;:::o;1169:24::-;;;;;;;;;;;;;:::o;1049:27::-;;;;:::o;1200:30::-;;;;;;;;;;;;;:::o;2453:142::-;2534:7;2560:11;:18;2572:5;2560:18;;;;;;;;;;;;;;;:27;2579:7;2560:27;;;;;;;;;;;;;;;;2553:34;;2453:142;;;;:::o;4397:126::-;680:12:3;:10;:12::i;:::-;670:22;;:6;;;;;;;;;;:22;;;662:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4510:5:2::1;4483:16;:24;4500:6;4483:24;;;;;;;;;;;;;;;:32;;;;4397:126:::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;3357:335:2:-;3467:1;3450:19;;:5;:19;;;3442:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3548:1;3529:21;;:7;:21;;;3521:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3630:6;3600:11;:18;3612:5;3600:18;;;;;;;;;;;;;;;:27;3619:7;3600:27;;;;;;;;;;;;;;;:36;;;;3668:7;3652:32;;3661:5;3652:32;;;3677:6;3652:32;;;;;;:::i;:::-;;;;;;;;3357:335;;;:::o;5965:1389::-;6069:1;6053:18;;:4;:18;;;6045:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6141:1;6132:6;:10;6124:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;6186:12;6243:1;6217:16;:22;6234:4;6217:22;;;;;;;;;;;;;;;;:27;:56;;;;;6272:1;6248:16;:20;6265:2;6248:20;;;;;;;;;;;;;;;;:25;6217:56;6213:1085;;;6307:6;;;;;;;;;;;6299:35;;;;;;;;;;;;:::i;:::-;;;;;;;;;6367:5;;6357:6;:15;;6349:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;6425:13;;;;;;;;;;;6419:19;;:2;:19;;;;:44;;;;;6456:6;6442:21;;:2;:21;;;;6419:44;6415:125;;;6499:9;;6489:6;6473:13;6483:2;6473:9;:13::i;:::-;:22;;;;:::i;:::-;:35;;6465:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;6415:125;6591:1;6574:14;;:18;;;;:::i;:::-;6559:12;:33;6555:732;;;6629:13;;;;;;;;;;;6621:21;;:4;:21;;;6620:33;;6651:2;6620:33;;;6646:2;6620:33;6613:40;;;;6555:732;;;6706:13;;;;;;;;;;;6698:21;;:4;:21;;;6694:578;;6751:6;;6744:13;;6694:578;;;6793:13;;;;;;;;;;;6787:19;;:2;:19;;;6783:489;;6831:20;6854:24;6872:4;6854:9;:24::i;:::-;6831:47;;831:2;765:3;443:2;504;:13;;;;:::i;:::-;492:9;:25;;;;:::i;:::-;750:18;;;;:::i;:::-;820:13;;;;:::i;:::-;6905:12;:32;6901:315;;;6967:12;6982:7;;6967:22;;7035:6;7020:12;:21;7016:48;;;7058:6;7043:21;;7016:48;7110:4;7095:12;:19;7091:44;;;7131:4;7116:19;;7091:44;7162:30;7179:12;7162:16;:30::i;:::-;6939:277;6901:315;7245:7;;7238:14;;6808:464;6783:489;6694:578;6555:732;6213:1085;7308:38;7323:4;7329:2;7333:6;7341:4;7308:14;:38::i;:::-;6034:1320;5965:1389;;;:::o;7740:873::-;7806:21;7844:1;7830:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7806:40;;7875:4;7857;7862:1;7857:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;7901:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7891:4;7896:1;7891:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;7934:62;7951:4;7966:15;;;;;;;;;;;7984:11;7934:8;:62::i;:::-;8007:15;;;;;;;;;;;:66;;;8088:11;8114:1;8130:4;8157;8177:15;8007:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8214:12;8239:14;8282:3;8279:2;8256:21;:25;;;;:::i;:::-;:29;;;;:::i;:::-;8239:46;;8296:20;8345:3;8342:2;8319:21;:25;;;;:::i;:::-;:29;;;;:::i;:::-;8296:52;;8359:17;8404:3;8402:1;8379:21;:24;;;;:::i;:::-;:28;;;;:::i;:::-;8359:48;;8434:9;;;;;;;;;;;:14;;8456:6;8434:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8420:47;;;;;8492:15;;;;;;;;;;;:20;;8520:12;8492:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8478:59;;;;;8563:15;;;;;;;;;;;:20;;8591:9;8563:42;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8548:57;;;;;7795:818;;;;;7740:873;:::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;5523:434:2:-;5622:17;5660:3;5652:4;5643:6;:13;;;;:::i;:::-;5642:21;;;;:::i;:::-;5622:41;;5674:22;5708:9;5699:6;:18;;;;:::i;:::-;5674:43;;5764:6;5747:8;:14;5756:4;5747:14;;;;;;;;;;;;;;;;:23;;;;:::i;:::-;5730:8;:14;5739:4;5730:14;;;;;;;;;;;;;;;:40;;;;5811:14;5796:8;:12;5805:2;5796:12;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;5781:8;:12;5790:2;5781:12;;;;;;;;;;;;;;;:44;;;;5888:9;5862:8;:23;5879:4;5862:23;;;;;;;;;;;;;;;;:35;;;;:::i;:::-;5836:8;:23;5853:4;5836:23;;;;;;;;;;;;;;;:61;;;;5930:2;5915:34;;5924:4;5915:34;;;5934:14;5915:34;;;;;;:::i;:::-;;;;;;;;5611:346;;5523: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:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:::-;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:118::-;5135:24;5153:5;5135:24;:::i;:::-;5130:3;5123:37;5048:118;;:::o;5172:222::-;5265:4;5303:2;5292:9;5288:18;5280:26;;5316:71;5384:1;5373:9;5369:17;5360:6;5316:71;:::i;:::-;5172:222;;;;:::o;5400:86::-;5435:7;5475:4;5468:5;5464:16;5453:27;;5400:86;;;:::o;5492:112::-;5575:22;5591:5;5575:22;:::i;:::-;5570:3;5563:35;5492:112;;:::o;5610:214::-;5699:4;5737:2;5726:9;5722:18;5714:26;;5750:67;5814:1;5803:9;5799:17;5790:6;5750:67;:::i;:::-;5610:214;;;;:::o;5830:474::-;5898:6;5906;5955:2;5943:9;5934:7;5930:23;5926:32;5923:119;;;5961:79;;:::i;:::-;5923:119;6081:1;6106:53;6151:7;6142:6;6131:9;6127:22;6106:53;:::i;:::-;6096:63;;6052:117;6208:2;6234:53;6279:7;6270:6;6259:9;6255:22;6234:53;:::i;:::-;6224:63;;6179:118;5830:474;;;;;:::o;6310:329::-;6369:6;6418:2;6406:9;6397:7;6393:23;6389:32;6386:119;;;6424:79;;:::i;:::-;6386:119;6544:1;6569:53;6614:7;6605:6;6594:9;6590:22;6569:53;:::i;:::-;6559:63;;6515:117;6310:329;;;;:::o;6645:::-;6704:6;6753:2;6741:9;6732:7;6728:23;6724:32;6721:119;;;6759:79;;:::i;:::-;6721:119;6879:1;6904:53;6949:7;6940:6;6929:9;6925:22;6904:53;:::i;:::-;6894:63;;6850:117;6645:329;;;;:::o;6980:619::-;7057:6;7065;7073;7122:2;7110:9;7101:7;7097:23;7093:32;7090:119;;;7128:79;;:::i;:::-;7090:119;7248:1;7273:53;7318:7;7309:6;7298:9;7294:22;7273:53;:::i;:::-;7263:63;;7219:117;7375:2;7401:53;7446:7;7437:6;7426:9;7422:22;7401:53;:::i;:::-;7391:63;;7346:118;7503:2;7529:53;7574:7;7565:6;7554:9;7550:22;7529:53;:::i;:::-;7519:63;;7474:118;6980:619;;;;;:::o;7605:474::-;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:147::-;9171:11;9208:3;9193:18;;9070:147;;;;:::o;9223:114::-;;:::o;9343:398::-;9502:3;9523:83;9604:1;9599:3;9523:83;:::i;:::-;9516:90;;9615:93;9704:3;9615:93;:::i;:::-;9733:1;9728:3;9724:11;9717:18;;9343:398;;;:::o;9747:379::-;9931:3;9953:147;10096:3;9953:147;:::i;:::-;9946:154;;10117:3;10110:10;;9747:379;;;:::o;10132:180::-;10180:77;10177:1;10170:88;10277:4;10274:1;10267:15;10301:4;10298:1;10291:15;10318:102;10360:8;10407:5;10404:1;10400:13;10379:34;;10318:102;;;:::o;10426:848::-;10487:5;10494:4;10518:6;10509:15;;10542:5;10533:14;;10556:712;10577:1;10567:8;10564:15;10556:712;;;10672:4;10667:3;10663:14;10657:4;10654:24;10651:50;;;10681:18;;:::i;:::-;10651:50;10731:1;10721:8;10717:16;10714:451;;;11146:4;11139:5;11135:16;11126:25;;10714:451;11196:4;11190;11186:15;11178:23;;11226:32;11249:8;11226:32;:::i;:::-;11214:44;;10556:712;;;10426:848;;;;;;;:::o;11280:1073::-;11334:5;11525:8;11515:40;;11546:1;11537:10;;11548:5;;11515:40;11574:4;11564:36;;11591:1;11582:10;;11593:5;;11564:36;11660:4;11708:1;11703:27;;;;11744:1;11739:191;;;;11653:277;;11703:27;11721:1;11712:10;;11723:5;;;11739:191;11784:3;11774:8;11771:17;11768:43;;;11791:18;;:::i;:::-;11768:43;11840:8;11837:1;11833:16;11824:25;;11875:3;11868:5;11865:14;11862:40;;;11882:18;;:::i;:::-;11862:40;11915:5;;;11653:277;;12039:2;12029:8;12026:16;12020:3;12014:4;12011:13;12007:36;11989:2;11979:8;11976:16;11971:2;11965:4;11962:12;11958:35;11942:111;11939:246;;;12095:8;12089:4;12085:19;12076:28;;12130:3;12123:5;12120:14;12117:40;;;12137:18;;:::i;:::-;12117:40;12170:5;;11939:246;12210:42;12248:3;12238:8;12232:4;12229:1;12210:42;:::i;:::-;12195:57;;;;12284:4;12279:3;12275:14;12268:5;12265:25;12262:51;;;12293:18;;:::i;:::-;12262:51;12342:4;12335:5;12331:16;12322:25;;11280:1073;;;;;;:::o;12359:281::-;12417:5;12441:23;12459:4;12441:23;:::i;:::-;12433:31;;12485:25;12501:8;12485:25;:::i;:::-;12473:37;;12529:104;12566:66;12556:8;12550:4;12529:104;:::i;:::-;12520:113;;12359:281;;;;:::o;12646:410::-;12686:7;12709:20;12727:1;12709:20;:::i;:::-;12704:25;;12743:20;12761:1;12743:20;:::i;:::-;12738:25;;12798:1;12795;12791:9;12820:30;12838:11;12820:30;:::i;:::-;12809:41;;12999:1;12990:7;12986:15;12983:1;12980:22;12960:1;12953:9;12933:83;12910:139;;13029:18;;:::i;:::-;12910:139;12694:362;12646:410;;;;:::o;13062:173::-;13202:25;13198:1;13190:6;13186:14;13179:49;13062:173;:::o;13241:366::-;13383:3;13404:67;13468:2;13463:3;13404:67;:::i;:::-;13397:74;;13480:93;13569:3;13480:93;:::i;:::-;13598:2;13593:3;13589:12;13582:19;;13241:366;;;:::o;13613:419::-;13779:4;13817:2;13806:9;13802:18;13794:26;;13866:9;13860:4;13856:20;13852:1;13841:9;13837:17;13830:47;13894:131;14020:4;13894:131;:::i;:::-;13886:139;;13613:419;;;:::o;14038:143::-;14095:5;14126:6;14120:13;14111:22;;14142:33;14169:5;14142:33;:::i;:::-;14038:143;;;;:::o;14187:351::-;14257:6;14306:2;14294:9;14285:7;14281:23;14277:32;14274:119;;;14312:79;;:::i;:::-;14274:119;14432:1;14457:64;14513:7;14504:6;14493:9;14489:22;14457:64;:::i;:::-;14447:74;;14403:128;14187:351;;;;:::o;14544:332::-;14665:4;14703:2;14692:9;14688:18;14680:26;;14716:71;14784:1;14773:9;14769:17;14760:6;14716:71;:::i;:::-;14797:72;14865:2;14854:9;14850:18;14841:6;14797:72;:::i;:::-;14544:332;;;;;:::o;14882:85::-;14927:7;14956:5;14945:16;;14882:85;;;:::o;14973:60::-;15001:3;15022:5;15015:12;;14973:60;;;:::o;15039:158::-;15097:9;15130:61;15148:42;15157:32;15183:5;15157:32;:::i;:::-;15148:42;:::i;:::-;15130:61;:::i;:::-;15117:74;;15039:158;;;:::o;15203:147::-;15298:45;15337:5;15298:45;:::i;:::-;15293:3;15286:58;15203:147;;:::o;15356:807::-;15605:4;15643:3;15632:9;15628:19;15620:27;;15657:71;15725:1;15714:9;15710:17;15701:6;15657:71;:::i;:::-;15738:72;15806:2;15795:9;15791:18;15782:6;15738:72;:::i;:::-;15820:80;15896:2;15885:9;15881:18;15872:6;15820:80;:::i;:::-;15910;15986:2;15975:9;15971:18;15962:6;15910:80;:::i;:::-;16000:73;16068:3;16057:9;16053:19;16044:6;16000:73;:::i;:::-;16083;16151:3;16140:9;16136:19;16127:6;16083:73;:::i;:::-;15356:807;;;;;;;;;:::o;16169:143::-;16226:5;16257:6;16251:13;16242:22;;16273:33;16300:5;16273:33;:::i;:::-;16169:143;;;;:::o;16318:663::-;16406:6;16414;16422;16471:2;16459:9;16450:7;16446:23;16442:32;16439:119;;;16477:79;;:::i;:::-;16439:119;16597:1;16622:64;16678:7;16669:6;16658:9;16654:22;16622:64;:::i;:::-;16612:74;;16568:128;16735:2;16761:64;16817:7;16808:6;16797:9;16793:22;16761:64;:::i;:::-;16751:74;;16706:129;16874:2;16900:64;16956:7;16947:6;16936:9;16932:22;16900:64;:::i;:::-;16890:74;;16845:129;16318:663;;;;;:::o;16987:332::-;17108:4;17146:2;17135:9;17131:18;17123:26;;17159:71;17227:1;17216:9;17212:17;17203:6;17159:71;:::i;:::-;17240:72;17308:2;17297:9;17293:18;17284:6;17240:72;:::i;:::-;16987:332;;;;;:::o;17325:116::-;17395:21;17410:5;17395:21;:::i;:::-;17388:5;17385:32;17375:60;;17431:1;17428;17421:12;17375:60;17325:116;:::o;17447:137::-;17501:5;17532:6;17526:13;17517:22;;17548:30;17572:5;17548:30;:::i;:::-;17447:137;;;;:::o;17590:345::-;17657:6;17706:2;17694:9;17685:7;17681:23;17677:32;17674:119;;;17712:79;;:::i;:::-;17674:119;17832:1;17857:61;17910:7;17901:6;17890:9;17886:22;17857:61;:::i;:::-;17847:71;;17803:125;17590:345;;;;:::o;17941:227::-;18081:34;18077:1;18069:6;18065:14;18058:58;18150:10;18145:2;18137:6;18133:15;18126:35;17941:227;:::o;18174:366::-;18316:3;18337:67;18401:2;18396:3;18337:67;:::i;:::-;18330:74;;18413:93;18502:3;18413:93;:::i;:::-;18531:2;18526:3;18522:12;18515:19;;18174:366;;;:::o;18546:419::-;18712:4;18750:2;18739:9;18735:18;18727:26;;18799:9;18793:4;18789:20;18785:1;18774:9;18770:17;18763:47;18827:131;18953:4;18827:131;:::i;:::-;18819:139;;18546:419;;;:::o;18971:173::-;19111:25;19107:1;19099:6;19095:14;19088:49;18971:173;:::o;19150:366::-;19292:3;19313:67;19377:2;19372:3;19313:67;:::i;:::-;19306:74;;19389:93;19478:3;19389:93;:::i;:::-;19507:2;19502:3;19498:12;19491:19;;19150:366;;;:::o;19522:419::-;19688:4;19726:2;19715:9;19711:18;19703:26;;19775:9;19769:4;19765:20;19761:1;19750:9;19746:17;19739:47;19803:131;19929:4;19803:131;:::i;:::-;19795:139;;19522:419;;;:::o;19947:180::-;19995:77;19992:1;19985:88;20092:4;20089:1;20082:15;20116:4;20113:1;20106:15;20133:185;20173:1;20190:20;20208:1;20190:20;:::i;:::-;20185:25;;20224:20;20242:1;20224:20;:::i;:::-;20219:25;;20263:1;20253:35;;20268:18;;:::i;:::-;20253:35;20310:1;20307;20303:9;20298:14;;20133:185;;;;:::o;20324:171::-;20464:23;20460:1;20452:6;20448:14;20441:47;20324:171;:::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://5d0f8782f257f060cc4b1163855711c46af9c3cf4c0a3e345ab9b98a4b4f0acf
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.