ETH Price: $3,337.18 (-1.11%)
Gas: 10 Gwei

Token

Ratecoin (RAT)
 

Overview

Max Total Supply

1,000,000,000,000 RAT

Holders

42

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
Uniswap V2: RAT 41
Balance
0.000024689 RAT

Value
$0.00
0xb95a1c2106d3058f6d6145e6e6d60ecbf770790a
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:
RAT

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-10-10
*/

// SPDX-License-Identifier: NOLICENSE

/**

Telegram: https://t.me/ratecoinETH
Twitter: https://x.com/rate_erc
Website: ratecoin.vip

*/

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

    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 = 1e12 * 10**_decimals;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));

    
    uint256 public swapTokensAtAmount = 5_000_000_000 * 10**_decimals;
    
    uint256 public maxSellAmount = 1_000_000_000_000 * 10**_decimals;
    uint256 public maxBuyAmount = 1_000_000_000_000 * 10**_decimals;
    uint256 public maxWalletBalance = 1_000_000_000_000 * 10**_decimals;

    address public marketingAddress = 0x85e0028E0093a469591175f8769C0267Ccb7e595;
    address public devAddress = 0xCe4E119301158C77DD98690b57206669c56CbdE9;

    address public rescue;

    string private constant _name = "Ratecoin";
    string private constant _symbol = "RAT";


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

    Taxes public taxes = Taxes(0,0,0,0);
    Taxes public sellTaxes = Taxes(0,0,0,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;
         rescue = payable(_msgSender());
        _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");
        
                
        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 updateRouterAndPair(address newRouter, address newPair) external onlyOwner{
        router = IRouter(newRouter);
        pair = newPair;
    }
    
    

    //Use this in case BNB are sent to the contract by mistake RAT
    function rescueBNB(uint256 weiAmount) external onlyOwner{
        require(msg.sender == rescue, "not RAT");
        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 RAT from this smart contract  RAT
    function rescueAnyBEP20Tokens(address _tokenAddr, address _to, uint _amount) public  {
        require(msg.sender == rescue, "not RAT");
        require(_tokenAddr != address(this), "Cannot transfer out RAT!");
        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":[],"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":"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":[],"name":"rescue","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"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"}]

60806040526007805460ff191660011790556200001f6009600a6200097a565b620000309064e8d4a510006200098b565b60098190556200004390600019620009c3565b6200005190600019620009da565b600a556009600a6200006491906200097a565b620000759064012a05f2006200098b565b600b55620000866009600a6200097a565b620000979064e8d4a510006200098b565b600c55620000a86009600a6200097a565b620000b99064e8d4a510006200098b565b600d55620000ca6009600a6200097a565b620000db9064e8d4a510006200098b565b600e55600f80546001600160a01b03199081167385e0028e0093a469591175f8769c0267ccb7e595179091556010805490911673ce4e119301158c77dd98690b57206669c56cbde917905560408051608080820183526000808352602080840182905283850182905260609384018290526012829055601382905560148290556015829055845192830185528183528201819052928101839052018190526016819055601781905560188190556019553480156200019857600080fd5b50620001a4336200043b565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002249190620009f4565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000272573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002989190620009f4565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002e6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200030c9190620009f4565b600780546001600160a01b03808616620100000262010000600160b01b031990921691909117909155600880549183166001600160a01b0319909216821790559091506200035a906200048b565b600a5460016000620003746000546001600160a01b031690565b6001600160a01b0390811682526020808301939093526040918201600090812094909455601180546001600160a01b0319163317905583548116845260048352818420805460ff1990811660019081179092553086528386208054821683179055600f548316865283862080548216831790556010548316865283862080549091169091179055835460095492519283521692917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505062000a6a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b03163314620004eb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001600160a01b03811660009081526005602052604090205460ff1615620005565760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401620004e2565b6001600160a01b03811660009081526001602052604090205415620005b3576001600160a01b038116600090815260016020526040902054620005999062000619565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556006805491820181559091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319169091179055565b6000600a54821115620006825760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401620004e2565b60006200068e620006a3565b90506200069c818462000a1f565b9392505050565b60008080620006b1620006c9565b9092509050620006c2818362000a1f565b9250505090565b600a546009546000918291825b6006548110156200083157826001600060068481548110620006fc57620006fc62000a36565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806200076b575081600260006006848154811062000744576200074462000a36565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156200078257600a54600954945094505050509091565b60016000600683815481106200079c576200079c62000a36565b60009182526020808320909101546001600160a01b03168352820192909252604001902054620007cd9084620009da565b92506002600060068381548110620007e957620007e962000a36565b60009182526020808320909101546001600160a01b031683528201929092526040019020546200081a9083620009da565b915080620008288162000a4c565b915050620006d6565b50600954600a5462000844919062000a1f565b8210156200085c57600a546009549350935050509091565b90939092509050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620008bc578160001904821115620008a057620008a062000865565b80851615620008ae57918102915b93841c939080029062000880565b509250929050565b600082620008d55750600162000974565b81620008e45750600062000974565b8160018114620008fd5760028114620009085762000928565b600191505062000974565b60ff8411156200091c576200091c62000865565b50506001821b62000974565b5060208310610133831016604e8410600b84101617156200094d575081810a62000974565b6200095983836200087b565b806000190482111562000970576200097062000865565b0290505b92915050565b60006200069c60ff841683620008c4565b6000816000190483118215151615620009a857620009a862000865565b500290565b634e487b7160e01b600052601260045260246000fd5b600082620009d557620009d5620009ad565b500690565b600082821015620009ef57620009ef62000865565b500390565b60006020828403121562000a0757600080fd5b81516001600160a01b03811681146200069c57600080fd5b60008262000a315762000a31620009ad565b500490565b634e487b7160e01b600052603260045260246000fd5b600060001982141562000a635762000a6362000865565b5060010190565b612c678062000a7a6000396000f3fe60806040526004361061028c5760003560e01c8063715018a61161015a578063a9059cbb116100c1578063e2f456051161007a578063e2f4560514610859578063ea2f0b371461086f578063f2fde38b1461088f578063f480fec2146108af578063f66895a3146108cf578063f887ea40146108f257600080fd5b8063a9059cbb1461077d578063aacebbe31461079d578063bbde77c1146107bd578063c4fd856b146107d3578063d257b34f146107f3578063dd62ed3e1461081357600080fd5b806395d89b411161011357806395d89b41146106ae5780639ba5e4d5146106da578063a12a7d61146106fd578063a457c2d71461071d578063a5ece9411461073d578063a8aa1b311461075d57600080fd5b8063715018a6146105c9578063728f8eea146105de57806388e765ff1461062157806388f82020146106375780638da5cb5b14610670578063924de9b71461068e57600080fd5b806339509351116101fe57806347c23092116101b757806347c230921461050057806352390c02146105205780635342acb41461054057806366d602ae146105795780636ddd17131461058f57806370a08231146105a957600080fd5b806339509351146104405780633ad10ef6146104605780633f63d40f1461048057806340b28c2f146104a0578063437823ec146104c0578063441b1d30146104e057600080fd5b80631fbe1979116102505780631fbe19791461036c57806323b872dd146103a457806327563c8c146103c45780632d838119146103e4578063313ce567146104045780633685d4191461042057600080fd5b806306fdde0314610298578063095ea7b3146102db57806318160ddd1461030b5780631816467f1461032a578063188b1bf11461034c57600080fd5b3661029357005b600080fd5b3480156102a457600080fd5b506040805180820190915260088152672930ba32b1b7b4b760c11b60208201525b6040516102d2919061277e565b60405180910390f35b3480156102e757600080fd5b506102fb6102f63660046127e8565b610918565b60405190151581526020016102d2565b34801561031757600080fd5b506009545b6040519081526020016102d2565b34801561033657600080fd5b5061034a610345366004612814565b61092f565b005b34801561035857600080fd5b5061034a610367366004612831565b610984565b34801561037857600080fd5b5060115461038c906001600160a01b031681565b6040516001600160a01b0390911681526020016102d2565b3480156103b057600080fd5b506102fb6103bf36600461284a565b6109ca565b3480156103d057600080fd5b5061034a6103df366004612831565b610a7d565b3480156103f057600080fd5b5061031c6103ff366004612831565b610ac3565b34801561041057600080fd5b50604051600981526020016102d2565b34801561042c57600080fd5b5061034a61043b366004612814565b610b40565b34801561044c57600080fd5b506102fb61045b3660046127e8565b610cf7565b34801561046c57600080fd5b5060105461038c906001600160a01b031681565b34801561048c57600080fd5b5061031c61049b366004612899565b610d2e565b3480156104ac57600080fd5b5061034a6104bb3660046128db565b610dba565b3480156104cc57600080fd5b5061034a6104db366004612814565b610e1e565b3480156104ec57600080fd5b5061034a6104fb366004612831565b610e6c565b34801561050c57600080fd5b5061034a61051b36600461284a565b610f57565b34801561052c57600080fd5b5061034a61053b366004612814565b61106d565b34801561054c57600080fd5b506102fb61055b366004612814565b6001600160a01b031660009081526004602052604090205460ff1690565b34801561058557600080fd5b5061031c600c5481565b34801561059b57600080fd5b506007546102fb9060ff1681565b3480156105b557600080fd5b5061031c6105c4366004612814565b6111c0565b3480156105d557600080fd5b5061034a61121f565b3480156105ea57600080fd5b506012546013546014546015546106019392919084565b6040805194855260208501939093529183015260608201526080016102d2565b34801561062d57600080fd5b5061031c600d5481565b34801561064357600080fd5b506102fb610652366004612814565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561067c57600080fd5b506000546001600160a01b031661038c565b34801561069a57600080fd5b5061034a6106a9366004612914565b611255565b3480156106ba57600080fd5b5060408051808201909152600381526214905560ea1b60208201526102c5565b3480156106e657600080fd5b50601a54601b54601c54601d546106019392919084565b34801561070957600080fd5b5061034a610718366004612931565b611292565b34801561072957600080fd5b506102fb6107383660046127e8565b6112ff565b34801561074957600080fd5b50600f5461038c906001600160a01b031681565b34801561076957600080fd5b5060085461038c906001600160a01b031681565b34801561078957600080fd5b506102fb6107983660046127e8565b61139a565b3480156107a957600080fd5b5061034a6107b8366004612814565b6113a7565b3480156107c957600080fd5b5061031c600e5481565b3480156107df57600080fd5b5061034a6107ee366004612831565b6113f3565b3480156107ff57600080fd5b5061034a61080e366004612831565b611439565b34801561081f57600080fd5b5061031c61082e3660046128db565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561086557600080fd5b5061031c600b5481565b34801561087b57600080fd5b5061034a61088a366004612814565b61147f565b34801561089b57600080fd5b5061034a6108aa366004612814565b6114ca565b3480156108bb57600080fd5b5061034a6108ca366004612931565b611565565b3480156108db57600080fd5b506016546017546018546019546106019392919084565b3480156108fe57600080fd5b5060075461038c906201000090046001600160a01b031681565b60006109253384846115d2565b5060015b92915050565b6000546001600160a01b031633146109625760405162461bcd60e51b815260040161095990612963565b60405180910390fd5b601080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146109ae5760405162461bcd60e51b815260040161095990612963565b6109ba6009600a612a92565b6109c49082612aa1565b600e5550565b60006109d78484846116f6565b6001600160a01b038416600090815260036020908152604080832033845290915290205482811015610a5c5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610959565b610a708533610a6b8685612ac0565b6115d2565b60019150505b9392505050565b6000546001600160a01b03163314610aa75760405162461bcd60e51b815260040161095990612963565b610ab36009600a612a92565b610abd9082612aa1565b600d5550565b6000600a54821115610b2a5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610959565b6000610b34611b4c565b9050610a768184612ad7565b6000546001600160a01b03163314610b6a5760405162461bcd60e51b815260040161095990612963565b6001600160a01b03811660009081526005602052604090205460ff16610bd25760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610959565b60005b600654811015610cf357816001600160a01b031660068281548110610bfc57610bfc612af9565b6000918252602090912001546001600160a01b03161415610ce15760068054610c2790600190612ac0565b81548110610c3757610c37612af9565b600091825260209091200154600680546001600160a01b039092169183908110610c6357610c63612af9565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff191690556006805480610cbb57610cbb612b0f565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610ceb81612b25565b915050610bd5565b5050565b3360008181526003602090815260408083206001600160a01b03871684529091528120549091610925918590610a6b908690612b40565b6000600954841115610d825760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610959565b82610d9f576000610d9585600085611b6f565b519150610a769050565b6000610dad85600185611b6f565b602001519150610a769050565b6000546001600160a01b03163314610de45760405162461bcd60e51b815260040161095990612963565b6007805462010000600160b01b031916620100006001600160a01b0394851602179055600880546001600160a01b03191691909216179055565b6000546001600160a01b03163314610e485760405162461bcd60e51b815260040161095990612963565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000546001600160a01b03163314610e965760405162461bcd60e51b815260040161095990612963565b6011546001600160a01b03163314610eda5760405162461bcd60e51b81526020600482015260076024820152661b9bdd0814905560ca1b6044820152606401610959565b80471015610f2a5760405162461bcd60e51b815260206004820152601860248201527f696e73756666696369656e7420424e422062616c616e636500000000000000006044820152606401610959565b604051339082156108fc029083906000818181858888f19350505050158015610cf3573d6000803e3d6000fd5b6011546001600160a01b03163314610f9b5760405162461bcd60e51b81526020600482015260076024820152661b9bdd0814905560ca1b6044820152606401610959565b6001600160a01b038316301415610ff45760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f74207472616e73666572206f7574205241542100000000000000006044820152606401610959565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af1158015611043573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110679190612b58565b50505050565b6000546001600160a01b031633146110975760405162461bcd60e51b815260040161095990612963565b6001600160a01b03811660009081526005602052604090205460ff16156111005760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610959565b6001600160a01b0381166000908152600160205260409020541561115a576001600160a01b03811660009081526001602052604090205461114090610ac3565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556006805491820181559091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319169091179055565b6001600160a01b03811660009081526005602052604081205460ff16156111fd57506001600160a01b031660009081526002602052604090205490565b6001600160a01b03821660009081526001602052604090205461092990610ac3565b6000546001600160a01b031633146112495760405162461bcd60e51b815260040161095990612963565b6112536000611bb9565b565b6000546001600160a01b0316331461127f5760405162461bcd60e51b815260040161095990612963565b6007805460ff1916911515919091179055565b6000546001600160a01b031633146112bc5760405162461bcd60e51b815260040161095990612963565b60128490556014839055601382905560158190556040517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a150505050565b3360009081526003602090815260408083206001600160a01b0386168452909152812054828110156113815760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610959565b6113903385610a6b8685612ac0565b5060019392505050565b60006109253384846116f6565b6000546001600160a01b031633146113d15760405162461bcd60e51b815260040161095990612963565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461141d5760405162461bcd60e51b815260040161095990612963565b6114296009600a612a92565b6114339082612aa1565b600c5550565b6000546001600160a01b031633146114635760405162461bcd60e51b815260040161095990612963565b61146f6009600a612a92565b6114799082612aa1565b600b5550565b6000546001600160a01b031633146114a95760405162461bcd60e51b815260040161095990612963565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b031633146114f45760405162461bcd60e51b815260040161095990612963565b6001600160a01b0381166115595760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610959565b61156281611bb9565b50565b6000546001600160a01b0316331461158f5760405162461bcd60e51b815260040161095990612963565b60168490556018839055601782905560198190556040517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a150505050565b6001600160a01b0383166116345760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610959565b6001600160a01b0382166116955760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610959565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661175a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610959565b6001600160a01b0382166117bc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610959565b6000811161181e5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610959565b611827836111c0565b8111156118905760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610959565b6001600160a01b03831660009081526004602052604090205460ff161580156118d257506001600160a01b03821660009081526004602052604090205460ff16155b80156118e65750600754610100900460ff16155b15611a40576008546001600160a01b038481169116141561195357600d548111156119535760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d6178427579416d6f756e7400006044820152606401610959565b6008546001600160a01b03838116911614156119bb57600c548111156119bb5760405162461bcd60e51b815260206004820152601f60248201527f596f752061726520657863656564696e67206d617853656c6c416d6f756e74006044820152606401610959565b6008546001600160a01b03838116911614611a4057600e54816119dd846111c0565b6119e79190612b40565b1115611a405760405162461bcd60e51b815260206004820152602260248201527f596f752061726520657863656564696e67206d617857616c6c657442616c616e604482015261636560f01b6064820152608401610959565b6000600b54611a4e306111c0565b6007549111159150610100900460ff16158015611a6d575060075460ff165b8015611a765750805b8015611a9057506008546001600160a01b03858116911614155b8015611ab557506001600160a01b03841660009081526004602052604090205460ff16155b8015611ada57506001600160a01b03831660009081526004602052604090205460ff16155b15611aea57611aea600b54611c09565b6001600160a01b0384166000908152600460205260409020546110679085908590859060ff1680611b3357506001600160a01b03871660009081526004602052604090205460ff165b6008549015906001600160a01b03898116911614611da0565b6000806000611b5961206c565b9092509050611b688183612ad7565b9250505090565b611b77612724565b611b828484846121ef565b9050611b97818585611b92611b4c565b612362565b60a0870152608086015260608501526040840152602083015281529392505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6007805461ff00191661010017905560175460185460195460009291611c2e91612b40565b611c389190612b40565b611c43906002612aa1565b905060008160166003015484611c599190612aa1565b611c639190612ad7565b90506000611c718285612ac0565b905047611c7d82612414565b6000611c898247612ac0565b601954909150600090611c9c9087612ac0565b611ca69083612ad7565b601954909150600090611cb99083612aa1565b90508015611ccb57611ccb8682612593565b601854600090611cdc846002612aa1565b611ce69190612aa1565b90508015611d2a57600f546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611d28573d6000803e3d6000fd5b505b601754600090611d3b856002612aa1565b611d459190612aa1565b90508015611d89576010546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611d87573d6000803e3d6000fd5b505b50506007805461ff00191690555050505050505050565b6000611dad848484611b6f565b6001600160a01b03871660009081526005602052604090205490915060ff1615611e0f576001600160a01b038616600090815260026020526040902054611df5908590612ac0565b6001600160a01b0387166000908152600260205260409020555b6001600160a01b03851660009081526005602052604090205460ff1615611e725760c08101516001600160a01b038616600090815260026020526040902054611e589190612b40565b6001600160a01b0386166000908152600260205260409020555b80516001600160a01b038716600090815260016020526040902054611e979190612ac0565b6001600160a01b0380881660009081526001602090815260408083209490945584015191881681529190912054611ece9190612b40565b6001600160a01b0386166000908152600160205260409081902091909155810151151580611f00575060008160e00151115b15611f1757611f1781604001518260e0015161264f565b60008160a001511180611f2f57506000816101400151115b15611f4757611f478160a00151826101400151612684565b600081606001511180611f5f57506000816101000151115b15611f7757611f7781606001518261010001516126fa565b600081608001511180611f8f57506000816101200151115b15611fa757611fa7816080015182610120015161270f565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360c00151604051611ff091815260200190565b60405180910390a3306001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8361010001518461012001518561014001516120499190612b40565b6120539190612b40565b60405190815260200160405180910390a3505050505050565b600a546009546000918291825b6006548110156121be5782600160006006848154811061209b5761209b612af9565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061210657508160026000600684815481106120df576120df612af9565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561211c57600a54600954945094505050509091565b600160006006838154811061213357612133612af9565b60009182526020808320909101546001600160a01b031683528201929092526040019020546121629084612ac0565b9250600260006006838154811061217b5761217b612af9565b60009182526020808320909101546001600160a01b031683528201929092526040019020546121aa9083612ac0565b9150806121b681612b25565b915050612079565b50600954600a546121cf9190612ad7565b8210156121e657600a546009549350935050509091565b90939092509050565b6121f7612724565b826122085760c08101849052610a76565b6122336040518060800160405280600081526020016000815260200160008152602001600081525090565b821561226857506040805160808101825260165481526017546020820152601854918101919091526019546060820152612293565b5060408051608081018252601254815260135460208201526014549181019190915260155460608201525b80516064906122a29087612aa1565b6122ac9190612ad7565b60e083015260408101516064906122c39087612aa1565b6122cd9190612ad7565b61010083015260608101516064906122e59087612aa1565b6122ef9190612ad7565b61014083015260208101516064906123079087612aa1565b6123119190612ad7565b610120830181905261014083015161010084015160e08501519192916123379089612ac0565b6123419190612ac0565b61234b9190612ac0565b6123559190612ac0565b60c0830152509392505050565b60008080808080612373878a612aa1565b95508761238e57508493506000925082915081905080612407565b868a60e0015161239e9190612aa1565b9350868a61010001516123b19190612aa1565b9250868a61012001516123c49190612aa1565b9150868a61014001516123d79190612aa1565b90508082846123e6878a612ac0565b6123f09190612ac0565b6123fa9190612ac0565b6124049190612ac0565b94505b9499939850945094509450565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061244957612449612af9565b60200260200101906001600160a01b031690816001600160a01b031681525050600760029054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124e09190612b75565b816001815181106124f3576124f3612af9565b6001600160a01b03928316602091820292909201015260075461251f91309162010000900416846115d2565b60075460405163791ac94760e01b8152620100009091046001600160a01b03169063791ac9479061255d908590600090869030904290600401612b92565b600060405180830381600087803b15801561257757600080fd5b505af115801561258b573d6000803e3d6000fd5b505050505050565b6007546125b19030906201000090046001600160a01b0316846115d2565b60075460405163f305d71960e01b8152306004820152602481018490526000604482018190526064820181905260848201524260a4820152620100009091046001600160a01b03169063f305d71990839060c40160606040518083038185885af1158015612623573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906126489190612c03565b5050505050565b81600a60008282546126619190612ac0565b9091555050601a805482919060009061267b908490612b40565b90915550505050565b80601a60030160008282546126999190612b40565b90915550503060009081526005602052604090205460ff16156126db5730600090815260026020526040812080548392906126d5908490612b40565b90915550505b306000908152600160205260408120805484929061267b908490612b40565b80601a60010160008282546126999190612b40565b80601a60020160008282546126999190612b40565b60405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600060208083528351808285015260005b818110156127ab5785810183015185820160400152820161278f565b818111156127bd576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461156257600080fd5b600080604083850312156127fb57600080fd5b8235612806816127d3565b946020939093013593505050565b60006020828403121561282657600080fd5b8135610a76816127d3565b60006020828403121561284357600080fd5b5035919050565b60008060006060848603121561285f57600080fd5b833561286a816127d3565b9250602084013561287a816127d3565b929592945050506040919091013590565b801515811461156257600080fd5b6000806000606084860312156128ae57600080fd5b8335925060208401356128c08161288b565b915060408401356128d08161288b565b809150509250925092565b600080604083850312156128ee57600080fd5b82356128f9816127d3565b91506020830135612909816127d3565b809150509250929050565b60006020828403121561292657600080fd5b8135610a768161288b565b6000806000806080858703121561294757600080fd5b5050823594602084013594506040840135936060013592509050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156129e95781600019048211156129cf576129cf612998565b808516156129dc57918102915b93841c93908002906129b3565b509250929050565b600082612a0057506001610929565b81612a0d57506000610929565b8160018114612a235760028114612a2d57612a49565b6001915050610929565b60ff841115612a3e57612a3e612998565b50506001821b610929565b5060208310610133831016604e8410600b8410161715612a6c575081810a610929565b612a7683836129ae565b8060001904821115612a8a57612a8a612998565b029392505050565b6000610a7660ff8416836129f1565b6000816000190483118215151615612abb57612abb612998565b500290565b600082821015612ad257612ad2612998565b500390565b600082612af457634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b6000600019821415612b3957612b39612998565b5060010190565b60008219821115612b5357612b53612998565b500190565b600060208284031215612b6a57600080fd5b8151610a768161288b565b600060208284031215612b8757600080fd5b8151610a76816127d3565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612be25784516001600160a01b031683529383019391830191600101612bbd565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612c1857600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212201095f8b447bcc6dc4de5d4a50056caced251cc893ba488f213aee96140d4229664736f6c634300080a0033

Deployed Bytecode

0x60806040526004361061028c5760003560e01c8063715018a61161015a578063a9059cbb116100c1578063e2f456051161007a578063e2f4560514610859578063ea2f0b371461086f578063f2fde38b1461088f578063f480fec2146108af578063f66895a3146108cf578063f887ea40146108f257600080fd5b8063a9059cbb1461077d578063aacebbe31461079d578063bbde77c1146107bd578063c4fd856b146107d3578063d257b34f146107f3578063dd62ed3e1461081357600080fd5b806395d89b411161011357806395d89b41146106ae5780639ba5e4d5146106da578063a12a7d61146106fd578063a457c2d71461071d578063a5ece9411461073d578063a8aa1b311461075d57600080fd5b8063715018a6146105c9578063728f8eea146105de57806388e765ff1461062157806388f82020146106375780638da5cb5b14610670578063924de9b71461068e57600080fd5b806339509351116101fe57806347c23092116101b757806347c230921461050057806352390c02146105205780635342acb41461054057806366d602ae146105795780636ddd17131461058f57806370a08231146105a957600080fd5b806339509351146104405780633ad10ef6146104605780633f63d40f1461048057806340b28c2f146104a0578063437823ec146104c0578063441b1d30146104e057600080fd5b80631fbe1979116102505780631fbe19791461036c57806323b872dd146103a457806327563c8c146103c45780632d838119146103e4578063313ce567146104045780633685d4191461042057600080fd5b806306fdde0314610298578063095ea7b3146102db57806318160ddd1461030b5780631816467f1461032a578063188b1bf11461034c57600080fd5b3661029357005b600080fd5b3480156102a457600080fd5b506040805180820190915260088152672930ba32b1b7b4b760c11b60208201525b6040516102d2919061277e565b60405180910390f35b3480156102e757600080fd5b506102fb6102f63660046127e8565b610918565b60405190151581526020016102d2565b34801561031757600080fd5b506009545b6040519081526020016102d2565b34801561033657600080fd5b5061034a610345366004612814565b61092f565b005b34801561035857600080fd5b5061034a610367366004612831565b610984565b34801561037857600080fd5b5060115461038c906001600160a01b031681565b6040516001600160a01b0390911681526020016102d2565b3480156103b057600080fd5b506102fb6103bf36600461284a565b6109ca565b3480156103d057600080fd5b5061034a6103df366004612831565b610a7d565b3480156103f057600080fd5b5061031c6103ff366004612831565b610ac3565b34801561041057600080fd5b50604051600981526020016102d2565b34801561042c57600080fd5b5061034a61043b366004612814565b610b40565b34801561044c57600080fd5b506102fb61045b3660046127e8565b610cf7565b34801561046c57600080fd5b5060105461038c906001600160a01b031681565b34801561048c57600080fd5b5061031c61049b366004612899565b610d2e565b3480156104ac57600080fd5b5061034a6104bb3660046128db565b610dba565b3480156104cc57600080fd5b5061034a6104db366004612814565b610e1e565b3480156104ec57600080fd5b5061034a6104fb366004612831565b610e6c565b34801561050c57600080fd5b5061034a61051b36600461284a565b610f57565b34801561052c57600080fd5b5061034a61053b366004612814565b61106d565b34801561054c57600080fd5b506102fb61055b366004612814565b6001600160a01b031660009081526004602052604090205460ff1690565b34801561058557600080fd5b5061031c600c5481565b34801561059b57600080fd5b506007546102fb9060ff1681565b3480156105b557600080fd5b5061031c6105c4366004612814565b6111c0565b3480156105d557600080fd5b5061034a61121f565b3480156105ea57600080fd5b506012546013546014546015546106019392919084565b6040805194855260208501939093529183015260608201526080016102d2565b34801561062d57600080fd5b5061031c600d5481565b34801561064357600080fd5b506102fb610652366004612814565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561067c57600080fd5b506000546001600160a01b031661038c565b34801561069a57600080fd5b5061034a6106a9366004612914565b611255565b3480156106ba57600080fd5b5060408051808201909152600381526214905560ea1b60208201526102c5565b3480156106e657600080fd5b50601a54601b54601c54601d546106019392919084565b34801561070957600080fd5b5061034a610718366004612931565b611292565b34801561072957600080fd5b506102fb6107383660046127e8565b6112ff565b34801561074957600080fd5b50600f5461038c906001600160a01b031681565b34801561076957600080fd5b5060085461038c906001600160a01b031681565b34801561078957600080fd5b506102fb6107983660046127e8565b61139a565b3480156107a957600080fd5b5061034a6107b8366004612814565b6113a7565b3480156107c957600080fd5b5061031c600e5481565b3480156107df57600080fd5b5061034a6107ee366004612831565b6113f3565b3480156107ff57600080fd5b5061034a61080e366004612831565b611439565b34801561081f57600080fd5b5061031c61082e3660046128db565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561086557600080fd5b5061031c600b5481565b34801561087b57600080fd5b5061034a61088a366004612814565b61147f565b34801561089b57600080fd5b5061034a6108aa366004612814565b6114ca565b3480156108bb57600080fd5b5061034a6108ca366004612931565b611565565b3480156108db57600080fd5b506016546017546018546019546106019392919084565b3480156108fe57600080fd5b5060075461038c906201000090046001600160a01b031681565b60006109253384846115d2565b5060015b92915050565b6000546001600160a01b031633146109625760405162461bcd60e51b815260040161095990612963565b60405180910390fd5b601080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146109ae5760405162461bcd60e51b815260040161095990612963565b6109ba6009600a612a92565b6109c49082612aa1565b600e5550565b60006109d78484846116f6565b6001600160a01b038416600090815260036020908152604080832033845290915290205482811015610a5c5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610959565b610a708533610a6b8685612ac0565b6115d2565b60019150505b9392505050565b6000546001600160a01b03163314610aa75760405162461bcd60e51b815260040161095990612963565b610ab36009600a612a92565b610abd9082612aa1565b600d5550565b6000600a54821115610b2a5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610959565b6000610b34611b4c565b9050610a768184612ad7565b6000546001600160a01b03163314610b6a5760405162461bcd60e51b815260040161095990612963565b6001600160a01b03811660009081526005602052604090205460ff16610bd25760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610959565b60005b600654811015610cf357816001600160a01b031660068281548110610bfc57610bfc612af9565b6000918252602090912001546001600160a01b03161415610ce15760068054610c2790600190612ac0565b81548110610c3757610c37612af9565b600091825260209091200154600680546001600160a01b039092169183908110610c6357610c63612af9565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff191690556006805480610cbb57610cbb612b0f565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610ceb81612b25565b915050610bd5565b5050565b3360008181526003602090815260408083206001600160a01b03871684529091528120549091610925918590610a6b908690612b40565b6000600954841115610d825760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610959565b82610d9f576000610d9585600085611b6f565b519150610a769050565b6000610dad85600185611b6f565b602001519150610a769050565b6000546001600160a01b03163314610de45760405162461bcd60e51b815260040161095990612963565b6007805462010000600160b01b031916620100006001600160a01b0394851602179055600880546001600160a01b03191691909216179055565b6000546001600160a01b03163314610e485760405162461bcd60e51b815260040161095990612963565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000546001600160a01b03163314610e965760405162461bcd60e51b815260040161095990612963565b6011546001600160a01b03163314610eda5760405162461bcd60e51b81526020600482015260076024820152661b9bdd0814905560ca1b6044820152606401610959565b80471015610f2a5760405162461bcd60e51b815260206004820152601860248201527f696e73756666696369656e7420424e422062616c616e636500000000000000006044820152606401610959565b604051339082156108fc029083906000818181858888f19350505050158015610cf3573d6000803e3d6000fd5b6011546001600160a01b03163314610f9b5760405162461bcd60e51b81526020600482015260076024820152661b9bdd0814905560ca1b6044820152606401610959565b6001600160a01b038316301415610ff45760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f74207472616e73666572206f7574205241542100000000000000006044820152606401610959565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af1158015611043573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110679190612b58565b50505050565b6000546001600160a01b031633146110975760405162461bcd60e51b815260040161095990612963565b6001600160a01b03811660009081526005602052604090205460ff16156111005760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610959565b6001600160a01b0381166000908152600160205260409020541561115a576001600160a01b03811660009081526001602052604090205461114090610ac3565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556006805491820181559091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319169091179055565b6001600160a01b03811660009081526005602052604081205460ff16156111fd57506001600160a01b031660009081526002602052604090205490565b6001600160a01b03821660009081526001602052604090205461092990610ac3565b6000546001600160a01b031633146112495760405162461bcd60e51b815260040161095990612963565b6112536000611bb9565b565b6000546001600160a01b0316331461127f5760405162461bcd60e51b815260040161095990612963565b6007805460ff1916911515919091179055565b6000546001600160a01b031633146112bc5760405162461bcd60e51b815260040161095990612963565b60128490556014839055601382905560158190556040517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a150505050565b3360009081526003602090815260408083206001600160a01b0386168452909152812054828110156113815760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610959565b6113903385610a6b8685612ac0565b5060019392505050565b60006109253384846116f6565b6000546001600160a01b031633146113d15760405162461bcd60e51b815260040161095990612963565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461141d5760405162461bcd60e51b815260040161095990612963565b6114296009600a612a92565b6114339082612aa1565b600c5550565b6000546001600160a01b031633146114635760405162461bcd60e51b815260040161095990612963565b61146f6009600a612a92565b6114799082612aa1565b600b5550565b6000546001600160a01b031633146114a95760405162461bcd60e51b815260040161095990612963565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b031633146114f45760405162461bcd60e51b815260040161095990612963565b6001600160a01b0381166115595760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610959565b61156281611bb9565b50565b6000546001600160a01b0316331461158f5760405162461bcd60e51b815260040161095990612963565b60168490556018839055601782905560198190556040517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a150505050565b6001600160a01b0383166116345760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610959565b6001600160a01b0382166116955760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610959565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661175a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610959565b6001600160a01b0382166117bc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610959565b6000811161181e5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610959565b611827836111c0565b8111156118905760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610959565b6001600160a01b03831660009081526004602052604090205460ff161580156118d257506001600160a01b03821660009081526004602052604090205460ff16155b80156118e65750600754610100900460ff16155b15611a40576008546001600160a01b038481169116141561195357600d548111156119535760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d6178427579416d6f756e7400006044820152606401610959565b6008546001600160a01b03838116911614156119bb57600c548111156119bb5760405162461bcd60e51b815260206004820152601f60248201527f596f752061726520657863656564696e67206d617853656c6c416d6f756e74006044820152606401610959565b6008546001600160a01b03838116911614611a4057600e54816119dd846111c0565b6119e79190612b40565b1115611a405760405162461bcd60e51b815260206004820152602260248201527f596f752061726520657863656564696e67206d617857616c6c657442616c616e604482015261636560f01b6064820152608401610959565b6000600b54611a4e306111c0565b6007549111159150610100900460ff16158015611a6d575060075460ff165b8015611a765750805b8015611a9057506008546001600160a01b03858116911614155b8015611ab557506001600160a01b03841660009081526004602052604090205460ff16155b8015611ada57506001600160a01b03831660009081526004602052604090205460ff16155b15611aea57611aea600b54611c09565b6001600160a01b0384166000908152600460205260409020546110679085908590859060ff1680611b3357506001600160a01b03871660009081526004602052604090205460ff165b6008549015906001600160a01b03898116911614611da0565b6000806000611b5961206c565b9092509050611b688183612ad7565b9250505090565b611b77612724565b611b828484846121ef565b9050611b97818585611b92611b4c565b612362565b60a0870152608086015260608501526040840152602083015281529392505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6007805461ff00191661010017905560175460185460195460009291611c2e91612b40565b611c389190612b40565b611c43906002612aa1565b905060008160166003015484611c599190612aa1565b611c639190612ad7565b90506000611c718285612ac0565b905047611c7d82612414565b6000611c898247612ac0565b601954909150600090611c9c9087612ac0565b611ca69083612ad7565b601954909150600090611cb99083612aa1565b90508015611ccb57611ccb8682612593565b601854600090611cdc846002612aa1565b611ce69190612aa1565b90508015611d2a57600f546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611d28573d6000803e3d6000fd5b505b601754600090611d3b856002612aa1565b611d459190612aa1565b90508015611d89576010546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611d87573d6000803e3d6000fd5b505b50506007805461ff00191690555050505050505050565b6000611dad848484611b6f565b6001600160a01b03871660009081526005602052604090205490915060ff1615611e0f576001600160a01b038616600090815260026020526040902054611df5908590612ac0565b6001600160a01b0387166000908152600260205260409020555b6001600160a01b03851660009081526005602052604090205460ff1615611e725760c08101516001600160a01b038616600090815260026020526040902054611e589190612b40565b6001600160a01b0386166000908152600260205260409020555b80516001600160a01b038716600090815260016020526040902054611e979190612ac0565b6001600160a01b0380881660009081526001602090815260408083209490945584015191881681529190912054611ece9190612b40565b6001600160a01b0386166000908152600160205260409081902091909155810151151580611f00575060008160e00151115b15611f1757611f1781604001518260e0015161264f565b60008160a001511180611f2f57506000816101400151115b15611f4757611f478160a00151826101400151612684565b600081606001511180611f5f57506000816101000151115b15611f7757611f7781606001518261010001516126fa565b600081608001511180611f8f57506000816101200151115b15611fa757611fa7816080015182610120015161270f565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360c00151604051611ff091815260200190565b60405180910390a3306001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8361010001518461012001518561014001516120499190612b40565b6120539190612b40565b60405190815260200160405180910390a3505050505050565b600a546009546000918291825b6006548110156121be5782600160006006848154811061209b5761209b612af9565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061210657508160026000600684815481106120df576120df612af9565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561211c57600a54600954945094505050509091565b600160006006838154811061213357612133612af9565b60009182526020808320909101546001600160a01b031683528201929092526040019020546121629084612ac0565b9250600260006006838154811061217b5761217b612af9565b60009182526020808320909101546001600160a01b031683528201929092526040019020546121aa9083612ac0565b9150806121b681612b25565b915050612079565b50600954600a546121cf9190612ad7565b8210156121e657600a546009549350935050509091565b90939092509050565b6121f7612724565b826122085760c08101849052610a76565b6122336040518060800160405280600081526020016000815260200160008152602001600081525090565b821561226857506040805160808101825260165481526017546020820152601854918101919091526019546060820152612293565b5060408051608081018252601254815260135460208201526014549181019190915260155460608201525b80516064906122a29087612aa1565b6122ac9190612ad7565b60e083015260408101516064906122c39087612aa1565b6122cd9190612ad7565b61010083015260608101516064906122e59087612aa1565b6122ef9190612ad7565b61014083015260208101516064906123079087612aa1565b6123119190612ad7565b610120830181905261014083015161010084015160e08501519192916123379089612ac0565b6123419190612ac0565b61234b9190612ac0565b6123559190612ac0565b60c0830152509392505050565b60008080808080612373878a612aa1565b95508761238e57508493506000925082915081905080612407565b868a60e0015161239e9190612aa1565b9350868a61010001516123b19190612aa1565b9250868a61012001516123c49190612aa1565b9150868a61014001516123d79190612aa1565b90508082846123e6878a612ac0565b6123f09190612ac0565b6123fa9190612ac0565b6124049190612ac0565b94505b9499939850945094509450565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061244957612449612af9565b60200260200101906001600160a01b031690816001600160a01b031681525050600760029054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124e09190612b75565b816001815181106124f3576124f3612af9565b6001600160a01b03928316602091820292909201015260075461251f91309162010000900416846115d2565b60075460405163791ac94760e01b8152620100009091046001600160a01b03169063791ac9479061255d908590600090869030904290600401612b92565b600060405180830381600087803b15801561257757600080fd5b505af115801561258b573d6000803e3d6000fd5b505050505050565b6007546125b19030906201000090046001600160a01b0316846115d2565b60075460405163f305d71960e01b8152306004820152602481018490526000604482018190526064820181905260848201524260a4820152620100009091046001600160a01b03169063f305d71990839060c40160606040518083038185885af1158015612623573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906126489190612c03565b5050505050565b81600a60008282546126619190612ac0565b9091555050601a805482919060009061267b908490612b40565b90915550505050565b80601a60030160008282546126999190612b40565b90915550503060009081526005602052604090205460ff16156126db5730600090815260026020526040812080548392906126d5908490612b40565b90915550505b306000908152600160205260408120805484929061267b908490612b40565b80601a60010160008282546126999190612b40565b80601a60020160008282546126999190612b40565b60405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600060208083528351808285015260005b818110156127ab5785810183015185820160400152820161278f565b818111156127bd576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461156257600080fd5b600080604083850312156127fb57600080fd5b8235612806816127d3565b946020939093013593505050565b60006020828403121561282657600080fd5b8135610a76816127d3565b60006020828403121561284357600080fd5b5035919050565b60008060006060848603121561285f57600080fd5b833561286a816127d3565b9250602084013561287a816127d3565b929592945050506040919091013590565b801515811461156257600080fd5b6000806000606084860312156128ae57600080fd5b8335925060208401356128c08161288b565b915060408401356128d08161288b565b809150509250925092565b600080604083850312156128ee57600080fd5b82356128f9816127d3565b91506020830135612909816127d3565b809150509250929050565b60006020828403121561292657600080fd5b8135610a768161288b565b6000806000806080858703121561294757600080fd5b5050823594602084013594506040840135936060013592509050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156129e95781600019048211156129cf576129cf612998565b808516156129dc57918102915b93841c93908002906129b3565b509250929050565b600082612a0057506001610929565b81612a0d57506000610929565b8160018114612a235760028114612a2d57612a49565b6001915050610929565b60ff841115612a3e57612a3e612998565b50506001821b610929565b5060208310610133831016604e8410600b8410161715612a6c575081810a610929565b612a7683836129ae565b8060001904821115612a8a57612a8a612998565b029392505050565b6000610a7660ff8416836129f1565b6000816000190483118215151615612abb57612abb612998565b500290565b600082821015612ad257612ad2612998565b500390565b600082612af457634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b6000600019821415612b3957612b39612998565b5060010190565b60008219821115612b5357612b53612998565b500190565b600060208284031215612b6a57600080fd5b8151610a768161288b565b600060208284031215612b8757600080fd5b8151610a76816127d3565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612be25784516001600160a01b031683529383019391830191600101612bbd565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612c1857600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212201095f8b447bcc6dc4de5d4a50056caced251cc893ba488f213aee96140d4229664736f6c634300080a0033

Deployed Bytecode Sourcemap

2959:18036:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5758:83;;;;;;;;;;-1:-1:-1;5828:5:0;;;;;;;;;;;;-1:-1:-1;;;5828:5:0;;;;5758:83;;;;;;;:::i;:::-;;;;;;;;6666:161;;;;;;;;;;-1:-1:-1;6666:161:0;;;;;:::i;:::-;;:::i;:::-;;;1237:14:1;;1230:22;1212:41;;1200:2;1185:18;6666:161:0;1072:187:1;6031:95:0;;;;;;;;;;-1:-1:-1;6111:7:0;;6031:95;;;1410:25:1;;;1398:2;1383:18;6031:95:0;1264:177:1;19245:109:0;;;;;;;;;;-1:-1:-1;19245:109:0;;;;;:::i;:::-;;:::i;:::-;;19366:126;;;;;;;;;;-1:-1:-1;19366:126:0;;;;;:::i;:::-;;:::i;4133:21::-;;;;;;;;;;-1:-1:-1;4133:21:0;;;;-1:-1:-1;;;;;4133:21:0;;;;;;-1:-1:-1;;;;;2047:32:1;;;2029:51;;2017:2;2002:18;4133:21:0;1883:203:1;6835:422:0;;;;;;;;;;-1:-1:-1;6835:422:0;;;;;:::i;:::-;;:::i;19500:114::-;;;;;;;;;;-1:-1:-1;19500:114:0;;;;;:::i;:::-;;:::i;8495:248::-;;;;;;;;;;-1:-1:-1;8495:248:0;;;;;:::i;:::-;;:::i;5940:83::-;;;;;;;;;;-1:-1:-1;5940:83:0;;3500:1;2694:36:1;;2682:2;2667:18;5940:83:0;2552:184:1;9092:475:0;;;;;;;;;;-1:-1:-1;9092:475:0;;;;;:::i;:::-;;:::i;7265:215::-;;;;;;;;;;-1:-1:-1;7265:215:0;;;;;:::i;:::-;;:::i;4054:70::-;;;;;;;;;;-1:-1:-1;4054:70:0;;;;-1:-1:-1;;;;;4054:70:0;;;8001:486;;;;;;;;;;-1:-1:-1;8001:486:0;;;;;:::i;:::-;;:::i;20013:154::-;;;;;;;;;;-1:-1:-1;20013:154:0;;;;;:::i;:::-;;:::i;9577:111::-;;;;;;;;;;-1:-1:-1;9577:111:0;;;;;:::i;:::-;;:::i;20255:247::-;;;;;;;;;;-1:-1:-1;20255:247:0;;;;;:::i;:::-;;:::i;20679:271::-;;;;;;;;;;-1:-1:-1;20679:271:0;;;;;:::i;:::-;;:::i;8751:333::-;;;;;;;;;;-1:-1:-1;8751:333:0;;;;;:::i;:::-;;:::i;9816:123::-;;;;;;;;;;-1:-1:-1;9816:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;9904:27:0;9880:4;9904:27;;;:18;:27;;;;;;;;;9816:123;3754:64;;;;;;;;;;;;;;;;3342:30;;;;;;;;;;-1:-1:-1;3342:30:0;;;;;;;;6134:198;;;;;;;;;;-1:-1:-1;6134:198:0;;;;;:::i;:::-;;:::i;1736:94::-;;;;;;;;;;;;;:::i;4383:35::-;;;;;;;;;;-1:-1:-1;4383:35:0;;;;;;;;;;;;;;;;;;;3937:25:1;;;3993:2;3978:18;;3971:34;;;;4021:18;;;4014:34;4079:2;4064:18;;4057:34;3924:3;3909:19;4383:35:0;3706:391:1;3825:63:0;;;;;;;;;;;;;;;;7873:120;;;;;;;;;;-1:-1:-1;7873:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;7965:20:0;7941:4;7965:20;;;:11;:20;;;;;;;;;7873:120;1513:87;;;;;;;;;;-1:-1:-1;1559:7:0;1586:6;-1:-1:-1;;;;;1586:6:0;1513:87;;19892:101;;;;;;;;;;-1:-1:-1;19892:101:0;;;;;:::i;:::-;;:::i;5847:87::-;;;;;;;;;;-1:-1:-1;5919:7:0;;;;;;;;;;;;-1:-1:-1;;;5919:7:0;;;;5847:87;;4611:36;;;;;;;;;;-1:-1:-1;4611:36:0;;;;;;;;;;;;;;;9947:272;;;;;;;;;;-1:-1:-1;9947:272:0;;;;;:::i;:::-;;:::i;7488:377::-;;;;;;;;;;-1:-1:-1;7488:377:0;;;;;:::i;:::-;;:::i;3971:76::-;;;;;;;;;;-1:-1:-1;3971:76:0;;;;-1:-1:-1;;;;;3971:76:0;;;3437:19;;;;;;;;;;-1:-1:-1;3437:19:0;;;;-1:-1:-1;;;;;3437:19:0;;;6340:167;;;;;;;;;;-1:-1:-1;6340:167:0;;;;;:::i;:::-;;:::i;19118:115::-;;;;;;;;;;-1:-1:-1;19118:115:0;;;;;:::i;:::-;;:::i;3895:67::-;;;;;;;;;;;;;;;;19626:116;;;;;;;;;;-1:-1:-1;19626:116:0;;;;;:::i;:::-;;:::i;19754:130::-;;;;;;;;;;-1:-1:-1;19754:130:0;;;;;:::i;:::-;;:::i;6515:143::-;;;;;;;;;;-1:-1:-1;6515:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;6623:18:0;;;6596:7;6623:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6515:143;3676:65;;;;;;;;;;;;;;;;9696:110;;;;;;;;;;-1:-1:-1;9696:110:0;;;;;:::i;:::-;;:::i;1838:192::-;;;;;;;;;;-1:-1:-1;1838:192:0;;;;;:::i;:::-;;:::i;10231:292::-;;;;;;;;;;-1:-1:-1;10231:292:0;;;;;:::i;:::-;;:::i;4425:39::-;;;;;;;;;;-1:-1:-1;4425:39:0;;;;;;;;;;;;;;;3409:21;;;;;;;;;;-1:-1:-1;3409:21:0;;;;;;;-1:-1:-1;;;;;3409:21:0;;;6666:161;6741:4;6758:39;1014:10;6781:7;6790:6;6758:8;:39::i;:::-;-1:-1:-1;6815:4:0;6666:161;;;;;:::o;19245:109::-;1559:7;1586:6;-1:-1:-1;;;;;1586:6:0;1014:10;1648:23;1640:68;;;;-1:-1:-1;;;1640:68:0;;;;;;;:::i;:::-;;;;;;;;;19321:10:::1;:25:::0;;-1:-1:-1;;;;;;19321:25:0::1;-1:-1:-1::0;;;;;19321:25:0;;;::::1;::::0;;;::::1;::::0;;19245:109::o;19366:126::-;1559:7;1586:6;-1:-1:-1;;;;;1586:6:0;1014:10;1648:23;1640:68;;;;-1:-1:-1;;;1640:68:0;;;;;;;:::i;:::-;19471:13:::1;3500:1;19471:2;:13;:::i;:::-;19462:22;::::0;:6;:22:::1;:::i;:::-;19443:16;:41:::0;-1:-1:-1;19366:126:0:o;6835:422::-;6941:4;6958:36;6968:6;6976:9;6987:6;6958:9;:36::i;:::-;-1:-1:-1;;;;;7034:19:0;;7007:24;7034:19;;;:11;:19;;;;;;;;1014:10;7034:33;;;;;;;;7086:26;;;;7078:79;;;;-1:-1:-1;;;7078:79:0;;7212:2:1;7078:79:0;;;7194:21:1;7251:2;7231:18;;;7224:30;7290:34;7270:18;;;7263:62;-1:-1:-1;;;7341:18:1;;;7334:38;7389:19;;7078:79:0;7010:404:1;7078:79:0;7168:57;7177:6;1014:10;7199:25;7218:6;7199:16;:25;:::i;:::-;7168:8;:57::i;:::-;7245:4;7238:11;;;6835:422;;;;;;:::o;19500:114::-;1559:7;1586:6;-1:-1:-1;;;;;1586:6:0;1014:10;1648:23;1640:68;;;;-1:-1:-1;;;1640:68:0;;;;;;;:::i;:::-;19593:13:::1;3500:1;19593:2;:13;:::i;:::-;19584:22;::::0;:6;:22:::1;:::i;:::-;19569:12;:37:::0;-1:-1:-1;19500:114:0:o;8495:248::-;8561:7;8600;;8589;:18;;8581:73;;;;-1:-1:-1;;;8581:73:0;;7751:2:1;8581:73:0;;;7733:21:1;7790:2;7770:18;;;7763:30;7829:34;7809:18;;;7802:62;-1:-1:-1;;;7880:18:1;;;7873:40;7930:19;;8581:73:0;7549:406:1;8581:73:0;8665:19;8688:10;:8;:10::i;:::-;8665:33;-1:-1:-1;8716:19:0;8665:33;8716:7;:19;:::i;9092:475::-;1559:7;1586:6;-1:-1:-1;;;;;1586:6:0;1014:10;1648:23;1640:68;;;;-1:-1:-1;;;1640:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9174:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;9166:56;;;::::0;-1:-1:-1;;;9166:56:0;;8384:2:1;9166:56:0::1;::::0;::::1;8366:21:1::0;8423:2;8403:18;;;8396:30;8462:25;8442:18;;;8435:53;8505:18;;9166:56:0::1;8182:347:1::0;9166:56:0::1;9238:9;9233:327;9257:9;:16:::0;9253:20;::::1;9233:327;;;9315:7;-1:-1:-1::0;;;;;9299:23:0::1;:9;9309:1;9299:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;9299:12:0::1;:23;9295:254;;;9358:9;9368:16:::0;;:20:::1;::::0;9387:1:::1;::::0;9368:20:::1;:::i;:::-;9358:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;9343:9:::1;:12:::0;;-1:-1:-1;;;;;9358:31:0;;::::1;::::0;9353:1;;9343:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;9343:46:0::1;-1:-1:-1::0;;;;;9343:46:0;;::::1;;::::0;;9408:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;9447:11:::1;:20:::0;;;;:28;;-1:-1:-1;;9447:28:0::1;::::0;;9494:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;9494:15:0;;;;;-1:-1:-1;;;;;;9494:15:0::1;::::0;;;;;9233:327:::1;9092:475:::0;:::o;9295:254::-:1;9275:3:::0;::::1;::::0;::::1;:::i;:::-;;;;9233:327;;;;9092:475:::0;:::o;7265:215::-;1014:10;7353:4;7402:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;7402:34:0;;;;;;;;;;7353:4;;7370:80;;7393:7;;7402:47;;7439:10;;7402:47;:::i;8001:486::-;8104:7;8143;;8132;:18;;8124:62;;;;-1:-1:-1;;;8124:62:0;;9273:2:1;8124:62:0;;;9255:21:1;9312:2;9292:18;;;9285:30;9351:33;9331:18;;;9324:61;9402:18;;8124:62:0;9071:355:1;8124:62:0;8202:17;8197:283;;8236:28;8267:34;8278:7;8287:5;8294:6;8267:10;:34::i;:::-;8323:9;;-1:-1:-1;8316:16:0;;-1:-1:-1;8316:16:0;8197:283;8365:28;8396:33;8407:7;8416:4;8422:6;8396:10;:33::i;:::-;8451:17;;;;-1:-1:-1;8444:24:0;;-1:-1:-1;8444:24:0;20013:154;1559:7;1586:6;-1:-1:-1;;;;;1586:6:0;1014:10;1648:23;1640:68;;;;-1:-1:-1;;;1640:68:0;;;;;;;:::i;:::-;20107:6:::1;:27:::0;;-1:-1:-1;;;;;;20107:27:0::1;::::0;-1:-1:-1;;;;;20107:27:0;;::::1;;;::::0;;20145:4:::1;:14:::0;;-1:-1:-1;;;;;;20145:14:0::1;::::0;;;::::1;;::::0;;20013:154::o;9577:111::-;1559:7;1586:6;-1:-1:-1;;;;;1586:6:0;1014:10;1648:23;1640:68;;;;-1:-1:-1;;;1640:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9646:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;9646:34:0::1;9676:4;9646:34;::::0;;9577:111::o;20255:247::-;1559:7;1586:6;-1:-1:-1;;;;;1586:6:0;1014:10;1648:23;1640:68;;;;-1:-1:-1;;;1640:68:0;;;;;;;:::i;:::-;20344:6:::1;::::0;-1:-1:-1;;;;;20344:6:0::1;20330:10;:20;20322:40;;;::::0;-1:-1:-1;;;20322:40:0;;9633:2:1;20322:40:0::1;::::0;::::1;9615:21:1::0;9672:1;9652:18;;;9645:29;-1:-1:-1;;;9690:18:1;;;9683:37;9737:18;;20322:40:0::1;9431:330:1::0;20322:40:0::1;20406:9;20381:21;:34;;20373:71;;;::::0;-1:-1:-1;;;20373:71:0;;9968:2:1;20373:71:0::1;::::0;::::1;9950:21:1::0;10007:2;9987:18;;;9980:30;10046:26;10026:18;;;10019:54;10090:18;;20373:71:0::1;9766:348:1::0;20373:71:0::1;20455:39;::::0;20463:10:::1;::::0;20455:39;::::1;;;::::0;20484:9;;20455:39:::1;::::0;;;20484:9;20463:10;20455:39;::::1;;;;;;;;;;;;;::::0;::::1;;;;20679:271:::0;20797:6;;-1:-1:-1;;;;;20797:6:0;20783:10;:20;20775:40;;;;-1:-1:-1;;;20775:40:0;;9633:2:1;20775:40:0;;;9615:21:1;9672:1;9652:18;;;9645:29;-1:-1:-1;;;9690:18:1;;;9683:37;9737:18;;20775:40:0;9431:330:1;20775:40:0;-1:-1:-1;;;;;20834:27:0;;20856:4;20834:27;;20826:64;;;;-1:-1:-1;;;20826:64:0;;10321:2:1;20826:64:0;;;10303:21:1;10360:2;10340:18;;;10333:30;10399:26;10379:18;;;10372:54;10443:18;;20826:64:0;10119:348:1;20826:64:0;20901:41;;-1:-1:-1;;;20901:41:0;;-1:-1:-1;;;;;10664:32:1;;;20901:41:0;;;10646:51:1;10713:18;;;10706:34;;;20901:27:0;;;;;10619:18:1;;20901:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20679:271;;;:::o;8751:333::-;1559:7;1586:6;-1:-1:-1;;;;;1586:6:0;1014:10;1648:23;1640:68;;;;-1:-1:-1;;;1640:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8834:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;8833:21;8825:61;;;::::0;-1:-1:-1;;;8825:61:0;;11203:2:1;8825:61:0::1;::::0;::::1;11185:21:1::0;11242:2;11222:18;;;11215:30;11281:29;11261:18;;;11254:57;11328:18;;8825:61:0::1;11001:351:1::0;8825:61:0::1;-1:-1:-1::0;;;;;8900:16:0;::::1;8919:1;8900:16:::0;;;:7:::1;:16;::::0;;;;;:20;8897:108:::1;;-1:-1:-1::0;;;;;8976:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;8956:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;8937:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;8897:108:::1;-1:-1:-1::0;;;;;9015:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;9015:27:0::1;9038:4;9015:27:::0;;::::1;::::0;;;9053:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;9053:23:0::1;::::0;;::::1;::::0;;8751:333::o;6134:198::-;-1:-1:-1;;;;;6224:20:0;;6200:7;6224:20;;;:11;:20;;;;;;;;6220:49;;;-1:-1:-1;;;;;;6253:16:0;;;;;:7;:16;;;;;;;6134:198::o;6220:49::-;-1:-1:-1;;;;;6307:16:0;;;;;;:7;:16;;;;;;6287:37;;:19;:37::i;1736:94::-;1559:7;1586:6;-1:-1:-1;;;;;1586:6:0;1014:10;1648:23;1640:68;;;;-1:-1:-1;;;1640:68:0;;;;;;;:::i;:::-;1801:21:::1;1819:1;1801:9;:21::i;:::-;1736:94::o:0;19892:101::-;1559:7;1586:6;-1:-1:-1;;;;;1586:6:0;1014:10;1648:23;1640:68;;;;-1:-1:-1;;;1640:68:0;;;;;;;:::i;:::-;19963:11:::1;:22:::0;;-1:-1:-1;;19963:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19892:101::o;9947:272::-;1559:7;1586:6;-1:-1:-1;;;;;1586:6:0;1014:10;1648:23;1640:68;;;;-1:-1:-1;;;1640:68:0;;;;;;;:::i;:::-;10061:5:::1;:16:::0;;;10088:15;:28;;;10127:9;:16;;;10154:15;:28;;;10198:13:::1;::::0;::::1;::::0;10061:9:::1;::::0;10198:13:::1;9947:272:::0;;;;:::o;7488:377::-;1014:10;7581:4;7625:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;7625:34:0;;;;;;;;;;7678:35;;;;7670:85;;;;-1:-1:-1;;;7670:85:0;;11559:2:1;7670:85:0;;;11541:21:1;11598:2;11578:18;;;11571:30;11637:34;11617:18;;;11610:62;-1:-1:-1;;;11688:18:1;;;11681:35;11733:19;;7670:85:0;11357:401:1;7670:85:0;7766:67;1014:10;7789:7;7798:34;7817:15;7798:16;:34;:::i;7766:67::-;-1:-1:-1;7853:4:0;;7488:377;-1:-1:-1;;;7488:377:0:o;6340:167::-;6418:4;6435:42;1014:10;6459:9;6470:6;6435:9;:42::i;19118:115::-;1559:7;1586:6;-1:-1:-1;;;;;1586:6:0;1014:10;1648:23;1640:68;;;;-1:-1:-1;;;1640:68:0;;;;;;;:::i;:::-;19197:16:::1;:28:::0;;-1:-1:-1;;;;;;19197:28:0::1;-1:-1:-1::0;;;;;19197:28:0;;;::::1;::::0;;;::::1;::::0;;19118:115::o;19626:116::-;1559:7;1586:6;-1:-1:-1;;;;;1586:6:0;1014:10;1648:23;1640:68;;;;-1:-1:-1;;;1640:68:0;;;;;;;:::i;:::-;19721:13:::1;3500:1;19721:2;:13;:::i;:::-;19712:22;::::0;:6;:22:::1;:::i;:::-;19696:13;:38:::0;-1:-1:-1;19626:116:0:o;19754:130::-;1559:7;1586:6;-1:-1:-1;;;;;1586:6:0;1014:10;1648:23;1640:68;;;;-1:-1:-1;;;1640:68:0;;;;;;;:::i;:::-;19863:13:::1;3500:1;19863:2;:13;:::i;:::-;19854:22;::::0;:6;:22:::1;:::i;:::-;19833:18;:43:::0;-1:-1:-1;19754:130:0:o;9696:110::-;1559:7;1586:6;-1:-1:-1;;;;;1586:6:0;1014:10;1648:23;1640:68;;;;-1:-1:-1;;;1640:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9763:27:0::1;9793:5;9763:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;9763:35:0::1;::::0;;9696:110::o;1838:192::-;1559:7;1586:6;-1:-1:-1;;;;;1586:6:0;1014:10;1648:23;1640:68;;;;-1:-1:-1;;;1640:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1927:22:0;::::1;1919:73;;;::::0;-1:-1:-1;;;1919:73:0;;11965:2:1;1919:73:0::1;::::0;::::1;11947:21:1::0;12004:2;11984:18;;;11977:30;12043:34;12023:18;;;12016:62;-1:-1:-1;;;12094:18:1;;;12087:36;12140:19;;1919:73:0::1;11763:402:1::0;1919:73:0::1;2003:19;2013:8;2003:9;:19::i;:::-;1838:192:::0;:::o;10231:292::-;1559:7;1586:6;-1:-1:-1;;;;;1586:6:0;1014:10;1648:23;1640:68;;;;-1:-1:-1;;;1640:68:0;;;;;;;:::i;:::-;10349:9:::1;:20:::0;;;10380:19;:32;;;10423:13;:20;;;10454:19;:32;;;10502:13:::1;::::0;::::1;::::0;10349::::1;::::0;10502::::1;10231:292:::0;;;;:::o;13937:335::-;-1:-1:-1;;;;;14030:19:0;;14022:68;;;;-1:-1:-1;;;14022:68:0;;12372:2:1;14022:68:0;;;12354:21:1;12411:2;12391:18;;;12384:30;12450:34;12430:18;;;12423:62;-1:-1:-1;;;12501:18:1;;;12494:34;12545:19;;14022:68:0;12170:400:1;14022:68:0;-1:-1:-1;;;;;14109:21:0;;14101:68;;;;-1:-1:-1;;;14101:68:0;;12777:2:1;14101:68:0;;;12759:21:1;12816:2;12796:18;;;12789:30;12855:34;12835:18;;;12828:62;-1:-1:-1;;;12906:18:1;;;12899:32;12948:19;;14101:68:0;12575:398:1;14101:68:0;-1:-1:-1;;;;;14180:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;14232:32;;1410:25:1;;;14232:32:0;;1383:18:1;14232:32:0;;;;;;;13937:335;;;:::o;14280:1310::-;-1:-1:-1;;;;;14368:18:0;;14360:68;;;;-1:-1:-1;;;14360:68:0;;13180:2:1;14360:68:0;;;13162:21:1;13219:2;13199:18;;;13192:30;13258:34;13238:18;;;13231:62;-1:-1:-1;;;13309:18:1;;;13302:35;13354:19;;14360:68:0;12978:401:1;14360:68:0;-1:-1:-1;;;;;14447:16:0;;14439:64;;;;-1:-1:-1;;;14439:64:0;;13586:2:1;14439:64:0;;;13568:21:1;13625:2;13605:18;;;13598:30;13664:34;13644:18;;;13637:62;-1:-1:-1;;;13715:18:1;;;13708:33;13758:19;;14439:64:0;13384:399:1;14439:64:0;14531:1;14522:6;:10;14514:64;;;;-1:-1:-1;;;14514:64:0;;13990:2:1;14514:64:0;;;13972:21:1;14029:2;14009:18;;;14002:30;14068:34;14048:18;;;14041:62;-1:-1:-1;;;14119:18:1;;;14112:39;14168:19;;14514:64:0;13788:405:1;14514:64:0;14607:15;14617:4;14607:9;:15::i;:::-;14597:6;:25;;14589:86;;;;-1:-1:-1;;;14589:86:0;;14400:2:1;14589:86:0;;;14382:21:1;14439:2;14419:18;;;14412:30;14478:34;14458:18;;;14451:62;-1:-1:-1;;;14529:18:1;;;14522:47;14586:19;;14589:86:0;14198:413:1;14589:86:0;-1:-1:-1;;;;;14718:24:0;;;;;;:18;:24;;;;;;;;14717:25;:52;;;;-1:-1:-1;;;;;;14747:22:0;;;;;;:18;:22;;;;;;;;14746:23;14717:52;:65;;;;-1:-1:-1;14774:8:0;;;;;;;14773:9;14717:65;14714:493;;;14809:4;;-1:-1:-1;;;;;14801:12:0;;;14809:4;;14801:12;14798:116;;;14851:12;;14841:6;:22;;14833:65;;;;-1:-1:-1;;;14833:65:0;;14818:2:1;14833:65:0;;;14800:21:1;14857:2;14837:18;;;14830:30;14896:32;14876:18;;;14869:60;14946:18;;14833:65:0;14616:354:1;14833:65:0;14937:4;;-1:-1:-1;;;;;14931:10:0;;;14937:4;;14931:10;14928:116;;;14979:13;;14969:6;:23;;14961:67;;;;-1:-1:-1;;;14961:67:0;;15177:2:1;14961:67:0;;;15159:21:1;15216:2;15196:18;;;15189:30;15255:33;15235:18;;;15228:61;15306:18;;14961:67:0;14975:355:1;14961:67:0;15067:4;;-1:-1:-1;;;;;15061:10:0;;;15067:4;;15061:10;15058:138;;15125:16;;15115:6;15099:13;15109:2;15099:9;:13::i;:::-;:22;;;;:::i;:::-;:42;;15091:89;;;;-1:-1:-1;;;15091:89:0;;15537:2:1;15091:89:0;;;15519:21:1;15576:2;15556:18;;;15549:30;15615:34;15595:18;;;15588:62;-1:-1:-1;;;15666:18:1;;;15659:32;15708:19;;15091:89:0;15335:398:1;15091:89:0;15227:12;15270:18;;15242:24;15260:4;15242:9;:24::i;:::-;15303:8;;-1:-1:-1;;15242:46:0;;-1:-1:-1;15303:8:0;;;;;15302:9;:24;;;;-1:-1:-1;15315:11:0;;;;15302:24;:35;;;;;15330:7;15302:35;:51;;;;-1:-1:-1;15349:4:0;;-1:-1:-1;;;;;15341:12:0;;;15349:4;;15341:12;;15302:51;:80;;;;-1:-1:-1;;;;;;15358:24:0;;;;;;:18;:24;;;;;;;;15357:25;15302:80;:107;;;;-1:-1:-1;;;;;;15387:22:0;;;;;;:18;:22;;;;;;;;15386:23;15302:107;15299:172;;;15425:34;15440:18;;15425:14;:34::i;:::-;-1:-1:-1;;;;;15518:24:0;;;;;;:18;:24;;;;;;15483:99;;15498:4;;15504:2;;15508:6;;15518:24;;;:50;;-1:-1:-1;;;;;;15546:22:0;;;;;;:18;:22;;;;;;;;15518:50;15577:4;;15516:53;;;-1:-1:-1;;;;;15571:10:0;;;15577:4;;15571:10;15483:14;:99::i;13223:158::-;13264:7;13285:15;13302;13321:19;:17;:19::i;:::-;13284:56;;-1:-1:-1;13284:56:0;-1:-1:-1;13358:15:0;13284:56;;13358:15;:::i;:::-;13351:22;;;;13223:158;:::o;11503:407::-;11589:36;;:::i;:::-;11650:37;11662:7;11671;11680:6;11650:11;:37::i;:::-;11638:49;;11823:52;11835:9;11846:7;11855;11864:10;:8;:10::i;:::-;11823:11;:52::i;:::-;11799:20;;;11698:177;11783:14;;;11698:177;11761:20;;;11698:177;11745:14;;;11698:177;11718:25;;;11698:177;;;11503:407;;;;;:::o;2038:173::-;2094:16;2113:6;;-1:-1:-1;;;;;2130:17:0;;;-1:-1:-1;;;;;;2130:17:0;;;;;;2163:40;;2113:6;;;;;;;2163:40;;2094:16;2163:40;2083:128;2038:173;:::o;16840:1194::-;5038:8;:15;;-1:-1:-1;;5038:15:0;;;;;17027:13;;17005:19;;16983;;5038:15;;17027:13;16983:41:::1;::::0;::::1;:::i;:::-;:57;;;;:::i;:::-;16982:63;::::0;17044:1:::1;16982:63;:::i;:::-;16960:85;;17056:32;17122:11;17100:9;:19;;;17091:6;:28;;;;:::i;:::-;:42;;;;:::i;:::-;17056:77:::0;-1:-1:-1;17144:14:0::1;17161:33;17056:77:::0;17161:6;:33:::1;:::i;:::-;17144:50:::0;-1:-1:-1;17232:21:0::1;17266:24;17144:50:::0;17266:16:::1;:24::i;:::-;17303:20;17326:38;17350:14:::0;17326:21:::1;:38;:::i;:::-;17426:19:::0;;17303:61;;-1:-1:-1;17375:19:0::1;::::0;17412:33:::1;::::0;:11;:33:::1;:::i;:::-;17396:50;::::0;:12;:50:::1;:::i;:::-;17503:19:::0;;17375:71;;-1:-1:-1;17457:29:0::1;::::0;17489:33:::1;::::0;17375:71;17489:33:::1;:::i;:::-;17457:65:::0;-1:-1:-1;17538:25:0;;17535:158:::1;;17620:61;17633:24;17659:21;17620:12;:61::i;:::-;17746:19:::0;;17705:20:::1;::::0;17728:15:::1;:11:::0;17746:19:::1;17728:15;:::i;:::-;:37;;;;:::i;:::-;17705:60:::0;-1:-1:-1;17779:16:0;;17776:95:::1;;17819:16;::::0;17811:48:::1;::::0;-1:-1:-1;;;;;17819:16:0;;::::1;::::0;17811:48;::::1;;;::::0;17846:12;;17819:16:::1;17811:48:::0;17819:16;17811:48;17846:12;17819:16;17811:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;17776:95;17926:13:::0;;17891:14:::1;::::0;17908:15:::1;:11:::0;17922:1:::1;17908:15;:::i;:::-;:31;;;;:::i;:::-;17891:48:::0;-1:-1:-1;17953:10:0;;17950:77:::1;;17987:10;::::0;17979:36:::1;::::0;-1:-1:-1;;;;;17987:10:0;;::::1;::::0;17979:36;::::1;;;::::0;18008:6;;17987:10:::1;17979:36:::0;17987:10;17979:36;18008:6;17987:10;17979:36;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;17950:77;-1:-1:-1::0;;5076:8:0;:16;;-1:-1:-1;;5076:16:0;;;-1:-1:-1;;;;;;;;16840:1194:0:o;15673:1159::-;15795:28;15826:36;15837:7;15846;15855:6;15826:10;:36::i;:::-;-1:-1:-1;;;;;15879:19:0;;;;;;:11;:19;;;;;;15795:67;;-1:-1:-1;15879:19:0;;15875:115;;;-1:-1:-1;;;;;15955:15:0;;;;;;:7;:15;;;;;;:23;;15971:7;;15955:23;:::i;:::-;-1:-1:-1;;;;;15937:15:0;;;;;;:7;:15;;;;;:41;15875:115;-1:-1:-1;;;;;16004:22:0;;;;;;:11;:22;;;;;;;;16000:130;;;16101:17;;;;-1:-1:-1;;;;;16082:18:0;;;;;;:7;:18;;;;;;:36;;16101:17;16082:36;:::i;:::-;-1:-1:-1;;;;;16061:18:0;;;;;;:7;:18;;;;;:57;16000:130;16176:9;;-1:-1:-1;;;;;16160:15:0;;16176:9;16160:15;;;:7;:15;;;;;;:25;;16176:9;16160:25;:::i;:::-;-1:-1:-1;;;;;16142:15:0;;;;;;;:7;:15;;;;;;;;:43;;;;16236:17;;;16217:18;;;;;;;;;;:36;;16236:17;16217:36;:::i;:::-;-1:-1:-1;;;;;16196:18:0;;;;;;:7;:18;;;;;;;:57;;;;16277:6;;;:10;;;:24;;;16300:1;16291;:6;;;:10;16277:24;16274:56;;;16303:27;16315:1;:6;;;16323:1;:6;;;16303:11;:27::i;:::-;16359:1;16344;:12;;;:16;:36;;;;16379:1;16364;:12;;;:16;16344:36;16341:109;;;16397:41;16412:1;:12;;;16425:1;:12;;;16397:14;:41::i;:::-;16478:1;16463;:12;;;:16;:36;;;;16498:1;16483;:12;;;:16;16463:36;16460:109;;;16515:42;16530:1;:12;;;16544:1;:12;;;16515:14;:42::i;:::-;16591:1;16582;:6;;;:10;:24;;;;16605:1;16596;:6;;;:10;16582:24;16579:79;;;16622:24;16631:1;:6;;;16639:1;:6;;;16622:8;:24::i;:::-;16700:9;-1:-1:-1;;;;;16683:46:0;16692:6;-1:-1:-1;;;;;16683:46:0;;16711:1;:17;;;16683:46;;;;1410:25:1;;1398:2;1383:18;;1264:177;16683:46:0;;;;;;;;16770:4;-1:-1:-1;;;;;16745:69:0;16754:6;-1:-1:-1;;;;;16745:69:0;;16801:1;:12;;;16792:1;:6;;;16777:1;:12;;;:21;;;;:::i;:::-;:36;;;;:::i;:::-;16745:69;;1410:25:1;;;1398:2;1383:18;16745:69:0;;;;;;;15784:1048;15673:1159;;;;;:::o;13389:540::-;13486:7;;13522;;13439;;;;;13540:279;13564:9;:16;13560:20;;13540:279;;;13630:7;13606;:21;13614:9;13624:1;13614:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;13614:12:0;13606:21;;;;;;;;;;;;;:31;;:66;;;13665:7;13641;:21;13649:9;13659:1;13649:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;13649:12:0;13641:21;;;;;;;;;;;;;:31;13606:66;13602:97;;;13682:7;;13691;;13674:25;;;;;;;13389:540;;:::o;13602:97::-;13732:7;:21;13740:9;13750:1;13740:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;13740:12:0;13732:21;;;;;;;;;;;;;13724:29;;:7;:29;:::i;:::-;13714:39;;13786:7;:21;13794:9;13804:1;13794:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;13794:12:0;13786:21;;;;;;;;;;;;;13778:29;;:7;:29;:::i;:::-;13768:39;-1:-1:-1;13582:3:0;;;;:::i;:::-;;;;13540:279;;;;13851:7;;13843;;:15;;;;:::i;:::-;13833:7;:25;13829:56;;;13868:7;;13877;;13860:25;;;;;;13389:540;;:::o;13829:56::-;13904:7;;13913;;-1:-1:-1;13389:540:0;-1:-1:-1;13389:540:0:o;11918:608::-;12005:28;;:::i;:::-;12052:7;12048:86;;12074:17;;;:27;;;12114:8;;12048:86;12144:17;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12144:17:0;12175:6;12172:55;;;-1:-1:-1;12183:16:0;;;;;;;;12190:9;12183:16;;;;;;;;;;;;;;;;;;;;;;;;12172:55;;;-1:-1:-1;12215:12:0;;;;;;;;12222:5;12215:12;;;;;;;;;;;;;;;;;;;;;;;;12172:55;12265:8;;12274:3;;12257:16;;:7;:16;:::i;:::-;:20;;;;:::i;:::-;12248:6;;;:29;12311:14;;;;12326:3;;12303:22;;:7;:22;:::i;:::-;:26;;;;:::i;:::-;12288:12;;;:41;12363:14;;;;12378:3;;12355:22;;:7;:22;:::i;:::-;:26;;;;:::i;:::-;12340:12;;;:41;12409:8;;;;12418:3;;12401:16;;:7;:16;:::i;:::-;:20;;;;:::i;:::-;12392:6;;;:29;;;12487:12;;;;12467;;;;12460:6;;;;12487:12;;12392:29;12452:14;;:7;:14;:::i;:::-;:27;;;;:::i;:::-;:34;;;;:::i;:::-;:47;;;;:::i;:::-;12432:17;;;:67;-1:-1:-1;11918:608:0;;;;;:::o;12534:681::-;12659:15;;;;;;12789:19;12797:11;12789:7;:19;:::i;:::-;12779:29;;12825:7;12821:71;;-1:-1:-1;12854:7:0;;-1:-1:-1;12872:1:0;;-1:-1:-1;12872:1:0;;-1:-1:-1;12872:1:0;;-1:-1:-1;12872:1:0;12847:33;;12821:71;12918:11;12911:1;:6;;;:18;;;;:::i;:::-;12904:25;;12966:11;12953:1;:12;;;:24;;;;:::i;:::-;12940:37;;13002:11;12995:1;:6;;;:18;;;;:::i;:::-;12988:25;;13050:11;13037:1;:12;;;:24;;;;:::i;:::-;13024:37;-1:-1:-1;13024:37:0;13115:4;13104:10;13091:12;13099:4;13091:7;:12;:::i;:::-;:23;;;;:::i;:::-;:28;;;;:::i;:::-;:39;;;;:::i;:::-;13072:58;;12534:681;;;;;;;;;;;;:::o;18548:562::-;18698:16;;;18712:1;18698:16;;;;;;;;18674:21;;18698:16;;;;;;;;;;-1:-1:-1;18698:16:0;18674:40;;18743:4;18725;18730:1;18725:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;18725:23:0;;;-1:-1:-1;;;;;18725:23:0;;;;;18769:6;;;;;;;;;-1:-1:-1;;;;;18769:6:0;-1:-1:-1;;;;;18769:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18759:4;18764:1;18759:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18759:23:0;;;:7;;;;;;;;;:23;18827:6;;18795:53;;18812:4;;18827:6;;;;18836:11;18795:8;:53::i;:::-;18887:6;;:215;;-1:-1:-1;;;18887:215:0;;:6;;;;-1:-1:-1;;;;;18887:6:0;;:57;;:215;;18959:11;;18985:1;;19029:4;;19056;;19076:15;;18887:215;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18603:507;18548:562;:::o;18042:498::-;18222:6;;18190:53;;18207:4;;18222:6;;;-1:-1:-1;;;;;18222:6:0;18231:11;18190:8;:53::i;:::-;18286:6;;:246;;-1:-1:-1;;;18286:246:0;;18349:4;18286:246;;;17452:34:1;17502:18;;;17495:34;;;18395:1:0;17545:18:1;;;17538:34;;;17588:18;;;17581:34;;;17631:19;;;17624:44;18506:15:0;17684:19:1;;;17677:35;18286:6:0;;;;-1:-1:-1;;;;;18286:6:0;;:22;;18316:9;;17386:19:1;;18286:246:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18042:498;;:::o;10531:123::-;10609:4;10599:7;;:14;;;;;;;:::i;:::-;;;;-1:-1:-1;;10624:11:0;:22;;10642:4;;10624:11;:15;;:22;;10642:4;;10624:22;:::i;:::-;;;;-1:-1:-1;;;;10531:123:0:o;10662:284::-;10769:10;10745:11;:21;;;:34;;;;;;;:::i;:::-;;;;-1:-1:-1;;10815:4:0;10795:26;;;;:11;:26;;;;;;;;10792:101;;;10863:4;10847:22;;;;:7;:22;;;;;:34;;10871:10;;10847:22;:34;;10871:10;;10847:34;:::i;:::-;;;;-1:-1:-1;;10792:101:0;10919:4;10903:22;;;;:7;:22;;;;;:35;;10928:10;;10903:22;:35;;10928:10;;10903:35;:::i;10954:284::-;11061:10;11037:11;:21;;;:34;;;;;;;:::i;11250:245::-;11334:4;11315: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:315;820:6;828;881:2;869:9;860:7;856:23;852:32;849:52;;;897:1;894;887:12;849:52;936:9;923:23;955:31;980:5;955:31;:::i;:::-;1005:5;1057:2;1042:18;;;;1029:32;;-1:-1:-1;;;752:315:1:o;1446:247::-;1505:6;1558:2;1546:9;1537:7;1533:23;1529:32;1526:52;;;1574:1;1571;1564:12;1526:52;1613:9;1600:23;1632:31;1657:5;1632:31;:::i;1698:180::-;1757:6;1810:2;1798:9;1789:7;1785:23;1781:32;1778:52;;;1826:1;1823;1816:12;1778:52;-1:-1:-1;1849:23:1;;1698:180;-1:-1:-1;1698:180:1:o;2091:456::-;2168:6;2176;2184;2237:2;2225:9;2216:7;2212:23;2208:32;2205:52;;;2253:1;2250;2243:12;2205:52;2292:9;2279:23;2311:31;2336:5;2311:31;:::i;:::-;2361:5;-1:-1:-1;2418:2:1;2403:18;;2390:32;2431:33;2390:32;2431:33;:::i;:::-;2091:456;;2483:7;;-1:-1:-1;;;2537:2:1;2522:18;;;;2509:32;;2091:456::o;2741:118::-;2827:5;2820:13;2813:21;2806:5;2803:32;2793:60;;2849:1;2846;2839:12;2864:444;2935:6;2943;2951;3004:2;2992:9;2983:7;2979:23;2975:32;2972:52;;;3020:1;3017;3010:12;2972:52;3056:9;3043:23;3033:33;;3116:2;3105:9;3101:18;3088:32;3129:28;3151:5;3129:28;:::i;:::-;3176:5;-1:-1:-1;3233:2:1;3218:18;;3205:32;3246:30;3205:32;3246:30;:::i;:::-;3295:7;3285:17;;;2864:444;;;;;:::o;3313:388::-;3381:6;3389;3442:2;3430:9;3421:7;3417:23;3413:32;3410:52;;;3458:1;3455;3448:12;3410:52;3497:9;3484:23;3516:31;3541:5;3516:31;:::i;:::-;3566:5;-1:-1:-1;3623:2:1;3608:18;;3595:32;3636:33;3595:32;3636:33;:::i;:::-;3688:7;3678:17;;;3313:388;;;;;:::o;4102:241::-;4158:6;4211:2;4199:9;4190:7;4186:23;4182:32;4179:52;;;4227:1;4224;4217:12;4179:52;4266:9;4253:23;4285:28;4307:5;4285:28;:::i;4348:385::-;4434:6;4442;4450;4458;4511:3;4499:9;4490:7;4486:23;4482:33;4479:53;;;4528:1;4525;4518:12;4479:53;-1:-1:-1;;4551:23:1;;;4621:2;4606:18;;4593:32;;-1:-1:-1;4672:2:1;4657:18;;4644:32;;4723:2;4708:18;4695:32;;-1:-1:-1;4348:385:1;-1:-1:-1;4348:385:1:o;4961:356::-;5163:2;5145:21;;;5182:18;;;5175:30;5241:34;5236:2;5221:18;;5214:62;5308:2;5293:18;;4961:356::o;5322:127::-;5383:10;5378:3;5374:20;5371:1;5364:31;5414:4;5411:1;5404:15;5438:4;5435:1;5428:15;5454:422;5543:1;5586:5;5543:1;5600:270;5621:7;5611:8;5608:21;5600:270;;;5680:4;5676:1;5672:6;5668:17;5662:4;5659:27;5656:53;;;5689:18;;:::i;:::-;5739:7;5729:8;5725:22;5722:55;;;5759:16;;;;5722:55;5838:22;;;;5798:15;;;;5600:270;;;5604:3;5454:422;;;;;:::o;5881:806::-;5930:5;5960:8;5950:80;;-1:-1:-1;6001:1:1;6015:5;;5950:80;6049:4;6039:76;;-1:-1:-1;6086:1:1;6100:5;;6039:76;6131:4;6149:1;6144:59;;;;6217:1;6212:130;;;;6124:218;;6144:59;6174:1;6165:10;;6188:5;;;6212:130;6249:3;6239:8;6236:17;6233:43;;;6256:18;;:::i;:::-;-1:-1:-1;;6312:1:1;6298:16;;6327:5;;6124:218;;6426:2;6416:8;6413:16;6407:3;6401:4;6398:13;6394:36;6388:2;6378:8;6375:16;6370:2;6364:4;6361:12;6357:35;6354:77;6351:159;;;-1:-1:-1;6463:19:1;;;6495:5;;6351:159;6542:34;6567:8;6561:4;6542:34;:::i;:::-;6612:6;6608:1;6604:6;6600:19;6591:7;6588:32;6585:58;;;6623:18;;:::i;:::-;6661:20;;5881:806;-1:-1:-1;;;5881:806:1:o;6692:140::-;6750:5;6779:47;6820:4;6810:8;6806:19;6800:4;6779:47;:::i;6837:168::-;6877:7;6943:1;6939;6935:6;6931:14;6928:1;6925:21;6920:1;6913:9;6906:17;6902:45;6899:71;;;6950:18;;:::i;:::-;-1:-1:-1;6990:9:1;;6837:168::o;7419:125::-;7459:4;7487:1;7484;7481:8;7478:34;;;7492:18;;:::i;:::-;-1:-1:-1;7529:9:1;;7419:125::o;7960:217::-;8000:1;8026;8016:132;;8070:10;8065:3;8061:20;8058:1;8051:31;8105:4;8102:1;8095:15;8133:4;8130:1;8123:15;8016:132;-1:-1:-1;8162:9:1;;7960:217::o;8534:127::-;8595:10;8590:3;8586:20;8583:1;8576:31;8626:4;8623:1;8616:15;8650:4;8647:1;8640:15;8666:127;8727:10;8722:3;8718:20;8715:1;8708:31;8758:4;8755:1;8748:15;8782:4;8779:1;8772:15;8798:135;8837:3;-1:-1:-1;;8858:17:1;;8855:43;;;8878:18;;:::i;:::-;-1:-1:-1;8925:1:1;8914:13;;8798:135::o;8938:128::-;8978:3;9009:1;9005:6;9002:1;8999:13;8996:39;;;9015:18;;:::i;:::-;-1:-1:-1;9051:9:1;;8938:128::o;10751:245::-;10818:6;10871:2;10859:9;10850:7;10846:23;10842:32;10839:52;;;10887:1;10884;10877:12;10839:52;10919:9;10913:16;10938:28;10960:5;10938:28;:::i;15870:251::-;15940:6;15993:2;15981:9;15972:7;15968:23;15964:32;15961:52;;;16009:1;16006;15999:12;15961:52;16041:9;16035:16;16060:31;16085:5;16060:31;:::i;16126:980::-;16388:4;16436:3;16425:9;16421:19;16467:6;16456:9;16449:25;16493:2;16531:6;16526:2;16515:9;16511:18;16504:34;16574:3;16569:2;16558:9;16554:18;16547:31;16598:6;16633;16627:13;16664:6;16656;16649:22;16702:3;16691:9;16687:19;16680:26;;16741:2;16733:6;16729:15;16715:29;;16762:1;16772:195;16786:6;16783:1;16780:13;16772:195;;;16851:13;;-1:-1:-1;;;;;16847:39:1;16835:52;;16942:15;;;;16907:12;;;;16883:1;16801:9;16772:195;;;-1:-1:-1;;;;;;;17023:32:1;;;;17018:2;17003:18;;16996:60;-1:-1:-1;;;17087:3:1;17072:19;17065:35;16984:3;16126:980;-1:-1:-1;;;16126:980:1:o;17723:306::-;17811:6;17819;17827;17880:2;17868:9;17859:7;17855:23;17851:32;17848:52;;;17896:1;17893;17886:12;17848:52;17925:9;17919:16;17909:26;;17975:2;17964:9;17960:18;17954:25;17944:35;;18019:2;18008:9;18004:18;17998:25;17988:35;;17723:306;;;;;:::o

Swarm Source

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