ETH Price: $3,288.51 (+2.25%)
 

Overview

Max Total Supply

1,000,000,000 NINU

Holders

36

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
14,107,500 NINU

Value
$0.00
0x16938980810B2901222963C932943F7A23a52998
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:
NIHON

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 300 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/**
 *Submitted for verification at Etherscan.io on 2022-11-28
*/

// SPDX-License-Identifier: UNLICENSED
// ALL RIGHTS RESERVED

pragma solidity =0.8.17;

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

pragma solidity =0.8.17;
contract NIHON is IERC20, Ownable  
{
    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 => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch
    bool public transferDelayEnabled = true;
    
    string private constant _name = 'Nihon Inu';
    string private constant _symbol = 'NINU';

    uint8 private constant _decimals=18;

    uint private constant InitialSupply=10**9 * 10**_decimals;
    uint public buyTax = 50; //10=1%  
    uint public sellTax = 350;
    uint public transferTax = 0;
    uint public liquidityTax= 0;
    uint public Tax= 1000; // lp+tax must equal 1000 // 1000=100%
    uint public swapTreshold=10; //Dynamic Swap Threshold based on price impact. 1=0.1% max 10
    uint public overLiquifyTreshold=100;
    uint public LaunchTimestamp;
    uint private devFee=100; //devfee+marketingfee must = 100 
    uint private marketingFee= 0;
    uint constant TAX_DENOMINATOR=1000;
    uint constant MAXTAXDENOMINATOR=10;

    uint256 public maxWalletBalance;
    uint256 public maxTransactionAmount;
    uint256 public percentForLPBurn = 25; // 25 = .25%
    uint256 public lpBurnFrequency = 3600 seconds;
    uint256 public lastLpBurnTime;
    uint256 public manualBurnFrequency = 30 minutes;
    uint256 public lastManualLpBurnTime;

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

    IDexRouter private  _DexRouter;

    address private _PairAddress; 
    address public marketingWallet;
    address public devWallet; 
    address public constant burnWallet=address(0xdead);
    address private constant DexRouter= 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; 
    
    event ManualNukeLP();
    event AutoNukeLP();
    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 OnReleaseLP();
    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);
    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= msg.sender; // address(0xdead)
        devWallet= msg.sender; // msg.sendger

        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 _devFee, uint _marketingFee) external onlyOwner{
        require(_devFee+_marketingFee<=100);
        devFee=_devFee;
        marketingFee=_marketingFee;
        emit SharesUpdated(_devFee, _marketingFee);
    }
    function setRestrictionPercents(uint256 WALpercent, uint256 TXNpercent) external onlyOwner {
        require(WALpercent >= 10, "min 1%"); // 10=1%
        require(WALpercent <= 1000, "max 100%");
        maxWalletBalance = InitialSupply * WALpercent / 1000;
        require(TXNpercent >= 25, "min 0.25%");
        require(TXNpercent <= 10000, "max 100%"); // 100=1%
        maxTransactionAmount = InitialSupply * TXNpercent / 10000;
        emit MaxWalletBalanceUpdated(WALpercent);
        emit MaxTransactionAmountUpdated(TXNpercent);
    }

    function removeAllRestrictions() external onlyOwner {
        maxWalletBalance = InitialSupply;
        maxTransactionAmount = InitialSupply;
        transferDelayEnabled = false;
    }
    function removetransferdelay() external onlyOwner {
        transferDelayEnabled = false;
    }    
    function _transfer(address sender, address recipient, uint amount) private{
        require(sender != address(0), "Transfer from zero");
        require(recipient != address(0), "Transfer to zero");
         if (transferDelayEnabled){
                    if (recipient != owner() && recipient != DexRouter && recipient != _PairAddress){
                        require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed.");
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                    }
                }
        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){
            tax=sellTax;
        }else if(isBuy){
            tax=buyTax;
        }else{
            tax=transferTax;
        }

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

        if(!_isSwappingContractModifier && isAMM[recipient] && lpBurnEnabled && block.timestamp >= lastLpBurnTime + lpBurnFrequency){
            autoBurnLPTokens();
        }

        uint contractToken=_calculateFee(amount, tax, Tax+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 tax,uint liquidity) external onlyOwner{
        uint maxTax=400; // 10= 1%
        require(buy<=maxTax&&sell<=maxTax&&transfer_<=maxTax,"Tax exceeds maxTax");
        require(tax+liquidity==TAX_DENOMINATOR,"Taxes don't add up to denominator");
        buyTax=buy;
        sellTax=sell;
        transferTax=transfer_;
        Tax=tax;
        liquidityTax=liquidity;
        emit OnSetTaxes(buy, sell, transfer_, tax, 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+Tax;
        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 * marketingFee/100;
        uint devbalance=address(this).balance * devFee/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,
            address(this),
            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 uniswap");
        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,"AlreadyLaunched");
        LaunchTimestamp=block.timestamp;
        maxWalletBalance = InitialSupply * 20 / 1000;// 10=1%  
        maxTransactionAmount = InitialSupply * 150 / 10000;// 100=1%  
        emit OnEnableTrading();
    }
    function ReleaseLP() external onlyOwner {
        IERC20 liquidityToken = IERC20(_PairAddress);
        uint amount = liquidityToken.balanceOf(address(this));
        liquidityToken.transfer(msg.sender, amount);
        emit OnReleaseLP();
    }
    function setAutoLPBurnSettings(uint256 _frequencyInSeconds, uint256 _percent, bool _Enabled) external onlyOwner {
        require(_frequencyInSeconds >= 600, "cannot set buyback more often than every 10 minutes");
        require(_percent <= 1000 && _percent >= 0, "Must set auto LP burn percent between 0% and 10%");
        lpBurnFrequency = _frequencyInSeconds;
        percentForLPBurn = _percent;
        lpBurnEnabled = _Enabled;
    }
    function autoBurnLPTokens() internal returns (bool){
        lastLpBurnTime = block.timestamp;
        uint256 liquidityPairBalance = this.balanceOf(_PairAddress);
        uint256 amountToBurn = liquidityPairBalance * percentForLPBurn/10000;
        if (amountToBurn > 0){
            _balances[_PairAddress]-=amountToBurn;
            _balances[burnWallet]+=amountToBurn;
            emit Transfer(_PairAddress,burnWallet,amountToBurn);
        }
        IDexPair pair = IDexPair(_PairAddress);
        pair.sync();
        emit AutoNukeLP();
        return true;
    }

    function manualBurnLPTokens(uint256 percent) external onlyOwner returns (bool){
        require(block.timestamp > lastManualLpBurnTime + manualBurnFrequency , "Must wait for cooldown to finish");
        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;
    }
    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":[],"name":"AutoNukeLP","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":[],"name":"OnReleaseLP","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":[],"name":"ReleaseLP","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":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","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":"tax","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":[],"name":"Tax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"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":"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":[],"name":"lpBurnEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualBurnFrequency","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":"percentForLPBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeAllRestrictions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removetransferdelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_frequencyInSeconds","type":"uint256"},{"internalType":"uint256","name":"_percent","type":"uint256"},{"internalType":"bool","name":"_Enabled","type":"bool"}],"name":"setAutoLPBurnSettings","outputs":[],"stateMutability":"nonpayable","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":"WALpercent","type":"uint256"},{"internalType":"uint256","name":"TXNpercent","type":"uint256"}],"name":"setRestrictionPercents","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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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"}]

