ETH Price: $2,984.45 (+4.30%)
Gas: 2 Gwei

Token

MetaFarmGains (MFG)
 

Overview

Max Total Supply

1,000,000,000,000 MFG

Holders

50

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
12,602,604,573.508090202 MFG

Value
$0.00
0xa25ac7d64dad8c5311fb8c99745380afbe11e45a
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:
MetaFarmGains

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-11-29
*/

/**

Meta Farm Gains: $MFG
-You buy on Ethereum, we farm in high yield gains in the metaverse and return the profits to $MFG holders.

Tokenomics:
10% of tax goes to existing holders.
15% of tax goes into high yield farming to add to the treasury and buy back MFG tokens.

Telegram:
https://t.me/MetaFarmGains

Website:
https://metafarmcoin.co

Twitter: 
https://twitter.com/MetaFarmGains

Marketing Efforts
FAIR LAUNCH
We have CMC and CG on standby
Twitter campaigns pre-loaded and ready to shill
Youtube influencers on standby, ready to post about our project


 * PLEASE MAKE SURE LIQUIDITY IS LOCKED BEFORE BUYING
 * The contract created below is safu as the following is true:
 * There is not a pause contract button.
 * You cannot disable sells.
 * Sell taxes cannot be raised higher than a designated percent written into the contract and noted as such.
 * In this case, sells cannot exceed 25%
 
*/


// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.4;

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

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

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
    
}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}

