ETH Price: $2,303.70 (-2.76%)

Token

Cat Coin Community (CAT)
 

Overview

Max Total Supply

1,000,000,000,000,000 CAT

Holders

32

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.0276 CAT

Value
$0.00
0xbcc6995d21794727ad0e3e6be2107b188bb8834b
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:
CAT

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-09-10
*/

// SPDX-License-Identifier: NOLICENSE

pragma solidity ^0.8.10;

interface IERC20 {
    function totalSupply() external view returns (uint256);

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

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

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

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        _setOwner(_msgSender());
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

interface IRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline) external;
}

contract CAT is Context, IERC20, Ownable {

    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _isExcluded;
    mapping (address => bool) private _isBot;

    address[] private _excluded;

    bool public swapEnabled = true;
    bool private swapping;

    IRouter public router;
    address public pair;

    uint8 private constant _decimals = 9;
    uint256 private constant MAX = ~uint256(0);

    uint256 private _tTotal = 1e15 * 10**_decimals;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));

    
    uint256 public swapTokensAtAmount = 15_000_000_000_000 * 10**_decimals;
    
    uint256 public maxSellAmount = 1_000_000_000_000_000 * 10**_decimals;
    uint256 public maxBuyAmount = 1_000_000_000_000_000 * 10**_decimals;
    uint256 public maxWalletBalance = 1_000_000_000_000_000 * 10**_decimals;

    address public marketingAddress = 0x662c875D77E5Ac24d1a86CF78B90a0e1Ce824019;
    address public devAddress = 0x037DC9B03E344A0b77719F31D1B5C817FBC976FC;

    string private constant _name = "Cat Coin Community";
    string private constant _symbol = "CAT";


    struct Taxes {
      uint256 rfi;
      uint256 dev;
      uint256 marketing;
      uint256 liquidity;
    }

    Taxes public taxes = Taxes(0,0,8,0);
    Taxes public sellTaxes = Taxes(0,0,10,0);

    struct TotFeesPaidStruct{
        uint256 rfi;
        uint256 marketing;
        uint256 dev;
        uint256 liquidity;
    }
    TotFeesPaidStruct public totFeesPaid;

    struct valuesFromGetValues{
      uint256 rAmount;
      uint256 rTransferAmount;
      uint256 rRfi;
      uint256 rMarketing;
      uint256 rDev;
      uint256 rLiquidity;
      uint256 tTransferAmount;
      uint256 tRfi;
      uint256 tMarketing;
      uint256 tDev;
      uint256 tLiquidity;
    }

    event FeesChanged();

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

    constructor () {
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory())
            .createPair(address(this), _router.WETH());

        router = _router;
        pair = _pair;
        
        excludeFromReward(pair);

        _rOwned[owner()] = _rTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[marketingAddress]=true;
        _isExcludedFromFee[devAddress] = true;

        emit Transfer(address(0), owner(), _tTotal);
    }

    function name() public pure returns (string memory) {
        return _name;
    }
    function symbol() public pure returns (string memory) {
        return _symbol;
    }
    function decimals() public pure returns (uint8) {
        return _decimals;
    }

    function totalSupply() public view override returns (uint256) {
        return _tTotal;
    }

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

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

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

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

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

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

    function isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function reflectionFromToken(uint256 tAmount, bool deductTransferRfi, bool isSell) public view returns(uint256) {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferRfi) {
            valuesFromGetValues memory s = _getValues(tAmount, false, isSell);
            return s.rAmount;
        } else {
            valuesFromGetValues memory s = _getValues(tAmount, true, isSell);
            return s.rTransferAmount;
        }
    }

    function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount/currentRate;
    }

    function excludeFromReward(address account) public onlyOwner() {
        require(!_isExcluded[account], "Account is already excluded");
        if(_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeInReward(address account) external onlyOwner() {
        require(_isExcluded[account], "Account is not excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }


    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }

    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }


    function isExcludedFromFee(address account) public view returns(bool) {
        return _isExcludedFromFee[account];
    }

    function setTaxes(uint256 _rfi, uint256 _marketing, uint256 _dev, uint256 _liquidity) public onlyOwner {
        taxes.rfi = _rfi;
        taxes.marketing = _marketing;
        taxes.dev = _dev;
        taxes.liquidity = _liquidity;
        emit FeesChanged();
    }
    
    function setSellTaxes(uint256 _rfi, uint256 _marketing, uint256 _dev, uint256 _liquidity) public onlyOwner {
        sellTaxes.rfi = _rfi;
        sellTaxes.marketing = _marketing;
        sellTaxes.dev = _dev;
        sellTaxes.liquidity = _liquidity;
        emit FeesChanged();
    }

    function _reflectRfi(uint256 rRfi, uint256 tRfi) private {
        _rTotal -=rRfi;
        totFeesPaid.rfi +=tRfi;
    }

    function _takeLiquidity(uint256 rLiquidity, uint256 tLiquidity) private {
        totFeesPaid.liquidity +=tLiquidity;

        if(_isExcluded[address(this)])
        {
            _tOwned[address(this)]+=tLiquidity;
        }
        _rOwned[address(this)] +=rLiquidity;
    }

    function _takeMarketing(uint256 rMarketing, uint256 tMarketing) private {
        totFeesPaid.marketing +=tMarketing;

        if(_isExcluded[address(this)])
        {
            _tOwned[address(this)]+=tMarketing;
        }
        _rOwned[address(this)] +=rMarketing;
    }
    
    function _takeDev(uint256 rDev, uint256 tDev) private {
        totFeesPaid.dev += tDev;

        if(_isExcluded[address(this)])
        {
            _tOwned[address(this)]+= tDev;
        }
        _rOwned[address(this)] += rDev;
    }

    function _getValues(uint256 tAmount, bool takeFee, bool isSell) private view returns (valuesFromGetValues memory to_return) {
        to_return = _getTValues(tAmount, takeFee, isSell);
        (to_return.rAmount, to_return.rTransferAmount, to_return.rRfi, to_return.rMarketing, to_return.rDev, to_return.rLiquidity) = _getRValues(to_return, tAmount, takeFee, _getRate());
        return to_return;
    }

    function _getTValues(uint256 tAmount, bool takeFee, bool isSell) private view returns (valuesFromGetValues memory s) {

        if(!takeFee) {
          s.tTransferAmount = tAmount;
          return s;
        }
        Taxes memory temp;
        if(isSell) temp = sellTaxes;
        else temp = taxes;
        
        s.tRfi = tAmount*temp.rfi/100;
        s.tMarketing = tAmount*temp.marketing/100;
        s.tLiquidity = tAmount*temp.liquidity/100;
        s.tDev = tAmount*temp.dev/100;
        s.tTransferAmount = tAmount-s.tRfi-s.tMarketing-s.tDev-s.tLiquidity;
        return s;
    }

    function _getRValues(valuesFromGetValues memory s, uint256 tAmount, bool takeFee, uint256 currentRate) private pure returns (uint256 rAmount, uint256 rTransferAmount, uint256 rRfi,uint256 rMarketing, uint256 rDev, uint256 rLiquidity) {
        rAmount = tAmount*currentRate;

        if(!takeFee) {
          return(rAmount, rAmount, 0,0,0,0);
        }

        rRfi = s.tRfi*currentRate;
        rMarketing = s.tMarketing*currentRate;
        rDev = s.tDev*currentRate;
        rLiquidity = s.tLiquidity*currentRate;
        rTransferAmount =  rAmount-rRfi-rMarketing-rDev-rLiquidity;
        return (rAmount, rTransferAmount, rRfi,rMarketing,rDev,rLiquidity);
    }

    function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply/tSupply;
    }

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply-_rOwned[_excluded[i]];
            tSupply = tSupply-_tOwned[_excluded[i]];
        }
        if (rSupply < _rTotal/_tTotal) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(amount <= balanceOf(from),"You are trying to transfer more than your balance");
        require(!_isBot[from] && !_isBot[to], "You are a bot");
                
        if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to] && !swapping){
            if(from == pair){
                require(amount <= maxBuyAmount, "You are exceeding maxBuyAmount");
            }
            if(to == pair){
                require(amount <= maxSellAmount, "You are exceeding maxSellAmount");
            }
            if(to != pair){
                require(balanceOf(to) + amount <= maxWalletBalance, "You are exceeding maxWalletBalance");
            }
        }
        
        bool canSwap = balanceOf(address(this)) >= swapTokensAtAmount;
        if(!swapping && swapEnabled && canSwap && from != pair && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]){
            swapAndLiquify(swapTokensAtAmount);
        }

        _tokenTransfer(from, to, amount, !(_isExcludedFromFee[from] || _isExcludedFromFee[to]), to == pair);
    }


    //this method is responsible for taking all fee, if takeFee is true
    function _tokenTransfer(address sender, address recipient, uint256 tAmount, bool takeFee, bool isSell) private {
        valuesFromGetValues memory s = _getValues(tAmount, takeFee, isSell);

        if (_isExcluded[sender] ) {  //from excluded
                _tOwned[sender] = _tOwned[sender]-tAmount;
        }
        if (_isExcluded[recipient]) { //to excluded
                _tOwned[recipient] = _tOwned[recipient]+s.tTransferAmount;
        }

        _rOwned[sender] = _rOwned[sender]-s.rAmount;
        _rOwned[recipient] = _rOwned[recipient]+s.rTransferAmount;
        
        if(s.rRfi > 0 || s.tRfi > 0) _reflectRfi(s.rRfi, s.tRfi);
        if(s.rLiquidity > 0 || s.tLiquidity > 0) {
            _takeLiquidity(s.rLiquidity,s.tLiquidity);
        }
        if(s.rMarketing > 0 || s.tMarketing > 0){
            _takeMarketing(s.rMarketing, s.tMarketing);
        }
        if(s.rDev > 0 || s.tDev > 0){
            _takeDev(s.rDev, s.tDev);
        }
        
        emit Transfer(sender, recipient, s.tTransferAmount);
        emit Transfer(sender, address(this), s.tLiquidity + s.tDev + s.tMarketing);
        
    }

    function swapAndLiquify(uint256 tokens) private lockTheSwap{
       // Split the contract balance into halves
        uint256 denominator = (sellTaxes.liquidity + sellTaxes.marketing + sellTaxes.dev) * 2;
        uint256 tokensToAddLiquidityWith = tokens * sellTaxes.liquidity / denominator;
        uint256 toSwap = tokens - tokensToAddLiquidityWith;

        uint256 initialBalance = address(this).balance;

        swapTokensForBNB(toSwap);

        uint256 deltaBalance = address(this).balance - initialBalance;
        uint256 unitBalance= deltaBalance / (denominator - sellTaxes.liquidity);
        uint256 bnbToAddLiquidityWith = unitBalance * sellTaxes.liquidity;

        if(bnbToAddLiquidityWith > 0){
            // Add liquidity to pancake
            addLiquidity(tokensToAddLiquidityWith, bnbToAddLiquidityWith);
        }

        uint256 marketingAmt = unitBalance * 2 * sellTaxes.marketing;
        if(marketingAmt > 0){
            payable(marketingAddress).transfer(marketingAmt);
        }
        
        uint256 devAmt = unitBalance * 2 * sellTaxes.dev;
        if(devAmt > 0){
            payable(devAddress).transfer(devAmt);
        }
    }

    function addLiquidity(uint256 tokenAmount, uint256 bnbAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(router), tokenAmount);

        // add the liquidity
        router.addLiquidityETH{value: bnbAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            address(0),
            block.timestamp
        );
    }

    function swapTokensForBNB(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        _approve(address(this), address(router), tokenAmount);

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

    function updateMarketingWallet(address newWallet) external onlyOwner{
        marketingAddress = newWallet;
    }
    
    function updateDevWallet(address newDevWallet) external onlyOwner{
        devAddress = newDevWallet;
    }
    
    function updateMaxWalletBalance(uint256 amount) external onlyOwner{
        maxWalletBalance = amount * 10**_decimals;
    }

    function updatMaxBuyAmt(uint256 amount) external onlyOwner{
        maxBuyAmount = amount * 10**_decimals;
    }
    
    function updatMaxSellAmt(uint256 amount) external onlyOwner{
        maxSellAmount = amount * 10**_decimals;
    }
    
    function updateSwapTokensAtAmount(uint256 amount) external onlyOwner{
        swapTokensAtAmount = amount * 10**_decimals;
    }

    function updateSwapEnabled(bool _enabled) external onlyOwner{
        swapEnabled = _enabled;
    }

    function setAntibot(address account, bool state) external onlyOwner{
        require(_isBot[account] != state, 'Value already set');
        _isBot[account] = state;
    }
    
    function bulkAntiBot(address[] memory accounts, bool state) external onlyOwner{
        for(uint256 i = 0; i < accounts.length; i++){
            _isBot[accounts[i]] = state;
        }
    }
    
    function updateRouterAndPair(address newRouter, address newPair) external onlyOwner{
        router = IRouter(newRouter);
        pair = newPair;
    }
    
    function isBot(address account) public view returns(bool){
        return _isBot[account];
    }
    

    //Use this in case BNB are sent to the contract by mistake
    function rescueBNB(uint256 weiAmount) external onlyOwner{
        require(address(this).balance >= weiAmount, "insufficient BNB balance");
        payable(msg.sender).transfer(weiAmount);
    }
    
    // Function to allow admin to claim *other* BEP20 tokens sent to this contract (by mistake)
    // Owner cannot transfer out CAT from this smart contract
    function rescueAnyBEP20Tokens(address _tokenAddr, address _to, uint _amount) public onlyOwner {
        require(_tokenAddr != address(this), "Cannot transfer out CAT!");
        IERC20(_tokenAddr).transfer(_to, _amount);
    }

    receive() external payable{
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"FeesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"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":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkAntiBot","outputs":[],"stateMutability":"nonpayable","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":"devAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","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":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferRfi","type":"bool"},{"internalType":"bool","name":"isSell","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueAnyBEP20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueBNB","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"setAntibot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rfi","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rfi","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","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":"taxes","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totFeesPaid","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updatMaxBuyAmt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updatMaxSellAmt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newDevWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxWalletBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"},{"internalType":"address","name":"newPair","type":"address"}],"name":"updateRouterAndPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526008805460ff191660011790556200001f6009600a620009db565b620000329066038d7ea4c68000620009ec565b600a819055620000459060001962000a24565b620000539060001962000a3b565b600b55620000646009600a620009db565b6200007690650da475abf000620009ec565b600c55620000876009600a620009db565b6200009a9066038d7ea4c68000620009ec565b600d55620000ab6009600a620009db565b620000be9066038d7ea4c68000620009ec565b600e55620000cf6009600a620009db565b620000e29066038d7ea4c68000620009ec565b600f55601080546001600160a01b031990811673662c875d77e5ac24d1a86cf78b90a0e1ce824019179091556011805490911673037dc9b03e344a0b77719f31d1b5c817fbc976fc17905560408051608080820183526000808352602080840182905260088486018190526060948501839052601283905560138390556014556015829055845192830185528183528201819052600a938201849052910181905260168190556017819055601891909155601955348015620001a357600080fd5b50620001af336200048d565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000209573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022f919062000a55565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200027d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a3919062000a55565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002f1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000317919062000a55565b600880546001600160a01b03808616620100000262010000600160b01b031990921691909117909155600980549183166001600160a01b0319909216821790559091506200036590620004dd565b600b54600160006200037f6000546001600160a01b031690565b6001600160a01b03166001600160a01b0316815260200190815260200160002081905550600160046000620003b96200066b60201b60201c565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526004909352818320805485166001908117909155601054821684528284208054861682179055601154909116835291208054909216179055620004356000546001600160a01b031690565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a546040516200047d91815260200190565b60405180910390a3505062000acb565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b031633146200053d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001600160a01b03811660009081526005602052604090205460ff1615620005a85760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015260640162000534565b6001600160a01b0381166000908152600160205260409020541562000605576001600160a01b038116600090815260016020526040902054620005eb906200067a565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319169091179055565b6000546001600160a01b031690565b6000600b54821115620006e35760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840162000534565b6000620006ef62000704565b9050620006fd818462000a80565b9392505050565b60008080620007126200072a565b909250905062000723818362000a80565b9250505090565b600b54600a546000918291825b60075481101562000892578260016000600784815481106200075d576200075d62000a97565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180620007cc5750816002600060078481548110620007a557620007a562000a97565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15620007e357600b54600a54945094505050509091565b6001600060078381548110620007fd57620007fd62000a97565b60009182526020808320909101546001600160a01b031683528201929092526040019020546200082e908462000a3b565b925060026000600783815481106200084a576200084a62000a97565b60009182526020808320909101546001600160a01b031683528201929092526040019020546200087b908362000a3b565b915080620008898162000aad565b91505062000737565b50600a54600b54620008a5919062000a80565b821015620008bd57600b54600a549350935050509091565b90939092509050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200091d578160001904821115620009015762000901620008c6565b808516156200090f57918102915b93841c9390800290620008e1565b509250929050565b6000826200093657506001620009d5565b816200094557506000620009d5565b81600181146200095e5760028114620009695762000989565b6001915050620009d5565b60ff8411156200097d576200097d620008c6565b50506001821b620009d5565b5060208310610133831016604e8410600b8410161715620009ae575081810a620009d5565b620009ba8383620008dc565b8060001904821115620009d157620009d1620008c6565b0290505b92915050565b6000620006fd60ff84168362000925565b600081600019048311821515161562000a095762000a09620008c6565b500290565b634e487b7160e01b600052601260045260246000fd5b60008262000a365762000a3662000a0e565b500690565b60008282101562000a505762000a50620008c6565b500390565b60006020828403121562000a6857600080fd5b81516001600160a01b0381168114620006fd57600080fd5b60008262000a925762000a9262000a0e565b500490565b634e487b7160e01b600052603260045260246000fd5b600060001982141562000ac45762000ac4620008c6565b5060010190565b612f948062000adb6000396000f3fe6080604052600436106102b25760003560e01c8063728f8eea11610175578063aacebbe3116100dc578063e116554511610095578063f2fde38b1161006f578063f2fde38b14610918578063f480fec214610938578063f66895a314610958578063f887ea401461097b57600080fd5b8063e1165545146108c2578063e2f45605146108e2578063ea2f0b37146108f857600080fd5b8063aacebbe3146107e6578063b31470a414610806578063bbde77c114610826578063c4fd856b1461083c578063d257b34f1461085c578063dd62ed3e1461087c57600080fd5b80639ba5e4d51161012e5780639ba5e4d514610723578063a12a7d6114610746578063a457c2d714610766578063a5ece94114610786578063a8aa1b31146107a6578063a9059cbb146107c657600080fd5b8063728f8eea1461062757806388e765ff1461066a57806388f82020146106805780638da5cb5b146106b9578063924de9b7146106d757806395d89b41146106f757600080fd5b80633bbac5791161021957806352390c02116101d257806352390c02146105695780635342acb41461058957806366d602ae146105c25780636ddd1713146105d857806370a08231146105f2578063715018a61461061257600080fd5b80633bbac579146104905780633f63d40f146104c957806340b28c2f146104e9578063437823ec14610509578063441b1d301461052957806347c230921461054957600080fd5b806327563c8c1161026b57806327563c8c146103bc5780632d838119146103dc578063313ce567146103fc5780633685d4191461041857806339509351146104385780633ad10ef61461045857600080fd5b806306fdde03146102be578063095ea7b31461030b57806318160ddd1461033b5780631816467f1461035a578063188b1bf11461037c57806323b872dd1461039c57600080fd5b366102b957005b600080fd5b3480156102ca57600080fd5b5060408051808201909152601281527143617420436f696e20436f6d6d756e69747960701b60208201525b6040516103029190612975565b60405180910390f35b34801561031757600080fd5b5061032b6103263660046129ef565b6109a1565b6040519015158152602001610302565b34801561034757600080fd5b50600a545b604051908152602001610302565b34801561036657600080fd5b5061037a610375366004612a1b565b6109b8565b005b34801561038857600080fd5b5061037a610397366004612a38565b610a0d565b3480156103a857600080fd5b5061032b6103b7366004612a51565b610a53565b3480156103c857600080fd5b5061037a6103d7366004612a38565b610b06565b3480156103e857600080fd5b5061034c6103f7366004612a38565b610b4c565b34801561040857600080fd5b5060405160098152602001610302565b34801561042457600080fd5b5061037a610433366004612a1b565b610bc9565b34801561044457600080fd5b5061032b6104533660046129ef565b610d80565b34801561046457600080fd5b50601154610478906001600160a01b031681565b6040516001600160a01b039091168152602001610302565b34801561049c57600080fd5b5061032b6104ab366004612a1b565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156104d557600080fd5b5061034c6104e4366004612aab565b610db7565b3480156104f557600080fd5b5061037a610504366004612aed565b610e43565b34801561051557600080fd5b5061037a610524366004612a1b565b610ea7565b34801561053557600080fd5b5061037a610544366004612a38565b610ef5565b34801561055557600080fd5b5061037a610564366004612a51565b610f9c565b34801561057557600080fd5b5061037a610584366004612a1b565b611098565b34801561059557600080fd5b5061032b6105a4366004612a1b565b6001600160a01b031660009081526004602052604090205460ff1690565b3480156105ce57600080fd5b5061034c600d5481565b3480156105e457600080fd5b5060085461032b9060ff1681565b3480156105fe57600080fd5b5061034c61060d366004612a1b565b6111eb565b34801561061e57600080fd5b5061037a61124a565b34801561063357600080fd5b5060125460135460145460155461064a9392919084565b604080519485526020850193909352918301526060820152608001610302565b34801561067657600080fd5b5061034c600e5481565b34801561068c57600080fd5b5061032b61069b366004612a1b565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156106c557600080fd5b506000546001600160a01b0316610478565b3480156106e357600080fd5b5061037a6106f2366004612b26565b611280565b34801561070357600080fd5b5060408051808201909152600381526210d05560ea1b60208201526102f5565b34801561072f57600080fd5b50601a54601b54601c54601d5461064a9392919084565b34801561075257600080fd5b5061037a610761366004612b43565b6112bd565b34801561077257600080fd5b5061032b6107813660046129ef565b61132a565b34801561079257600080fd5b50601054610478906001600160a01b031681565b3480156107b257600080fd5b50600954610478906001600160a01b031681565b3480156107d257600080fd5b5061032b6107e13660046129ef565b6113c5565b3480156107f257600080fd5b5061037a610801366004612a1b565b6113d2565b34801561081257600080fd5b5061037a610821366004612b8b565b61141e565b34801561083257600080fd5b5061034c600f5481565b34801561084857600080fd5b5061037a610857366004612a38565b6114b4565b34801561086857600080fd5b5061037a610877366004612a38565b6114fa565b34801561088857600080fd5b5061034c610897366004612aed565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156108ce57600080fd5b5061037a6108dd366004612c62565b611540565b3480156108ee57600080fd5b5061034c600c5481565b34801561090457600080fd5b5061037a610913366004612a1b565b6115f8565b34801561092457600080fd5b5061037a610933366004612a1b565b611643565b34801561094457600080fd5b5061037a610953366004612b43565b6116de565b34801561096457600080fd5b5060165460175460185460195461064a9392919084565b34801561098757600080fd5b50600854610478906201000090046001600160a01b031681565b60006109ae33848461174b565b5060015b92915050565b6000546001600160a01b031633146109eb5760405162461bcd60e51b81526004016109e290612c90565b60405180910390fd5b601180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610a375760405162461bcd60e51b81526004016109e290612c90565b610a436009600a612dbf565b610a4d9082612dce565b600f5550565b6000610a6084848461186f565b6001600160a01b038416600090815260036020908152604080832033845290915290205482811015610ae55760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016109e2565b610af98533610af48685612ded565b61174b565b60019150505b9392505050565b6000546001600160a01b03163314610b305760405162461bcd60e51b81526004016109e290612c90565b610b3c6009600a612dbf565b610b469082612dce565b600e5550565b6000600b54821115610bb35760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016109e2565b6000610bbd611d43565b9050610aff8184612e04565b6000546001600160a01b03163314610bf35760405162461bcd60e51b81526004016109e290612c90565b6001600160a01b03811660009081526005602052604090205460ff16610c5b5760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c7564656400000000000000000060448201526064016109e2565b60005b600754811015610d7c57816001600160a01b031660078281548110610c8557610c85612e26565b6000918252602090912001546001600160a01b03161415610d6a5760078054610cb090600190612ded565b81548110610cc057610cc0612e26565b600091825260209091200154600780546001600160a01b039092169183908110610cec57610cec612e26565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff191690556007805480610d4457610d44612e3c565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610d7481612e52565b915050610c5e565b5050565b3360008181526003602090815260408083206001600160a01b038716845290915281205490916109ae918590610af4908690612e6d565b6000600a54841115610e0b5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016109e2565b82610e28576000610e1e85600085611d66565b519150610aff9050565b6000610e3685600185611d66565b602001519150610aff9050565b6000546001600160a01b03163314610e6d5760405162461bcd60e51b81526004016109e290612c90565b6008805462010000600160b01b031916620100006001600160a01b0394851602179055600980546001600160a01b03191691909216179055565b6000546001600160a01b03163314610ed15760405162461bcd60e51b81526004016109e290612c90565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000546001600160a01b03163314610f1f5760405162461bcd60e51b81526004016109e290612c90565b80471015610f6f5760405162461bcd60e51b815260206004820152601860248201527f696e73756666696369656e7420424e422062616c616e6365000000000000000060448201526064016109e2565b604051339082156108fc029083906000818181858888f19350505050158015610d7c573d6000803e3d6000fd5b6000546001600160a01b03163314610fc65760405162461bcd60e51b81526004016109e290612c90565b6001600160a01b03831630141561101f5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f74207472616e73666572206f75742043415421000000000000000060448201526064016109e2565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af115801561106e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110929190612e85565b50505050565b6000546001600160a01b031633146110c25760405162461bcd60e51b81526004016109e290612c90565b6001600160a01b03811660009081526005602052604090205460ff161561112b5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016109e2565b6001600160a01b03811660009081526001602052604090205415611185576001600160a01b03811660009081526001602052604090205461116b90610b4c565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319169091179055565b6001600160a01b03811660009081526005602052604081205460ff161561122857506001600160a01b031660009081526002602052604090205490565b6001600160a01b0382166000908152600160205260409020546109b290610b4c565b6000546001600160a01b031633146112745760405162461bcd60e51b81526004016109e290612c90565b61127e6000611db0565b565b6000546001600160a01b031633146112aa5760405162461bcd60e51b81526004016109e290612c90565b6008805460ff1916911515919091179055565b6000546001600160a01b031633146112e75760405162461bcd60e51b81526004016109e290612c90565b60128490556014839055601382905560158190556040517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a150505050565b3360009081526003602090815260408083206001600160a01b0386168452909152812054828110156113ac5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016109e2565b6113bb3385610af48685612ded565b5060019392505050565b60006109ae33848461186f565b6000546001600160a01b031633146113fc5760405162461bcd60e51b81526004016109e290612c90565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146114485760405162461bcd60e51b81526004016109e290612c90565b60005b82518110156114af57816006600085848151811061146b5761146b612e26565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806114a781612e52565b91505061144b565b505050565b6000546001600160a01b031633146114de5760405162461bcd60e51b81526004016109e290612c90565b6114ea6009600a612dbf565b6114f49082612dce565b600d5550565b6000546001600160a01b031633146115245760405162461bcd60e51b81526004016109e290612c90565b6115306009600a612dbf565b61153a9082612dce565b600c5550565b6000546001600160a01b0316331461156a5760405162461bcd60e51b81526004016109e290612c90565b6001600160a01b03821660009081526006602052604090205460ff16151581151514156115cd5760405162461bcd60e51b815260206004820152601160248201527015985b1d5948185b1c9958591e481cd95d607a1b60448201526064016109e2565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146116225760405162461bcd60e51b81526004016109e290612c90565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b0316331461166d5760405162461bcd60e51b81526004016109e290612c90565b6001600160a01b0381166116d25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109e2565b6116db81611db0565b50565b6000546001600160a01b031633146117085760405162461bcd60e51b81526004016109e290612c90565b60168490556018839055601782905560198190556040517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a150505050565b6001600160a01b0383166117ad5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109e2565b6001600160a01b03821661180e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109e2565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166118d35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109e2565b6001600160a01b0382166119355760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109e2565b600081116119975760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016109e2565b6119a0836111eb565b811115611a095760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016109e2565b6001600160a01b03831660009081526006602052604090205460ff16158015611a4b57506001600160a01b03821660009081526006602052604090205460ff16155b611a875760405162461bcd60e51b815260206004820152600d60248201526c165bdd48185c99481848189bdd609a1b60448201526064016109e2565b6001600160a01b03831660009081526004602052604090205460ff16158015611ac957506001600160a01b03821660009081526004602052604090205460ff16155b8015611add5750600854610100900460ff16155b15611c37576009546001600160a01b0384811691161415611b4a57600e54811115611b4a5760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d6178427579416d6f756e74000060448201526064016109e2565b6009546001600160a01b0383811691161415611bb257600d54811115611bb25760405162461bcd60e51b815260206004820152601f60248201527f596f752061726520657863656564696e67206d617853656c6c416d6f756e740060448201526064016109e2565b6009546001600160a01b03838116911614611c3757600f5481611bd4846111eb565b611bde9190612e6d565b1115611c375760405162461bcd60e51b815260206004820152602260248201527f596f752061726520657863656564696e67206d617857616c6c657442616c616e604482015261636560f01b60648201526084016109e2565b6000600c54611c45306111eb565b6008549111159150610100900460ff16158015611c64575060085460ff165b8015611c6d5750805b8015611c8757506009546001600160a01b03858116911614155b8015611cac57506001600160a01b03841660009081526004602052604090205460ff16155b8015611cd157506001600160a01b03831660009081526004602052604090205460ff16155b15611ce157611ce1600c54611e00565b6001600160a01b0384166000908152600460205260409020546110929085908590859060ff1680611d2a57506001600160a01b03871660009081526004602052604090205460ff165b6009549015906001600160a01b03898116911614611f97565b6000806000611d50612263565b9092509050611d5f8183612e04565b9250505090565b611d6e61291b565b611d798484846123e6565b9050611d8e818585611d89611d43565b612559565b60a0870152608086015260608501526040840152602083015281529392505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6008805461ff00191661010017905560175460185460195460009291611e2591612e6d565b611e2f9190612e6d565b611e3a906002612dce565b905060008160166003015484611e509190612dce565b611e5a9190612e04565b90506000611e688285612ded565b905047611e748261260b565b6000611e808247612ded565b601954909150600090611e939087612ded565b611e9d9083612e04565b601954909150600090611eb09083612dce565b90508015611ec257611ec2868261278a565b601854600090611ed3846002612dce565b611edd9190612dce565b90508015611f21576010546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611f1f573d6000803e3d6000fd5b505b601754600090611f32856002612dce565b611f3c9190612dce565b90508015611f80576011546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611f7e573d6000803e3d6000fd5b505b50506008805461ff00191690555050505050505050565b6000611fa4848484611d66565b6001600160a01b03871660009081526005602052604090205490915060ff1615612006576001600160a01b038616600090815260026020526040902054611fec908590612ded565b6001600160a01b0387166000908152600260205260409020555b6001600160a01b03851660009081526005602052604090205460ff16156120695760c08101516001600160a01b03861660009081526002602052604090205461204f9190612e6d565b6001600160a01b0386166000908152600260205260409020555b80516001600160a01b03871660009081526001602052604090205461208e9190612ded565b6001600160a01b03808816600090815260016020908152604080832094909455840151918816815291909120546120c59190612e6d565b6001600160a01b03861660009081526001602052604090819020919091558101511515806120f7575060008160e00151115b1561210e5761210e81604001518260e00151612846565b60008160a00151118061212657506000816101400151115b1561213e5761213e8160a0015182610140015161287b565b60008160600151118061215657506000816101000151115b1561216e5761216e81606001518261010001516128f1565b60008160800151118061218657506000816101200151115b1561219e5761219e8160800151826101200151612906565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360c001516040516121e791815260200190565b60405180910390a3306001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8361010001518461012001518561014001516122409190612e6d565b61224a9190612e6d565b60405190815260200160405180910390a3505050505050565b600b54600a546000918291825b6007548110156123b55782600160006007848154811061229257612292612e26565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806122fd57508160026000600784815481106122d6576122d6612e26565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561231357600b54600a54945094505050509091565b600160006007838154811061232a5761232a612e26565b60009182526020808320909101546001600160a01b031683528201929092526040019020546123599084612ded565b9250600260006007838154811061237257612372612e26565b60009182526020808320909101546001600160a01b031683528201929092526040019020546123a19083612ded565b9150806123ad81612e52565b915050612270565b50600a54600b546123c69190612e04565b8210156123dd57600b54600a549350935050509091565b90939092509050565b6123ee61291b565b826123ff5760c08101849052610aff565b61242a6040518060800160405280600081526020016000815260200160008152602001600081525090565b821561245f5750604080516080810182526016548152601754602082015260185491810191909152601954606082015261248a565b5060408051608081018252601254815260135460208201526014549181019190915260155460608201525b80516064906124999087612dce565b6124a39190612e04565b60e083015260408101516064906124ba9087612dce565b6124c49190612e04565b61010083015260608101516064906124dc9087612dce565b6124e69190612e04565b61014083015260208101516064906124fe9087612dce565b6125089190612e04565b610120830181905261014083015161010084015160e085015191929161252e9089612ded565b6125389190612ded565b6125429190612ded565b61254c9190612ded565b60c0830152509392505050565b6000808080808061256a878a612dce565b955087612585575084935060009250829150819050806125fe565b868a60e001516125959190612dce565b9350868a61010001516125a89190612dce565b9250868a61012001516125bb9190612dce565b9150868a61014001516125ce9190612dce565b90508082846125dd878a612ded565b6125e79190612ded565b6125f19190612ded565b6125fb9190612ded565b94505b9499939850945094509450565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061264057612640612e26565b60200260200101906001600160a01b031690816001600160a01b031681525050600860029054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d79190612ea2565b816001815181106126ea576126ea612e26565b6001600160a01b039283166020918202929092010152600854612716913091620100009004168461174b565b60085460405163791ac94760e01b8152620100009091046001600160a01b03169063791ac94790612754908590600090869030904290600401612ebf565b600060405180830381600087803b15801561276e57600080fd5b505af1158015612782573d6000803e3d6000fd5b505050505050565b6008546127a89030906201000090046001600160a01b03168461174b565b60085460405163f305d71960e01b8152306004820152602481018490526000604482018190526064820181905260848201524260a4820152620100009091046001600160a01b03169063f305d71990839060c40160606040518083038185885af115801561281a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061283f9190612f30565b5050505050565b81600b60008282546128589190612ded565b9091555050601a8054829190600090612872908490612e6d565b90915550505050565b80601a60030160008282546128909190612e6d565b90915550503060009081526005602052604090205460ff16156128d25730600090815260026020526040812080548392906128cc908490612e6d565b90915550505b3060009081526001602052604081208054849290612872908490612e6d565b80601a60010160008282546128909190612e6d565b80601a60020160008282546128909190612e6d565b60405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600060208083528351808285015260005b818110156129a257858101830151858201604001528201612986565b818111156129b4576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146116db57600080fd5b80356129ea816129ca565b919050565b60008060408385031215612a0257600080fd5b8235612a0d816129ca565b946020939093013593505050565b600060208284031215612a2d57600080fd5b8135610aff816129ca565b600060208284031215612a4a57600080fd5b5035919050565b600080600060608486031215612a6657600080fd5b8335612a71816129ca565b92506020840135612a81816129ca565b929592945050506040919091013590565b80151581146116db57600080fd5b80356129ea81612a92565b600080600060608486031215612ac057600080fd5b833592506020840135612ad281612a92565b91506040840135612ae281612a92565b809150509250925092565b60008060408385031215612b0057600080fd5b8235612b0b816129ca565b91506020830135612b1b816129ca565b809150509250929050565b600060208284031215612b3857600080fd5b8135610aff81612a92565b60008060008060808587031215612b5957600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215612b9e57600080fd5b823567ffffffffffffffff80821115612bb657600080fd5b818501915085601f830112612bca57600080fd5b8135602082821115612bde57612bde612b75565b8160051b604051601f19603f83011681018181108682111715612c0357612c03612b75565b604052928352818301935084810182019289841115612c2157600080fd5b948201945b83861015612c4657612c37866129df565b85529482019493820193612c26565b9650612c559050878201612aa0565b9450505050509250929050565b60008060408385031215612c7557600080fd5b8235612c80816129ca565b91506020830135612b1b81612a92565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115612d16578160001904821115612cfc57612cfc612cc5565b80851615612d0957918102915b93841c9390800290612ce0565b509250929050565b600082612d2d575060016109b2565b81612d3a575060006109b2565b8160018114612d505760028114612d5a57612d76565b60019150506109b2565b60ff841115612d6b57612d6b612cc5565b50506001821b6109b2565b5060208310610133831016604e8410600b8410161715612d99575081810a6109b2565b612da38383612cdb565b8060001904821115612db757612db7612cc5565b029392505050565b6000610aff60ff841683612d1e565b6000816000190483118215151615612de857612de8612cc5565b500290565b600082821015612dff57612dff612cc5565b500390565b600082612e2157634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b6000600019821415612e6657612e66612cc5565b5060010190565b60008219821115612e8057612e80612cc5565b500190565b600060208284031215612e9757600080fd5b8151610aff81612a92565b600060208284031215612eb457600080fd5b8151610aff816129ca565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612f0f5784516001600160a01b031683529383019391830191600101612eea565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612f4557600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212204634731d3379d656fbc0343adc1cfe4b8c8eed0a8f4bb127299e36c0b7a3b1a664736f6c634300080a0033