60806040526007805460ff19166001179055603260085561015e6009556000600a818155600b8290556103e8600c55600d556064600e81905560105560115560196014819055610e10601555610708601755805462ff00001916620100001790553480156200006d57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000620000bf6012600a620004ba565b620000cf90633b9aca00620004d2565b336000818152600160205260408082208490555192935090917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90620001189085815260200190565b60405180910390a360198054767a250d5630b4cf539739df2c5dacb4c659f2488d0000006301000000600160b81b031990911617908190556040805163c45a015560e01b8152905163010000009092046001600160a01b03169163c45a0155916004808201926020929091908290030181865afa1580156200019e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c49190620004ec565b6001600160a01b031663c9c6539630601960039054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000227573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024d9190620004ec565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200029b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c19190620004ec565b601a80546001600160a01b03929092166001600160a01b031992831681179091556000908152600560209081526040808320805460ff199081166001908117909255601b8054871633908117909155601c805490971681179096559484526004835281842080548616821790557f1fc5acd025f7cc5cf2691b667dba808b5a149bf27192c208fc66f1f0ec4222d78054861682179055308452818420805486168217905560039092527f262bb27bbdd95c1cdc8e16957e36e38579ea44f7f6413dd7a9c75939def06b2c805485168317905590912080549092161790555062000517565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620003fc578160001904821115620003e057620003e0620003a5565b80851615620003ee57918102915b93841c9390800290620003c0565b509250929050565b6000826200041557506001620004b4565b816200042457506000620004b4565b81600181146200043d5760028114620004485762000468565b6001915050620004b4565b60ff8411156200045c576200045c620003a5565b50506001821b620004b4565b5060208310610133831016604e8410600b84101617156200048d575081810a620004b4565b620004998383620003bb565b8060001904821115620004b057620004b0620003a5565b0290505b92915050565b6000620004cb60ff84168362000404565b9392505050565b8082028115828204841417620004b457620004b4620003a5565b600060208284031215620004ff57600080fd5b81516001600160a01b0381168114620004cb57600080fd5b61338080620005276000396000f3fe60806040526004361061039b5760003560e01c80638124f7ac116101dc578063bc43d84911610102578063d46b6a30116100a0578063e52fb9ec1161006f578063e52fb9ec14610a7a578063f2fde38b14610a90578063f7942b6314610ab0578063ff90061214610ad057600080fd5b8063d46b6a30146109b4578063dbe66ca0146109e4578063dd62ed3e14610a14578063e0d2f9eb14610a5a57600080fd5b8063c876d0b9116100dc578063c876d0b91461094e578063c8c8ebe414610968578063cc1776d31461097e578063cfd1940e1461099457600080fd5b8063bc43d849146108d9578063be617fa0146108f9578063c3f4f54f1461090f57600080fd5b806398d7e7211161017a578063a9059cbb11610149578063a9059cbb1461086d578063b40d09e21461088d578063baa88ea9146108a3578063bbde77c1146108c357600080fd5b806398d7e721146108015780639ec22c0e14610821578063a457c2d714610837578063a4c82a001461085757600080fd5b8063893d20e8116101b6578063893d20e8146107965780638da5cb5b146107965780638ea5220f146107b457806395d89b41146107d457600080fd5b80638124f7ac14610740578063817d4bff14610756578063868b01411461077657600080fd5b806346e35f03116102c1578063698e5cfa1161025f578063715018a61161022e578063715018a6146106cb578063730c1888146106e057806375f0a87414610700578063766febab1461072057600080fd5b8063698e5cfa1461064a5780636ea405d31461066a57806370a08231146106805780637115d00e146106b657600080fd5b806351bc3c851161029b57806351bc3c85146105c85780635cce86cd146105e75780636162c92e14610620578063679d8b191461063557600080fd5b806346e35f031461057d5780634f7041a5146105925780635149f984146105a857600080fd5b80631d97b7cd116103395780632e82f1a0116103085780632e82f1a01461050c578063313ce5671461052c578063395093511461054857806341aec3571461056857600080fd5b80631d97b7cd146104aa57806323b872dd146104c15780632b112e49146104e15780632c3e486c146104f657600080fd5b80630eff4c64116103755780630eff4c641461044557806318160ddd14610469578063184c16c51461047e578063199ffc721461049457600080fd5b806306228749146103a757806306fdde03146103da578063095ea7b31461041557600080fd5b366103a257005b600080fd5b3480156103b357600080fd5b506103bd61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103e657600080fd5b506040805180820190915260098152684e69686f6e20496e7560b81b60208201525b6040516103d19190612e25565b34801561042157600080fd5b50610435610430366004612e8b565b610af0565b60405190151581526020016103d1565b34801561045157600080fd5b5061045b600e5481565b6040519081526020016103d1565b34801561047557600080fd5b5061045b610b07565b34801561048a57600080fd5b5061045b60175481565b3480156104a057600080fd5b5061045b60145481565b3480156104b657600080fd5b506104bf610b28565b005b3480156104cd57600080fd5b506104356104dc366004612eb7565b610c47565b3480156104ed57600080fd5b5061045b610ce7565b34801561050257600080fd5b5061045b60155481565b34801561051857600080fd5b506019546104359062010000900460ff1681565b34801561053857600080fd5b50604051601281526020016103d1565b34801561055457600080fd5b50610435610563366004612e8b565b610d3a565b34801561057457600080fd5b506104bf610d71565b34801561058957600080fd5b50610435610ddf565b34801561059e57600080fd5b5061045b60085481565b3480156105b457600080fd5b506104bf6105c3366004612f06565b610e24565b3480156105d457600080fd5b5060195461043590610100900460ff1681565b3480156105f357600080fd5b50610435610602366004612f3f565b6001600160a01b031660009081526003602052604090205460ff1690565b34801561062c57600080fd5b506104bf610f18565b34801561064157600080fd5b506104bf610f98565b34801561065657600080fd5b506104bf610665366004612f63565b610fdd565b34801561067657600080fd5b5061045b600c5481565b34801561068c57600080fd5b5061045b61069b366004612f3f565b6001600160a01b031660009081526001602052604090205490565b3480156106c257600080fd5b506104bf6111d4565b3480156106d757600080fd5b506104bf611320565b3480156106ec57600080fd5b506104bf6106fb366004612f85565b6113a3565b34801561070c57600080fd5b50601b546103bd906001600160a01b031681565b34801561072c57600080fd5b506104bf61073b366004612f63565b6114e4565b34801561074c57600080fd5b5061045b600a5481565b34801561076257600080fd5b506104bf610771366004612f3f565b611574565b34801561078257600080fd5b506104bf610791366004612fbe565b611602565b3480156107a257600080fd5b506000546001600160a01b03166103bd565b3480156107c057600080fd5b50601c546103bd906001600160a01b031681565b3480156107e057600080fd5b506040805180820190915260048152634e494e5560e01b6020820152610408565b34801561080d57600080fd5b5061043561081c366004612fdb565b611684565b34801561082d57600080fd5b5061045b60185481565b34801561084357600080fd5b50610435610852366004612e8b565b611965565b34801561086357600080fd5b5061045b60165481565b34801561087957600080fd5b50610435610888366004612e8b565b6119e1565b34801561089957600080fd5b5061045b600f5481565b3480156108af57600080fd5b506104bf6108be366004612ff4565b6119ee565b3480156108cf57600080fd5b5061045b60125481565b3480156108e557600080fd5b506104bf6108f4366004612fdb565b611b5b565b34801561090557600080fd5b5061045b600b5481565b34801561091b57600080fd5b5061dead60005260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d5461045b565b34801561095a57600080fd5b506007546104359060ff1681565b34801561097457600080fd5b5061045b60135481565b34801561098a57600080fd5b5061045b60095481565b3480156109a057600080fd5b506104bf6109af366004612fdb565b611bd8565b3480156109c057600080fd5b506104356109cf366004612f3f565b60056020526000908152604090205460ff1681565b3480156109f057600080fd5b506104356109ff366004612f3f565b60046020526000908152604090205460ff1681565b348015610a2057600080fd5b5061045b610a2f36600461302f565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b348015610a6657600080fd5b506104bf610a75366004612f06565b611c54565b348015610a8657600080fd5b5061045b600d5481565b348015610a9c57600080fd5b506104bf610aab366004612f3f565b611d41565b348015610abc57600080fd5b506104bf610acb366004612f06565b611e3a565b348015610adc57600080fd5b506104bf610aeb366004612f3f565b611ecf565b6000610afd338484611f56565b5060015b92915050565b6000610b156012600a613157565b610b2390633b9aca00613166565b905090565b33610b3b6000546001600160a01b031690565b6001600160a01b031614610b6a5760405162461bcd60e51b8152600401610b619061317d565b60405180910390fd5b600f5415610bac5760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e53185d5b98da1959608a1b6044820152606401610b61565b42600f556103e8610bbf6012600a613157565b610bcd90633b9aca00613166565b610bd8906014613166565b610be291906131b2565b601290815561271090610bf690600a613157565b610c0490633b9aca00613166565b610c0f906096613166565b610c1991906131b2565b6013556040517f2cb945e0498987ef06dbd68025b0bc276116c63345296379c28a8e8f09b47dc190600090a1565b6000610c54848484612049565b6001600160a01b038416600090815260026020908152604080832033845290915290205482811015610cc85760405162461bcd60e51b815260206004820152601460248201527f5472616e73666572203e20616c6c6f77616e63650000000000000000000000006044820152606401610b61565b610cdc8533610cd786856131d4565b611f56565b506001949350505050565b61dead600090815260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d54610d226012600a613157565b610d3090633b9aca00613166565b610b2391906131d4565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091610afd918590610cd79086906131e7565b33610d846000546001600160a01b031690565b6001600160a01b031614610daa5760405162461bcd60e51b8152600401610b619061317d565b610db4600161229c565b6040517f50d9f00a1465121b958cf0aef21a53ed0bbe36c5a415abb27350d22b247a258f90600090a1565b60006103e8600e54610def610ce7565b610df99190613166565b610e0391906131b2565b601a546001600160a01b031660009081526001602052604090205411919050565b33610e376000546001600160a01b031690565b6001600160a01b031614610e5d5760405162461bcd60e51b8152600401610b619061317d565b601a546001600160a01b0390811690831603610ebb5760405162461bcd60e51b815260206004820152601460248201527f63616e2774206368616e676520756e69737761700000000000000000000000006044820152606401610b61565b6001600160a01b038216600081815260056020908152604091829020805460ff191685151517905590519182527fa5d0a2d9a2487cd749dbfa34962704a9f4ed5ff3fd9c6586c86d954070b552f091015b60405180910390a15050565b33610f2b6000546001600160a01b031690565b6001600160a01b031614610f515760405162461bcd60e51b8152600401610b619061317d565b610f5d6012600a613157565b610f6b90633b9aca00613166565b6012908155610f7b90600a613157565b610f8990633b9aca00613166565b6013556007805460ff19169055565b33610fab6000546001600160a01b031690565b6001600160a01b031614610fd15760405162461bcd60e51b8152600401610b619061317d565b6007805460ff19169055565b33610ff06000546001600160a01b031690565b6001600160a01b0316146110165760405162461bcd60e51b8152600401610b619061317d565b600a8210156110505760405162461bcd60e51b81526020600482015260066024820152656d696e20312560d01b6044820152606401610b61565b6103e882111561108d5760405162461bcd60e51b81526020600482015260086024820152676d6178203130302560c01b6044820152606401610b61565b6103e88261109d6012600a613157565b6110ab90633b9aca00613166565b6110b59190613166565b6110bf91906131b2565b60125560198110156110ff5760405162461bcd60e51b81526020600482015260096024820152686d696e20302e32352560b81b6044820152606401610b61565b61271081111561113c5760405162461bcd60e51b81526020600482015260086024820152676d6178203130302560c01b6044820152606401610b61565b6127108161114c6012600a613157565b61115a90633b9aca00613166565b6111649190613166565b61116e91906131b2565b6013556040518281527f9cbd2e55e2abf49d29273c1b9fb343c2828844b2aec156cfe2aec98ae1b72a999060200160405180910390a16040518181527f7c1cb3702d8e1fa6d24b12dd90670ab69c6d66d58233103d37da8b07d6b850ac90602001610f0c565b336111e76000546001600160a01b031690565b6001600160a01b03161461120d5760405162461bcd60e51b8152600401610b619061317d565b601a546040516370a0823160e01b81523060048201526001600160a01b039091169060009082906370a0823190602401602060405180830381865afa15801561125a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127e91906131fa565b60405163a9059cbb60e01b8152336004820152602481018290529091506001600160a01b0383169063a9059cbb906044016020604051808303816000875af11580156112ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f29190613213565b506040517f28bacca46f5c57fe13623e9d5093cb2fab892814aca9b39384ab86550d9aa67590600090a15050565b336113336000546001600160a01b031690565b6001600160a01b0316146113595760405162461bcd60e51b8152600401610b619061317d565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b336113b66000546001600160a01b031690565b6001600160a01b0316146113dc5760405162461bcd60e51b8152600401610b619061317d565b61025883101561144a5760405162461bcd60e51b815260206004820152603360248201527f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e207468604482015272616e206576657279203130206d696e7574657360681b6064820152608401610b61565b6103e8821115801561145a575060015b6114bf5760405162461bcd60e51b815260206004820152603060248201527f4d75737420736574206175746f204c50206275726e2070657263656e7420626560448201526f747765656e20302520616e642031302560801b6064820152608401610b61565b60159290925560145560198054911515620100000262ff000019909216919091179055565b336114f76000546001600160a01b031690565b6001600160a01b03161461151d5760405162461bcd60e51b8152600401610b619061317d565b606461152982846131e7565b111561153457600080fd5b6010829055601181905560408051838152602081018390527fe5a0c91086f91c001ad2bce018f8c7818182156e1fd1d3b81788aadd4b2b30219101610f0c565b336115876000546001600160a01b031690565b6001600160a01b0316146115ad5760405162461bcd60e51b8152600401610b619061317d565b601b80546001600160a01b0319166001600160a01b0383169081179091556040519081527f9e42de18c651175b949c09ca698a4cf63aa023f4038a9ed83bd882c7d6f8fb64906020015b60405180910390a150565b336116156000546001600160a01b031690565b6001600160a01b03161461163b5760405162461bcd60e51b8152600401610b619061317d565b601980548215156101000261ff00199091161790556040517faffc63374f6f6c07a9f4b158efd5668a3684e1711b1c8e9ed9b848e115070821906115f790831515815260200190565b6000336116996000546001600160a01b031690565b6001600160a01b0316146116bf5760405162461bcd60e51b8152600401610b619061317d565b6017546018546116cf91906131e7565b421161171d5760405162461bcd60e51b815260206004820181905260248201527f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e6973686044820152606401610b61565b6103e88211156117825760405162461bcd60e51b815260206004820152602a60248201527f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60448201526906b656e7320696e204c560b41b6064820152608401610b61565b42601855601a546040516370a0823160e01b81526001600160a01b03909116600482015260009030906370a0823190602401602060405180830381865afa1580156117d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f591906131fa565b905060006127106118068584613166565b61181091906131b2565b905080156118cf57601a546001600160a01b0316600090815260016020526040812080548392906118429084906131d4565b909155505061dead600090815260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d80548392906118859084906131e7565b9091555050601a5460405182815261dead916001600160a01b0316907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b601a546040805160016209351760e01b0319815290516001600160a01b0390921691829163fff6cae991600480830192600092919082900301818387803b15801561191957600080fd5b505af115801561192d573d6000803e3d6000fd5b50506040517f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb925060009150a1506001949350505050565b3360009081526002602090815260408083206001600160a01b0386168452909152812054828110156119c85760405162461bcd60e51b815260206004820152600c60248201526b3c3020616c6c6f77616e636560a01b6044820152606401610b61565b6119d73385610cd786856131d4565b5060019392505050565b6000610afd338484612049565b33611a016000546001600160a01b031690565b6001600160a01b031614611a275760405162461bcd60e51b8152600401610b619061317d565b610190808611801590611a3a5750808511155b8015611a465750808411155b611a875760405162461bcd60e51b81526020600482015260126024820152710a8c2f040caf0c6cacac8e640dac2f0a8c2f60731b6044820152606401610b61565b6103e8611a9483856131e7565b14611aeb5760405162461bcd60e51b815260206004820152602160248201527f546178657320646f6e27742061646420757020746f2064656e6f6d696e61746f6044820152603960f91b6064820152608401610b61565b60088690556009859055600a849055600c839055600b829055604080518781526020810187905290810185905260608101849052608081018390527f07d167ef63e413076f3e7e19f733b66f7ab5fd83fd7b437428f115315687ef6e9060a00160405180910390a1505050505050565b33611b6e6000546001600160a01b031690565b6001600160a01b031614611b945760405162461bcd60e51b8152600401610b619061317d565b6103e8811115611ba357600080fd5b600e8190556040518181527fa072eee57b8e01913ba01eab29d8a81117cf780e6c8984a3494477ce9cee846d906020016115f7565b33611beb6000546001600160a01b031690565b6001600160a01b031614611c115760405162461bcd60e51b8152600401610b619061317d565b600a811115611c1f57600080fd5b600d8190556040518181527fc075380b8410207b8cc14f0d254ab8c8a6766469631275e4500db835a1ba02cc906020016115f7565b33611c676000546001600160a01b031690565b6001600160a01b031614611c8d5760405162461bcd60e51b8152600401610b619061317d565b306001600160a01b03831603611ce55760405162461bcd60e51b815260206004820152601a60248201527f63616e277420496e636c7564652074686520636f6e74726163740000000000006044820152606401610b61565b6001600160a01b038216600081815260046020908152604091829020805460ff19168515159081179091558251938452908301527fa22b25479919d4ac678f064a05daa1ee9c0adc3b8198942ea45255e364e04ed49101610f0c565b33611d546000546001600160a01b031690565b6001600160a01b031614611d7a5760405162461bcd60e51b8152600401610b619061317d565b6001600160a01b038116611ddf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b61565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b33611e4d6000546001600160a01b031690565b6001600160a01b031614611e735760405162461bcd60e51b8152600401610b619061317d565b6001600160a01b038216600081815260036020908152604091829020805460ff19168515159081179091558251938452908301527f4b89c347592b1d537e066cb4ed98d87696ae35164745d7e370e4add16941dc929101610f0c565b33611ee26000546001600160a01b031690565b6001600160a01b031614611f085760405162461bcd60e51b8152600401610b619061317d565b601c80546001600160a01b0319166001600160a01b0383169081179091556040519081527f1a806adf87d2b694e80e69bda66ee145c65fb0ef3615fec509da7adc260316af906020016115f7565b6001600160a01b038316611fa05760405162461bcd60e51b8152602060048201526011602482015270417070726f76652066726f6d207a65726f60781b6044820152606401610b61565b6001600160a01b038216611fe85760405162461bcd60e51b815260206004820152600f60248201526e417070726f766520746f207a65726f60881b6044820152606401610b61565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166120945760405162461bcd60e51b81526020600482015260126024820152715472616e736665722066726f6d207a65726f60701b6044820152606401610b61565b6001600160a01b0382166120dd5760405162461bcd60e51b815260206004820152601060248201526f5472616e7366657220746f207a65726f60801b6044820152606401610b61565b60075460ff16156121eb576000546001600160a01b0383811691161480159061212357506001600160a01b038216737a250d5630b4cf539739df2c5dacb4c659f2488d14155b801561213d5750601a546001600160a01b03838116911614155b156121eb573260009081526006602052604090205443116121d85760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610b61565b3260009081526006602052604090204390555b6001600160a01b03831660009081526004602052604090205460ff168061222a57506001600160a01b03821660009081526004602052604090205460ff165b1561223f5761223a8383836124f5565b505050565b6000600f54116122915760405162461bcd60e51b815260206004820152601760248201527f74726164696e67206e6f742079657420656e61626c65640000000000000000006044820152606401610b61565b61223a838383612608565b6019805460ff191660019081179091553060009081526020919091526040812054600c54600b549192916122d091906131e7565b600d54601a546001600160a01b0316600090815260016020526040812054929350916103e8916122ff91613166565b61230991906131b2565b90508160000361231b575050506124e8565b8315612337575030600090815260016020526040902054612347565b80831015612347575050506124e8565b6000612351610ddf565b6123735782600b54836123649190613166565b61236e91906131b2565b612376565b60005b9050600061238482846131d4565b905060006123936002846131b2565b905060006123a183836131e7565b9050476123ad826129d1565b60006123b982476131d4565b905085156123e6576000836123ce8684613166565b6123d891906131b2565b90506123e48582612b4a565b505b60006064601154476123f89190613166565b61240291906131b2565b905060006064601054476124169190613166565b61242091906131b2565b9050811561247f57601b546040516000916001600160a01b03169084908381818185875af1925050503d8060008114612475576040519150601f19603f3d011682016040523d82523d6000602084013e61247a565b606091505b505050505b80156124dc57601c546040516000916001600160a01b03169083908381818185875af1925050503d80600081146124d2576040519150601f19603f3d011682016040523d82523d6000602084013e6124d7565b606091505b505050505b50505050505050505050505b506019805460ff19169055565b6001600160a01b038316600090815260016020526040902054818110156125595760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b6044820152606401610b61565b6001600160a01b038416600090815260016020526040812080548492906125819084906131d4565b90915550506001600160a01b038316600090815260016020526040812080548492906125ae9084906131e7565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516125fa91815260200190565b60405180910390a350505050565b6001600160a01b0383166000908152600160205260409020548181101561266c5760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b6044820152606401610b61565b6001600160a01b03841660009081526003602052604081205460ff16806126ab57506001600160a01b03841660009081526003602052604090205460ff165b6001600160a01b03861660009081526005602052604090205490915060ff1680156126d4575080155b15612781576013548311156126fb5760405162461bcd60e51b8152600401610b6190613230565b6001600160a01b03841660009081526001602052604090205460125461272185836131e7565b111561277b5760405162461bcd60e51b8152602060048201526024808201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152633ab73a1760e11b6064820152608401610b61565b506127ce565b6001600160a01b03841660009081526005602052604090205460ff1680156127a7575080155b156127ce576013548311156127ce5760405162461bcd60e51b8152600401610b6190613230565b6001600160a01b0380861660009081526005602052604080822054928716825281205460ff9283169216908115612808575060095461281c565b8215612817575060085461281c565b50600a545b601a546001600160a01b038981169116148015906128425750601954610100900460ff16155b8015612851575060195460ff16155b1561286057612860600061229c565b60195460ff1615801561288b57506001600160a01b03871660009081526005602052604090205460ff165b801561289f575060195462010000900460ff165b80156128ba57506015546016546128b691906131e7565b4210155b156128c9576128c7612c08565b505b60006128e58783600b54600c546128e091906131e7565b612df0565b905060006128f382896131d4565b6001600160a01b038b16600090815260016020526040812080549293508a929091906129209084906131d4565b909155505030600090815260016020526040812080548492906129449084906131e7565b90915550506001600160a01b038916600090815260016020526040812080548392906129719084906131e7565b92505081905550886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516129bd91815260200190565b60405180910390a350505050505050505050565b6019546129f0903090630100000090046001600160a01b031683611f56565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612a2557612a25613278565b60200260200101906001600160a01b031690816001600160a01b031681525050601960039054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612abc919061328e565b81600181518110612acf57612acf613278565b6001600160a01b03928316602091820292909201015260195460405163791ac94760e01b815263010000009091049091169063791ac94790612b1e9085906000908690309042906004016132ab565b600060405180830381600087803b158015612b3857600080fd5b505af192505050801561223a57505050565b601954612b69903090630100000090046001600160a01b031684611f56565b60195460405163f305d71960e01b8152306004820181905260248201859052600060448301819052606483015260848201524260a482015263010000009091046001600160a01b03169063f305d71990839060c40160606040518083038185885af1158015612bdc573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612c01919061331c565b5050505050565b42601655601a546040516370a0823160e01b81526001600160a01b039091166004820152600090819030906370a0823190602401602060405180830381865afa158015612c59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c7d91906131fa565b9050600061271060145483612c929190613166565b612c9c91906131b2565b90508015612d5b57601a546001600160a01b031660009081526001602052604081208054839290612cce9084906131d4565b909155505061dead600090815260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d8054839290612d119084906131e7565b9091555050601a5460405182815261dead916001600160a01b0316907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b601a546040805160016209351760e01b0319815290516001600160a01b0390921691829163fff6cae991600480830192600092919082900301818387803b158015612da557600080fd5b505af1158015612db9573d6000803e3d6000fd5b50506040517f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d925060009150a16001935050505090565b6000612dfe6103e880613166565b82612e098587613166565b612e139190613166565b612e1d91906131b2565b949350505050565b600060208083528351808285015260005b81811015612e5257858101830151858201604001528201612e36565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114612e8857600080fd5b50565b60008060408385031215612e9e57600080fd5b8235612ea981612e73565b946020939093013593505050565b600080600060608486031215612ecc57600080fd5b8335612ed781612e73565b92506020840135612ee781612e73565b929592945050506040919091013590565b8015158114612e8857600080fd5b60008060408385031215612f1957600080fd5b8235612f2481612e73565b91506020830135612f3481612ef8565b809150509250929050565b600060208284031215612f5157600080fd5b8135612f5c81612e73565b9392505050565b60008060408385031215612f7657600080fd5b50508035926020909101359150565b600080600060608486031215612f9a57600080fd5b83359250602084013591506040840135612fb381612ef8565b809150509250925092565b600060208284031215612fd057600080fd5b8135612f5c81612ef8565b600060208284031215612fed57600080fd5b5035919050565b600080600080600060a0868803121561300c57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b6000806040838503121561304257600080fd5b823561304d81612e73565b91506020830135612f3481612e73565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156130ae5781600019048211156130945761309461305d565b808516156130a157918102915b93841c9390800290613078565b509250929050565b6000826130c557506001610b01565b816130d257506000610b01565b81600181146130e857600281146130f25761310e565b6001915050610b01565b60ff8411156131035761310361305d565b50506001821b610b01565b5060208310610133831016604e8410600b8410161715613131575081810a610b01565b61313b8383613073565b806000190482111561314f5761314f61305d565b029392505050565b6000612f5c60ff8416836130b6565b8082028115828204841417610b0157610b0161305d565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000826131cf57634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610b0157610b0161305d565b80820180821115610b0157610b0161305d565b60006020828403121561320c57600080fd5b5051919050565b60006020828403121561322557600080fd5b8151612f5c81612ef8565b60208082526028908201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546040820152673c20b6b7bab73a1760c11b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156132a057600080fd5b8151612f5c81612e73565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156132fb5784516001600160a01b0316835293830193918301916001016132d6565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561333157600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122003bf0744e190e5a9579d3f68bd40a92c8adfcfc788c4b0877b81bf4e54bd372464736f6c63430008110033