contract MetaFarmGains is Context, IERC20, Ownable {
    
    using SafeMath for uint256;

    string private constant _name = "MetaFarmGains";
    string private constant _symbol = "MFG";
    uint8 private constant _decimals = 9;

    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) public _isExcludedMaxTxAmount;
    mapping(address => bool) private _isExcludedFromReflection;
    address[] private _excludedFromReflection;

    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1000 * 1e9 * 1e9; //1,000,000,000,000
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    
    mapping(address => bool) public bots;
    
   
    uint256 private _reflectionFeeOnBuy = 10;
    uint256 private _taxFeeOnBuy = 15;
    
    
    uint256 private _reflectionFeeOnSell = 10;
    uint256 private _taxFeeOnSell = 15;
    
    //Original Fee
    uint256 private _reflectionFee = _reflectionFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;
    
    uint256 private _previousReflectionFee = _reflectionFee;
    uint256 private _previousTaxFee = _taxFee;
    
    //change these addresses or you will burn your dev tax
    address payable public _mfgAddress = payable(0xae4986F33f4223FCDae8047Ca74cBB2C72bB5143); //investment wallet
    address payable public _mktgAddress = payable(0xE7d77a936dAd022Cbb94dC50e046AFEa6D0119cF); //deployer wallet
    
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    
    bool private inSwap = false;
    bool private swapEnabled = true;
    bool public tradingActive = false;
    uint256 public _maxTxAmount = 4500 * 1e7 * 1e9; //max transaction set to 4.5%
    uint256 public _maxWalletSize = 4500 * 1e7 * 1e9; //max wallet set to 4.5%
    uint256 public _swapTokensAtAmount = 5000 * 1e6 * 1e9; //amount of tokens to swap for eth 0.5%

    event ExcludeFromReflection(address excludedAddress);
    event IncludeInReflection(address includedAddress);

    event ExcludeFromFee(address excludedAddress);
    event IncludeInFee(address includedAddress);

    event UpdatedMktgAddress(address mktg); //team support wallet
    event UpdatedMfgAddress(address mgc); //investment wallet

    event SetBuyFee(uint256 buyMktgFee, uint256 buyReflectionFee);
    event SetSellFee(uint256 sellMktgFee, uint256 sellReflectionFee);
    
    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    
    constructor () {
               
        _rOwned[_msgSender()] = _rTotal;
        
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_mfgAddress] = true;
        _isExcludedFromFee[_mktgAddress] = true;

        excludeFromMaxTxAmount(owner(), true);
        excludeFromMaxTxAmount(address(this), true);
        excludeFromMaxTxAmount(address(_mfgAddress), true);
        excludeFromMaxTxAmount(address(_mktgAddress), true);
        
        emit Transfer(address(0), _msgSender(), _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 pure override returns (uint256) {
        return _tTotal;
    }

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

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

    function excludeFromFee(address account) external onlyOwner {
        _isExcludedFromFee[account] = true;
        emit ExcludeFromFee(account);
    }

    function includeInFee(address account) external onlyOwner {
        _isExcludedFromFee[account] = false;
        emit IncludeInFee(account);
    }

    function excludeFromReflection(address account) public onlyOwner {
        require(!_isExcludedFromReflection[account], "Account is already excluded");
        require(_excludedFromReflection.length + 1 <= 50, "Cannot exclude more than 50 accounts.  Include a previously excluded address.");
        if (_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcludedFromReflection[account] = true;
        _excludedFromReflection.push(account);
    }

    function includeInReflection(address account) public onlyOwner {
        require(_isExcludedFromReflection[account], "Account is not excluded from reflection");
        for (uint256 i = 0; i < _excludedFromReflection.length; i++) {
            if (_excludedFromReflection[i] == account) {
                _excludedFromReflection[i] = _excludedFromReflection[_excludedFromReflection.length - 1];
                _tOwned[account] = 0;
                _isExcludedFromReflection[account] = false;
                _excludedFromReflection.pop();
                break;
            }
        }
    }

    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 override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }

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

    function removeAllFee() private {
        if (_reflectionFee == 0 && _taxFee == 0) return;
    
        _previousReflectionFee = _reflectionFee;
        _previousTaxFee = _taxFee;
        
        _reflectionFee = 0;
        _taxFee = 0;
    }

    function restoreAllFee() private {
        _reflectionFee = _previousReflectionFee;
        _taxFee = _previousTaxFee;
    }

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

        if (from != owner() && to != owner()) {
            
            //Trade start check
            if (!tradingActive) 
              
            if(to != uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to]) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
                require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
                require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!");
            }
            
            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;

            if(contractTokenBalance >= _maxTxAmount)
            {
                contractTokenBalance = _maxTxAmount;
            }
            
            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }
        
        bool takeFee = true;

        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {
            
            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _reflectionFee = _reflectionFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }
    
            //Set Fee for Sells
            if (!_isExcludedFromFee[from]) {
                        require(amount <= _maxTxAmount, "Sell transfer amount exceeds the maxTransactionAmount.");
                }
                
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _reflectionFee = _reflectionFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }
            
        }

        _tokenTransfer(from, to, amount, takeFee);
    }  

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function sendETHToFee(uint256 amount) private {
        _mfgAddress.transfer(amount.div(2));
        _mktgAddress.transfer(amount.div(2));
    }

    function manualSwap() external {
        require(_msgSender() == _mfgAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualSend() external {
        require(_msgSender() == _mfgAddress || _msgSender() == _mktgAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }
    
    function blockBots(address[] memory bots_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function unblockBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _reflectionFee, _taxFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(
        uint256 tAmount,
        uint256 reflectionFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(reflectionFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);

        return (tTransferAmount, tFee, tTeam);
    }

    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);

        return (rAmount, rTransferAmount, rFee);
    }

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

        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
    
        return (rSupply, tSupply);
    }
    
    function setFee(uint256 reflectionFeeOnBuy, uint256 reflectionFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        _reflectionFeeOnBuy = reflectionFeeOnBuy;
        _taxFeeOnBuy = taxFeeOnBuy;
        
        _reflectionFeeOnSell = reflectionFeeOnSell;
        _taxFeeOnSell = taxFeeOnSell;
        
        require(_reflectionFeeOnBuy + _taxFeeOnBuy <= 25, "Must keep buy taxes below 25%"); //wont allow taxes to go above 25%
        require(_reflectionFeeOnSell + _taxFeeOnSell <= 25, "Must keep buy taxes below 25%"); //wont allow taxes to go above 25%
    }

      // once enabled, can never be turned off
    function enableTrading() internal onlyOwner {
        tradingActive = true;        
    }
    
    function airdrop(address[] memory airdropWallets, uint256[] memory amounts) external onlyOwner returns (bool){
        require(!tradingActive, "Trading is already active, cannot relaunch.");
        require(airdropWallets.length < 200, "Can only airdrop 200 wallets per txn due to gas limits"); // allows for airdrop
        for(uint256 i = 0; i < airdropWallets.length; i++){
            address wallet = airdropWallets[i];
            uint256 amount = amounts[i];
            _transfer(msg.sender, wallet, amount);
        }
        enableTrading();
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        excludeFromMaxTxAmount(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTxAmount(address(uniswapV2Pair), true);
        return true;
    }

    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }
    
    //Set max transaction
    function setMaxTxAmount(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = maxTxAmount;
    }

    function excludeFromMaxTxAmount(address updAds, bool isEx) public onlyOwner {
        _isExcludedMaxTxAmount[updAds] = isEx;
    }
    
    //set max wallet
    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
    }

     //set wallet address
    function _setMFGAddress(address mfgAddress) external onlyOwner {
        require(_mfgAddress != address(0), "_mfgAddress cannot be 0");
        _isExcludedFromFee[mfgAddress] = false;
        mfgAddress = payable(_mfgAddress);
        _isExcludedFromFee[mfgAddress] = true;
        emit UpdatedMfgAddress(_mfgAddress);
    }

     //set wallet address
    function _setMktgAddress(address mktgAddress) external onlyOwner {
        require(_mktgAddress != address(0), "_mktgAddress cannot be 0");
        _isExcludedFromFee[mktgAddress] = false;
        mktgAddress = payable(_mktgAddress);
        _isExcludedFromFee[mktgAddress] = true;
        emit UpdatedMktgAddress(_mktgAddress);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"excludedAddress","type":"address"}],"name":"ExcludeFromFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"excludedAddress","type":"address"}],"name":"ExcludeFromReflection","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"includedAddress","type":"address"}],"name":"IncludeInFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"includedAddress","type":"address"}],"name":"IncludeInReflection","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"buyMktgFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"buyReflectionFee","type":"uint256"}],"name":"SetBuyFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"sellMktgFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sellReflectionFee","type":"uint256"}],"name":"SetSellFee","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"mgc","type":"address"}],"name":"UpdatedMfgAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"mktg","type":"address"}],"name":"UpdatedMktgAddress","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTxAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_mfgAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_mktgAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"mfgAddress","type":"address"}],"name":"_setMFGAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"mktgAddress","type":"address"}],"name":"_setMktgAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"airdropWallets","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdrop","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReflection","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":"includeInReflection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"uint256","name":"reflectionFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"reflectionFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"address","name":"notbot","type":"address"}],"name":"unblockBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526200001b683635c9adc5dea00000600019620002d4565b6200002990600019620002b0565b600955600a600c819055600f600d819055600e82905580805560108290556011819055601291909155601355601480546001600160a01b031990811673ae4986f33f4223fcdae8047ca74cbb2c72bb5143179091556015805490911673e7d77a936dad022cbb94dc50e046afea6d0119cf1790556017805462ffffff60a01b1916600160a81b179055680270801d946c9400006018819055601955674563918244f40000601a55348015620000dd57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506009543360009081526002602090815260408083209390935581546001600160a01b03908116835260059091528282208054600160ff19918216811790925530845284842080548216831790556014548316845284842080548216831790556015548316845293832080549094161790925554620001a09116600162000226565b620001ad30600162000226565b601454620001c6906001600160a01b0316600162000226565b601554620001df906001600160a01b0316600162000226565b604051683635c9adc5dea00000815233906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3620002f5565b6000546001600160a01b03163314620002855760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640160405180910390fd5b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b600082821015620002cf57634e487b7160e01b81526011600452602481fd5b500390565b600082620002f057634e487b7160e01b81526012600452602481fd5b500690565b6129f580620003056000396000f3fe60806040526004361061021c5760003560e01c806370a0823111610123578063ac59b663116100ab578063ea1644d51161006f578063ea1644d5146106a0578063ea2f0b37146106c0578063ec28438a146106e0578063f2fde38b14610700578063f42938901461072057600080fd5b8063ac59b663146105c9578063bbc0c742146105e9578063bfd792841461060a578063dd62ed3e1461063a578063e755d0cf1461068057600080fd5b806395d89b41116100f257806395d89b411461051d57806398a5c31514610549578063a2a957bb14610569578063a8c6fa0b14610589578063a9059cbb146105a957600080fd5b806370a08231146104b35780637d1db4a5146104d35780638da5cb5b146104e95780638f9a55c01461050757600080fd5b80632fd689e3116101a657806351bc3c851161017557806351bc3c851461040e578063563912bd14610423578063595cc84f1461045357806367243482146104735780636b9990531461049357600080fd5b80632fd689e31461039c578063313ce567146103b2578063437823ec146103ce57806349bd5a5e146103ee57600080fd5b8063095ea7b3116101ed578063095ea7b3146102e65780631694505e1461031657806318160ddd1461033657806323b872dd1461035c57806327334a081461037c57600080fd5b806286803414610228578062b8cf2a1461026557806305f82a451461028757806306fdde03146102a757600080fd5b3661022357005b600080fd5b34801561023457600080fd5b50601554610248906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027157600080fd5b50610285610280366004612640565b610735565b005b34801561029357600080fd5b506102856102a2366004612534565b6107e2565b3480156102b357600080fd5b5060408051808201909152600d81526c4d6574614661726d4761696e7360981b60208201525b60405161025c9190612780565b3480156102f257600080fd5b50610306610301366004612615565b6109dd565b604051901515815260200161025c565b34801561032257600080fd5b50601654610248906001600160a01b031681565b34801561034257600080fd5b50683635c9adc5dea000005b60405190815260200161025c565b34801561036857600080fd5b506103066103773660046125a4565b6109f4565b34801561038857600080fd5b50610285610397366004612534565b610a5d565b3480156103a857600080fd5b5061034e601a5481565b3480156103be57600080fd5b506040516009815260200161025c565b3480156103da57600080fd5b506102856103e9366004612534565b610c4b565b3480156103fa57600080fd5b50601754610248906001600160a01b031681565b34801561041a57600080fd5b50610285610cd0565b34801561042f57600080fd5b5061030661043e366004612534565b60066020526000908152604090205460ff1681565b34801561045f57600080fd5b5061028561046e3660046125e4565b610d09565b34801561047f57600080fd5b5061030661048e36600461267b565b610d5e565b34801561049f57600080fd5b506102856104ae366004612534565b6110e2565b3480156104bf57600080fd5b5061034e6104ce366004612534565b61112d565b3480156104df57600080fd5b5061034e60185481565b3480156104f557600080fd5b506000546001600160a01b0316610248565b34801561051357600080fd5b5061034e60195481565b34801561052957600080fd5b506040805180820190915260038152624d464760e81b60208201526102d9565b34801561055557600080fd5b50610285610564366004612737565b61114f565b34801561057557600080fd5b5061028561058436600461274f565b61117e565b34801561059557600080fd5b506102856105a4366004612534565b61127c565b3480156105b557600080fd5b506103066105c4366004612615565b61136e565b3480156105d557600080fd5b50601454610248906001600160a01b031681565b3480156105f557600080fd5b5060175461030690600160b01b900460ff1681565b34801561061657600080fd5b50610306610625366004612534565b600b6020526000908152604090205460ff1681565b34801561064657600080fd5b5061034e61065536600461256c565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561068c57600080fd5b5061028561069b366004612534565b61137b565b3480156106ac57600080fd5b506102856106bb366004612737565b61146d565b3480156106cc57600080fd5b506102856106db366004612534565b61149c565b3480156106ec57600080fd5b506102856106fb366004612737565b611517565b34801561070c57600080fd5b5061028561071b366004612534565b611546565b34801561072c57600080fd5b50610285611630565b6000546001600160a01b031633146107685760405162461bcd60e51b815260040161075f906127d3565b60405180910390fd5b60005b81518110156107de576001600b600084848151811061079a57634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806107d68161293b565b91505061076b565b5050565b6000546001600160a01b0316331461080c5760405162461bcd60e51b815260040161075f906127d3565b6001600160a01b03811660009081526007602052604090205460ff166108845760405162461bcd60e51b815260206004820152602760248201527f4163636f756e74206973206e6f74206578636c756465642066726f6d207265666044820152663632b1ba34b7b760c91b606482015260840161075f565b60005b6008548110156107de57816001600160a01b0316600882815481106108bc57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b031614156109cb57600880546108e790600190612924565b8154811061090557634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600880546001600160a01b03909216918390811061093f57634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600382526040808220829055600790925220805460ff1916905560088054806109a557634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b03191690550190555050565b806109d58161293b565b915050610887565b60006109ea338484611678565b5060015b92915050565b6000610a0184848461179c565b610a538433610a4e85604051806060016040528060288152602001612998602891396001600160a01b038a1660009081526004602090815260408083203384529091529020549190611cdd565b611678565b5060019392505050565b6000546001600160a01b03163314610a875760405162461bcd60e51b815260040161075f906127d3565b6001600160a01b03811660009081526007602052604090205460ff1615610af05760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015260640161075f565b600854603290610b019060016128cd565b1115610b8b5760405162461bcd60e51b815260206004820152604d60248201527f43616e6e6f74206578636c756465206d6f7265207468616e203530206163636f60448201527f756e74732e2020496e636c75646520612070726576696f75736c79206578636c60648201526c3ab232b21030b2323932b9b99760991b608482015260a40161075f565b6001600160a01b03811660009081526002602052604090205415610be5576001600160a01b038116600090815260026020526040902054610bcb90611d17565b6001600160a01b0382166000908152600360205260409020555b6001600160a01b03166000818152600760205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b6000546001600160a01b03163314610c755760405162461bcd60e51b815260040161075f906127d3565b6001600160a01b038116600081815260056020908152604091829020805460ff1916600117905590519182527f58c3e0504c69d3a92726966f152a771e0f8f6ad4daca1ae9055a38aba1fd2b6291015b60405180910390a150565b6014546001600160a01b0316336001600160a01b031614610cf057600080fd5b6000610cfb3061112d565b9050610d0681611d9b565b50565b6000546001600160a01b03163314610d335760405162461bcd60e51b815260040161075f906127d3565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b600080546001600160a01b03163314610d895760405162461bcd60e51b815260040161075f906127d3565b601754600160b01b900460ff1615610df75760405162461bcd60e51b815260206004820152602b60248201527f54726164696e6720697320616c7265616479206163746976652c2063616e6e6f60448201526a3a103932b630bab731b41760a91b606482015260840161075f565b60c8835110610e675760405162461bcd60e51b815260206004820152603660248201527f43616e206f6e6c792061697264726f70203230302077616c6c657473207065726044820152752074786e2064756520746f20676173206c696d69747360501b606482015260840161075f565b60005b8351811015610eeb576000848281518110610e9557634e487b7160e01b600052603260045260246000fd5b602002602001015190506000848381518110610ec157634e487b7160e01b600052603260045260246000fd5b60200260200101519050610ed633838361179c565b50508080610ee39061293b565b915050610e6a565b50610ef4611f40565b737a250d5630b4cf539739df2c5dacb4c659f2488d610f14816001610d09565b601680546001600160a01b0319166001600160a01b038316908117909155610f47903090683635c9adc5dea00000611678565b806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610f8057600080fd5b505afa158015610f94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb89190612550565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561100057600080fd5b505afa158015611014573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110389190612550565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561108057600080fd5b505af1158015611094573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b89190612550565b601780546001600160a01b0319166001600160a01b03929092169182179055610a53906001610d09565b6000546001600160a01b0316331461110c5760405162461bcd60e51b815260040161075f906127d3565b6001600160a01b03166000908152600b60205260409020805460ff19169055565b6001600160a01b0381166000908152600260205260408120546109ee90611d17565b6000546001600160a01b031633146111795760405162461bcd60e51b815260040161075f906127d3565b601a55565b6000546001600160a01b031633146111a85760405162461bcd60e51b815260040161075f906127d3565b600c849055600d829055600e839055600f81905560196111c883866128cd565b11156112165760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206275792074617865732062656c6f7720323525000000604482015260640161075f565b6019600f54600e5461122891906128cd565b11156112765760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206275792074617865732062656c6f7720323525000000604482015260640161075f565b50505050565b6000546001600160a01b031633146112a65760405162461bcd60e51b815260040161075f906127d3565b6014546001600160a01b03166112fe5760405162461bcd60e51b815260206004820152601760248201527f5f6d6667416464726573732063616e6e6f742062652030000000000000000000604482015260640161075f565b6001600160a01b039081166000908152600560209081526040808320805460ff199081169091556014805486168086529483902080549092166001179091555490519316835290917f41ed77f3e04aab4dec78577fa0244a63f22dc879f63c63c1841adb419f7d945b9101610cc5565b60006109ea33848461179c565b6000546001600160a01b031633146113a55760405162461bcd60e51b815260040161075f906127d3565b6015546001600160a01b03166113fd5760405162461bcd60e51b815260206004820152601860248201527f5f6d6b7467416464726573732063616e6e6f7420626520300000000000000000604482015260640161075f565b6001600160a01b039081166000908152600560209081526040808320805460ff199081169091556015805486168086529483902080549092166001179091555490519316835290917f4aeacdf11926d26257f8e9ea6e9091947978ac978705e15835bf04f21f4fa69b9101610cc5565b6000546001600160a01b031633146114975760405162461bcd60e51b815260040161075f906127d3565b601955565b6000546001600160a01b031633146114c65760405162461bcd60e51b815260040161075f906127d3565b6001600160a01b038116600081815260056020908152604091829020805460ff1916905590519182527f4f6a6b6efe34ec6478021aa9fb7f6980e78ea3a10c74074a8ce49d5d3ebf1f7e9101610cc5565b6000546001600160a01b031633146115415760405162461bcd60e51b815260040161075f906127d3565b601855565b6000546001600160a01b031633146115705760405162461bcd60e51b815260040161075f906127d3565b6001600160a01b0381166115d55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161075f565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6014546001600160a01b0316336001600160a01b0316148061166557506015546001600160a01b0316336001600160a01b0316145b61166e57600080fd5b47610d0681611f7f565b6001600160a01b0383166116da5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161075f565b6001600160a01b03821661173b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161075f565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166118005760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161075f565b6001600160a01b0382166118625760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161075f565b600081116118c45760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161075f565b6000546001600160a01b038481169116148015906118f057506000546001600160a01b03838116911614155b15611b4557601754600160b01b900460ff16611ab8576017546001600160a01b0383811691161480159061193257506016546001600160a01b03838116911614155b801561195757506001600160a01b03821660009081526005602052604090205460ff16155b15611ab857601954816119698461112d565b61197391906128cd565b106119cc5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b606482015260840161075f565b601854811115611a1e5760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000604482015260640161075f565b6001600160a01b0383166000908152600b602052604090205460ff16158015611a6057506001600160a01b0382166000908152600b602052604090205460ff16155b611ab85760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b606482015260840161075f565b6000611ac33061112d565b601a54601854919250821015908210611adc5760185491505b808015611af35750601754600160a01b900460ff16155b8015611b0d57506017546001600160a01b03868116911614155b8015611b225750601754600160a81b900460ff165b15611b4257611b3082611d9b565b478015611b4057611b4047611f7f565b505b50505b6001600160a01b03831660009081526005602052604090205460019060ff1680611b8757506001600160a01b03831660009081526005602052604090205460ff165b80611bb957506017546001600160a01b03858116911614801590611bb957506017546001600160a01b03848116911614155b15611bc657506000611cd1565b6017546001600160a01b038581169116148015611bf157506016546001600160a01b03848116911614155b15611c0357600c54601055600d546011555b6001600160a01b03841660009081526005602052604090205460ff16611c9457601854821115611c945760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b606482015260840161075f565b6017546001600160a01b038481169116148015611cbf57506016546001600160a01b03858116911614155b15611cd157600e54601055600f546011555b61127684848484612004565b60008184841115611d015760405162461bcd60e51b815260040161075f9190612780565b506000611d0e8486612924565b95945050505050565b6000600954821115611d7e5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840161075f565b6000611d88612032565b9050611d948382612055565b9392505050565b6017805460ff60a01b1916600160a01b1790556040805160028082526060820183526000926020830190803683370190505090503081600081518110611df157634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601654604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611e4557600080fd5b505afa158015611e59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e7d9190612550565b81600181518110611e9e57634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152601654611ec49130911684611678565b60165460405163791ac94760e01b81526001600160a01b039091169063791ac94790611efd908590600090869030904290600401612808565b600060405180830381600087803b158015611f1757600080fd5b505af1158015611f2b573d6000803e3d6000fd5b50506017805460ff60a01b1916905550505050565b6000546001600160a01b03163314611f6a5760405162461bcd60e51b815260040161075f906127d3565b6017805460ff60b01b1916600160b01b179055565b6014546001600160a01b03166108fc611f99836002612055565b6040518115909202916000818181858888f19350505050158015611fc1573d6000803e3d6000fd5b506015546001600160a01b03166108fc611fdc836002612055565b6040518115909202916000818181858888f193505050501580156107de573d6000803e3d6000fd5b8061201157612011612097565b61201c8484846120c5565b8061127657611276601254601055601354601155565b600080600061203f6121bc565b909250905061204e8282612055565b9250505090565b6000611d9483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506121fe565b6010541580156120a75750601154155b156120ae57565b601080546012556011805460135560009182905555565b6000806000806000806120d78761222c565b6001600160a01b038f16600090815260026020526040902054959b509399509197509550935091506121099087612289565b6001600160a01b03808b1660009081526002602052604080822093909355908a168152205461213890866122cb565b6001600160a01b03891660009081526002602052604090205561215a8161232a565b6121648483612374565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516121a991815260200190565b60405180910390a3505050505050505050565b6009546000908190683635c9adc5dea000006121d88282612055565b8210156121f557505060095492683635c9adc5dea0000092509050565b90939092509050565b6000818361221f5760405162461bcd60e51b815260040161075f9190612780565b506000611d0e84866128e5565b60008060008060008060008060006122498a601054601154612398565b9250925092506000612259612032565b9050600080600061226c8e8787876123ed565b919e509c509a509598509396509194505050505091939550919395565b6000611d9483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611cdd565b6000806122d883856128cd565b905083811015611d945760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161075f565b6000612334612032565b90506000612342838361243d565b3060009081526002602052604090205490915061235f90826122cb565b30600090815260026020526040902055505050565b6009546123819083612289565b600955600a5461239190826122cb565b600a555050565b60008080806123b260646123ac898961243d565b90612055565b905060006123c560646123ac8a8961243d565b905060006123dd826123d78b86612289565b90612289565b9992985090965090945050505050565b60008080806123fc888661243d565b9050600061240a888761243d565b90506000612418888861243d565b9050600061242a826123d78686612289565b939b939a50919850919650505050505050565b60008261244c575060006109ee565b60006124588385612905565b90508261246585836128e5565b14611d945760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161075f565b600082601f8301126124cc578081fd5b813560206124e16124dc836128a9565b612878565b80838252828201915082860187848660051b8901011115612500578586fd5b855b8581101561252757813561251581612982565b84529284019290840190600101612502565b5090979650505050505050565b600060208284031215612545578081fd5b8135611d9481612982565b600060208284031215612561578081fd5b8151611d9481612982565b6000806040838503121561257e578081fd5b823561258981612982565b9150602083013561259981612982565b809150509250929050565b6000806000606084860312156125b8578081fd5b83356125c381612982565b925060208401356125d381612982565b929592945050506040919091013590565b600080604083850312156125f6578182fd5b823561260181612982565b915060208301358015158114612599578182fd5b60008060408385031215612627578182fd5b823561263281612982565b946020939093013593505050565b600060208284031215612651578081fd5b813567ffffffffffffffff811115612667578182fd5b612673848285016124bc565b949350505050565b6000806040838503121561268d578182fd5b823567ffffffffffffffff808211156126a4578384fd5b6126b0868387016124bc565b93506020915081850135818111156126c6578384fd5b85019050601f810186136126d8578283fd5b80356126e66124dc826128a9565b80828252848201915084840189868560051b8701011115612705578687fd5b8694505b83851015612727578035835260019490940193918501918501612709565b5080955050505050509250929050565b600060208284031215612748578081fd5b5035919050565b60008060008060808587031215612764578081fd5b5050823594602084013594506040840135936060013592509050565b6000602080835283518082850152825b818110156127ac57858101830151858201604001528201612790565b818111156127bd5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b818110156128575784516001600160a01b031683529383019391830191600101612832565b50506001600160a01b03969096166060850152505050608001529392505050565b604051601f8201601f1916810167ffffffffffffffff811182821017156128a1576128a161296c565b604052919050565b600067ffffffffffffffff8211156128c3576128c361296c565b5060051b60200190565b600082198211156128e0576128e0612956565b500190565b60008261290057634e487b7160e01b81526012600452602481fd5b500490565b600081600019048311821515161561291f5761291f612956565b500290565b60008282101561293657612936612956565b500390565b600060001982141561294f5761294f612956565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610d0657600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220282f74e690e29259a61bc22c4a13b718d07900d924e04303971a9c3b6506c3c964736f6c63430008040033