Deployed Bytecode

0x6080604052600436106102b25760003560e01c8063728f8eea11610175578063aacebbe3116100dc578063e116554511610095578063f2fde38b1161006f578063f2fde38b14610918578063f480fec214610938578063f66895a314610958578063f887ea401461097b57600080fd5b8063e1165545146108c2578063e2f45605146108e2578063ea2f0b37146108f857600080fd5b8063aacebbe3146107e6578063b31470a414610806578063bbde77c114610826578063c4fd856b1461083c578063d257b34f1461085c578063dd62ed3e1461087c57600080fd5b80639ba5e4d51161012e5780639ba5e4d514610723578063a12a7d6114610746578063a457c2d714610766578063a5ece94114610786578063a8aa1b31146107a6578063a9059cbb146107c657600080fd5b8063728f8eea1461062757806388e765ff1461066a57806388f82020146106805780638da5cb5b146106b9578063924de9b7146106d757806395d89b41146106f757600080fd5b80633bbac5791161021957806352390c02116101d257806352390c02146105695780635342acb41461058957806366d602ae146105c25780636ddd1713146105d857806370a08231146105f2578063715018a61461061257600080fd5b80633bbac579146104905780633f63d40f146104c957806340b28c2f146104e9578063437823ec14610509578063441b1d301461052957806347c230921461054957600080fd5b806327563c8c1161026b57806327563c8c146103bc5780632d838119146103dc578063313ce567146103fc5780633685d4191461041857806339509351146104385780633ad10ef61461045857600080fd5b806306fdde03146102be578063095ea7b31461030b57806318160ddd1461033b5780631816467f1461035a578063188b1bf11461037c57806323b872dd1461039c57600080fd5b366102b957005b600080fd5b3480156102ca57600080fd5b5060408051808201909152601281527143617420436f696e20436f6d6d756e69747960701b60208201525b6040516103029190612975565b60405180910390f35b34801561031757600080fd5b5061032b6103263660046129ef565b6109a1565b6040519015158152602001610302565b34801561034757600080fd5b50600a545b604051908152602001610302565b34801561036657600080fd5b5061037a610375366004612a1b565b6109b8565b005b34801561038857600080fd5b5061037a610397366004612a38565b610a0d565b3480156103a857600080fd5b5061032b6103b7366004612a51565b610a53565b3480156103c857600080fd5b5061037a6103d7366004612a38565b610b06565b3480156103e857600080fd5b5061034c6103f7366004612a38565b610b4c565b34801561040857600080fd5b5060405160098152602001610302565b34801561042457600080fd5b5061037a610433366004612a1b565b610bc9565b34801561044457600080fd5b5061032b6104533660046129ef565b610d80565b34801561046457600080fd5b50601154610478906001600160a01b031681565b6040516001600160a01b039091168152602001610302565b34801561049c57600080fd5b5061032b6104ab366004612a1b565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156104d557600080fd5b5061034c6104e4366004612aab565b610db7565b3480156104f557600080fd5b5061037a610504366004612aed565b610e43565b34801561051557600080fd5b5061037a610524366004612a1b565b610ea7565b34801561053557600080fd5b5061037a610544366004612a38565b610ef5565b34801561055557600080fd5b5061037a610564366004612a51565b610f9c565b34801561057557600080fd5b5061037a610584366004612a1b565b611098565b34801561059557600080fd5b5061032b6105a4366004612a1b565b6001600160a01b031660009081526004602052604090205460ff1690565b3480156105ce57600080fd5b5061034c600d5481565b3480156105e457600080fd5b5060085461032b9060ff1681565b3480156105fe57600080fd5b5061034c61060d366004612a1b565b6111eb565b34801561061e57600080fd5b5061037a61124a565b34801561063357600080fd5b5060125460135460145460155461064a9392919084565b604080519485526020850193909352918301526060820152608001610302565b34801561067657600080fd5b5061034c600e5481565b34801561068c57600080fd5b5061032b61069b366004612a1b565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156106c557600080fd5b506000546001600160a01b0316610478565b3480156106e357600080fd5b5061037a6106f2366004612b26565b611280565b34801561070357600080fd5b5060408051808201909152600381526210d05560ea1b60208201526102f5565b34801561072f57600080fd5b50601a54601b54601c54601d5461064a9392919084565b34801561075257600080fd5b5061037a610761366004612b43565b6112bd565b34801561077257600080fd5b5061032b6107813660046129ef565b61132a565b34801561079257600080fd5b50601054610478906001600160a01b031681565b3480156107b257600080fd5b50600954610478906001600160a01b031681565b3480156107d257600080fd5b5061032b6107e13660046129ef565b6113c5565b3480156107f257600080fd5b5061037a610801366004612a1b565b6113d2565b34801561081257600080fd5b5061037a610821366004612b8b565b61141e565b34801561083257600080fd5b5061034c600f5481565b34801561084857600080fd5b5061037a610857366004612a38565b6114b4565b34801561086857600080fd5b5061037a610877366004612a38565b6114fa565b34801561088857600080fd5b5061034c610897366004612aed565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156108ce57600080fd5b5061037a6108dd366004612c62565b611540565b3480156108ee57600080fd5b5061034c600c5481565b34801561090457600080fd5b5061037a610913366004612a1b565b6115f8565b34801561092457600080fd5b5061037a610933366004612a1b565b611643565b34801561094457600080fd5b5061037a610953366004612b43565b6116de565b34801561096457600080fd5b5060165460175460185460195461064a9392919084565b34801561098757600080fd5b50600854610478906201000090046001600160a01b031681565b60006109ae33848461174b565b5060015b92915050565b6000546001600160a01b031633146109eb5760405162461bcd60e51b81526004016109e290612c90565b60405180910390fd5b601180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610a375760405162461bcd60e51b81526004016109e290612c90565b610a436009600a612dbf565b610a4d9082612dce565b600f5550565b6000610a6084848461186f565b6001600160a01b038416600090815260036020908152604080832033845290915290205482811015610ae55760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016109e2565b610af98533610af48685612ded565b61174b565b60019150505b9392505050565b6000546001600160a01b03163314610b305760405162461bcd60e51b81526004016109e290612c90565b610b3c6009600a612dbf565b610b469082612dce565b600e5550565b6000600b54821115610bb35760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016109e2565b6000610bbd611d43565b9050610aff8184612e04565b6000546001600160a01b03163314610bf35760405162461bcd60e51b81526004016109e290612c90565b6001600160a01b03811660009081526005602052604090205460ff16610c5b5760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c7564656400000000000000000060448201526064016109e2565b60005b600754811015610d7c57816001600160a01b031660078281548110610c8557610c85612e26565b6000918252602090912001546001600160a01b03161415610d6a5760078054610cb090600190612ded565b81548110610cc057610cc0612e26565b600091825260209091200154600780546001600160a01b039092169183908110610cec57610cec612e26565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff191690556007805480610d4457610d44612e3c565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610d7481612e52565b915050610c5e565b5050565b3360008181526003602090815260408083206001600160a01b038716845290915281205490916109ae918590610af4908690612e6d565b6000600a54841115610e0b5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016109e2565b82610e28576000610e1e85600085611d66565b519150610aff9050565b6000610e3685600185611d66565b602001519150610aff9050565b6000546001600160a01b03163314610e6d5760405162461bcd60e51b81526004016109e290612c90565b6008805462010000600160b01b031916620100006001600160a01b0394851602179055600980546001600160a01b03191691909216179055565b6000546001600160a01b03163314610ed15760405162461bcd60e51b81526004016109e290612c90565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000546001600160a01b03163314610f1f5760405162461bcd60e51b81526004016109e290612c90565b80471015610f6f5760405162461bcd60e51b815260206004820152601860248201527f696e73756666696369656e7420424e422062616c616e6365000000000000000060448201526064016109e2565b604051339082156108fc029083906000818181858888f19350505050158015610d7c573d6000803e3d6000fd5b6000546001600160a01b03163314610fc65760405162461bcd60e51b81526004016109e290612c90565b6001600160a01b03831630141561101f5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f74207472616e73666572206f75742043415421000000000000000060448201526064016109e2565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af115801561106e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110929190612e85565b50505050565b6000546001600160a01b031633146110c25760405162461bcd60e51b81526004016109e290612c90565b6001600160a01b03811660009081526005602052604090205460ff161561112b5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016109e2565b6001600160a01b03811660009081526001602052604090205415611185576001600160a01b03811660009081526001602052604090205461116b90610b4c565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319169091179055565b6001600160a01b03811660009081526005602052604081205460ff161561122857506001600160a01b031660009081526002602052604090205490565b6001600160a01b0382166000908152600160205260409020546109b290610b4c565b6000546001600160a01b031633146112745760405162461bcd60e51b81526004016109e290612c90565b61127e6000611db0565b565b6000546001600160a01b031633146112aa5760405162461bcd60e51b81526004016109e290612c90565b6008805460ff1916911515919091179055565b6000546001600160a01b031633146112e75760405162461bcd60e51b81526004016109e290612c90565b60128490556014839055601382905560158190556040517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a150505050565b3360009081526003602090815260408083206001600160a01b0386168452909152812054828110156113ac5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016109e2565b6113bb3385610af48685612ded565b5060019392505050565b60006109ae33848461186f565b6000546001600160a01b031633146113fc5760405162461bcd60e51b81526004016109e290612c90565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146114485760405162461bcd60e51b81526004016109e290612c90565b60005b82518110156114af57816006600085848151811061146b5761146b612e26565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806114a781612e52565b91505061144b565b505050565b6000546001600160a01b031633146114de5760405162461bcd60e51b81526004016109e290612c90565b6114ea6009600a612dbf565b6114f49082612dce565b600d5550565b6000546001600160a01b031633146115245760405162461bcd60e51b81526004016109e290612c90565b6115306009600a612dbf565b61153a9082612dce565b600c5550565b6000546001600160a01b0316331461156a5760405162461bcd60e51b81526004016109e290612c90565b6001600160a01b03821660009081526006602052604090205460ff16151581151514156115cd5760405162461bcd60e51b815260206004820152601160248201527015985b1d5948185b1c9958591e481cd95d607a1b60448201526064016109e2565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146116225760405162461bcd60e51b81526004016109e290612c90565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b0316331461166d5760405162461bcd60e51b81526004016109e290612c90565b6001600160a01b0381166116d25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109e2565b6116db81611db0565b50565b6000546001600160a01b031633146117085760405162461bcd60e51b81526004016109e290612c90565b60168490556018839055601782905560198190556040517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a150505050565b6001600160a01b0383166117ad5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109e2565b6001600160a01b03821661180e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109e2565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166118d35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109e2565b6001600160a01b0382166119355760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109e2565b600081116119975760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016109e2565b6119a0836111eb565b811115611a095760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016109e2565b6001600160a01b03831660009081526006602052604090205460ff16158015611a4b57506001600160a01b03821660009081526006602052604090205460ff16155b611a875760405162461bcd60e51b815260206004820152600d60248201526c165bdd48185c99481848189bdd609a1b60448201526064016109e2565b6001600160a01b03831660009081526004602052604090205460ff16158015611ac957506001600160a01b03821660009081526004602052604090205460ff16155b8015611add5750600854610100900460ff16155b15611c37576009546001600160a01b0384811691161415611b4a57600e54811115611b4a5760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d6178427579416d6f756e74000060448201526064016109e2565b6009546001600160a01b0383811691161415611bb257600d54811115611bb25760405162461bcd60e51b815260206004820152601f60248201527f596f752061726520657863656564696e67206d617853656c6c416d6f756e740060448201526064016109e2565b6009546001600160a01b03838116911614611c3757600f5481611bd4846111eb565b611bde9190612e6d565b1115611c375760405162461bcd60e51b815260206004820152602260248201527f596f752061726520657863656564696e67206d617857616c6c657442616c616e604482015261636560f01b60648201526084016109e2565b6000600c54611c45306111eb565b6008549111159150610100900460ff16158015611c64575060085460ff165b8015611c6d5750805b8015611c8757506009546001600160a01b03858116911614155b8015611cac57506001600160a01b03841660009081526004602052604090205460ff16155b8015611cd157506001600160a01b03831660009081526004602052604090205460ff16155b15611ce157611ce1600c54611e00565b6001600160a01b0384166000908152600460205260409020546110929085908590859060ff1680611d2a57506001600160a01b03871660009081526004602052604090205460ff165b6009549015906001600160a01b03898116911614611f97565b6000806000611d50612263565b9092509050611d5f8183612e04565b9250505090565b611d6e61291b565b611d798484846123e6565b9050611d8e818585611d89611d43565b612559565b60a0870152608086015260608501526040840152602083015281529392505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6008805461ff00191661010017905560175460185460195460009291611e2591612e6d565b611e2f9190612e6d565b611e3a906002612dce565b905060008160166003015484611e509190612dce565b611e5a9190612e04565b90506000611e688285612ded565b905047611e748261260b565b6000611e808247612ded565b601954909150600090611e939087612ded565b611e9d9083612e04565b601954909150600090611eb09083612dce565b90508015611ec257611ec2868261278a565b601854600090611ed3846002612dce565b611edd9190612dce565b90508015611f21576010546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611f1f573d6000803e3d6000fd5b505b601754600090611f32856002612dce565b611f3c9190612dce565b90508015611f80576011546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611f7e573d6000803e3d6000fd5b505b50506008805461ff00191690555050505050505050565b6000611fa4848484611d66565b6001600160a01b03871660009081526005602052604090205490915060ff1615612006576001600160a01b038616600090815260026020526040902054611fec908590612ded565b6001600160a01b0387166000908152600260205260409020555b6001600160a01b03851660009081526005602052604090205460ff16156120695760c08101516001600160a01b03861660009081526002602052604090205461204f9190612e6d565b6001600160a01b0386166000908152600260205260409020555b80516001600160a01b03871660009081526001602052604090205461208e9190612ded565b6001600160a01b03808816600090815260016020908152604080832094909455840151918816815291909120546120c59190612e6d565b6001600160a01b03861660009081526001602052604090819020919091558101511515806120f7575060008160e00151115b1561210e5761210e81604001518260e00151612846565b60008160a00151118061212657506000816101400151115b1561213e5761213e8160a0015182610140015161287b565b60008160600151118061215657506000816101000151115b1561216e5761216e81606001518261010001516128f1565b60008160800151118061218657506000816101200151115b1561219e5761219e8160800151826101200151612906565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360c001516040516121e791815260200190565b60405180910390a3306001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8361010001518461012001518561014001516122409190612e6d565b61224a9190612e6d565b60405190815260200160405180910390a3505050505050565b600b54600a546000918291825b6007548110156123b55782600160006007848154811061229257612292612e26565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806122fd57508160026000600784815481106122d6576122d6612e26565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561231357600b54600a54945094505050509091565b600160006007838154811061232a5761232a612e26565b60009182526020808320909101546001600160a01b031683528201929092526040019020546123599084612ded565b9250600260006007838154811061237257612372612e26565b60009182526020808320909101546001600160a01b031683528201929092526040019020546123a19083612ded565b9150806123ad81612e52565b915050612270565b50600a54600b546123c69190612e04565b8210156123dd57600b54600a549350935050509091565b90939092509050565b6123ee61291b565b826123ff5760c08101849052610aff565b61242a6040518060800160405280600081526020016000815260200160008152602001600081525090565b821561245f5750604080516080810182526016548152601754602082015260185491810191909152601954606082015261248a565b5060408051608081018252601254815260135460208201526014549181019190915260155460608201525b80516064906124999087612dce565b6124a39190612e04565b60e083015260408101516064906124ba9087612dce565b6124c49190612e04565b61010083015260608101516064906124dc9087612dce565b6124e69190612e04565b61014083015260208101516064906124fe9087612dce565b6125089190612e04565b610120830181905261014083015161010084015160e085015191929161252e9089612ded565b6125389190612ded565b6125429190612ded565b61254c9190612ded565b60c0830152509392505050565b6000808080808061256a878a612dce565b955087612585575084935060009250829150819050806125fe565b868a60e001516125959190612dce565b9350868a61010001516125a89190612dce565b9250868a61012001516125bb9190612dce565b9150868a61014001516125ce9190612dce565b90508082846125dd878a612ded565b6125e79190612ded565b6125f19190612ded565b6125fb9190612ded565b94505b9499939850945094509450565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061264057612640612e26565b60200260200101906001600160a01b031690816001600160a01b031681525050600860029054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d79190612ea2565b816001815181106126ea576126ea612e26565b6001600160a01b039283166020918202929092010152600854612716913091620100009004168461174b565b60085460405163791ac94760e01b8152620100009091046001600160a01b03169063791ac94790612754908590600090869030904290600401612ebf565b600060405180830381600087803b15801561276e57600080fd5b505af1158015612782573d6000803e3d6000fd5b505050505050565b6008546127a89030906201000090046001600160a01b03168461174b565b60085460405163f305d71960e01b8152306004820152602481018490526000604482018190526064820181905260848201524260a4820152620100009091046001600160a01b03169063f305d71990839060c40160606040518083038185885af115801561281a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061283f9190612f30565b5050505050565b81600b60008282546128589190612ded565b9091555050601a8054829190600090612872908490612e6d565b90915550505050565b80601a60030160008282546128909190612e6d565b90915550503060009081526005602052604090205460ff16156128d25730600090815260026020526040812080548392906128cc908490612e6d565b90915550505b3060009081526001602052604081208054849290612872908490612e6d565b80601a60010160008282546128909190612e6d565b80601a60020160008282546128909190612e6d565b60405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600060208083528351808285015260005b818110156129a257858101830151858201604001528201612986565b818111156129b4576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146116db57600080fd5b80356129ea816129ca565b919050565b60008060408385031215612a0257600080fd5b8235612a0d816129ca565b946020939093013593505050565b600060208284031215612a2d57600080fd5b8135610aff816129ca565b600060208284031215612a4a57600080fd5b5035919050565b600080600060608486031215612a6657600080fd5b8335612a71816129ca565b92506020840135612a81816129ca565b929592945050506040919091013590565b80151581146116db57600080fd5b80356129ea81612a92565b600080600060608486031215612ac057600080fd5b833592506020840135612ad281612a92565b91506040840135612ae281612a92565b809150509250925092565b60008060408385031215612b0057600080fd5b8235612b0b816129ca565b91506020830135612b1b816129ca565b809150509250929050565b600060208284031215612b3857600080fd5b8135610aff81612a92565b60008060008060808587031215612b5957600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215612b9e57600080fd5b823567ffffffffffffffff80821115612bb657600080fd5b818501915085601f830112612bca57600080fd5b8135602082821115612bde57612bde612b75565b8160051b604051601f19603f83011681018181108682111715612c0357612c03612b75565b604052928352818301935084810182019289841115612c2157600080fd5b948201945b83861015612c4657612c37866129df565b85529482019493820193612c26565b9650612c559050878201612aa0565b9450505050509250929050565b60008060408385031215612c7557600080fd5b8235612c80816129ca565b91506020830135612b1b81612a92565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115612d16578160001904821115612cfc57612cfc612cc5565b80851615612d0957918102915b93841c9390800290612ce0565b509250929050565b600082612d2d575060016109b2565b81612d3a575060006109b2565b8160018114612d505760028114612d5a57612d76565b60019150506109b2565b60ff841115612d6b57612d6b612cc5565b50506001821b6109b2565b5060208310610133831016604e8410600b8410161715612d99575081810a6109b2565b612da38383612cdb565b8060001904821115612db757612db7612cc5565b029392505050565b6000610aff60ff841683612d1e565b6000816000190483118215151615612de857612de8612cc5565b500290565b600082821015612dff57612dff612cc5565b500390565b600082612e2157634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b6000600019821415612e6657612e66612cc5565b5060010190565b60008219821115612e8057612e80612cc5565b500190565b600060208284031215612e9757600080fd5b8151610aff81612a92565b600060208284031215612eb457600080fd5b8151610aff816129ca565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612f0f5784516001600160a01b031683529383019391830191600101612eea565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612f4557600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212204634731d3379d656fbc0343adc1cfe4b8c8eed0a8f4bb127299e36c0b7a3b1a664736f6c634300080a0033