Deployed Bytecode

0x60806040526004361061039b5760003560e01c80638124f7ac116101dc578063bc43d84911610102578063d46b6a30116100a0578063e52fb9ec1161006f578063e52fb9ec14610a7a578063f2fde38b14610a90578063f7942b6314610ab0578063ff90061214610ad057600080fd5b8063d46b6a30146109b4578063dbe66ca0146109e4578063dd62ed3e14610a14578063e0d2f9eb14610a5a57600080fd5b8063c876d0b9116100dc578063c876d0b91461094e578063c8c8ebe414610968578063cc1776d31461097e578063cfd1940e1461099457600080fd5b8063bc43d849146108d9578063be617fa0146108f9578063c3f4f54f1461090f57600080fd5b806398d7e7211161017a578063a9059cbb11610149578063a9059cbb1461086d578063b40d09e21461088d578063baa88ea9146108a3578063bbde77c1146108c357600080fd5b806398d7e721146108015780639ec22c0e14610821578063a457c2d714610837578063a4c82a001461085757600080fd5b8063893d20e8116101b6578063893d20e8146107965780638da5cb5b146107965780638ea5220f146107b457806395d89b41146107d457600080fd5b80638124f7ac14610740578063817d4bff14610756578063868b01411461077657600080fd5b806346e35f03116102c1578063698e5cfa1161025f578063715018a61161022e578063715018a6146106cb578063730c1888146106e057806375f0a87414610700578063766febab1461072057600080fd5b8063698e5cfa1461064a5780636ea405d31461066a57806370a08231146106805780637115d00e146106b657600080fd5b806351bc3c851161029b57806351bc3c85146105c85780635cce86cd146105e75780636162c92e14610620578063679d8b191461063557600080fd5b806346e35f031461057d5780634f7041a5146105925780635149f984146105a857600080fd5b80631d97b7cd116103395780632e82f1a0116103085780632e82f1a01461050c578063313ce5671461052c578063395093511461054857806341aec3571461056857600080fd5b80631d97b7cd146104aa57806323b872dd146104c15780632b112e49146104e15780632c3e486c146104f657600080fd5b80630eff4c64116103755780630eff4c641461044557806318160ddd14610469578063184c16c51461047e578063199ffc721461049457600080fd5b806306228749146103a757806306fdde03146103da578063095ea7b31461041557600080fd5b366103a257005b600080fd5b3480156103b357600080fd5b506103bd61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103e657600080fd5b506040805180820190915260098152684e69686f6e20496e7560b81b60208201525b6040516103d19190612e25565b34801561042157600080fd5b50610435610430366004612e8b565b610af0565b60405190151581526020016103d1565b34801561045157600080fd5b5061045b600e5481565b6040519081526020016103d1565b34801561047557600080fd5b5061045b610b07565b34801561048a57600080fd5b5061045b60175481565b3480156104a057600080fd5b5061045b60145481565b3480156104b657600080fd5b506104bf610b28565b005b3480156104cd57600080fd5b506104356104dc366004612eb7565b610c47565b3480156104ed57600080fd5b5061045b610ce7565b34801561050257600080fd5b5061045b60155481565b34801561051857600080fd5b506019546104359062010000900460ff1681565b34801561053857600080fd5b50604051601281526020016103d1565b34801561055457600080fd5b50610435610563366004612e8b565b610d3a565b34801561057457600080fd5b506104bf610d71565b34801561058957600080fd5b50610435610ddf565b34801561059e57600080fd5b5061045b60085481565b3480156105b457600080fd5b506104bf6105c3366004612f06565b610e24565b3480156105d457600080fd5b5060195461043590610100900460ff1681565b3480156105f357600080fd5b50610435610602366004612f3f565b6001600160a01b031660009081526003602052604090205460ff1690565b34801561062c57600080fd5b506104bf610f18565b34801561064157600080fd5b506104bf610f98565b34801561065657600080fd5b506104bf610665366004612f63565b610fdd565b34801561067657600080fd5b5061045b600c5481565b34801561068c57600080fd5b5061045b61069b366004612f3f565b6001600160a01b031660009081526001602052604090205490565b3480156106c257600080fd5b506104bf6111d4565b3480156106d757600080fd5b506104bf611320565b3480156106ec57600080fd5b506104bf6106fb366004612f85565b6113a3565b34801561070c57600080fd5b50601b546103bd906001600160a01b031681565b34801561072c57600080fd5b506104bf61073b366004612f63565b6114e4565b34801561074c57600080fd5b5061045b600a5481565b34801561076257600080fd5b506104bf610771366004612f3f565b611574565b34801561078257600080fd5b506104bf610791366004612fbe565b611602565b3480156107a257600080fd5b506000546001600160a01b03166103bd565b3480156107c057600080fd5b50601c546103bd906001600160a01b031681565b3480156107e057600080fd5b506040805180820190915260048152634e494e5560e01b6020820152610408565b34801561080d57600080fd5b5061043561081c366004612fdb565b611684565b34801561082d57600080fd5b5061045b60185481565b34801561084357600080fd5b50610435610852366004612e8b565b611965565b34801561086357600080fd5b5061045b60165481565b34801561087957600080fd5b50610435610888366004612e8b565b6119e1565b34801561089957600080fd5b5061045b600f5481565b3480156108af57600080fd5b506104bf6108be366004612ff4565b6119ee565b3480156108cf57600080fd5b5061045b60125481565b3480156108e557600080fd5b506104bf6108f4366004612fdb565b611b5b565b34801561090557600080fd5b5061045b600b5481565b34801561091b57600080fd5b5061dead60005260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d5461045b565b34801561095a57600080fd5b506007546104359060ff1681565b34801561097457600080fd5b5061045b60135481565b34801561098a57600080fd5b5061045b60095481565b3480156109a057600080fd5b506104bf6109af366004612fdb565b611bd8565b3480156109c057600080fd5b506104356109cf366004612f3f565b60056020526000908152604090205460ff1681565b3480156109f057600080fd5b506104356109ff366004612f3f565b60046020526000908152604090205460ff1681565b348015610a2057600080fd5b5061045b610a2f36600461302f565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b348015610a6657600080fd5b506104bf610a75366004612f06565b611c54565b348015610a8657600080fd5b5061045b600d5481565b348015610a9c57600080fd5b506104bf610aab366004612f3f565b611d41565b348015610abc57600080fd5b506104bf610acb366004612f06565b611e3a565b348015610adc57600080fd5b506104bf610aeb366004612f3f565b611ecf565b6000610afd338484611f56565b5060015b92915050565b6000610b156012600a613157565b610b2390633b9aca00613166565b905090565b33610b3b6000546001600160a01b031690565b6001600160a01b031614610b6a5760405162461bcd60e51b8152600401610b619061317d565b60405180910390fd5b600f5415610bac5760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e53185d5b98da1959608a1b6044820152606401610b61565b42600f556103e8610bbf6012600a613157565b610bcd90633b9aca00613166565b610bd8906014613166565b610be291906131b2565b601290815561271090610bf690600a613157565b610c0490633b9aca00613166565b610c0f906096613166565b610c1991906131b2565b6013556040517f2cb945e0498987ef06dbd68025b0bc276116c63345296379c28a8e8f09b47dc190600090a1565b6000610c54848484612049565b6001600160a01b038416600090815260026020908152604080832033845290915290205482811015610cc85760405162461bcd60e51b815260206004820152601460248201527f5472616e73666572203e20616c6c6f77616e63650000000000000000000000006044820152606401610b61565b610cdc8533610cd786856131d4565b611f56565b506001949350505050565b61dead600090815260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d54610d226012600a613157565b610d3090633b9aca00613166565b610b2391906131d4565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091610afd918590610cd79086906131e7565b33610d846000546001600160a01b031690565b6001600160a01b031614610daa5760405162461bcd60e51b8152600401610b619061317d565b610db4600161229c565b6040517f50d9f00a1465121b958cf0aef21a53ed0bbe36c5a415abb27350d22b247a258f90600090a1565b60006103e8600e54610def610ce7565b610df99190613166565b610e0391906131b2565b601a546001600160a01b031660009081526001602052604090205411919050565b33610e376000546001600160a01b031690565b6001600160a01b031614610e5d5760405162461bcd60e51b8152600401610b619061317d565b601a546001600160a01b0390811690831603610ebb5760405162461bcd60e51b815260206004820152601460248201527f63616e2774206368616e676520756e69737761700000000000000000000000006044820152606401610b61565b6001600160a01b038216600081815260056020908152604091829020805460ff191685151517905590519182527fa5d0a2d9a2487cd749dbfa34962704a9f4ed5ff3fd9c6586c86d954070b552f091015b60405180910390a15050565b33610f2b6000546001600160a01b031690565b6001600160a01b031614610f515760405162461bcd60e51b8152600401610b619061317d565b610f5d6012600a613157565b610f6b90633b9aca00613166565b6012908155610f7b90600a613157565b610f8990633b9aca00613166565b6013556007805460ff19169055565b33610fab6000546001600160a01b031690565b6001600160a01b031614610fd15760405162461bcd60e51b8152600401610b619061317d565b6007805460ff19169055565b33610ff06000546001600160a01b031690565b6001600160a01b0316146110165760405162461bcd60e51b8152600401610b619061317d565b600a8210156110505760405162461bcd60e51b81526020600482015260066024820152656d696e20312560d01b6044820152606401610b61565b6103e882111561108d5760405162461bcd60e51b81526020600482015260086024820152676d6178203130302560c01b6044820152606401610b61565b6103e88261109d6012600a613157565b6110ab90633b9aca00613166565b6110b59190613166565b6110bf91906131b2565b60125560198110156110ff5760405162461bcd60e51b81526020600482015260096024820152686d696e20302e32352560b81b6044820152606401610b61565b61271081111561113c5760405162461bcd60e51b81526020600482015260086024820152676d6178203130302560c01b6044820152606401610b61565b6127108161114c6012600a613157565b61115a90633b9aca00613166565b6111649190613166565b61116e91906131b2565b6013556040518281527f9cbd2e55e2abf49d29273c1b9fb343c2828844b2aec156cfe2aec98ae1b72a999060200160405180910390a16040518181527f7c1cb3702d8e1fa6d24b12dd90670ab69c6d66d58233103d37da8b07d6b850ac90602001610f0c565b336111e76000546001600160a01b031690565b6001600160a01b03161461120d5760405162461bcd60e51b8152600401610b619061317d565b601a546040516370a0823160e01b81523060048201526001600160a01b039091169060009082906370a0823190602401602060405180830381865afa15801561125a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127e91906131fa565b60405163a9059cbb60e01b8152336004820152602481018290529091506001600160a01b0383169063a9059cbb906044016020604051808303816000875af11580156112ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f29190613213565b506040517f28bacca46f5c57fe13623e9d5093cb2fab892814aca9b39384ab86550d9aa67590600090a15050565b336113336000546001600160a01b031690565b6001600160a01b0316146113595760405162461bcd60e51b8152600401610b619061317d565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b336113b66000546001600160a01b031690565b6001600160a01b0316146113dc5760405162461bcd60e51b8152600401610b619061317d565b61025883101561144a5760405162461bcd60e51b815260206004820152603360248201527f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e207468604482015272616e206576657279203130206d696e7574657360681b6064820152608401610b61565b6103e8821115801561145a575060015b6114bf5760405162461bcd60e51b815260206004820152603060248201527f4d75737420736574206175746f204c50206275726e2070657263656e7420626560448201526f747765656e20302520616e642031302560801b6064820152608401610b61565b60159290925560145560198054911515620100000262ff000019909216919091179055565b336114f76000546001600160a01b031690565b6001600160a01b03161461151d5760405162461bcd60e51b8152600401610b619061317d565b606461152982846131e7565b111561153457600080fd5b6010829055601181905560408051838152602081018390527fe5a0c91086f91c001ad2bce018f8c7818182156e1fd1d3b81788aadd4b2b30219101610f0c565b336115876000546001600160a01b031690565b6001600160a01b0316146115ad5760405162461bcd60e51b8152600401610b619061317d565b601b80546001600160a01b0319166001600160a01b0383169081179091556040519081527f9e42de18c651175b949c09ca698a4cf63aa023f4038a9ed83bd882c7d6f8fb64906020015b60405180910390a150565b336116156000546001600160a01b031690565b6001600160a01b03161461163b5760405162461bcd60e51b8152600401610b619061317d565b601980548215156101000261ff00199091161790556040517faffc63374f6f6c07a9f4b158efd5668a3684e1711b1c8e9ed9b848e115070821906115f790831515815260200190565b6000336116996000546001600160a01b031690565b6001600160a01b0316146116bf5760405162461bcd60e51b8152600401610b619061317d565b6017546018546116cf91906131e7565b421161171d5760405162461bcd60e51b815260206004820181905260248201527f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e6973686044820152606401610b61565b6103e88211156117825760405162461bcd60e51b815260206004820152602a60248201527f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60448201526906b656e7320696e204c560b41b6064820152608401610b61565b42601855601a546040516370a0823160e01b81526001600160a01b03909116600482015260009030906370a0823190602401602060405180830381865afa1580156117d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f591906131fa565b905060006127106118068584613166565b61181091906131b2565b905080156118cf57601a546001600160a01b0316600090815260016020526040812080548392906118429084906131d4565b909155505061dead600090815260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d80548392906118859084906131e7565b9091555050601a5460405182815261dead916001600160a01b0316907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b601a546040805160016209351760e01b0319815290516001600160a01b0390921691829163fff6cae991600480830192600092919082900301818387803b15801561191957600080fd5b505af115801561192d573d6000803e3d6000fd5b50506040517f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb925060009150a1506001949350505050565b3360009081526002602090815260408083206001600160a01b0386168452909152812054828110156119c85760405162461bcd60e51b815260206004820152600c60248201526b3c3020616c6c6f77616e636560a01b6044820152606401610b61565b6119d73385610cd786856131d4565b5060019392505050565b6000610afd338484612049565b33611a016000546001600160a01b031690565b6001600160a01b031614611a275760405162461bcd60e51b8152600401610b619061317d565b610190808611801590611a3a5750808511155b8015611a465750808411155b611a875760405162461bcd60e51b81526020600482015260126024820152710a8c2f040caf0c6cacac8e640dac2f0a8c2f60731b6044820152606401610b61565b6103e8611a9483856131e7565b14611aeb5760405162461bcd60e51b815260206004820152602160248201527f546178657320646f6e27742061646420757020746f2064656e6f6d696e61746f6044820152603960f91b6064820152608401610b61565b60088690556009859055600a849055600c839055600b829055604080518781526020810187905290810185905260608101849052608081018390527f07d167ef63e413076f3e7e19f733b66f7ab5fd83fd7b437428f115315687ef6e9060a00160405180910390a1505050505050565b33611b6e6000546001600160a01b031690565b6001600160a01b031614611b945760405162461bcd60e51b8152600401610b619061317d565b6103e8811115611ba357600080fd5b600e8190556040518181527fa072eee57b8e01913ba01eab29d8a81117cf780e6c8984a3494477ce9cee846d906020016115f7565b33611beb6000546001600160a01b031690565b6001600160a01b031614611c115760405162461bcd60e51b8152600401610b619061317d565b600a811115611c1f57600080fd5b600d8190556040518181527fc075380b8410207b8cc14f0d254ab8c8a6766469631275e4500db835a1ba02cc906020016115f7565b33611c676000546001600160a01b031690565b6001600160a01b031614611c8d5760405162461bcd60e51b8152600401610b619061317d565b306001600160a01b03831603611ce55760405162461bcd60e51b815260206004820152601a60248201527f63616e277420496e636c7564652074686520636f6e74726163740000000000006044820152606401610b61565b6001600160a01b038216600081815260046020908152604091829020805460ff19168515159081179091558251938452908301527fa22b25479919d4ac678f064a05daa1ee9c0adc3b8198942ea45255e364e04ed49101610f0c565b33611d546000546001600160a01b031690565b6001600160a01b031614611d7a5760405162461bcd60e51b8152600401610b619061317d565b6001600160a01b038116611ddf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b61565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b33611e4d6000546001600160a01b031690565b6001600160a01b031614611e735760405162461bcd60e51b8152600401610b619061317d565b6001600160a01b038216600081815260036020908152604091829020805460ff19168515159081179091558251938452908301527f4b89c347592b1d537e066cb4ed98d87696ae35164745d7e370e4add16941dc929101610f0c565b33611ee26000546001600160a01b031690565b6001600160a01b031614611f085760405162461bcd60e51b8152600401610b619061317d565b601c80546001600160a01b0319166001600160a01b0383169081179091556040519081527f1a806adf87d2b694e80e69bda66ee145c65fb0ef3615fec509da7adc260316af906020016115f7565b6001600160a01b038316611fa05760405162461bcd60e51b8152602060048201526011602482015270417070726f76652066726f6d207a65726f60781b6044820152606401610b61565b6001600160a01b038216611fe85760405162461bcd60e51b815260206004820152600f60248201526e417070726f766520746f207a65726f60881b6044820152606401610b61565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166120945760405162461bcd60e51b81526020600482015260126024820152715472616e736665722066726f6d207a65726f60701b6044820152606401610b61565b6001600160a01b0382166120dd5760405162461bcd60e51b815260206004820152601060248201526f5472616e7366657220746f207a65726f60801b6044820152606401610b61565b60075460ff16156121eb576000546001600160a01b0383811691161480159061212357506001600160a01b038216737a250d5630b4cf539739df2c5dacb4c659f2488d14155b801561213d5750601a546001600160a01b03838116911614155b156121eb573260009081526006602052604090205443116121d85760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610b61565b3260009081526006602052604090204390555b6001600160a01b03831660009081526004602052604090205460ff168061222a57506001600160a01b03821660009081526004602052604090205460ff165b1561223f5761223a8383836124f5565b505050565b6000600f54116122915760405162461bcd60e51b815260206004820152601760248201527f74726164696e67206e6f742079657420656e61626c65640000000000000000006044820152606401610b61565b61223a838383612608565b6019805460ff191660019081179091553060009081526020919091526040812054600c54600b549192916122d091906131e7565b600d54601a546001600160a01b0316600090815260016020526040812054929350916103e8916122ff91613166565b61230991906131b2565b90508160000361231b575050506124e8565b8315612337575030600090815260016020526040902054612347565b80831015612347575050506124e8565b6000612351610ddf565b6123735782600b54836123649190613166565b61236e91906131b2565b612376565b60005b9050600061238482846131d4565b905060006123936002846131b2565b905060006123a183836131e7565b9050476123ad826129d1565b60006123b982476131d4565b905085156123e6576000836123ce8684613166565b6123d891906131b2565b90506123e48582612b4a565b505b60006064601154476123f89190613166565b61240291906131b2565b905060006064601054476124169190613166565b61242091906131b2565b9050811561247f57601b546040516000916001600160a01b03169084908381818185875af1925050503d8060008114612475576040519150601f19603f3d011682016040523d82523d6000602084013e61247a565b606091505b505050505b80156124dc57601c546040516000916001600160a01b03169083908381818185875af1925050503d80600081146124d2576040519150601f19603f3d011682016040523d82523d6000602084013e6124d7565b606091505b505050505b50505050505050505050505b506019805460ff19169055565b6001600160a01b038316600090815260016020526040902054818110156125595760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b6044820152606401610b61565b6001600160a01b038416600090815260016020526040812080548492906125819084906131d4565b90915550506001600160a01b038316600090815260016020526040812080548492906125ae9084906131e7565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516125fa91815260200190565b60405180910390a350505050565b6001600160a01b0383166000908152600160205260409020548181101561266c5760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b6044820152606401610b61565b6001600160a01b03841660009081526003602052604081205460ff16806126ab57506001600160a01b03841660009081526003602052604090205460ff165b6001600160a01b03861660009081526005602052604090205490915060ff1680156126d4575080155b15612781576013548311156126fb5760405162461bcd60e51b8152600401610b6190613230565b6001600160a01b03841660009081526001602052604090205460125461272185836131e7565b111561277b5760405162461bcd60e51b8152602060048201526024808201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152633ab73a1760e11b6064820152608401610b61565b506127ce565b6001600160a01b03841660009081526005602052604090205460ff1680156127a7575080155b156127ce576013548311156127ce5760405162461bcd60e51b8152600401610b6190613230565b6001600160a01b0380861660009081526005602052604080822054928716825281205460ff9283169216908115612808575060095461281c565b8215612817575060085461281c565b50600a545b601a546001600160a01b038981169116148015906128425750601954610100900460ff16155b8015612851575060195460ff16155b1561286057612860600061229c565b60195460ff1615801561288b57506001600160a01b03871660009081526005602052604090205460ff165b801561289f575060195462010000900460ff165b80156128ba57506015546016546128b691906131e7565b4210155b156128c9576128c7612c08565b505b60006128e58783600b54600c546128e091906131e7565b612df0565b905060006128f382896131d4565b6001600160a01b038b16600090815260016020526040812080549293508a929091906129209084906131d4565b909155505030600090815260016020526040812080548492906129449084906131e7565b90915550506001600160a01b038916600090815260016020526040812080548392906129719084906131e7565b92505081905550886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516129bd91815260200190565b60405180910390a350505050505050505050565b6019546129f0903090630100000090046001600160a01b031683611f56565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612a2557612a25613278565b60200260200101906001600160a01b031690816001600160a01b031681525050601960039054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612abc919061328e565b81600181518110612acf57612acf613278565b6001600160a01b03928316602091820292909201015260195460405163791ac94760e01b815263010000009091049091169063791ac94790612b1e9085906000908690309042906004016132ab565b600060405180830381600087803b158015612b3857600080fd5b505af192505050801561223a57505050565b601954612b69903090630100000090046001600160a01b031684611f56565b60195460405163f305d71960e01b8152306004820181905260248201859052600060448301819052606483015260848201524260a482015263010000009091046001600160a01b03169063f305d71990839060c40160606040518083038185885af1158015612bdc573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612c01919061331c565b5050505050565b42601655601a546040516370a0823160e01b81526001600160a01b039091166004820152600090819030906370a0823190602401602060405180830381865afa158015612c59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c7d91906131fa565b9050600061271060145483612c929190613166565b612c9c91906131b2565b90508015612d5b57601a546001600160a01b031660009081526001602052604081208054839290612cce9084906131d4565b909155505061dead600090815260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d8054839290612d119084906131e7565b9091555050601a5460405182815261dead916001600160a01b0316907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b601a546040805160016209351760e01b0319815290516001600160a01b0390921691829163fff6cae991600480830192600092919082900301818387803b158015612da557600080fd5b505af1158015612db9573d6000803e3d6000fd5b50506040517f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d925060009150a16001935050505090565b6000612dfe6103e880613166565b82612e098587613166565b612e139190613166565b612e1d91906131b2565b949350505050565b600060208083528351808285015260005b81811015612e5257858101830151858201604001528201612e36565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114612e8857600080fd5b50565b60008060408385031215612e9e57600080fd5b8235612ea981612e73565b946020939093013593505050565b600080600060608486031215612ecc57600080fd5b8335612ed781612e73565b92506020840135612ee781612e73565b929592945050506040919091013590565b8015158114612e8857600080fd5b60008060408385031215612f1957600080fd5b8235612f2481612e73565b91506020830135612f3481612ef8565b809150509250929050565b600060208284031215612f5157600080fd5b8135612f5c81612e73565b9392505050565b60008060408385031215612f7657600080fd5b50508035926020909101359150565b600080600060608486031215612f9a57600080fd5b83359250602084013591506040840135612fb381612ef8565b809150509250925092565b600060208284031215612fd057600080fd5b8135612f5c81612ef8565b600060208284031215612fed57600080fd5b5035919050565b600080600080600060a0868803121561300c57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b6000806040838503121561304257600080fd5b823561304d81612e73565b91506020830135612f3481612e73565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156130ae5781600019048211156130945761309461305d565b808516156130a157918102915b93841c9390800290613078565b509250929050565b6000826130c557506001610b01565b816130d257506000610b01565b81600181146130e857600281146130f25761310e565b6001915050610b01565b60ff8411156131035761310361305d565b50506001821b610b01565b5060208310610133831016604e8410600b8410161715613131575081810a610b01565b61313b8383613073565b806000190482111561314f5761314f61305d565b029392505050565b6000612f5c60ff8416836130b6565b8082028115828204841417610b0157610b0161305d565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000826131cf57634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610b0157610b0161305d565b80820180821115610b0157610b0161305d565b60006020828403121561320c57600080fd5b5051919050565b60006020828403121561322557600080fd5b8151612f5c81612ef8565b60208082526028908201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546040820152673c20b6b7bab73a1760c11b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156132a057600080fd5b8151612f5c81612e73565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156132fb5784516001600160a01b0316835293830193918301916001016132d6565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561333157600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122003bf0744e190e5a9579d3f68bd40a92c8adfcfc788c4b0877b81bf4e54bd372464736f6c63430008110033