Deployed Bytecode

0x60806040526004361061021c5760003560e01c806370a0823111610123578063ac59b663116100ab578063ea1644d51161006f578063ea1644d5146106a0578063ea2f0b37146106c0578063ec28438a146106e0578063f2fde38b14610700578063f42938901461072057600080fd5b8063ac59b663146105c9578063bbc0c742146105e9578063bfd792841461060a578063dd62ed3e1461063a578063e755d0cf1461068057600080fd5b806395d89b41116100f257806395d89b411461051d57806398a5c31514610549578063a2a957bb14610569578063a8c6fa0b14610589578063a9059cbb146105a957600080fd5b806370a08231146104b35780637d1db4a5146104d35780638da5cb5b146104e95780638f9a55c01461050757600080fd5b80632fd689e3116101a657806351bc3c851161017557806351bc3c851461040e578063563912bd14610423578063595cc84f1461045357806367243482146104735780636b9990531461049357600080fd5b80632fd689e31461039c578063313ce567146103b2578063437823ec146103ce57806349bd5a5e146103ee57600080fd5b8063095ea7b3116101ed578063095ea7b3146102e65780631694505e1461031657806318160ddd1461033657806323b872dd1461035c57806327334a081461037c57600080fd5b806286803414610228578062b8cf2a1461026557806305f82a451461028757806306fdde03146102a757600080fd5b3661022357005b600080fd5b34801561023457600080fd5b50601554610248906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027157600080fd5b50610285610280366004612640565b610735565b005b34801561029357600080fd5b506102856102a2366004612534565b6107e2565b3480156102b357600080fd5b5060408051808201909152600d81526c4d6574614661726d4761696e7360981b60208201525b60405161025c9190612780565b3480156102f257600080fd5b50610306610301366004612615565b6109dd565b604051901515815260200161025c565b34801561032257600080fd5b50601654610248906001600160a01b031681565b34801561034257600080fd5b50683635c9adc5dea000005b60405190815260200161025c565b34801561036857600080fd5b506103066103773660046125a4565b6109f4565b34801561038857600080fd5b50610285610397366004612534565b610a5d565b3480156103a857600080fd5b5061034e601a5481565b3480156103be57600080fd5b506040516009815260200161025c565b3480156103da57600080fd5b506102856103e9366004612534565b610c4b565b3480156103fa57600080fd5b50601754610248906001600160a01b031681565b34801561041a57600080fd5b50610285610cd0565b34801561042f57600080fd5b5061030661043e366004612534565b60066020526000908152604090205460ff1681565b34801561045f57600080fd5b5061028561046e3660046125e4565b610d09565b34801561047f57600080fd5b5061030661048e36600461267b565b610d5e565b34801561049f57600080fd5b506102856104ae366004612534565b6110e2565b3480156104bf57600080fd5b5061034e6104ce366004612534565b61112d565b3480156104df57600080fd5b5061034e60185481565b3480156104f557600080fd5b506000546001600160a01b0316610248565b34801561051357600080fd5b5061034e60195481565b34801561052957600080fd5b506040805180820190915260038152624d464760e81b60208201526102d9565b34801561055557600080fd5b50610285610564366004612737565b61114f565b34801561057557600080fd5b5061028561058436600461274f565b61117e565b34801561059557600080fd5b506102856105a4366004612534565b61127c565b3480156105b557600080fd5b506103066105c4366004612615565b61136e565b3480156105d557600080fd5b50601454610248906001600160a01b031681565b3480156105f557600080fd5b5060175461030690600160b01b900460ff1681565b34801561061657600080fd5b50610306610625366004612534565b600b6020526000908152604090205460ff1681565b34801561064657600080fd5b5061034e61065536600461256c565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561068c57600080fd5b5061028561069b366004612534565b61137b565b3480156106ac57600080fd5b506102856106bb366004612737565b61146d565b3480156106cc57600080fd5b506102856106db366004612534565b61149c565b3480156106ec57600080fd5b506102856106fb366004612737565b611517565b34801561070c57600080fd5b5061028561071b366004612534565b611546565b34801561072c57600080fd5b50610285611630565b6000546001600160a01b031633146107685760405162461bcd60e51b815260040161075f906127d3565b60405180910390fd5b60005b81518110156107de576001600b600084848151811061079a57634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806107d68161293b565b91505061076b565b5050565b6000546001600160a01b0316331461080c5760405162461bcd60e51b815260040161075f906127d3565b6001600160a01b03811660009081526007602052604090205460ff166108845760405162461bcd60e51b815260206004820152602760248201527f4163636f756e74206973206e6f74206578636c756465642066726f6d207265666044820152663632b1ba34b7b760c91b606482015260840161075f565b60005b6008548110156107de57816001600160a01b0316600882815481106108bc57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b031614156109cb57600880546108e790600190612924565b8154811061090557634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600880546001600160a01b03909216918390811061093f57634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600382526040808220829055600790925220805460ff1916905560088054806109a557634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b03191690550190555050565b806109d58161293b565b915050610887565b60006109ea338484611678565b5060015b92915050565b6000610a0184848461179c565b610a538433610a4e85604051806060016040528060288152602001612998602891396001600160a01b038a1660009081526004602090815260408083203384529091529020549190611cdd565b611678565b5060019392505050565b6000546001600160a01b03163314610a875760405162461bcd60e51b815260040161075f906127d3565b6001600160a01b03811660009081526007602052604090205460ff1615610af05760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015260640161075f565b600854603290610b019060016128cd565b1115610b8b5760405162461bcd60e51b815260206004820152604d60248201527f43616e6e6f74206578636c756465206d6f7265207468616e203530206163636f60448201527f756e74732e2020496e636c75646520612070726576696f75736c79206578636c60648201526c3ab232b21030b2323932b9b99760991b608482015260a40161075f565b6001600160a01b03811660009081526002602052604090205415610be5576001600160a01b038116600090815260026020526040902054610bcb90611d17565b6001600160a01b0382166000908152600360205260409020555b6001600160a01b03166000818152600760205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b6000546001600160a01b03163314610c755760405162461bcd60e51b815260040161075f906127d3565b6001600160a01b038116600081815260056020908152604091829020805460ff1916600117905590519182527f58c3e0504c69d3a92726966f152a771e0f8f6ad4daca1ae9055a38aba1fd2b6291015b60405180910390a150565b6014546001600160a01b0316336001600160a01b031614610cf057600080fd5b6000610cfb3061112d565b9050610d0681611d9b565b50565b6000546001600160a01b03163314610d335760405162461bcd60e51b815260040161075f906127d3565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b600080546001600160a01b03163314610d895760405162461bcd60e51b815260040161075f906127d3565b601754600160b01b900460ff1615610df75760405162461bcd60e51b815260206004820152602b60248201527f54726164696e6720697320616c7265616479206163746976652c2063616e6e6f60448201526a3a103932b630bab731b41760a91b606482015260840161075f565b60c8835110610e675760405162461bcd60e51b815260206004820152603660248201527f43616e206f6e6c792061697264726f70203230302077616c6c657473207065726044820152752074786e2064756520746f20676173206c696d69747360501b606482015260840161075f565b60005b8351811015610eeb576000848281518110610e9557634e487b7160e01b600052603260045260246000fd5b602002602001015190506000848381518110610ec157634e487b7160e01b600052603260045260246000fd5b60200260200101519050610ed633838361179c565b50508080610ee39061293b565b915050610e6a565b50610ef4611f40565b737a250d5630b4cf539739df2c5dacb4c659f2488d610f14816001610d09565b601680546001600160a01b0319166001600160a01b038316908117909155610f47903090683635c9adc5dea00000611678565b806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610f8057600080fd5b505afa158015610f94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb89190612550565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561100057600080fd5b505afa158015611014573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110389190612550565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561108057600080fd5b505af1158015611094573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b89190612550565b601780546001600160a01b0319166001600160a01b03929092169182179055610a53906001610d09565b6000546001600160a01b0316331461110c5760405162461bcd60e51b815260040161075f906127d3565b6001600160a01b03166000908152600b60205260409020805460ff19169055565b6001600160a01b0381166000908152600260205260408120546109ee90611d17565b6000546001600160a01b031633146111795760405162461bcd60e51b815260040161075f906127d3565b601a55565b6000546001600160a01b031633146111a85760405162461bcd60e51b815260040161075f906127d3565b600c849055600d829055600e839055600f81905560196111c883866128cd565b11156112165760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206275792074617865732062656c6f7720323525000000604482015260640161075f565b6019600f54600e5461122891906128cd565b11156112765760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206275792074617865732062656c6f7720323525000000604482015260640161075f565b50505050565b6000546001600160a01b031633146112a65760405162461bcd60e51b815260040161075f906127d3565b6014546001600160a01b03166112fe5760405162461bcd60e51b815260206004820152601760248201527f5f6d6667416464726573732063616e6e6f742062652030000000000000000000604482015260640161075f565b6001600160a01b039081166000908152600560209081526040808320805460ff199081169091556014805486168086529483902080549092166001179091555490519316835290917f41ed77f3e04aab4dec78577fa0244a63f22dc879f63c63c1841adb419f7d945b9101610cc5565b60006109ea33848461179c565b6000546001600160a01b031633146113a55760405162461bcd60e51b815260040161075f906127d3565b6015546001600160a01b03166113fd5760405162461bcd60e51b815260206004820152601860248201527f5f6d6b7467416464726573732063616e6e6f7420626520300000000000000000604482015260640161075f565b6001600160a01b039081166000908152600560209081526040808320805460ff199081169091556015805486168086529483902080549092166001179091555490519316835290917f4aeacdf11926d26257f8e9ea6e9091947978ac978705e15835bf04f21f4fa69b9101610cc5565b6000546001600160a01b031633146114975760405162461bcd60e51b815260040161075f906127d3565b601955565b6000546001600160a01b031633146114c65760405162461bcd60e51b815260040161075f906127d3565b6001600160a01b038116600081815260056020908152604091829020805460ff1916905590519182527f4f6a6b6efe34ec6478021aa9fb7f6980e78ea3a10c74074a8ce49d5d3ebf1f7e9101610cc5565b6000546001600160a01b031633146115415760405162461bcd60e51b815260040161075f906127d3565b601855565b6000546001600160a01b031633146115705760405162461bcd60e51b815260040161075f906127d3565b6001600160a01b0381166115d55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161075f565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6014546001600160a01b0316336001600160a01b0316148061166557506015546001600160a01b0316336001600160a01b0316145b61166e57600080fd5b47610d0681611f7f565b6001600160a01b0383166116da5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161075f565b6001600160a01b03821661173b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161075f565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166118005760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161075f565b6001600160a01b0382166118625760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161075f565b600081116118c45760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161075f565b6000546001600160a01b038481169116148015906118f057506000546001600160a01b03838116911614155b15611b4557601754600160b01b900460ff16611ab8576017546001600160a01b0383811691161480159061193257506016546001600160a01b03838116911614155b801561195757506001600160a01b03821660009081526005602052604090205460ff16155b15611ab857601954816119698461112d565b61197391906128cd565b106119cc5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b606482015260840161075f565b601854811115611a1e5760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000604482015260640161075f565b6001600160a01b0383166000908152600b602052604090205460ff16158015611a6057506001600160a01b0382166000908152600b602052604090205460ff16155b611ab85760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b606482015260840161075f565b6000611ac33061112d565b601a54601854919250821015908210611adc5760185491505b808015611af35750601754600160a01b900460ff16155b8015611b0d57506017546001600160a01b03868116911614155b8015611b225750601754600160a81b900460ff165b15611b4257611b3082611d9b565b478015611b4057611b4047611f7f565b505b50505b6001600160a01b03831660009081526005602052604090205460019060ff1680611b8757506001600160a01b03831660009081526005602052604090205460ff165b80611bb957506017546001600160a01b03858116911614801590611bb957506017546001600160a01b03848116911614155b15611bc657506000611cd1565b6017546001600160a01b038581169116148015611bf157506016546001600160a01b03848116911614155b15611c0357600c54601055600d546011555b6001600160a01b03841660009081526005602052604090205460ff16611c9457601854821115611c945760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b606482015260840161075f565b6017546001600160a01b038481169116148015611cbf57506016546001600160a01b03858116911614155b15611cd157600e54601055600f546011555b61127684848484612004565b60008184841115611d015760405162461bcd60e51b815260040161075f9190612780565b506000611d0e8486612924565b95945050505050565b6000600954821115611d7e5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840161075f565b6000611d88612032565b9050611d948382612055565b9392505050565b6017805460ff60a01b1916600160a01b1790556040805160028082526060820183526000926020830190803683370190505090503081600081518110611df157634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601654604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611e4557600080fd5b505afa158015611e59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e7d9190612550565b81600181518110611e9e57634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152601654611ec49130911684611678565b60165460405163791ac94760e01b81526001600160a01b039091169063791ac94790611efd908590600090869030904290600401612808565b600060405180830381600087803b158015611f1757600080fd5b505af1158015611f2b573d6000803e3d6000fd5b50506017805460ff60a01b1916905550505050565b6000546001600160a01b03163314611f6a5760405162461bcd60e51b815260040161075f906127d3565b6017805460ff60b01b1916600160b01b179055565b6014546001600160a01b03166108fc611f99836002612055565b6040518115909202916000818181858888f19350505050158015611fc1573d6000803e3d6000fd5b506015546001600160a01b03166108fc611fdc836002612055565b6040518115909202916000818181858888f193505050501580156107de573d6000803e3d6000fd5b8061201157612011612097565b61201c8484846120c5565b8061127657611276601254601055601354601155565b600080600061203f6121bc565b909250905061204e8282612055565b9250505090565b6000611d9483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506121fe565b6010541580156120a75750601154155b156120ae57565b601080546012556011805460135560009182905555565b6000806000806000806120d78761222c565b6001600160a01b038f16600090815260026020526040902054959b509399509197509550935091506121099087612289565b6001600160a01b03808b1660009081526002602052604080822093909355908a168152205461213890866122cb565b6001600160a01b03891660009081526002602052604090205561215a8161232a565b6121648483612374565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516121a991815260200190565b60405180910390a3505050505050505050565b6009546000908190683635c9adc5dea000006121d88282612055565b8210156121f557505060095492683635c9adc5dea0000092509050565b90939092509050565b6000818361221f5760405162461bcd60e51b815260040161075f9190612780565b506000611d0e84866128e5565b60008060008060008060008060006122498a601054601154612398565b9250925092506000612259612032565b9050600080600061226c8e8787876123ed565b919e509c509a509598509396509194505050505091939550919395565b6000611d9483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611cdd565b6000806122d883856128cd565b905083811015611d945760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161075f565b6000612334612032565b90506000612342838361243d565b3060009081526002602052604090205490915061235f90826122cb565b30600090815260026020526040902055505050565b6009546123819083612289565b600955600a5461239190826122cb565b600a555050565b60008080806123b260646123ac898961243d565b90612055565b905060006123c560646123ac8a8961243d565b905060006123dd826123d78b86612289565b90612289565b9992985090965090945050505050565b60008080806123fc888661243d565b9050600061240a888761243d565b90506000612418888861243d565b9050600061242a826123d78686612289565b939b939a50919850919650505050505050565b60008261244c575060006109ee565b60006124588385612905565b90508261246585836128e5565b14611d945760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161075f565b600082601f8301126124cc578081fd5b813560206124e16124dc836128a9565b612878565b80838252828201915082860187848660051b8901011115612500578586fd5b855b8581101561252757813561251581612982565b84529284019290840190600101612502565b5090979650505050505050565b600060208284031215612545578081fd5b8135611d9481612982565b600060208284031215612561578081fd5b8151611d9481612982565b6000806040838503121561257e578081fd5b823561258981612982565b9150602083013561259981612982565b809150509250929050565b6000806000606084860312156125b8578081fd5b83356125c381612982565b925060208401356125d381612982565b929592945050506040919091013590565b600080604083850312156125f6578182fd5b823561260181612982565b915060208301358015158114612599578182fd5b60008060408385031215612627578182fd5b823561263281612982565b946020939093013593505050565b600060208284031215612651578081fd5b813567ffffffffffffffff811115612667578182fd5b612673848285016124bc565b949350505050565b6000806040838503121561268d578182fd5b823567ffffffffffffffff808211156126a4578384fd5b6126b0868387016124bc565b93506020915081850135818111156126c6578384fd5b85019050601f810186136126d8578283fd5b80356126e66124dc826128a9565b80828252848201915084840189868560051b8701011115612705578687fd5b8694505b83851015612727578035835260019490940193918501918501612709565b5080955050505050509250929050565b600060208284031215612748578081fd5b5035919050565b60008060008060808587031215612764578081fd5b5050823594602084013594506040840135936060013592509050565b6000602080835283518082850152825b818110156127ac57858101830151858201604001528201612790565b818111156127bd5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b818110156128575784516001600160a01b031683529383019391830191600101612832565b50506001600160a01b03969096166060850152505050608001529392505050565b604051601f8201601f1916810167ffffffffffffffff811182821017156128a1576128a161296c565b604052919050565b600067ffffffffffffffff8211156128c3576128c361296c565b5060051b60200190565b600082198211156128e0576128e0612956565b500190565b60008261290057634e487b7160e01b81526012600452602481fd5b500490565b600081600019048311821515161561291f5761291f612956565b500290565b60008282101561293657612936612956565b500390565b600060001982141561294f5761294f612956565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610d0657600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220282f74e690e29259a61bc22c4a13b718d07900d924e04303971a9c3b6506c3c964736f6c63430008040033