Deployed Bytecode Sourcemap

2852:18470:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5648:83;;;;;;;;;;-1:-1:-1;5718:5:0;;;;;;;;;;;;-1:-1:-1;;;5718:5:0;;;;5648:83;;;;;;;:::i;:::-;;;;;;;;6556:161;;;;;;;;;;-1:-1:-1;6556:161:0;;;;;:::i;:::-;;:::i;:::-;;;1376:14:1;;1369:22;1351:41;;1339:2;1324:18;6556:161:0;1211:187:1;5921:95:0;;;;;;;;;;-1:-1:-1;6001:7:0;;5921:95;;;1549:25:1;;;1537:2;1522:18;5921:95:0;1403:177:1;19190:109:0;;;;;;;;;;-1:-1:-1;19190:109:0;;;;;:::i;:::-;;:::i;:::-;;19311:126;;;;;;;;;;-1:-1:-1;19311:126:0;;;;;:::i;:::-;;:::i;6725:422::-;;;;;;;;;;-1:-1:-1;6725:422:0;;;;;:::i;:::-;;:::i;19445:114::-;;;;;;;;;;-1:-1:-1;19445:114:0;;;;;:::i;:::-;;:::i;8385:248::-;;;;;;;;;;-1:-1:-1;8385:248:0;;;;;:::i;:::-;;:::i;5830:83::-;;;;;;;;;;-1:-1:-1;5830:83:0;;3434:1;2625:36:1;;2613:2;2598:18;5830:83:0;2483:184:1;8982:475:0;;;;;;;;;;-1:-1:-1;8982:475:0;;;;;:::i;:::-;;:::i;7155:215::-;;;;;;;;;;-1:-1:-1;7155:215:0;;;;;:::i;:::-;;:::i;4005:70::-;;;;;;;;;;-1:-1:-1;4005:70:0;;;;-1:-1:-1;;;;;4005:70:0;;;;;;-1:-1:-1;;;;;2836:32:1;;;2818:51;;2806:2;2791:18;4005:70:0;2672:203:1;20504:98:0;;;;;;;;;;-1:-1:-1;20504:98:0;;;;;:::i;:::-;-1:-1:-1;;;;;20579:15:0;20556:4;20579:15;;;:6;:15;;;;;;;;;20504:98;7891:486;;;;;;;;;;-1:-1:-1;7891:486:0;;;;;:::i;:::-;;:::i;20338:154::-;;;;;;;;;;-1:-1:-1;20338:154:0;;;;;:::i;:::-;;:::i;9467:111::-;;;;;;;;;;-1:-1:-1;9467:111:0;;;;;:::i;:::-;;:::i;20680:196::-;;;;;;;;;;-1:-1:-1;20680:196:0;;;;;:::i;:::-;;:::i;21048:229::-;;;;;;;;;;-1:-1:-1;21048:229:0;;;;;:::i;:::-;;:::i;8641:333::-;;;;;;;;;;-1:-1:-1;8641:333:0;;;;;:::i;:::-;;:::i;9706:123::-;;;;;;;;;;-1:-1:-1;9706:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;9794:27:0;9770:4;9794:27;;;:18;:27;;;;;;;;;9706:123;3693:68;;;;;;;;;;;;;;;;3276:30;;;;;;;;;;-1:-1:-1;3276:30:0;;;;;;;;6024:198;;;;;;;;;;-1:-1:-1;6024:198:0;;;;;:::i;:::-;;:::i;1629:94::-;;;;;;;;;;;;;:::i;4314:35::-;;;;;;;;;;-1:-1:-1;4314:35:0;;;;;;;;;;;;;;;;;;;4209:25:1;;;4265:2;4250:18;;4243:34;;;;4293:18;;;4286:34;4351:2;4336:18;;4329:34;4196:3;4181:19;4314:35:0;3978:391:1;3768:67:0;;;;;;;;;;;;;;;;7763:120;;;;;;;;;;-1:-1:-1;7763:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;7855:20:0;7831:4;7855:20;;;:11;:20;;;;;;;;;7763:120;1406:87;;;;;;;;;;-1:-1:-1;1452:7:0;1479:6;-1:-1:-1;;;;;1479:6:0;1406:87;;19837:101;;;;;;;;;;-1:-1:-1;19837:101:0;;;;;:::i;:::-;;:::i;5737:87::-;;;;;;;;;;-1:-1:-1;5809:7:0;;;;;;;;;;;;-1:-1:-1;;;5809:7:0;;;;5737:87;;4543:36;;;;;;;;;;-1:-1:-1;4543:36:0;;;;;;;;;;;;;;;9837:272;;;;;;;;;;-1:-1:-1;9837:272:0;;;;;:::i;:::-;;:::i;7378:377::-;;;;;;;;;;-1:-1:-1;7378:377:0;;;;;:::i;:::-;;:::i;3922:76::-;;;;;;;;;;-1:-1:-1;3922:76:0;;;;-1:-1:-1;;;;;3922:76:0;;;3371:19;;;;;;;;;;-1:-1:-1;3371:19:0;;;;-1:-1:-1;;;;;3371:19:0;;;6230:167;;;;;;;;;;-1:-1:-1;6230:167:0;;;;;:::i;:::-;;:::i;19063:115::-;;;;;;;;;;-1:-1:-1;19063:115:0;;;;;:::i;:::-;;:::i;20132:194::-;;;;;;;;;;-1:-1:-1;20132:194:0;;;;;:::i;:::-;;:::i;3842:71::-;;;;;;;;;;;;;;;;19571:116;;;;;;;;;;-1:-1:-1;19571:116:0;;;;;:::i;:::-;;:::i;19699:130::-;;;;;;;;;;-1:-1:-1;19699:130:0;;;;;:::i;:::-;;:::i;6405:143::-;;;;;;;;;;-1:-1:-1;6405:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;6513:18:0;;;6486:7;6513:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6405:143;19946:174;;;;;;;;;;-1:-1:-1;19946:174:0;;;;;:::i;:::-;;:::i;3610:70::-;;;;;;;;;;;;;;;;9586:110;;;;;;;;;;-1:-1:-1;9586:110:0;;;;;:::i;:::-;;:::i;1731:192::-;;;;;;;;;;-1:-1:-1;1731:192:0;;;;;:::i;:::-;;:::i;10121:292::-;;;;;;;;;;-1:-1:-1;10121:292:0;;;;;:::i;:::-;;:::i;4356:40::-;;;;;;;;;;-1:-1:-1;4356:40:0;;;;;;;;;;;;;;;3343:21;;;;;;;;;;-1:-1:-1;3343:21:0;;;;;;;-1:-1:-1;;;;;3343:21:0;;;6556:161;6631:4;6648:39;907:10;6671:7;6680:6;6648:8;:39::i;:::-;-1:-1:-1;6705:4:0;6556:161;;;;;:::o;19190:109::-;1452:7;1479:6;-1:-1:-1;;;;;1479:6:0;907:10;1541:23;1533:68;;;;-1:-1:-1;;;1533:68:0;;;;;;;:::i;:::-;;;;;;;;;19266:10:::1;:25:::0;;-1:-1:-1;;;;;;19266:25:0::1;-1:-1:-1::0;;;;;19266:25:0;;;::::1;::::0;;;::::1;::::0;;19190:109::o;19311:126::-;1452:7;1479:6;-1:-1:-1;;;;;1479:6:0;907:10;1541:23;1533:68;;;;-1:-1:-1;;;1533:68:0;;;;;;;:::i;:::-;19416:13:::1;3434:1;19416:2;:13;:::i;:::-;19407:22;::::0;:6;:22:::1;:::i;:::-;19388:16;:41:::0;-1:-1:-1;19311:126:0:o;6725:422::-;6831:4;6848:36;6858:6;6866:9;6877:6;6848:9;:36::i;:::-;-1:-1:-1;;;;;6924:19:0;;6897:24;6924:19;;;:11;:19;;;;;;;;907:10;6924:33;;;;;;;;6976:26;;;;6968:79;;;;-1:-1:-1;;;6968:79:0;;9199:2:1;6968:79:0;;;9181:21:1;9238:2;9218:18;;;9211:30;9277:34;9257:18;;;9250:62;-1:-1:-1;;;9328:18:1;;;9321:38;9376:19;;6968:79:0;8997:404:1;6968:79:0;7058:57;7067:6;907:10;7089:25;7108:6;7089:16;:25;:::i;:::-;7058:8;:57::i;:::-;7135:4;7128:11;;;6725:422;;;;;;:::o;19445:114::-;1452:7;1479:6;-1:-1:-1;;;;;1479:6:0;907:10;1541:23;1533:68;;;;-1:-1:-1;;;1533:68:0;;;;;;;:::i;:::-;19538:13:::1;3434:1;19538:2;:13;:::i;:::-;19529:22;::::0;:6;:22:::1;:::i;:::-;19514:12;:37:::0;-1:-1:-1;19445:114:0:o;8385:248::-;8451:7;8490;;8479;:18;;8471:73;;;;-1:-1:-1;;;8471:73:0;;9738:2:1;8471:73:0;;;9720:21:1;9777:2;9757:18;;;9750:30;9816:34;9796:18;;;9789:62;-1:-1:-1;;;9867:18:1;;;9860:40;9917:19;;8471:73:0;9536:406:1;8471:73:0;8555:19;8578:10;:8;:10::i;:::-;8555:33;-1:-1:-1;8606:19:0;8555:33;8606:7;:19;:::i;8982:475::-;1452:7;1479:6;-1:-1:-1;;;;;1479:6:0;907:10;1541:23;1533:68;;;;-1:-1:-1;;;1533:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9064:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;9056:56;;;::::0;-1:-1:-1;;;9056:56:0;;10371:2:1;9056:56:0::1;::::0;::::1;10353:21:1::0;10410:2;10390:18;;;10383:30;10449:25;10429:18;;;10422:53;10492:18;;9056:56:0::1;10169:347:1::0;9056:56:0::1;9128:9;9123:327;9147:9;:16:::0;9143:20;::::1;9123:327;;;9205:7;-1:-1:-1::0;;;;;9189:23:0::1;:9;9199:1;9189:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;9189:12:0::1;:23;9185:254;;;9248:9;9258:16:::0;;:20:::1;::::0;9277:1:::1;::::0;9258:20:::1;:::i;:::-;9248:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;9233:9:::1;:12:::0;;-1:-1:-1;;;;;9248:31:0;;::::1;::::0;9243:1;;9233:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;9233:46:0::1;-1:-1:-1::0;;;;;9233:46:0;;::::1;;::::0;;9298:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;9337:11:::1;:20:::0;;;;:28;;-1:-1:-1;;9337:28:0::1;::::0;;9384:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;9384:15:0;;;;;-1:-1:-1;;;;;;9384:15:0::1;::::0;;;;;9123:327:::1;8982:475:::0;:::o;9185:254::-:1;9165:3:::0;::::1;::::0;::::1;:::i;:::-;;;;9123:327;;;;8982:475:::0;:::o;7155:215::-;907:10;7243:4;7292:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;7292:34:0;;;;;;;;;;7243:4;;7260:80;;7283:7;;7292:47;;7329:10;;7292:47;:::i;7891:486::-;7994:7;8033;;8022;:18;;8014:62;;;;-1:-1:-1;;;8014:62:0;;11260:2:1;8014:62:0;;;11242:21:1;11299:2;11279:18;;;11272:30;11338:33;11318:18;;;11311:61;11389:18;;8014:62:0;11058:355:1;8014:62:0;8092:17;8087:283;;8126:28;8157:34;8168:7;8177:5;8184:6;8157:10;:34::i;:::-;8213:9;;-1:-1:-1;8206:16:0;;-1:-1:-1;8206:16:0;8087:283;8255:28;8286:33;8297:7;8306:4;8312:6;8286:10;:33::i;:::-;8341:17;;;;-1:-1:-1;8334:24:0;;-1:-1:-1;8334:24:0;20338:154;1452:7;1479:6;-1:-1:-1;;;;;1479:6:0;907:10;1541:23;1533:68;;;;-1:-1:-1;;;1533:68:0;;;;;;;:::i;:::-;20432:6:::1;:27:::0;;-1:-1:-1;;;;;;20432:27:0::1;::::0;-1:-1:-1;;;;;20432:27:0;;::::1;;;::::0;;20470:4:::1;:14:::0;;-1:-1:-1;;;;;;20470:14:0::1;::::0;;;::::1;;::::0;;20338:154::o;9467:111::-;1452:7;1479:6;-1:-1:-1;;;;;1479:6:0;907:10;1541:23;1533:68;;;;-1:-1:-1;;;1533:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9536:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;9536:34:0::1;9566:4;9536:34;::::0;;9467:111::o;20680:196::-;1452:7;1479:6;-1:-1:-1;;;;;1479:6:0;907:10;1541:23;1533:68;;;;-1:-1:-1;;;1533:68:0;;;;;;;:::i;:::-;20780:9:::1;20755:21;:34;;20747:71;;;::::0;-1:-1:-1;;;20747:71:0;;11620:2:1;20747:71:0::1;::::0;::::1;11602:21:1::0;11659:2;11639:18;;;11632:30;11698:26;11678:18;;;11671:54;11742:18;;20747:71:0::1;11418:348:1::0;20747:71:0::1;20829:39;::::0;20837:10:::1;::::0;20829:39;::::1;;;::::0;20858:9;;20829:39:::1;::::0;;;20858:9;20837:10;20829:39;::::1;;;;;;;;;;;;;::::0;::::1;;;;21048:229:::0;1452:7;1479:6;-1:-1:-1;;;;;1479:6:0;907:10;1541:23;1533:68;;;;-1:-1:-1;;;1533:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21161:27:0;::::1;21183:4;21161:27;;21153:64;;;::::0;-1:-1:-1;;;21153:64:0;;11973:2:1;21153:64:0::1;::::0;::::1;11955:21:1::0;12012:2;11992:18;;;11985:30;12051:26;12031:18;;;12024:54;12095:18;;21153:64:0::1;11771:348:1::0;21153:64:0::1;21228:41;::::0;-1:-1:-1;;;21228:41:0;;-1:-1:-1;;;;;12316:32:1;;;21228:41:0::1;::::0;::::1;12298:51:1::0;12365:18;;;12358:34;;;21228:27:0;::::1;::::0;::::1;::::0;12271:18:1;;21228:41:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21048:229:::0;;;:::o;8641:333::-;1452:7;1479:6;-1:-1:-1;;;;;1479:6:0;907:10;1541:23;1533:68;;;;-1:-1:-1;;;1533:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8724:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;8723:21;8715:61;;;::::0;-1:-1:-1;;;8715:61:0;;12855:2:1;8715:61:0::1;::::0;::::1;12837:21:1::0;12894:2;12874:18;;;12867:30;12933:29;12913:18;;;12906:57;12980:18;;8715:61:0::1;12653:351:1::0;8715:61:0::1;-1:-1:-1::0;;;;;8790:16:0;::::1;8809:1;8790:16:::0;;;:7:::1;:16;::::0;;;;;:20;8787:108:::1;;-1:-1:-1::0;;;;;8866:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;8846:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;8827:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;8787:108:::1;-1:-1:-1::0;;;;;8905:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;8905:27:0::1;8928:4;8905:27:::0;;::::1;::::0;;;8943:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;8943:23:0::1;::::0;;::::1;::::0;;8641:333::o;6024:198::-;-1:-1:-1;;;;;6114:20:0;;6090:7;6114:20;;;:11;:20;;;;;;;;6110:49;;;-1:-1:-1;;;;;;6143:16:0;;;;;:7;:16;;;;;;;6024:198::o;6110:49::-;-1:-1:-1;;;;;6197:16:0;;;;;;:7;:16;;;;;;6177:37;;:19;:37::i;1629:94::-;1452:7;1479:6;-1:-1:-1;;;;;1479:6:0;907:10;1541:23;1533:68;;;;-1:-1:-1;;;1533:68:0;;;;;;;:::i;:::-;1694:21:::1;1712:1;1694:9;:21::i;:::-;1629:94::o:0;19837:101::-;1452:7;1479:6;-1:-1:-1;;;;;1479:6:0;907:10;1541:23;1533:68;;;;-1:-1:-1;;;1533:68:0;;;;;;;:::i;:::-;19908:11:::1;:22:::0;;-1:-1:-1;;19908:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19837:101::o;9837:272::-;1452:7;1479:6;-1:-1:-1;;;;;1479:6:0;907:10;1541:23;1533:68;;;;-1:-1:-1;;;1533:68:0;;;;;;;:::i;:::-;9951:5:::1;:16:::0;;;9978:15;:28;;;10017:9;:16;;;10044:15;:28;;;10088:13:::1;::::0;::::1;::::0;9951:9:::1;::::0;10088:13:::1;9837:272:::0;;;;:::o;7378:377::-;907:10;7471:4;7515:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;7515:34:0;;;;;;;;;;7568:35;;;;7560:85;;;;-1:-1:-1;;;7560:85:0;;13211:2:1;7560:85:0;;;13193:21:1;13250:2;13230:18;;;13223:30;13289:34;13269:18;;;13262:62;-1:-1:-1;;;13340:18:1;;;13333:35;13385:19;;7560:85:0;13009:401:1;7560:85:0;7656:67;907:10;7679:7;7688:34;7707:15;7688:16;:34;:::i;7656:67::-;-1:-1:-1;7743:4:0;;7378:377;-1:-1:-1;;;7378:377:0:o;6230:167::-;6308:4;6325:42;907:10;6349:9;6360:6;6325:9;:42::i;19063:115::-;1452:7;1479:6;-1:-1:-1;;;;;1479:6:0;907:10;1541:23;1533:68;;;;-1:-1:-1;;;1533:68:0;;;;;;;:::i;:::-;19142:16:::1;:28:::0;;-1:-1:-1;;;;;;19142:28:0::1;-1:-1:-1::0;;;;;19142:28:0;;;::::1;::::0;;;::::1;::::0;;19063:115::o;20132:194::-;1452:7;1479:6;-1:-1:-1;;;;;1479:6:0;907:10;1541:23;1533:68;;;;-1:-1:-1;;;1533:68:0;;;;;;;:::i;:::-;20225:9:::1;20221:98;20244:8;:15;20240:1;:19;20221:98;;;20302:5;20280:6;:19;20287:8;20296:1;20287:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;20280:19:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;20280:19:0;:27;;-1:-1:-1;;20280:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20261:3;::::1;::::0;::::1;:::i;:::-;;;;20221:98;;;;20132:194:::0;;:::o;19571:116::-;1452:7;1479:6;-1:-1:-1;;;;;1479:6:0;907:10;1541:23;1533:68;;;;-1:-1:-1;;;1533:68:0;;;;;;;:::i;:::-;19666:13:::1;3434:1;19666:2;:13;:::i;:::-;19657:22;::::0;:6;:22:::1;:::i;:::-;19641:13;:38:::0;-1:-1:-1;19571:116:0:o;19699:130::-;1452:7;1479:6;-1:-1:-1;;;;;1479:6:0;907:10;1541:23;1533:68;;;;-1:-1:-1;;;1533:68:0;;;;;;;:::i;:::-;19808:13:::1;3434:1;19808:2;:13;:::i;:::-;19799:22;::::0;:6;:22:::1;:::i;:::-;19778:18;:43:::0;-1:-1:-1;19699:130:0:o;19946:174::-;1452:7;1479:6;-1:-1:-1;;;;;1479:6:0;907:10;1541:23;1533:68;;;;-1:-1:-1;;;1533:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20032:15:0;::::1;;::::0;;;:6:::1;:15;::::0;;;;;::::1;;:24;;::::0;::::1;;;;20024:54;;;::::0;-1:-1:-1;;;20024:54:0;;13617:2:1;20024:54:0::1;::::0;::::1;13599:21:1::0;13656:2;13636:18;;;13629:30;-1:-1:-1;;;13675:18:1;;;13668:47;13732:18;;20024:54:0::1;13415:341:1::0;20024:54:0::1;-1:-1:-1::0;;;;;20089:15:0;;;::::1;;::::0;;;:6:::1;:15;::::0;;;;:23;;-1:-1:-1;;20089:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19946:174::o;9586:110::-;1452:7;1479:6;-1:-1:-1;;;;;1479:6:0;907:10;1541:23;1533:68;;;;-1:-1:-1;;;1533:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9653:27:0::1;9683:5;9653:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;9653:35:0::1;::::0;;9586:110::o;1731:192::-;1452:7;1479:6;-1:-1:-1;;;;;1479:6:0;907:10;1541:23;1533:68;;;;-1:-1:-1;;;1533:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1820:22:0;::::1;1812:73;;;::::0;-1:-1:-1;;;1812:73:0;;13963:2:1;1812:73:0::1;::::0;::::1;13945:21:1::0;14002:2;13982:18;;;13975:30;14041:34;14021:18;;;14014:62;-1:-1:-1;;;14092:18:1;;;14085:36;14138:19;;1812:73:0::1;13761:402:1::0;1812:73:0::1;1896:19;1906:8;1896:9;:19::i;:::-;1731:192:::0;:::o;10121:292::-;1452:7;1479:6;-1:-1:-1;;;;;1479:6:0;907:10;1541:23;1533:68;;;;-1:-1:-1;;;1533:68:0;;;;;;;:::i;:::-;10239:9:::1;:20:::0;;;10270:19;:32;;;10313:13;:20;;;10344:19;:32;;;10392:13:::1;::::0;::::1;::::0;10239::::1;::::0;10392::::1;10121:292:::0;;;;:::o;13827:335::-;-1:-1:-1;;;;;13920:19:0;;13912:68;;;;-1:-1:-1;;;13912:68:0;;14370:2:1;13912:68:0;;;14352:21:1;14409:2;14389:18;;;14382:30;14448:34;14428:18;;;14421:62;-1:-1:-1;;;14499:18:1;;;14492:34;14543:19;;13912:68:0;14168:400:1;13912:68:0;-1:-1:-1;;;;;13999:21:0;;13991:68;;;;-1:-1:-1;;;13991:68:0;;14775:2:1;13991:68:0;;;14757:21:1;14814:2;14794:18;;;14787:30;14853:34;14833:18;;;14826:62;-1:-1:-1;;;14904:18:1;;;14897:32;14946:19;;13991:68:0;14573:398:1;13991:68:0;-1:-1:-1;;;;;14070:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;14122:32;;1549:25:1;;;14122:32:0;;1522:18:1;14122:32:0;;;;;;;13827:335;;;:::o;14170:1365::-;-1:-1:-1;;;;;14258:18:0;;14250:68;;;;-1:-1:-1;;;14250:68:0;;15178:2:1;14250:68:0;;;15160:21:1;15217:2;15197:18;;;15190:30;15256:34;15236:18;;;15229:62;-1:-1:-1;;;15307:18:1;;;15300:35;15352:19;;14250:68:0;14976:401:1;14250:68:0;-1:-1:-1;;;;;14337:16:0;;14329:64;;;;-1:-1:-1;;;14329:64:0;;15584:2:1;14329:64:0;;;15566:21:1;15623:2;15603:18;;;15596:30;15662:34;15642:18;;;15635:62;-1:-1:-1;;;15713:18:1;;;15706:33;15756:19;;14329:64:0;15382:399:1;14329:64:0;14421:1;14412:6;:10;14404:64;;;;-1:-1:-1;;;14404:64:0;;15988:2:1;14404:64:0;;;15970:21:1;16027:2;16007:18;;;16000:30;16066:34;16046:18;;;16039:62;-1:-1:-1;;;16117:18:1;;;16110:39;16166:19;;14404:64:0;15786:405:1;14404:64:0;14497:15;14507:4;14497:9;:15::i;:::-;14487:6;:25;;14479:86;;;;-1:-1:-1;;;14479:86:0;;16398:2:1;14479:86:0;;;16380:21:1;16437:2;16417:18;;;16410:30;16476:34;16456:18;;;16449:62;-1:-1:-1;;;16527:18:1;;;16520:47;16584:19;;14479:86:0;16196:413:1;14479:86:0;-1:-1:-1;;;;;14585:12:0;;;;;;:6;:12;;;;;;;;14584:13;:28;;;;-1:-1:-1;;;;;;14602:10:0;;;;;;:6;:10;;;;;;;;14601:11;14584:28;14576:54;;;;-1:-1:-1;;;14576:54:0;;16816:2:1;14576:54:0;;;16798:21:1;16855:2;16835:18;;;16828:30;-1:-1:-1;;;16874:18:1;;;16867:43;16927:18;;14576:54:0;16614:337:1;14576:54:0;-1:-1:-1;;;;;14663:24:0;;;;;;:18;:24;;;;;;;;14662:25;:52;;;;-1:-1:-1;;;;;;14692:22:0;;;;;;:18;:22;;;;;;;;14691:23;14662:52;:65;;;;-1:-1:-1;14719:8:0;;;;;;;14718:9;14662:65;14659:493;;;14754:4;;-1:-1:-1;;;;;14746:12:0;;;14754:4;;14746:12;14743:116;;;14796:12;;14786:6;:22;;14778:65;;;;-1:-1:-1;;;14778:65:0;;17158:2:1;14778:65:0;;;17140:21:1;17197:2;17177:18;;;17170:30;17236:32;17216:18;;;17209:60;17286:18;;14778:65:0;16956:354:1;14778:65:0;14882:4;;-1:-1:-1;;;;;14876:10:0;;;14882:4;;14876:10;14873:116;;;14924:13;;14914:6;:23;;14906:67;;;;-1:-1:-1;;;14906:67:0;;17517:2:1;14906:67:0;;;17499:21:1;17556:2;17536:18;;;17529:30;17595:33;17575:18;;;17568:61;17646:18;;14906:67:0;17315:355:1;14906:67:0;15012:4;;-1:-1:-1;;;;;15006:10:0;;;15012:4;;15006:10;15003:138;;15070:16;;15060:6;15044:13;15054:2;15044:9;:13::i;:::-;:22;;;;:::i;:::-;:42;;15036:89;;;;-1:-1:-1;;;15036:89:0;;17877:2:1;15036:89:0;;;17859:21:1;17916:2;17896:18;;;17889:30;17955:34;17935:18;;;17928:62;-1:-1:-1;;;18006:18:1;;;17999:32;18048:19;;15036:89:0;17675:398:1;15036:89:0;15172:12;15215:18;;15187:24;15205:4;15187:9;:24::i;:::-;15248:8;;-1:-1:-1;;15187:46:0;;-1:-1:-1;15248:8:0;;;;;15247:9;:24;;;;-1:-1:-1;15260:11:0;;;;15247:24;:35;;;;;15275:7;15247:35;:51;;;;-1:-1:-1;15294:4:0;;-1:-1:-1;;;;;15286:12:0;;;15294:4;;15286:12;;15247:51;:80;;;;-1:-1:-1;;;;;;15303:24:0;;;;;;:18;:24;;;;;;;;15302:25;15247:80;:107;;;;-1:-1:-1;;;;;;15332:22:0;;;;;;:18;:22;;;;;;;;15331:23;15247:107;15244:172;;;15370:34;15385:18;;15370:14;:34::i;:::-;-1:-1:-1;;;;;15463:24:0;;;;;;:18;:24;;;;;;15428:99;;15443:4;;15449:2;;15453:6;;15463:24;;;:50;;-1:-1:-1;;;;;;15491:22:0;;;;;;:18;:22;;;;;;;;15463:50;15522:4;;15461:53;;;-1:-1:-1;;;;;15516:10:0;;;15522:4;;15516:10;15428:14;:99::i;13113:158::-;13154:7;13175:15;13192;13211:19;:17;:19::i;:::-;13174:56;;-1:-1:-1;13174:56:0;-1:-1:-1;13248:15:0;13174:56;;13248:15;:::i;:::-;13241:22;;;;13113:158;:::o;11393:407::-;11479:36;;:::i;:::-;11540:37;11552:7;11561;11570:6;11540:11;:37::i;:::-;11528:49;;11713:52;11725:9;11736:7;11745;11754:10;:8;:10::i;:::-;11713:11;:52::i;:::-;11689:20;;;11588:177;11673:14;;;11588:177;11651:20;;;11588:177;11635:14;;;11588:177;11608:25;;;11588:177;;;11393:407;;;;;:::o;1931:173::-;1987:16;2006:6;;-1:-1:-1;;;;;2023:17:0;;;-1:-1:-1;;;;;;2023:17:0;;;;;;2056:40;;2006:6;;;;;;;2056:40;;1987:16;2056:40;1976:128;1931:173;:::o;16785:1194::-;4970:8;:15;;-1:-1:-1;;4970:15:0;;;;;16972:13;;16950:19;;16928;;4970:15;;16972:13;16928:41:::1;::::0;::::1;:::i;:::-;:57;;;;:::i;:::-;16927:63;::::0;16989:1:::1;16927:63;:::i;:::-;16905:85;;17001:32;17067:11;17045:9;:19;;;17036:6;:28;;;;:::i;:::-;:42;;;;:::i;:::-;17001:77:::0;-1:-1:-1;17089:14:0::1;17106:33;17001:77:::0;17106:6;:33:::1;:::i;:::-;17089:50:::0;-1:-1:-1;17177:21:0::1;17211:24;17089:50:::0;17211:16:::1;:24::i;:::-;17248:20;17271:38;17295:14:::0;17271:21:::1;:38;:::i;:::-;17371:19:::0;;17248:61;;-1:-1:-1;17320:19:0::1;::::0;17357:33:::1;::::0;:11;:33:::1;:::i;:::-;17341:50;::::0;:12;:50:::1;:::i;:::-;17448:19:::0;;17320:71;;-1:-1:-1;17402:29:0::1;::::0;17434:33:::1;::::0;17320:71;17434:33:::1;:::i;:::-;17402:65:::0;-1:-1:-1;17483:25:0;;17480:158:::1;;17565:61;17578:24;17604:21;17565:12;:61::i;:::-;17691:19:::0;;17650:20:::1;::::0;17673:15:::1;:11:::0;17691:19:::1;17673:15;:::i;:::-;:37;;;;:::i;:::-;17650:60:::0;-1:-1:-1;17724:16:0;;17721:95:::1;;17764:16;::::0;17756:48:::1;::::0;-1:-1:-1;;;;;17764:16:0;;::::1;::::0;17756:48;::::1;;;::::0;17791:12;;17764:16:::1;17756:48:::0;17764:16;17756:48;17791:12;17764:16;17756:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;17721:95;17871:13:::0;;17836:14:::1;::::0;17853:15:::1;:11:::0;17867:1:::1;17853:15;:::i;:::-;:31;;;;:::i;:::-;17836:48:::0;-1:-1:-1;17898:10:0;;17895:77:::1;;17932:10;::::0;17924:36:::1;::::0;-1:-1:-1;;;;;17932:10:0;;::::1;::::0;17924:36;::::1;;;::::0;17953:6;;17932:10:::1;17924:36:::0;17932:10;17924:36;17953:6;17932:10;17924:36;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;17895:77;-1:-1:-1::0;;5008:8:0;:16;;-1:-1:-1;;5008:16:0;;;-1:-1:-1;;;;;;;;16785:1194:0:o;15618:1159::-;15740:28;15771:36;15782:7;15791;15800:6;15771:10;:36::i;:::-;-1:-1:-1;;;;;15824:19:0;;;;;;:11;:19;;;;;;15740:67;;-1:-1:-1;15824:19:0;;15820:115;;;-1:-1:-1;;;;;15900:15:0;;;;;;:7;:15;;;;;;:23;;15916:7;;15900:23;:::i;:::-;-1:-1:-1;;;;;15882:15:0;;;;;;:7;:15;;;;;:41;15820:115;-1:-1:-1;;;;;15949:22:0;;;;;;:11;:22;;;;;;;;15945:130;;;16046:17;;;;-1:-1:-1;;;;;16027:18:0;;;;;;:7;:18;;;;;;:36;;16046:17;16027:36;:::i;:::-;-1:-1:-1;;;;;16006:18:0;;;;;;:7;:18;;;;;:57;15945:130;16121:9;;-1:-1:-1;;;;;16105:15:0;;16121:9;16105:15;;;:7;:15;;;;;;:25;;16121:9;16105:25;:::i;:::-;-1:-1:-1;;;;;16087:15:0;;;;;;;:7;:15;;;;;;;;:43;;;;16181:17;;;16162:18;;;;;;;;;;:36;;16181:17;16162:36;:::i;:::-;-1:-1:-1;;;;;16141:18:0;;;;;;:7;:18;;;;;;;:57;;;;16222:6;;;:10;;;:24;;;16245:1;16236;:6;;;:10;16222:24;16219:56;;;16248:27;16260:1;:6;;;16268:1;:6;;;16248:11;:27::i;:::-;16304:1;16289;:12;;;:16;:36;;;;16324:1;16309;:12;;;:16;16289:36;16286:109;;;16342:41;16357:1;:12;;;16370:1;:12;;;16342:14;:41::i;:::-;16423:1;16408;:12;;;:16;:36;;;;16443:1;16428;:12;;;:16;16408:36;16405:109;;;16460:42;16475:1;:12;;;16489:1;:12;;;16460:14;:42::i;:::-;16536:1;16527;:6;;;:10;:24;;;;16550:1;16541;:6;;;:10;16527:24;16524:79;;;16567:24;16576:1;:6;;;16584:1;:6;;;16567:8;:24::i;:::-;16645:9;-1:-1:-1;;;;;16628:46:0;16637:6;-1:-1:-1;;;;;16628:46:0;;16656:1;:17;;;16628:46;;;;1549:25:1;;1537:2;1522:18;;1403:177;16628:46:0;;;;;;;;16715:4;-1:-1:-1;;;;;16690:69:0;16699:6;-1:-1:-1;;;;;16690:69:0;;16746:1;:12;;;16737:1;:6;;;16722:1;:12;;;:21;;;;:::i;:::-;:36;;;;:::i;:::-;16690:69;;1549:25:1;;;1537:2;1522:18;16690:69:0;;;;;;;15729:1048;15618:1159;;;;;:::o;13279:540::-;13376:7;;13412;;13329;;;;;13430:279;13454:9;:16;13450:20;;13430:279;;;13520:7;13496;:21;13504:9;13514:1;13504:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;13504:12:0;13496:21;;;;;;;;;;;;;:31;;:66;;;13555:7;13531;:21;13539:9;13549:1;13539:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;13539:12:0;13531:21;;;;;;;;;;;;;:31;13496:66;13492:97;;;13572:7;;13581;;13564:25;;;;;;;13279:540;;:::o;13492:97::-;13622:7;:21;13630:9;13640:1;13630:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;13630:12:0;13622:21;;;;;;;;;;;;;13614:29;;:7;:29;:::i;:::-;13604:39;;13676:7;:21;13684:9;13694:1;13684:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;13684:12:0;13676:21;;;;;;;;;;;;;13668:29;;:7;:29;:::i;:::-;13658:39;-1:-1:-1;13472:3:0;;;;:::i;:::-;;;;13430:279;;;;13741:7;;13733;;:15;;;;:::i;:::-;13723:7;:25;13719:56;;;13758:7;;13767;;13750:25;;;;;;13279:540;;:::o;13719:56::-;13794:7;;13803;;-1:-1:-1;13279:540:0;-1:-1:-1;13279:540:0:o;11808:608::-;11895:28;;:::i;:::-;11942:7;11938:86;;11964:17;;;:27;;;12004:8;;11938:86;12034:17;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12034:17:0;12065:6;12062:55;;;-1:-1:-1;12073:16:0;;;;;;;;12080:9;12073:16;;;;;;;;;;;;;;;;;;;;;;;;12062:55;;;-1:-1:-1;12105:12:0;;;;;;;;12112:5;12105:12;;;;;;;;;;;;;;;;;;;;;;;;12062:55;12155:8;;12164:3;;12147:16;;:7;:16;:::i;:::-;:20;;;;:::i;:::-;12138:6;;;:29;12201:14;;;;12216:3;;12193:22;;:7;:22;:::i;:::-;:26;;;;:::i;:::-;12178:12;;;:41;12253:14;;;;12268:3;;12245:22;;:7;:22;:::i;:::-;:26;;;;:::i;:::-;12230:12;;;:41;12299:8;;;;12308:3;;12291:16;;:7;:16;:::i;:::-;:20;;;;:::i;:::-;12282:6;;;:29;;;12377:12;;;;12357;;;;12350:6;;;;12377:12;;12282:29;12342:14;;:7;:14;:::i;:::-;:27;;;;:::i;:::-;:34;;;;:::i;:::-;:47;;;;:::i;:::-;12322:17;;;:67;-1:-1:-1;11808:608:0;;;;;:::o;12424:681::-;12549:15;;;;;;12679:19;12687:11;12679:7;:19;:::i;:::-;12669:29;;12715:7;12711:71;;-1:-1:-1;12744:7:0;;-1:-1:-1;12762:1:0;;-1:-1:-1;12762:1:0;;-1:-1:-1;12762:1:0;;-1:-1:-1;12762:1:0;12737:33;;12711:71;12808:11;12801:1;:6;;;:18;;;;:::i;:::-;12794:25;;12856:11;12843:1;:12;;;:24;;;;:::i;:::-;12830:37;;12892:11;12885:1;:6;;;:18;;;;:::i;:::-;12878:25;;12940:11;12927:1;:12;;;:24;;;;:::i;:::-;12914:37;-1:-1:-1;12914:37:0;13005:4;12994:10;12981:12;12989:4;12981:7;:12;:::i;:::-;:23;;;;:::i;:::-;:28;;;;:::i;:::-;:39;;;;:::i;:::-;12962:58;;12424:681;;;;;;;;;;;;:::o;18493:562::-;18643:16;;;18657:1;18643:16;;;;;;;;18619:21;;18643:16;;;;;;;;;;-1:-1:-1;18643:16:0;18619:40;;18688:4;18670;18675:1;18670:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;18670:23:0;;;-1:-1:-1;;;;;18670:23:0;;;;;18714:6;;;;;;;;;-1:-1:-1;;;;;18714:6:0;-1:-1:-1;;;;;18714:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18704:4;18709:1;18704:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18704:23:0;;;:7;;;;;;;;;:23;18772:6;;18740:53;;18757:4;;18772:6;;;;18781:11;18740:8;:53::i;:::-;18832:6;;:215;;-1:-1:-1;;;18832:215:0;;:6;;;;-1:-1:-1;;;;;18832:6:0;;:57;;:215;;18904:11;;18930:1;;18974:4;;19001;;19021:15;;18832:215;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18548:507;18493:562;:::o;17987:498::-;18167:6;;18135:53;;18152:4;;18167:6;;;-1:-1:-1;;;;;18167:6:0;18176:11;18135:8;:53::i;:::-;18231:6;;:246;;-1:-1:-1;;;18231:246:0;;18294:4;18231:246;;;19660:34:1;19710:18;;;19703:34;;;18340:1:0;19753:18:1;;;19746:34;;;19796:18;;;19789:34;;;19839:19;;;19832:44;18451:15:0;19892:19:1;;;19885:35;18231:6:0;;;;-1:-1:-1;;;;;18231:6:0;;:22;;18261:9;;19594:19:1;;18231:246:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;17987:498;;:::o;10421:123::-;10499:4;10489:7;;:14;;;;;;;:::i;:::-;;;;-1:-1:-1;;10514:11:0;:22;;10532:4;;10514:11;:15;;:22;;10532:4;;10514:22;:::i;:::-;;;;-1:-1:-1;;;;10421:123:0:o;10552:284::-;10659:10;10635:11;:21;;;:34;;;;;;;:::i;:::-;;;;-1:-1:-1;;10705:4:0;10685:26;;;;:11;:26;;;;;;;;10682:101;;;10753:4;10737:22;;;;:7;:22;;;;;:34;;10761:10;;10737:22;:34;;10761:10;;10737:34;:::i;:::-;;;;-1:-1:-1;;10682:101:0;10809:4;10793:22;;;;:7;:22;;;;;:35;;10818:10;;10793:22;:35;;10818:10;;10793:35;:::i;10844:284::-;10951:10;10927:11;:21;;;:34;;;;;;;:::i;11140:245::-;11224:4;11205:11;:15;;;:23;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:597:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;752:134;820:20;;849:31;820:20;849:31;:::i;:::-;752:134;;;:::o;891:315::-;959:6;967;1020:2;1008:9;999:7;995:23;991:32;988:52;;;1036:1;1033;1026:12;988:52;1075:9;1062:23;1094:31;1119:5;1094:31;:::i;:::-;1144:5;1196:2;1181:18;;;;1168:32;;-1:-1:-1;;;891:315:1:o;1585:247::-;1644:6;1697:2;1685:9;1676:7;1672:23;1668:32;1665:52;;;1713:1;1710;1703:12;1665:52;1752:9;1739:23;1771:31;1796:5;1771:31;:::i;1837:180::-;1896:6;1949:2;1937:9;1928:7;1924:23;1920:32;1917:52;;;1965:1;1962;1955:12;1917:52;-1:-1:-1;1988:23:1;;1837:180;-1:-1:-1;1837:180:1:o;2022:456::-;2099:6;2107;2115;2168:2;2156:9;2147:7;2143:23;2139:32;2136:52;;;2184:1;2181;2174:12;2136:52;2223:9;2210:23;2242:31;2267:5;2242:31;:::i;:::-;2292:5;-1:-1:-1;2349:2:1;2334:18;;2321:32;2362:33;2321:32;2362:33;:::i;:::-;2022:456;;2414:7;;-1:-1:-1;;;2468:2:1;2453:18;;;;2440:32;;2022:456::o;2880:118::-;2966:5;2959:13;2952:21;2945:5;2942:32;2932:60;;2988:1;2985;2978:12;3003:128;3068:20;;3097:28;3068:20;3097:28;:::i;3136:444::-;3207:6;3215;3223;3276:2;3264:9;3255:7;3251:23;3247:32;3244:52;;;3292:1;3289;3282:12;3244:52;3328:9;3315:23;3305:33;;3388:2;3377:9;3373:18;3360:32;3401:28;3423:5;3401:28;:::i;:::-;3448:5;-1:-1:-1;3505:2:1;3490:18;;3477:32;3518:30;3477:32;3518:30;:::i;:::-;3567:7;3557:17;;;3136:444;;;;;:::o;3585:388::-;3653:6;3661;3714:2;3702:9;3693:7;3689:23;3685:32;3682:52;;;3730:1;3727;3720:12;3682:52;3769:9;3756:23;3788:31;3813:5;3788:31;:::i;:::-;3838:5;-1:-1:-1;3895:2:1;3880:18;;3867:32;3908:33;3867:32;3908:33;:::i;:::-;3960:7;3950:17;;;3585:388;;;;;:::o;4374:241::-;4430:6;4483:2;4471:9;4462:7;4458:23;4454:32;4451:52;;;4499:1;4496;4489:12;4451:52;4538:9;4525:23;4557:28;4579:5;4557:28;:::i;4620:385::-;4706:6;4714;4722;4730;4783:3;4771:9;4762:7;4758:23;4754:33;4751:53;;;4800:1;4797;4790:12;4751:53;-1:-1:-1;;4823:23:1;;;4893:2;4878:18;;4865:32;;-1:-1:-1;4944:2:1;4929:18;;4916:32;;4995:2;4980:18;4967:32;;-1:-1:-1;4620:385:1;-1:-1:-1;4620:385:1:o;5010:127::-;5071:10;5066:3;5062:20;5059:1;5052:31;5102:4;5099:1;5092:15;5126:4;5123:1;5116:15;5142:1191;5232:6;5240;5293:2;5281:9;5272:7;5268:23;5264:32;5261:52;;;5309:1;5306;5299:12;5261:52;5349:9;5336:23;5378:18;5419:2;5411:6;5408:14;5405:34;;;5435:1;5432;5425:12;5405:34;5473:6;5462:9;5458:22;5448:32;;5518:7;5511:4;5507:2;5503:13;5499:27;5489:55;;5540:1;5537;5530:12;5489:55;5576:2;5563:16;5598:4;5621:2;5617;5614:10;5611:36;;;5627:18;;:::i;:::-;5673:2;5670:1;5666:10;5705:2;5699:9;5768:2;5764:7;5759:2;5755;5751:11;5747:25;5739:6;5735:38;5823:6;5811:10;5808:22;5803:2;5791:10;5788:18;5785:46;5782:72;;;5834:18;;:::i;:::-;5870:2;5863:22;5920:18;;;5954:15;;;;-1:-1:-1;5996:11:1;;;5992:20;;;6024:19;;;6021:39;;;6056:1;6053;6046:12;6021:39;6080:11;;;;6100:148;6116:6;6111:3;6108:15;6100:148;;;6182:23;6201:3;6182:23;:::i;:::-;6170:36;;6133:12;;;;6226;;;;6100:148;;;6267:6;-1:-1:-1;6292:35:1;;-1:-1:-1;6308:18:1;;;6292:35;:::i;:::-;6282:45;;;;;;5142:1191;;;;;:::o;6338:382::-;6403:6;6411;6464:2;6452:9;6443:7;6439:23;6435:32;6432:52;;;6480:1;6477;6470:12;6432:52;6519:9;6506:23;6538:31;6563:5;6538:31;:::i;:::-;6588:5;-1:-1:-1;6645:2:1;6630:18;;6617:32;6658:30;6617:32;6658:30;:::i;6948:356::-;7150:2;7132:21;;;7169:18;;;7162:30;7228:34;7223:2;7208:18;;7201:62;7295:2;7280:18;;6948:356::o;7309:127::-;7370:10;7365:3;7361:20;7358:1;7351:31;7401:4;7398:1;7391:15;7425:4;7422:1;7415:15;7441:422;7530:1;7573:5;7530:1;7587:270;7608:7;7598:8;7595:21;7587:270;;;7667:4;7663:1;7659:6;7655:17;7649:4;7646:27;7643:53;;;7676:18;;:::i;:::-;7726:7;7716:8;7712:22;7709:55;;;7746:16;;;;7709:55;7825:22;;;;7785:15;;;;7587:270;;;7591:3;7441:422;;;;;:::o;7868:806::-;7917:5;7947:8;7937:80;;-1:-1:-1;7988:1:1;8002:5;;7937:80;8036:4;8026:76;;-1:-1:-1;8073:1:1;8087:5;;8026:76;8118:4;8136:1;8131:59;;;;8204:1;8199:130;;;;8111:218;;8131:59;8161:1;8152:10;;8175:5;;;8199:130;8236:3;8226:8;8223:17;8220:43;;;8243:18;;:::i;:::-;-1:-1:-1;;8299:1:1;8285:16;;8314:5;;8111:218;;8413:2;8403:8;8400:16;8394:3;8388:4;8385:13;8381:36;8375:2;8365:8;8362:16;8357:2;8351:4;8348:12;8344:35;8341:77;8338:159;;;-1:-1:-1;8450:19:1;;;8482:5;;8338:159;8529:34;8554:8;8548:4;8529:34;:::i;:::-;8599:6;8595:1;8591:6;8587:19;8578:7;8575:32;8572:58;;;8610:18;;:::i;:::-;8648:20;;7868:806;-1:-1:-1;;;7868:806:1:o;8679:140::-;8737:5;8766:47;8807:4;8797:8;8793:19;8787:4;8766:47;:::i;8824:168::-;8864:7;8930:1;8926;8922:6;8918:14;8915:1;8912:21;8907:1;8900:9;8893:17;8889:45;8886:71;;;8937:18;;:::i;:::-;-1:-1:-1;8977:9:1;;8824:168::o;9406:125::-;9446:4;9474:1;9471;9468:8;9465:34;;;9479:18;;:::i;:::-;-1:-1:-1;9516:9:1;;9406:125::o;9947:217::-;9987:1;10013;10003:132;;10057:10;10052:3;10048:20;10045:1;10038:31;10092:4;10089:1;10082:15;10120:4;10117:1;10110:15;10003:132;-1:-1:-1;10149:9:1;;9947:217::o;10521:127::-;10582:10;10577:3;10573:20;10570:1;10563:31;10613:4;10610:1;10603:15;10637:4;10634:1;10627:15;10653:127;10714:10;10709:3;10705:20;10702:1;10695:31;10745:4;10742:1;10735:15;10769:4;10766:1;10759:15;10785:135;10824:3;-1:-1:-1;;10845:17:1;;10842:43;;;10865:18;;:::i;:::-;-1:-1:-1;10912:1:1;10901:13;;10785:135::o;10925:128::-;10965:3;10996:1;10992:6;10989:1;10986:13;10983:39;;;11002:18;;:::i;:::-;-1:-1:-1;11038:9:1;;10925:128::o;12403:245::-;12470:6;12523:2;12511:9;12502:7;12498:23;12494:32;12491:52;;;12539:1;12536;12529:12;12491:52;12571:9;12565:16;12590:28;12612:5;12590:28;:::i;18078:251::-;18148:6;18201:2;18189:9;18180:7;18176:23;18172:32;18169:52;;;18217:1;18214;18207:12;18169:52;18249:9;18243:16;18268:31;18293:5;18268:31;:::i;18334:980::-;18596:4;18644:3;18633:9;18629:19;18675:6;18664:9;18657:25;18701:2;18739:6;18734:2;18723:9;18719:18;18712:34;18782:3;18777:2;18766:9;18762:18;18755:31;18806:6;18841;18835:13;18872:6;18864;18857:22;18910:3;18899:9;18895:19;18888:26;;18949:2;18941:6;18937:15;18923:29;;18970:1;18980:195;18994:6;18991:1;18988:13;18980:195;;;19059:13;;-1:-1:-1;;;;;19055:39:1;19043:52;;19150:15;;;;19115:12;;;;19091:1;19009:9;18980:195;;;-1:-1:-1;;;;;;;19231:32:1;;;;19226:2;19211:18;;19204:60;-1:-1:-1;;;19295:3:1;19280:19;19273:35;19192:3;18334:980;-1:-1:-1;;;18334:980:1:o;19931:306::-;20019:6;20027;20035;20088:2;20076:9;20067:7;20063:23;20059:32;20056:52;;;20104:1;20101;20094:12;20056:52;20133:9;20127:16;20117:26;;20183:2;20172:9;20168:18;20162:25;20152:35;;20227:2;20216:9;20212:18;20206:25;20196:35;;19931:306;;;;;:::o

Swarm Source

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