ETH Price: $3,635.27 (-0.39%)
 

Overview

Max Total Supply

3,000,000 AIBO

Holders

33

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
thetryptamine.eth
Balance
56,050 AIBO

Value
$0.00
0x356E2C4c2B41E8D73D2C622Cf7A03B91437abD69
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:
AIBO

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 636 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: UNLICENSED

//TG: https://t.me/AIBOEth

pragma solidity =0.8.17;

interface IBO {
        event ManualNukeLP();
        event MaxWalletBalanceUpdated(uint256 percent);
        event OnSetTaxes(uint buy, uint sell, uint transfer_, uint project,uint liquidity);
        event ExcludeAccount(address account, bool exclude);
        event OnEnableTrading();
        event ExcludeFromLimits(address account, bool exclude);
        event MarketingWalletChange(address newWallet);
        event DevWalletChange(address newWallet);
        event SharesUpdated(uint _devShare, uint _marketingShare);
        event AMMadded(address AMM);
        event ManualSwapOn(bool manual);
        event ManualSwapPerformed();
        event MaxTransactionAmountUpdated(uint256 percent);
        event SwapThresholdChange(uint newSwapTresholdPermille);
        event OverLiquifiedThresholdChange(uint newOverLiquifyTresholdPermille);
    }

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 IDexFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IDexRouter {
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    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;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

}

interface IDexPair {
    event Sync(uint112 reserve0, uint112 reserve1);
    function sync() external;
}

