ETH Price: $3,023.51 (+3.15%)
Gas: 1 Gwei

Token

BYELON (BYELON)
 

Overview

Max Total Supply

420,000,000 BYELON

Holders

110

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
3,150,000 BYELON

Value
$0.00
0xbaa593844f49c01e42f3f691833905796c0d9565
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
StandardERC20

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-12-20
*/

// SPDX-License-Identifier: Unlicensed
pragma solidity 0.8.15;

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

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

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

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address lpPair, uint);
    function getPair(address tokenA, address tokenB) external view returns (address lpPair);
    function createPair(address tokenA, address tokenB) external returns (address lpPair);
}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);
    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);
    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
    function factory() external view returns (address);
}

interface IUniswapV2Router01 {
    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);
}

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

contract StandardERC20 is Context, IERC20 {
    // Ownership moved to in-contract for customizability.
    address public _owner;

    mapping (address => uint256) private _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) private _liquidityHolders;
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public isExcludedFromMaxWalletRestrictions;
    mapping (address => bool) private _isblacklisted;
    mapping (address => uint256) private _transferDelay;
    mapping (address => bool) private _holderDelay;


    bool private sameBlockActive = false;
    mapping (address => uint256) private lastTrade;   

    bool private isInitialized = false;
    
    mapping (address => uint256) firstBuy;
    
    uint256 private startingSupply;

    string private _name;
    string private _symbol;
//==========================
    // FEES
    struct taxes {
    uint buyFee;
    uint sellFee;
    uint transferFee;
    }

    taxes public Fees = taxes(
    {buyFee: 300, sellFee: 5000, transferFee: 0});
//==========================
    // Max Limits

    struct MaxLimits {
    uint maxBuy;
    uint maxSell;
    uint maxTransfer;
    }

    MaxLimits public maxFees = MaxLimits(
    {maxBuy: 8000, maxSell: 8000, maxTransfer: 1500});