Deployed Bytecode Sourcemap

3049:17835:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4898:50;;;;;;;;;;;;4941:6;4898:50;;;;;-1:-1:-1;;;;;178:55:1;;;160:74;;148:2;133:18;4898:50:0;;;;;;;;18696:78;;;;;;;;;;-1:-1:-1;18767:5:0;;;;;;;;;;;;-1:-1:-1;;;18767:5:0;;;;18696:78;;;;;;;:::i;19452:158::-;;;;;;;;;;-1:-1:-1;19452:158:0;;;;;:::i;:::-;;:::i;:::-;;;1442:14:1;;1435:22;1417:41;;1405:2;1390:18;19452:158:0;1277:187:1;4056:35:0;;;;;;;;;;;;;;;;;;;1615:25:1;;;1603:2;1588:18;4056:35:0;1469:177:1;18952:84:0;;;;;;;;;;;;;:::i;4539:47::-;;;;;;;;;;;;;;;;4395:36;;;;;;;;;;;;;;;;16168:319;;;;;;;;;;;;;:::i;:::-;;19916:382;;;;;;;;;;-1:-1:-1;19916:382:0;;;;;:::i;:::-;;:::i;14998:123::-;;;;;;;;;;;;;:::i;4451:45::-;;;;;;;;;;;;;;;;4713:32;;;;;;;;;;-1:-1:-1;4713:32:0;;;;;;;;;;;18868:78;;;;;;;;;;-1:-1:-1;18868:78:0;;3678:2;2254:36:1;;2242:2;2227:18;18868:78:0;2112:184:1;20304:202:0;;;;;;;;;;-1:-1:-1;20304:202:0;;;;;:::i;:::-;;:::i;15447:127::-;;;;;;;;;;;;;:::i;12522:149::-;;;;;;;;;;;;;:::i;3753:23::-;;;;;;;;;;;;;;;;15127:179;;;;;;;;;;-1:-1:-1;15127:179:0;;;;;:::i;:::-;;:::i;4684:22::-;;;;;;;;;;-1:-1:-1;4684:22:0;;;;;;;;;;;16034:128;;;;;;;;;;-1:-1:-1;16034:128:0;;;;;:::i;:::-;-1:-1:-1;;;;;16127:27:0;16103:4;16127:27;;;:18;:27;;;;;;;;;16034:128;7860:189;;;;;;;;;;;;;:::i;8055:97::-;;;;;;;;;;;;;:::i;7301:551::-;;;;;;;;;;-1:-1:-1;7301:551:0;;;;;:::i;:::-;;:::i;3893:21::-;;;;;;;;;;;;;;;;19042:100;;;;;;;;;;-1:-1:-1;19042:100:0;;;;;:::i;:::-;-1:-1:-1;;;;;19122:18:0;19108:4;19122:18;;;:9;:18;;;;;;;19042:100;16493:250;;;;;;;;;;;;;:::i;2632:142::-;;;;;;;;;;;;;:::i;16749:447::-;;;;;;;;;;-1:-1:-1;16749:447:0;;;;;:::i;:::-;;:::i;4829:30::-;;;;;;;;;;-1:-1:-1;4829:30:0;;;;-1:-1:-1;;;;;4829:30:0;;;7052:243;;;;;;;;;;-1:-1:-1;7052:243:0;;;;;:::i;:::-;;:::i;3825:27::-;;;;;;;;;;;;;;;;6738:160;;;;;;;;;;-1:-1:-1;6738:160:0;;;;;:::i;:::-;;:::i;15312:129::-;;;;;;;;;;-1:-1:-1;15312:129:0;;;;;:::i;:::-;;:::i;18612:78::-;;;;;;;;;;-1:-1:-1;18664:7:0;2488:6;-1:-1:-1;;;;;2488:6:0;18612:78;18952:84;4866:24;;;;;;;;;;-1:-1:-1;4866:24:0;;;;-1:-1:-1;;;;;4866:24:0;;;18780:82;;;;;;;;;;-1:-1:-1;18853:7:0;;;;;;;;;;;;-1:-1:-1;;;18853:7:0;;;;18780:82;;17793:807;;;;;;;;;;-1:-1:-1;17793:807:0;;;;;:::i;:::-;;:::i;4593:35::-;;;;;;;;;;;;;;;;20512:334;;;;;;;;;;-1:-1:-1;20512:334:0;;;;;:::i;:::-;;:::i;4503:29::-;;;;;;;;;;;;;;;;19282:164;;;;;;;;;;-1:-1:-1;19282:164:0;;;;;:::i;:::-;;:::i;4098:27::-;;;;;;;;;;;;;;;;12012:504;;;;;;;;;;-1:-1:-1;12012:504:0;;;;;:::i;:::-;;:::i;4315:31::-;;;;;;;;;;;;;;;;11716:290;;;;;;;;;;-1:-1:-1;11716:290:0;;;;;:::i;:::-;;:::i;3859:27::-;;;;;;;;;;;;;;;;14886:106;;;;;;;;;;-1:-1:-1;14976:6:0;14935:4;14958:26;:9;:26;;;;14886:106;;3494:39;;;;;;;;;;-1:-1:-1;3494:39:0;;;;;;;;4353:35;;;;;;;;;;;;;;;;3793:25;;;;;;;;;;;;;;;;11458:252;;;;;;;;;;-1:-1:-1;11458:252:0;;;;;:::i;:::-;;:::i;3329:35::-;;;;;;;;;;-1:-1:-1;3329:35:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;3274:48;;;;;;;;;;-1:-1:-1;3274:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19148:128;;;;;;;;;;-1:-1:-1;19148:128:0;;;;;:::i;:::-;-1:-1:-1;;;;;19246:19:0;;;19232:4;19246:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;19148:128;15580:251;;;;;;;;;;-1:-1:-1;15580:251:0;;;;;:::i;:::-;;:::i;3960:27::-;;;;;;;;;;;;;;;;2780:236;;;;;;;;;;-1:-1:-1;2780:236:0;;;;;:::i;:::-;;:::i;15837:191::-;;;;;;;;;;-1:-1:-1;15837:191:0;;;;;:::i;:::-;;:::i;6904:142::-;;;;;;;;;;-1:-1:-1;6904:142:0;;;;;:::i;:::-;;:::i;19452:158::-;19526:4;19543:37;19552:10;19564:7;19573:6;19543:8;:37::i;:::-;-1:-1:-1;19598:4:0;19452:158;;;;;:::o;18952:84::-;19007:4;3733:13;3678:2;3733;:13;:::i;:::-;3725:21;;:5;:21;:::i;:::-;19014:20;;18952:84;:::o;16168:319::-;2559:10;2548:7;2461;2488:6;-1:-1:-1;;;;;2488:6:0;;2423:79;2548:7;-1:-1:-1;;;;;2548:21:0;;2540:66;;;;-1:-1:-1;;;2540:66:0;;;;;;;:::i;:::-;;;;;;;;;16230:15:::1;::::0;:18;16222:45:::1;;;::::0;-1:-1:-1;;;16222:45:0;;7232:2:1;16222:45:0::1;::::0;::::1;7214:21:1::0;7271:2;7251:18;;;7244:30;-1:-1:-1;;;7290:18:1;;;7283:45;7345:18;;16222:45:0::1;7030:339:1::0;16222:45:0::1;16294:15;16278;:31:::0;16360:4:::1;3733:13;3678:2;3733;:13;:::i;:::-;3725:21;::::0;:5:::1;:21;:::i;:::-;16339:18;::::0;16355:2:::1;16339:18;:::i;:::-;:25;;;;:::i;:::-;16320:16;:44:::0;;;16430:5:::1;::::0;3733:13:::1;::::0;:2:::1;:13;:::i;:::-;3725:21;::::0;:5:::1;:21;:::i;:::-;16408:19;::::0;16424:3:::1;16408:19;:::i;:::-;:27;;;;:::i;:::-;16385:20;:50:::0;16462:17:::1;::::0;::::1;::::0;;;::::1;16168:319::o:0;19916:382::-;20013:4;20030:36;20040:6;20048:9;20059:6;20030:9;:36::i;:::-;-1:-1:-1;;;;;20101:19:0;;20077:21;20101:19;;;:11;:19;;;;;;;;20121:10;20101:31;;;;;;;;20151:26;;;;20143:59;;;;-1:-1:-1;;;20143:59:0;;7798:2:1;20143:59:0;;;7780:21:1;7837:2;7817:18;;;7810:30;7876:22;7856:18;;;7849:50;7916:18;;20143:59:0;7596:344:1;20143:59:0;20213:55;20222:6;20230:10;20242:25;20261:6;20242:16;:25;:::i;:::-;20213:8;:55::i;:::-;-1:-1:-1;20286:4:0;;19916:382;-1:-1:-1;;;;19916:382:0:o;14998:123::-;15105:6;15050:4;15087:26;;;:9;:26;;;;3733:13;3678:2;3733;:13;:::i;:::-;3725:21;;:5;:21;:::i;:::-;15073:40;;;;:::i;20304:202::-;20409:10;20383:4;20430:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;20430:32:0;;;;;;;;;;20383:4;;20400:76;;20421:7;;20430:45;;20465:10;;20430:45;:::i;15447:127::-;2559:10;2548:7;2461;2488:6;-1:-1:-1;;;;;2488:6:0;;2423:79;2548:7;-1:-1:-1;;;;;2548:21:0;;2540:66;;;;-1:-1:-1;;;2540:66:0;;;;;;;:::i;:::-;15505:24:::1;15524:4;15505:18;:24::i;:::-;15545:21;::::0;::::1;::::0;;;::::1;15447:127::o:0;12522:149::-;12569:4;12659;12639:19;;12616:22;:20;:22::i;:::-;:42;;;;:::i;:::-;:47;;;;:::i;:::-;12602:12;;-1:-1:-1;;;;;12602:12:0;12592:23;;;;:9;:23;;;;;;:71;;12522:149;-1:-1:-1;12522:149:0:o;15127:179::-;2559:10;2548:7;2461;2488:6;-1:-1:-1;;;;;2488:6:0;;2423:79;2548:7;-1:-1:-1;;;;;2548:21:0;;2540:66;;;;-1:-1:-1;;;2540:66:0;;;;;;;:::i;:::-;15208:12:::1;::::0;-1:-1:-1;;;;;15208:12:0;;::::1;15203:17:::0;;::::1;::::0;15195:49:::1;;;::::0;-1:-1:-1;;;15195:49:0;;8410:2:1;15195:49:0::1;::::0;::::1;8392:21:1::0;8449:2;8429:18;;;8422:30;8488:22;8468:18;;;8461:50;8528:18;;15195:49:0::1;8208:344:1::0;15195:49:0::1;-1:-1:-1::0;;;;;15255:10:0;::::1;;::::0;;;:5:::1;:10;::::0;;;;;;;;:14;;-1:-1:-1;;15255:14:0::1;::::0;::::1;;;::::0;;15285:13;;160:74:1;;;15285:13:0::1;::::0;133:18:1;15285:13:0::1;;;;;;;;15127:179:::0;;:::o;7860:189::-;2559:10;2548:7;2461;2488:6;-1:-1:-1;;;;;2488:6:0;;2423:79;2548:7;-1:-1:-1;;;;;2548:21:0;;2540:66;;;;-1:-1:-1;;;2540:66:0;;;;;;;:::i;:::-;3733:13:::1;3678:2;3733;:13;:::i;:::-;3725:21;::::0;:5:::1;:21;:::i;:::-;7923:16;:32:::0;;;3733:13:::1;::::0;:2:::1;:13;:::i;:::-;3725:21;::::0;:5:::1;:21;:::i;:::-;7966:20;:36:::0;8013:20:::1;:28:::0;;-1:-1:-1;;8013:28:0::1;::::0;;7860:189::o;8055:97::-;2559:10;2548:7;2461;2488:6;-1:-1:-1;;;;;2488:6:0;;2423:79;2548:7;-1:-1:-1;;;;;2548:21:0;;2540:66;;;;-1:-1:-1;;;2540:66:0;;;;;;;:::i;:::-;8116:20:::1;:28:::0;;-1:-1:-1;;8116:28:0::1;::::0;;8055:97::o;7301:551::-;2559:10;2548:7;2461;2488:6;-1:-1:-1;;;;;2488:6:0;;2423:79;2548:7;-1:-1:-1;;;;;2548:21:0;;2540:66;;;;-1:-1:-1;;;2540:66:0;;;;;;;:::i;:::-;7425:2:::1;7411:10;:16;;7403:35;;;::::0;-1:-1:-1;;;7403:35:0;;8759:2:1;7403:35:0::1;::::0;::::1;8741:21:1::0;8798:1;8778:18;;;8771:29;-1:-1:-1;;;8816:18:1;;;8809:36;8862:18;;7403:35:0::1;8557:329:1::0;7403:35:0::1;7480:4;7466:10;:18;;7458:39;;;::::0;-1:-1:-1;;;7458:39:0;;9093:2:1;7458:39:0::1;::::0;::::1;9075:21:1::0;9132:1;9112:18;;;9105:29;-1:-1:-1;;;9150:18:1;;;9143:38;9198:18;;7458:39:0::1;8891:331:1::0;7458:39:0::1;7556:4;7543:10:::0;3733:13:::1;3678:2;3733;:13;:::i;:::-;3725:21;::::0;:5:::1;:21;:::i;:::-;7527:26;;;;:::i;:::-;:33;;;;:::i;:::-;7508:16;:52:::0;7593:2:::1;7579:16:::0;::::1;;7571:38;;;::::0;-1:-1:-1;;;7571:38:0;;9429:2:1;7571:38:0::1;::::0;::::1;9411:21:1::0;9468:1;9448:18;;;9441:29;-1:-1:-1;;;9486:18:1;;;9479:39;9535:18;;7571:38:0::1;9227:332:1::0;7571:38:0::1;7642:5;7628:10;:19;;7620:40;;;::::0;-1:-1:-1;;;7620:40:0;;9093:2:1;7620:40:0::1;::::0;::::1;9075:21:1::0;9132:1;9112:18;;;9105:29;-1:-1:-1;;;9150:18:1;;;9143:38;9198:18;;7620:40:0::1;8891:331:1::0;7620:40:0::1;7733:5;7720:10:::0;3733:13:::1;3678:2;3733;:13;:::i;:::-;3725:21;::::0;:5:::1;:21;:::i;:::-;7704:26;;;;:::i;:::-;:34;;;;:::i;:::-;7681:20;:57:::0;7754:35:::1;::::0;1615:25:1;;;7754:35:0::1;::::0;1603:2:1;1588:18;7754:35:0::1;;;;;;;7805:39;::::0;1615:25:1;;;7805:39:0::1;::::0;1603:2:1;1588:18;7805:39:0::1;1469:177:1::0;16493:250:0;2559:10;2548:7;2461;2488:6;-1:-1:-1;;;;;2488:6:0;;2423:79;2548:7;-1:-1:-1;;;;;2548:21:0;;2540:66;;;;-1:-1:-1;;;2540:66:0;;;;;;;:::i;:::-;16575:12:::1;::::0;16613:39:::1;::::0;-1:-1:-1;;;16613:39:0;;16646:4:::1;16613:39;::::0;::::1;160:74:1::0;-1:-1:-1;;;;;16575:12:0;;::::1;::::0;16544:21:::1;::::0;16575:12;;16613:24:::1;::::0;133:18:1;;16613:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16663:43;::::0;-1:-1:-1;;;16663:43:0;;16687:10:::1;16663:43;::::0;::::1;9927:74:1::0;10017:18;;;10010:34;;;16599:53:0;;-1:-1:-1;;;;;;16663:23:0;::::1;::::0;::::1;::::0;9900:18:1;;16663:43:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;16722:13:0::1;::::0;::::1;::::0;;;::::1;16533:210;;16493:250::o:0;2632:142::-;2559:10;2548:7;2461;2488:6;-1:-1:-1;;;;;2488:6:0;;2423:79;2548:7;-1:-1:-1;;;;;2548:21:0;;2540:66;;;;-1:-1:-1;;;2540:66:0;;;;;;;:::i;:::-;2733:1:::1;2717:6:::0;;2696:40:::1;::::0;-1:-1:-1;;;;;2717:6:0;;::::1;::::0;2696:40:::1;::::0;2733:1;;2696:40:::1;2764:1;2747:19:::0;;-1:-1:-1;;;;;;2747:19:0::1;::::0;;2632:142::o;16749:447::-;2559:10;2548:7;2461;2488:6;-1:-1:-1;;;;;2488:6:0;;2423:79;2548:7;-1:-1:-1;;;;;2548:21:0;;2540:66;;;;-1:-1:-1;;;2540:66:0;;;;;;;:::i;:::-;16903:3:::1;16880:19;:26;;16872:90;;;::::0;-1:-1:-1;;;16872:90:0;;10507:2:1;16872:90:0::1;::::0;::::1;10489:21:1::0;10546:2;10526:18;;;10519:30;10585:34;10565:18;;;10558:62;-1:-1:-1;;;10636:18:1;;;10629:49;10695:19;;16872:90:0::1;10305:415:1::0;16872:90:0::1;16993:4;16981:8;:16;;:33;;;;-1:-1:-1::0;17001:13:0;16981:33:::1;16973:94;;;::::0;-1:-1:-1;;;16973:94:0;;10927:2:1;16973:94:0::1;::::0;::::1;10909:21:1::0;10966:2;10946:18;;;10939:30;11005:34;10985:18;;;10978:62;-1:-1:-1;;;11056:18:1;;;11049:46;11112:19;;16973:94:0::1;10725:412:1::0;16973:94:0::1;17078:15;:37:::0;;;;17126:16:::1;:27:::0;17164:13:::1;:24:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;17164:24:0;;::::1;::::0;;;::::1;::::0;;16749:447::o;7052:243::-;2559:10;2548:7;2461;2488:6;-1:-1:-1;;;;;2488:6:0;;2423:79;2548:7;-1:-1:-1;;;;;2548:21:0;;2540:66;;;;-1:-1:-1;;;2540:66:0;;;;;;;:::i;:::-;7168:3:::1;7145:21;7153:13:::0;7145:7;:21:::1;:::i;:::-;:26;;7137:35;;;::::0;::::1;;7183:6;:14:::0;;;7208:12:::1;:26:::0;;;7250:37:::1;::::0;;11316:25:1;;;11372:2;11357:18;;11350:34;;;7250:37:0::1;::::0;11289:18:1;7250:37:0::1;11142:248:1::0;6738:160:0;2559:10;2548:7;2461;2488:6;-1:-1:-1;;;;;2488:6:0;;2423:79;2548:7;-1:-1:-1;;;;;2548:21:0;;2540:66;;;;-1:-1:-1;;;2540:66:0;;;;;;;:::i;:::-;6817:15:::1;:25:::0;;-1:-1:-1;;;;;;6817:25:0::1;-1:-1:-1::0;;;;;6817:25:0;::::1;::::0;;::::1;::::0;;;6858:32:::1;::::0;160:74:1;;;6858:32:0::1;::::0;148:2:1;133:18;6858:32:0::1;;;;;;;;6738:160:::0;:::o;15312:129::-;2559:10;2548:7;2461;2488:6;-1:-1:-1;;;;;2488:6:0;;2423:79;2548:7;-1:-1:-1;;;;;2548:21:0;;2540:66;;;;-1:-1:-1;;;2540:66:0;;;;;;;:::i;:::-;15380:10:::1;:17:::0;;;::::1;;;;-1:-1:-1::0;;15380:17:0;;::::1;;::::0;;15413:20:::1;::::0;::::1;::::0;::::1;::::0;15391:6;1442:14:1;1435:22;1417:41;;1405:2;1390:18;;1277:187;17793:807:0;17866:4;2559:10;2548:7;2461;2488:6;-1:-1:-1;;;;;2488:6:0;;2423:79;2548:7;-1:-1:-1;;;;;2548:21:0;;2540:66;;;;-1:-1:-1;;;2540:66:0;;;;;;;:::i;:::-;17931:19:::1;;17908:20;;:42;;;;:::i;:::-;17890:15;:60;17882:106;;;::::0;-1:-1:-1;;;17882:106:0;;11597:2:1;17882:106:0::1;::::0;::::1;11579:21:1::0;;;11616:18;;;11609:30;11675:34;11655:18;;;11648:62;11727:18;;17882:106:0::1;11395:356:1::0;17882:106:0::1;18018:4;18007:7;:15;;17999:70;;;::::0;-1:-1:-1;;;17999:70:0;;11958:2:1;17999:70:0::1;::::0;::::1;11940:21:1::0;11997:2;11977:18;;;11970:30;12036:34;12016:18;;;12009:62;-1:-1:-1;;;12087:18:1;;;12080:40;12137:19;;17999:70:0::1;11756:406:1::0;17999:70:0::1;18103:15;18080:20;:38:::0;18175:12:::1;::::0;18160:28:::1;::::0;-1:-1:-1;;;18160:28:0;;-1:-1:-1;;;;;18175:12:0;;::::1;18160:28;::::0;::::1;160:74:1::0;18129:28:0::1;::::0;18160:4:::1;::::0;:14:::1;::::0;133:18:1;;18160:28:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18129:59:::0;-1:-1:-1;18199:20:0::1;18253:5;18222:30;18245:7:::0;18129:59;18222:30:::1;:::i;:::-;:36;;;;:::i;:::-;18199:59:::0;-1:-1:-1;18273:16:0;;18269:201:::1;;18315:12;::::0;-1:-1:-1;;;;;18315:12:0::1;18305:23;::::0;;;:9:::1;:23;::::0;;;;:37;;18330:12;;18305:23;:37:::1;::::0;18330:12;;18305:37:::1;:::i;:::-;::::0;;;-1:-1:-1;;4941:6:0::1;18357:21;::::0;;;:9:::1;:21;::::0;;:35;;18380:12;;18357:21;:35:::1;::::0;18380:12;;18357:35:::1;:::i;:::-;::::0;;;-1:-1:-1;;18421:12:0::1;::::0;18412:46:::1;::::0;1615:25:1;;;4941:6:0::1;::::0;-1:-1:-1;;;;;18421:12:0::1;::::0;18412:46:::1;::::0;1603:2:1;1588:18;18412:46:0::1;;;;;;;18269:201;18505:12;::::0;18529:11:::1;::::0;;-1:-1:-1;;;;;;18529:11:0;;;;-1:-1:-1;;;;;18505:12:0;;::::1;::::0;;;18529:9:::1;::::0;:11:::1;::::0;;::::1;::::0;18480:13:::1;::::0;18529:11;;;;;;;18480:13;18505:12;18529:11;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;18556:14:0::1;::::0;::::1;::::0;-1:-1:-1;18556:14:0;;-1:-1:-1;18556:14:0::1;-1:-1:-1::0;18588:4:0::1;::::0;17793:807;-1:-1:-1;;;;17793:807:0:o;20512:334::-;20649:10;20596:4;20637:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;20637:32:0;;;;;;;;;;20688:35;;;;20680:60;;;;-1:-1:-1;;;20680:60:0;;12369:2:1;20680:60:0;;;12351:21:1;12408:2;12388:18;;;12381:30;-1:-1:-1;;;12427:18:1;;;12420:42;12479:18;;20680:60:0;12167:336:1;20680:60:0;20751:65;20760:10;20772:7;20781:34;20800:15;20781:16;:34;:::i;20751:65::-;-1:-1:-1;20834:4:0;;20512:334;-1:-1:-1;;;20512:334:0:o;19282:164::-;19359:4;19376:40;19386:10;19398:9;19409:6;19376:9;:40::i;12012:504::-;2559:10;2548:7;2461;2488:6;-1:-1:-1;;;;;2488:6:0;;2423:79;2548:7;-1:-1:-1;;;;;2548:21:0;;2540:66;;;;-1:-1:-1;;;2540:66:0;;;;;;;:::i;:::-;12133:3:::1;12165:11:::0;;::::1;::::0;::::1;::::0;:25:::1;;;12184:6;12178:4;:12;;12165:25;:44;;;;;12203:6;12192:9;:17;;12165:44;12157:74;;;::::0;-1:-1:-1;;;12157:74:0;;12710:2:1;12157:74:0::1;::::0;::::1;12692:21:1::0;12749:2;12729:18;;;12722:30;-1:-1:-1;;;12768:18:1;;;12761:48;12826:18;;12157:74:0::1;12508:342:1::0;12157:74:0::1;4261:4;12250:13;12254:9:::0;12250:3;:13:::1;:::i;:::-;:30;12242:75;;;::::0;-1:-1:-1;;;12242:75:0;;13057:2:1;12242:75:0::1;::::0;::::1;13039:21:1::0;13096:2;13076:18;;;13069:30;13135:34;13115:18;;;13108:62;-1:-1:-1;;;13186:18:1;;;13179:31;13227:19;;12242:75:0::1;12855:397:1::0;12242:75:0::1;12328:6;:10:::0;;;12349:7:::1;:12:::0;;;12372:11:::1;:21:::0;;;12404:3:::1;:7:::0;;;12422:12:::1;:22:::0;;;12460:48:::1;::::0;;13516:25:1;;;13572:2;13557:18;;13550:34;;;13600:18;;;13593:34;;;13658:2;13643:18;;13636:34;;;13701:3;13686:19;;13679:35;;;12460:48:0::1;::::0;13503:3:1;13488:19;12460:48:0::1;;;;;;;12110:406;12012:504:::0;;;;;:::o;11716:290::-;2559:10;2548:7;2461;2488:6;-1:-1:-1;;;;;2488:6:0;;2423:79;2548:7;-1:-1:-1;;;;;2548:21:0;;2540:66;;;;-1:-1:-1;;;2540:66:0;;;;;;;:::i;:::-;11856:4:::1;11824:30;:36;;11816:45;;;::::0;::::1;;11872:19;:50:::0;;;11938:60:::1;::::0;1615:25:1;;;11938:60:0::1;::::0;1603:2:1;1588:18;11938:60:0::1;1469:177:1::0;11458:252:0;2559:10;2548:7;2461;2488:6;-1:-1:-1;;;;;2488:6:0;;2423:79;2548:7;-1:-1:-1;;;;;2548:21:0;;2540:66;;;;-1:-1:-1;;;2540:66:0;;;;;;;:::i;:::-;11575:2:::1;11550:23;:27;;11542:36;;;::::0;::::1;;11606:12;:36:::0;;;11658:44:::1;::::0;1615:25:1;;;11658:44:0::1;::::0;1603:2:1;1588:18;11658:44:0::1;1469:177:1::0;15580:251:0;2559:10;2548:7;2461;2488:6;-1:-1:-1;;;;;2488:6:0;;2423:79;2548:7;-1:-1:-1;;;;;2548:21:0;;2540:66;;;;-1:-1:-1;;;2540:66:0;;;;;;;:::i;:::-;15697:4:::1;-1:-1:-1::0;;;;;15680:22:0;::::1;::::0;15672:60:::1;;;::::0;-1:-1:-1;;;15672:60:0;;13927:2:1;15672:60:0::1;::::0;::::1;13909:21:1::0;13966:2;13946:18;;;13939:30;14005:28;13985:18;;;13978:56;14051:18;;15672:60:0::1;13725:350:1::0;15672:60:0::1;-1:-1:-1::0;;;;;15743:25:0;::::1;;::::0;;;:16:::1;:25;::::0;;;;;;;;:33;;-1:-1:-1;;15743:33:0::1;::::0;::::1;;::::0;;::::1;::::0;;;15792:31;;14248:74:1;;;14338:18;;;14331:50;15792:31:0::1;::::0;14221:18:1;15792:31:0::1;14080:307:1::0;2780:236:0;2559:10;2548:7;2461;2488:6;-1:-1:-1;;;;;2488:6:0;;2423:79;2548:7;-1:-1:-1;;;;;2548:21:0;;2540:66;;;;-1:-1:-1;;;2540:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2861:22:0;::::1;2853:73;;;::::0;-1:-1:-1;;;2853:73:0;;14594:2:1;2853:73:0::1;::::0;::::1;14576:21:1::0;14633:2;14613:18;;;14606:30;14672:34;14652:18;;;14645:62;-1:-1:-1;;;14723:18:1;;;14716:36;14769:19;;2853:73:0::1;14392:402:1::0;2853:73:0::1;2963:6;::::0;;2942:38:::1;::::0;-1:-1:-1;;;;;2942:38:0;;::::1;::::0;2963:6;::::1;::::0;2942:38:::1;::::0;::::1;2991:6;:17:::0;;-1:-1:-1;;;;;;2991:17:0::1;-1:-1:-1::0;;;;;2991:17:0;;;::::1;::::0;;;::::1;::::0;;2780:236::o;15837:191::-;2559:10;2548:7;2461;2488:6;-1:-1:-1;;;;;2488:6:0;;2423:79;2548:7;-1:-1:-1;;;;;2548:21:0;;2540:66;;;;-1:-1:-1;;;2540:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15935:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;;;;;:35;;-1:-1:-1;;15935:35:0::1;::::0;::::1;;::::0;;::::1;::::0;;;15986:34;;14248:74:1;;;14338:18;;;14331:50;15986:34:0::1;::::0;14221:18:1;15986:34:0::1;14080:307:1::0;6904:142:0;2559:10;2548:7;2461;2488:6;-1:-1:-1;;;;;2488:6:0;;2423:79;2548:7;-1:-1:-1;;;;;2548:21:0;;2540:66;;;;-1:-1:-1;;;2540:66:0;;;;;;;:::i;:::-;6977:9:::1;:19:::0;;-1:-1:-1;;;;;;6977:19:0::1;-1:-1:-1::0;;;;;6977:19:0;::::1;::::0;;::::1;::::0;;;7012:26:::1;::::0;160:74:1;;;7012:26:0::1;::::0;148:2:1;133:18;7012:26:0::1;14:226:1::0;19616:294:0;-1:-1:-1;;;;;19706:19:0;;19698:49;;;;-1:-1:-1;;;19698:49:0;;15001:2:1;19698:49:0;;;14983:21:1;15040:2;15020:18;;;15013:30;-1:-1:-1;;;15059:18:1;;;15052:47;15116:18;;19698:49:0;14799:341:1;19698:49:0;-1:-1:-1;;;;;19766:21:0;;19758:49;;;;-1:-1:-1;;;19758:49:0;;15347:2:1;19758:49:0;;;15329:21:1;15386:2;15366:18;;;15359:30;-1:-1:-1;;;15405:18:1;;;15398:45;15460:18;;19758:49:0;15145:339:1;19758:49:0;-1:-1:-1;;;;;19818:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;19870:32;;1615:25:1;;;19870:32:0;;1588:18:1;19870:32:0;;;;;;;19616:294;;;:::o;8162:931::-;-1:-1:-1;;;;;8255:20:0;;8247:51;;;;-1:-1:-1;;;8247:51:0;;15691:2:1;8247:51:0;;;15673:21:1;15730:2;15710:18;;;15703:30;-1:-1:-1;;;15749:18:1;;;15742:48;15807:18;;8247:51:0;15489:342:1;8247:51:0;-1:-1:-1;;;;;8317:23:0;;8309:52;;;;-1:-1:-1;;;8309:52:0;;16038:2:1;8309:52:0;;;16020:21:1;16077:2;16057:18;;;16050:30;-1:-1:-1;;;16096:18:1;;;16089:46;16152:18;;8309:52:0;15836:340:1;8309:52:0;8377:20;;;;8373:419;;;2461:7;2488:6;-1:-1:-1;;;;;8425:20:0;;;2488:6;;8425:20;;;;:46;;-1:-1:-1;;;;;;8449:22:0;;4991:42;8449:22;;8425:46;:75;;;;-1:-1:-1;8488:12:0;;-1:-1:-1;;;;;8475:25:0;;;8488:12;;8475:25;;8425:75;8421:352;;;8565:9;8536:39;;;;:28;:39;;;;;;8578:12;-1:-1:-1;8528:140:0;;;;-1:-1:-1;;;8528:140:0;;16383:2:1;8528:140:0;;;16365:21:1;16422:2;16402:18;;;16395:30;16461:34;16441:18;;;16434:62;16532:34;16512:18;;;16505:62;-1:-1:-1;;;16583:19:1;;;16576:40;16633:19;;8528:140:0;16181:477:1;8528:140:0;8724:9;8695:39;;;;:28;:39;;;;;8737:12;8695:54;;8421:352;-1:-1:-1;;;;;8805:24:0;;;;;;:16;:24;;;;;;;;;:55;;-1:-1:-1;;;;;;8833:27:0;;;;;;:16;:27;;;;;;;;8805:55;8802:284;;;8875:43;8892:6;8900:9;8911:6;8875:16;:43::i;:::-;8162:931;;;:::o;8802:284::-;8974:1;8958:15;;:17;8950:52;;;;-1:-1:-1;;;8950:52:0;;16865:2:1;8950:52:0;;;16847:21:1;16904:2;16884:18;;;16877:30;16943:25;16923:18;;;16916:53;16986:18;;8950:52:0;16663:347:1;8950:52:0;9017:39;9032:6;9039:9;9049:6;9017:14;:39::i;12677:1378::-;5915:27;:34;;-1:-1:-1;;5915:34:0;5945:4;5915:34;;;;;;12793:4:::1;5915:27:::0;12775:24;;;::::1;::::0;;;;;;;;12837:3:::1;::::0;12824:12:::1;::::0;12775:24;;5915:27;12824:16:::1;::::0;12837:3;12824:16:::1;:::i;:::-;12892:12;::::0;12878::::1;::::0;-1:-1:-1;;;;;12878:12:0::1;12851:16;12868:23:::0;;;:9:::1;:23;::::0;;;;;12810:30;;-1:-1:-1;12851:16:0;12905:4:::1;::::0;12868:36:::1;::::0;::::1;:::i;:::-;:41;;;;:::i;:::-;12851:58;;12923:8;12933:1;12923:11:::0;12920:22:::1;;12935:7;;;;;12920:22;12955:12;12952:134;;;-1:-1:-1::0;13012:4:0::1;12994:24;::::0;;;:9:::1;:24;::::0;;;;;12952:134:::1;;;13053:11;13037:15;:27;13034:52;;;13079:7;;;;;13034:52;13098:22;13131:17;:15;:17::i;:::-;:65;;13188:8;13174:12;;13162:11;:24;;;;:::i;:::-;13161:35;;;;:::i;:::-;13131:65;;;13149:1;13131:65;13098:98:::0;-1:-1:-1;13209:20:0::1;13231:29;13098:98:::0;13231:11;:29:::1;:::i;:::-;13209:51:::0;-1:-1:-1;13273:12:0::1;13286:19;13304:1;13286:17:::0;:19:::1;:::i;:::-;13273:32:::0;-1:-1:-1;13316:14:0::1;13331:23;13339:15:::0;13273:32;13331:23:::1;:::i;:::-;13316:38:::0;-1:-1:-1;13388:21:0::1;13420:27;13316:38:::0;13420:16:::1;:27::i;:::-;13458:11;13471:41;13495:17:::0;13471:21:::1;:41;:::i;:::-;13458:55:::0;-1:-1:-1;13529:19:0;;13526:135:::1;;13564:11;13595:9:::0;13579:14:::1;13586:7:::0;13579:6;:14:::1;:::i;:::-;13578:26;;;;:::i;:::-;13564:40;;13619:30;13633:7;13642:6;13619:13;:30::i;:::-;13549:112;13526:135;13671:18;13727:3;13714:12;;13690:21;:36;;;;:::i;:::-;:40;;;;:::i;:::-;13671:59;;13741:15;13788:3;13781:6;;13757:21;:30;;;;:::i;:::-;:34;;;;:::i;:::-;13741:50:::0;-1:-1:-1;13805:15:0;;13802:130:::1;;13850:15;::::0;:45:::1;::::0;13833:14:::1;::::0;-1:-1:-1;;;;;13850:15:0::1;::::0;13877:13;;13833:14;13850:45;13833:14;13850:45;13877:13;13850:15;:45:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;13802:130:0::1;13945:12:::0;;13942:106:::1;;13981:9;::::0;:36:::1;::::0;13970:8:::1;::::0;-1:-1:-1;;;;;13981:9:0::1;::::0;14002:10;;13970:8;13981:36;13970:8;13981:36;14002:10;13981:9;:36:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;13942:106:0::1;12743:1312;;;;;;;;;;;5960:1;-1:-1:-1::0;5972:27:0;:35;;-1:-1:-1;;5972:35:0;;;12677:1378::o;11113:339::-;-1:-1:-1;;;;;11226:17:0;;11205:18;11226:17;;;:9;:17;;;;;;11262:23;;;;11254:60;;;;-1:-1:-1;;;11254:60:0;;17427:2:1;11254:60:0;;;17409:21:1;17466:2;17446:18;;;17439:30;-1:-1:-1;;;17485:18:1;;;17478:54;17549:18;;11254:60:0;17225:348:1;11254:60:0;-1:-1:-1;;;;;11325:17:0;;;;;;:9;:17;;;;;:25;;11344:6;;11325:17;:25;;11344:6;;11325:25;:::i;:::-;;;;-1:-1:-1;;;;;;;11361:20:0;;;;;;:9;:20;;;;;:28;;11383:6;;11361:20;:28;;11383:6;;11361:28;:::i;:::-;;;;;;;;11427:9;-1:-1:-1;;;;;11411:33:0;11420:6;-1:-1:-1;;;;;11411:33:0;;11437:6;11411:33;;;;1615:25:1;;1603:2;1588:18;;1469:177;11411:33:0;;;;;;;;11194:258;11113:339;;;:::o;9105:1820::-;-1:-1:-1;;;;;9216:17:0;;9195:18;9216:17;;;:9;:17;;;;;;9252:23;;;;9244:60;;;;-1:-1:-1;;;9244:60:0;;17427:2:1;9244:60:0;;;17409:21:1;17466:2;17446:18;;;17439:30;-1:-1:-1;;;17485:18:1;;;17478:54;17549:18;;9244:60:0;17225:348:1;9244:60:0;-1:-1:-1;;;;;9338:26:0;;9315:20;9338:26;;;:18;:26;;;;;;;;;:59;;-1:-1:-1;;;;;;9368:29:0;;;;;;:18;:29;;;;;;;;9338:59;-1:-1:-1;;;;;9412:13:0;;;;;;:5;:13;;;;;;9315:82;;-1:-1:-1;9412:13:0;;:46;;;;;9443:15;9442:16;9412:46;9408:642;;;9511:20;;9501:6;:30;;9475:132;;;;-1:-1:-1;;;9475:132:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19122:18:0;;9622:32;19122:18;;;:9;:18;;;;;;9755:16;;9718:33;9745:6;19122:18;9718:33;:::i;:::-;:53;;9692:151;;;;-1:-1:-1;;;9692:151:0;;18189:2:1;9692:151:0;;;18171:21:1;18228:2;18208:18;;;18201:30;18267:34;18247:18;;;18240:62;-1:-1:-1;;;18318:18:1;;;18311:34;18362:19;;9692:151:0;17987:400:1;9692:151:0;9460:395;9408:642;;;-1:-1:-1;;;;;9879:16:0;;;;;;:5;:16;;;;;;;;:49;;;;;9913:15;9912:16;9879:49;9861:189;;;9973:20;;9963:6;:30;;9955:83;;;;-1:-1:-1;;;9955:83:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10073:13:0;;;10062:10;10073:13;;;:5;:13;;;;;;;10109:16;;;;;;;;10073:13;;;;;10109:16;;10155:145;;;;-1:-1:-1;10184:7:0;;10155:145;;;10211:5;10208:92;;;-1:-1:-1;10236:6:0;;10208:92;;;-1:-1:-1;10277:11:0;;10208:92;10324:12;;-1:-1:-1;;;;;10316:20:0;;;10324:12;;10316:20;;;;10315:37;;-1:-1:-1;10341:10:0;;;;;;;10340:11;10315:37;:69;;;;-1:-1:-1;10356:27:0;;;;10355:28;10315:69;10312:112;;;10399:25;10418:5;10399:18;:25::i;:::-;10441:27;;;;10440:28;:48;;;;-1:-1:-1;;;;;;10472:16:0;;;;;;:5;:16;;;;;;;;10440:48;:65;;;;-1:-1:-1;10492:13:0;;;;;;;10440:65;:120;;;;;10545:15;;10528:14;;:32;;;;:::i;:::-;10509:15;:51;;10440:120;10437:169;;;10576:18;:16;:18::i;:::-;;10437:169;10618:18;10637:44;10651:6;10659:3;10668:12;;10664:3;;:16;;;;:::i;:::-;10637:13;:44::i;:::-;10618:63;-1:-1:-1;10692:16:0;10709:20;10618:63;10709:6;:20;:::i;:::-;-1:-1:-1;;;;;10742:17:0;;;;;;:9;:17;;;;;:25;;10692:37;;-1:-1:-1;10761:6:0;;10742:17;;;:25;;10761:6;;10742:25;:::i;:::-;;;;-1:-1:-1;;10796:4:0;10778:24;;;;:9;:24;;;;;:41;;10806:13;;10778:24;:41;;10806:13;;10778:41;:::i;:::-;;;;-1:-1:-1;;;;;;;10830:20:0;;;;;;:9;:20;;;;;:33;;10852:11;;10830:20;:33;;10852:11;;10830:33;:::i;:::-;;;;;;;;10895:9;-1:-1:-1;;;;;10879:38:0;10888:6;-1:-1:-1;;;;;10879:38:0;;10905:11;10879:38;;;;1615:25:1;;1603:2;1588:18;;1469:177;10879:38:0;;;;;;;;9184:1741;;;;;;;9105:1820;;;:::o;14061:462::-;14151:10;;14119:52;;14136:4;;14151:10;;;-1:-1:-1;;;;;14151:10:0;14164:6;14119:8;:52::i;:::-;14206:16;;;14220:1;14206:16;;;;;;;;14182:21;;14206:16;;;;;;;;;;-1:-1:-1;14206:16:0;14182:40;;14251:4;14233;14238:1;14233:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;14233:23:0;;;-1:-1:-1;;;;;14233:23:0;;;;;14277:10;;;;;;;;;-1:-1:-1;;;;;14277:10:0;-1:-1:-1;;;;;14277:15:0;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14267:4;14272:1;14267:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14267:27:0;;;:7;;;;;;;;;:27;14311:10;;:186;;-1:-1:-1;;;14311:186:0;;:10;;;;;;;;:61;;:186;;14387:6;;14408:1;;14424:4;;14451;;14471:15;;14311:186;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14108:415;14061:462;:::o;14529:351::-;14637:10;;14605:57;;14622:4;;14637:10;;;-1:-1:-1;;;;;14637:10:0;14650:11;14605:8;:57::i;:::-;14673:10;;:199;;-1:-1:-1;;;14673:199:0;;14740:4;14673:199;;;20307:34:1;;;20357:18;;;20350:34;;;14786:1:0;20400:18:1;;;20393:34;;;20443:18;;;20436:34;20486:19;;;20479:44;14846:15:0;20539:19:1;;;20532:35;14673:10:0;;;;-1:-1:-1;;;;;14673:10:0;;:26;;14707:9;;20218:19:1;;14673:199:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;14529:351;;:::o;17202:583::-;17281:15;17264:14;:32;17353:12;;17338:28;;-1:-1:-1;;;17338:28:0;;-1:-1:-1;;;;;17353:12:0;;;17338:28;;;160:74:1;17248:4:0;;;;17338;;:14;;133:18:1;;17338:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17307:59;;17377:20;17440:5;17423:16;;17400:20;:39;;;;:::i;:::-;:45;;;;:::i;:::-;17377:68;-1:-1:-1;17460:16:0;;17456:201;;17502:12;;-1:-1:-1;;;;;17502:12:0;17492:23;;;;:9;:23;;;;;:37;;17517:12;;17492:23;:37;;17517:12;;17492:37;:::i;:::-;;;;-1:-1:-1;;4941:6:0;17544:21;;;;:9;:21;;;:35;;17567:12;;17544:21;:35;;17567:12;;17544:35;:::i;:::-;;;;-1:-1:-1;;17608:12:0;;17599:46;;1615:25:1;;;4941:6:0;;-1:-1:-1;;;;;17608:12:0;;17599:46;;1603:2:1;1588:18;17599:46:0;;;;;;;17456:201;17692:12;;17716:11;;;-1:-1:-1;;;;;;17716:11:0;;;;-1:-1:-1;;;;;17692:12:0;;;;;;17716:9;;:11;;;;;17667:13;;17716:11;;;;;;;17667:13;17692:12;17716:11;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17743:12:0;;;;-1:-1:-1;17743:12:0;;-1:-1:-1;17743:12:0;17773:4;17766:11;;;;;17202:583;:::o;10931:176::-;11016:4;11067:31;4261:4;;11067:31;:::i;:::-;11052:10;11041;11048:3;11041:6;:10;:::i;:::-;:21;;;;:::i;:::-;11040:59;;;;:::i;:::-;11033:66;10931:176;-1:-1:-1;;;;10931: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:456::-;1728:6;1736;1744;1797:2;1785:9;1776:7;1772:23;1768:32;1765:52;;;1813:1;1810;1803:12;1765:52;1852:9;1839:23;1871:31;1896:5;1871:31;:::i;:::-;1921:5;-1:-1:-1;1978:2:1;1963:18;;1950:32;1991:33;1950:32;1991:33;:::i;:::-;1651:456;;2043:7;;-1:-1:-1;;;2097:2:1;2082:18;;;;2069:32;;1651:456::o;2301:118::-;2387:5;2380:13;2373:21;2366:5;2363:32;2353:60;;2409:1;2406;2399:12;2424:382;2489:6;2497;2550:2;2538:9;2529:7;2525:23;2521:32;2518:52;;;2566:1;2563;2556:12;2518:52;2605:9;2592:23;2624:31;2649:5;2624:31;:::i;:::-;2674:5;-1:-1:-1;2731:2:1;2716:18;;2703:32;2744:30;2703:32;2744:30;:::i;:::-;2793:7;2783:17;;;2424:382;;;;;:::o;2811:247::-;2870:6;2923:2;2911:9;2902:7;2898:23;2894:32;2891:52;;;2939:1;2936;2929:12;2891:52;2978:9;2965:23;2997:31;3022:5;2997:31;:::i;:::-;3047:5;2811:247;-1:-1:-1;;;2811:247:1:o;3063:248::-;3131:6;3139;3192:2;3180:9;3171:7;3167:23;3163:32;3160:52;;;3208:1;3205;3198:12;3160:52;-1:-1:-1;;3231:23:1;;;3301:2;3286:18;;;3273:32;;-1:-1:-1;3063:248:1:o;3316:377::-;3390:6;3398;3406;3459:2;3447:9;3438:7;3434:23;3430:32;3427:52;;;3475:1;3472;3465:12;3427:52;3511:9;3498:23;3488:33;;3568:2;3557:9;3553:18;3540:32;3530:42;;3622:2;3611:9;3607:18;3594:32;3635:28;3657:5;3635:28;:::i;:::-;3682:5;3672:15;;;3316:377;;;;;:::o;3698:241::-;3754:6;3807:2;3795:9;3786:7;3782:23;3778:32;3775:52;;;3823:1;3820;3813:12;3775:52;3862:9;3849:23;3881:28;3903:5;3881:28;:::i;3944:180::-;4003:6;4056:2;4044:9;4035:7;4031:23;4027:32;4024:52;;;4072:1;4069;4062:12;4024:52;-1:-1:-1;4095:23:1;;3944:180;-1:-1:-1;3944:180:1:o;4129:454::-;4224:6;4232;4240;4248;4256;4309:3;4297:9;4288:7;4284:23;4280:33;4277:53;;;4326:1;4323;4316:12;4277:53;-1:-1:-1;;4349:23:1;;;4419:2;4404:18;;4391:32;;-1:-1:-1;4470:2:1;4455:18;;4442:32;;4521:2;4506:18;;4493:32;;-1:-1:-1;4572:3:1;4557:19;4544:33;;-1:-1:-1;4129:454:1;-1:-1:-1;4129:454:1:o;4588:388::-;4656:6;4664;4717:2;4705:9;4696:7;4692:23;4688:32;4685:52;;;4733:1;4730;4723:12;4685:52;4772:9;4759:23;4791:31;4816:5;4791:31;:::i;:::-;4841:5;-1:-1:-1;4898:2:1;4883:18;;4870:32;4911:33;4870:32;4911:33;:::i;4981:127::-;5042:10;5037:3;5033:20;5030:1;5023:31;5073:4;5070:1;5063:15;5097:4;5094:1;5087:15;5113:422;5202:1;5245:5;5202:1;5259:270;5280:7;5270:8;5267:21;5259:270;;;5339:4;5335:1;5331:6;5327:17;5321:4;5318:27;5315:53;;;5348:18;;:::i;:::-;5398:7;5388:8;5384:22;5381:55;;;5418:16;;;;5381:55;5497:22;;;;5457:15;;;;5259:270;;;5263:3;5113:422;;;;;:::o;5540:806::-;5589:5;5619:8;5609:80;;-1:-1:-1;5660:1:1;5674:5;;5609:80;5708:4;5698:76;;-1:-1:-1;5745:1:1;5759:5;;5698:76;5790:4;5808:1;5803:59;;;;5876:1;5871:130;;;;5783:218;;5803:59;5833:1;5824:10;;5847:5;;;5871:130;5908:3;5898:8;5895:17;5892:43;;;5915:18;;:::i;:::-;-1:-1:-1;;5971:1:1;5957:16;;5986:5;;5783:218;;6085:2;6075:8;6072:16;6066:3;6060:4;6057:13;6053:36;6047:2;6037:8;6034:16;6029:2;6023:4;6020:12;6016:35;6013:77;6010:159;;;-1:-1:-1;6122:19:1;;;6154:5;;6010:159;6201:34;6226:8;6220:4;6201:34;:::i;:::-;6271:6;6267:1;6263:6;6259:19;6250:7;6247:32;6244:58;;;6282:18;;:::i;:::-;6320:20;;5540:806;-1:-1:-1;;;5540:806:1:o;6351:140::-;6409:5;6438:47;6479:4;6469:8;6465:19;6459:4;6438:47;:::i;6496:168::-;6569:9;;;6600;;6617:15;;;6611:22;;6597:37;6587:71;;6638:18;;:::i;6669:356::-;6871:2;6853:21;;;6890:18;;;6883:30;6949:34;6944:2;6929:18;;6922:62;7016:2;7001:18;;6669:356::o;7374:217::-;7414:1;7440;7430:132;;7484:10;7479:3;7475:20;7472:1;7465:31;7519:4;7516:1;7509:15;7547:4;7544:1;7537:15;7430:132;-1:-1:-1;7576:9:1;;7374:217::o;7945:128::-;8012:9;;;8033:11;;;8030:37;;;8047:18;;:::i;8078:125::-;8143:9;;;8164:10;;;8161:36;;;8177:18;;:::i;9564:184::-;9634:6;9687:2;9675:9;9666:7;9662:23;9658:32;9655:52;;;9703:1;9700;9693:12;9655:52;-1:-1:-1;9726:16:1;;9564:184;-1:-1:-1;9564:184:1:o;10055:245::-;10122:6;10175:2;10163:9;10154:7;10150:23;10146:32;10143:52;;;10191:1;10188;10181:12;10143:52;10223:9;10217:16;10242:28;10264:5;10242:28;:::i;17578:404::-;17780:2;17762:21;;;17819:2;17799:18;;;17792:30;17858:34;17853:2;17838:18;;17831:62;-1:-1:-1;;;17924:2:1;17909:18;;17902:38;17972:3;17957:19;;17578:404::o;18524:127::-;18585:10;18580:3;18576:20;18573:1;18566:31;18616:4;18613:1;18606:15;18640:4;18637:1;18630:15;18656:251;18726:6;18779:2;18767:9;18758:7;18754:23;18750:32;18747:52;;;18795:1;18792;18785:12;18747:52;18827:9;18821:16;18846:31;18871:5;18846:31;:::i;18912:1026::-;19174:4;19222:3;19211:9;19207:19;19253:6;19242:9;19235:25;19279:2;19317:6;19312:2;19301:9;19297:18;19290:34;19360:3;19355:2;19344:9;19340:18;19333:31;19384:6;19419;19413:13;19450:6;19442;19435:22;19488:3;19477:9;19473:19;19466:26;;19527:2;19519:6;19515:15;19501:29;;19548:1;19558:218;19572:6;19569:1;19566:13;19558:218;;;19637:13;;-1:-1:-1;;;;;19633:62:1;19621:75;;19751:15;;;;19716:12;;;;19594:1;19587:9;19558:218;;;-1:-1:-1;;;;;;;19832:55:1;;;;19827:2;19812:18;;19805:83;-1:-1:-1;;;19919:3:1;19904:19;19897:35;19793:3;18912:1026;-1:-1:-1;;;18912:1026:1:o;20578:306::-;20666:6;20674;20682;20735:2;20723:9;20714:7;20710:23;20706:32;20703:52;;;20751:1;20748;20741:12;20703:52;20780:9;20774:16;20764:26;;20830:2;20819:9;20815:18;20809:25;20799:35;;20874:2;20863:9;20859:18;20853:25;20843:35;;20578:306;;;;;:::o

Swarm Source

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