abstract contract Ownable {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor () {
        address msgSender = msg.sender;
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
    function owner() public view returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(owner() == msg.sender, "Ownable: caller is not the owner");
        _;
    }
    function renounceOwnership() external onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
    function transferOwnership(address newOwner) public onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

contract AIBO is IERC20, Ownable, IBO
{
    mapping (address => uint) private _balances;
    mapping (address => mapping (address => uint)) private _allowances;
    mapping(address => bool) private excludedFromLimits;
    mapping(address => bool) public excludedFromFees;
    mapping(address=>bool) public isAMM;
    mapping(address => User) user;

    struct User {
        uint256 sold;
        uint256 sellStamp;
        uint256 sellLimit;
    }

    string private constant _name='AIBO';
    string private constant _symbol='AIBO';
    uint8 private constant _decimals=9;

    uint private constant InitialSupply=3000000* 10**_decimals;
    uint public buyTax = 50; //10=1% 
    uint public sellTax = 50;
    uint public transferTax = 0;
    uint public liquidityTax=0;
    uint public projectTax=1000;
    uint public swapTreshold=6; //Dynamic Swap Threshold based on price impact. 1=0.1% max 10
    uint public overLiquifyTreshold=100;
    uint public LaunchTimestamp;
    uint private devShare=50; //devShare+marketingShare must = 100
    uint private marketingShare=50;
    uint constant TAX_DENOMINATOR=1000;
    uint constant MAXTAXDENOMINATOR=10;

    uint256 public maxWalletBalance;
    uint256 public maxTransactionAmount;
    uint256 public lastLpBurnTime;
    uint256 public lastManualLpBurnTime;
    uint256 public sellPercentLimit = 25;
    uint256 public sellCooldown = 60 minutes;


    bool private _isSwappingContractModifier;
    bool public manualSwap;
    bool public floorMode = true;

    IDexRouter private  _DexRouter;

    address private _PairAddress;
    address public marketingWallet;
    address public devWallet;
    address public constant burnWallet = address(0xdead);
    address private constant DexRouter=0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;

    modifier lockTheSwap {
        _isSwappingContractModifier = true;
        _;
        _isSwappingContractModifier = false;
    }

    constructor () {
        uint ownerBalance=InitialSupply;
        _balances[msg.sender] = ownerBalance;
        emit Transfer(address(0), msg.sender, ownerBalance);

        _DexRouter = IDexRouter(DexRouter);
        _PairAddress = IDexFactory(_DexRouter.factory()).createPair(address(this), _DexRouter.WETH());
        isAMM[_PairAddress]=true;
        
        marketingWallet=0xdb5eAb3288cd0A151b32A7Aa14F4cC7Be6D36006; //
        devWallet=0xE4FC215fbd0a3Dd18684d1Ab19172289D844cb29; //

        excludedFromFees[msg.sender]=true;
        excludedFromFees[DexRouter]=true;
        excludedFromFees[address(this)]=true;
        excludedFromLimits[burnWallet] = true;
        excludedFromLimits[address(this)] = true;
    }
    function ChangeMarketingWallet(address newWallet) external onlyOwner{
        marketingWallet=newWallet;
        emit MarketingWalletChange(newWallet);
    }
    function ChangeDevWallet(address newWallet) external onlyOwner{
        devWallet=newWallet;
        emit DevWalletChange(newWallet);
    }
    function SetFeeShares(uint _devShare, uint _marketingShare) external onlyOwner{
        require(_devShare+_marketingShare<=100);
        devShare=_devShare;
        marketingShare=_marketingShare;
        emit SharesUpdated(_devShare, _marketingShare);
    }
    function setMaxWalletBalancePercent(uint256 percent) external onlyOwner {
        require(percent >= 10, "min 1%");
        require(percent <= 1000, "max 100%");
        maxWalletBalance = InitialSupply * percent / 1000;
        emit MaxWalletBalanceUpdated(percent);
    }
    function setMaxTransactionAmount(uint256 percent) external onlyOwner {
        require(percent >= 25, "min 0.25%");
        require(percent <= 10000, "max 100%");
        maxTransactionAmount = InitialSupply * percent / 10000;
        emit MaxTransactionAmountUpdated(percent);
    }
    function ToggleFloorMode(bool onOff) external onlyOwner {
        floorMode=onOff;
    }
    function setSellPercentLikmit(uint256 percent) external onlyOwner {
        require(percent >= 10000, "Cannot set below 1%.");
        sellPercentLimit = percent;
    }
    function setSellCooldown(uint256 timeInSeconds) external onlyOwner {
        require(timeInSeconds <= 24 hours, "Cannot set above 24 hours.");
        sellCooldown = timeInSeconds;
    }
    function getUserInfo(address account) external view returns(uint256, uint256, uint256) {
        User memory _user = user[account];
        return(_user.sold, _user.sellStamp, _user.sellLimit);
    }
    function getSecondsToNextSellReset(address account) external view returns(uint256) {
        uint256 time = user[account].sellStamp + sellCooldown;
        if (time > block.timestamp) {
            return(time - block.timestamp);
        } else {
            return 0;
        }
    }
    function _transfer(address sender, address recipient, uint amount) private{
        require(sender != address(0), "Transfer from zero");
        require(recipient != address(0), "Transfer to zero");
        if(excludedFromFees[sender] || excludedFromFees[recipient])
            _feelessTransfer(sender, recipient, amount);
        else { 
            require(LaunchTimestamp>0,"trading not yet enabled");
            _taxedTransfer(sender,recipient,amount);                  
        }
    }
    
    function _taxedTransfer(address sender, address recipient, uint amount) private{
        uint senderBalance = _balances[sender];
        require(senderBalance >= amount, "Transfer exceeds balance");
        bool excludedAccount = excludedFromLimits[sender] || excludedFromLimits[recipient];
        if (isAMM[sender] &&
            !excludedAccount) {
            require(
                amount <= maxTransactionAmount,
                "Transfer amount exceeds the maxTxAmount."
            );
            uint256 contractBalanceRecepient = balanceOf(recipient);
            require(
                contractBalanceRecepient + amount <= maxWalletBalance,
                "Exceeds maximum wallet token amount."
            );
        } else if (
            isAMM[recipient] &&
            !excludedAccount
        ) {
            require(amount <= maxTransactionAmount, "Transfer amount exceeds the maxTxAmount.");
        }

        bool isBuy=isAMM[sender];
        bool isSell=isAMM[recipient];
        uint tax;
        if(isSell){
            if(floorMode){
                        if(user[sender].sellStamp + sellCooldown > block.timestamp) {
                            uint256 addition = user[sender].sold + amount;
                            require(addition <= user[sender].sellLimit, "Sell amount exceeds current limit.");
                            tax=sellTax;
                            user[sender].sold = addition;
                        } else {
                            tax=sellTax;
                            user[sender].sellLimit = (InitialSupply * sellPercentLimit) / 10000;
                            require(amount <= user[sender].sellLimit, "Sell amount exceeds current limit.");
                            user[sender].sold = amount;
                            user[sender].sellStamp = block.timestamp;
                        }
            }else tax=sellTax;}
        else if(isBuy){
            tax=buyTax;
        }else{
            require(!floorMode, "No transfers allowed"); 
            uint256 contractBalanceRecepient = balanceOf(recipient);
            require(
                contractBalanceRecepient + amount <= maxWalletBalance,
                "Exceeds maximum wallet token amount."
            );
            tax=transferTax;
        }

        if((sender!=_PairAddress)&&(!manualSwap)&&(!_isSwappingContractModifier))
            _swapContractToken(false);

        uint contractToken=_calculateFee(amount, tax, projectTax+liquidityTax);
        uint taxedAmount=amount-(contractToken);

        _balances[sender]-=amount;
        _balances[address(this)] += contractToken;
        _balances[recipient]+=taxedAmount;
        emit Transfer(sender,recipient,taxedAmount);
    }
    function _calculateFee(uint amount, uint tax, uint taxPercent) private pure returns (uint) {
        return (amount*tax*taxPercent) / (TAX_DENOMINATOR*TAX_DENOMINATOR);
    }
    function _feelessTransfer(address sender, address recipient, uint amount) private{
        uint senderBalance = _balances[sender];
        require(senderBalance >= amount, "Transfer exceeds balance");
        _balances[sender]-=amount;
        _balances[recipient]+=amount;      
        emit Transfer(sender,recipient,amount);
    }
    function setSwapTreshold(uint newSwapTresholdPermille) external onlyOwner{
        require(newSwapTresholdPermille<=10);//MaxTreshold= 1%
        swapTreshold=newSwapTresholdPermille;
        emit SwapThresholdChange(newSwapTresholdPermille);
    }
    function SetOverLiquifiedTreshold(uint newOverLiquifyTresholdPermille) external onlyOwner{
        require(newOverLiquifyTresholdPermille<=1000);
        overLiquifyTreshold=newOverLiquifyTresholdPermille;
        emit OverLiquifiedThresholdChange(newOverLiquifyTresholdPermille);
    }
    function SetTaxes(uint buy, uint sell, uint transfer_, uint project,uint liquidity) external onlyOwner{
        uint maxTax=TAX_DENOMINATOR/MAXTAXDENOMINATOR;
        require(buy<=maxTax&&sell<=maxTax&&transfer_<=maxTax,"Tax exceeds maxTax");
        require(project+liquidity==TAX_DENOMINATOR,"Taxes don't add up to denominator");
        buyTax=buy;
        sellTax=sell;
        transferTax=transfer_;
        projectTax=project;
        liquidityTax=liquidity;
        emit OnSetTaxes(buy, sell, transfer_, project, liquidity);
    }
    function isOverLiquified() public view returns(bool){
        return _balances[_PairAddress]>getCirculatingSupply()*overLiquifyTreshold/1000;
    }
    function _swapContractToken(bool ignoreLimits) private lockTheSwap{
        uint contractBalance=_balances[address(this)];
        uint totalTax=liquidityTax+projectTax;
        uint tokenToSwap=_balances[_PairAddress]*swapTreshold/1000;
        if(totalTax==0)return;
        if(ignoreLimits)
            tokenToSwap=_balances[address(this)];
        else if(contractBalance<tokenToSwap)
            return;

        uint tokenForLiquidity=
        isOverLiquified()?0
        :(tokenToSwap*liquidityTax)/totalTax;

        uint tokenForProject= tokenToSwap-tokenForLiquidity;

        uint LiqHalf=tokenForLiquidity/2;
        uint swapToken=LiqHalf+tokenForProject;
        uint initialETHBalance=address(this).balance;
        _swapTokenForETH(swapToken);
        uint newETH=(address(this).balance - initialETHBalance);

        if(tokenForLiquidity>0){
            uint liqETH = (newETH*LiqHalf)/swapToken;
            _addLiquidity(LiqHalf, liqETH);
        }
        uint marketbalance=address(this).balance * marketingShare/100;
        uint devbalance=address(this).balance * devShare/100;
        if(marketbalance>0){
        (bool marketing,)=marketingWallet.call{value:marketbalance}("");
        marketing=true;
        }
        if(devbalance>0){
        (bool dev,)=devWallet.call{value:devbalance}("");
        dev=true;
        }
    }
    function _swapTokenForETH(uint amount) private {
        _approve(address(this), address(_DexRouter), amount);
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _DexRouter.WETH();

        try _DexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amount,
            0,
            path,
            address(this),
            block.timestamp
        ){}
        catch{}
    }
    function _addLiquidity(uint tokenamount, uint ethamount) private {
        _approve(address(this), address(_DexRouter), tokenamount);
        _DexRouter.addLiquidityETH{value: ethamount}(
            address(this),
            tokenamount,
            0,
            0,
            devWallet,
            block.timestamp
        );
    }
    function getBurnedTokens() external view returns(uint){
        return _balances[address(0xdead)];
    }
    function getCirculatingSupply() public view returns(uint){
        return InitialSupply-_balances[address(0xdead)];
    }
    function SetAMM(address AMM, bool Add) external onlyOwner{
        require(AMM!=_PairAddress,"can't change initial pair address");
        isAMM[AMM]=Add;
        emit AMMadded(AMM);
    }
    function SwitchManualSwap(bool manual) external onlyOwner{
        manualSwap=manual;
        emit ManualSwapOn(manual);
    }
    function SwapContractToken() external onlyOwner{
        _swapContractToken(true);
        emit ManualSwapPerformed();
    }
    function ExcludeAccountFromFees(address account, bool exclude) external onlyOwner{
        require(account!=address(this),"can't Include the contract");
        excludedFromFees[account]=exclude;
        emit ExcludeAccount(account,exclude);
    }
    function setExcludedAccountFromLimits(address account, bool exclude) external onlyOwner{
        excludedFromLimits[account]=exclude;
        emit ExcludeFromLimits(account,exclude);
    }
    function isExcludedFromLimits(address account) external view returns(bool) {
        return excludedFromLimits[account];
    }
    function EnableTrading() external onlyOwner{
        require(LaunchTimestamp==0,"Already Launched");
        LaunchTimestamp=block.timestamp;
        maxWalletBalance = InitialSupply * 20 / 1000;
        maxTransactionAmount = InitialSupply * 200 / 10000;
        emit OnEnableTrading();
    }
    function manualBurnLPTokens(uint256 percent) external onlyOwner returns (bool){
        require(percent <= 1000, "May not nuke more than 10% of tokens in LP");
        lastManualLpBurnTime = block.timestamp;
        uint256 liquidityPairBalance = this.balanceOf(_PairAddress);
        uint256 amountToBurn = liquidityPairBalance * percent/10000;
        if (amountToBurn > 0){
            _balances[_PairAddress]-=amountToBurn;
            _balances[burnWallet]+=amountToBurn;
            emit Transfer(_PairAddress,burnWallet,amountToBurn);
        }
        IDexPair pair = IDexPair(_PairAddress);
        pair.sync();
        emit ManualNukeLP();
        return true;
    }

    function getOwner() external view override returns (address) {return owner();}
    function name() external pure override returns (string memory) {return _name;}
    function symbol() external pure override returns (string memory) {return _symbol;}
    function decimals() external pure override returns (uint8) {return _decimals;}
    function totalSupply() external pure override returns (uint) {return InitialSupply;}
    function balanceOf(address account) public view override returns (uint) {return _balances[account];}
    function allowance(address _owner, address spender) external view override returns (uint) {return _allowances[_owner][spender];}
    function transfer(address recipient, uint amount) external override returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }
    function approve(address spender, uint amount) external override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }
    function _approve(address owner, address spender, uint amount) private {
        require(owner != address(0), "Approve from zero");
        require(spender != address(0), "Approve to zero");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    function transferFrom(address sender, address recipient, uint amount) external override returns (bool) {
        _transfer(sender, recipient, amount);
        uint currentAllowance = _allowances[sender][msg.sender];
        require(currentAllowance >= amount, "Transfer > allowance");
        _approve(sender, msg.sender, currentAllowance - amount);
        return true;
    }
    function increaseAllowance(address spender, uint addedValue) external returns (bool) {
        _approve(msg.sender, spender, _allowances[msg.sender][spender] + addedValue);
        return true;
    }
    function decreaseAllowance(address spender, uint subtractedValue) external returns (bool) {
        uint currentAllowance = _allowances[msg.sender][spender];
        require(currentAllowance >= subtractedValue, "<0 allowance");
        _approve(msg.sender, spender, currentAllowance - subtractedValue);
        return true;
    }
    function LostETHRecov(uint256 amountPercentage) external onlyOwner {
        uint256 amountETH = address(this).balance;
        payable(msg.sender).transfer(amountETH * amountPercentage / 100);
    }
    function LostTokenRecov(address tokenAddress, uint256 amountPercentage) external onlyOwner {
        require(tokenAddress!=address(0));
        require(tokenAddress!=address(_PairAddress));
        IERC20 token = IERC20(tokenAddress);
        uint256 tokenAmount = token.balanceOf(address(this));
        token.transfer(msg.sender, tokenAmount * amountPercentage / 100);

    }
    receive() external payable {}

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"AMM","type":"address"}],"name":"AMMadded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newWallet","type":"address"}],"name":"DevWalletChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"exclude","type":"bool"}],"name":"ExcludeAccount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"exclude","type":"bool"}],"name":"ExcludeFromLimits","type":"event"},{"anonymous":false,"inputs":[],"name":"ManualNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"manual","type":"bool"}],"name":"ManualSwapOn","type":"event"},{"anonymous":false,"inputs":[],"name":"ManualSwapPerformed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newWallet","type":"address"}],"name":"MarketingWalletChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"percent","type":"uint256"}],"name":"MaxTransactionAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"percent","type":"uint256"}],"name":"MaxWalletBalanceUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"OnEnableTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"buy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sell","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"transfer_","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"project","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidity","type":"uint256"}],"name":"OnSetTaxes","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newOverLiquifyTresholdPermille","type":"uint256"}],"name":"OverLiquifiedThresholdChange","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":"_devShare","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_marketingShare","type":"uint256"}],"name":"SharesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newSwapTresholdPermille","type":"uint256"}],"name":"SwapThresholdChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"ChangeDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"ChangeMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"EnableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"ExcludeAccountFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"LaunchTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"LostETHRecov","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"LostTokenRecov","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"AMM","type":"address"},{"internalType":"bool","name":"Add","type":"bool"}],"name":"SetAMM","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_devShare","type":"uint256"},{"internalType":"uint256","name":"_marketingShare","type":"uint256"}],"name":"SetFeeShares","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newOverLiquifyTresholdPermille","type":"uint256"}],"name":"SetOverLiquifiedTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buy","type":"uint256"},{"internalType":"uint256","name":"sell","type":"uint256"},{"internalType":"uint256","name":"transfer_","type":"uint256"},{"internalType":"uint256","name":"project","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"name":"SetTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"SwapContractToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"manual","type":"bool"}],"name":"SwitchManualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onOff","type":"bool"}],"name":"ToggleFloorMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"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":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"floorMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBurnedTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","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":"account","type":"address"}],"name":"getSecondsToNextSellReset","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getUserInfo","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isAMM","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastManualLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualBurnLPTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"overLiquifyTreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"projectTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellCooldown","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellPercentLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"setExcludedAccountFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"setMaxTransactionAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"setMaxWalletBalancePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"timeInSeconds","type":"uint256"}],"name":"setSellCooldown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"setSellPercentLikmit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSwapTresholdPermille","type":"uint256"}],"name":"setSwapTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260326007819055600881905560006009819055600a556103e8600b556006600c556064600d55600f8190556010556019601555610e106016556017805462ff00001916620100001790553480156200005b57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000620000ad6009600a620004d0565b620000bc90622dc6c0620004e8565b336000818152600160205260408082208490555192935090917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90620001059085815260200190565b60405180910390a360178054767a250d5630b4cf539739df2c5dacb4c659f2488d0000006301000000600160b81b031990911617908190556040805163c45a015560e01b8152905163010000009092046001600160a01b03169163c45a0155916004808201926020929091908290030181865afa1580156200018b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b1919062000502565b6001600160a01b031663c9c6539630601760039054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000214573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200023a919062000502565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000288573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ae919062000502565b601880546001600160a01b03929092166001600160a01b031992831681179091556000908152600560209081526040808320805460ff19908116600190811790925560198054871673db5eab3288cd0a151b32a7aa14f4cc7be6d36006179055601a805490961673e4fc215fbd0a3dd18684d1ab19172289d844cb29179095553384526004835281842080548616821790557f1fc5acd025f7cc5cf2691b667dba808b5a149bf27192c208fc66f1f0ec4222d7805486168217905530808552828520805487168317905560039093527f262bb27bbdd95c1cdc8e16957e36e38579ea44f7f6413dd7a9c75939def06b2c80548616821790559183529091208054909216179055506200052d565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000412578160001904821115620003f657620003f6620003bb565b808516156200040457918102915b93841c9390800290620003d6565b509250929050565b6000826200042b57506001620004ca565b816200043a57506000620004ca565b81600181146200045357600281146200045e576200047e565b6001915050620004ca565b60ff841115620004725762000472620003bb565b50506001821b620004ca565b5060208310610133831016604e8410600b8410161715620004a3575081810a620004ca565b620004af8383620003d1565b8060001904821115620004c657620004c6620003bb565b0290505b92915050565b6000620004e160ff8416836200041a565b9392505050565b8082028115828204841417620004ca57620004ca620003bb565b6000602082840312156200051557600080fd5b81516001600160a01b0381168114620004e157600080fd5b6136e6806200053d6000396000f3fe6080604052600436106103b15760003560e01c8063893d20e8116101e7578063c3f4f54f1161010d578063e0d2f9eb116100a0578063f7942b631161006f578063f7942b6314610b26578063f870f12514610b46578063fd6e5a6114610b66578063ff90061214610b7c57600080fd5b8063e0d2f9eb14610ab0578063e52fb9ec14610ad0578063e811599d14610ae6578063f2fde38b14610b0657600080fd5b8063d24cd3ec116100dc578063d24cd3ec146109f4578063d46b6a3014610a0a578063dbe66ca014610a3a578063dd62ed3e14610a6a57600080fd5b8063c3f4f54f14610969578063c8c8ebe4146109a8578063cc1776d3146109be578063cfd1940e146109d457600080fd5b8063a457c2d711610185578063baa88ea911610154578063baa88ea9146108fd578063bbde77c11461091d578063bc43d84914610933578063be617fa01461095357600080fd5b8063a457c2d714610891578063a4c82a00146108b1578063a9059cbb146108c7578063b40d09e2146108e757600080fd5b8063946ffe65116101c1578063946ffe651461083b57806395d89b41146103f057806398d7e7211461085b5780639ec22c0e1461087b57600080fd5b8063893d20e8146107fd5780638da5cb5b146107fd5780638ea5220f1461081b57600080fd5b806339509351116102d75780636386c1c71161026a578063766febab11610239578063766febab146107875780638124f7ac146107a7578063817d4bff146107bd578063868b0141146107dd57600080fd5b80636386c1c7146106a257806370a082311461071c578063715018a61461075257806375f0a8741461076757600080fd5b80635149f984116102a65780635149f9841461060a57806351bc3c851461062a57806354bdc753146106495780635cce86cd1461066957600080fd5b806339509351146105aa57806341aec357146105ca57806346e35f03146105df5780634f7041a5146105f457600080fd5b80631e293c101161034f5780632b112e491161031e5780632b112e49146105395780632c66562b1461054e5780632c92293c1461056e578063313ce5671461058e57600080fd5b80631e293c10146104b95780631f3d14f2146104d957806323b872dd146104f957806326254a861461051957600080fd5b80630eff4c641161038b5780630eff4c641461045357806318160ddd146104775780631b2773c21461048c5780631d97b7cd146104a257600080fd5b806306228749146103bd57806306fdde03146103f0578063095ea7b31461042357600080fd5b366103b857005b600080fd5b3480156103c957600080fd5b506103d361dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103fc57600080fd5b5060408051808201825260048152634149424f60e01b602082015290516103e79190613228565b34801561042f57600080fd5b5061044361043e36600461328e565b610b9c565b60405190151581526020016103e7565b34801561045f57600080fd5b50610469600d5481565b6040519081526020016103e7565b34801561048357600080fd5b50610469610bb3565b34801561049857600080fd5b5061046960165481565b3480156104ae57600080fd5b506104b7610bd3565b005b3480156104c557600080fd5b506104b76104d43660046132ba565b610d16565b3480156104e557600080fd5b506017546104439062010000900460ff1681565b34801561050557600080fd5b506104436105143660046132d3565b610e52565b34801561052557600080fd5b50610469610534366004613314565b610ef2565b34801561054557600080fd5b50610469610f43565b34801561055a57600080fd5b506104b76105693660046132ba565b610f95565b34801561057a57600080fd5b506104b76105893660046132ba565b611044565b34801561059a57600080fd5b50604051600981526020016103e7565b3480156105b657600080fd5b506104436105c536600461328e565b611176565b3480156105d657600080fd5b506104b76111ad565b3480156105eb57600080fd5b50610443611239565b34801561060057600080fd5b5061046960075481565b34801561061657600080fd5b506104b761062536600461333f565b61127e565b34801561063657600080fd5b5060175461044390610100900460ff1681565b34801561065557600080fd5b506104b7610664366004613378565b61139a565b34801561067557600080fd5b50610443610684366004613314565b6001600160a01b031660009081526003602052604090205460ff1690565b3480156106ae57600080fd5b506107016106bd366004613314565b6001600160a01b0316600090815260066020908152604091829020825160608101845281548082526001830154938201849052600290920154930183905292909190565b604080519384526020840192909252908201526060016103e7565b34801561072857600080fd5b50610469610737366004613314565b6001600160a01b031660009081526001602052604090205490565b34801561075e57600080fd5b506104b761140d565b34801561077357600080fd5b506019546103d3906001600160a01b031681565b34801561079357600080fd5b506104b76107a2366004613395565b6114ae565b3480156107b357600080fd5b5061046960095481565b3480156107c957600080fd5b506104b76107d8366004613314565b61155c565b3480156107e957600080fd5b506104b76107f8366004613378565b611601565b34801561080957600080fd5b506000546001600160a01b03166103d3565b34801561082757600080fd5b50601a546103d3906001600160a01b031681565b34801561084757600080fd5b506104b761085636600461328e565b6116a1565b34801561086757600080fd5b506104436108763660046132ba565b611849565b34801561088757600080fd5b5061046960145481565b34801561089d57600080fd5b506104436108ac36600461328e565b611b13565b3480156108bd57600080fd5b5061046960135481565b3480156108d357600080fd5b506104436108e236600461328e565b611ba0565b3480156108f357600080fd5b50610469600e5481565b34801561090957600080fd5b506104b76109183660046133b7565b611bad565b34801561092957600080fd5b5061046960115481565b34801561093f57600080fd5b506104b761094e3660046132ba565b611d51565b34801561095f57600080fd5b50610469600a5481565b34801561097557600080fd5b5061dead60005260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d54610469565b3480156109b457600080fd5b5061046960125481565b3480156109ca57600080fd5b5061046960085481565b3480156109e057600080fd5b506104b76109ef3660046132ba565b611dec565b348015610a0057600080fd5b50610469600b5481565b348015610a1657600080fd5b50610443610a25366004613314565b60056020526000908152604090205460ff1681565b348015610a4657600080fd5b50610443610a55366004613314565b60046020526000908152604090205460ff1681565b348015610a7657600080fd5b50610469610a853660046133f2565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b348015610abc57600080fd5b506104b7610acb36600461333f565b611e86565b348015610adc57600080fd5b50610469600c5481565b348015610af257600080fd5b506104b7610b013660046132ba565b611f91565b348015610b1257600080fd5b506104b7610b21366004613314565b612030565b348015610b3257600080fd5b506104b7610b4136600461333f565b612147565b348015610b5257600080fd5b506104b7610b613660046132ba565b6121fa565b348015610b7257600080fd5b5061046960155481565b348015610b8857600080fd5b506104b7610b97366004613314565b6122a8565b6000610ba933848461234d565b5060015b92915050565b6000610bc16009600a61351a565b610bce90622dc6c0613529565b905090565b33610be66000546001600160a01b031690565b6001600160a01b031614610c2f5760405162461bcd60e51b8152602060048201819052602482015260008051602061369183398151915260448201526064015b60405180910390fd5b600e5415610c7f5760405162461bcd60e51b815260206004820152601060248201527f416c7265616479204c61756e63686564000000000000000000000000000000006044820152606401610c26565b42600e556103e8610c926009600a61351a565b610c9f90622dc6c0613529565b610caa906014613529565b610cb49190613540565b601155612710610cc66009600a61351a565b610cd390622dc6c0613529565b610cde9060c8613529565b610ce89190613540565b6012556040517f2cb945e0498987ef06dbd68025b0bc276116c63345296379c28a8e8f09b47dc190600090a1565b33610d296000546001600160a01b031690565b6001600160a01b031614610d6d5760405162461bcd60e51b815260206004820181905260248201526000805160206136918339815191526044820152606401610c26565b6019811015610daa5760405162461bcd60e51b81526020600482015260096024820152686d696e20302e32352560b81b6044820152606401610c26565b612710811115610de75760405162461bcd60e51b81526020600482015260086024820152676d6178203130302560c01b6044820152606401610c26565b61271081610df76009600a61351a565b610e0490622dc6c0613529565b610e0e9190613529565b610e189190613540565b6012556040518181527f7c1cb3702d8e1fa6d24b12dd90670ab69c6d66d58233103d37da8b07d6b850ac906020015b60405180910390a150565b6000610e5f84848461245a565b6001600160a01b038416600090815260026020908152604080832033845290915290205482811015610ed35760405162461bcd60e51b815260206004820152601460248201527f5472616e73666572203e20616c6c6f77616e63650000000000000000000000006044820152606401610c26565b610ee78533610ee28685613562565b61234d565b506001949350505050565b6016546001600160a01b03821660009081526006602052604081206001015490918291610f1f9190613575565b905042811115610f3a57610f334282613562565b9392505050565b50600092915050565b61dead600090815260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d54610f7e6009600a61351a565b610f8b90622dc6c0613529565b610bce9190613562565b33610fa86000546001600160a01b031690565b6001600160a01b031614610fec5760405162461bcd60e51b815260206004820181905260248201526000805160206136918339815191526044820152606401610c26565b6201518081111561103f5760405162461bcd60e51b815260206004820152601a60248201527f43616e6e6f74207365742061626f766520323420686f7572732e0000000000006044820152606401610c26565b601655565b336110576000546001600160a01b031690565b6001600160a01b03161461109b5760405162461bcd60e51b815260206004820181905260248201526000805160206136918339815191526044820152606401610c26565b600a8110156110d55760405162461bcd60e51b81526020600482015260066024820152656d696e20312560d01b6044820152606401610c26565b6103e88111156111125760405162461bcd60e51b81526020600482015260086024820152676d6178203130302560c01b6044820152606401610c26565b6103e8816111226009600a61351a565b61112f90622dc6c0613529565b6111399190613529565b6111439190613540565b6011556040518181527f9cbd2e55e2abf49d29273c1b9fb343c2828844b2aec156cfe2aec98ae1b72a9990602001610e47565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091610ba9918590610ee2908690613575565b336111c06000546001600160a01b031690565b6001600160a01b0316146112045760405162461bcd60e51b815260206004820181905260248201526000805160206136918339815191526044820152606401610c26565b61120e60016125b2565b6040517f50d9f00a1465121b958cf0aef21a53ed0bbe36c5a415abb27350d22b247a258f90600090a1565b60006103e8600d54611249610f43565b6112539190613529565b61125d9190613540565b6018546001600160a01b031660009081526001602052604090205411919050565b336112916000546001600160a01b031690565b6001600160a01b0316146112d55760405162461bcd60e51b815260206004820181905260248201526000805160206136918339815191526044820152606401610c26565b6018546001600160a01b039081169083160361133d5760405162461bcd60e51b815260206004820152602160248201527f63616e2774206368616e676520696e697469616c2070616972206164647265736044820152607360f81b6064820152608401610c26565b6001600160a01b038216600081815260056020908152604091829020805460ff191685151517905590519182527fa5d0a2d9a2487cd749dbfa34962704a9f4ed5ff3fd9c6586c86d954070b552f091015b60405180910390a15050565b336113ad6000546001600160a01b031690565b6001600160a01b0316146113f15760405162461bcd60e51b815260206004820181905260248201526000805160206136918339815191526044820152606401610c26565b60178054911515620100000262ff000019909216919091179055565b336114206000546001600160a01b031690565b6001600160a01b0316146114645760405162461bcd60e51b815260206004820181905260248201526000805160206136918339815191526044820152606401610c26565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b336114c16000546001600160a01b031690565b6001600160a01b0316146115055760405162461bcd60e51b815260206004820181905260248201526000805160206136918339815191526044820152606401610c26565b60646115118284613575565b111561151c57600080fd5b600f829055601081905560408051838152602081018390527fe5a0c91086f91c001ad2bce018f8c7818182156e1fd1d3b81788aadd4b2b3021910161138e565b3361156f6000546001600160a01b031690565b6001600160a01b0316146115b35760405162461bcd60e51b815260206004820181905260248201526000805160206136918339815191526044820152606401610c26565b601980546001600160a01b0319166001600160a01b0383169081179091556040519081527f9e42de18c651175b949c09ca698a4cf63aa023f4038a9ed83bd882c7d6f8fb6490602001610e47565b336116146000546001600160a01b031690565b6001600160a01b0316146116585760405162461bcd60e51b815260206004820181905260248201526000805160206136918339815191526044820152606401610c26565b601780548215156101000261ff00199091161790556040517faffc63374f6f6c07a9f4b158efd5668a3684e1711b1c8e9ed9b848e11507082190610e4790831515815260200190565b336116b46000546001600160a01b031690565b6001600160a01b0316146116f85760405162461bcd60e51b815260206004820181905260248201526000805160206136918339815191526044820152606401610c26565b6001600160a01b03821661170b57600080fd5b6018546001600160a01b039081169083160361172657600080fd5b6040516370a0823160e01b815230600482015282906000906001600160a01b038316906370a0823190602401602060405180830381865afa15801561176f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117939190613588565b90506001600160a01b03821663a9059cbb3360646117b18786613529565b6117bb9190613540565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af115801561181e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184291906135a1565b5050505050565b60003361185e6000546001600160a01b031690565b6001600160a01b0316146118a25760405162461bcd60e51b815260206004820181905260248201526000805160206136918339815191526044820152606401610c26565b6103e882111561191a5760405162461bcd60e51b815260206004820152602a60248201527f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60448201527f6b656e7320696e204c50000000000000000000000000000000000000000000006064820152608401610c26565b426014556018546040516370a0823160e01b81526001600160a01b03909116600482015260009030906370a0823190602401602060405180830381865afa158015611969573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198d9190613588565b9050600061271061199e8584613529565b6119a89190613540565b90508015611a67576018546001600160a01b0316600090815260016020526040812080548392906119da908490613562565b909155505061dead600090815260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d8054839290611a1d908490613575565b909155505060185460405182815261dead916001600160a01b0316907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b601854604080517ffff6cae900000000000000000000000000000000000000000000000000000000815290516001600160a01b0390921691829163fff6cae991600480830192600092919082900301818387803b158015611ac757600080fd5b505af1158015611adb573d6000803e3d6000fd5b50506040517f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb925060009150a1506001949350505050565b3360009081526002602090815260408083206001600160a01b038616845290915281205482811015611b875760405162461bcd60e51b815260206004820152600c60248201527f3c3020616c6c6f77616e636500000000000000000000000000000000000000006044820152606401610c26565b611b963385610ee28685613562565b5060019392505050565b6000610ba933848461245a565b33611bc06000546001600160a01b031690565b6001600160a01b031614611c045760405162461bcd60e51b815260206004820181905260248201526000805160206136918339815191526044820152606401610c26565b6000611c13600a6103e8613540565b9050808611158015611c255750808511155b8015611c315750808411155b611c7d5760405162461bcd60e51b815260206004820152601260248201527f5461782065786365656473206d617854617800000000000000000000000000006044820152606401610c26565b6103e8611c8a8385613575565b14611ce15760405162461bcd60e51b815260206004820152602160248201527f546178657320646f6e27742061646420757020746f2064656e6f6d696e61746f6044820152603960f91b6064820152608401610c26565b600786905560088590556009849055600b839055600a829055604080518781526020810187905290810185905260608101849052608081018390527f07d167ef63e413076f3e7e19f733b66f7ab5fd83fd7b437428f115315687ef6e9060a00160405180910390a1505050505050565b33611d646000546001600160a01b031690565b6001600160a01b031614611da85760405162461bcd60e51b815260206004820181905260248201526000805160206136918339815191526044820152606401610c26565b6103e8811115611db757600080fd5b600d8190556040518181527fa072eee57b8e01913ba01eab29d8a81117cf780e6c8984a3494477ce9cee846d90602001610e47565b33611dff6000546001600160a01b031690565b6001600160a01b031614611e435760405162461bcd60e51b815260206004820181905260248201526000805160206136918339815191526044820152606401610c26565b600a811115611e5157600080fd5b600c8190556040518181527fc075380b8410207b8cc14f0d254ab8c8a6766469631275e4500db835a1ba02cc90602001610e47565b33611e996000546001600160a01b031690565b6001600160a01b031614611edd5760405162461bcd60e51b815260206004820181905260248201526000805160206136918339815191526044820152606401610c26565b306001600160a01b03831603611f355760405162461bcd60e51b815260206004820152601a60248201527f63616e277420496e636c7564652074686520636f6e74726163740000000000006044820152606401610c26565b6001600160a01b038216600081815260046020908152604091829020805460ff19168515159081179091558251938452908301527fa22b25479919d4ac678f064a05daa1ee9c0adc3b8198942ea45255e364e04ed4910161138e565b33611fa46000546001600160a01b031690565b6001600160a01b031614611fe85760405162461bcd60e51b815260206004820181905260248201526000805160206136918339815191526044820152606401610c26565b47336108fc6064611ff98585613529565b6120039190613540565b6040518115909202916000818181858888f1935050505015801561202b573d6000803e3d6000fd5b505050565b336120436000546001600160a01b031690565b6001600160a01b0316146120875760405162461bcd60e51b815260206004820181905260248201526000805160206136918339815191526044820152606401610c26565b6001600160a01b0381166120ec5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c26565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3361215a6000546001600160a01b031690565b6001600160a01b03161461219e5760405162461bcd60e51b815260206004820181905260248201526000805160206136918339815191526044820152606401610c26565b6001600160a01b038216600081815260036020908152604091829020805460ff19168515159081179091558251938452908301527f4b89c347592b1d537e066cb4ed98d87696ae35164745d7e370e4add16941dc92910161138e565b3361220d6000546001600160a01b031690565b6001600160a01b0316146122515760405162461bcd60e51b815260206004820181905260248201526000805160206136918339815191526044820152606401610c26565b6127108110156122a35760405162461bcd60e51b815260206004820152601460248201527f43616e6e6f74207365742062656c6f772031252e0000000000000000000000006044820152606401610c26565b601555565b336122bb6000546001600160a01b031690565b6001600160a01b0316146122ff5760405162461bcd60e51b815260206004820181905260248201526000805160206136918339815191526044820152606401610c26565b601a80546001600160a01b0319166001600160a01b0383169081179091556040519081527f1a806adf87d2b694e80e69bda66ee145c65fb0ef3615fec509da7adc260316af90602001610e47565b6001600160a01b0383166123a35760405162461bcd60e51b815260206004820152601160248201527f417070726f76652066726f6d207a65726f0000000000000000000000000000006044820152606401610c26565b6001600160a01b0382166123f95760405162461bcd60e51b815260206004820152600f60248201527f417070726f766520746f207a65726f00000000000000000000000000000000006044820152606401610c26565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166124b05760405162461bcd60e51b815260206004820152601260248201527f5472616e736665722066726f6d207a65726f00000000000000000000000000006044820152606401610c26565b6001600160a01b0382166125065760405162461bcd60e51b815260206004820152601060248201527f5472616e7366657220746f207a65726f000000000000000000000000000000006044820152606401610c26565b6001600160a01b03831660009081526004602052604090205460ff168061254557506001600160a01b03821660009081526004602052604090205460ff165b156125555761202b83838361280b565b6000600e54116125a75760405162461bcd60e51b815260206004820152601760248201527f74726164696e67206e6f742079657420656e61626c65640000000000000000006044820152606401610c26565b61202b838383612923565b6017805460ff191660019081179091553060009081526020919091526040812054600b54600a549192916125e69190613575565b600c546018546001600160a01b0316600090815260016020526040812054929350916103e89161261591613529565b61261f9190613540565b905081600003612631575050506127fe565b831561264d57503060009081526001602052604090205461265d565b8083101561265d575050506127fe565b6000612667611239565b6126895782600a548361267a9190613529565b6126849190613540565b61268c565b60005b9050600061269a8284613562565b905060006126a9600284613540565b905060006126b78383613575565b9050476126c382612fbf565b60006126cf8247613562565b905085156126fc576000836126e48684613529565b6126ee9190613540565b90506126fa8582613138565b505b600060646010544761270e9190613529565b6127189190613540565b905060006064600f544761272c9190613529565b6127369190613540565b90508115612795576019546040516000916001600160a01b03169084908381818185875af1925050503d806000811461278b576040519150601f19603f3d011682016040523d82523d6000602084013e612790565b606091505b505050505b80156127f257601a546040516000916001600160a01b03169083908381818185875af1925050503d80600081146127e8576040519150601f19603f3d011682016040523d82523d6000602084013e6127ed565b606091505b505050505b50505050505050505050505b506017805460ff19169055565b6001600160a01b038316600090815260016020526040902054818110156128745760405162461bcd60e51b815260206004820152601860248201527f5472616e7366657220657863656564732062616c616e636500000000000000006044820152606401610c26565b6001600160a01b0384166000908152600160205260408120805484929061289c908490613562565b90915550506001600160a01b038316600090815260016020526040812080548492906128c9908490613575565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161291591815260200190565b60405180910390a350505050565b6001600160a01b0383166000908152600160205260409020548181101561298c5760405162461bcd60e51b815260206004820152601860248201527f5472616e7366657220657863656564732062616c616e636500000000000000006044820152606401610c26565b6001600160a01b03841660009081526003602052604081205460ff16806129cb57506001600160a01b03841660009081526003602052604090205460ff165b6001600160a01b03861660009081526005602052604090205490915060ff1680156129f4575080155b15612ae257601254831115612a5c5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610c26565b6001600160a01b038416600090815260016020526040902054601154612a828583613575565b1115612adc5760405162461bcd60e51b8152602060048201526024808201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152633ab73a1760e11b6064820152608401610c26565b50612b70565b6001600160a01b03841660009081526005602052604090205460ff168015612b08575080155b15612b7057601254831115612b705760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610c26565b6001600160a01b0380861660009081526005602052604080822054928716825281205460ff9283169216908115612d855760175462010000900460ff1615612d7c576016546001600160a01b0389166000908152600660205260409020600101544291612bdc91613575565b1115612ca5576001600160a01b038816600090815260066020526040812054612c06908890613575565b6001600160a01b038a16600090815260066020526040902060020154909150811115612c7f5760405162461bcd60e51b815260206004820152602260248201527f53656c6c20616d6f756e7420657863656564732063757272656e74206c696d696044820152613a1760f11b6064820152608401610c26565b6008546001600160a01b038a166000908152600660205260409020919091559050612e73565b5060085460155461271090612cbc6009600a61351a565b612cc990622dc6c0613529565b612cd39190613529565b612cdd9190613540565b6001600160a01b0389166000908152600660205260409020600201819055861115612d555760405162461bcd60e51b815260206004820152602260248201527f53656c6c20616d6f756e7420657863656564732063757272656e74206c696d696044820152613a1760f11b6064820152608401610c26565b6001600160a01b038816600090815260066020526040902086815542600190910155612e73565b50600854612e73565b8215612d945750600754612e73565b60175462010000900460ff1615612ded5760405162461bcd60e51b815260206004820152601460248201527f4e6f207472616e736665727320616c6c6f7765640000000000000000000000006044820152606401610c26565b6001600160a01b038716600090815260016020526040902054601154612e138883613575565b1115612e6d5760405162461bcd60e51b8152602060048201526024808201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152633ab73a1760e11b6064820152608401610c26565b50506009545b6018546001600160a01b03898116911614801590612e995750601754610100900460ff16155b8015612ea8575060175460ff16155b15612eb757612eb760006125b2565b6000612ed38783600a54600b54612ece9190613575565b6131f3565b90506000612ee18289613562565b6001600160a01b038b16600090815260016020526040812080549293508a92909190612f0e908490613562565b90915550503060009081526001602052604081208054849290612f32908490613575565b90915550506001600160a01b03891660009081526001602052604081208054839290612f5f908490613575565b92505081905550886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612fab91815260200190565b60405180910390a350505050505050505050565b601754612fde903090630100000090046001600160a01b03168361234d565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613013576130136135be565b60200260200101906001600160a01b031690816001600160a01b031681525050601760039054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613086573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130aa91906135d4565b816001815181106130bd576130bd6135be565b6001600160a01b03928316602091820292909201015260175460405163791ac94760e01b815263010000009091049091169063791ac9479061310c9085906000908690309042906004016135f1565b600060405180830381600087803b15801561312657600080fd5b505af192505050801561202b57505050565b601754613157903090630100000090046001600160a01b03168461234d565b601754601a5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a48201526301000000909204169063f305d71990839060c40160606040518083038185885af11580156131ce573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906118429190613662565b60006132016103e880613529565b8261320c8587613529565b6132169190613529565b6132209190613540565b949350505050565b600060208083528351808285015260005b8181101561325557858101830151858201604001528201613239565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461328b57600080fd5b50565b600080604083850312156132a157600080fd5b82356132ac81613276565b946020939093013593505050565b6000602082840312156132cc57600080fd5b5035919050565b6000806000606084860312156132e857600080fd5b83356132f381613276565b9250602084013561330381613276565b929592945050506040919091013590565b60006020828403121561332657600080fd5b8135610f3381613276565b801515811461328b57600080fd5b6000806040838503121561335257600080fd5b823561335d81613276565b9150602083013561336d81613331565b809150509250929050565b60006020828403121561338a57600080fd5b8135610f3381613331565b600080604083850312156133a857600080fd5b50508035926020909101359150565b600080600080600060a086880312156133cf57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b6000806040838503121561340557600080fd5b823561341081613276565b9150602083013561336d81613276565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561347157816000190482111561345757613457613420565b8085161561346457918102915b93841c939080029061343b565b509250929050565b60008261348857506001610bad565b8161349557506000610bad565b81600181146134ab57600281146134b5576134d1565b6001915050610bad565b60ff8411156134c6576134c6613420565b50506001821b610bad565b5060208310610133831016604e8410600b84101617156134f4575081810a610bad565b6134fe8383613436565b806000190482111561351257613512613420565b029392505050565b6000610f3360ff841683613479565b8082028115828204841417610bad57610bad613420565b60008261355d57634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610bad57610bad613420565b80820180821115610bad57610bad613420565b60006020828403121561359a57600080fd5b5051919050565b6000602082840312156135b357600080fd5b8151610f3381613331565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156135e657600080fd5b8151610f3381613276565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156136415784516001600160a01b03168352938301939183019160010161361c565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561367757600080fd5b835192506020840151915060408401519050925092509256fe4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a264697066735822122007502f55f77e8663fa0c1c48989e5909dfd3f4632a477760d1d623ace920bed664736f6c63430008110033