Deployed Bytecode Sourcemap

4866:18036:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6412:89;;;;;;;;;;-1:-1:-1;6412:89:0;;;;-1:-1:-1;;;;;6412:89:0;;;;;;-1:-1:-1;;;;;5301:32:1;;;5283:51;;5271:2;5256:18;6412:89:0;;;;;;;;15994:169;;;;;;;;;;-1:-1:-1;15994:169:0;;;;;:::i;:::-;;:::i;:::-;;9822:603;;;;;;;;;;-1:-1:-1;9822:603:0;;;;;:::i;:::-;;:::i;8245:83::-;;;;;;;;;;-1:-1:-1;8315:5:0;;;;;;;;;;;;-1:-1:-1;;;8315:5:0;;;;8245:83;;;;;;;:::i;10625:193::-;;;;;;;;;;-1:-1:-1;10625:193:0;;;;;:::i;:::-;;:::i;:::-;;;6259:14:1;;6252:22;6234:41;;6222:2;6207:18;10625:193:0;6189:92:1;6532:41:0;;;;;;;;;;-1:-1:-1;6532:41:0;;;;-1:-1:-1;;;;;6532:41:0;;;8522:95;;;;;;;;;;-1:-1:-1;5603:16:0;8522:95;;;15975:25:1;;;15963:2;15948:18;8522:95:0;15930:76:1;10826:446:0;;;;;;;;;;-1:-1:-1;10826:446:0;;;;;:::i;:::-;;:::i;9295:519::-;;;;;;;;;;-1:-1:-1;9295:519:0;;;;;:::i;:::-;;:::i;6896:53::-;;;;;;;;;;;;;;;;8431:83;;;;;;;;;;-1:-1:-1;8431:83:0;;5100:1;17141:36:1;;17129:2;17114:18;8431:83:0;17096:87:1;8978:152:0;;;;;;;;;;-1:-1:-1;8978:152:0;;;;;:::i;:::-;;:::i;6580:28::-;;;;;;;;;;-1:-1:-1;6580:28:0;;;;-1:-1:-1;;;;;6580:28:0;;;15561:191;;;;;;;;;;;;;:::i;5342:55::-;;;;;;;;;;-1:-1:-1;5342:55:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;21878:132;;;;;;;;;;-1:-1:-1;21878:132:0;;;;;:::i;:::-;;:::i;20468:1065::-;;;;;;;;;;-1:-1:-1;20468:1065:0;;;;;:::i;:::-;;:::i;16171:92::-;;;;;;;;;;-1:-1:-1;16171:92:0;;;;;:::i;:::-;;:::i;8625:138::-;;;;;;;;;;-1:-1:-1;8625:138:0;;;;;:::i;:::-;;:::i;6733:46::-;;;;;;;;;;;;;;;;2287:79;;;;;;;;;;-1:-1:-1;2325:7:0;2352:6;-1:-1:-1;;;;;2352:6:0;2287:79;;6816:48;;;;;;;;;;;;;;;;8336:87;;;;;;;;;;-1:-1:-1;8408:7:0;;;;;;;;;;;;-1:-1:-1;;;8408:7:0;;;;8336:87;;21585:139;;;;;;;;;;-1:-1:-1;21585:139:0;;;;;:::i;:::-;;:::i;19710:599::-;;;;;;;;;;-1:-1:-1;19710:599:0;;;;;:::i;:::-;;:::i;22194:330::-;;;;;;;;;;-1:-1:-1;22194:330:0;;;;;:::i;:::-;;:::i;8771:199::-;;;;;;;;;;-1:-1:-1;8771:199:0;;;;;:::i;:::-;;:::i;6297:88::-;;;;;;;;;;-1:-1:-1;6297:88:0;;;;-1:-1:-1;;;;;6297:88:0;;;6693:33;;;;;;;;;;-1:-1:-1;6693:33:0;;;;-1:-1:-1;;;6693:33:0;;;;;;5741:36;;;;;;;;;;-1:-1:-1;5741:36:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;10433:184;;;;;;;;;;-1:-1:-1;10433:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;10582:18:0;;;10550:7;10582:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;10433:184;22559:340;;;;;;;;;;-1:-1:-1;22559:340:0;;;;;:::i;:::-;;:::i;22044:115::-;;;;;;;;;;-1:-1:-1;22044:115:0;;;;;:::i;:::-;;:::i;9138:149::-;;;;;;;;;;-1:-1:-1;9138:149:0;;;;;:::i;:::-;;:::i;21763:107::-;;;;;;;;;;-1:-1:-1;21763:107:0;;;;;:::i;:::-;;:::i;2505:244::-;;;;;;;;;;-1:-1:-1;2505:244:0;;;;;:::i;:::-;;:::i;15760:222::-;;;;;;;;;;;;;:::i;15994:169::-;2414:6;;-1:-1:-1;;;;;2414:6:0;1126:10;2414:22;2406:67;;;;-1:-1:-1;;;2406:67:0;;;;;;;:::i;:::-;;;;;;;;;16070:9:::1;16065:91;16089:5;:12;16085:1;:16;16065:91;;;16140:4;16123;:14;16128:5;16134:1;16128:8;;;;;;-1:-1:-1::0;;;16128:8:0::1;;;;;;;;;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;16123:14:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;16123:14:0;:21;;-1:-1:-1;;16123:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16103:3;::::1;::::0;::::1;:::i;:::-;;;;16065:91;;;;15994:169:::0;:::o;9822:603::-;2414:6;;-1:-1:-1;;;;;2414:6:0;1126:10;2414:22;2406:67;;;;-1:-1:-1;;;2406:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9904:34:0;::::1;;::::0;;;:25:::1;:34;::::0;;;;;::::1;;9896:86;;;::::0;-1:-1:-1;;;9896:86:0;;14779:2:1;9896:86:0::1;::::0;::::1;14761:21:1::0;14818:2;14798:18;;;14791:30;14857:34;14837:18;;;14830:62;-1:-1:-1;;;14908:18:1;;;14901:37;14955:19;;9896:86:0::1;14751:229:1::0;9896:86:0::1;9998:9;9993:425;10017:23;:30:::0;10013:34;::::1;9993:425;;;10103:7;-1:-1:-1::0;;;;;10073:37:0::1;:23;10097:1;10073:26;;;;;;-1:-1:-1::0;;;10073:26:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;10073:26:0::1;:37;10069:338;;;10160:23;10184:30:::0;;:34:::1;::::0;10217:1:::1;::::0;10184:34:::1;:::i;:::-;10160:59;;;;;;-1:-1:-1::0;;;10160:59:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;10131:23:::1;:26:::0;;-1:-1:-1;;;;;10160:59:0;;::::1;::::0;10155:1;;10131:26;::::1;;;-1:-1:-1::0;;;10131:26:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;;;;::::1;:88:::0;;-1:-1:-1;;;;;;10131:88:0::1;-1:-1:-1::0;;;;;10131:88:0;;::::1;;::::0;;10238:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;10277:25:::1;:34:::0;;;;:42;;-1:-1:-1;;10277:42:0::1;::::0;;10338:23:::1;:29:::0;;;::::1;;-1:-1:-1::0;;;10338:29:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;10338:29:0;;;;;-1:-1:-1;;;;;;10338:29:0::1;::::0;;;;;16065:91:::1;15994:169:::0;:::o;10069:338::-:1;10049:3:::0;::::1;::::0;::::1;:::i;:::-;;;;9993:425;;10625:193:::0;10727:4;10749:39;1126:10;10772:7;10781:6;10749:8;:39::i;:::-;-1:-1:-1;10806:4:0;10625:193;;;;;:::o;10826:446::-;10958:4;10975:36;10985:6;10993:9;11004:6;10975:9;:36::i;:::-;11022:220;11045:6;1126:10;11093:138;11149:6;11093:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11093:19:0;;;;;;:11;:19;;;;;;;;1126:10;11093:33;;;;;;;;;;:37;:138::i;:::-;11022:8;:220::i;:::-;-1:-1:-1;11260:4:0;10826:446;;;;;:::o;9295:519::-;2414:6;;-1:-1:-1;;;;;2414:6:0;1126:10;2414:22;2406:67;;;;-1:-1:-1;;;2406:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9380:34:0;::::1;;::::0;;;:25:::1;:34;::::0;;;;;::::1;;9379:35;9371:75;;;::::0;-1:-1:-1;;;9371:75:0;;10848:2:1;9371:75:0::1;::::0;::::1;10830:21:1::0;10887:2;10867:18;;;10860:30;10926:29;10906:18;;;10899:57;10973:18;;9371:75:0::1;10820:177:1::0;9371:75:0::1;9465:23;:30:::0;9503:2:::1;::::0;9465:34:::1;::::0;9498:1:::1;9465:34;:::i;:::-;:40;;9457:130;;;::::0;-1:-1:-1;;;9457:130:0;;15187:2:1;9457:130:0::1;::::0;::::1;15169:21:1::0;15226:2;15206:18;;;15199:30;15265:34;15245:18;;;15238:62;15336:34;15316:18;;;15309:62;-1:-1:-1;;;15387:19:1;;;15380:44;15441:19;;9457:130:0::1;15159:307:1::0;9457:130:0::1;-1:-1:-1::0;;;;;9602:16:0;::::1;9621:1;9602:16:::0;;;:7:::1;:16;::::0;;;;;:20;9598:109:::1;;-1:-1:-1::0;;;;;9678:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;9658:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;9639:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;9598:109:::1;-1:-1:-1::0;;;;;9717:34:0::1;;::::0;;;:25:::1;:34;::::0;;;;:41;;-1:-1:-1;;9717:41:0::1;9754:4;9717:41:::0;;::::1;::::0;;;9769:23:::1;:37:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;9769:37:0::1;::::0;;::::1;::::0;;9295:519::o;8978:152::-;2414:6;;-1:-1:-1;;;;;2414:6:0;1126:10;2414:22;2406:67;;;;-1:-1:-1;;;2406:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9049:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;;;;;:34;;-1:-1:-1;;9049:34:0::1;9079:4;9049:34;::::0;;9099:23;;5283:51:1;;;9099:23:0::1;::::0;5256:18:1;9099:23:0::1;;;;;;;;8978:152:::0;:::o;15561:191::-;15627:11;;-1:-1:-1;;;;;15627:11:0;1126:10;-1:-1:-1;;;;;15611:27:0;;15603:36;;;;;;15650:23;15676:24;15694:4;15676:9;:24::i;:::-;15650:50;;15711:33;15728:15;15711:16;:33::i;:::-;15561:191;:::o;21878:132::-;2414:6;;-1:-1:-1;;;;;2414:6:0;1126:10;2414:22;2406:67;;;;-1:-1:-1;;;2406:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21965:30:0;;;::::1;;::::0;;;:22:::1;:30;::::0;;;;:37;;-1:-1:-1;;21965:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21878:132::o;20468:1065::-;20572:4;2414:6;;-1:-1:-1;;;;;2414:6:0;1126:10;2414:22;2406:67;;;;-1:-1:-1;;;2406:67:0;;;;;;;:::i;:::-;20597:13:::1;::::0;-1:-1:-1;;;20597:13:0;::::1;;;20596:14;20588:70;;;::::0;-1:-1:-1;;;20588:70:0;;14015:2:1;20588:70:0::1;::::0;::::1;13997:21:1::0;14054:2;14034:18;;;14027:30;14093:34;14073:18;;;14066:62;-1:-1:-1;;;14144:18:1;;;14137:41;14195:19;;20588:70:0::1;13987:233:1::0;20588:70:0::1;20701:3;20677:14;:21;:27;20669:94;;;::::0;-1:-1:-1;;;20669:94:0;;7734:2:1;20669:94:0::1;::::0;::::1;7716:21:1::0;7773:2;7753:18;;;7746:30;7812:34;7792:18;;;7785:62;-1:-1:-1;;;7863:18:1;;;7856:52;7925:19;;20669:94:0::1;7706:244:1::0;20669:94:0::1;20800:9;20796:205;20819:14;:21;20815:1;:25;20796:205;;;20861:14;20878;20893:1;20878:17;;;;;;-1:-1:-1::0;;;20878:17:0::1;;;;;;;;;;;;;;;20861:34;;20910:14;20927:7;20935:1;20927:10;;;;;;-1:-1:-1::0;;;20927:10:0::1;;;;;;;;;;;;;;;20910:27;;20952:37;20962:10;20974:6;20982;20952:9;:37::i;:::-;20796:205;;20842:3;;;;;:::i;:::-;;;;20796:205;;;;21011:15;:13;:15::i;:::-;21094:42;21148:55;21094:42:::0;21198:4:::1;21148:22;:55::i;:::-;21214:15;:34:::0;;-1:-1:-1;;;;;;21214:34:0::1;-1:-1:-1::0;;;;;21214:34:0;::::1;::::0;;::::1;::::0;;;21259:58:::1;::::0;21276:4:::1;::::0;5603:16:::1;21259:8;:58::i;:::-;21362:16;-1:-1:-1::0;;;;;21362:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21344:56:0::1;;21409:4;21416:16;-1:-1:-1::0;;;;;21416:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21344:96;::::0;-1:-1:-1;;;;;;21344:96:0::1;::::0;;;;;;-1:-1:-1;;;;;6015:15:1;;;21344:96:0::1;::::0;::::1;5997:34:1::0;6067:15;;6047:18;;;6040:43;5932:18;;21344:96:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21328:13;:112:::0;;-1:-1:-1;;;;;;21328:112:0::1;-1:-1:-1::0;;;;;21328:112:0;;;::::1;::::0;;::::1;::::0;;21451:52:::1;::::0;-1:-1:-1;21451:22:0::1;:52::i;16171:92::-:0;2414:6;;-1:-1:-1;;;;;2414:6:0;1126:10;2414:22;2406:67;;;;-1:-1:-1;;;2406:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16235:12:0::1;16250:5;16235:12:::0;;;:4:::1;:12;::::0;;;;:20;;-1:-1:-1;;16235:20:0::1;::::0;;16171:92::o;8625:138::-;-1:-1:-1;;;;;8738:16:0;;8691:7;8738:16;;;:7;:16;;;;;;8718:37;;:19;:37::i;21585:139::-;2414:6;;-1:-1:-1;;;;;2414:6:0;1126:10;2414:22;2406:67;;;;-1:-1:-1;;;2406:67:0;;;;;;;:::i;:::-;21676:19:::1;:40:::0;21585:139::o;19710:599::-;2414:6;;-1:-1:-1;;;;;2414:6:0;1126:10;2414:22;2406:67;;;;-1:-1:-1;;;2406:67:0;;;;;;;:::i;:::-;19854:19:::1;:40:::0;;;19905:12:::1;:26:::0;;;19952:20:::1;:42:::0;;;20005:13:::1;:28:::0;;;20100:2:::1;20062:34;19920:11:::0;19876:18;20062:34:::1;:::i;:::-;:40;;20054:82;;;::::0;-1:-1:-1;;;20054:82:0;;15673:2:1;20054:82:0::1;::::0;::::1;15655:21:1::0;15712:2;15692:18;;;15685:30;15751:31;15731:18;;;15724:59;15800:18;;20054:82:0::1;15645:179:1::0;20054:82:0::1;20230:2;20213:13;;20190:20;;:36;;;;:::i;:::-;:42;;20182:84;;;::::0;-1:-1:-1;;;20182:84:0;;15673:2:1;20182:84:0::1;::::0;::::1;15655:21:1::0;15712:2;15692:18;;;15685:30;15751:31;15731:18;;;15724:59;15800:18;;20182:84:0::1;15645:179:1::0;20182:84:0::1;19710:599:::0;;;;:::o;22194:330::-;2414:6;;-1:-1:-1;;;;;2414:6:0;1126:10;2414:22;2406:67;;;;-1:-1:-1;;;2406:67:0;;;;;;;:::i;:::-;22276:11:::1;::::0;-1:-1:-1;;;;;22276:11:0::1;22268:61;;;::::0;-1:-1:-1;;;22268:61:0;;14427:2:1;22268:61:0::1;::::0;::::1;14409:21:1::0;14466:2;14446:18;;;14439:30;14505:25;14485:18;;;14478:53;14548:18;;22268:61:0::1;14399:173:1::0;22268:61:0::1;-1:-1:-1::0;;;;;22340:30:0;;::::1;22373:5;22340:30:::0;;;:18:::1;:30;::::0;;;;;;;:38;;-1:-1:-1;;22340:38:0;;::::1;::::0;;;22410:11:::1;::::0;;;::::1;22433:30:::0;;;;;;;:37;;;;::::1;-1:-1:-1::0;22433:37:0::1;::::0;;;22504:11;22486:30;;22504:11;::::1;5283:51:1::0;;22410:11:0;;22486:30:::1;::::0;5256:18:1;22486:30:0::1;5238:102:1::0;8771:199:0;8876:4;8898:42;1126:10;8922:9;8933:6;8898:9;:42::i;22559:340::-;2414:6;;-1:-1:-1;;;;;2414:6:0;1126:10;2414:22;2406:67;;;;-1:-1:-1;;;2406:67:0;;;;;;;:::i;:::-;22643:12:::1;::::0;-1:-1:-1;;;;;22643:12:0::1;22635:63;;;::::0;-1:-1:-1;;;22635:63:0;;8157:2:1;22635:63:0::1;::::0;::::1;8139:21:1::0;8196:2;8176:18;;;8169:30;8235:26;8215:18;;;8208:54;8279:18;;22635:63:0::1;8129:174:1::0;22635:63:0::1;-1:-1:-1::0;;;;;22709:31:0;;::::1;22743:5;22709:31:::0;;;:18:::1;:31;::::0;;;;;;;:39;;-1:-1:-1;;22709:39:0;;::::1;::::0;;;22781:12:::1;::::0;;;::::1;22805:31:::0;;;;;;;:38;;;;::::1;-1:-1:-1::0;22805:38:0::1;::::0;;;22878:12;22859:32;;22878:12;::::1;5283:51:1::0;;22781:12:0;;22859:32:::1;::::0;5256:18:1;22859:32:0::1;5238:102:1::0;22044:115:0;2414:6;;-1:-1:-1;;;;;2414:6:0;1126:10;2414:22;2406:67;;;;-1:-1:-1;;;2406:67:0;;;;;;;:::i;:::-;22121:14:::1;:30:::0;22044:115::o;9138:149::-;2414:6;;-1:-1:-1;;;;;2414:6:0;1126:10;2414:22;2406:67;;;;-1:-1:-1;;;2406:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9207:27:0;::::1;9237:5;9207:27:::0;;;:18:::1;:27;::::0;;;;;;;;:35;;-1:-1:-1;;9207:35:0::1;::::0;;9258:21;;5283:51:1;;;9258:21:0::1;::::0;5256:18:1;9258:21:0::1;5238:102:1::0;21763:107:0;2414:6;;-1:-1:-1;;;;;2414:6:0;1126:10;2414:22;2406:67;;;;-1:-1:-1;;;2406:67:0;;;;;;;:::i;:::-;21836:12:::1;:26:::0;21763:107::o;2505:244::-;2414:6;;-1:-1:-1;;;;;2414:6:0;1126:10;2414:22;2406:67;;;;-1:-1:-1;;;2406:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2594:22:0;::::1;2586:73;;;::::0;-1:-1:-1;;;2586:73:0;;9278:2:1;2586:73:0::1;::::0;::::1;9260:21:1::0;9317:2;9297:18;;;9290:30;9356:34;9336:18;;;9329:62;-1:-1:-1;;;9407:18:1;;;9400:36;9453:19;;2586:73:0::1;9250:228:1::0;2586:73:0::1;2696:6;::::0;;2675:38:::1;::::0;-1:-1:-1;;;;;2675:38:0;;::::1;::::0;2696:6;::::1;::::0;2675:38:::1;::::0;::::1;2724:6;:17:::0;;-1:-1:-1;;;;;;2724:17:0::1;-1:-1:-1::0;;;;;2724:17:0;;;::::1;::::0;;;::::1;::::0;;2505:244::o;15760:222::-;15826:11;;-1:-1:-1;;;;;15826:11:0;1126:10;-1:-1:-1;;;;;15810:27:0;;:59;;;-1:-1:-1;15857:12:0;;-1:-1:-1;;;;;15857:12:0;1126:10;-1:-1:-1;;;;;15841:28:0;;15810:59;15802:68;;;;;;15910:21;15942:32;15910:21;15942:12;:32::i;12005:369::-;-1:-1:-1;;;;;12132:19:0;;12124:68;;;;-1:-1:-1;;;12124:68:0;;13610:2:1;12124:68:0;;;13592:21:1;13649:2;13629:18;;;13622:30;13688:34;13668:18;;;13661:62;-1:-1:-1;;;13739:18:1;;;13732:34;13783:19;;12124:68:0;13582:226:1;12124:68:0;-1:-1:-1;;;;;12211:21:0;;12203:68;;;;-1:-1:-1;;;12203:68:0;;9685:2:1;12203:68:0;;;9667:21:1;9724:2;9704:18;;;9697:30;9763:34;9743:18;;;9736:62;-1:-1:-1;;;9814:18:1;;;9807:32;9856:19;;12203:68:0;9657:224:1;12203:68:0;-1:-1:-1;;;;;12282:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;12334:32;;15975:25:1;;;12334:32:0;;15948:18:1;12334:32:0;;;;;;;12005:369;;;:::o;12382:2523::-;-1:-1:-1;;;;;12504:18:0;;12496:68;;;;-1:-1:-1;;;12496:68:0;;12800:2:1;12496:68:0;;;12782:21:1;12839:2;12819:18;;;12812:30;12878:34;12858:18;;;12851:62;-1:-1:-1;;;12929:18:1;;;12922:35;12974:19;;12496:68:0;12772:227:1;12496:68:0;-1:-1:-1;;;;;12583:16:0;;12575:64;;;;-1:-1:-1;;;12575:64:0;;7330:2:1;12575:64:0;;;7312:21:1;7369:2;7349:18;;;7342:30;7408:34;7388:18;;;7381:62;-1:-1:-1;;;7459:18:1;;;7452:33;7502:19;;12575:64:0;7302:225:1;12575:64:0;12667:1;12658:6;:10;12650:64;;;;-1:-1:-1;;;12650:64:0;;12390:2:1;12650:64:0;;;12372:21:1;12429:2;12409:18;;;12402:30;12468:34;12448:18;;;12441:62;-1:-1:-1;;;12519:18:1;;;12512:39;12568:19;;12650:64:0;12362:231:1;12650:64:0;2325:7;2352:6;-1:-1:-1;;;;;12731:15:0;;;2352:6;;12731:15;;;;:32;;-1:-1:-1;2325:7:0;2352:6;-1:-1:-1;;;;;12750:13:0;;;2352:6;;12750:13;;12731:32;12727:1197;;;12832:13;;-1:-1:-1;;;12832:13:0;;;;12827:431;;12886:13;;-1:-1:-1;;;;;12880:19:0;;;12886:13;;12880:19;;;;:53;;-1:-1:-1;12917:15:0;;-1:-1:-1;;;;;12903:30:0;;;12917:15;;12903:30;;12880:53;:81;;;;-1:-1:-1;;;;;;12939:22:0;;;;;;:18;:22;;;;;;;;12937:24;12880:81;12877:381;;;13015:14;;13006:6;12990:13;13000:2;12990:9;:13::i;:::-;:22;;;;:::i;:::-;:39;12982:87;;;;-1:-1:-1;;;12982:87:0;;13206:2:1;12982:87:0;;;13188:21:1;13245:2;13225:18;;;13218:30;13284:34;13264:18;;;13257:62;-1:-1:-1;;;13335:18:1;;;13328:33;13378:19;;12982:87:0;13178:225:1;12982:87:0;13106:12;;13096:6;:22;;13088:63;;;;-1:-1:-1;;;13088:63:0;;8921:2:1;13088:63:0;;;8903:21:1;8960:2;8940:18;;;8933:30;8999;8979:18;;;8972:58;9047:18;;13088:63:0;8893:178:1;13088:63:0;-1:-1:-1;;;;;13179:10:0;;;;;;:4;:10;;;;;;;;13178:11;:24;;;;-1:-1:-1;;;;;;13194:8:0;;;;;;:4;:8;;;;;;;;13193:9;13178:24;13170:72;;;;-1:-1:-1;;;13170:72:0;;10088:2:1;13170:72:0;;;10070:21:1;10127:2;10107:18;;;10100:30;10166:34;10146:18;;;10139:62;-1:-1:-1;;;10217:18:1;;;10210:33;10260:19;;13170:72:0;10060:225:1;13170:72:0;13286:28;13317:24;13335:4;13317:9;:24::i;:::-;13395:19;;13458:12;;13286:55;;-1:-1:-1;13371:43:0;;;;13434:36;;13431:124;;13527:12;;13504:35;;13431:124;13587:7;:18;;;;-1:-1:-1;13599:6:0;;-1:-1:-1;;;13599:6:0;;;;13598:7;13587:18;:43;;;;-1:-1:-1;13617:13:0;;-1:-1:-1;;;;;13609:21:0;;;13617:13;;13609:21;;13587:43;:58;;;;-1:-1:-1;13634:11:0;;-1:-1:-1;;;13634:11:0;;;;13587:58;13583:330;;;13666:38;13683:20;13666:16;:38::i;:::-;13752:21;13796:22;;13792:106;;13843:35;13856:21;13843:12;:35::i;:::-;13583:330;;12727:1197;;;-1:-1:-1;;;;;14008:24:0;;13944:12;14008:24;;;:18;:24;;;;;;13959:4;;14008:24;;;:50;;-1:-1:-1;;;;;;14036:22:0;;;;;;:18;:22;;;;;;;;14008:50;14007:102;;;-1:-1:-1;14072:13:0;;-1:-1:-1;;;;;14064:21:0;;;14072:13;;14064:21;;;;:44;;-1:-1:-1;14095:13:0;;-1:-1:-1;;;;;14089:19:0;;;14095:13;;14089:19;;14064:44;14003:841;;;-1:-1:-1;14136:5:0;14003:841;;;14231:13;;-1:-1:-1;;;;;14223:21:0;;;14231:13;;14223:21;:55;;;;-1:-1:-1;14262:15:0;;-1:-1:-1;;;;;14248:30:0;;;14262:15;;14248:30;;14223:55;14220:172;;;14316:19;;14299:14;:36;14364:12;;14354:7;:22;14220:172;-1:-1:-1;;;;;14450:24:0;;;;;;:18;:24;;;;;;;;14445:167;;14521:12;;14511:6;:22;;14503:89;;;;-1:-1:-1;;;14503:89:0;;11204:2:1;14503:89:0;;;11186:21:1;11243:2;11223:18;;;11216:30;11282:34;11262:18;;;11255:62;-1:-1:-1;;;11333:18:1;;;11326:52;11395:19;;14503:89:0;11176:244:1;14503:89:0;14654:13;;-1:-1:-1;;;;;14648:19:0;;;14654:13;;14648:19;:55;;;;-1:-1:-1;14687:15:0;;-1:-1:-1;;;;;14671:32:0;;;14687:15;;14671:32;;14648:55;14644:175;;;14741:20;;14724:14;:37;14790:13;;14780:7;:23;14644:175;14856:41;14871:4;14877:2;14881:6;14889:7;14856:14;:41::i;3117:224::-;3237:7;3273:12;3265:6;;;;3257:29;;;;-1:-1:-1;;;3257:29:0;;;;;;;;:::i;:::-;-1:-1:-1;3297:9:0;3309:5;3313:1;3309;:5;:::i;:::-;3297:17;3117:224;-1:-1:-1;;;;;3117:224:0:o;11280:323::-;11375:7;11433;;11422;:18;;11400:110;;;;-1:-1:-1;;;11400:110:0;;8510:2:1;11400:110:0;;;8492:21:1;8549:2;8529:18;;;8522:30;8588:34;8568:18;;;8561:62;-1:-1:-1;;;8639:18:1;;;8632:40;8689:19;;11400:110:0;8482:232:1;11400:110:0;11521:19;11543:10;:8;:10::i;:::-;11521:32;-1:-1:-1;11571:24:0;:7;11521:32;11571:11;:24::i;:::-;11564:31;11280:323;-1:-1:-1;;;11280:323:0:o;14915:483::-;7582:6;:13;;-1:-1:-1;;;;7582:13:0;-1:-1:-1;;;7582:13:0;;;15017:16:::1;::::0;;15031:1:::1;15017:16:::0;;;;;::::1;::::0;;-1:-1:-1;;15017:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;15017:16:0::1;14993:40;;15062:4;15044;15049:1;15044:7;;;;;;-1:-1:-1::0;;;15044:7:0::1;;;;;;;;;-1:-1:-1::0;;;;;15044:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;15088:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;15088:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;15044:7;;15088:22;;;;;:15;:22;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15078:4;15083:1;15078:7;;;;;;-1:-1:-1::0;;;15078:7:0::1;;;;;;;;;-1:-1:-1::0;;;;;15078:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;15153:15:::1;::::0;15121:62:::1;::::0;15138:4:::1;::::0;15153:15:::1;15171:11:::0;15121:8:::1;:62::i;:::-;15194:15;::::0;:196:::1;::::0;-1:-1:-1;;;15194:196:0;;-1:-1:-1;;;;;15194:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;15275:11;;15194:15:::1;::::0;15317:4;;15344::::1;::::0;15364:15:::1;::::0;15194:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;7618:6:0;:14;;-1:-1:-1;;;;7618:14:0;;;-1:-1:-1;;;;14915:483:0:o;20365:91::-;2414:6;;-1:-1:-1;;;;;2414:6:0;1126:10;2414:22;2406:67;;;;-1:-1:-1;;;2406:67:0;;;;;;;:::i;:::-;20420:13:::1;:20:::0;;-1:-1:-1;;;;20420:20:0::1;-1:-1:-1::0;;;20420:20:0::1;::::0;;20365:91::o;15406:147::-;15463:11;;-1:-1:-1;;;;;15463:11:0;:35;15484:13;:6;15495:1;15484:10;:13::i;:::-;15463:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15509:12:0;;-1:-1:-1;;;;;15509:12:0;:36;15531:13;:6;15542:1;15531:10;:13::i;:::-;15509:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16271:282;16427:7;16422:28;;16436:14;:12;:14::i;:::-;16461:44;16479:6;16487:9;16498:6;16461:17;:44::i;:::-;16521:7;16516:29;;16530:15;11931:22;;11914:14;:39;11974:15;;11964:7;:25;11870:127;19261:166;19303:7;19324:15;19341;19360:19;:17;:19::i;:::-;19323:56;;-1:-1:-1;19323:56:0;-1:-1:-1;19399:20:0;19323:56;;19399:11;:20::i;:::-;19392:27;;;;19261:166;:::o;3603:132::-;3661:7;3688:39;3692:1;3695;3688:39;;;;;;;;;;;;;;;;;:3;:39::i;11611:251::-;11658:14;;:19;:35;;;;-1:-1:-1;11681:7:0;;:12;11658:35;11654:48;;;11611:251::o;11654:48::-;11743:14;;;11718:22;:39;11786:7;;;11768:15;:25;-1:-1:-1;11814:18:0;;;;11843:11;11611:251::o;16561:610::-;16708:15;16738:23;16776:12;16803:23;16841:12;16868:13;16895:19;16906:7;16895:10;:19::i;:::-;-1:-1:-1;;;;;16943:15:0;;;;;;:7;:15;;;;;;16693:221;;-1:-1:-1;16693:221:0;;-1:-1:-1;16693:221:0;;-1:-1:-1;16693:221:0;-1:-1:-1;16693:221:0;-1:-1:-1;16693:221:0;-1:-1:-1;16943:28:0;;16693:221;16943:19;:28::i;:::-;-1:-1:-1;;;;;16925:15:0;;;;;;;:7;:15;;;;;;:46;;;;17003:18;;;;;;;:39;;17026:15;17003:22;:39::i;:::-;-1:-1:-1;;;;;16982:18:0;;;;;;:7;:18;;;;;:60;17053:16;17063:5;17053:9;:16::i;:::-;17080:23;17092:4;17098;17080:11;:23::i;:::-;17136:9;-1:-1:-1;;;;;17119:44:0;17128:6;-1:-1:-1;;;;;17119:44:0;;17147:15;17119:44;;;;15975:25:1;;15963:2;15948:18;;15930:76;17119:44:0;;;;;;;;16561:610;;;;;;;;;:::o;19435:263::-;19533:7;;19486;;;;5603:16;19601:20;19533:7;5603:16;19601:11;:20::i;:::-;19591:7;:30;19587:61;;;-1:-1:-1;;19631:7:0;;;5603:16;;-1:-1:-1;19435:263:0;-1:-1:-1;19435:263:0:o;19587:61::-;19673:7;;19682;;-1:-1:-1;19435:263:0;-1:-1:-1;19435:263:0:o;3743:223::-;3863:7;3898:12;3891:5;3883:28;;;;-1:-1:-1;;;3883:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3922:9:0;3934:5;3938:1;3934;:5;:::i;17590:630::-;17690:7;17712;17734;17756;17778;17800;17836:23;17861:12;17875:13;17905:45;17917:7;17926:14;;17942:7;;17905:11;:45::i;:::-;17835:115;;;;;;17961:19;17983:10;:8;:10::i;:::-;17961:32;;18005:15;18022:23;18047:12;18076:46;18088:7;18097:4;18103:5;18110:11;18076;:46::i;:::-;18004:118;;-1:-1:-1;18004:118:0;-1:-1:-1;18004:118:0;-1:-1:-1;18183:15:0;;-1:-1:-1;18200:4:0;;-1:-1:-1;18206:5:0;;-1:-1:-1;;;;;17590:630:0;;;;;;;:::o;2973:136::-;3031:7;3058:43;3062:1;3065;3058:43;;;;;;;;;;;;;;;;;:3;:43::i;2786:179::-;2844:7;;2876:5;2880:1;2876;:5;:::i;:::-;2864:17;;2905:1;2900;:6;;2892:46;;;;-1:-1:-1;;;2892:46:0;;10492:2:1;2892:46:0;;;10474:21:1;10531:2;10511:18;;;10504:30;10570:29;10550:18;;;10543:57;10617:18;;2892:46:0;10464:177:1;17179:211:0;17232:19;17254:10;:8;:10::i;:::-;17232:32;-1:-1:-1;17275:13:0;17291:22;:5;17232:32;17291:9;:22::i;:::-;17365:4;17349:22;;;;:7;:22;;;;;;17275:38;;-1:-1:-1;17349:33:0;;17275:38;17349:26;:33::i;:::-;17340:4;17324:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;17179:211:0:o;17398:147::-;17476:7;;:17;;17488:4;17476:11;:17::i;:::-;17466:7;:27;17517:10;;:20;;17532:4;17517:14;:20::i;:::-;17504:10;:33;-1:-1:-1;;17398:147:0:o;18228:481::-;18402:7;;;;18496:35;18527:3;18496:26;:7;18508:13;18496:11;:26::i;:::-;:30;;:35::i;:::-;18481:50;-1:-1:-1;18542:13:0;18558:28;18582:3;18558:19;:7;18570:6;18558:11;:19::i;:28::-;18542:44;-1:-1:-1;18597:23:0;18623:28;18542:44;18623:17;:7;18635:4;18623:11;:17::i;:::-;:21;;:28::i;:::-;18597:54;18689:4;;-1:-1:-1;18695:5:0;;-1:-1:-1;18228:481:0;;-1:-1:-1;;;;;18228:481:0:o;18717:536::-;18911:7;;;;19008:24;:7;19020:11;19008;:24::i;:::-;18990:42;-1:-1:-1;19043:12:0;19058:21;:4;19067:11;19058:8;:21::i;:::-;19043:36;-1:-1:-1;19090:13:0;19106:22;:5;19116:11;19106:9;:22::i;:::-;19090:38;-1:-1:-1;19139:23:0;19165:28;19090:38;19165:17;:7;19177:4;19165:11;:17::i;:28::-;19214:7;;;;-1:-1:-1;19240:4:0;;-1:-1:-1;18717:536:0;;-1:-1:-1;;;;;;;18717:536:0:o;3349:246::-;3407:7;3431:6;3427:47;;-1:-1:-1;3461:1:0;3454:8;;3427:47;3484:9;3496:5;3500:1;3496;:5;:::i;:::-;3484:17;-1:-1:-1;3529:1:0;3520:5;3524:1;3484:17;3520:5;:::i;:::-;:10;3512:56;;;;-1:-1:-1;;;3512:56:0;;11627:2:1;3512:56:0;;;11609:21:1;11666:2;11646:18;;;11639:30;11705:34;11685:18;;;11678:62;-1:-1:-1;;;11756:18:1;;;11749:31;11797:19;;3512:56:0;11599:223:1;14:768;68:5;121:3;114:4;106:6;102:17;98:27;88:2;;143:5;136;129:20;88:2;183:6;170:20;209:4;233:60;249:43;289:2;249:43;:::i;:::-;233:60;:::i;:::-;315:3;339:2;334:3;327:15;367:2;362:3;358:12;351:19;;402:2;394:6;390:15;454:3;449:2;443;440:1;436:10;428:6;424:23;420:32;417:41;414:2;;;475:5;468;461:20;414:2;501:5;515:238;529:2;526:1;523:9;515:238;;;600:3;587:17;617:31;642:5;617:31;:::i;:::-;661:18;;699:12;;;;731;;;;547:1;540:9;515:238;;;-1:-1:-1;771:5:1;;78:704;-1:-1:-1;;;;;;;78:704:1:o;787:257::-;846:6;899:2;887:9;878:7;874:23;870:32;867:2;;;920:6;912;905:22;867:2;964:9;951:23;983:31;1008:5;983:31;:::i;1049:261::-;1119:6;1172:2;1160:9;1151:7;1147:23;1143:32;1140:2;;;1193:6;1185;1178:22;1140:2;1230:9;1224:16;1249:31;1274:5;1249:31;:::i;1315:398::-;1383:6;1391;1444:2;1432:9;1423:7;1419:23;1415:32;1412:2;;;1465:6;1457;1450:22;1412:2;1509:9;1496:23;1528:31;1553:5;1528:31;:::i;:::-;1578:5;-1:-1:-1;1635:2:1;1620:18;;1607:32;1648:33;1607:32;1648:33;:::i;:::-;1700:7;1690:17;;;1402:311;;;;;:::o;1718:466::-;1795:6;1803;1811;1864:2;1852:9;1843:7;1839:23;1835:32;1832:2;;;1885:6;1877;1870:22;1832:2;1929:9;1916:23;1948:31;1973:5;1948:31;:::i;:::-;1998:5;-1:-1:-1;2055:2:1;2040:18;;2027:32;2068:33;2027:32;2068:33;:::i;:::-;1822:362;;2120:7;;-1:-1:-1;;;2174:2:1;2159:18;;;;2146:32;;1822:362::o;2189:436::-;2254:6;2262;2315:2;2303:9;2294:7;2290:23;2286:32;2283:2;;;2336:6;2328;2321:22;2283:2;2380:9;2367:23;2399:31;2424:5;2399:31;:::i;:::-;2449:5;-1:-1:-1;2506:2:1;2491:18;;2478:32;2548:15;;2541:23;2529:36;;2519:2;;2584:6;2576;2569:22;2630:325;2698:6;2706;2759:2;2747:9;2738:7;2734:23;2730:32;2727:2;;;2780:6;2772;2765:22;2727:2;2824:9;2811:23;2843:31;2868:5;2843:31;:::i;:::-;2893:5;2945:2;2930:18;;;;2917:32;;-1:-1:-1;;;2717:238:1:o;2960:368::-;3044:6;3097:2;3085:9;3076:7;3072:23;3068:32;3065:2;;;3118:6;3110;3103:22;3065:2;3163:9;3150:23;3196:18;3188:6;3185:30;3182:2;;;3233:6;3225;3218:22;3182:2;3261:61;3314:7;3305:6;3294:9;3290:22;3261:61;:::i;:::-;3251:71;3055:273;-1:-1:-1;;;;3055:273:1:o;3333:1204::-;3451:6;3459;3512:2;3500:9;3491:7;3487:23;3483:32;3480:2;;;3533:6;3525;3518:22;3480:2;3578:9;3565:23;3607:18;3648:2;3640:6;3637:14;3634:2;;;3669:6;3661;3654:22;3634:2;3697:61;3750:7;3741:6;3730:9;3726:22;3697:61;:::i;:::-;3687:71;;3777:2;3767:12;;3832:2;3821:9;3817:18;3804:32;3861:2;3851:8;3848:16;3845:2;;;3882:6;3874;3867:22;3845:2;3910:24;;;-1:-1:-1;3965:4:1;3957:13;;3953:27;-1:-1:-1;3943:2:1;;3999:6;3991;3984:22;3943:2;4040;4027:16;4063:60;4079:43;4119:2;4079:43;:::i;4063:60::-;4145:3;4169:2;4164:3;4157:15;4197:2;4192:3;4188:12;4181:19;;4228:2;4224;4220:11;4276:7;4271:2;4265;4262:1;4258:10;4254:2;4250:19;4246:28;4243:41;4240:2;;;4302:6;4294;4287:22;4240:2;4329:6;4320:15;;4344:163;4358:2;4355:1;4352:9;4344:163;;;4415:17;;4403:30;;4376:1;4369:9;;;;;4453:12;;;;4485;;4344:163;;;4348:3;4526:5;4516:15;;;;;;;3470:1067;;;;;:::o;4542:190::-;4601:6;4654:2;4642:9;4633:7;4629:23;4625:32;4622:2;;;4675:6;4667;4660:22;4622:2;-1:-1:-1;4703:23:1;;4612:120;-1:-1:-1;4612:120:1:o;4737:395::-;4823:6;4831;4839;4847;4900:3;4888:9;4879:7;4875:23;4871:33;4868:2;;;4922:6;4914;4907:22;4868:2;-1:-1:-1;;4950:23:1;;;5020:2;5005:18;;4992:32;;-1:-1:-1;5071:2:1;5056:18;;5043:32;;5122:2;5107:18;5094:32;;-1:-1:-1;4858:274:1;-1:-1:-1;4858:274:1:o;6520:603::-;6632:4;6661:2;6690;6679:9;6672:21;6722:6;6716:13;6765:6;6760:2;6749:9;6745:18;6738:34;6790:4;6803:140;6817:6;6814:1;6811:13;6803:140;;;6912:14;;;6908:23;;6902:30;6878:17;;;6897:2;6874:26;6867:66;6832:10;;6803:140;;;6961:6;6958:1;6955:13;6952:2;;;7031:4;7026:2;7017:6;7006:9;7002:22;6998:31;6991:45;6952:2;-1:-1:-1;7107:2:1;7086:15;-1:-1:-1;;7082:29:1;7067:45;;;;7114:2;7063:54;;6641:482;-1:-1:-1;;;6641:482:1:o;11827:356::-;12029:2;12011:21;;;12048:18;;;12041:30;12107:34;12102:2;12087:18;;12080:62;12174:2;12159:18;;12001:182::o;16011:983::-;16273:4;16321:3;16310:9;16306:19;16352:6;16341:9;16334:25;16378:2;16416:6;16411:2;16400:9;16396:18;16389:34;16459:3;16454:2;16443:9;16439:18;16432:31;16483:6;16518;16512:13;16549:6;16541;16534:22;16587:3;16576:9;16572:19;16565:26;;16626:2;16618:6;16614:15;16600:29;;16647:4;16660:195;16674:6;16671:1;16668:13;16660:195;;;16739:13;;-1:-1:-1;;;;;16735:39:1;16723:52;;16830:15;;;;16795:12;;;;16771:1;16689:9;16660:195;;;-1:-1:-1;;;;;;;16911:32:1;;;;16906:2;16891:18;;16884:60;-1:-1:-1;;;16975:3:1;16960:19;16953:35;16872:3;16282:712;-1:-1:-1;;;16282:712:1:o;17188:275::-;17259:2;17253:9;17324:2;17305:13;;-1:-1:-1;;17301:27:1;17289:40;;17359:18;17344:34;;17380:22;;;17341:62;17338:2;;;17406:18;;:::i;:::-;17442:2;17435:22;17233:230;;-1:-1:-1;17233:230:1:o;17468:183::-;17528:4;17561:18;17553:6;17550:30;17547:2;;;17583:18;;:::i;:::-;-1:-1:-1;17628:1:1;17624:14;17640:4;17620:25;;17537:114::o;17656:128::-;17696:3;17727:1;17723:6;17720:1;17717:13;17714:2;;;17733:18;;:::i;:::-;-1:-1:-1;17769:9:1;;17704:80::o;17789:217::-;17829:1;17855;17845:2;;-1:-1:-1;;;17880:31:1;;17934:4;17931:1;17924:15;17962:4;17887:1;17952:15;17845:2;-1:-1:-1;17991:9:1;;17835:171::o;18011:168::-;18051:7;18117:1;18113;18109:6;18105:14;18102:1;18099:21;18094:1;18087:9;18080:17;18076:45;18073:2;;;18124:18;;:::i;:::-;-1:-1:-1;18164:9:1;;18063:116::o;18184:125::-;18224:4;18252:1;18249;18246:8;18243:2;;;18257:18;;:::i;:::-;-1:-1:-1;18294:9:1;;18233:76::o;18314:135::-;18353:3;-1:-1:-1;;18374:17:1;;18371:2;;;18394:18;;:::i;:::-;-1:-1:-1;18441:1:1;18430:13;;18361:88::o;18454:127::-;18515:10;18510:3;18506:20;18503:1;18496:31;18546:4;18543:1;18536:15;18570:4;18567:1;18560:15;18586:127;18647:10;18642:3;18638:20;18635:1;18628:31;18678:4;18675:1;18668:15;18702:4;18699:1;18692:15;18718:131;-1:-1:-1;;;;;18793:31:1;;18783:42;;18773:2;;18839:1;18836;18829:12

Swarm Source

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