//==========================    
    //Proportions of Taxes
    struct feeProportions {
    uint liquidity;
    uint developer;
    uint team;
    }

    feeProportions public Ratios = feeProportions(
    { liquidity: 4, developer: 48, team: 48});

    uint256 private constant masterTaxDivisor = 10000;
    uint256 private constant MAX = ~uint256(0);
    uint8 private _decimals;
 
    uint256 private _tTotal = startingSupply * 10**_decimals;
    uint256 private _tFeeTotal;

    IUniswapV2Router02 public dexRouter;
    address public lpPair;


    address constant private _routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD; // Receives tokens, deflates supply, increases price floor.
    
    address public _devWallet;
    address public _teamWallet;
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = false;
    
    uint256 private maxTxPercent;
    uint256 private maxTxDivisor;
    uint256 private _maxTxAmount;
    uint256 private _liqAddedBlock;
    
    uint256 private maxWalletPercent;
    uint256 private maxWalletDivisor;
    uint256 private _maxWalletSize;

    uint256 private swapThreshold;
    uint256 private swapAmount;

    bool public _hasLiqBeenAdded = false;
    
    uint256 private _liqAddStatus = 0;
    uint256 private _liqAddBlock = 0;
    uint256 private _liqAddStamp = 0;
    uint256 private _initialLiquidityAmount = 0; // make constant

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender() || _devWallet == _msgSender(), "Caller != owner.");
        _;
    }
    
    constructor () {
        _owner = msg.sender;
    }

    receive() external payable {}

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================
    // Ownable removed as a lib and added here to allow for custom transfers and recnouncements.
    // This allows for removal of ownership privelages from the owner once renounced or transferred.
    function owner() public view returns (address) {
        return _owner;
    }

    function transferOwner(address newOwner) external onlyOwner() {
        require(newOwner != address(0), "Call renounceOwnership to transfer owner to the zero address.");
        require(newOwner != DEAD, "Call renounceOwnership to transfer owner to the zero address.");
        setExcludedFromFees(_owner, false);
        setExcludedFromFees(newOwner, true);
        
        if (_devWallet == payable(_owner))
            _devWallet = payable(newOwner);
        
        _allowances[_owner][newOwner] = balanceOf(_owner);
        if(balanceOf(_owner) > 0) {
            _transfer(_owner, newOwner, balanceOf(_owner));
        }
        
        _owner = newOwner;
        emit OwnershipTransferred(_owner, newOwner);
        
    }

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

    function totalSupply() external view override returns (uint256) { return _tTotal; }
    function decimals() external view override returns (uint8) { return _decimals; }
    function symbol() external view override returns (string memory) { return _symbol; }
    function name() external view override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner(); }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

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

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

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

    function _approve(address sender, address spender, uint256 amount) private {
        require(sender != address(0), "ERC20: Zero Address");
        require(spender != address(0), "ERC20: Zero Address");

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

    function approveMax(address spender) public returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function getFirstBuy(address account) public view returns (uint256) {
        return firstBuy[account];
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            _allowances[sender][msg.sender] -= amount;
        }

        return _transfer(sender, recipient, amount);
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] - subtractedValue);
        return true;
    }

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

    function openTrade() external onlyOwner {
        _liqAddStatus = 1;
    }
    
    function oneShotLaunch(string memory initName, string memory initSymbol, uint256 initSupply, address _devWall, address _teamWall, address[] memory presales, uint256[] memory tokenamount) external onlyOwner payable {
        require(!isInitialized, "can only run this once");
        require(presales.length == tokenamount.length, "arrays must be the same length");
        require(presales.length < 200, "Can only airdrop 200 wallets per txn due to gas limits"); // allows for airdrop + launch at the same exact time, reducing delays and reducing sniper input.
 
        require(_liqAddStatus == 0);
   
        _name = initName;
        _symbol = initSymbol;

        startingSupply = initSupply;
        _decimals = 18;
        _tTotal = startingSupply * 10**_decimals;

        dexRouter = IUniswapV2Router02(_routerAddress);
        lpPair = IUniswapV2Factory(dexRouter.factory()).createPair(dexRouter.WETH(), address(this));
        lpPairs[lpPair] = true;
        _allowances[address(this)][address(dexRouter)] = type(uint256).max;

        _devWallet = _devWall;
        _teamWallet = _teamWall;

        maxTxPercent = 100; // Max Transaction Amount: 100 = 1%
        maxTxDivisor = 10000;
        _maxTxAmount = (_tTotal * maxTxPercent) / maxTxDivisor;
        
        maxWalletPercent = 100; //Max Wallet 100: 1%
        maxWalletDivisor = 10000;
        _maxWalletSize = (_tTotal * maxWalletPercent) / maxWalletDivisor;
        
        swapThreshold = (_tTotal * 5) / 10_000;
        swapAmount = (_tTotal * 5) / 1_000;

        _isExcludedFromFees[owner()] = true;
        _isExcludedFromFees[_devWallet] = true;
        _isExcludedFromFees[_teamWallet] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[DEAD] = true;
        _liquidityHolders[owner()] = true;

        approve(_routerAddress, type(uint256).max);
        approve(owner(), type(uint256).max);

        isInitialized = true;
        _tOwned[owner()] = _tTotal;
        _approve(owner(), _routerAddress, _tTotal);
        emit Transfer(address(0), owner(), _tTotal);
 
        _approve(_owner, address(dexRouter), type(uint256).max);
        _approve(address(this), address(dexRouter), type(uint256).max);


        for(uint256 i = 0; i < presales.length; i++){
            address presale = presales[i];
            uint256 amount = tokenamount[i]*1e18;
            _transfer(_owner, presale, amount);
        }

        _transfer(_owner, address(this), balanceOf(_owner));

        dexRouter.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner(),
            block.timestamp
        );
        _liqAddStatus = 1;
        _liqAddedBlock = block.number;
        isInitialized = true;
    }

    function setExcludedFromFees(address account, bool enabled) public onlyOwner {
        _isExcludedFromFees[account] = enabled;
    }

    function excludeFromWalletRestrictions(address excludedAddress) public onlyOwner{
        isExcludedFromMaxWalletRestrictions[excludedAddress] = true;
    }

    function revokeExcludedFromWalletRestrictions(address excludedAddress) public onlyOwner{
        isExcludedFromMaxWalletRestrictions[excludedAddress] = false;
    }
    
    function setRatios(uint _liquidity, uint _developer, uint _team) external onlyOwner {
        require ( (_liquidity+_developer+_team) == 100, "ratios must equal 100");
        Ratios.liquidity = _liquidity;
        Ratios.developer = _developer;
        Ratios.team = _team;
        }

    function setTaxes(uint _buyFee, uint _sellFee, uint _transferFee) external onlyOwner {
        require(_buyFee <= maxFees.maxBuy
                && _sellFee <= maxFees.maxSell
                && _transferFee <= maxFees.maxTransfer,
                "Cannot exceed maximums.");
         Fees.buyFee = _buyFee;
         Fees.sellFee = _sellFee;
         Fees.transferFee = _transferFee;

    }

    function removeLimits() external onlyOwner {
        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
    }

    function setMaxTxPercent(uint percent, uint divisor) external onlyOwner {
        uint256 check = (_tTotal * percent) / divisor;
        require(check >= (_tTotal / 300), "Must be above 0.33~% of total supply.");
        _maxTxAmount = check;
    }

    function setMaxWalletSize(uint percent, uint divisor) external onlyOwner {
        uint256 check = (_tTotal * percent) / divisor;
        require(check >= (_tTotal / 300), "Must be above 0.33~% of total supply.");
        _maxWalletSize = check;

    }

    function setSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor, uint256 amountPercent, uint256 amountDivisor) external onlyOwner {
        swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor;
        swapAmount = (_tTotal * amountPercent) / amountDivisor;
    }

    function setWallets(address payable developerWallet, address payable teamWallet) external onlyOwner {
        _devWallet = payable(developerWallet);
        _teamWallet = payable(teamWallet);
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }
     
    function setBlacklist(address[] memory blacklisted_, bool status_) public onlyOwner {
        for (uint i = 0; i < blacklisted_.length; i++) {
            if (!lpPairs[blacklisted_[i]] && blacklisted_[i] != address(_routerAddress)) {
                _isblacklisted[blacklisted_[i]] = status_;
            }
        }
    }

    function _hasLimits(address from, address to) private view returns (bool) {
        return from != owner()
            && to != owner()
            && !_liquidityHolders[to]
            && !_liquidityHolders[from]
            && to != DEAD
            && to != address(0)
            && from != address(this);
    }

    function transferDelay(address from, address to, address orig) internal returns (bool) {
       bool oktoswap = true;
      if (lpPair == from) {  _transferDelay[to] = block.number;  _transferDelay[orig] = block.number;}
      else if (lpPair == to) {
             if (_transferDelay[from] >= block.number) { _holderDelay[from] = true; oktoswap = false;}
                 if (_holderDelay[from]) { oktoswap = false; }
                else if (lpPair != to && lpPair != from) { _transferDelay[from] = block.number; _transferDelay[to] = block.number; _transferDelay[orig] = block.number;}
            }
           return (oktoswap);
    }
    

    function _transfer(address from, address to, uint256 amount) internal returns (bool) {
        require(from != address(0), "ERC20: Zero address.");
        require(to != address(0), "ERC20: Zero address.");
        require(amount > 0, "Must >0.");
        require(!_isblacklisted[to] && !_isblacklisted[from],"unable to trade");
        if (_liqAddedBlock > block.number - 50) {
            bool oktoswap;
            address orig = tx.origin;
            oktoswap = transferDelay(from,to,orig);
            require(oktoswap, "transfer delay enabled");
        }
        if(_hasLimits(from, to)) {
            if (sameBlockActive) {
                if (lpPairs[from]){
                    require(lastTrade[to] != block.number);
                    lastTrade[to] = block.number;
                    } 
                else {
                    require(lastTrade[from] != block.number);
                    lastTrade[from] = block.number;
                    }
            }
            if(!(isExcludedFromMaxWalletRestrictions[from] || isExcludedFromMaxWalletRestrictions[to])) {
                if(lpPairs[from] || lpPairs[to]){
                require(amount <= _maxTxAmount, "Exceeds the maxTxAmount.");
                }
                if(to != _routerAddress && !lpPairs[to]) {
                    require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                }

            }
            
        }

        if (_tOwned[to] == 0) {
            firstBuy[to] = block.timestamp;
        }

        bool takeFee = true;
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]){
            takeFee = false;
        }

        if (lpPairs[to]) {
            if (!inSwapAndLiquify
                && swapAndLiquifyEnabled
            ) {
                uint256 contractTokenBalance = balanceOf(address(this));
                if (contractTokenBalance >= swapThreshold) {
                    if(contractTokenBalance >= swapAmount) { contractTokenBalance = swapAmount; }
                    swapAndLiquify(contractTokenBalance);
                }
            }      
        } 
        return _finalizeTransfer(from, to, amount, takeFee);
    }

    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        if (Ratios.liquidity + Ratios.developer == 0)
            return;
        uint256 toLiquify = ((contractTokenBalance * Ratios.liquidity) / (Ratios.liquidity + Ratios.developer + Ratios.team) ) / 2;

        uint256 toSwapForEth = contractTokenBalance - toLiquify;
        swapTokensForEth(toSwapForEth);

        uint256 currentBalance = address(this).balance;
        uint256 liquidityBalance = ((currentBalance * Ratios.liquidity) / (Ratios.liquidity + Ratios.developer + Ratios.team) ) / 2;


        if (toLiquify > 0) {
            addLiquidity(toLiquify, liquidityBalance);
            emit SwapAndLiquify(toLiquify, liquidityBalance, toLiquify);
        }
        
        currentBalance = address(this).balance;
        if (currentBalance > 0) {
            uint256 devETH = (currentBalance * Ratios.developer) / (Ratios.developer + Ratios.team);
            uint256 teamETH = (currentBalance * Ratios.team) / (Ratios.developer + Ratios.team);
    
            bool success = true;
            (success,) = address(_devWallet).call{value: devETH}("");
            (success,) = address(_teamWallet).call{value: teamETH}("");
        }
    }

    function swapTokensForEth(uint256 tokenAmount) internal {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        dexRouter.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner(),
            block.timestamp
        );
    }

    function _checkLiquidityAdd(address from, address to) private {
        require(!_hasLiqBeenAdded, "Liquidity already added and marked.");
        if (!_hasLimits(from, to) && to == lpPair) {
                _liqAddBlock = block.number;

            _liquidityHolders[from] = true;
            _hasLiqBeenAdded = true;
            _liqAddStamp = block.timestamp;

            swapAndLiquifyEnabled = true;
            emit SwapAndLiquifyEnabledUpdated(true);
        }
    }

    function airdropPresale(address[] memory wallets, uint256[] memory amountsInTokens) external onlyOwner {
        require(wallets.length == amountsInTokens.length, "arrays must be the same length");
        require(wallets.length < 200, "Can only airdrop 200 wallets per txn due to gas limits"); // allows for airdrop + launch at the same exact time, reducing delays and reducing sniper input.
        for(uint256 i = 0; i < wallets.length; i++){
            address wallet = wallets[i];
            uint256 amount = amountsInTokens[i]*1e18;
            _transfer(msg.sender, wallet, amount);
        }
    }

    function _finalizeTransfer(address from, address to, uint256 amount, bool takeFee) private returns (bool) {
        if (!_hasLiqBeenAdded) {
            _checkLiquidityAdd(from, to);
            if (!_hasLiqBeenAdded && _hasLimits(from, to)) {
                revert("Only owner can transfer at this time.");
            }
        } 
        _tOwned[from] -= amount;
        uint256 amountReceived = (takeFee) ? takeTaxes(from, to, amount) : amount; //A
        _tOwned[to] += amountReceived;

        emit Transfer(from, to, amountReceived);
        return true;
    }

    function takeTaxes(address from, address to, uint256 amount) internal returns (uint256) {
        uint256 currentFee;

        if (to == lpPair) {
            currentFee=Fees.sellFee;
            } 

        else if (from == lpPair) {currentFee = Fees.buyFee;} 

        else {currentFee = Fees.transferFee;}

        if (_hasLimits(from, to)){
            if (_liqAddStatus == 0 || _liqAddStatus != (1)) {
                revert();
            }
        }
        uint256 feeAmount = (amount * currentFee / masterTaxDivisor);
        _tOwned[address(this)] += (feeAmount);
        emit Transfer(from, address(this), feeAmount);
        return amount - feeAmount;
    }
}

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":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Fees","outputs":[{"internalType":"uint256","name":"buyFee","type":"uint256"},{"internalType":"uint256","name":"sellFee","type":"uint256"},{"internalType":"uint256","name":"transferFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Ratios","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"developer","type":"uint256"},{"internalType":"uint256","name":"team","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_teamWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"uint256[]","name":"amountsInTokens","type":"uint256[]"}],"name":"airdropPresale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"excludedAddress","type":"address"}],"name":"excludeFromWalletRestrictions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getFirstBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromMaxWalletRestrictions","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxFees","outputs":[{"internalType":"uint256","name":"maxBuy","type":"uint256"},{"internalType":"uint256","name":"maxSell","type":"uint256"},{"internalType":"uint256","name":"maxTransfer","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"initName","type":"string"},{"internalType":"string","name":"initSymbol","type":"string"},{"internalType":"uint256","name":"initSupply","type":"uint256"},{"internalType":"address","name":"_devWall","type":"address"},{"internalType":"address","name":"_teamWall","type":"address"},{"internalType":"address[]","name":"presales","type":"address[]"},{"internalType":"uint256[]","name":"tokenamount","type":"uint256[]"}],"name":"oneShotLaunch","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"openTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"excludedAddress","type":"address"}],"name":"revokeExcludedFromWalletRestrictions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"blacklisted_","type":"address[]"},{"internalType":"bool","name":"status_","type":"bool"}],"name":"setBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_developer","type":"uint256"},{"internalType":"uint256","name":"_team","type":"uint256"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"},{"internalType":"uint256","name":"_transferFee","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"developerWallet","type":"address"},{"internalType":"address payable","name":"teamWallet","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60006003819055600b805460ff19908116909155600d8054909116905561012c608081905261138860a081905260c0839052601291909155601355601455611f4060e08190526101008190526105dc61012081905260158290556016919091556017556101a0604052600461014081905260306101608190526101808190526018919091556019819055601a55601b546200009f9060ff16600a62000217565b600f54620000ae91906200022f565b601c556021805460ff60a81b19169055602b805460ff191690556000602c819055602d819055602e819055602f55348015620000e957600080fd5b50600080546001600160a01b0319163317905562000251565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620001595781600019048211156200013d576200013d62000102565b808516156200014b57918102915b93841c93908002906200011d565b509250929050565b600082620001725750600162000211565b81620001815750600062000211565b81600181146200019a5760028114620001a557620001c5565b600191505062000211565b60ff841115620001b957620001b962000102565b50506001821b62000211565b5060208310610133831016604e8410600b8410161715620001ea575081810a62000211565b620001f6838362000118565b80600019048211156200020d576200020d62000102565b0290505b92915050565b60006200022860ff84168362000161565b9392505050565b60008160001904831182151516156200024c576200024c62000102565b500290565b61365880620002616000396000f3fe6080604052600436106102765760003560e01c806370a082311161014f578063b2bdfa7b116100c1578063d3f6a1571161007a578063d3f6a1571461078d578063dd62ed3e146107ad578063e83e34b1146107f3578063e9dae5ed14610812578063fb201b1d14610832578063fb78680d1461084757600080fd5b8063b2bdfa7b146106ce578063b5f7bfa2146106ee578063bc1323e81461070d578063c49b9a801461072d578063cdfdb7dc1461074d578063ce8b79c91461076d57600080fd5b80638da5cb5b116101135780638da5cb5b146105e257806395d89b4114610630578063a13ce2c614610645578063a457c2d71461067b578063a702bb001461069b578063a9059cbb146106ae57600080fd5b806370a0823114610598578063715018a6146105b8578063751039fc146105cd578063893d20e8146105e25780638c7321ad1461060057600080fd5b806337e294d5116101e85780634a74bb02116101ac5780634a74bb02146104c45780634fb2e45d146104e55780634fbee1931461050557806350a8e0161461053e578063571ac8b014610558578063590ffdce1461057857600080fd5b806337e294d51461040a578063395093511461042a5780633aaa36e61461044a5780633f3cf56c14610484578063452ed4f1146104a457600080fd5b806311a63e171161023a57806311a63e171461034957806318160ddd1461036957806323b872dd1461038857806326003957146103a857806330b91e57146103c8578063313ce567146103e857600080fd5b806303fd2a451461028257806306fdde03146102b55780630758d924146102d7578063095ea7b3146102f75780630e85d1e31461032757600080fd5b3661027d57005b600080fd5b34801561028e57600080fd5b5061029861dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102c157600080fd5b506102ca610867565b6040516102ac9190612bd6565b3480156102e357600080fd5b50601e54610298906001600160a01b031681565b34801561030357600080fd5b50610317610312366004612c53565b6108f9565b60405190151581526020016102ac565b34801561033357600080fd5b50610347610342366004612d6e565b610910565b005b34801561035557600080fd5b50602054610298906001600160a01b031681565b34801561037557600080fd5b50601c545b6040519081526020016102ac565b34801561039457600080fd5b506103176103a3366004612dbc565b610a60565b3480156103b457600080fd5b506103476103c3366004612dfd565b610ad8565b3480156103d457600080fd5b506103476103e3366004612e7a565b610b6a565b3480156103f457600080fd5b50601b5460405160ff90911681526020016102ac565b34801561041657600080fd5b50602154610298906001600160a01b031681565b34801561043657600080fd5b50610317610445366004612c53565b610c97565b34801561045657600080fd5b5060125460135460145461046992919083565b604080519384526020840192909252908201526060016102ac565b34801561049057600080fd5b5061034761049f366004612dfd565b610cd3565b3480156104b057600080fd5b50601f54610298906001600160a01b031681565b3480156104d057600080fd5b5060215461031790600160a81b900460ff1681565b3480156104f157600080fd5b50610347610500366004612ede565b610d65565b34801561051157600080fd5b50610317610520366004612ede565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561054a57600080fd5b50602b546103179060ff1681565b34801561056457600080fd5b50610317610573366004612ede565b610f0d565b34801561058457600080fd5b50610347610593366004612efb565b610f1b565b3480156105a457600080fd5b5061037a6105b3366004612ede565b610f85565b3480156105c457600080fd5b50610347610fa0565b3480156105d957600080fd5b50610347611034565b3480156105ee57600080fd5b506000546001600160a01b0316610298565b34801561060c57600080fd5b5061031761061b366004612ede565b60076020526000908152604090205460ff1681565b34801561063c57600080fd5b506102ca611080565b34801561065157600080fd5b5061037a610660366004612ede565b6001600160a01b03166000908152600e602052604090205490565b34801561068757600080fd5b50610317610696366004612c53565b61108f565b6103476106a9366004612f97565b6110c6565b3480156106ba57600080fd5b506103176106c9366004612c53565b611830565b3480156106da57600080fd5b50600054610298906001600160a01b031681565b3480156106fa57600080fd5b50601854601954601a5461046992919083565b34801561071957600080fd5b50610347610728366004612ede565b611847565b34801561073957600080fd5b5061034761074836600461306f565b6118a7565b34801561075957600080fd5b5061034761076836600461308a565b61193e565b34801561077957600080fd5b50610347610788366004612ede565b6119e7565b34801561079957600080fd5b506103476107a83660046130b6565b611a4a565b3480156107b957600080fd5b5061037a6107c83660046130b6565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156107ff57600080fd5b5060155460165460175461046992919083565b34801561081e57600080fd5b5061034761082d36600461308a565b611ab7565b34801561083e57600080fd5b50610347611b72565b34801561085357600080fd5b506103476108623660046130ef565b611bb8565b60606010805461087690613121565b80601f01602080910402602001604051908101604052809291908181526020018280546108a290613121565b80156108ef5780601f106108c4576101008083540402835291602001916108ef565b820191906000526020600020905b8154815290600101906020018083116108d257829003601f168201915b5050505050905090565b6000610906338484611c36565b5060015b92915050565b6000546001600160a01b031633148061093357506020546001600160a01b031633145b6109585760405162461bcd60e51b815260040161094f9061315b565b60405180910390fd5b60005b8251811015610a5b576002600084838151811061097a5761097a613185565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff161580156109ed5750737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03168382815181106109d9576109d9613185565b60200260200101516001600160a01b031614155b15610a49578160086000858481518110610a0957610a09613185565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055505b80610a53816131b1565b91505061095b565b505050565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610ac5576001600160a01b038416600090815260046020908152604080832033845290915281208054849290610abf9084906131ca565b90915550505b610ad0848484611d2f565b949350505050565b6000546001600160a01b0316331480610afb57506020546001600160a01b031633145b610b175760405162461bcd60e51b815260040161094f9061315b565b60008183601c54610b2891906131e1565b610b329190613200565b905061012c601c54610b449190613200565b811015610b635760405162461bcd60e51b815260040161094f90613222565b6028555050565b6000546001600160a01b0316331480610b8d57506020546001600160a01b031633145b610ba95760405162461bcd60e51b815260040161094f9061315b565b8051825114610bfa5760405162461bcd60e51b815260206004820152601e60248201527f617272617973206d757374206265207468652073616d65206c656e6774680000604482015260640161094f565b60c8825110610c1b5760405162461bcd60e51b815260040161094f90613267565b60005b8251811015610a5b576000838281518110610c3b57610c3b613185565b602002602001015190506000838381518110610c5957610c59613185565b6020026020010151670de0b6b3a7640000610c7491906131e1565b9050610c81338383611d2f565b5050508080610c8f906131b1565b915050610c1e565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610906918590610cce9086906132bd565b611c36565b6000546001600160a01b0316331480610cf657506020546001600160a01b031633145b610d125760405162461bcd60e51b815260040161094f9061315b565b60008183601c54610d2391906131e1565b610d2d9190613200565b905061012c601c54610d3f9190613200565b811015610d5e5760405162461bcd60e51b815260040161094f90613222565b6024555050565b6000546001600160a01b0316331480610d8857506020546001600160a01b031633145b610da45760405162461bcd60e51b815260040161094f9061315b565b6001600160a01b038116610dca5760405162461bcd60e51b815260040161094f906132d5565b61deac196001600160a01b03821601610df55760405162461bcd60e51b815260040161094f906132d5565b60008054610e0e916001600160a01b0390911690610f1b565b610e19816001610f1b565b6000546020546001600160a01b03918216911603610e4d57602080546001600160a01b0319166001600160a01b0383161790555b600054610e62906001600160a01b0316610f85565b600080546001600160a01b039081168252600460209081526040808420868416855290915282209290925580549091610e9b9116610f85565b1115610ec257600054610ec0906001600160a01b031682610ebb82610f85565b611d2f565b505b600080546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b600061090a826000196108f9565b6000546001600160a01b0316331480610f3e57506020546001600160a01b031633145b610f5a5760405162461bcd60e51b815260040161094f9061315b565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6001600160a01b031660009081526001602052604090205490565b6000546001600160a01b0316331480610fc357506020546001600160a01b031633145b610fdf5760405162461bcd60e51b815260040161094f9061315b565b60008054610ff8916001600160a01b0390911690610f1b565b600080546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b031633148061105757506020546001600160a01b031633145b6110735760405162461bcd60e51b815260040161094f9061315b565b601c546024819055602855565b60606011805461087690613121565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610906918590610cce9086906131ca565b6000546001600160a01b03163314806110e957506020546001600160a01b031633145b6111055760405162461bcd60e51b815260040161094f9061315b565b600d5460ff16156111515760405162461bcd60e51b815260206004820152601660248201527563616e206f6e6c792072756e2074686973206f6e636560501b604482015260640161094f565b80518251146111a25760405162461bcd60e51b815260206004820152601e60248201527f617272617973206d757374206265207468652073616d65206c656e6774680000604482015260640161094f565b60c88251106111c35760405162461bcd60e51b815260040161094f90613267565b602c54156111d057600080fd5b60106111dc8882613378565b5060116111e98782613378565b50600f859055601b805460ff1916601290811790915561120a90600a61351c565b600f5461121791906131e1565b601c55601e80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801561127e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a2919061352b565b6001600160a01b031663c9c65396601e60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611303573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611327919061352b565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015611373573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611397919061352b565b601f80546001600160a01b03199081166001600160a01b039384169081179092556000918252600260209081526040808420805460ff1916600117905530845260048252808420601e548616855282529092206000199055815481168784161790915560218054909116918516919091179055606460228190556127106023819055601c549091611427916131e1565b6114319190613200565b602455606460268190556127106027819055601c549091611451916131e1565b61145b9190613200565b602855601c54612710906114709060056131e1565b61147a9190613200565b602955601c546103e89061148f9060056131e1565b6114999190613200565b602a556001600660006114b46000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055835482168152600690935281832080548516600190811790915560215490911683528183208054851682179055308352908220805484168217905561dead82527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e22805490931681179092556005906115626000546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556115aa737a250d5630b4cf539739df2c5dacb4c659f2488d6000196108f9565b506115c86115c06000546001600160a01b031690565b6000196108f9565b50600d805460ff19166001908117909155601c549060006115f16000546001600160a01b031690565b6001600160a01b0316815260208101919091526040016000205561163d6116206000546001600160a01b031690565b737a250d5630b4cf539739df2c5dacb4c659f2488d601c54611c36565b6000546001600160a01b03166001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601c5460405161169091815260200190565b60405180910390a3600054601e546116b7916001600160a01b039081169116600019611c36565b601e546116d19030906001600160a01b0316600019611c36565b60005b825181101561175a5760008382815181106116f1576116f1613185565b60200260200101519050600083838151811061170f5761170f613185565b6020026020010151670de0b6b3a764000061172a91906131e1565b600054909150611744906001600160a01b03168383611d2f565b5050508080611752906131b1565b9150506116d4565b50600054611775906001600160a01b031630610ebb82610f85565b50601e546001600160a01b031663f305d719473061179281610f85565b6000806117a76000546001600160a01b031690565b426040518863ffffffff1660e01b81526004016117c996959493929190613548565b60606040518083038185885af11580156117e7573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061180c9190613583565b50506001602c81905543602555600d805460ff191690911790555050505050505050565b600061183d338484611d2f565b5060019392505050565b6000546001600160a01b031633148061186a57506020546001600160a01b031633145b6118865760405162461bcd60e51b815260040161094f9061315b565b6001600160a01b03166000908152600760205260409020805460ff19169055565b6000546001600160a01b03163314806118ca57506020546001600160a01b031633145b6118e65760405162461bcd60e51b815260040161094f9061315b565b60218054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061193390831515815260200190565b60405180910390a150565b6000546001600160a01b031633148061196157506020546001600160a01b031633145b61197d5760405162461bcd60e51b815260040161094f9061315b565b8061198883856132bd565b61199291906132bd565b6064146119d95760405162461bcd60e51b81526020600482015260156024820152740726174696f73206d75737420657175616c2031303605c1b604482015260640161094f565b601892909255601955601a55565b6000546001600160a01b0316331480611a0a57506020546001600160a01b031633145b611a265760405162461bcd60e51b815260040161094f9061315b565b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b6000546001600160a01b0316331480611a6d57506020546001600160a01b031633145b611a895760405162461bcd60e51b815260040161094f9061315b565b602080546001600160a01b039384166001600160a01b03199182161790915560218054929093169116179055565b6000546001600160a01b0316331480611ada57506020546001600160a01b031633145b611af65760405162461bcd60e51b815260040161094f9061315b565b6015548311801590611b0a57506016548211155b8015611b1857506017548111155b611b645760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e000000000000000000604482015260640161094f565b601292909255601355601455565b6000546001600160a01b0316331480611b9557506020546001600160a01b031633145b611bb15760405162461bcd60e51b815260040161094f9061315b565b6001602c55565b6000546001600160a01b0316331480611bdb57506020546001600160a01b031633145b611bf75760405162461bcd60e51b815260040161094f9061315b565b8284601c54611c0691906131e1565b611c109190613200565b602955601c548190611c239084906131e1565b611c2d9190613200565b602a5550505050565b6001600160a01b038316611c825760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b604482015260640161094f565b6001600160a01b038216611cce5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b604482015260640161094f565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416611d7e5760405162461bcd60e51b815260206004820152601460248201527322a92199181d102d32b9379030b2323932b9b99760611b604482015260640161094f565b6001600160a01b038316611dcb5760405162461bcd60e51b815260206004820152601460248201527322a92199181d102d32b9379030b2323932b9b99760611b604482015260640161094f565b60008211611e065760405162461bcd60e51b815260206004820152600860248201526726bab9ba101f181760c11b604482015260640161094f565b6001600160a01b03831660009081526008602052604090205460ff16158015611e4857506001600160a01b03841660009081526008602052604090205460ff16155b611e865760405162461bcd60e51b815260206004820152600f60248201526e756e61626c6520746f20747261646560881b604482015260640161094f565b611e916032436131ca565b6025541115611ef357600032611ea8868683612250565b915081611ef05760405162461bcd60e51b81526020600482015260166024820152751d1c985b9cd9995c8819195b185e48195b98589b195960521b604482015260640161094f565b50505b611efd8484612384565b1561213d57600b5460ff1615611fb4576001600160a01b03841660009081526002602052604090205460ff1615611f73576001600160a01b0383166000908152600c6020526040902054439003611f5357600080fd5b6001600160a01b0383166000908152600c60205260409020439055611fb4565b6001600160a01b0384166000908152600c6020526040902054439003611f9857600080fd5b6001600160a01b0384166000908152600c602052604090204390555b6001600160a01b03841660009081526007602052604090205460ff1680611ff357506001600160a01b03831660009081526007602052604090205460ff165b61213d576001600160a01b03841660009081526002602052604090205460ff168061203657506001600160a01b03831660009081526002602052604090205460ff165b1561208d5760245482111561208d5760405162461bcd60e51b815260206004820152601860248201527f4578636565647320746865206d61785478416d6f756e742e0000000000000000604482015260640161094f565b6001600160a01b038316737a250d5630b4cf539739df2c5dacb4c659f2488d148015906120d357506001600160a01b03831660009081526002602052604090205460ff16155b1561213d57602854826120e585610f85565b6120ef91906132bd565b111561213d5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604482015260640161094f565b6001600160a01b0383166000908152600160205260408120549003612178576001600160a01b0383166000908152600e602052604090204290555b6001600160a01b03841660009081526006602052604090205460019060ff16806121ba57506001600160a01b03841660009081526006602052604090205460ff165b156121c3575060005b6001600160a01b03841660009081526002602052604090205460ff161561223b57602154600160a01b900460ff161580156122075750602154600160a81b900460ff165b1561223b57600061221730610f85565b9050602954811061223957602a5481106122305750602a545b61223981612442565b505b6122478585858461268b565b95945050505050565b601f546000906001906001600160a01b03808716911603612297576001600160a01b0380851660009081526009602052604080822043908190559286168252902055610ad0565b601f546001600160a01b03808616911603610ad0576001600160a01b03851660009081526009602052604090205443116122f057506001600160a01b0384166000908152600a60205260408120805460ff191660011790555b6001600160a01b0385166000908152600a602052604090205460ff161561231957506000610ad0565b601f546001600160a01b038581169116148015906123455750601f546001600160a01b03868116911614155b15610ad0576001600160a01b03808616600090815260096020526040808220439081905587841683528183208190559286168252902055949350505050565b600080546001600160a01b038481169116148015906123b157506000546001600160a01b03838116911614155b80156123d657506001600160a01b03821660009081526005602052604090205460ff16155b80156123fb57506001600160a01b03831660009081526005602052604090205460ff16155b801561241257506001600160a01b03821661dead14155b801561242657506001600160a01b03821615155b801561243b57506001600160a01b0383163014155b9392505050565b6021805460ff60a01b1916600160a01b17905560195460185461246591906132bd565b1561267b57601a54601954601854600092600292909161248591906132bd565b61248f91906132bd565b60185461249c90856131e1565b6124a69190613200565b6124b09190613200565b905060006124be82846131ca565b90506124c9816127e8565b601a5460195460185447926000926002926124e491906132bd565b6124ee91906132bd565b6018546124fb90856131e1565b6125059190613200565b61250f9190613200565b90508315612563576125218482612929565b60408051858152602081018390529081018590527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b479150811561267657601a5460195460009161257e916132bd565b60195461258b90856131e1565b6125959190613200565b601a546019549192506000916125ab91906132bd565b601a546125b890866131e1565b6125c29190613200565b6020546040519192506001916001600160a01b03909116908490600081818185875af1925050503d8060008114612615576040519150601f19603f3d011682016040523d82523d6000602084013e61261a565b606091505b50506021546040519192506001600160a01b0316908390600081818185875af1925050503d806000811461266a576040519150601f19603f3d011682016040523d82523d6000602084013e61266f565b606091505b5050505050505b505050505b506021805460ff60a01b19169055565b602b5460009060ff16612715576126a285856129be565b602b5460ff161580156126ba57506126ba8585612384565b156127155760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e736665722061742074686973206044820152643a34b6b29760d91b606482015260840161094f565b6001600160a01b0385166000908152600160205260408120805485929061273d9084906131ca565b909155506000905082612750578361275b565b61275b868686612acd565b6001600160a01b0386166000908152600160205260408120805492935083929091906127889084906132bd565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127d491815260200190565b60405180910390a350600195945050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061281d5761281d613185565b6001600160a01b03928316602091820292909201810191909152601e54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612876573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061289a919061352b565b816001815181106128ad576128ad613185565b6001600160a01b039283166020918202929092010152601e5460405163791ac94760e01b815291169063791ac947906128f39085906000908690309042906004016135b1565b600060405180830381600087803b15801561290d57600080fd5b505af1158015612921573d6000803e3d6000fd5b505050505050565b601e546001600160a01b031663f305d7198230856000806129526000546001600160a01b031690565b426040518863ffffffff1660e01b815260040161297496959493929190613548565b60606040518083038185885af1158015612992573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906129b79190613583565b5050505050565b602b5460ff1615612a1d5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b606482015260840161094f565b612a278282612384565b158015612a415750601f546001600160a01b038281169116145b15612ac95743602d556001600160a01b038216600090815260056020908152604091829020805460ff199081166001908117909255602b80549091168217905542602e556021805460ff60a81b1916600160a81b17905591519182527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159910160405180910390a15b5050565b601f5460009081906001600160a01b0390811690851603612af15750601354612b15565b601f546001600160a01b0390811690861603612b105750601254612b15565b506014545b612b1f8585612384565b15612b4057602c541580612b365750602c54600114155b15612b4057600080fd5b6000612710612b4f83866131e1565b612b599190613200565b30600090815260016020526040812080549293508392909190612b7d9084906132bd565b909155505060405181815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3612bcc81856131ca565b9695505050505050565b600060208083528351808285015260005b81811015612c0357858101830151858201604001528201612be7565b81811115612c15576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114612c4057600080fd5b50565b8035612c4e81612c2b565b919050565b60008060408385031215612c6657600080fd5b8235612c7181612c2b565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612cbe57612cbe612c7f565b604052919050565b600067ffffffffffffffff821115612ce057612ce0612c7f565b5060051b60200190565b600082601f830112612cfb57600080fd5b81356020612d10612d0b83612cc6565b612c95565b82815260059290921b84018101918181019086841115612d2f57600080fd5b8286015b84811015612d53578035612d4681612c2b565b8352918301918301612d33565b509695505050505050565b80358015158114612c4e57600080fd5b60008060408385031215612d8157600080fd5b823567ffffffffffffffff811115612d9857600080fd5b612da485828601612cea565b925050612db360208401612d5e565b90509250929050565b600080600060608486031215612dd157600080fd5b8335612ddc81612c2b565b92506020840135612dec81612c2b565b929592945050506040919091013590565b60008060408385031215612e1057600080fd5b50508035926020909101359150565b600082601f830112612e3057600080fd5b81356020612e40612d0b83612cc6565b82815260059290921b84018101918181019086841115612e5f57600080fd5b8286015b84811015612d535780358352918301918301612e63565b60008060408385031215612e8d57600080fd5b823567ffffffffffffffff80821115612ea557600080fd5b612eb186838701612cea565b93506020850135915080821115612ec757600080fd5b50612ed485828601612e1f565b9150509250929050565b600060208284031215612ef057600080fd5b813561243b81612c2b565b60008060408385031215612f0e57600080fd5b8235612f1981612c2b565b9150612db360208401612d5e565b600082601f830112612f3857600080fd5b813567ffffffffffffffff811115612f5257612f52612c7f565b612f65601f8201601f1916602001612c95565b818152846020838601011115612f7a57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600060e0888a031215612fb257600080fd5b873567ffffffffffffffff80821115612fca57600080fd5b612fd68b838c01612f27565b985060208a0135915080821115612fec57600080fd5b612ff88b838c01612f27565b975060408a0135965061300d60608b01612c43565b955061301b60808b01612c43565b945060a08a013591508082111561303157600080fd5b61303d8b838c01612cea565b935060c08a013591508082111561305357600080fd5b506130608a828b01612e1f565b91505092959891949750929550565b60006020828403121561308157600080fd5b61243b82612d5e565b60008060006060848603121561309f57600080fd5b505081359360208301359350604090920135919050565b600080604083850312156130c957600080fd5b82356130d481612c2b565b915060208301356130e481612c2b565b809150509250929050565b6000806000806080858703121561310557600080fd5b5050823594602084013594506040840135936060013592509050565b600181811c9082168061313557607f821691505b60208210810361315557634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526010908201526f21b0b63632b910109e9037bbb732b91760811b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016131c3576131c361319b565b5060010190565b6000828210156131dc576131dc61319b565b500390565b60008160001904831182151516156131fb576131fb61319b565b500290565b60008261321d57634e487b7160e01b600052601260045260246000fd5b500490565b60208082526025908201527f4d7573742062652061626f766520302e33337e25206f6620746f74616c2073756040820152643838363c9760d91b606082015260800190565b60208082526036908201527f43616e206f6e6c792061697264726f70203230302077616c6c657473207065726040820152752074786e2064756520746f20676173206c696d69747360501b606082015260800190565b600082198211156132d0576132d061319b565b500190565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b601f821115610a5b57600081815260208120601f850160051c810160208610156133595750805b601f850160051c820191505b8181101561292157828155600101613365565b815167ffffffffffffffff81111561339257613392612c7f565b6133a6816133a08454613121565b84613332565b602080601f8311600181146133db57600084156133c35750858301515b600019600386901b1c1916600185901b178555612921565b600085815260208120601f198616915b8281101561340a578886015182559484019460019091019084016133eb565b50858210156134285787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600181815b808511156134735781600019048211156134595761345961319b565b8085161561346657918102915b93841c939080029061343d565b509250929050565b60008261348a5750600161090a565b816134975750600061090a565b81600181146134ad57600281146134b7576134d3565b600191505061090a565b60ff8411156134c8576134c861319b565b50506001821b61090a565b5060208310610133831016604e8410600b84101617156134f6575081810a61090a565b6135008383613438565b80600019048211156135145761351461319b565b029392505050565b600061243b60ff84168361347b565b60006020828403121561353d57600080fd5b815161243b81612c2b565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b60008060006060848603121561359857600080fd5b8351925060208401519150604084015190509250925092565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156136015784516001600160a01b0316835293830193918301916001016135dc565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220aa40598d4452ef20384b7bac1763c7334412c8dcfdf8b955b75027f8441b03ce64736f6c634300080f0033

Deployed Bytecode

0x6080604052600436106102765760003560e01c806370a082311161014f578063b2bdfa7b116100c1578063d3f6a1571161007a578063d3f6a1571461078d578063dd62ed3e146107ad578063e83e34b1146107f3578063e9dae5ed14610812578063fb201b1d14610832578063fb78680d1461084757600080fd5b8063b2bdfa7b146106ce578063b5f7bfa2146106ee578063bc1323e81461070d578063c49b9a801461072d578063cdfdb7dc1461074d578063ce8b79c91461076d57600080fd5b80638da5cb5b116101135780638da5cb5b146105e257806395d89b4114610630578063a13ce2c614610645578063a457c2d71461067b578063a702bb001461069b578063a9059cbb146106ae57600080fd5b806370a0823114610598578063715018a6146105b8578063751039fc146105cd578063893d20e8146105e25780638c7321ad1461060057600080fd5b806337e294d5116101e85780634a74bb02116101ac5780634a74bb02146104c45780634fb2e45d146104e55780634fbee1931461050557806350a8e0161461053e578063571ac8b014610558578063590ffdce1461057857600080fd5b806337e294d51461040a578063395093511461042a5780633aaa36e61461044a5780633f3cf56c14610484578063452ed4f1146104a457600080fd5b806311a63e171161023a57806311a63e171461034957806318160ddd1461036957806323b872dd1461038857806326003957146103a857806330b91e57146103c8578063313ce567146103e857600080fd5b806303fd2a451461028257806306fdde03146102b55780630758d924146102d7578063095ea7b3146102f75780630e85d1e31461032757600080fd5b3661027d57005b600080fd5b34801561028e57600080fd5b5061029861dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102c157600080fd5b506102ca610867565b6040516102ac9190612bd6565b3480156102e357600080fd5b50601e54610298906001600160a01b031681565b34801561030357600080fd5b50610317610312366004612c53565b6108f9565b60405190151581526020016102ac565b34801561033357600080fd5b50610347610342366004612d6e565b610910565b005b34801561035557600080fd5b50602054610298906001600160a01b031681565b34801561037557600080fd5b50601c545b6040519081526020016102ac565b34801561039457600080fd5b506103176103a3366004612dbc565b610a60565b3480156103b457600080fd5b506103476103c3366004612dfd565b610ad8565b3480156103d457600080fd5b506103476103e3366004612e7a565b610b6a565b3480156103f457600080fd5b50601b5460405160ff90911681526020016102ac565b34801561041657600080fd5b50602154610298906001600160a01b031681565b34801561043657600080fd5b50610317610445366004612c53565b610c97565b34801561045657600080fd5b5060125460135460145461046992919083565b604080519384526020840192909252908201526060016102ac565b34801561049057600080fd5b5061034761049f366004612dfd565b610cd3565b3480156104b057600080fd5b50601f54610298906001600160a01b031681565b3480156104d057600080fd5b5060215461031790600160a81b900460ff1681565b3480156104f157600080fd5b50610347610500366004612ede565b610d65565b34801561051157600080fd5b50610317610520366004612ede565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561054a57600080fd5b50602b546103179060ff1681565b34801561056457600080fd5b50610317610573366004612ede565b610f0d565b34801561058457600080fd5b50610347610593366004612efb565b610f1b565b3480156105a457600080fd5b5061037a6105b3366004612ede565b610f85565b3480156105c457600080fd5b50610347610fa0565b3480156105d957600080fd5b50610347611034565b3480156105ee57600080fd5b506000546001600160a01b0316610298565b34801561060c57600080fd5b5061031761061b366004612ede565b60076020526000908152604090205460ff1681565b34801561063c57600080fd5b506102ca611080565b34801561065157600080fd5b5061037a610660366004612ede565b6001600160a01b03166000908152600e602052604090205490565b34801561068757600080fd5b50610317610696366004612c53565b61108f565b6103476106a9366004612f97565b6110c6565b3480156106ba57600080fd5b506103176106c9366004612c53565b611830565b3480156106da57600080fd5b50600054610298906001600160a01b031681565b3480156106fa57600080fd5b50601854601954601a5461046992919083565b34801561071957600080fd5b50610347610728366004612ede565b611847565b34801561073957600080fd5b5061034761074836600461306f565b6118a7565b34801561075957600080fd5b5061034761076836600461308a565b61193e565b34801561077957600080fd5b50610347610788366004612ede565b6119e7565b34801561079957600080fd5b506103476107a83660046130b6565b611a4a565b3480156107b957600080fd5b5061037a6107c83660046130b6565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156107ff57600080fd5b5060155460165460175461046992919083565b34801561081e57600080fd5b5061034761082d36600461308a565b611ab7565b34801561083e57600080fd5b50610347611b72565b34801561085357600080fd5b506103476108623660046130ef565b611bb8565b60606010805461087690613121565b80601f01602080910402602001604051908101604052809291908181526020018280546108a290613121565b80156108ef5780601f106108c4576101008083540402835291602001916108ef565b820191906000526020600020905b8154815290600101906020018083116108d257829003601f168201915b5050505050905090565b6000610906338484611c36565b5060015b92915050565b6000546001600160a01b031633148061093357506020546001600160a01b031633145b6109585760405162461bcd60e51b815260040161094f9061315b565b60405180910390fd5b60005b8251811015610a5b576002600084838151811061097a5761097a613185565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff161580156109ed5750737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03168382815181106109d9576109d9613185565b60200260200101516001600160a01b031614155b15610a49578160086000858481518110610a0957610a09613185565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055505b80610a53816131b1565b91505061095b565b505050565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610ac5576001600160a01b038416600090815260046020908152604080832033845290915281208054849290610abf9084906131ca565b90915550505b610ad0848484611d2f565b949350505050565b6000546001600160a01b0316331480610afb57506020546001600160a01b031633145b610b175760405162461bcd60e51b815260040161094f9061315b565b60008183601c54610b2891906131e1565b610b329190613200565b905061012c601c54610b449190613200565b811015610b635760405162461bcd60e51b815260040161094f90613222565b6028555050565b6000546001600160a01b0316331480610b8d57506020546001600160a01b031633145b610ba95760405162461bcd60e51b815260040161094f9061315b565b8051825114610bfa5760405162461bcd60e51b815260206004820152601e60248201527f617272617973206d757374206265207468652073616d65206c656e6774680000604482015260640161094f565b60c8825110610c1b5760405162461bcd60e51b815260040161094f90613267565b60005b8251811015610a5b576000838281518110610c3b57610c3b613185565b602002602001015190506000838381518110610c5957610c59613185565b6020026020010151670de0b6b3a7640000610c7491906131e1565b9050610c81338383611d2f565b5050508080610c8f906131b1565b915050610c1e565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610906918590610cce9086906132bd565b611c36565b6000546001600160a01b0316331480610cf657506020546001600160a01b031633145b610d125760405162461bcd60e51b815260040161094f9061315b565b60008183601c54610d2391906131e1565b610d2d9190613200565b905061012c601c54610d3f9190613200565b811015610d5e5760405162461bcd60e51b815260040161094f90613222565b6024555050565b6000546001600160a01b0316331480610d8857506020546001600160a01b031633145b610da45760405162461bcd60e51b815260040161094f9061315b565b6001600160a01b038116610dca5760405162461bcd60e51b815260040161094f906132d5565b61deac196001600160a01b03821601610df55760405162461bcd60e51b815260040161094f906132d5565b60008054610e0e916001600160a01b0390911690610f1b565b610e19816001610f1b565b6000546020546001600160a01b03918216911603610e4d57602080546001600160a01b0319166001600160a01b0383161790555b600054610e62906001600160a01b0316610f85565b600080546001600160a01b039081168252600460209081526040808420868416855290915282209290925580549091610e9b9116610f85565b1115610ec257600054610ec0906001600160a01b031682610ebb82610f85565b611d2f565b505b600080546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b600061090a826000196108f9565b6000546001600160a01b0316331480610f3e57506020546001600160a01b031633145b610f5a5760405162461bcd60e51b815260040161094f9061315b565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6001600160a01b031660009081526001602052604090205490565b6000546001600160a01b0316331480610fc357506020546001600160a01b031633145b610fdf5760405162461bcd60e51b815260040161094f9061315b565b60008054610ff8916001600160a01b0390911690610f1b565b600080546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b031633148061105757506020546001600160a01b031633145b6110735760405162461bcd60e51b815260040161094f9061315b565b601c546024819055602855565b60606011805461087690613121565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610906918590610cce9086906131ca565b6000546001600160a01b03163314806110e957506020546001600160a01b031633145b6111055760405162461bcd60e51b815260040161094f9061315b565b600d5460ff16156111515760405162461bcd60e51b815260206004820152601660248201527563616e206f6e6c792072756e2074686973206f6e636560501b604482015260640161094f565b80518251146111a25760405162461bcd60e51b815260206004820152601e60248201527f617272617973206d757374206265207468652073616d65206c656e6774680000604482015260640161094f565b60c88251106111c35760405162461bcd60e51b815260040161094f90613267565b602c54156111d057600080fd5b60106111dc8882613378565b5060116111e98782613378565b50600f859055601b805460ff1916601290811790915561120a90600a61351c565b600f5461121791906131e1565b601c55601e80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801561127e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a2919061352b565b6001600160a01b031663c9c65396601e60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611303573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611327919061352b565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015611373573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611397919061352b565b601f80546001600160a01b03199081166001600160a01b039384169081179092556000918252600260209081526040808420805460ff1916600117905530845260048252808420601e548616855282529092206000199055815481168784161790915560218054909116918516919091179055606460228190556127106023819055601c549091611427916131e1565b6114319190613200565b602455606460268190556127106027819055601c549091611451916131e1565b61145b9190613200565b602855601c54612710906114709060056131e1565b61147a9190613200565b602955601c546103e89061148f9060056131e1565b6114999190613200565b602a556001600660006114b46000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055835482168152600690935281832080548516600190811790915560215490911683528183208054851682179055308352908220805484168217905561dead82527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e22805490931681179092556005906115626000546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556115aa737a250d5630b4cf539739df2c5dacb4c659f2488d6000196108f9565b506115c86115c06000546001600160a01b031690565b6000196108f9565b50600d805460ff19166001908117909155601c549060006115f16000546001600160a01b031690565b6001600160a01b0316815260208101919091526040016000205561163d6116206000546001600160a01b031690565b737a250d5630b4cf539739df2c5dacb4c659f2488d601c54611c36565b6000546001600160a01b03166001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601c5460405161169091815260200190565b60405180910390a3600054601e546116b7916001600160a01b039081169116600019611c36565b601e546116d19030906001600160a01b0316600019611c36565b60005b825181101561175a5760008382815181106116f1576116f1613185565b60200260200101519050600083838151811061170f5761170f613185565b6020026020010151670de0b6b3a764000061172a91906131e1565b600054909150611744906001600160a01b03168383611d2f565b5050508080611752906131b1565b9150506116d4565b50600054611775906001600160a01b031630610ebb82610f85565b50601e546001600160a01b031663f305d719473061179281610f85565b6000806117a76000546001600160a01b031690565b426040518863ffffffff1660e01b81526004016117c996959493929190613548565b60606040518083038185885af11580156117e7573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061180c9190613583565b50506001602c81905543602555600d805460ff191690911790555050505050505050565b600061183d338484611d2f565b5060019392505050565b6000546001600160a01b031633148061186a57506020546001600160a01b031633145b6118865760405162461bcd60e51b815260040161094f9061315b565b6001600160a01b03166000908152600760205260409020805460ff19169055565b6000546001600160a01b03163314806118ca57506020546001600160a01b031633145b6118e65760405162461bcd60e51b815260040161094f9061315b565b60218054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061193390831515815260200190565b60405180910390a150565b6000546001600160a01b031633148061196157506020546001600160a01b031633145b61197d5760405162461bcd60e51b815260040161094f9061315b565b8061198883856132bd565b61199291906132bd565b6064146119d95760405162461bcd60e51b81526020600482015260156024820152740726174696f73206d75737420657175616c2031303605c1b604482015260640161094f565b601892909255601955601a55565b6000546001600160a01b0316331480611a0a57506020546001600160a01b031633145b611a265760405162461bcd60e51b815260040161094f9061315b565b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b6000546001600160a01b0316331480611a6d57506020546001600160a01b031633145b611a895760405162461bcd60e51b815260040161094f9061315b565b602080546001600160a01b039384166001600160a01b03199182161790915560218054929093169116179055565b6000546001600160a01b0316331480611ada57506020546001600160a01b031633145b611af65760405162461bcd60e51b815260040161094f9061315b565b6015548311801590611b0a57506016548211155b8015611b1857506017548111155b611b645760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e000000000000000000604482015260640161094f565b601292909255601355601455565b6000546001600160a01b0316331480611b9557506020546001600160a01b031633145b611bb15760405162461bcd60e51b815260040161094f9061315b565b6001602c55565b6000546001600160a01b0316331480611bdb57506020546001600160a01b031633145b611bf75760405162461bcd60e51b815260040161094f9061315b565b8284601c54611c0691906131e1565b611c109190613200565b602955601c548190611c239084906131e1565b611c2d9190613200565b602a5550505050565b6001600160a01b038316611c825760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b604482015260640161094f565b6001600160a01b038216611cce5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b604482015260640161094f565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416611d7e5760405162461bcd60e51b815260206004820152601460248201527322a92199181d102d32b9379030b2323932b9b99760611b604482015260640161094f565b6001600160a01b038316611dcb5760405162461bcd60e51b815260206004820152601460248201527322a92199181d102d32b9379030b2323932b9b99760611b604482015260640161094f565b60008211611e065760405162461bcd60e51b815260206004820152600860248201526726bab9ba101f181760c11b604482015260640161094f565b6001600160a01b03831660009081526008602052604090205460ff16158015611e4857506001600160a01b03841660009081526008602052604090205460ff16155b611e865760405162461bcd60e51b815260206004820152600f60248201526e756e61626c6520746f20747261646560881b604482015260640161094f565b611e916032436131ca565b6025541115611ef357600032611ea8868683612250565b915081611ef05760405162461bcd60e51b81526020600482015260166024820152751d1c985b9cd9995c8819195b185e48195b98589b195960521b604482015260640161094f565b50505b611efd8484612384565b1561213d57600b5460ff1615611fb4576001600160a01b03841660009081526002602052604090205460ff1615611f73576001600160a01b0383166000908152600c6020526040902054439003611f5357600080fd5b6001600160a01b0383166000908152600c60205260409020439055611fb4565b6001600160a01b0384166000908152600c6020526040902054439003611f9857600080fd5b6001600160a01b0384166000908152600c602052604090204390555b6001600160a01b03841660009081526007602052604090205460ff1680611ff357506001600160a01b03831660009081526007602052604090205460ff165b61213d576001600160a01b03841660009081526002602052604090205460ff168061203657506001600160a01b03831660009081526002602052604090205460ff165b1561208d5760245482111561208d5760405162461bcd60e51b815260206004820152601860248201527f4578636565647320746865206d61785478416d6f756e742e0000000000000000604482015260640161094f565b6001600160a01b038316737a250d5630b4cf539739df2c5dacb4c659f2488d148015906120d357506001600160a01b03831660009081526002602052604090205460ff16155b1561213d57602854826120e585610f85565b6120ef91906132bd565b111561213d5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604482015260640161094f565b6001600160a01b0383166000908152600160205260408120549003612178576001600160a01b0383166000908152600e602052604090204290555b6001600160a01b03841660009081526006602052604090205460019060ff16806121ba57506001600160a01b03841660009081526006602052604090205460ff165b156121c3575060005b6001600160a01b03841660009081526002602052604090205460ff161561223b57602154600160a01b900460ff161580156122075750602154600160a81b900460ff165b1561223b57600061221730610f85565b9050602954811061223957602a5481106122305750602a545b61223981612442565b505b6122478585858461268b565b95945050505050565b601f546000906001906001600160a01b03808716911603612297576001600160a01b0380851660009081526009602052604080822043908190559286168252902055610ad0565b601f546001600160a01b03808616911603610ad0576001600160a01b03851660009081526009602052604090205443116122f057506001600160a01b0384166000908152600a60205260408120805460ff191660011790555b6001600160a01b0385166000908152600a602052604090205460ff161561231957506000610ad0565b601f546001600160a01b038581169116148015906123455750601f546001600160a01b03868116911614155b15610ad0576001600160a01b03808616600090815260096020526040808220439081905587841683528183208190559286168252902055949350505050565b600080546001600160a01b038481169116148015906123b157506000546001600160a01b03838116911614155b80156123d657506001600160a01b03821660009081526005602052604090205460ff16155b80156123fb57506001600160a01b03831660009081526005602052604090205460ff16155b801561241257506001600160a01b03821661dead14155b801561242657506001600160a01b03821615155b801561243b57506001600160a01b0383163014155b9392505050565b6021805460ff60a01b1916600160a01b17905560195460185461246591906132bd565b1561267b57601a54601954601854600092600292909161248591906132bd565b61248f91906132bd565b60185461249c90856131e1565b6124a69190613200565b6124b09190613200565b905060006124be82846131ca565b90506124c9816127e8565b601a5460195460185447926000926002926124e491906132bd565b6124ee91906132bd565b6018546124fb90856131e1565b6125059190613200565b61250f9190613200565b90508315612563576125218482612929565b60408051858152602081018390529081018590527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b479150811561267657601a5460195460009161257e916132bd565b60195461258b90856131e1565b6125959190613200565b601a546019549192506000916125ab91906132bd565b601a546125b890866131e1565b6125c29190613200565b6020546040519192506001916001600160a01b03909116908490600081818185875af1925050503d8060008114612615576040519150601f19603f3d011682016040523d82523d6000602084013e61261a565b606091505b50506021546040519192506001600160a01b0316908390600081818185875af1925050503d806000811461266a576040519150601f19603f3d011682016040523d82523d6000602084013e61266f565b606091505b5050505050505b505050505b506021805460ff60a01b19169055565b602b5460009060ff16612715576126a285856129be565b602b5460ff161580156126ba57506126ba8585612384565b156127155760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e736665722061742074686973206044820152643a34b6b29760d91b606482015260840161094f565b6001600160a01b0385166000908152600160205260408120805485929061273d9084906131ca565b909155506000905082612750578361275b565b61275b868686612acd565b6001600160a01b0386166000908152600160205260408120805492935083929091906127889084906132bd565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127d491815260200190565b60405180910390a350600195945050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061281d5761281d613185565b6001600160a01b03928316602091820292909201810191909152601e54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612876573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061289a919061352b565b816001815181106128ad576128ad613185565b6001600160a01b039283166020918202929092010152601e5460405163791ac94760e01b815291169063791ac947906128f39085906000908690309042906004016135b1565b600060405180830381600087803b15801561290d57600080fd5b505af1158015612921573d6000803e3d6000fd5b505050505050565b601e546001600160a01b031663f305d7198230856000806129526000546001600160a01b031690565b426040518863ffffffff1660e01b815260040161297496959493929190613548565b60606040518083038185885af1158015612992573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906129b79190613583565b5050505050565b602b5460ff1615612a1d5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b606482015260840161094f565b612a278282612384565b158015612a415750601f546001600160a01b038281169116145b15612ac95743602d556001600160a01b038216600090815260056020908152604091829020805460ff199081166001908117909255602b80549091168217905542602e556021805460ff60a81b1916600160a81b17905591519182527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159910160405180910390a15b5050565b601f5460009081906001600160a01b0390811690851603612af15750601354612b15565b601f546001600160a01b0390811690861603612b105750601254612b15565b506014545b612b1f8585612384565b15612b4057602c541580612b365750602c54600114155b15612b4057600080fd5b6000612710612b4f83866131e1565b612b599190613200565b30600090815260016020526040812080549293508392909190612b7d9084906132bd565b909155505060405181815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3612bcc81856131ca565b9695505050505050565b600060208083528351808285015260005b81811015612c0357858101830151858201604001528201612be7565b81811115612c15576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114612c4057600080fd5b50565b8035612c4e81612c2b565b919050565b60008060408385031215612c6657600080fd5b8235612c7181612c2b565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612cbe57612cbe612c7f565b604052919050565b600067ffffffffffffffff821115612ce057612ce0612c7f565b5060051b60200190565b600082601f830112612cfb57600080fd5b81356020612d10612d0b83612cc6565b612c95565b82815260059290921b84018101918181019086841115612d2f57600080fd5b8286015b84811015612d53578035612d4681612c2b565b8352918301918301612d33565b509695505050505050565b80358015158114612c4e57600080fd5b60008060408385031215612d8157600080fd5b823567ffffffffffffffff811115612d9857600080fd5b612da485828601612cea565b925050612db360208401612d5e565b90509250929050565b600080600060608486031215612dd157600080fd5b8335612ddc81612c2b565b92506020840135612dec81612c2b565b929592945050506040919091013590565b60008060408385031215612e1057600080fd5b50508035926020909101359150565b600082601f830112612e3057600080fd5b81356020612e40612d0b83612cc6565b82815260059290921b84018101918181019086841115612e5f57600080fd5b8286015b84811015612d535780358352918301918301612e63565b60008060408385031215612e8d57600080fd5b823567ffffffffffffffff80821115612ea557600080fd5b612eb186838701612cea565b93506020850135915080821115612ec757600080fd5b50612ed485828601612e1f565b9150509250929050565b600060208284031215612ef057600080fd5b813561243b81612c2b565b60008060408385031215612f0e57600080fd5b8235612f1981612c2b565b9150612db360208401612d5e565b600082601f830112612f3857600080fd5b813567ffffffffffffffff811115612f5257612f52612c7f565b612f65601f8201601f1916602001612c95565b818152846020838601011115612f7a57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600060e0888a031215612fb257600080fd5b873567ffffffffffffffff80821115612fca57600080fd5b612fd68b838c01612f27565b985060208a0135915080821115612fec57600080fd5b612ff88b838c01612f27565b975060408a0135965061300d60608b01612c43565b955061301b60808b01612c43565b945060a08a013591508082111561303157600080fd5b61303d8b838c01612cea565b935060c08a013591508082111561305357600080fd5b506130608a828b01612e1f565b91505092959891949750929550565b60006020828403121561308157600080fd5b61243b82612d5e565b60008060006060848603121561309f57600080fd5b505081359360208301359350604090920135919050565b600080604083850312156130c957600080fd5b82356130d481612c2b565b915060208301356130e481612c2b565b809150509250929050565b6000806000806080858703121561310557600080fd5b5050823594602084013594506040840135936060013592509050565b600181811c9082168061313557607f821691505b60208210810361315557634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526010908201526f21b0b63632b910109e9037bbb732b91760811b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016131c3576131c361319b565b5060010190565b6000828210156131dc576131dc61319b565b500390565b60008160001904831182151516156131fb576131fb61319b565b500290565b60008261321d57634e487b7160e01b600052601260045260246000fd5b500490565b60208082526025908201527f4d7573742062652061626f766520302e33337e25206f6620746f74616c2073756040820152643838363c9760d91b606082015260800190565b60208082526036908201527f43616e206f6e6c792061697264726f70203230302077616c6c657473207065726040820152752074786e2064756520746f20676173206c696d69747360501b606082015260800190565b600082198211156132d0576132d061319b565b500190565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b601f821115610a5b57600081815260208120601f850160051c810160208610156133595750805b601f850160051c820191505b8181101561292157828155600101613365565b815167ffffffffffffffff81111561339257613392612c7f565b6133a6816133a08454613121565b84613332565b602080601f8311600181146133db57600084156133c35750858301515b600019600386901b1c1916600185901b178555612921565b600085815260208120601f198616915b8281101561340a578886015182559484019460019091019084016133eb565b50858210156134285787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600181815b808511156134735781600019048211156134595761345961319b565b8085161561346657918102915b93841c939080029061343d565b509250929050565b60008261348a5750600161090a565b816134975750600061090a565b81600181146134ad57600281146134b7576134d3565b600191505061090a565b60ff8411156134c8576134c861319b565b50506001821b61090a565b5060208310610133831016604e8410600b84101617156134f6575081810a61090a565b6135008383613438565b80600019048211156135145761351461319b565b029392505050565b600061243b60ff84168361347b565b60006020828403121561353d57600080fd5b815161243b81612c2b565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b60008060006060848603121561359857600080fd5b8351925060208401519150604084015190509250925092565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156136015784516001600160a01b0316835293830193918301916001016135dc565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220aa40598d4452ef20384b7bac1763c7334412c8dcfdf8b955b75027f8441b03ce64736f6c634300080f0033

Deployed Bytecode Sourcemap

3636:21748:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5770:73;;;;;;;;;;;;5801:42;5770:73;;;;;-1:-1:-1;;;;;178:32:1;;;160:51;;148:2;133:18;5770:73:0;;;;;;;;9562:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;5599:35::-;;;;;;;;;;-1:-1:-1;5599:35:0;;;;-1:-1:-1;;;;;5599:35:0;;;10175:161;;;;;;;;;;-1:-1:-1;10175:161:0;;;;;:::i;:::-;;:::i;:::-;;;1818:14:1;;1811:22;1793:41;;1781:2;1766:18;10175:161:0;1653:187:1;17375:328:0;;;;;;;;;;-1:-1:-1;17375:328:0;;;;;:::i;:::-;;:::i;:::-;;5916:25;;;;;;;;;;-1:-1:-1;5916:25:0;;;;-1:-1:-1;;;;;5916:25:0;;;9297:83;;;;;;;;;;-1:-1:-1;9370:7:0;;9297:83;;;3919:25:1;;;3907:2;3892:18;9297:83:0;3773:177:1;10908:306:0;;;;;;;;;;-1:-1:-1;10908:306:0;;;;;:::i;:::-;;:::i;16421:257::-;;;;;;;;;;-1:-1:-1;16421:257:0;;;;;:::i;:::-;;:::i;23479:615::-;;;;;;;;;;-1:-1:-1;23479:615:0;;;;;:::i;:::-;;:::i;9386:80::-;;;;;;;;;;-1:-1:-1;9454:9:0;;9386:80;;9454:9;;;;6078:36:1;;6066:2;6051:18;9386:80:0;5936:184:1;5948:26:0;;;;;;;;;;-1:-1:-1;5948:26:0;;;;-1:-1:-1;;;;;5948:26:0;;;11222:215;;;;;;;;;;-1:-1:-1;11222:215:0;;;;;:::i;:::-;;:::i;4776:77::-;;;;;;;;;;-1:-1:-1;4776:77:0;;;;;;;;;;;;;;;;6327:25:1;;;6383:2;6368:18;;6361:34;;;;6411:18;;;6404:34;6315:2;6300:18;4776:77:0;6125:319:1;16161:252:0;;;;;;;;;;-1:-1:-1;16161:252:0;;;;;:::i;:::-;;:::i;5641:21::-;;;;;;;;;;-1:-1:-1;5641:21:0;;;;-1:-1:-1;;;;;5641:21:0;;;6015:41;;;;;;;;;;-1:-1:-1;6015:41:0;;;;-1:-1:-1;;;6015:41:0;;;;;;7986:749;;;;;;;;;;-1:-1:-1;7986:749:0;;;;;:::i;:::-;;:::i;11678:125::-;;;;;;;;;;-1:-1:-1;11678:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;11767:28:0;11743:4;11767:28;;;:19;:28;;;;;;;;;11678:125;6405:36;;;;;;;;;;-1:-1:-1;6405:36:0;;;;;;;;10661:120;;;;;;;;;;-1:-1:-1;10661:120:0;;;;;:::i;:::-;;:::i;14844:134::-;;;;;;;;;;-1:-1:-1;14844:134:0;;;;;:::i;:::-;;:::i;9875:117::-;;;;;;;;;;-1:-1:-1;9875:117:0;;;;;:::i;:::-;;:::i;8743:195::-;;;;;;;;;;;;;:::i;16034:119::-;;;;;;;;;;;;;:::i;9648:80::-;;;;;;;;;;-1:-1:-1;9700:7:0;7964:6;-1:-1:-1;;;;;7964:6:0;9648:80;;4106:68;;;;;;;;;;-1:-1:-1;4106:68:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;9472:84;;;;;;;;;;;;;:::i;10789:111::-;;;;;;;;;;-1:-1:-1;10789:111:0;;;;;:::i;:::-;-1:-1:-1;;;;;10875:17:0;10848:7;10875:17;;;:8;:17;;;;;;;10789:111;11445:225;;;;;;;;;;-1:-1:-1;11445:225:0;;;;;:::i;:::-;;:::i;11899:2937::-;;;;;;:::i;:::-;;:::i;10000:167::-;;;;;;;;;;-1:-1:-1;10000:167:0;;;;;:::i;:::-;;:::i;3745:21::-;;;;;;;;;;-1:-1:-1;3745:21:0;;;;-1:-1:-1;;;;;3745:21:0;;;5261:93;;;;;;;;;;-1:-1:-1;5261:93:0;;;;;;;;;;;;15152:166;;;;;;;;;;-1:-1:-1;15152:166:0;;;;;:::i;:::-;;:::i;17191:171::-;;;;;;;;;;-1:-1:-1;17191:171:0;;;;;:::i;:::-;;:::i;15330:289::-;;;;;;;;;;-1:-1:-1;15330:289:0;;;;;:::i;:::-;;:::i;14986:158::-;;;;;;;;;;-1:-1:-1;14986:158:0;;;;;:::i;:::-;;:::i;16983:200::-;;;;;;;;;;-1:-1:-1;16983:200:0;;;;;:::i;:::-;;:::i;9734:133::-;;;;;;;;;;-1:-1:-1;9734:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;9836:19:0;;;9818:7;9836:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;9734:133;5004:92;;;;;;;;;;-1:-1:-1;5004:92:0;;;;;;;;;;;;15627:399;;;;;;;;;;-1:-1:-1;15627:399:0;;;;;:::i;:::-;;:::i;11811:76::-;;;;;;;;;;;;;:::i;16686:289::-;;;;;;;;;;-1:-1:-1;16686:289:0;;;;;:::i;:::-;;:::i;9562:80::-;9610:13;9634:5;9627:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9562:80;:::o;10175:161::-;10250:4;10267:39;188:10;10290:7;10299:6;10267:8;:39::i;:::-;-1:-1:-1;10324:4:0;10175:161;;;;;:::o;17375:328::-;7151:6;;-1:-1:-1;;;;;7151:6:0;188:10;7151:22;;:52;;-1:-1:-1;7177:10:0;;-1:-1:-1;;;;;7177:10:0;188;7177:26;7151:52;7143:81;;;;-1:-1:-1;;;7143:81:0;;;;;;;:::i;:::-;;;;;;;;;17475:6:::1;17470:226;17491:12;:19;17487:1;:23;17470:226;;;17537:7;:24;17545:12;17558:1;17545:15;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;17537:24:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;17537:24:0;;::::1;;17536:25;:71:::0;::::1;;;;5715:42;-1:-1:-1::0;;;;;17565:42:0::1;:12;17578:1;17565:15;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;17565:42:0::1;;;17536:71;17532:153;;;17662:7;17628:14;:31;17643:12;17656:1;17643:15;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;17628:31:0::1;-1:-1:-1::0;;;;;17628:31:0::1;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;17532:153;17512:3:::0;::::1;::::0;::::1;:::i;:::-;;;;17470:226;;;;17375:328:::0;;:::o;10908:306::-;-1:-1:-1;;;;;11029:19:0;;11008:4;11029:19;;;:11;:19;;;;;;;;11049:10;11029:31;;;;;;;;-1:-1:-1;;11029:52:0;11025:126;;-1:-1:-1;;;;;11098:19:0;;;;;;:11;:19;;;;;;;;11118:10;11098:31;;;;;;;:41;;11133:6;;11098:19;:41;;11133:6;;11098:41;:::i;:::-;;;;-1:-1:-1;;11025:126:0;11170:36;11180:6;11188:9;11199:6;11170:9;:36::i;:::-;11163:43;10908:306;-1:-1:-1;;;;10908:306:0:o;16421:257::-;7151:6;;-1:-1:-1;;;;;7151:6:0;188:10;7151:22;;:52;;-1:-1:-1;7177:10:0;;-1:-1:-1;;;;;7177:10:0;188;7177:26;7151:52;7143:81;;;;-1:-1:-1;;;7143:81:0;;;;;;;:::i;:::-;16505:13:::1;16543:7;16532;16522;;:17;;;;:::i;:::-;16521:29;;;;:::i;:::-;16505:45;;16589:3;16579:7;;:13;;;;:::i;:::-;16569:5;:24;;16561:74;;;;-1:-1:-1::0;;;16561:74:0::1;;;;;;;:::i;:::-;16646:14;:22:::0;-1:-1:-1;;16421:257:0:o;23479:615::-;7151:6;;-1:-1:-1;;;;;7151:6:0;188:10;7151:22;;:52;;-1:-1:-1;7177:10:0;;-1:-1:-1;;;;;7177:10:0;188;7177:26;7151:52;7143:81;;;;-1:-1:-1;;;7143:81:0;;;;;;;:::i;:::-;23619:15:::1;:22;23601:7;:14;:40;23593:83;;;::::0;-1:-1:-1;;;23593:83:0;;12742:2:1;23593:83:0::1;::::0;::::1;12724:21:1::0;12781:2;12761:18;;;12754:30;12820:32;12800:18;;;12793:60;12870:18;;23593:83:0::1;12540:354:1::0;23593:83:0::1;23712:3;23695:7;:14;:20;23687:87;;;;-1:-1:-1::0;;;23687:87:0::1;;;;;;;:::i;:::-;23887:9;23883:204;23906:7;:14;23902:1;:18;23883:204;;;23941:14;23958:7;23966:1;23958:10;;;;;;;;:::i;:::-;;;;;;;23941:27;;23983:14;24000:15;24016:1;24000:18;;;;;;;;:::i;:::-;;;;;;;24019:4;24000:23;;;;:::i;:::-;23983:40;;24038:37;24048:10;24060:6;24068;24038:9;:37::i;:::-;;23926:161;;23922:3;;;;;:::i;:::-;;;;23883:204;;11222:215:::0;188:10;11310:4;11359:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11359:34:0;;;;;;;;;;11310:4;;11327:80;;11350:7;;11359:47;;11396:10;;11359:47;:::i;:::-;11327:8;:80::i;16161:252::-;7151:6;;-1:-1:-1;;;;;7151:6:0;188:10;7151:22;;:52;;-1:-1:-1;7177:10:0;;-1:-1:-1;;;;;7177:10:0;188;7177:26;7151:52;7143:81;;;;-1:-1:-1;;;7143:81:0;;;;;;;:::i;:::-;16244:13:::1;16282:7;16271;16261;;:17;;;;:::i;:::-;16260:29;;;;:::i;:::-;16244:45;;16328:3;16318:7;;:13;;;;:::i;:::-;16308:5;:24;;16300:74;;;;-1:-1:-1::0;;;16300:74:0::1;;;;;;;:::i;:::-;16385:12;:20:::0;-1:-1:-1;;16161:252:0:o;7986:749::-;7151:6;;-1:-1:-1;;;;;7151:6:0;188:10;7151:22;;:52;;-1:-1:-1;7177:10:0;;-1:-1:-1;;;;;7177:10:0;188;7177:26;7151:52;7143:81;;;;-1:-1:-1;;;7143:81:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8067:22:0;::::1;8059:96;;;;-1:-1:-1::0;;;8059:96:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;;;8174:16:0;::::1;::::0;8166:90:::1;;;;-1:-1:-1::0;;;8166:90:0::1;;;;;;;:::i;:::-;8287:6;::::0;;8267:34:::1;::::0;-1:-1:-1;;;;;8287:6:0;;::::1;::::0;8267:19:::1;:34::i;:::-;8312:35;8332:8;8342:4;8312:19;:35::i;:::-;8394:6;::::0;8372:10:::1;::::0;-1:-1:-1;;;;;8394:6:0;;::::1;8372:10:::0;::::1;:29:::0;8368:78:::1;;8416:10;:30:::0;;-1:-1:-1;;;;;;8416:30:0::1;-1:-1:-1::0;;;;;8416:30:0;::::1;;::::0;;8368:78:::1;8509:6;::::0;8499:17:::1;::::0;-1:-1:-1;;;;;8509:6:0::1;8499:9;:17::i;:::-;8467:19;8479:6:::0;;-1:-1:-1;;;;;8479:6:0;;::::1;8467:19:::0;;:11:::1;:19;::::0;;;;;;;:29;;::::1;::::0;;;;;;;:49;;;;8540:6;;8467:19;;8530:17:::1;::::0;8540:6:::1;8530:9;:17::i;:::-;:21;8527:99;;;8578:6;::::0;8568:46:::1;::::0;-1:-1:-1;;;;;8578:6:0::1;8586:8:::0;8596:17:::1;8578:6:::0;8596:9:::1;:17::i;:::-;8568:9;:46::i;:::-;;8527:99;8646:6;:17:::0;;-1:-1:-1;;;;;;8646:17:0::1;-1:-1:-1::0;;;;;8646:17:0;::::1;::::0;;::::1;::::0;;8679:38:::1;::::0;8646:17;;;;8679:38:::1;::::0;8646:6;8679:38:::1;7986:749:::0;:::o;10661:120::-;10714:4;10738:35;10746:7;-1:-1:-1;;10738:7:0;:35::i;14844:134::-;7151:6;;-1:-1:-1;;;;;7151:6:0;188:10;7151:22;;:52;;-1:-1:-1;7177:10:0;;-1:-1:-1;;;;;7177:10:0;188;7177:26;7151:52;7143:81;;;;-1:-1:-1;;;7143:81:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14932:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;14932:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14844:134::o;9875:117::-;-1:-1:-1;;;;;9968:16:0;9941:7;9968:16;;;:7;:16;;;;;;;9875:117::o;8743:195::-;7151:6;;-1:-1:-1;;;;;7151:6:0;188:10;7151:22;;:52;;-1:-1:-1;7177:10:0;;-1:-1:-1;;;;;7177:10:0;188;7177:26;7151:52;7143:81;;;;-1:-1:-1;;;7143:81:0;;;;;;;:::i;:::-;8830:6:::1;::::0;;8810:34:::1;::::0;-1:-1:-1;;;;;8830:6:0;;::::1;::::0;8810:19:::1;:34::i;:::-;8872:1;8855:19:::0;;-1:-1:-1;;;;;;8855:19:0::1;::::0;;8890:40:::1;::::0;8872:1;;8890:40:::1;::::0;8872:1;;8890:40:::1;8743:195::o:0;16034:119::-;7151:6;;-1:-1:-1;;;;;7151:6:0;188:10;7151:22;;:52;;-1:-1:-1;7177:10:0;;-1:-1:-1;;;;;7177:10:0;188;7177:26;7151:52;7143:81;;;;-1:-1:-1;;;7143:81:0;;;;;;;:::i;:::-;16103:7:::1;::::0;16088:12:::1;:22:::0;;;16121:14:::1;:24:::0;16034:119::o;9472:84::-;9522:13;9546:7;9539:14;;;;;:::i;11445:225::-;188:10;11538:4;11587:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11587:34:0;;;;;;;;;;11538:4;;11555:85;;11578:7;;11587:52;;11624:15;;11587:52;:::i;11899:2937::-;7151:6;;-1:-1:-1;;;;;7151:6:0;188:10;7151:22;;:52;;-1:-1:-1;7177:10:0;;-1:-1:-1;;;;;7177:10:0;188;7177:26;7151:52;7143:81;;;;-1:-1:-1;;;7143:81:0;;;;;;;:::i;:::-;12133:13:::1;::::0;::::1;;12132:14;12124:49;;;::::0;-1:-1:-1;;;12124:49:0;;14087:2:1;12124:49:0::1;::::0;::::1;14069:21:1::0;14126:2;14106:18;;;14099:30;-1:-1:-1;;;14145:18:1;;;14138:52;14207:18;;12124:49:0::1;13885:346:1::0;12124:49:0::1;12211:11;:18;12192:8;:15;:37;12184:80;;;::::0;-1:-1:-1;;;12184:80:0;;12742:2:1;12184:80:0::1;::::0;::::1;12724:21:1::0;12781:2;12761:18;;;12754:30;12820:32;12800:18;;;12793:60;12870:18;;12184:80:0::1;12540:354:1::0;12184:80:0::1;12301:3;12283:8;:15;:21;12275:88;;;;-1:-1:-1::0;;;12275:88:0::1;;;;;;;:::i;:::-;12483:13;::::0;:18;12475:27:::1;;;::::0;::::1;;12518:5;:16;12526:8:::0;12518:5;:16:::1;:::i;:::-;-1:-1:-1::0;12545:7:0::1;:20;12555:10:::0;12545:7;:20:::1;:::i;:::-;-1:-1:-1::0;12578:14:0::1;:27:::0;;;12616:9:::1;:14:::0;;-1:-1:-1;;12616:14:0::1;12628:2;12616:14:::0;;::::1;::::0;;;12668:13:::1;::::0;:2:::1;:13;:::i;:::-;12651:14;;:30;;;;:::i;:::-;12641:7;:40:::0;12694:9:::1;:46:::0;;-1:-1:-1;;;;;;12694:46:0::1;5715:42;12694:46:::0;;::::1;::::0;;;12778:19:::1;::::0;;-1:-1:-1;;;12778:19:0;;;;:17:::1;::::0;:19:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;5715:42;12778:19:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12760:49:0::1;;12810:9;;;;;;;;;-1:-1:-1::0;;;;;12810:9:0::1;-1:-1:-1::0;;;;;12810:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12760:82;::::0;-1:-1:-1;;;;;;12760:82:0::1;::::0;;;;;;-1:-1:-1;;;;;18309:15:1;;;12760:82:0::1;::::0;::::1;18291:34:1::0;12836:4:0::1;18341:18:1::0;;;18334:43;18226:18;;12760:82:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12751:6;:91:::0;;-1:-1:-1;;;;;;12751:91:0;;::::1;-1:-1:-1::0;;;;;12751:91:0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;12853:15:0;;;:7:::1;:15;::::0;;;;;;;:22;;-1:-1:-1;;12853:22:0::1;-1:-1:-1::0;12853:22:0::1;::::0;;12906:4:::1;12886:26:::0;;:11:::1;:26:::0;;;;;12921:9:::1;::::0;;::::1;12886:46:::0;;;;;;;-1:-1:-1;;12886:66:0;;12965:21;;;::::1;::::0;;::::1;;::::0;;;12997:11:::1;:23:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;13048:3:::1;13033:12;:18:::0;;;13113:5:::1;13098:12;:20:::0;;;13145:7:::1;::::0;13113:5;;13145:22:::1;::::0;::::1;:::i;:::-;13144:39;;;;:::i;:::-;13129:12;:54:::0;13223:3:::1;13204:16;:22:::0;;;13277:5:::1;13258:16;:24:::0;;;13311:7:::1;::::0;13277:5;;13311:26:::1;::::0;::::1;:::i;:::-;13310:47;;;;:::i;:::-;13293:14;:64:::0;13395:7:::1;::::0;13410:6:::1;::::0;13395:11:::1;::::0;13405:1:::1;13395:11;:::i;:::-;13394:22;;;;:::i;:::-;13378:13;:38:::0;13441:7:::1;::::0;13456:5:::1;::::0;13441:11:::1;::::0;13451:1:::1;13441:11;:::i;:::-;13440:21;;;;:::i;:::-;13427:10;:34:::0;13505:4:::1;13474:19;:28;13494:7;7937::::0;7964:6;-1:-1:-1;;;;;7964:6:0;;7899:79;13494:7:::1;-1:-1:-1::0;;;;;13474:28:0;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;13474:28:0;;;:35;;;::::1;;-1:-1:-1::0;;13474:35:0;;::::1;;::::0;;13540:10;;;::::1;13520:31:::0;;:19:::1;:31:::0;;;;;;:38;;;::::1;13474:35:::0;13520:38;;::::1;::::0;;;13589:11:::1;::::0;;;::::1;13569:32:::0;;;;;:39;;;::::1;::::0;::::1;::::0;;13647:4:::1;13619:34:::0;;;;;:41;;;::::1;::::0;::::1;::::0;;5801:42:::1;13671:25:::0;;;:32;;;;::::1;::::0;::::1;::::0;;;13714:17:::1;::::0;13732:7:::1;7937::::0;7964:6;-1:-1:-1;;;;;7964:6:0;;7899:79;13732:7:::1;-1:-1:-1::0;;;;;13714:26:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;13714:26:0;:33;;-1:-1:-1;;13714:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13760:42:::1;5715;-1:-1:-1::0;;13760:7:0::1;:42::i;:::-;;13813:35;13821:7;7937::::0;7964:6;-1:-1:-1;;;;;7964:6:0;;7899:79;13821:7:::1;-1:-1:-1::0;;13813:7:0::1;:35::i;:::-;-1:-1:-1::0;13861:13:0::1;:20:::0;;-1:-1:-1;;13861:20:0::1;13877:4;13861:20:::0;;::::1;::::0;;;13911:7:::1;::::0;;13861:13:::1;13900:7;7937::::0;7964:6;-1:-1:-1;;;;;7964:6:0;;7899:79;13900:7:::1;-1:-1:-1::0;;;;;13892:16:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;13892:16:0;:26;13929:42:::1;13938:7;7937::::0;7964:6;-1:-1:-1;;;;;7964:6:0;;7899:79;13938:7:::1;5715:42;13963:7;;13929:8;:42::i;:::-;7937:7:::0;7964:6;-1:-1:-1;;;;;7964:6:0;-1:-1:-1;;;;;13987:38:0::1;14004:1;-1:-1:-1::0;;;;;13987:38:0::1;;14017:7;;13987:38;;;;3919:25:1::0;;3907:2;3892:18;;3773:177;13987:38:0::1;;;;;;;;14048:6;::::0;14064:9:::1;::::0;14039:55:::1;::::0;-1:-1:-1;;;;;14048:6:0;;::::1;::::0;14064:9:::1;-1:-1:-1::0;;14039:8:0::1;:55::i;:::-;14137:9;::::0;14105:62:::1;::::0;14122:4:::1;::::0;-1:-1:-1;;;;;14137:9:0::1;-1:-1:-1::0;;14105:8:0::1;:62::i;:::-;14186:9;14182:200;14205:8;:15;14201:1;:19;14182:200;;;14241:15;14259:8;14268:1;14259:11;;;;;;;;:::i;:::-;;;;;;;14241:29;;14285:14;14302:11;14314:1;14302:14;;;;;;;;:::i;:::-;;;;;;;14317:4;14302:19;;;;:::i;:::-;14346:6;::::0;14285:36;;-1:-1:-1;14336:34:0::1;::::0;-1:-1:-1;;;;;14346:6:0::1;14354:7:::0;14285:36;14336:9:::1;:34::i;:::-;;14226:156;;14222:3;;;;;:::i;:::-;;;;14182:200;;;-1:-1:-1::0;14404:6:0::1;::::0;14394:51:::1;::::0;-1:-1:-1;;;;;14404:6:0::1;14420:4;14427:17;14404:6:::0;14427:9:::1;:17::i;14394:51::-;-1:-1:-1::0;14458:9:0::1;::::0;-1:-1:-1;;;;;14458:9:0::1;:25;14491:21;14536:4;14556:24;14536:4:::0;14556:9:::1;:24::i;:::-;14595:1;14638::::0;14681:7:::1;7937::::0;7964:6;-1:-1:-1;;;;;7964:6:0;;7899:79;14681:7:::1;14703:15;14458:271;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;14756:1:0::1;14740:13;:17:::0;;;14785:12:::1;14768:14;:29:::0;14808:13:::1;:20:::0;;-1:-1:-1;;14808:20:0::1;::::0;;::::1;::::0;;-1:-1:-1;;;;;;;;11899:2937:0:o;10000:167::-;10078:4;10095:42;188:10;10119:9;10130:6;10095:9;:42::i;:::-;-1:-1:-1;10155:4:0;;10000:167;-1:-1:-1;;;10000:167:0:o;15152:166::-;7151:6;;-1:-1:-1;;;;;7151:6:0;188:10;7151:22;;:52;;-1:-1:-1;7177:10:0;;-1:-1:-1;;;;;7177:10:0;188;7177:26;7151:52;7143:81;;;;-1:-1:-1;;;7143:81:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15250:52:0::1;15305:5;15250:52:::0;;;:35:::1;:52;::::0;;;;:60;;-1:-1:-1;;15250:60:0::1;::::0;;15152:166::o;17191:171::-;7151:6;;-1:-1:-1;;;;;7151:6:0;188:10;7151:22;;:52;;-1:-1:-1;7177:10:0;;-1:-1:-1;;;;;7177:10:0;188;7177:26;7151:52;7143:81;;;;-1:-1:-1;;;7143:81:0;;;;;;;:::i;:::-;17268:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;17268:32:0::1;-1:-1:-1::0;;;;17268:32:0;;::::1;;::::0;;17316:38:::1;::::0;::::1;::::0;::::1;::::0;17292:8;1818:14:1;1811:22;1793:41;;1781:2;1766:18;;1653:187;17316:38:0::1;;;;;;;;17191:171:::0;:::o;15330:289::-;7151:6;;-1:-1:-1;;;;;7151:6:0;188:10;7151:22;;:52;;-1:-1:-1;7177:10:0;;-1:-1:-1;;;;;7177:10:0;188;7177:26;7151:52;7143:81;;;;-1:-1:-1;;;7143:81:0;;;;;;;:::i;:::-;15458:5;15436:21:::1;15447:10:::0;15436;:21:::1;:::i;:::-;:27;;;;:::i;:::-;15468:3;15435:36;15425:72;;;::::0;-1:-1:-1;;;15425:72:0;;19513:2:1;15425:72:0::1;::::0;::::1;19495:21:1::0;19552:2;19532:18;;;19525:30;-1:-1:-1;;;19571:18:1;;;19564:51;19632:18;;15425:72:0::1;19311:345:1::0;15425:72:0::1;15508:6;:29:::0;;;;15548:16;:29;15588:11;:19;15330:289::o;14986:158::-;7151:6;;-1:-1:-1;;;;;7151:6:0;188:10;7151:22;;:52;;-1:-1:-1;7177:10:0;;-1:-1:-1;;;;;7177:10:0;188;7177:26;7151:52;7143:81;;;;-1:-1:-1;;;7143:81:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15077:52:0::1;;::::0;;;:35:::1;:52;::::0;;;;:59;;-1:-1:-1;;15077:59:0::1;15132:4;15077:59;::::0;;14986:158::o;16983:200::-;7151:6;;-1:-1:-1;;;;;7151:6:0;188:10;7151:22;;:52;;-1:-1:-1;7177:10:0;;-1:-1:-1;;;;;7177:10:0;188;7177:26;7151:52;7143:81;;;;-1:-1:-1;;;7143:81:0;;;;;;;:::i;:::-;17094:10:::1;:37:::0;;-1:-1:-1;;;;;17094:37:0;;::::1;-1:-1:-1::0;;;;;;17094:37:0;;::::1;;::::0;;;17142:11:::1;:33:::0;;;;;::::1;::::0;::::1;;::::0;;16983:200::o;15627:399::-;7151:6;;-1:-1:-1;;;;;7151:6:0;188:10;7151:22;;:52;;-1:-1:-1;7177:10:0;;-1:-1:-1;;;;;7177:10:0;188;7177:26;7151:52;7143:81;;;;-1:-1:-1;;;7143:81:0;;;;;;;:::i;:::-;15742:7:::1;:14:::0;15731:25;::::1;::::0;::::1;::::0;:73:::1;;-1:-1:-1::0;15789:15:0;;15777:27;::::1;;15731:73;:129;;;;-1:-1:-1::0;15841:19:0;;15825:35;::::1;;15731:129;15723:182;;;::::0;-1:-1:-1;;;15723:182:0;;19863:2:1;15723:182:0::1;::::0;::::1;19845:21:1::0;19902:2;19882:18;;;19875:30;19941:25;19921:18;;;19914:53;19984:18;;15723:182:0::1;19661:347:1::0;15723:182:0::1;15917:4;:21:::0;;;;15950:12;:23;15985:16;:31;15627:399::o;11811:76::-;7151:6;;-1:-1:-1;;;;;7151:6:0;188:10;7151:22;;:52;;-1:-1:-1;7177:10:0;;-1:-1:-1;;;;;7177:10:0;188;7177:26;7151:52;7143:81;;;;-1:-1:-1;;;7143:81:0;;;;;;;:::i;:::-;11878:1:::1;11862:13;:17:::0;11811:76::o;16686:289::-;7151:6;;-1:-1:-1;;;;;7151:6:0;188:10;7151:22;;:52;;-1:-1:-1;7177:10:0;;-1:-1:-1;;;;;7177:10:0;188;7177:26;7151:52;7143:81;;;;-1:-1:-1;;;7143:81:0;;;;;;;:::i;:::-;16886:16:::1;16866;16856:7;;:26;;;;:::i;:::-;16855:47;;;;:::i;:::-;16839:13;:63:::0;16927:7:::1;::::0;16954:13;;16927:23:::1;::::0;16937:13;;16927:23:::1;:::i;:::-;16926:41;;;;:::i;:::-;16913:10;:54:::0;-1:-1:-1;;;;16686:289:0:o;10344:309::-;-1:-1:-1;;;;;10438:20:0;;10430:52;;;;-1:-1:-1;;;10430:52:0;;20215:2:1;10430:52:0;;;20197:21:1;20254:2;20234:18;;;20227:30;-1:-1:-1;;;20273:18:1;;;20266:49;20332:18;;10430:52:0;20013:343:1;10430:52:0;-1:-1:-1;;;;;10501:21:0;;10493:53;;;;-1:-1:-1;;;10493:53:0;;20215:2:1;10493:53:0;;;20197:21:1;20254:2;20234:18;;;20227:30;-1:-1:-1;;;20273:18:1;;;20266:49;20332:18;;10493:53:0;20013:343:1;10493:53:0;-1:-1:-1;;;;;10559:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;10612:33;;3919:25:1;;;10612:33:0;;3892:18:1;10612:33:0;;;;;;;10344:309;;;:::o;18701:2243::-;18780:4;-1:-1:-1;;;;;18805:18:0;;18797:51;;;;-1:-1:-1;;;18797:51:0;;20563:2:1;18797:51:0;;;20545:21:1;20602:2;20582:18;;;20575:30;-1:-1:-1;;;20621:18:1;;;20614:50;20681:18;;18797:51:0;20361:344:1;18797:51:0;-1:-1:-1;;;;;18867:16:0;;18859:49;;;;-1:-1:-1;;;18859:49:0;;20563:2:1;18859:49:0;;;20545:21:1;20602:2;20582:18;;;20575:30;-1:-1:-1;;;20621:18:1;;;20614:50;20681:18;;18859:49:0;20361:344:1;18859:49:0;18936:1;18927:6;:10;18919:31;;;;-1:-1:-1;;;18919:31:0;;20912:2:1;18919:31:0;;;20894:21:1;20951:1;20931:18;;;20924:29;-1:-1:-1;;;20969:18:1;;;20962:38;21017:18;;18919:31:0;20710:331:1;18919:31:0;-1:-1:-1;;;;;18970:18:0;;;;;;:14;:18;;;;;;;;18969:19;:44;;;;-1:-1:-1;;;;;;18993:20:0;;;;;;:14;:20;;;;;;;;18992:21;18969:44;18961:71;;;;-1:-1:-1;;;18961:71:0;;21248:2:1;18961:71:0;;;21230:21:1;21287:2;21267:18;;;21260:30;-1:-1:-1;;;21306:18:1;;;21299:45;21361:18;;18961:71:0;21046:339:1;18961:71:0;19064:17;19079:2;19064:12;:17;:::i;:::-;19047:14;;:34;19043:230;;;19098:13;19141:9;19176:27;19190:4;19195:2;19141:9;19176:13;:27::i;:::-;19165:38;;19226:8;19218:43;;;;-1:-1:-1;;;19218:43:0;;21592:2:1;19218:43:0;;;21574:21:1;21631:2;21611:18;;;21604:30;-1:-1:-1;;;21650:18:1;;;21643:52;21712:18;;19218:43:0;21390:346:1;19218:43:0;19083:190;;19043:230;19286:20;19297:4;19303:2;19286:10;:20::i;:::-;19283:891;;;19327:15;;;;19323:373;;;-1:-1:-1;;;;;19367:13:0;;;;;;:7;:13;;;;;;;;19363:318;;;-1:-1:-1;;;;;19412:13:0;;;;;;:9;:13;;;;;;19429:12;19412:29;;19404:38;;;;;;-1:-1:-1;;;;;19465:13:0;;;;;;:9;:13;;;;;19481:12;19465:28;;19363:318;;;-1:-1:-1;;;;;19572:15:0;;;;;;:9;:15;;;;;;19591:12;19572:31;;19564:40;;;;;;-1:-1:-1;;;;;19627:15:0;;;;;;:9;:15;;;;;19645:12;19627:30;;19363:318;-1:-1:-1;;;;;19715:41:0;;;;;;:35;:41;;;;;;;;;:84;;-1:-1:-1;;;;;;19760:39:0;;;;;;:35;:39;;;;;;;;19715:84;19710:439;;-1:-1:-1;;;;;19824:13:0;;;;;;:7;:13;;;;;;;;;:28;;-1:-1:-1;;;;;;19841:11:0;;;;;;:7;:11;;;;;;;;19824:28;19821:130;;;19890:12;;19880:6;:22;;19872:59;;;;-1:-1:-1;;;19872:59:0;;21943:2:1;19872:59:0;;;21925:21:1;21982:2;21962:18;;;21955:30;22021:26;22001:18;;;21994:54;22065:18;;19872:59:0;21741:348:1;19872:59:0;-1:-1:-1;;;;;19972:20:0;;5715:42;19972:20;;;;:36;;-1:-1:-1;;;;;;19997:11:0;;;;;;:7;:11;;;;;;;;19996:12;19972:36;19969:163;;;20067:14;;20057:6;20041:13;20051:2;20041:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;20033:79;;;;-1:-1:-1;;;20033:79:0;;22296:2:1;20033:79:0;;;22278:21:1;22335:2;22315:18;;;22308:30;22374:28;22354:18;;;22347:56;22420:18;;20033:79:0;22094:350:1;20033:79:0;-1:-1:-1;;;;;20190:11:0;;;;;;:7;:11;;;;;;:16;;20186:79;;-1:-1:-1;;;;;20223:12:0;;;;;;:8;:12;;;;;20238:15;20223:30;;20186:79;-1:-1:-1;;;;;20310:25:0;;20277:12;20310:25;;;:19;:25;;;;;;20292:4;;20310:25;;;:52;;-1:-1:-1;;;;;;20339:23:0;;;;;;:19;:23;;;;;;;;20310:52;20307:98;;;-1:-1:-1;20388:5:0;20307:98;-1:-1:-1;;;;;20421:11:0;;;;;;:7;:11;;;;;;;;20417:457;;;20454:16;;-1:-1:-1;;;20454:16:0;;;;20453:17;:59;;;;-1:-1:-1;20491:21:0;;-1:-1:-1;;;20491:21:0;;;;20453:59;20449:408;;;20547:28;20578:24;20596:4;20578:9;:24::i;:::-;20547:55;;20649:13;;20625:20;:37;20621:221;;20714:10;;20690:20;:34;20687:77;;-1:-1:-1;20751:10:0;;20687:77;20786:36;20801:20;20786:14;:36::i;:::-;20528:329;20449:408;20892:44;20910:4;20916:2;20920:6;20928:7;20892:17;:44::i;:::-;20885:51;18701:2243;-1:-1:-1;;;;;18701:2243:0:o;18042:645::-;18172:6;;18123:4;;18155;;-1:-1:-1;;;;;18172:14:0;;;:6;;:14;18168:481;;-1:-1:-1;;;;;18191:18:0;;;;;;;:14;:18;;;;;;18212:12;18191:33;;;;18227:20;;;;;;;:35;18168:481;;;18281:6;;-1:-1:-1;;;;;18281:12:0;;;:6;;:12;18277:372;;-1:-1:-1;;;;;18315:20:0;;;;;;:14;:20;;;;;;18339:12;-1:-1:-1;18311:89:0;;-1:-1:-1;;;;;;18355:18:0;;;;;;:12;:18;;;;;:25;;-1:-1:-1;;18355:25:0;18376:4;18355:25;;;18311:89;-1:-1:-1;;;;;18423:18:0;;;;;;:12;:18;;;;;;;;18419:215;;;-1:-1:-1;18456:5:0;18419:215;;;18491:6;;-1:-1:-1;;;;;18491:12:0;;;:6;;:12;;;;:30;;-1:-1:-1;18507:6:0;;-1:-1:-1;;;;;18507:14:0;;;:6;;:14;;18491:30;18487:147;;;-1:-1:-1;;;;;18525:20:0;;;;;;;:14;:20;;;;;;18548:12;18525:35;;;;18562:18;;;;;;;;:33;;;18597:20;;;;;;;:35;18670:8;18042:645;-1:-1:-1;;;;18042:645:0:o;17711:323::-;17779:4;7964:6;;-1:-1:-1;;;;;17803:15:0;;;7964:6;;17803:15;;;;:45;;-1:-1:-1;7937:7:0;7964:6;-1:-1:-1;;;;;17835:13:0;;;7964:6;;17835:13;;17803:45;:84;;;;-1:-1:-1;;;;;;17866:21:0;;;;;;:17;:21;;;;;;;;17865:22;17803:84;:125;;;;-1:-1:-1;;;;;;17905:23:0;;;;;;:17;:23;;;;;;;;17904:24;17803:125;:152;;;;-1:-1:-1;;;;;;17945:10:0;;5801:42;17945:10;;17803:152;:185;;;;-1:-1:-1;;;;;;17972:16:0;;;;17803:185;:223;;;;-1:-1:-1;;;;;;18005:21:0;;18021:4;18005:21;;17803:223;17796:230;17711:323;-1:-1:-1;;;17711:323:0:o;20952:1257::-;7025:16;:23;;-1:-1:-1;;;;7025:23:0;-1:-1:-1;;;7025:23:0;;;21060:16;;:6:::1;21041:16:::0;:35:::1;::::0;21060:16;21041:35:::1;:::i;:::-;21037:66:::0;21096:7:::1;21037:66;21217:11:::0;;21198:16;;21217:6:::1;21179:16:::0;21113:17:::1;::::0;21234:1:::1;::::0;21217:11;;21179:35:::1;::::0;21198:16;21179:35:::1;:::i;:::-;:49;;;;:::i;:::-;21158:6;:16:::0;21135:39:::1;::::0;:20;:39:::1;:::i;:::-;21134:95;;;;:::i;:::-;21133:102;;;;:::i;:::-;21113:122:::0;-1:-1:-1;21248:20:0::1;21271:32;21113:122:::0;21271:20;:32:::1;:::i;:::-;21248:55;;21314:30;21331:12;21314:16;:30::i;:::-;21519:11:::0;;21500:16;;21519:6:::1;21481:16:::0;21382:21:::1;::::0;21357:22:::1;::::0;21536:1:::1;::::0;21481:35:::1;::::0;21500:16;21481:35:::1;:::i;:::-;:49;;;;:::i;:::-;21460:6;:16:::0;21443:33:::1;::::0;:14;:33:::1;:::i;:::-;21442:89;;;;:::i;:::-;21441:96;;;;:::i;:::-;21414:123:::0;-1:-1:-1;21556:13:0;;21552:161:::1;;21586:41;21599:9;21610:16;21586:12;:41::i;:::-;21647:54;::::0;;6327:25:1;;;6383:2;6368:18;;6361:34;;;6411:18;;;6404:34;;;21647:54:0::1;::::0;6315:2:1;6300:18;21647:54:0::1;;;;;;;21552:161;21750:21;::::0;-1:-1:-1;21786:18:0;;21782:420:::1;;21896:11:::0;;21877:16;;21821:14:::1;::::0;21877:30:::1;::::0;::::1;:::i;:::-;21856:16:::0;;21839:33:::1;::::0;:14;:33:::1;:::i;:::-;21838:70;;;;:::i;:::-;21994:11:::0;;21975:16;;21821:87;;-1:-1:-1;21923:15:0::1;::::0;21975:30:::1;::::0;21994:11;21975:30:::1;:::i;:::-;21959:11:::0;;21942:28:::1;::::0;:14;:28:::1;:::i;:::-;21941:65;;;;:::i;:::-;22082:10;::::0;22074:43:::1;::::0;21923:83;;-1:-1:-1;22042:4:0::1;::::0;-1:-1:-1;;;;;22082:10:0;;::::1;::::0;22106:6;;22074:43:::1;::::0;;;22106:6;22082:10;22074:43:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;22153:11:0::1;::::0;22145:45:::1;::::0;22061:56;;-1:-1:-1;;;;;;22153:11:0::1;::::0;22178:7;;22145:45:::1;::::0;;;22178:7;22153:11;22145:45:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;21782:420:0::1;21026:1183;;;;7059:1;-1:-1:-1::0;7071:16:0;:24;;-1:-1:-1;;;;7071:24:0;;;20952:1257::o;24102:582::-;24224:16;;24202:4;;24224:16;;24219:221;;24257:28;24276:4;24282:2;24257:18;:28::i;:::-;24305:16;;;;24304:17;:41;;;;;24325:20;24336:4;24342:2;24325:10;:20::i;:::-;24300:129;;;24366:47;;-1:-1:-1;;;24366:47:0;;22861:2:1;24366:47:0;;;22843:21:1;22900:2;22880:18;;;22873:30;22939:34;22919:18;;;22912:62;-1:-1:-1;;;22990:18:1;;;22983:35;23035:19;;24366:47:0;22659:401:1;24300:129:0;-1:-1:-1;;;;;24451:13:0;;;;;;:7;:13;;;;;:23;;24468:6;;24451:13;:23;;24468:6;;24451:23;:::i;:::-;;;;-1:-1:-1;24485:22:0;;-1:-1:-1;24511:7:0;24510:48;;24552:6;24510:48;;;24522:27;24532:4;24538:2;24542:6;24522:9;:27::i;:::-;-1:-1:-1;;;;;24573:11:0;;;;;;:7;:11;;;;;:29;;24485:73;;-1:-1:-1;24485:73:0;;24573:11;;;:29;;24485:73;;24573:29;:::i;:::-;;;;;;;;24635:2;-1:-1:-1;;;;;24620:34:0;24629:4;-1:-1:-1;;;;;24620:34:0;;24639:14;24620:34;;;;3919:25:1;;3907:2;3892:18;;3773:177;24620:34:0;;;;;;;;-1:-1:-1;24672:4:0;;24102:582;-1:-1:-1;;;;;24102:582:0:o;22217:417::-;22308:16;;;22322:1;22308:16;;;;;;;;22284:21;;22308:16;;;;;;;;;;-1:-1:-1;22308:16:0;22284:40;;22353:4;22335;22340:1;22335:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22335:23:0;;;:7;;;;;;;;;;:23;;;;22379:9;;:16;;;-1:-1:-1;;;22379:16:0;;;;:9;;;;;:14;;:16;;;;;22335:7;;22379:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22369:4;22374:1;22369:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22369:26:0;;;:7;;;;;;;;;:26;22408:9;;:218;;-1:-1:-1;;;22408:218:0;;:9;;;:60;;:218;;22483:11;;22408:9;;22553:4;;22580;;22600:15;;22408:218;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22273:361;22217:417;:::o;22642:335::-;22723:9;;-1:-1:-1;;;;;22723:9:0;:25;22756:9;22789:4;22809:11;22723:9;;22921:7;7937;7964:6;-1:-1:-1;;;;;7964:6:0;;7899:79;22921:7;22943:15;22723:246;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;22642:335;;:::o;22985:486::-;23067:16;;;;23066:17;23058:65;;;;-1:-1:-1;;;23058:65:0;;24252:2:1;23058:65:0;;;24234:21:1;24291:2;24271:18;;;24264:30;24330:34;24310:18;;;24303:62;-1:-1:-1;;;24381:18:1;;;24374:33;24424:19;;23058:65:0;24050:399:1;23058:65:0;23139:20;23150:4;23156:2;23139:10;:20::i;:::-;23138:21;:37;;;;-1:-1:-1;23169:6:0;;-1:-1:-1;;;;;23163:12:0;;;23169:6;;23163:12;23138:37;23134:330;;;23211:12;23196;:27;-1:-1:-1;;;;;23240:23:0;;;;;;:17;:23;;;;;;;;;:30;;-1:-1:-1;;23240:30:0;;;23266:4;23240:30;;;;;;23285:16;:23;;;;;;;;;23338:15;23323:12;:30;23370:21;:28;;-1:-1:-1;;;;23370:28:0;-1:-1:-1;;;23370:28:0;;;23418:34;;1793:41:1;;;23418:34:0;;1766:18:1;23418:34:0;;;;;;;23134:330;22985:486;;:::o;24692:689::-;24832:6;;24771:7;;;;-1:-1:-1;;;;;24832:6:0;;;24826:12;;;;24822:187;;-1:-1:-1;24866:12:0;;24822:187;;;24924:6;;-1:-1:-1;;;;;24924:6:0;;;24916:14;;;;24912:97;;-1:-1:-1;24946:4:0;:11;24912:97;;;-1:-1:-1;24991:16:0;;24912:97;25025:20;25036:4;25042:2;25025:10;:20::i;:::-;25021:142;;;25065:13;;:18;;:42;;;25087:13;;25105:1;25087:20;;25065:42;25061:91;;;25128:8;;;25061:91;25173:17;5407:5;25194:19;25203:10;25194:6;:19;:::i;:::-;:38;;;;:::i;:::-;25260:4;25244:22;;;;:7;:22;;;;;:37;;25173:60;;-1:-1:-1;25173:60:0;;25244:22;;;:37;;25173:60;;25244:37;:::i;:::-;;;;-1:-1:-1;;25297:40:0;;3919:25:1;;;25320:4:0;;-1:-1:-1;;;;;25297:40:0;;;;;3907:2:1;3892:18;25297:40:0;;;;;;;25355:18;25364:9;25355:6;:18;:::i;:::-;25348:25;24692:689;-1:-1:-1;;;;;;24692:689:0:o;222:597:1:-;334:4;363:2;392;381:9;374:21;424:6;418:13;467:6;462:2;451:9;447:18;440:34;492:1;502:140;516:6;513:1;510:13;502:140;;;611:14;;;607:23;;601:30;577:17;;;596:2;573:26;566:66;531:10;;502:140;;;660:6;657:1;654:13;651:91;;;730:1;725:2;716:6;705:9;701:22;697:31;690:42;651:91;-1:-1:-1;803:2:1;782:15;-1:-1:-1;;778:29:1;763:45;;;;810:2;759:54;;222:597;-1:-1:-1;;;222:597:1:o;1058:131::-;-1:-1:-1;;;;;1133:31:1;;1123:42;;1113:70;;1179:1;1176;1169:12;1113:70;1058:131;:::o;1194:134::-;1262:20;;1291:31;1262:20;1291:31;:::i;:::-;1194:134;;;:::o;1333:315::-;1401:6;1409;1462:2;1450:9;1441:7;1437:23;1433:32;1430:52;;;1478:1;1475;1468:12;1430:52;1517:9;1504:23;1536:31;1561:5;1536:31;:::i;:::-;1586:5;1638:2;1623:18;;;;1610:32;;-1:-1:-1;;;1333:315:1:o;1845:127::-;1906:10;1901:3;1897:20;1894:1;1887:31;1937:4;1934:1;1927:15;1961:4;1958:1;1951:15;1977:275;2048:2;2042:9;2113:2;2094:13;;-1:-1:-1;;2090:27:1;2078:40;;2148:18;2133:34;;2169:22;;;2130:62;2127:88;;;2195:18;;:::i;:::-;2231:2;2224:22;1977:275;;-1:-1:-1;1977:275:1:o;2257:183::-;2317:4;2350:18;2342:6;2339:30;2336:56;;;2372:18;;:::i;:::-;-1:-1:-1;2417:1:1;2413:14;2429:4;2409:25;;2257:183::o;2445:737::-;2499:5;2552:3;2545:4;2537:6;2533:17;2529:27;2519:55;;2570:1;2567;2560:12;2519:55;2606:6;2593:20;2632:4;2656:60;2672:43;2712:2;2672:43;:::i;:::-;2656:60;:::i;:::-;2750:15;;;2836:1;2832:10;;;;2820:23;;2816:32;;;2781:12;;;;2860:15;;;2857:35;;;2888:1;2885;2878:12;2857:35;2924:2;2916:6;2912:15;2936:217;2952:6;2947:3;2944:15;2936:217;;;3032:3;3019:17;3049:31;3074:5;3049:31;:::i;:::-;3093:18;;3131:12;;;;2969;;2936:217;;;-1:-1:-1;3171:5:1;2445:737;-1:-1:-1;;;;;;2445:737:1:o;3187:160::-;3252:20;;3308:13;;3301:21;3291:32;;3281:60;;3337:1;3334;3327:12;3352:416;3442:6;3450;3503:2;3491:9;3482:7;3478:23;3474:32;3471:52;;;3519:1;3516;3509:12;3471:52;3559:9;3546:23;3592:18;3584:6;3581:30;3578:50;;;3624:1;3621;3614:12;3578:50;3647:61;3700:7;3691:6;3680:9;3676:22;3647:61;:::i;:::-;3637:71;;;3727:35;3758:2;3747:9;3743:18;3727:35;:::i;:::-;3717:45;;3352:416;;;;;:::o;3955:456::-;4032:6;4040;4048;4101:2;4089:9;4080:7;4076:23;4072:32;4069:52;;;4117:1;4114;4107:12;4069:52;4156:9;4143:23;4175:31;4200:5;4175:31;:::i;:::-;4225:5;-1:-1:-1;4282:2:1;4267:18;;4254:32;4295:33;4254:32;4295:33;:::i;:::-;3955:456;;4347:7;;-1:-1:-1;;;4401:2:1;4386:18;;;;4373:32;;3955:456::o;4416:248::-;4484:6;4492;4545:2;4533:9;4524:7;4520:23;4516:32;4513:52;;;4561:1;4558;4551:12;4513:52;-1:-1:-1;;4584:23:1;;;4654:2;4639:18;;;4626:32;;-1:-1:-1;4416:248:1:o;4669:662::-;4723:5;4776:3;4769:4;4761:6;4757:17;4753:27;4743:55;;4794:1;4791;4784:12;4743:55;4830:6;4817:20;4856:4;4880:60;4896:43;4936:2;4896:43;:::i;4880:60::-;4974:15;;;5060:1;5056:10;;;;5044:23;;5040:32;;;5005:12;;;;5084:15;;;5081:35;;;5112:1;5109;5102:12;5081:35;5148:2;5140:6;5136:15;5160:142;5176:6;5171:3;5168:15;5160:142;;;5242:17;;5230:30;;5280:12;;;;5193;;5160:142;;5336:595;5454:6;5462;5515:2;5503:9;5494:7;5490:23;5486:32;5483:52;;;5531:1;5528;5521:12;5483:52;5571:9;5558:23;5600:18;5641:2;5633:6;5630:14;5627:34;;;5657:1;5654;5647:12;5627:34;5680:61;5733:7;5724:6;5713:9;5709:22;5680:61;:::i;:::-;5670:71;;5794:2;5783:9;5779:18;5766:32;5750:48;;5823:2;5813:8;5810:16;5807:36;;;5839:1;5836;5829:12;5807:36;;5862:63;5917:7;5906:8;5895:9;5891:24;5862:63;:::i;:::-;5852:73;;;5336:595;;;;;:::o;6449:247::-;6508:6;6561:2;6549:9;6540:7;6536:23;6532:32;6529:52;;;6577:1;6574;6567:12;6529:52;6616:9;6603:23;6635:31;6660:5;6635:31;:::i;6701:315::-;6766:6;6774;6827:2;6815:9;6806:7;6802:23;6798:32;6795:52;;;6843:1;6840;6833:12;6795:52;6882:9;6869:23;6901:31;6926:5;6901:31;:::i;:::-;6951:5;-1:-1:-1;6975:35:1;7006:2;6991:18;;6975:35;:::i;7021:531::-;7064:5;7117:3;7110:4;7102:6;7098:17;7094:27;7084:55;;7135:1;7132;7125:12;7084:55;7171:6;7158:20;7197:18;7193:2;7190:26;7187:52;;;7219:18;;:::i;:::-;7263:55;7306:2;7287:13;;-1:-1:-1;;7283:27:1;7312:4;7279:38;7263:55;:::i;:::-;7343:2;7334:7;7327:19;7389:3;7382:4;7377:2;7369:6;7365:15;7361:26;7358:35;7355:55;;;7406:1;7403;7396:12;7355:55;7471:2;7464:4;7456:6;7452:17;7445:4;7436:7;7432:18;7419:55;7519:1;7494:16;;;7512:4;7490:27;7483:38;;;;7498:7;7021:531;-1:-1:-1;;;7021:531:1:o;7557:1215::-;7740:6;7748;7756;7764;7772;7780;7788;7841:3;7829:9;7820:7;7816:23;7812:33;7809:53;;;7858:1;7855;7848:12;7809:53;7898:9;7885:23;7927:18;7968:2;7960:6;7957:14;7954:34;;;7984:1;7981;7974:12;7954:34;8007:50;8049:7;8040:6;8029:9;8025:22;8007:50;:::i;:::-;7997:60;;8110:2;8099:9;8095:18;8082:32;8066:48;;8139:2;8129:8;8126:16;8123:36;;;8155:1;8152;8145:12;8123:36;8178:52;8222:7;8211:8;8200:9;8196:24;8178:52;:::i;:::-;8168:62;;8277:2;8266:9;8262:18;8249:32;8239:42;;8300:38;8334:2;8323:9;8319:18;8300:38;:::i;:::-;8290:48;;8357:39;8391:3;8380:9;8376:19;8357:39;:::i;:::-;8347:49;;8449:3;8438:9;8434:19;8421:33;8405:49;;8479:2;8469:8;8466:16;8463:36;;;8495:1;8492;8485:12;8463:36;8518:63;8573:7;8562:8;8551:9;8547:24;8518:63;:::i;:::-;8508:73;;8634:3;8623:9;8619:19;8606:33;8590:49;;8664:2;8654:8;8651:16;8648:36;;;8680:1;8677;8670:12;8648:36;;8703:63;8758:7;8747:8;8736:9;8732:24;8703:63;:::i;:::-;8693:73;;;7557:1215;;;;;;;;;;:::o;8777:180::-;8833:6;8886:2;8874:9;8865:7;8861:23;8857:32;8854:52;;;8902:1;8899;8892:12;8854:52;8925:26;8941:9;8925:26;:::i;8962:316::-;9039:6;9047;9055;9108:2;9096:9;9087:7;9083:23;9079:32;9076:52;;;9124:1;9121;9114:12;9076:52;-1:-1:-1;;9147:23:1;;;9217:2;9202:18;;9189:32;;-1:-1:-1;9268:2:1;9253:18;;;9240:32;;8962:316;-1:-1:-1;8962:316:1:o;9283:404::-;9367:6;9375;9428:2;9416:9;9407:7;9403:23;9399:32;9396:52;;;9444:1;9441;9434:12;9396:52;9483:9;9470:23;9502:31;9527:5;9502:31;:::i;:::-;9552:5;-1:-1:-1;9609:2:1;9594:18;;9581:32;9622:33;9581:32;9622:33;:::i;:::-;9674:7;9664:17;;;9283:404;;;;;:::o;10085:385::-;10171:6;10179;10187;10195;10248:3;10236:9;10227:7;10223:23;10219:33;10216:53;;;10265:1;10262;10255:12;10216:53;-1:-1:-1;;10288:23:1;;;10358:2;10343:18;;10330:32;;-1:-1:-1;10409:2:1;10394:18;;10381:32;;10460:2;10445:18;10432:32;;-1:-1:-1;10085:385:1;-1:-1:-1;10085:385:1:o;10475:380::-;10554:1;10550:12;;;;10597;;;10618:61;;10672:4;10664:6;10660:17;10650:27;;10618:61;10725:2;10717:6;10714:14;10694:18;10691:38;10688:161;;10771:10;10766:3;10762:20;10759:1;10752:31;10806:4;10803:1;10796:15;10834:4;10831:1;10824:15;10688:161;;10475:380;;;:::o;10860:340::-;11062:2;11044:21;;;11101:2;11081:18;;;11074:30;-1:-1:-1;;;11135:2:1;11120:18;;11113:46;11191:2;11176:18;;10860:340::o;11205:127::-;11266:10;11261:3;11257:20;11254:1;11247:31;11297:4;11294:1;11287:15;11321:4;11318:1;11311:15;11337:127;11398:10;11393:3;11389:20;11386:1;11379:31;11429:4;11426:1;11419:15;11453:4;11450:1;11443:15;11469:135;11508:3;11529:17;;;11526:43;;11549:18;;:::i;:::-;-1:-1:-1;11596:1:1;11585:13;;11469:135::o;11609:125::-;11649:4;11677:1;11674;11671:8;11668:34;;;11682:18;;:::i;:::-;-1:-1:-1;11719:9:1;;11609:125::o;11739:168::-;11779:7;11845:1;11841;11837:6;11833:14;11830:1;11827:21;11822:1;11815:9;11808:17;11804:45;11801:71;;;11852:18;;:::i;:::-;-1:-1:-1;11892:9:1;;11739:168::o;11912:217::-;11952:1;11978;11968:132;;12022:10;12017:3;12013:20;12010:1;12003:31;12057:4;12054:1;12047:15;12085:4;12082:1;12075:15;11968:132;-1:-1:-1;12114:9:1;;11912:217::o;12134:401::-;12336:2;12318:21;;;12375:2;12355:18;;;12348:30;12414:34;12409:2;12394:18;;12387:62;-1:-1:-1;;;12480:2:1;12465:18;;12458:35;12525:3;12510:19;;12134:401::o;12899:418::-;13101:2;13083:21;;;13140:2;13120:18;;;13113:30;13179:34;13174:2;13159:18;;13152:62;-1:-1:-1;;;13245:2:1;13230:18;;13223:52;13307:3;13292:19;;12899:418::o;13322:128::-;13362:3;13393:1;13389:6;13386:1;13383:13;13380:39;;;13399:18;;:::i;:::-;-1:-1:-1;13435:9:1;;13322:128::o;13455:425::-;13657:2;13639:21;;;13696:2;13676:18;;;13669:30;13735:34;13730:2;13715:18;;13708:62;13806:31;13801:2;13786:18;;13779:59;13870:3;13855:19;;13455:425::o;14362:545::-;14464:2;14459:3;14456:11;14453:448;;;14500:1;14525:5;14521:2;14514:17;14570:4;14566:2;14556:19;14640:2;14628:10;14624:19;14621:1;14617:27;14611:4;14607:38;14676:4;14664:10;14661:20;14658:47;;;-1:-1:-1;14699:4:1;14658:47;14754:2;14749:3;14745:12;14742:1;14738:20;14732:4;14728:31;14718:41;;14809:82;14827:2;14820:5;14817:13;14809:82;;;14872:17;;;14853:1;14842:13;14809:82;;15083:1352;15209:3;15203:10;15236:18;15228:6;15225:30;15222:56;;;15258:18;;:::i;:::-;15287:97;15377:6;15337:38;15369:4;15363:11;15337:38;:::i;:::-;15331:4;15287:97;:::i;:::-;15439:4;;15503:2;15492:14;;15520:1;15515:663;;;;16222:1;16239:6;16236:89;;;-1:-1:-1;16291:19:1;;;16285:26;16236:89;-1:-1:-1;;15040:1:1;15036:11;;;15032:24;15028:29;15018:40;15064:1;15060:11;;;15015:57;16338:81;;15485:944;;15515:663;14309:1;14302:14;;;14346:4;14333:18;;-1:-1:-1;;15551:20:1;;;15669:236;15683:7;15680:1;15677:14;15669:236;;;15772:19;;;15766:26;15751:42;;15864:27;;;;15832:1;15820:14;;;;15699:19;;15669:236;;;15673:3;15933:6;15924:7;15921:19;15918:201;;;15994:19;;;15988:26;-1:-1:-1;;16077:1:1;16073:14;;;16089:3;16069:24;16065:37;16061:42;16046:58;16031:74;;15918:201;-1:-1:-1;;;;;16165:1:1;16149:14;;;16145:22;16132:36;;-1:-1:-1;15083:1352:1:o;16440:422::-;16529:1;16572:5;16529:1;16586:270;16607:7;16597:8;16594:21;16586:270;;;16666:4;16662:1;16658:6;16654:17;16648:4;16645:27;16642:53;;;16675:18;;:::i;:::-;16725:7;16715:8;16711:22;16708:55;;;16745:16;;;;16708:55;16824:22;;;;16784:15;;;;16586:270;;;16590:3;16440:422;;;;;:::o;16867:806::-;16916:5;16946:8;16936:80;;-1:-1:-1;16987:1:1;17001:5;;16936:80;17035:4;17025:76;;-1:-1:-1;17072:1:1;17086:5;;17025:76;17117:4;17135:1;17130:59;;;;17203:1;17198:130;;;;17110:218;;17130:59;17160:1;17151:10;;17174:5;;;17198:130;17235:3;17225:8;17222:17;17219:43;;;17242:18;;:::i;:::-;-1:-1:-1;;17298:1:1;17284:16;;17313:5;;17110:218;;17412:2;17402:8;17399:16;17393:3;17387:4;17384:13;17380:36;17374:2;17364:8;17361:16;17356:2;17350:4;17347:12;17343:35;17340:77;17337:159;;;-1:-1:-1;17449:19:1;;;17481:5;;17337:159;17528:34;17553:8;17547:4;17528:34;:::i;:::-;17598:6;17594:1;17590:6;17586:19;17577:7;17574:32;17571:58;;;17609:18;;:::i;:::-;17647:20;;16867:806;-1:-1:-1;;;16867:806:1:o;17678:140::-;17736:5;17765:47;17806:4;17796:8;17792:19;17786:4;17765:47;:::i;17823:251::-;17893:6;17946:2;17934:9;17925:7;17921:23;17917:32;17914:52;;;17962:1;17959;17952:12;17914:52;17994:9;17988:16;18013:31;18038:5;18013:31;:::i;18388:607::-;-1:-1:-1;;;;;18747:15:1;;;18729:34;;18794:2;18779:18;;18772:34;;;;18837:2;18822:18;;18815:34;;;;18880:2;18865:18;;18858:34;;;;18929:15;;;18923:3;18908:19;;18901:44;18709:3;18961:19;;18954:35;;;;18678:3;18663:19;;18388:607::o;19000:306::-;19088:6;19096;19104;19157:2;19145:9;19136:7;19132:23;19128:32;19125:52;;;19173:1;19170;19163:12;19125:52;19202:9;19196:16;19186:26;;19252:2;19241:9;19237:18;19231:25;19221:35;;19296:2;19285:9;19281:18;19275:25;19265:35;;19000:306;;;;;:::o;23065:980::-;23327:4;23375:3;23364:9;23360:19;23406:6;23395:9;23388:25;23432:2;23470:6;23465:2;23454:9;23450:18;23443:34;23513:3;23508:2;23497:9;23493:18;23486:31;23537:6;23572;23566:13;23603:6;23595;23588:22;23641:3;23630:9;23626:19;23619:26;;23680:2;23672:6;23668:15;23654:29;;23701:1;23711:195;23725:6;23722:1;23719:13;23711:195;;;23790:13;;-1:-1:-1;;;;;23786:39:1;23774:52;;23881:15;;;;23846:12;;;;23822:1;23740:9;23711:195;;;-1:-1:-1;;;;;;;23962:32:1;;;;23957:2;23942:18;;23935:60;-1:-1:-1;;;24026:3:1;24011:19;24004:35;23923:3;23065:980;-1:-1:-1;;;23065:980:1:o

Swarm Source

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