Deployed Bytecode

0x6080604052600436106103b15760003560e01c8063893d20e8116101e7578063c3f4f54f1161010d578063e0d2f9eb116100a0578063f7942b631161006f578063f7942b6314610b26578063f870f12514610b46578063fd6e5a6114610b66578063ff90061214610b7c57600080fd5b8063e0d2f9eb14610ab0578063e52fb9ec14610ad0578063e811599d14610ae6578063f2fde38b14610b0657600080fd5b8063d24cd3ec116100dc578063d24cd3ec146109f4578063d46b6a3014610a0a578063dbe66ca014610a3a578063dd62ed3e14610a6a57600080fd5b8063c3f4f54f14610969578063c8c8ebe4146109a8578063cc1776d3146109be578063cfd1940e146109d457600080fd5b8063a457c2d711610185578063baa88ea911610154578063baa88ea9146108fd578063bbde77c11461091d578063bc43d84914610933578063be617fa01461095357600080fd5b8063a457c2d714610891578063a4c82a00146108b1578063a9059cbb146108c7578063b40d09e2146108e757600080fd5b8063946ffe65116101c1578063946ffe651461083b57806395d89b41146103f057806398d7e7211461085b5780639ec22c0e1461087b57600080fd5b8063893d20e8146107fd5780638da5cb5b146107fd5780638ea5220f1461081b57600080fd5b806339509351116102d75780636386c1c71161026a578063766febab11610239578063766febab146107875780638124f7ac146107a7578063817d4bff146107bd578063868b0141146107dd57600080fd5b80636386c1c7146106a257806370a082311461071c578063715018a61461075257806375f0a8741461076757600080fd5b80635149f984116102a65780635149f9841461060a57806351bc3c851461062a57806354bdc753146106495780635cce86cd1461066957600080fd5b806339509351146105aa57806341aec357146105ca57806346e35f03146105df5780634f7041a5146105f457600080fd5b80631e293c101161034f5780632b112e491161031e5780632b112e49146105395780632c66562b1461054e5780632c92293c1461056e578063313ce5671461058e57600080fd5b80631e293c10146104b95780631f3d14f2146104d957806323b872dd146104f957806326254a861461051957600080fd5b80630eff4c641161038b5780630eff4c641461045357806318160ddd146104775780631b2773c21461048c5780631d97b7cd146104a257600080fd5b806306228749146103bd57806306fdde03146103f0578063095ea7b31461042357600080fd5b366103b857005b600080fd5b3480156103c957600080fd5b506103d361dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103fc57600080fd5b5060408051808201825260048152634149424f60e01b602082015290516103e79190613228565b34801561042f57600080fd5b5061044361043e36600461328e565b610b9c565b60405190151581526020016103e7565b34801561045f57600080fd5b50610469600d5481565b6040519081526020016103e7565b34801561048357600080fd5b50610469610bb3565b34801561049857600080fd5b5061046960165481565b3480156104ae57600080fd5b506104b7610bd3565b005b3480156104c557600080fd5b506104b76104d43660046132ba565b610d16565b3480156104e557600080fd5b506017546104439062010000900460ff1681565b34801561050557600080fd5b506104436105143660046132d3565b610e52565b34801561052557600080fd5b50610469610534366004613314565b610ef2565b34801561054557600080fd5b50610469610f43565b34801561055a57600080fd5b506104b76105693660046132ba565b610f95565b34801561057a57600080fd5b506104b76105893660046132ba565b611044565b34801561059a57600080fd5b50604051600981526020016103e7565b3480156105b657600080fd5b506104436105c536600461328e565b611176565b3480156105d657600080fd5b506104b76111ad565b3480156105eb57600080fd5b50610443611239565b34801561060057600080fd5b5061046960075481565b34801561061657600080fd5b506104b761062536600461333f565b61127e565b34801561063657600080fd5b5060175461044390610100900460ff1681565b34801561065557600080fd5b506104b7610664366004613378565b61139a565b34801561067557600080fd5b50610443610684366004613314565b6001600160a01b031660009081526003602052604090205460ff1690565b3480156106ae57600080fd5b506107016106bd366004613314565b6001600160a01b0316600090815260066020908152604091829020825160608101845281548082526001830154938201849052600290920154930183905292909190565b604080519384526020840192909252908201526060016103e7565b34801561072857600080fd5b50610469610737366004613314565b6001600160a01b031660009081526001602052604090205490565b34801561075e57600080fd5b506104b761140d565b34801561077357600080fd5b506019546103d3906001600160a01b031681565b34801561079357600080fd5b506104b76107a2366004613395565b6114ae565b3480156107b357600080fd5b5061046960095481565b3480156107c957600080fd5b506104b76107d8366004613314565b61155c565b3480156107e957600080fd5b506104b76107f8366004613378565b611601565b34801561080957600080fd5b506000546001600160a01b03166103d3565b34801561082757600080fd5b50601a546103d3906001600160a01b031681565b34801561084757600080fd5b506104b761085636600461328e565b6116a1565b34801561086757600080fd5b506104436108763660046132ba565b611849565b34801561088757600080fd5b5061046960145481565b34801561089d57600080fd5b506104436108ac36600461328e565b611b13565b3480156108bd57600080fd5b5061046960135481565b3480156108d357600080fd5b506104436108e236600461328e565b611ba0565b3480156108f357600080fd5b50610469600e5481565b34801561090957600080fd5b506104b76109183660046133b7565b611bad565b34801561092957600080fd5b5061046960115481565b34801561093f57600080fd5b506104b761094e3660046132ba565b611d51565b34801561095f57600080fd5b50610469600a5481565b34801561097557600080fd5b5061dead60005260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d54610469565b3480156109b457600080fd5b5061046960125481565b3480156109ca57600080fd5b5061046960085481565b3480156109e057600080fd5b506104b76109ef3660046132ba565b611dec565b348015610a0057600080fd5b50610469600b5481565b348015610a1657600080fd5b50610443610a25366004613314565b60056020526000908152604090205460ff1681565b348015610a4657600080fd5b50610443610a55366004613314565b60046020526000908152604090205460ff1681565b348015610a7657600080fd5b50610469610a853660046133f2565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b348015610abc57600080fd5b506104b7610acb36600461333f565b611e86565b348015610adc57600080fd5b50610469600c5481565b348015610af257600080fd5b506104b7610b013660046132ba565b611f91565b348015610b1257600080fd5b506104b7610b21366004613314565b612030565b348015610b3257600080fd5b506104b7610b4136600461333f565b612147565b348015610b5257600080fd5b506104b7610b613660046132ba565b6121fa565b348015610b7257600080fd5b5061046960155481565b348015610b8857600080fd5b506104b7610b97366004613314565b6122a8565b6000610ba933848461234d565b5060015b92915050565b6000610bc16009600a61351a565b610bce90622dc6c0613529565b905090565b33610be66000546001600160a01b031690565b6001600160a01b031614610c2f5760405162461bcd60e51b8152602060048201819052602482015260008051602061369183398151915260448201526064015b60405180910390fd5b600e5415610c7f5760405162461bcd60e51b815260206004820152601060248201527f416c7265616479204c61756e63686564000000000000000000000000000000006044820152606401610c26565b42600e556103e8610c926009600a61351a565b610c9f90622dc6c0613529565b610caa906014613529565b610cb49190613540565b601155612710610cc66009600a61351a565b610cd390622dc6c0613529565b610cde9060c8613529565b610ce89190613540565b6012556040517f2cb945e0498987ef06dbd68025b0bc276116c63345296379c28a8e8f09b47dc190600090a1565b33610d296000546001600160a01b031690565b6001600160a01b031614610d6d5760405162461bcd60e51b815260206004820181905260248201526000805160206136918339815191526044820152606401610c26565b6019811015610daa5760405162461bcd60e51b81526020600482015260096024820152686d696e20302e32352560b81b6044820152606401610c26565b612710811115610de75760405162461bcd60e51b81526020600482015260086024820152676d6178203130302560c01b6044820152606401610c26565b61271081610df76009600a61351a565b610e0490622dc6c0613529565b610e0e9190613529565b610e189190613540565b6012556040518181527f7c1cb3702d8e1fa6d24b12dd90670ab69c6d66d58233103d37da8b07d6b850ac906020015b60405180910390a150565b6000610e5f84848461245a565b6001600160a01b038416600090815260026020908152604080832033845290915290205482811015610ed35760405162461bcd60e51b815260206004820152601460248201527f5472616e73666572203e20616c6c6f77616e63650000000000000000000000006044820152606401610c26565b610ee78533610ee28685613562565b61234d565b506001949350505050565b6016546001600160a01b03821660009081526006602052604081206001015490918291610f1f9190613575565b905042811115610f3a57610f334282613562565b9392505050565b50600092915050565b61dead600090815260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d54610f7e6009600a61351a565b610f8b90622dc6c0613529565b610bce9190613562565b33610fa86000546001600160a01b031690565b6001600160a01b031614610fec5760405162461bcd60e51b815260206004820181905260248201526000805160206136918339815191526044820152606401610c26565b6201518081111561103f5760405162461bcd60e51b815260206004820152601a60248201527f43616e6e6f74207365742061626f766520323420686f7572732e0000000000006044820152606401610c26565b601655565b336110576000546001600160a01b031690565b6001600160a01b03161461109b5760405162461bcd60e51b815260206004820181905260248201526000805160206136918339815191526044820152606401610c26565b600a8110156110d55760405162461bcd60e51b81526020600482015260066024820152656d696e20312560d01b6044820152606401610c26565b6103e88111156111125760405162461bcd60e51b81526020600482015260086024820152676d6178203130302560c01b6044820152606401610c26565b6103e8816111226009600a61351a565b61112f90622dc6c0613529565b6111399190613529565b6111439190613540565b6011556040518181527f9cbd2e55e2abf49d29273c1b9fb343c2828844b2aec156cfe2aec98ae1b72a9990602001610e47565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091610ba9918590610ee2908690613575565b336111c06000546001600160a01b031690565b6001600160a01b0316146112045760405162461bcd60e51b815260206004820181905260248201526000805160206136918339815191526044820152606401610c26565b61120e60016125b2565b6040517f50d9f00a1465121b958cf0aef21a53ed0bbe36c5a415abb27350d22b247a258f90600090a1565b60006103e8600d54611249610f43565b6112539190613529565b61125d9190613540565b6018546001600160a01b031660009081526001602052604090205411919050565b336112916000546001600160a01b031690565b6001600160a01b0316146112d55760405162461bcd60e51b815260206004820181905260248201526000805160206136918339815191526044820152606401610c26565b6018546001600160a01b039081169083160361133d5760405162461bcd60e51b815260206004820152602160248201527f63616e2774206368616e676520696e697469616c2070616972206164647265736044820152607360f81b6064820152608401610c26565b6001600160a01b038216600081815260056020908152604091829020805460ff191685151517905590519182527fa5d0a2d9a2487cd749dbfa34962704a9f4ed5ff3fd9c6586c86d954070b552f091015b60405180910390a15050565b336113ad6000546001600160a01b031690565b6001600160a01b0316146113f15760405162461bcd60e51b815260206004820181905260248201526000805160206136918339815191526044820152606401610c26565b60178054911515620100000262ff000019909216919091179055565b336114206000546001600160a01b031690565b6001600160a01b0316146114645760405162461bcd60e51b815260206004820181905260248201526000805160206136918339815191526044820152606401610c26565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b336114c16000546001600160a01b031690565b6001600160a01b0316146115055760405162461bcd60e51b815260206004820181905260248201526000805160206136918339815191526044820152606401610c26565b60646115118284613575565b111561151c57600080fd5b600f829055601081905560408051838152602081018390527fe5a0c91086f91c001ad2bce018f8c7818182156e1fd1d3b81788aadd4b2b3021910161138e565b3361156f6000546001600160a01b031690565b6001600160a01b0316146115b35760405162461bcd60e51b815260206004820181905260248201526000805160206136918339815191526044820152606401610c26565b601980546001600160a01b0319166001600160a01b0383169081179091556040519081527f9e42de18c651175b949c09ca698a4cf63aa023f4038a9ed83bd882c7d6f8fb6490602001610e47565b336116146000546001600160a01b031690565b6001600160a01b0316146116585760405162461bcd60e51b815260206004820181905260248201526000805160206136918339815191526044820152606401610c26565b601780548215156101000261ff00199091161790556040517faffc63374f6f6c07a9f4b158efd5668a3684e1711b1c8e9ed9b848e11507082190610e4790831515815260200190565b336116b46000546001600160a01b031690565b6001600160a01b0316146116f85760405162461bcd60e51b815260206004820181905260248201526000805160206136918339815191526044820152606401610c26565b6001600160a01b03821661170b57600080fd5b6018546001600160a01b039081169083160361172657600080fd5b6040516370a0823160e01b815230600482015282906000906001600160a01b038316906370a0823190602401602060405180830381865afa15801561176f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117939190613588565b90506001600160a01b03821663a9059cbb3360646117b18786613529565b6117bb9190613540565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af115801561181e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184291906135a1565b5050505050565b60003361185e6000546001600160a01b031690565b6001600160a01b0316146118a25760405162461bcd60e51b815260206004820181905260248201526000805160206136918339815191526044820152606401610c26565b6103e882111561191a5760405162461bcd60e51b815260206004820152602a60248201527f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60448201527f6b656e7320696e204c50000000000000000000000000000000000000000000006064820152608401610c26565b426014556018546040516370a0823160e01b81526001600160a01b03909116600482015260009030906370a0823190602401602060405180830381865afa158015611969573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198d9190613588565b9050600061271061199e8584613529565b6119a89190613540565b90508015611a67576018546001600160a01b0316600090815260016020526040812080548392906119da908490613562565b909155505061dead600090815260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d8054839290611a1d908490613575565b909155505060185460405182815261dead916001600160a01b0316907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b601854604080517ffff6cae900000000000000000000000000000000000000000000000000000000815290516001600160a01b0390921691829163fff6cae991600480830192600092919082900301818387803b158015611ac757600080fd5b505af1158015611adb573d6000803e3d6000fd5b50506040517f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb925060009150a1506001949350505050565b3360009081526002602090815260408083206001600160a01b038616845290915281205482811015611b875760405162461bcd60e51b815260206004820152600c60248201527f3c3020616c6c6f77616e636500000000000000000000000000000000000000006044820152606401610c26565b611b963385610ee28685613562565b5060019392505050565b6000610ba933848461245a565b33611bc06000546001600160a01b031690565b6001600160a01b031614611c045760405162461bcd60e51b815260206004820181905260248201526000805160206136918339815191526044820152606401610c26565b6000611c13600a6103e8613540565b9050808611158015611c255750808511155b8015611c315750808411155b611c7d5760405162461bcd60e51b815260206004820152601260248201527f5461782065786365656473206d617854617800000000000000000000000000006044820152606401610c26565b6103e8611c8a8385613575565b14611ce15760405162461bcd60e51b815260206004820152602160248201527f546178657320646f6e27742061646420757020746f2064656e6f6d696e61746f6044820152603960f91b6064820152608401610c26565b600786905560088590556009849055600b839055600a829055604080518781526020810187905290810185905260608101849052608081018390527f07d167ef63e413076f3e7e19f733b66f7ab5fd83fd7b437428f115315687ef6e9060a00160405180910390a1505050505050565b33611d646000546001600160a01b031690565b6001600160a01b031614611da85760405162461bcd60e51b815260206004820181905260248201526000805160206136918339815191526044820152606401610c26565b6103e8811115611db757600080fd5b600d8190556040518181527fa072eee57b8e01913ba01eab29d8a81117cf780e6c8984a3494477ce9cee846d90602001610e47565b33611dff6000546001600160a01b031690565b6001600160a01b031614611e435760405162461bcd60e51b815260206004820181905260248201526000805160206136918339815191526044820152606401610c26565b600a811115611e5157600080fd5b600c8190556040518181527fc075380b8410207b8cc14f0d254ab8c8a6766469631275e4500db835a1ba02cc90602001610e47565b33611e996000546001600160a01b031690565b6001600160a01b031614611edd5760405162461bcd60e51b815260206004820181905260248201526000805160206136918339815191526044820152606401610c26565b306001600160a01b03831603611f355760405162461bcd60e51b815260206004820152601a60248201527f63616e277420496e636c7564652074686520636f6e74726163740000000000006044820152606401610c26565b6001600160a01b038216600081815260046020908152604091829020805460ff19168515159081179091558251938452908301527fa22b25479919d4ac678f064a05daa1ee9c0adc3b8198942ea45255e364e04ed4910161138e565b33611fa46000546001600160a01b031690565b6001600160a01b031614611fe85760405162461bcd60e51b815260206004820181905260248201526000805160206136918339815191526044820152606401610c26565b47336108fc6064611ff98585613529565b6120039190613540565b6040518115909202916000818181858888f1935050505015801561202b573d6000803e3d6000fd5b505050565b336120436000546001600160a01b031690565b6001600160a01b0316146120875760405162461bcd60e51b815260206004820181905260248201526000805160206136918339815191526044820152606401610c26565b6001600160a01b0381166120ec5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c26565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3361215a6000546001600160a01b031690565b6001600160a01b03161461219e5760405162461bcd60e51b815260206004820181905260248201526000805160206136918339815191526044820152606401610c26565b6001600160a01b038216600081815260036020908152604091829020805460ff19168515159081179091558251938452908301527f4b89c347592b1d537e066cb4ed98d87696ae35164745d7e370e4add16941dc92910161138e565b3361220d6000546001600160a01b031690565b6001600160a01b0316146122515760405162461bcd60e51b815260206004820181905260248201526000805160206136918339815191526044820152606401610c26565b6127108110156122a35760405162461bcd60e51b815260206004820152601460248201527f43616e6e6f74207365742062656c6f772031252e0000000000000000000000006044820152606401610c26565b601555565b336122bb6000546001600160a01b031690565b6001600160a01b0316146122ff5760405162461bcd60e51b815260206004820181905260248201526000805160206136918339815191526044820152606401610c26565b601a80546001600160a01b0319166001600160a01b0383169081179091556040519081527f1a806adf87d2b694e80e69bda66ee145c65fb0ef3615fec509da7adc260316af90602001610e47565b6001600160a01b0383166123a35760405162461bcd60e51b815260206004820152601160248201527f417070726f76652066726f6d207a65726f0000000000000000000000000000006044820152606401610c26565b6001600160a01b0382166123f95760405162461bcd60e51b815260206004820152600f60248201527f417070726f766520746f207a65726f00000000000000000000000000000000006044820152606401610c26565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166124b05760405162461bcd60e51b815260206004820152601260248201527f5472616e736665722066726f6d207a65726f00000000000000000000000000006044820152606401610c26565b6001600160a01b0382166125065760405162461bcd60e51b815260206004820152601060248201527f5472616e7366657220746f207a65726f000000000000000000000000000000006044820152606401610c26565b6001600160a01b03831660009081526004602052604090205460ff168061254557506001600160a01b03821660009081526004602052604090205460ff165b156125555761202b83838361280b565b6000600e54116125a75760405162461bcd60e51b815260206004820152601760248201527f74726164696e67206e6f742079657420656e61626c65640000000000000000006044820152606401610c26565b61202b838383612923565b6017805460ff191660019081179091553060009081526020919091526040812054600b54600a549192916125e69190613575565b600c546018546001600160a01b0316600090815260016020526040812054929350916103e89161261591613529565b61261f9190613540565b905081600003612631575050506127fe565b831561264d57503060009081526001602052604090205461265d565b8083101561265d575050506127fe565b6000612667611239565b6126895782600a548361267a9190613529565b6126849190613540565b61268c565b60005b9050600061269a8284613562565b905060006126a9600284613540565b905060006126b78383613575565b9050476126c382612fbf565b60006126cf8247613562565b905085156126fc576000836126e48684613529565b6126ee9190613540565b90506126fa8582613138565b505b600060646010544761270e9190613529565b6127189190613540565b905060006064600f544761272c9190613529565b6127369190613540565b90508115612795576019546040516000916001600160a01b03169084908381818185875af1925050503d806000811461278b576040519150601f19603f3d011682016040523d82523d6000602084013e612790565b606091505b505050505b80156127f257601a546040516000916001600160a01b03169083908381818185875af1925050503d80600081146127e8576040519150601f19603f3d011682016040523d82523d6000602084013e6127ed565b606091505b505050505b50505050505050505050505b506017805460ff19169055565b6001600160a01b038316600090815260016020526040902054818110156128745760405162461bcd60e51b815260206004820152601860248201527f5472616e7366657220657863656564732062616c616e636500000000000000006044820152606401610c26565b6001600160a01b0384166000908152600160205260408120805484929061289c908490613562565b90915550506001600160a01b038316600090815260016020526040812080548492906128c9908490613575565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161291591815260200190565b60405180910390a350505050565b6001600160a01b0383166000908152600160205260409020548181101561298c5760405162461bcd60e51b815260206004820152601860248201527f5472616e7366657220657863656564732062616c616e636500000000000000006044820152606401610c26565b6001600160a01b03841660009081526003602052604081205460ff16806129cb57506001600160a01b03841660009081526003602052604090205460ff165b6001600160a01b03861660009081526005602052604090205490915060ff1680156129f4575080155b15612ae257601254831115612a5c5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610c26565b6001600160a01b038416600090815260016020526040902054601154612a828583613575565b1115612adc5760405162461bcd60e51b8152602060048201526024808201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152633ab73a1760e11b6064820152608401610c26565b50612b70565b6001600160a01b03841660009081526005602052604090205460ff168015612b08575080155b15612b7057601254831115612b705760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610c26565b6001600160a01b0380861660009081526005602052604080822054928716825281205460ff9283169216908115612d855760175462010000900460ff1615612d7c576016546001600160a01b0389166000908152600660205260409020600101544291612bdc91613575565b1115612ca5576001600160a01b038816600090815260066020526040812054612c06908890613575565b6001600160a01b038a16600090815260066020526040902060020154909150811115612c7f5760405162461bcd60e51b815260206004820152602260248201527f53656c6c20616d6f756e7420657863656564732063757272656e74206c696d696044820152613a1760f11b6064820152608401610c26565b6008546001600160a01b038a166000908152600660205260409020919091559050612e73565b5060085460155461271090612cbc6009600a61351a565b612cc990622dc6c0613529565b612cd39190613529565b612cdd9190613540565b6001600160a01b0389166000908152600660205260409020600201819055861115612d555760405162461bcd60e51b815260206004820152602260248201527f53656c6c20616d6f756e7420657863656564732063757272656e74206c696d696044820152613a1760f11b6064820152608401610c26565b6001600160a01b038816600090815260066020526040902086815542600190910155612e73565b50600854612e73565b8215612d945750600754612e73565b60175462010000900460ff1615612ded5760405162461bcd60e51b815260206004820152601460248201527f4e6f207472616e736665727320616c6c6f7765640000000000000000000000006044820152606401610c26565b6001600160a01b038716600090815260016020526040902054601154612e138883613575565b1115612e6d5760405162461bcd60e51b8152602060048201526024808201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152633ab73a1760e11b6064820152608401610c26565b50506009545b6018546001600160a01b03898116911614801590612e995750601754610100900460ff16155b8015612ea8575060175460ff16155b15612eb757612eb760006125b2565b6000612ed38783600a54600b54612ece9190613575565b6131f3565b90506000612ee18289613562565b6001600160a01b038b16600090815260016020526040812080549293508a92909190612f0e908490613562565b90915550503060009081526001602052604081208054849290612f32908490613575565b90915550506001600160a01b03891660009081526001602052604081208054839290612f5f908490613575565b92505081905550886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612fab91815260200190565b60405180910390a350505050505050505050565b601754612fde903090630100000090046001600160a01b03168361234d565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613013576130136135be565b60200260200101906001600160a01b031690816001600160a01b031681525050601760039054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613086573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130aa91906135d4565b816001815181106130bd576130bd6135be565b6001600160a01b03928316602091820292909201015260175460405163791ac94760e01b815263010000009091049091169063791ac9479061310c9085906000908690309042906004016135f1565b600060405180830381600087803b15801561312657600080fd5b505af192505050801561202b57505050565b601754613157903090630100000090046001600160a01b03168461234d565b601754601a5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a48201526301000000909204169063f305d71990839060c40160606040518083038185885af11580156131ce573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906118429190613662565b60006132016103e880613529565b8261320c8587613529565b6132169190613529565b6132209190613540565b949350505050565b600060208083528351808285015260005b8181101561325557858101830151858201604001528201613239565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461328b57600080fd5b50565b600080604083850312156132a157600080fd5b82356132ac81613276565b946020939093013593505050565b6000602082840312156132cc57600080fd5b5035919050565b6000806000606084860312156132e857600080fd5b83356132f381613276565b9250602084013561330381613276565b929592945050506040919091013590565b60006020828403121561332657600080fd5b8135610f3381613276565b801515811461328b57600080fd5b6000806040838503121561335257600080fd5b823561335d81613276565b9150602083013561336d81613331565b809150509250929050565b60006020828403121561338a57600080fd5b8135610f3381613331565b600080604083850312156133a857600080fd5b50508035926020909101359150565b600080600080600060a086880312156133cf57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b6000806040838503121561340557600080fd5b823561341081613276565b9150602083013561336d81613276565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561347157816000190482111561345757613457613420565b8085161561346457918102915b93841c939080029061343b565b509250929050565b60008261348857506001610bad565b8161349557506000610bad565b81600181146134ab57600281146134b5576134d1565b6001915050610bad565b60ff8411156134c6576134c6613420565b50506001821b610bad565b5060208310610133831016604e8410600b84101617156134f4575081810a610bad565b6134fe8383613436565b806000190482111561351257613512613420565b029392505050565b6000610f3360ff841683613479565b8082028115828204841417610bad57610bad613420565b60008261355d57634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610bad57610bad613420565b80820180821115610bad57610bad613420565b60006020828403121561359a57600080fd5b5051919050565b6000602082840312156135b357600080fd5b8151610f3381613331565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156135e657600080fd5b8151610f3381613276565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156136415784516001600160a01b03168352938301939183019160010161361c565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561367757600080fd5b835192506020840151915060408401519050925092509256fe4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a264697066735822122007502f55f77e8663fa0c1c48989e5909dfd3f4632a477760d1d623ace920bed664736f6c63430008110033

Deployed Bytecode Sourcemap

3829:17357:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5532:52;;;;;;;;;;;;5577:6;5532:52;;;;;-1:-1:-1;;;;;178:55:1;;;160:74;;148:2;133:18;5532:52:0;;;;;;;;18398:78;;;;;;;;;;-1:-1:-1;18469:5:0;;;;;;;;;;;-1:-1:-1;;;18469:5:0;;;;18398:78;;;;18469:5;18398:78;:::i;19154:158::-;;;;;;;;;;-1:-1:-1;19154:158:0;;;;;:::i;:::-;;:::i;:::-;;;1442:14:1;;1435:22;1417:41;;1405:2;1390:18;19154:158:0;1277:187:1;4760:35:0;;;;;;;;;;;;;;;;;;;1615:25:1;;;1603:2;1588:18;4760:35:0;1469:177:1;18654:84:0;;;;;;;;;;;;;:::i;5226:40::-;;;;;;;;;;;;;;;;17311:299;;;;;;;;;;;;;:::i;:::-;;7433:288;;;;;;;;;;-1:-1:-1;7433:288:0;;;;;:::i;:::-;;:::i;5353:28::-;;;;;;;;;;-1:-1:-1;5353:28:0;;;;;;;;;;;19618:382;;;;;;;;;;-1:-1:-1;19618:382:0;;;;;:::i;:::-;;:::i;8403:291::-;;;;;;;;;;-1:-1:-1;8403:291:0;;;;;:::i;:::-;;:::i;16128:123::-;;;;;;;;;;;;;:::i;8000:189::-;;;;;;;;;;-1:-1:-1;8000:189:0;;;;;:::i;:::-;;:::i;7149:278::-;;;;;;;;;;-1:-1:-1;7149:278:0;;;;;:::i;:::-;;:::i;18570:78::-;;;;;;;;;;-1:-1:-1;18570:78:0;;4419:1;2691:36:1;;2679:2;2664:18;18570:78:0;2549:184:1;20006:202:0;;;;;;;;;;-1:-1:-1;20006:202:0;;;;;:::i;:::-;;:::i;16590:127::-;;;;;;;;;;;;;:::i;13645:149::-;;;;;;;;;;;;;:::i;4494:23::-;;;;;;;;;;;;;;;;16257:192;;;;;;;;;;-1:-1:-1;16257:192:0;;;;;:::i;:::-;;:::i;5324:22::-;;;;;;;;;;-1:-1:-1;5324:22:0;;;;;;;;;;;7727:90;;;;;;;;;;-1:-1:-1;7727:90:0;;;;;:::i;:::-;;:::i;17177:128::-;;;;;;;;;;-1:-1:-1;17177:128:0;;;;;:::i;:::-;-1:-1:-1;;;;;17270:27:0;17246:4;17270:27;;;:18;:27;;;;;;;;;17177:128;8195:202;;;;;;;;;;-1:-1:-1;8195:202:0;;;;;:::i;:::-;-1:-1:-1;;;;;8313:13:0;8255:7;8313:13;;;:4;:13;;;;;;;;;8293:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8195:202;;;;;3696:25:1;;;3752:2;3737:18;;3730:34;;;;3780:18;;;3773:34;3684:2;3669:18;8195:202:0;3494:319:1;18744:100:0;;;;;;;;;;-1:-1:-1;18744:100:0;;;;;:::i;:::-;-1:-1:-1;;;;;18824:18:0;18810:4;18824:18;;;:9;:18;;;;;;;18744:100;3438:142;;;;;;;;;;;;;:::i;5464:30::-;;;;;;;;;;-1:-1:-1;5464:30:0;;;;-1:-1:-1;;;;;5464:30:0;;;6880:263;;;;;;;;;;-1:-1:-1;6880:263:0;;;;;:::i;:::-;;:::i;4564:27::-;;;;;;;;;;;;;;;;6566:160;;;;;;;;;;-1:-1:-1;6566:160:0;;;;;:::i;:::-;;:::i;16455:129::-;;;;;;;;;;-1:-1:-1;16455:129:0;;;;;:::i;:::-;;:::i;18314:78::-;;;;;;;;;;-1:-1:-1;18366:7:0;3294:6;-1:-1:-1;;;;;3294:6:0;18314:78;18654:84;5501:24;;;;;;;;;;-1:-1:-1;5501:24:0;;;;-1:-1:-1;;;;;5501:24:0;;;20762:384;;;;;;;;;;-1:-1:-1;20762:384:0;;;;;:::i;:::-;;:::i;17616:690::-;;;;;;;;;;-1:-1:-1;17616:690:0;;;;;:::i;:::-;;:::i;5141:35::-;;;;;;;;;;;;;;;;20214:334;;;;;;;;;;-1:-1:-1;20214:334:0;;;;;:::i;:::-;;:::i;5105:29::-;;;;;;;;;;;;;;;;18984:164;;;;;;;;;;-1:-1:-1;18984:164:0;;;;;:::i;:::-;;:::i;4802:27::-;;;;;;;;;;;;;;;;13092:547;;;;;;;;;;-1:-1:-1;13092:547:0;;;;;:::i;:::-;;:::i;5025:31::-;;;;;;;;;;;;;;;;12796:290;;;;;;;;;;-1:-1:-1;12796:290:0;;;;;:::i;:::-;;:::i;4598:26::-;;;;;;;;;;;;;;;;16016:106;;;;;;;;;;-1:-1:-1;16106:6:0;16065:4;16088:26;:9;:26;;;;16016:106;;5063:35;;;;;;;;;;;;;;;;4533:24;;;;;;;;;;;;;;;;12538:252;;;;;;;;;;-1:-1:-1;12538:252:0;;;;;:::i;:::-;;:::i;4631:27::-;;;;;;;;;;;;;;;;4111:35;;;;;;;;;;-1:-1:-1;4111:35:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4056:48;;;;;;;;;;-1:-1:-1;4056:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;18850:128;;;;;;;;;;-1:-1:-1;18850:128:0;;;;;:::i;:::-;-1:-1:-1;;;;;18948:19:0;;;18934:4;18948:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;18850:128;16723:251;;;;;;;;;;-1:-1:-1;16723:251:0;;;;;:::i;:::-;;:::i;4665:26::-;;;;;;;;;;;;;;;;20554:202;;;;;;;;;;-1:-1:-1;20554:202:0;;;;;:::i;:::-;;:::i;3586:236::-;;;;;;;;;;-1:-1:-1;3586:236:0;;;;;:::i;:::-;;:::i;16980:191::-;;;;;;;;;;-1:-1:-1;16980:191:0;;;;;:::i;:::-;;:::i;7823:171::-;;;;;;;;;;-1:-1:-1;7823:171:0;;;;;:::i;:::-;;:::i;5183:36::-;;;;;;;;;;;;;;;;6732:142;;;;;;;;;;-1:-1:-1;6732:142:0;;;;;:::i;:::-;;:::i;19154:158::-;19228:4;19245:37;19254:10;19266:7;19275:6;19245:8;:37::i;:::-;-1:-1:-1;19300:4:0;19154:158;;;;;:::o;18654:84::-;18709:4;4474:13;4419:1;4474:2;:13;:::i;:::-;4465:22;;:7;:22;:::i;:::-;18716:20;;18654:84;:::o;17311:299::-;3365:10;3354:7;3267;3294:6;-1:-1:-1;;;;;3294:6:0;;3229:79;3354:7;-1:-1:-1;;;;;3354:21:0;;3346:66;;;;-1:-1:-1;;;3346:66:0;;6813:2:1;3346:66:0;;;6795:21:1;;;6832:18;;;6825:30;-1:-1:-1;;;;;;;;;;;6871:18:1;;;6864:62;6943:18;;3346:66:0;;;;;;;;;17373:15:::1;::::0;:18;17365:46:::1;;;::::0;-1:-1:-1;;;17365:46:0;;7174:2:1;17365:46:0::1;::::0;::::1;7156:21:1::0;7213:2;7193:18;;;7186:30;7252:18;7232;;;7225:46;7288:18;;17365:46:0::1;6972:340:1::0;17365:46:0::1;17438:15;17422;:31:::0;17504:4:::1;4474:13;4419:1;4474:2;:13;:::i;:::-;4465:22;::::0;:7:::1;:22;:::i;:::-;17483:18;::::0;17499:2:::1;17483:18;:::i;:::-;:25;;;;:::i;:::-;17464:16;:44:::0;17564:5:::1;4474:13;4419:1;4474:2;:13;:::i;:::-;4465:22;::::0;:7:::1;:22;:::i;:::-;17542:19;::::0;17558:3:::1;17542:19;:::i;:::-;:27;;;;:::i;:::-;17519:20;:50:::0;17585:17:::1;::::0;::::1;::::0;;;::::1;17311:299::o:0;7433:288::-;3365:10;3354:7;3267;3294:6;-1:-1:-1;;;;;3294:6:0;;3229:79;3354:7;-1:-1:-1;;;;;3354:21:0;;3346:66;;;;-1:-1:-1;;;3346:66:0;;6813:2:1;3346:66:0;;;6795:21:1;;;6832:18;;;6825:30;-1:-1:-1;;;;;;;;;;;6871:18:1;;;6864:62;6943:18;;3346:66:0;6611:356:1;3346:66:0;7532:2:::1;7521:7;:13;;7513:35;;;::::0;-1:-1:-1;;;7513:35:0;;7741:2:1;7513:35:0::1;::::0;::::1;7723:21:1::0;7780:1;7760:18;;;7753:29;-1:-1:-1;;;7798:18:1;;;7791:39;7847:18;;7513:35:0::1;7539:332:1::0;7513:35:0::1;7578:5;7567:7;:16;;7559:37;;;::::0;-1:-1:-1;;;7559:37:0;;8078:2:1;7559:37:0::1;::::0;::::1;8060:21:1::0;8117:1;8097:18;;;8090:29;-1:-1:-1;;;8135:18:1;;;8128:38;8183:18;;7559:37:0::1;7876:331:1::0;7559:37:0::1;7656:5;7646:7:::0;4474:13:::1;4419:1;4474:2;:13;:::i;:::-;4465:22;::::0;:7:::1;:22;:::i;:::-;7630:23;;;;:::i;:::-;:31;;;;:::i;:::-;7607:20;:54:::0;7677:36:::1;::::0;1615:25:1;;;7677:36:0::1;::::0;1603:2:1;1588:18;7677:36:0::1;;;;;;;;7433:288:::0;:::o;19618:382::-;19715:4;19732:36;19742:6;19750:9;19761:6;19732:9;:36::i;:::-;-1:-1:-1;;;;;19803:19:0;;19779:21;19803:19;;;:11;:19;;;;;;;;19823:10;19803:31;;;;;;;;19853:26;;;;19845:59;;;;-1:-1:-1;;;19845:59:0;;8414:2:1;19845:59:0;;;8396:21:1;8453:2;8433:18;;;8426:30;8492:22;8472:18;;;8465:50;8532:18;;19845:59:0;8212:344:1;19845:59:0;19915:55;19924:6;19932:10;19944:25;19963:6;19944:16;:25;:::i;:::-;19915:8;:55::i;:::-;-1:-1:-1;19988:4:0;;19618:382;-1:-1:-1;;;;19618:382:0:o;8403:291::-;8538:12;;-1:-1:-1;;;;;8512:13:0;;8477:7;8512:13;;;:4;:13;;;;;:23;;;8477:7;;;;8512:38;;8538:12;8512:38;:::i;:::-;8497:53;;8572:15;8565:4;:22;8561:126;;;8611:22;8618:15;8611:4;:22;:::i;:::-;8604:30;8403:291;-1:-1:-1;;;8403:291:0:o;8561:126::-;-1:-1:-1;8674:1:0;;8403:291;-1:-1:-1;;8403:291:0:o;16128:123::-;16235:6;16180:4;16217:26;;;:9;:26;;;;4474:13;4419:1;4474:2;:13;:::i;:::-;4465:22;;:7;:22;:::i;:::-;16203:40;;;;:::i;8000:189::-;3365:10;3354:7;3267;3294:6;-1:-1:-1;;;;;3294:6:0;;3229:79;3354:7;-1:-1:-1;;;;;3354:21:0;;3346:66;;;;-1:-1:-1;;;3346:66:0;;6813:2:1;3346:66:0;;;6795:21:1;;;6832:18;;;6825:30;-1:-1:-1;;;;;;;;;;;6871:18:1;;;6864:62;6943:18;;3346:66:0;6611:356:1;3346:66:0;8103:8:::1;8086:13;:25;;8078:64;;;::::0;-1:-1:-1;;;8078:64:0;;9026:2:1;8078:64:0::1;::::0;::::1;9008:21:1::0;9065:2;9045:18;;;9038:30;9104:28;9084:18;;;9077:56;9150:18;;8078:64:0::1;8824:350:1::0;8078:64:0::1;8153:12;:28:::0;8000:189::o;7149:278::-;3365:10;3354:7;3267;3294:6;-1:-1:-1;;;;;3294:6:0;;3229:79;3354:7;-1:-1:-1;;;;;3354:21:0;;3346:66;;;;-1:-1:-1;;;3346:66:0;;6813:2:1;3346:66:0;;;6795:21:1;;;6832:18;;;6825:30;-1:-1:-1;;;;;;;;;;;6871:18:1;;;6864:62;6943:18;;3346:66:0;6611:356:1;3346:66:0;7251:2:::1;7240:7;:13;;7232:32;;;::::0;-1:-1:-1;;;7232:32:0;;9381:2:1;7232:32:0::1;::::0;::::1;9363:21:1::0;9420:1;9400:18;;;9393:29;-1:-1:-1;;;9438:18:1;;;9431:36;9484:18;;7232:32:0::1;9179:329:1::0;7232:32:0::1;7294:4;7283:7;:15;;7275:36;;;::::0;-1:-1:-1;;;7275:36:0;;8078:2:1;7275:36:0::1;::::0;::::1;8060:21:1::0;8117:1;8097:18;;;8090:29;-1:-1:-1;;;8135:18:1;;;8128:38;8183:18;;7275:36:0::1;7876:331:1::0;7275:36:0::1;7367:4;7357:7:::0;4474:13:::1;4419:1;4474:2;:13;:::i;:::-;4465:22;::::0;:7:::1;:22;:::i;:::-;7341:23;;;;:::i;:::-;:30;;;;:::i;:::-;7322:16;:49:::0;7387:32:::1;::::0;1615:25:1;;;7387:32:0::1;::::0;1603:2:1;1588:18;7387:32:0::1;1469:177:1::0;20006:202:0;20111:10;20085:4;20132:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;20132:32:0;;;;;;;;;;20085:4;;20102:76;;20123:7;;20132:45;;20167:10;;20132:45;:::i;16590:127::-;3365:10;3354:7;3267;3294:6;-1:-1:-1;;;;;3294:6:0;;3229:79;3354:7;-1:-1:-1;;;;;3354:21:0;;3346:66;;;;-1:-1:-1;;;3346:66:0;;6813:2:1;3346:66:0;;;6795:21:1;;;6832:18;;;6825:30;-1:-1:-1;;;;;;;;;;;6871:18:1;;;6864:62;6943:18;;3346:66:0;6611:356:1;3346:66:0;16648:24:::1;16667:4;16648:18;:24::i;:::-;16688:21;::::0;::::1;::::0;;;::::1;16590:127::o:0;13645:149::-;13692:4;13782;13762:19;;13739:22;:20;:22::i;:::-;:42;;;;:::i;:::-;:47;;;;:::i;:::-;13725:12;;-1:-1:-1;;;;;13725:12:0;13715:23;;;;:9;:23;;;;;;:71;;13645:149;-1:-1:-1;13645:149:0:o;16257:192::-;3365:10;3354:7;3267;3294:6;-1:-1:-1;;;;;3294:6:0;;3229:79;3354:7;-1:-1:-1;;;;;3354:21:0;;3346:66;;;;-1:-1:-1;;;3346:66:0;;6813:2:1;3346:66:0;;;6795:21:1;;;6832:18;;;6825:30;-1:-1:-1;;;;;;;;;;;6871:18:1;;;6864:62;6943:18;;3346:66:0;6611:356:1;3346:66:0;16338:12:::1;::::0;-1:-1:-1;;;;;16338:12:0;;::::1;16333:17:::0;;::::1;::::0;16325:62:::1;;;::::0;-1:-1:-1;;;16325:62:0;;9715:2:1;16325:62:0::1;::::0;::::1;9697:21:1::0;9754:2;9734:18;;;9727:30;9793:34;9773:18;;;9766:62;-1:-1:-1;;;9844:18:1;;;9837:31;9885:19;;16325:62:0::1;9513:397:1::0;16325:62:0::1;-1:-1:-1::0;;;;;16398:10:0;::::1;;::::0;;;:5:::1;:10;::::0;;;;;;;;:14;;-1:-1:-1;;16398:14:0::1;::::0;::::1;;;::::0;;16428:13;;160:74:1;;;16428:13:0::1;::::0;133:18:1;16428:13:0::1;;;;;;;;16257:192:::0;;:::o;7727:90::-;3365:10;3354:7;3267;3294:6;-1:-1:-1;;;;;3294:6:0;;3229:79;3354:7;-1:-1:-1;;;;;3354:21:0;;3346:66;;;;-1:-1:-1;;;3346:66:0;;6813:2:1;3346:66:0;;;6795:21:1;;;6832:18;;;6825:30;-1:-1:-1;;;;;;;;;;;6871:18:1;;;6864:62;6943:18;;3346:66:0;6611:356:1;3346:66:0;7794:9:::1;:15:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;7794:15:0;;::::1;::::0;;;::::1;::::0;;7727:90::o;3438:142::-;3365:10;3354:7;3267;3294:6;-1:-1:-1;;;;;3294:6:0;;3229:79;3354:7;-1:-1:-1;;;;;3354:21:0;;3346:66;;;;-1:-1:-1;;;3346:66:0;;6813:2:1;3346:66:0;;;6795:21:1;;;6832:18;;;6825:30;-1:-1:-1;;;;;;;;;;;6871:18:1;;;6864:62;6943:18;;3346:66:0;6611:356:1;3346:66:0;3539:1:::1;3523:6:::0;;3502:40:::1;::::0;-1:-1:-1;;;;;3523:6:0;;::::1;::::0;3502:40:::1;::::0;3539:1;;3502:40:::1;3570:1;3553:19:::0;;-1:-1:-1;;;;;;3553:19:0::1;::::0;;3438:142::o;6880:263::-;3365:10;3354:7;3267;3294:6;-1:-1:-1;;;;;3294:6:0;;3229:79;3354:7;-1:-1:-1;;;;;3354:21:0;;3346:66;;;;-1:-1:-1;;;3346:66:0;;6813:2:1;3346:66:0;;;6795:21:1;;;6832:18;;;6825:30;-1:-1:-1;;;;;;;;;;;6871:18:1;;;6864:62;6943:18;;3346:66:0;6611:356:1;3346:66:0;7004:3:::1;6977:25;6987:15:::0;6977:9;:25:::1;:::i;:::-;:30;;6969:39;;;::::0;::::1;;7019:8;:18:::0;;;7048:14:::1;:30:::0;;;7094:41:::1;::::0;;10089:25:1;;;10145:2;10130:18;;10123:34;;;7094:41:0::1;::::0;10062:18:1;7094:41:0::1;9915:248:1::0;6566:160:0;3365:10;3354:7;3267;3294:6;-1:-1:-1;;;;;3294:6:0;;3229:79;3354:7;-1:-1:-1;;;;;3354:21:0;;3346:66;;;;-1:-1:-1;;;3346:66:0;;6813:2:1;3346:66:0;;;6795:21:1;;;6832:18;;;6825:30;-1:-1:-1;;;;;;;;;;;6871:18:1;;;6864:62;6943:18;;3346:66:0;6611:356:1;3346:66:0;6645:15:::1;:25:::0;;-1:-1:-1;;;;;;6645:25:0::1;-1:-1:-1::0;;;;;6645:25:0;::::1;::::0;;::::1;::::0;;;6686:32:::1;::::0;160:74:1;;;6686:32:0::1;::::0;148:2:1;133:18;6686:32:0::1;14:226:1::0;16455:129:0;3365:10;3354:7;3267;3294:6;-1:-1:-1;;;;;3294:6:0;;3229:79;3354:7;-1:-1:-1;;;;;3354:21:0;;3346:66;;;;-1:-1:-1;;;3346:66:0;;6813:2:1;3346:66:0;;;6795:21:1;;;6832:18;;;6825:30;-1:-1:-1;;;;;;;;;;;6871:18:1;;;6864:62;6943:18;;3346:66:0;6611:356:1;3346:66:0;16523:10:::1;:17:::0;;;::::1;;;;-1:-1:-1::0;;16523:17:0;;::::1;;::::0;;16556:20:::1;::::0;::::1;::::0;::::1;::::0;16534:6;1442:14:1;1435:22;1417:41;;1405:2;1390:18;;1277:187;20762:384:0;3365:10;3354:7;3267;3294:6;-1:-1:-1;;;;;3294:6:0;;3229:79;3354:7;-1:-1:-1;;;;;3354:21:0;;3346:66;;;;-1:-1:-1;;;3346:66:0;;6813:2:1;3346:66:0;;;6795:21:1;;;6832:18;;;6825:30;-1:-1:-1;;;;;;;;;;;6871:18:1;;;6864:62;6943:18;;3346:66:0;6611:356:1;3346:66:0;-1:-1:-1;;;;;20872:24:0;::::1;20864:33;;;::::0;::::1;;20938:12;::::0;-1:-1:-1;;;;;20938:12:0;;::::1;20916:35:::0;;::::1;::::0;20908:44:::1;;;::::0;::::1;;21031:30;::::0;-1:-1:-1;;;21031:30:0;;21055:4:::1;21031:30;::::0;::::1;160:74:1::0;20985:12:0;;20963::::1;::::0;-1:-1:-1;;;;;21031:15:0;::::1;::::0;::::1;::::0;133:18:1;;21031:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21009:52:::0;-1:-1:-1;;;;;;21072:14:0;::::1;;21087:10;21132:3;21099:30;21113:16:::0;21009:52;21099:30:::1;:::i;:::-;:36;;;;:::i;:::-;21072:64;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;10549:55:1;;;21072:64:0::1;::::0;::::1;10531:74:1::0;10621:18;;;10614:34;10504:18;;21072:64:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20853:293;;20762:384:::0;;:::o;17616:690::-;17689:4;3365:10;3354:7;3267;3294:6;-1:-1:-1;;;;;3294:6:0;;3229:79;3354:7;-1:-1:-1;;;;;3354:21:0;;3346:66;;;;-1:-1:-1;;;3346:66:0;;6813:2:1;3346:66:0;;;6795:21:1;;;6832:18;;;6825:30;-1:-1:-1;;;;;;;;;;;6871:18:1;;;6864:62;6943:18;;3346:66:0;6611:356:1;3346:66:0;17724:4:::1;17713:7;:15;;17705:70;;;::::0;-1:-1:-1;;;17705:70:0;;11111:2:1;17705:70:0::1;::::0;::::1;11093:21:1::0;11150:2;11130:18;;;11123:30;11189:34;11169:18;;;11162:62;11260:12;11240:18;;;11233:40;11290:19;;17705:70:0::1;10909:406:1::0;17705:70:0::1;17809:15;17786:20;:38:::0;17881:12:::1;::::0;17866:28:::1;::::0;-1:-1:-1;;;17866:28:0;;-1:-1:-1;;;;;17881:12:0;;::::1;17866:28;::::0;::::1;160:74:1::0;17835:28:0::1;::::0;17866:4:::1;::::0;:14:::1;::::0;133:18:1;;17866:28:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17835:59:::0;-1:-1:-1;17905:20:0::1;17959:5;17928:30;17951:7:::0;17835:59;17928:30:::1;:::i;:::-;:36;;;;:::i;:::-;17905:59:::0;-1:-1:-1;17979:16:0;;17975:201:::1;;18021:12;::::0;-1:-1:-1;;;;;18021:12:0::1;18011:23;::::0;;;:9:::1;:23;::::0;;;;:37;;18036:12;;18011:23;:37:::1;::::0;18036:12;;18011:37:::1;:::i;:::-;::::0;;;-1:-1:-1;;5577:6:0::1;18063:21;::::0;;;:9:::1;:21;::::0;;:35;;18086:12;;18063:21;:35:::1;::::0;18086:12;;18063:35:::1;:::i;:::-;::::0;;;-1:-1:-1;;18127:12:0::1;::::0;18118:46:::1;::::0;1615:25:1;;;5577:6:0::1;::::0;-1:-1:-1;;;;;18127:12:0::1;::::0;18118:46:::1;::::0;1603:2:1;1588:18;18118:46:0::1;;;;;;;17975:201;18211:12;::::0;18235:11:::1;::::0;;;;;;;-1:-1:-1;;;;;18211:12:0;;::::1;::::0;;;18235:9:::1;::::0;:11:::1;::::0;;::::1;::::0;18186:13:::1;::::0;18235:11;;;;;;;18186:13;18211:12;18235:11;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;18262:14:0::1;::::0;::::1;::::0;-1:-1:-1;18262:14:0;;-1:-1:-1;18262:14:0::1;-1:-1:-1::0;18294:4:0::1;::::0;17616:690;-1:-1:-1;;;;17616:690:0:o;20214:334::-;20351:10;20298:4;20339:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;20339:32:0;;;;;;;;;;20390:35;;;;20382:60;;;;-1:-1:-1;;;20382:60:0;;11522:2:1;20382:60:0;;;11504:21:1;11561:2;11541:18;;;11534:30;11600:14;11580:18;;;11573:42;11632:18;;20382:60:0;11320:336:1;20382:60:0;20453:65;20462:10;20474:7;20483:34;20502:15;20483:16;:34;:::i;20453:65::-;-1:-1:-1;20536:4:0;;20214:334;-1:-1:-1;;;20214:334:0:o;18984:164::-;19061:4;19078:40;19088:10;19100:9;19111:6;19078:9;:40::i;13092:547::-;3365:10;3354:7;3267;3294:6;-1:-1:-1;;;;;3294:6:0;;3229:79;3354:7;-1:-1:-1;;;;;3354:21:0;;3346:66;;;;-1:-1:-1;;;3346:66:0;;6813:2:1;3346:66:0;;;6795:21:1;;;6832:18;;;6825:30;-1:-1:-1;;;;;;;;;;;6871:18:1;;;6864:62;6943:18;;3346:66:0;6611:356:1;3346:66:0;13205:11:::1;13217:33;5014:2;4971:4;13217:33;:::i;:::-;13205:45;;13274:6;13269:3;:11;;:25;;;;;13288:6;13282:4;:12;;13269:25;:44;;;;;13307:6;13296:9;:17;;13269:44;13261:74;;;::::0;-1:-1:-1;;;13261:74:0;;11863:2:1;13261:74:0::1;::::0;::::1;11845:21:1::0;11902:2;11882:18;;;11875:30;11941:20;11921:18;;;11914:48;11979:18;;13261:74:0::1;11661:342:1::0;13261:74:0::1;4971:4;13354:17;13362:9:::0;13354:7;:17:::1;:::i;:::-;:34;13346:79;;;::::0;-1:-1:-1;;;13346:79:0;;12210:2:1;13346:79:0::1;::::0;::::1;12192:21:1::0;12249:2;12229:18;;;12222:30;12288:34;12268:18;;;12261:62;-1:-1:-1;;;12339:18:1;;;12332:31;12380:19;;13346:79:0::1;12008:397:1::0;13346:79:0::1;13436:6;:10:::0;;;13457:7:::1;:12:::0;;;13480:11:::1;:21:::0;;;13512:10:::1;:18:::0;;;13541:12:::1;:22:::0;;;13579:52:::1;::::0;;12669:25:1;;;12725:2;12710:18;;12703:34;;;12753:18;;;12746:34;;;12811:2;12796:18;;12789:34;;;12854:3;12839:19;;12832:35;;;13579:52:0::1;::::0;12656:3:1;12641:19;13579:52:0::1;;;;;;;13194:445;13092:547:::0;;;;;:::o;12796:290::-;3365:10;3354:7;3267;3294:6;-1:-1:-1;;;;;3294:6:0;;3229:79;3354:7;-1:-1:-1;;;;;3354:21:0;;3346:66;;;;-1:-1:-1;;;3346:66:0;;6813:2:1;3346:66:0;;;6795:21:1;;;6832:18;;;6825:30;-1:-1:-1;;;;;;;;;;;6871:18:1;;;6864:62;6943:18;;3346:66:0;6611:356:1;3346:66:0;12936:4:::1;12904:30;:36;;12896:45;;;::::0;::::1;;12952:19;:50:::0;;;13018:60:::1;::::0;1615:25:1;;;13018:60:0::1;::::0;1603:2:1;1588:18;13018:60:0::1;1469:177:1::0;12538:252:0;3365:10;3354:7;3267;3294:6;-1:-1:-1;;;;;3294:6:0;;3229:79;3354:7;-1:-1:-1;;;;;3354:21:0;;3346:66;;;;-1:-1:-1;;;3346:66:0;;6813:2:1;3346:66:0;;;6795:21:1;;;6832:18;;;6825:30;-1:-1:-1;;;;;;;;;;;6871:18:1;;;6864:62;6943:18;;3346:66:0;6611:356:1;3346:66:0;12655:2:::1;12630:23;:27;;12622:36;;;::::0;::::1;;12686:12;:36:::0;;;12738:44:::1;::::0;1615:25:1;;;12738:44:0::1;::::0;1603:2:1;1588:18;12738:44:0::1;1469:177:1::0;16723:251:0;3365:10;3354:7;3267;3294:6;-1:-1:-1;;;;;3294:6:0;;3229:79;3354:7;-1:-1:-1;;;;;3354:21:0;;3346:66;;;;-1:-1:-1;;;3346:66:0;;6813:2:1;3346:66:0;;;6795:21:1;;;6832:18;;;6825:30;-1:-1:-1;;;;;;;;;;;6871:18:1;;;6864:62;6943:18;;3346:66:0;6611:356:1;3346:66:0;16840:4:::1;-1:-1:-1::0;;;;;16823:22:0;::::1;::::0;16815:60:::1;;;::::0;-1:-1:-1;;;16815:60:0;;13080:2:1;16815:60:0::1;::::0;::::1;13062:21:1::0;13119:2;13099:18;;;13092:30;13158:28;13138:18;;;13131:56;13204:18;;16815:60:0::1;12878:350:1::0;16815:60:0::1;-1:-1:-1::0;;;;;16886:25:0;::::1;;::::0;;;:16:::1;:25;::::0;;;;;;;;:33;;-1:-1:-1;;16886:33:0::1;::::0;::::1;;::::0;;::::1;::::0;;;16935:31;;13401:74:1;;;13491:18;;;13484:50;16935:31:0::1;::::0;13374:18:1;16935:31:0::1;13233:307:1::0;20554:202:0;3365:10;3354:7;3267;3294:6;-1:-1:-1;;;;;3294:6:0;;3229:79;3354:7;-1:-1:-1;;;;;3354:21:0;;3346:66;;;;-1:-1:-1;;;3346:66:0;;6813:2:1;3346:66:0;;;6795:21:1;;;6832:18;;;6825:30;-1:-1:-1;;;;;;;;;;;6871:18:1;;;6864:62;6943:18;;3346:66:0;6611:356:1;3346:66:0;20652:21:::1;20692:10;20684:64;20744:3;20713:28;20725:16:::0;20652:21;20713:28:::1;:::i;:::-;:34;;;;:::i;:::-;20684:64;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;20621:135;20554:202:::0;:::o;3586:236::-;3365:10;3354:7;3267;3294:6;-1:-1:-1;;;;;3294:6:0;;3229:79;3354:7;-1:-1:-1;;;;;3354:21:0;;3346:66;;;;-1:-1:-1;;;3346:66:0;;6813:2:1;3346:66:0;;;6795:21:1;;;6832:18;;;6825:30;-1:-1:-1;;;;;;;;;;;6871:18:1;;;6864:62;6943:18;;3346:66:0;6611:356:1;3346:66:0;-1:-1:-1;;;;;3667:22:0;::::1;3659:73;;;::::0;-1:-1:-1;;;3659:73:0;;13747:2:1;3659:73:0::1;::::0;::::1;13729:21:1::0;13786:2;13766:18;;;13759:30;13825:34;13805:18;;;13798:62;-1:-1:-1;;;13876:18:1;;;13869:36;13922:19;;3659:73:0::1;13545:402:1::0;3659:73:0::1;3769:6;::::0;;3748:38:::1;::::0;-1:-1:-1;;;;;3748:38:0;;::::1;::::0;3769:6;::::1;::::0;3748:38:::1;::::0;::::1;3797:6;:17:::0;;-1:-1:-1;;;;;;3797:17:0::1;-1:-1:-1::0;;;;;3797:17:0;;;::::1;::::0;;;::::1;::::0;;3586:236::o;16980:191::-;3365:10;3354:7;3267;3294:6;-1:-1:-1;;;;;3294:6:0;;3229:79;3354:7;-1:-1:-1;;;;;3354:21:0;;3346:66;;;;-1:-1:-1;;;3346:66:0;;6813:2:1;3346:66:0;;;6795:21:1;;;6832:18;;;6825:30;-1:-1:-1;;;;;;;;;;;6871:18:1;;;6864:62;6943:18;;3346:66:0;6611:356:1;3346:66:0;-1:-1:-1;;;;;17078:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;;;;;:35;;-1:-1:-1;;17078:35:0::1;::::0;::::1;;::::0;;::::1;::::0;;;17129:34;;13401:74:1;;;13491:18;;;13484:50;17129:34:0::1;::::0;13374:18:1;17129:34:0::1;13233:307:1::0;7823:171:0;3365:10;3354:7;3267;3294:6;-1:-1:-1;;;;;3294:6:0;;3229:79;3354:7;-1:-1:-1;;;;;3354:21:0;;3346:66;;;;-1:-1:-1;;;3346:66:0;;6813:2:1;3346:66:0;;;6795:21:1;;;6832:18;;;6825:30;-1:-1:-1;;;;;;;;;;;6871:18:1;;;6864:62;6943:18;;3346:66:0;6611:356:1;3346:66:0;7919:5:::1;7908:7;:16;;7900:49;;;::::0;-1:-1:-1;;;7900:49:0;;14154:2:1;7900:49:0::1;::::0;::::1;14136:21:1::0;14193:2;14173:18;;;14166:30;14232:22;14212:18;;;14205:50;14272:18;;7900:49:0::1;13952:344:1::0;7900:49:0::1;7960:16;:26:::0;7823:171::o;6732:142::-;3365:10;3354:7;3267;3294:6;-1:-1:-1;;;;;3294:6:0;;3229:79;3354:7;-1:-1:-1;;;;;3354:21:0;;3346:66;;;;-1:-1:-1;;;3346:66:0;;6813:2:1;3346:66:0;;;6795:21:1;;;6832:18;;;6825:30;-1:-1:-1;;;;;;;;;;;6871:18:1;;;6864:62;6943:18;;3346:66:0;6611:356:1;3346:66:0;6805:9:::1;:19:::0;;-1:-1:-1;;;;;;6805:19:0::1;-1:-1:-1::0;;;;;6805:19:0;::::1;::::0;;::::1;::::0;;;6840:26:::1;::::0;160:74:1;;;6840:26:0::1;::::0;148:2:1;133:18;6840:26:0::1;14:226:1::0;19318:294:0;-1:-1:-1;;;;;19408:19:0;;19400:49;;;;-1:-1:-1;;;19400:49:0;;14503:2:1;19400:49:0;;;14485:21:1;14542:2;14522:18;;;14515:30;14581:19;14561:18;;;14554:47;14618:18;;19400:49:0;14301:341:1;19400:49:0;-1:-1:-1;;;;;19468:21:0;;19460:49;;;;-1:-1:-1;;;19460:49:0;;14849:2:1;19460:49:0;;;14831:21:1;14888:2;14868:18;;;14861:30;14927:17;14907:18;;;14900:45;14962:18;;19460:49:0;14647:339:1;19460:49:0;-1:-1:-1;;;;;19520:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;19572:32;;1615:25:1;;;19572:32:0;;1588:18:1;19572:32:0;;;;;;;19318:294;;;:::o;8700:501::-;-1:-1:-1;;;;;8793:20:0;;8785:51;;;;-1:-1:-1;;;8785:51:0;;15193:2:1;8785:51:0;;;15175:21:1;15232:2;15212:18;;;15205:30;15271:20;15251:18;;;15244:48;15309:18;;8785:51:0;14991:342:1;8785:51:0;-1:-1:-1;;;;;8855:23:0;;8847:52;;;;-1:-1:-1;;;8847:52:0;;15540:2:1;8847:52:0;;;15522:21:1;15579:2;15559:18;;;15552:30;15618:18;15598;;;15591:46;15654:18;;8847:52:0;15338:340:1;8847:52:0;-1:-1:-1;;;;;8913:24:0;;;;;;:16;:24;;;;;;;;;:55;;-1:-1:-1;;;;;;8941:27:0;;;;;;:16;:27;;;;;;;;8913:55;8910:284;;;8983:43;9000:6;9008:9;9019:6;8983:16;:43::i;8910:284::-;9082:1;9066:15;;:17;9058:52;;;;-1:-1:-1;;;9058:52:0;;15885:2:1;9058:52:0;;;15867:21:1;15924:2;15904:18;;;15897:30;15963:25;15943:18;;;15936:53;16006:18;;9058:52:0;15683:347:1;9058:52:0;9125:39;9140:6;9147:9;9157:6;9125:14;:39::i;13800:1389::-;5709:27;:34;;-1:-1:-1;;5709:34:0;5739:4;5709:34;;;;;;13916:4:::1;5709:27:::0;13898:24;;;::::1;::::0;;;;;;;;13960:10:::1;::::0;13947:12:::1;::::0;13898:24;;5709:27;13947:23:::1;::::0;13960:10;13947:23:::1;:::i;:::-;14022:12;::::0;14008::::1;::::0;-1:-1:-1;;;;;14008:12:0::1;13981:16;13998:23:::0;;;:9:::1;:23;::::0;;;;;13933:37;;-1:-1:-1;13981:16:0;14035:4:::1;::::0;13998:36:::1;::::0;::::1;:::i;:::-;:41;;;;:::i;:::-;13981:58;;14053:8;14063:1;14053:11:::0;14050:22:::1;;14065:7;;;;;14050:22;14085:12;14082:134;;;-1:-1:-1::0;14142:4:0::1;14124:24;::::0;;;:9:::1;:24;::::0;;;;;14082:134:::1;;;14183:11;14167:15;:27;14164:52;;;14209:7;;;;;14164:52;14228:22;14261:17;:15;:17::i;:::-;:65;;14318:8;14304:12;;14292:11;:24;;;;:::i;:::-;14291:35;;;;:::i;:::-;14261:65;;;14279:1;14261:65;14228:98:::0;-1:-1:-1;14339:20:0::1;14361:29;14228:98:::0;14361:11;:29:::1;:::i;:::-;14339:51:::0;-1:-1:-1;14403:12:0::1;14416:19;14434:1;14416:17:::0;:19:::1;:::i;:::-;14403:32:::0;-1:-1:-1;14446:14:0::1;14461:23;14469:15:::0;14403:32;14461:23:::1;:::i;:::-;14446:38:::0;-1:-1:-1;14518:21:0::1;14550:27;14446:38:::0;14550:16:::1;:27::i;:::-;14588:11;14601:41;14625:17:::0;14601:21:::1;:41;:::i;:::-;14588:55:::0;-1:-1:-1;14659:19:0;;14656:135:::1;;14694:11;14725:9:::0;14709:14:::1;14716:7:::0;14709:6;:14:::1;:::i;:::-;14708:26;;;;:::i;:::-;14694:40;;14749:30;14763:7;14772:6;14749:13;:30::i;:::-;14679:112;14656:135;14801:18;14859:3;14844:14;;14820:21;:38;;;;:::i;:::-;:42;;;;:::i;:::-;14801:61;;14873:15;14922:3;14913:8;;14889:21;:32;;;;:::i;:::-;:36;;;;:::i;:::-;14873:52:::0;-1:-1:-1;14939:15:0;;14936:130:::1;;14984:15;::::0;:45:::1;::::0;14967:14:::1;::::0;-1:-1:-1;;;;;14984:15:0::1;::::0;15011:13;;14967:14;14984:45;14967:14;14984:45;15011:13;14984:15;:45:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;14936:130:0::1;15079:12:::0;;15076:106:::1;;15115:9;::::0;:36:::1;::::0;15104:8:::1;::::0;-1:-1:-1;;;;;15115:9:0::1;::::0;15136:10;;15104:8;15115:36;15104:8;15115:36;15136:10;15115:9;:36:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;15076:106:0::1;13866:1323;;;;;;;;;;;5754:1;-1:-1:-1::0;5766:27:0;:35;;-1:-1:-1;;5766:35:0;;;13800:1389::o;12193:339::-;-1:-1:-1;;;;;12306:17:0;;12285:18;12306:17;;;:9;:17;;;;;;12342:23;;;;12334:60;;;;-1:-1:-1;;;12334:60:0;;16447:2:1;12334:60:0;;;16429:21:1;16486:2;16466:18;;;16459:30;16525:26;16505:18;;;16498:54;16569:18;;12334:60:0;16245:348:1;12334:60:0;-1:-1:-1;;;;;12405:17:0;;;;;;:9;:17;;;;;:25;;12424:6;;12405:17;:25;;12424:6;;12405:25;:::i;:::-;;;;-1:-1:-1;;;;;;;12441:20:0;;;;;;:9;:20;;;;;:28;;12463:6;;12441:20;:28;;12463:6;;12441:28;:::i;:::-;;;;;;;;12507:9;-1:-1:-1;;;;;12491:33:0;12500:6;-1:-1:-1;;;;;12491:33:0;;12517:6;12491:33;;;;1615:25:1;;1603:2;1588:18;;1469:177;12491:33:0;;;;;;;;12274:258;12193:339;;;:::o;9213:2792::-;-1:-1:-1;;;;;9324:17:0;;9303:18;9324:17;;;:9;:17;;;;;;9360:23;;;;9352:60;;;;-1:-1:-1;;;9352:60:0;;16447:2:1;9352:60:0;;;16429:21:1;16486:2;16466:18;;;16459:30;16525:26;16505:18;;;16498:54;16569:18;;9352:60:0;16245:348:1;9352:60:0;-1:-1:-1;;;;;9446:26:0;;9423:20;9446:26;;;:18;:26;;;;;;;;;:59;;-1:-1:-1;;;;;;9476:29:0;;;;;;:18;:29;;;;;;;;9446:59;-1:-1:-1;;;;;9520:13:0;;;;;;:5;:13;;;;;;9423:82;;-1:-1:-1;9520:13:0;;:46;;;;;9551:15;9550:16;9520:46;9516:642;;;9619:20;;9609:6;:30;;9583:132;;;;-1:-1:-1;;;9583:132:0;;16800:2:1;9583:132:0;;;16782:21:1;16839:2;16819:18;;;16812:30;16878:34;16858:18;;;16851:62;-1:-1:-1;;;16929:18:1;;;16922:38;16977:19;;9583:132:0;16598:404:1;9583:132:0;-1:-1:-1;;;;;18824:18:0;;9730:32;18824:18;;;:9;:18;;;;;;9863:16;;9826:33;9853:6;18824:18;9826:33;:::i;:::-;:53;;9800:151;;;;-1:-1:-1;;;9800:151:0;;17209:2:1;9800:151:0;;;17191:21:1;17248:2;17228:18;;;17221:30;17287:34;17267:18;;;17260:62;-1:-1:-1;;;17338:18:1;;;17331:34;17382:19;;9800:151:0;17007:400:1;9800:151:0;9568:395;9516:642;;;-1:-1:-1;;;;;9987:16:0;;;;;;:5;:16;;;;;;;;:49;;;;;10021:15;10020:16;9987:49;9969:189;;;10081:20;;10071:6;:30;;10063:83;;;;-1:-1:-1;;;10063:83:0;;16800:2:1;10063:83:0;;;16782:21:1;16839:2;16819:18;;;16812:30;16878:34;16858:18;;;16851:62;-1:-1:-1;;;16929:18:1;;;16922:38;16977:19;;10063:83:0;16598:404:1;10063:83:0;-1:-1:-1;;;;;10181:13:0;;;10170:10;10181:13;;;:5;:13;;;;;;;10217:16;;;;;;;;10181:13;;;;;10217:16;;10263:1289;;;;10291:9;;;;;;;10288:860;;;10356:12;;-1:-1:-1;;;;;10331:12:0;;;;;;:4;:12;;;;;:22;;;10371:15;;10331:37;;;:::i;:::-;:55;10328:789;;;-1:-1:-1;;;;;10438:12:0;;10419:16;10438:12;;;:4;:12;;;;;:17;:26;;10458:6;;10438:26;:::i;:::-;-1:-1:-1;;;;;10515:12:0;;;;;;:4;:12;;;;;:22;;;10419:45;;-1:-1:-1;10503:34:0;;;10495:81;;;;-1:-1:-1;;;10495:81:0;;17614:2:1;10495:81:0;;;17596:21:1;17653:2;17633:18;;;17626:30;17692:34;17672:18;;;17665:62;-1:-1:-1;;;17743:18:1;;;17736:32;17785:19;;10495:81:0;17412:398:1;10495:81:0;10611:7;;-1:-1:-1;;;;;10649:12:0;;;;;;:4;:12;;;;;:28;;;;10611:7;-1:-1:-1;10263:1289:0;;10328:789;-1:-1:-1;10746:7:0;;10826:16;;10846:5;;4474:13;4419:1;4474:2;:13;:::i;:::-;4465:22;;:7;:22;:::i;:::-;10810:32;;;;:::i;:::-;10809:42;;;;:::i;:::-;-1:-1:-1;;;;;10784:12:0;;;;;;:4;:12;;;;;:22;;:67;;;10890:32;;;10882:79;;;;-1:-1:-1;;;10882:79:0;;17614:2:1;10882:79:0;;;17596:21:1;17653:2;17633:18;;;17626:30;17692:34;17672:18;;;17665:62;-1:-1:-1;;;17743:18:1;;;17736:32;17785:19;;10882:79:0;17412:398:1;10882:79:0;-1:-1:-1;;;;;10992:12:0;;;;;;:4;:12;;;;;:26;;;11074:15;11049:22;;;;:40;10263:1289;;10288:860;-1:-1:-1;11141:7:0;;10263:1289;;;11168:5;11165:387;;;-1:-1:-1;11193:6:0;;11165:387;;;11239:9;;;;;;;11238:10;11230:43;;;;-1:-1:-1;;;11230:43:0;;18017:2:1;11230:43:0;;;17999:21:1;18056:2;18036:18;;;18029:30;18095:22;18075:18;;;18068:50;18135:18;;11230:43:0;17815:344:1;11230:43:0;-1:-1:-1;;;;;18824:18:0;;11289:32;18824:18;;;:9;:18;;;;;;11422:16;;11385:33;11412:6;18824:18;11385:33;:::i;:::-;:53;;11359:151;;;;-1:-1:-1;;;11359:151:0;;17209:2:1;11359:151:0;;;17191:21:1;17248:2;17228:18;;;17221:30;17287:34;17267:18;;;17260:62;-1:-1:-1;;;17338:18:1;;;17331:34;17382:19;;11359:151:0;17007:400:1;11359:151:0;-1:-1:-1;;11529:11:0;;11165:387;11576:12;;-1:-1:-1;;;;;11568:20:0;;;11576:12;;11568:20;;;;11567:37;;-1:-1:-1;11593:10:0;;;;;;;11592:11;11567:37;:69;;;;-1:-1:-1;11608:27:0;;;;11607:28;11567:69;11564:112;;;11651:25;11670:5;11651:18;:25::i;:::-;11689:18;11708:51;11722:6;11730:3;11746:12;;11735:10;;:23;;;;:::i;:::-;11708:13;:51::i;:::-;11689:70;-1:-1:-1;11770:16:0;11787:22;11689:70;11787:6;:22;:::i;:::-;-1:-1:-1;;;;;11822:17:0;;;;;;:9;:17;;;;;:25;;11770:39;;-1:-1:-1;11841:6:0;;11822:17;;;:25;;11841:6;;11822:25;:::i;:::-;;;;-1:-1:-1;;11876:4:0;11858:24;;;;:9;:24;;;;;:41;;11886:13;;11858:24;:41;;11886:13;;11858:41;:::i;:::-;;;;-1:-1:-1;;;;;;;11910:20:0;;;;;;:9;:20;;;;;:33;;11932:11;;11910:20;:33;;11932:11;;11910:33;:::i;:::-;;;;;;;;11975:9;-1:-1:-1;;;;;11959:38:0;11968:6;-1:-1:-1;;;;;11959:38:0;;11985:11;11959:38;;;;1615:25:1;;1603:2;1588:18;;1469:177;11959:38:0;;;;;;;;9292:2713;;;;;;;9213:2792;;;:::o;15195:462::-;15285:10;;15253:52;;15270:4;;15285:10;;;-1:-1:-1;;;;;15285:10:0;15298:6;15253:8;:52::i;:::-;15340:16;;;15354:1;15340:16;;;;;;;;15316:21;;15340:16;;;;;;;;;;-1:-1:-1;15340:16:0;15316:40;;15385:4;15367;15372:1;15367:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;15367:23:0;;;-1:-1:-1;;;;;15367:23:0;;;;;15411:10;;;;;;;;;-1:-1:-1;;;;;15411:10:0;-1:-1:-1;;;;;15411:15:0;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15401:4;15406:1;15401:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15401:27:0;;;:7;;;;;;;;;:27;15445:10;;:186;;-1:-1:-1;;;15445:186:0;;:10;;;;;;;;:61;;:186;;15521:6;;15542:1;;15558:4;;15585;;15605:15;;15445:186;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15242:415;15195:462;:::o;15663:347::-;15771:10;;15739:57;;15756:4;;15771:10;;;-1:-1:-1;;;;;15771:10:0;15784:11;15739:8;:57::i;:::-;15807:10;;15952:9;;15807:195;;-1:-1:-1;;;15807:195:0;;15874:4;15807:195;;;20079:34:1;20129:18;;;20122:34;;;15920:1:0;20172:18:1;;;20165:34;;;20215:18;;;20208:34;-1:-1:-1;;;;;15952:9:0;;;20258:19:1;;;20251:44;15976:15:0;20311:19:1;;;20304:35;15807:10:0;;;;;;:26;;15841:9;;19990:19:1;;15807:195:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;12011:176::-;12096:4;12147:31;4971:4;;12147:31;:::i;:::-;12132:10;12121;12128:3;12121:6;:10;:::i;:::-;:21;;;;:::i;:::-;12120:59;;;;:::i;:::-;12113:66;12011:176;-1:-1:-1;;;;12011:176:0:o;245:548:1:-;357:4;386:2;415;404:9;397:21;447:6;441:13;490:6;485:2;474:9;470:18;463:34;515:1;525:140;539:6;536:1;533:13;525:140;;;634:14;;;630:23;;624:30;600:17;;;619:2;596:26;589:66;554:10;;525:140;;;529:3;714:1;709:2;700:6;689:9;685:22;681:31;674:42;784:2;777;773:7;768:2;760:6;756:15;752:29;741:9;737:45;733:54;725:62;;;;245:548;;;;:::o;798:154::-;-1:-1:-1;;;;;877:5:1;873:54;866:5;863:65;853:93;;942:1;939;932:12;853:93;798:154;:::o;957:315::-;1025:6;1033;1086:2;1074:9;1065:7;1061:23;1057:32;1054:52;;;1102:1;1099;1092:12;1054:52;1141:9;1128:23;1160:31;1185:5;1160:31;:::i;:::-;1210:5;1262:2;1247:18;;;;1234:32;;-1:-1:-1;;;957:315:1:o;1651:180::-;1710:6;1763:2;1751:9;1742:7;1738:23;1734:32;1731:52;;;1779:1;1776;1769:12;1731:52;-1:-1:-1;1802:23:1;;1651:180;-1:-1:-1;1651:180:1:o;1836:456::-;1913:6;1921;1929;1982:2;1970:9;1961:7;1957:23;1953:32;1950:52;;;1998:1;1995;1988:12;1950:52;2037:9;2024:23;2056:31;2081:5;2056:31;:::i;:::-;2106:5;-1:-1:-1;2163:2:1;2148:18;;2135:32;2176:33;2135:32;2176:33;:::i;:::-;1836:456;;2228:7;;-1:-1:-1;;;2282:2:1;2267:18;;;;2254:32;;1836:456::o;2297:247::-;2356:6;2409:2;2397:9;2388:7;2384:23;2380:32;2377:52;;;2425:1;2422;2415:12;2377:52;2464:9;2451:23;2483:31;2508:5;2483:31;:::i;2738:118::-;2824:5;2817:13;2810:21;2803:5;2800:32;2790:60;;2846:1;2843;2836:12;2861:382;2926:6;2934;2987:2;2975:9;2966:7;2962:23;2958:32;2955:52;;;3003:1;3000;2993:12;2955:52;3042:9;3029:23;3061:31;3086:5;3061:31;:::i;:::-;3111:5;-1:-1:-1;3168:2:1;3153:18;;3140:32;3181:30;3140:32;3181:30;:::i;:::-;3230:7;3220:17;;;2861:382;;;;;:::o;3248:241::-;3304:6;3357:2;3345:9;3336:7;3332:23;3328:32;3325:52;;;3373:1;3370;3363:12;3325:52;3412:9;3399:23;3431:28;3453:5;3431:28;:::i;3818:248::-;3886:6;3894;3947:2;3935:9;3926:7;3922:23;3918:32;3915:52;;;3963:1;3960;3953:12;3915:52;-1:-1:-1;;3986:23:1;;;4056:2;4041:18;;;4028:32;;-1:-1:-1;3818:248:1:o;4071:454::-;4166:6;4174;4182;4190;4198;4251:3;4239:9;4230:7;4226:23;4222:33;4219:53;;;4268:1;4265;4258:12;4219:53;-1:-1:-1;;4291:23:1;;;4361:2;4346:18;;4333:32;;-1:-1:-1;4412:2:1;4397:18;;4384:32;;4463:2;4448:18;;4435:32;;-1:-1:-1;4514:3:1;4499:19;4486:33;;-1:-1:-1;4071:454:1;-1:-1:-1;4071:454:1:o;4530:388::-;4598:6;4606;4659:2;4647:9;4638:7;4634:23;4630:32;4627:52;;;4675:1;4672;4665:12;4627:52;4714:9;4701:23;4733:31;4758:5;4733:31;:::i;:::-;4783:5;-1:-1:-1;4840:2:1;4825:18;;4812:32;4853:33;4812:32;4853:33;:::i;4923:127::-;4984:10;4979:3;4975:20;4972:1;4965:31;5015:4;5012:1;5005:15;5039:4;5036:1;5029:15;5055:422;5144:1;5187:5;5144:1;5201:270;5222:7;5212:8;5209:21;5201:270;;;5281:4;5277:1;5273:6;5269:17;5263:4;5260:27;5257:53;;;5290:18;;:::i;:::-;5340:7;5330:8;5326:22;5323:55;;;5360:16;;;;5323:55;5439:22;;;;5399:15;;;;5201:270;;;5205:3;5055:422;;;;;:::o;5482:806::-;5531:5;5561:8;5551:80;;-1:-1:-1;5602:1:1;5616:5;;5551:80;5650:4;5640:76;;-1:-1:-1;5687:1:1;5701:5;;5640:76;5732:4;5750:1;5745:59;;;;5818:1;5813:130;;;;5725:218;;5745:59;5775:1;5766:10;;5789:5;;;5813:130;5850:3;5840:8;5837:17;5834:43;;;5857:18;;:::i;:::-;-1:-1:-1;;5913:1:1;5899:16;;5928:5;;5725:218;;6027:2;6017:8;6014:16;6008:3;6002:4;5999:13;5995:36;5989:2;5979:8;5976:16;5971:2;5965:4;5962:12;5958:35;5955:77;5952:159;;;-1:-1:-1;6064:19:1;;;6096:5;;5952:159;6143:34;6168:8;6162:4;6143:34;:::i;:::-;6213:6;6209:1;6205:6;6201:19;6192:7;6189:32;6186:58;;;6224:18;;:::i;:::-;6262:20;;5482:806;-1:-1:-1;;;5482:806:1:o;6293:140::-;6351:5;6380:47;6421:4;6411:8;6407:19;6401:4;6380:47;:::i;6438:168::-;6511:9;;;6542;;6559:15;;;6553:22;;6539:37;6529:71;;6580:18;;:::i;7317:217::-;7357:1;7383;7373:132;;7427:10;7422:3;7418:20;7415:1;7408:31;7462:4;7459:1;7452:15;7490:4;7487:1;7480:15;7373:132;-1:-1:-1;7519:9:1;;7317:217::o;8561:128::-;8628:9;;;8649:11;;;8646:37;;;8663:18;;:::i;8694:125::-;8759:9;;;8780:10;;;8777:36;;;8793:18;;:::i;10168:184::-;10238:6;10291:2;10279:9;10270:7;10266:23;10262:32;10259:52;;;10307:1;10304;10297:12;10259:52;-1:-1:-1;10330:16:1;;10168:184;-1:-1:-1;10168:184:1:o;10659:245::-;10726:6;10779:2;10767:9;10758:7;10754:23;10750:32;10747:52;;;10795:1;10792;10785:12;10747:52;10827:9;10821:16;10846:28;10868:5;10846:28;:::i;18296:127::-;18357:10;18352:3;18348:20;18345:1;18338:31;18388:4;18385:1;18378:15;18412:4;18409:1;18402:15;18428:251;18498:6;18551:2;18539:9;18530:7;18526:23;18522:32;18519:52;;;18567:1;18564;18557:12;18519:52;18599:9;18593:16;18618:31;18643:5;18618:31;:::i;18684:1026::-;18946:4;18994:3;18983:9;18979:19;19025:6;19014:9;19007:25;19051:2;19089:6;19084:2;19073:9;19069:18;19062:34;19132:3;19127:2;19116:9;19112:18;19105:31;19156:6;19191;19185:13;19222:6;19214;19207:22;19260:3;19249:9;19245:19;19238:26;;19299:2;19291:6;19287:15;19273:29;;19320:1;19330:218;19344:6;19341:1;19338:13;19330:218;;;19409:13;;-1:-1:-1;;;;;19405:62:1;19393:75;;19523:15;;;;19488:12;;;;19366:1;19359:9;19330:218;;;-1:-1:-1;;;;;;;19604:55:1;;;;19599:2;19584:18;;19577:83;-1:-1:-1;;;19691:3:1;19676:19;19669:35;19565:3;18684:1026;-1:-1:-1;;;18684:1026:1:o;20350:306::-;20438:6;20446;20454;20507:2;20495:9;20486:7;20482:23;20478:32;20475:52;;;20523:1;20520;20513:12;20475:52;20552:9;20546:16;20536:26;;20602:2;20591:9;20587:18;20581:25;20571:35;;20646:2;20635:9;20631:18;20625:25;20615:35;;20350:306;;;;;:::o

Swarm Source

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