ETH Price: $3,084.55 (-1.11%)
Gas: 2 Gwei

Token

Bolt Inu (BOLT)
 

Overview

Max Total Supply

100,000,000,000 BOLT

Holders

83

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
1,007,270,414.684695215418976378 BOLT

Value
$0.00
0xf6297cfadc7ba28c07a200c1f0a644d4918ba5da
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:
BoltInu

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-10-05
*/

/*

Bolt Inu !! 
Dev Announcements - https://t.me/BoltInuAnnouncements
TG Community - https://t.me/BoltInuGlobal

*/
// SPDX-License-Identifier: MIT

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

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

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

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
    
    function renounceOwnership() public virtual onlyOwner() {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

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 swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint 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);
    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

abstract contract IERC20Extented is IERC20 {
    function decimals() external view virtual returns (uint8);
    function name() external view virtual returns (string memory);
    function symbol() external view virtual returns (string memory);
}

contract BoltInu is Context, IERC20, IERC20Extented, Ownable {
    using SafeMath for uint256;
    string private constant _name = "Bolt Inu";
    string private constant _symbol = "BOLT";
    uint8 private constant _decimals = 18;
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant _tTotal = 100000000000 * 10**18; // 100 Billion
    uint256 private _firstBlock;
    uint256 private _botBlocks;
    uint256 public _maxWalletAmount;
    uint256 private _maxSell;
    uint256 private _maxBuy;
    uint256 public numTokensToSwap = 200000000 * 10**18; // 0.2%

    // buy fees
    uint256 public _buyLiquidityFee = 0; // divided by 1000
    uint256 private _previousBuyLiquidityFee = _buyLiquidityFee;
    uint256 public _buyEcosystemFee = 0; // divided by 1000
    uint256 private _previousBuyEcosystemFee = _buyEcosystemFee;
    uint256 public _buyMarketingFee = 0; // divided by 1000
    uint256 private _previousBuyMarketingFee = _buyMarketingFee;
    uint256 public _buyTeamFee = 0; // divided by 1000
    uint256 private _previousBuyTeamFee = _buyTeamFee;

    // sell fees
    uint256 public _sellLiquidityFee = 0; // divided by 1000
    uint256 private _previousSellLiquidityFee = _sellLiquidityFee;
    uint256 public _sellEcosystemFee = 0; // divided by 1000
    uint256 private _previousSellEcosystemFee = _sellEcosystemFee;
    uint256 public _sellMarketingFee = 0; // divided by 1000
    uint256 private _previousSellMarketingFee = _sellMarketingFee;
    uint256 public _sellTeamFee = 0; // divided by 1000
    uint256 private _previousSellTeamFee = _sellTeamFee;
    uint256 public transferFeeIncreaseFactor = 100; // divided by 100

    struct FeeBreakdown {
        uint256 tLiquidity;
        uint256 tMarketing;
        uint256 tTeam;
        uint256 tEcosystem;
        uint256 tAmount;
    }

    mapping(address => bool) private bots;
    address payable private _marketingAddress = payable(0x000000000000000000000000000000000000dEaD);
    address payable private _teamAddress = payable(0x000000000000000000000000000000000000dEaD);
    address payable private _ecosystemAddress = payable(0x000000000000000000000000000000000000dEaD);
    address payable private _lpRecipient;
    IUniswapV2Router02 private uniswapV2Router;
    address public uniswapV2Pair;
    uint256 private _maxTxAmount;

    bool public tradingOpen = false;
    bool private inSwap = false;
    bool public canPause = true;

    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    event BuyFeesUpdated(uint256 _buyMarketingFee, uint256 _buyLiquidityFee, uint256 _buyTeamFee, uint256 _buyEcosystemFee);
    event SellFeesUpdated(uint256 _sellMarketingFee, uint256 _sellLiquidityFee, uint256 _sellTeamFee, uint256 _sellEcosystemFee);

    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    constructor() {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router),type(uint256).max);

        _maxTxAmount = _tTotal; // start off transaction limit at 100% of total supply
        _maxWalletAmount = _tTotal; // 100%
        _maxBuy = _tTotal; // 100%
        _maxSell = _tTotal; // 100%

        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _lpRecipient = payable(owner());
        _isExcludedFromFee[address(this)] = true;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    function name() override external pure returns (string memory) {
        return _name;
    }

    function symbol() override external pure returns (string memory) {
        return _symbol;
    }

    function decimals() override external pure returns (uint8) {
        return _decimals;
    }

    function totalSupply() external pure override returns (uint256) {
        return _tTotal;
    }

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

    function isBot(address account) public view returns (bool) {
        return bots[account];
    }
    
    function transfer(address recipient, uint256 amount) external override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

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

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,"ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function removeAllFee() private {
        _previousBuyMarketingFee = _buyMarketingFee;
        _previousBuyLiquidityFee = _buyLiquidityFee;
        _previousBuyTeamFee = _buyTeamFee;
        _previousBuyEcosystemFee = _buyEcosystemFee;
        
        _buyMarketingFee = 0;
        _buyLiquidityFee = 0;
        _buyTeamFee = 0;
        _buyEcosystemFee = 0;

        _previousSellMarketingFee = _sellMarketingFee;
        _previousSellLiquidityFee = _sellLiquidityFee;
        _previousSellTeamFee = _sellTeamFee;
        _previousSellEcosystemFee = _sellEcosystemFee;
        
        _sellMarketingFee = 0;
        _sellLiquidityFee = 0;
        _sellTeamFee = 0;
        _sellEcosystemFee = 0;
    }
    
    function restoreAllFee() private {
        _buyMarketingFee = _previousBuyMarketingFee;
        _buyLiquidityFee = _previousBuyLiquidityFee;
        _buyTeamFee = _previousBuyTeamFee;
        _buyEcosystemFee = _previousBuyEcosystemFee;

        _sellMarketingFee = _previousSellMarketingFee;
        _sellLiquidityFee = _previousSellLiquidityFee;
        _sellTeamFee = _previousSellTeamFee;
        _sellEcosystemFee = _previousSellEcosystemFee;
    }

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

        bool takeFee = true;

        if (from != owner() && to != owner() && from != address(this) && to != address(this)) {
            require(tradingOpen, "Trading is not active");
            if (from == uniswapV2Pair && to != address(uniswapV2Router)) {//buys

                if (block.timestamp <= _firstBlock.add(_botBlocks)) {
                    bots[to] = true;
                }
                require(balanceOf(to).add(amount) <= _maxWalletAmount, "wallet balance after transfer must be less than max wallet amount");
                require(amount <= _maxBuy, "Amount exceeds maximum buy limit");
            }
            
            if (!inSwap && from != uniswapV2Pair && to == uniswapV2Pair) { //sells
                require(!bots[from] && !bots[to]);
                require(amount <= _maxSell, "Amount exceeds maximum sell limit");
                
                uint256 contractTokenBalance = balanceOf(address(this));

                if (contractTokenBalance >= numTokensToSwap) {
                    if (contractTokenBalance > 0) {
                        if (_sellMarketingFee.add(_sellTeamFee).add(_sellEcosystemFee).add(_sellLiquidityFee) > 0) {
                            uint256 autoLPamount = _sellLiquidityFee.mul(contractTokenBalance).div(_sellMarketingFee.add(_sellTeamFee).add(_sellEcosystemFee).add(_sellLiquidityFee));
                            uint256 minusLP = 0;
                            if (contractTokenBalance >= autoLPamount) {
                                minusLP = contractTokenBalance.sub(autoLPamount);
                            }
                            swapAndLiquify(autoLPamount, minusLP);
                        }
                    }
                    uint256 contractETHBalance = address(this).balance;
                    if (contractETHBalance > 0) {
                        sendETHToFee(address(this).balance);
                    }
                }
                    
            }

            if(from != uniswapV2Pair && to != uniswapV2Pair) { //transfers
                
                require(balanceOf(to).add(amount) <= _maxWalletAmount, "wallet balance after transfer must be less than max wallet amount");

            }
        }

        if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
            takeFee = false;
        }
        
        _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 addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
              address(this),
              tokenAmount,
              0, // slippage is unavoidable
              0, // slippage is unavoidable
              _lpRecipient,
              block.timestamp
          );
    }
  
    function swapAndLiquify(uint256 lpAmount, uint256 contractTokenBalance) private lockTheSwap {
        // split the contract balance into halves
        uint256 half = lpAmount.div(2);
        uint256 otherHalf = lpAmount.sub(half);

        // capture the contract's current BNB balance.
        // this is so that we can capture exactly the amount of BNB that the
        // swap creates, and not make the liquidity event include any BNB that
        // has been manually sent to the contract
        uint256 initialBalance = address(this).balance;

        // swap tokens for BNB
        swapTokensForEth(contractTokenBalance.add(half)); // <- this breaks the BNB -> HATE swap when swap+liquify is triggered

        // how much BNB did we just swap into?
        uint256 newBalance = address(this).balance.sub(initialBalance);

        // add liquidity to pancakeswap
        if (otherHalf > 0) {
            addLiquidity(otherHalf, newBalance.mul(half).div(contractTokenBalance.add(half)));
        }
    }

    function sendETHToFee(uint256 amount) private {
        uint256 totalFees = _sellMarketingFee.add(_sellEcosystemFee).add(_sellTeamFee);
        if (totalFees != 0) {
            uint256 marketingPortion = amount.mul(_sellMarketingFee).div(totalFees);
            uint256 teamPortion = amount.mul(_sellTeamFee).div(totalFees);
            uint256 ecoPortion = amount.sub(marketingPortion).sub(teamPortion);
            if (marketingPortion > 0) {
                _marketingAddress.transfer(marketingPortion);
            }
            if (teamPortion > 0) {
                _teamAddress.transfer(teamPortion);
            }
            if (ecoPortion > 0) {
                _ecosystemAddress.transfer(ecoPortion);
            }
        }
    }

    function openTrading(uint256 botBlocks) external onlyOwner() {
        _firstBlock = block.timestamp;
        _botBlocks = botBlocks;
        tradingOpen = true;
    }

    function enableToken() external onlyOwner() {
        tradingOpen = true;
    }

    function disableToken() external onlyOwner() {
        require(canPause, "this contract cannot be paused");
        tradingOpen = false;
    }

    function disablePauseAbility() onlyOwner() external {
        canPause = false;
    }

    function manualswap() external onlyOwner() {
        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance > 0) {
            swapTokensForEth(contractBalance);
        }
    }

    function manualsend() external onlyOwner() {
        uint256 contractETHBalance = address(this).balance;
        if (contractETHBalance > 0) {
            payable(address(owner())).transfer(contractETHBalance);
        }
    }

    function manualSendToken(address token) external onlyOwner() {
        uint256 amount = IERC20(token).balanceOf(address(this));
        IERC20(token).transfer(owner(), amount);
    }

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

    function _transferStandard(address sender, address recipient, uint256 amount) private {
        FeeBreakdown memory fees;
        if (sender == uniswapV2Pair && recipient != address(uniswapV2Router)) {//buys
            fees.tMarketing = amount.mul(_buyMarketingFee).div(1000);
            fees.tLiquidity = amount.mul(_buyLiquidityFee).div(1000);
            fees.tTeam = amount.mul(_buyTeamFee).div(1000);
            fees.tEcosystem = amount.mul(_buyEcosystemFee).div(1000);
        }
        if (sender != uniswapV2Pair && recipient == uniswapV2Pair) {//sells
            fees.tMarketing = amount.mul(_sellMarketingFee).div(1000);
            fees.tLiquidity = amount.mul(_sellLiquidityFee).div(1000);
            fees.tTeam = amount.mul(_sellTeamFee).div(1000);
            fees.tEcosystem = amount.mul(_sellEcosystemFee).div(1000);
        }
        if (sender != uniswapV2Pair && recipient != uniswapV2Pair) {//transfer
            fees.tMarketing = (amount.mul(_sellMarketingFee).div(1000)).mul(transferFeeIncreaseFactor).div(100);
            fees.tLiquidity = (amount.mul(_sellLiquidityFee).div(1000)).mul(transferFeeIncreaseFactor).div(100);
            fees.tTeam = (amount.mul(_sellTeamFee).div(1000)).mul(transferFeeIncreaseFactor).div(100);
            fees.tEcosystem = (amount.mul(_sellEcosystemFee).div(1000)).mul(transferFeeIncreaseFactor).div(100);
        }
        
        fees.tAmount = amount.sub(fees.tMarketing).sub(fees.tLiquidity).sub(fees.tTeam).sub(fees.tEcosystem);
        
        _balances[sender] = _balances[sender].sub(amount);
        _balances[recipient] = _balances[recipient].add(fees.tAmount);
        _balances[address(this)] = _balances[address(this)].add(fees.tMarketing.add(fees.tLiquidity).add(fees.tTeam).add(fees.tEcosystem));
        
        emit Transfer(sender, recipient, fees.tAmount);
    }
    
    receive() external payable {}

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

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

    function addBot(address account) external onlyOwner() {
        bots[account] = true;
    }
    
    function setTransferTransactionMultiplier(uint256 _multiplier) external onlyOwner() {
        transferFeeIncreaseFactor = _multiplier;
    }

    function setMaxWalletAmount(uint256 maxWalletAmount) external onlyOwner() {
        require(maxWalletAmount >= _tTotal.div(1000), "Amount must be greater than 0.1% of supply");
        require(maxWalletAmount <= _tTotal, "Amount must be less than or equal to totalSupply");
        _maxWalletAmount = maxWalletAmount;
    }

    function setBuyTaxes(uint256 marketingFee, uint256 liquidityFee, uint256 teamFee, uint256 ecosystemFee) external onlyOwner() {
        uint256 totalFee = marketingFee.add(liquidityFee).add(teamFee).add(ecosystemFee);
        require(totalFee <= 100, "Sum of buy fees must be less than or equal to 10%");

        _buyMarketingFee = marketingFee;
        _buyLiquidityFee = liquidityFee;
        _buyTeamFee = teamFee;
        _buyEcosystemFee = ecosystemFee;
        
        _previousBuyMarketingFee = _buyMarketingFee;
        _previousBuyLiquidityFee = _buyLiquidityFee;
        _previousBuyTeamFee = _buyTeamFee;
        _previousBuyEcosystemFee = _buyEcosystemFee;
        
        emit BuyFeesUpdated(marketingFee, liquidityFee, teamFee, ecosystemFee);
    }

    function setSellTaxes(uint256 marketingFee, uint256 liquidityFee, uint256 teamFee, uint256 ecosystemFee) external onlyOwner() {
        uint256 totalFee = marketingFee.add(liquidityFee).add(teamFee).add(ecosystemFee);
        require(totalFee <= 120, "Sum of buy fees must be less than or equal to 12%");

        _sellMarketingFee = marketingFee;
        _sellLiquidityFee = liquidityFee;
        _sellTeamFee = teamFee;
        _sellEcosystemFee = ecosystemFee;
        
        _previousSellMarketingFee = _sellMarketingFee;
        _previousSellLiquidityFee = _sellLiquidityFee;
        _previousSellTeamFee = _sellTeamFee;
        _previousSellEcosystemFee = _sellEcosystemFee;
        
        emit SellFeesUpdated(marketingFee, liquidityFee, teamFee, ecosystemFee);
    }
    
    function updateMaxSell(uint256 maxSell) external onlyOwner() {
        require(maxSell >= _tTotal.div(1000) , "cant make the limit lower than 0.1% of the supply");
        _maxSell = maxSell;
    }
    
    function updateMaxBuy(uint256 maxBuy) external onlyOwner() {
        require(maxBuy >= _tTotal.div(1000) , "cant make the limit lower than 0.1% of the supply");
        _maxBuy = maxBuy;
    }

    function updateEcosystemAddress(address payable ecosystemAddress) external onlyOwner() {
        _ecosystemAddress = ecosystemAddress;
    }
    
    function updateMarketingAddress(address payable marketingAddress) external onlyOwner() {
        _marketingAddress = marketingAddress;
    }
    
    function updateTeamAddress(address payable teamAddress) external onlyOwner() {
        _teamAddress = teamAddress;
    } 

    function updateLpRecipient(address payable lpRecipient) external onlyOwner() {
        _lpRecipient = lpRecipient;
    }

    function updateNumTokensToSwap(uint256 numTokens) external onlyOwner() {
        numTokensToSwap = numTokens;
    }
}

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":"uint256","name":"_buyMarketingFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_buyLiquidityFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_buyTeamFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_buyEcosystemFee","type":"uint256"}],"name":"BuyFeesUpdated","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":"_sellMarketingFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_sellLiquidityFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_sellTeamFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_sellEcosystemFee","type":"uint256"}],"name":"SellFeesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_buyEcosystemFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellEcosystemFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"canPause","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"disablePauseAbility","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","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":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"manualSendToken","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":"numTokensToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"botBlocks","type":"uint256"}],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketingFee","type":"uint256"},{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"teamFee","type":"uint256"},{"internalType":"uint256","name":"ecosystemFee","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletAmount","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketingFee","type":"uint256"},{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"teamFee","type":"uint256"},{"internalType":"uint256","name":"ecosystemFee","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_multiplier","type":"uint256"}],"name":"setTransferTransactionMultiplier","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":"tradingOpen","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":[],"name":"transferFeeIncreaseFactor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"ecosystemAddress","type":"address"}],"name":"updateEcosystemAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"lpRecipient","type":"address"}],"name":"updateLpRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketingAddress","type":"address"}],"name":"updateMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxBuy","type":"uint256"}],"name":"updateMaxBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxSell","type":"uint256"}],"name":"updateMaxSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numTokens","type":"uint256"}],"name":"updateNumTokensToSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"teamAddress","type":"address"}],"name":"updateTeamAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526aa56fa5b99019a5c8000000600a556000600b819055600c819055600d819055600e819055600f8190556010819055601181905560128190556013819055601481905560158190556016819055601781905560188190556019819055601a556064601b55601d80546001600160a01b031990811661dead908117909255601e8054821683179055601f805490911690911790556024805462ffffff191662010000179055348015620000b557600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350602180546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556200013a30826c01431e0fae6d7217caa000000062000411565b806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200017457600080fd5b505afa15801562000189573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001af91906200053d565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620001f857600080fd5b505afa1580156200020d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200023391906200053d565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200027c57600080fd5b505af115801562000291573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b791906200053d565b602280546001600160a01b0319166001600160a01b0392831690811790915560215460405163095ea7b360e01b81529216600483015260001960248301529063095ea7b390604401602060405180830381600087803b1580156200031a57600080fd5b505af11580156200032f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200035591906200056d565b506c01431e0fae6d7217caa0000000602381905560078190556009819055600881905533600081815260026020908152604080832085905582546001600160a01b03908116845260048352818420805460ff199081166001908117909255855485546001600160a01b0319169316929092178455308552828520805490921617905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3506200058f565b6001600160a01b038316620004795760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216620004dc5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000470565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000602082840312156200054f578081fd5b81516001600160a01b038116811462000566578182fd5b9392505050565b6000602082840312156200057f578081fd5b8151801515811462000566578182fd5b6129df806200059f6000396000f3fe6080604052600436106102b25760003560e01c806372b2aecc11610175578063cab03471116100dc578063e315a6da11610095578063f2fde38b1161006f578063f2fde38b14610861578063f480fec214610881578063ffb54a99146108a1578063ffecf516146108bb57600080fd5b8063e315a6da14610801578063e4bf1bed14610821578063ea2f0b371461084157600080fd5b8063cab034711461072f578063cdb3858f14610745578063d163364914610765578063db0045ec14610785578063dc44b6a0146107a5578063dd62ed3e146107bb57600080fd5b8063a850673d1161012e578063a850673d14610698578063a9059cbb146106b8578063c3c8cd80146106d8578063c469b6dd146106ed578063c5d2418914610703578063c86079521461071957600080fd5b806372b2aecc146105ec57806388790a68146106025780638da5cb5b146106185780638e360253146106365780639164f9db1461064b57806395d89b411461066b57600080fd5b8063323be1c5116102195780635fecd926116101d25780635fecd926146105415780636aabff3f146105615780636c0a24eb146105765780636fc3eaec1461058c57806370a08231146105a1578063715018a6146105d757600080fd5b8063323be1c51461045b5780633bbac5791461047b5780633e0f966d146104b4578063437823ec146104c957806349bd5a5e146104e9578063588813041461052157600080fd5b806323b872dd1161026b57806323b872dd146103b3578063248dd232146103d357806327a14fc2146103e95780632843631d14610409578063294093951461041f578063313ce5671461043f57600080fd5b806301a6c43b146102be57806306fdde03146102e7578063095ea7b31461032157806314eb76ac1461035157806318160ddd146103735780632369bf831461039357600080fd5b366102b957005b600080fd5b3480156102ca57600080fd5b506102d4600a5481565b6040519081526020015b60405180910390f35b3480156102f357600080fd5b50604080518082019091526008815267426f6c7420496e7560c01b60208201525b6040516102de9190612738565b34801561032d57600080fd5b5061034161033c36600461265f565b6108db565b60405190151581526020016102de565b34801561035d57600080fd5b5061037161036c3660046125af565b6108f2565b005b34801561037f57600080fd5b506c01431e0fae6d7217caa00000006102d4565b34801561039f57600080fd5b506103716103ae3660046125af565b610947565b3480156103bf57600080fd5b506103416103ce36600461261f565b610993565b3480156103df57600080fd5b506102d460155481565b3480156103f557600080fd5b506103716104043660046126aa565b6109fc565b34801561041557600080fd5b506102d4600d5481565b34801561042b57600080fd5b5061037161043a3660046125af565b610b1c565b34801561044b57600080fd5b50604051601281526020016102de565b34801561046757600080fd5b506024546103419062010000900460ff1681565b34801561048757600080fd5b506103416104963660046125af565b6001600160a01b03166000908152601c602052604090205460ff1690565b3480156104c057600080fd5b50610371610c68565b3480156104d557600080fd5b506103716104e43660046125af565b610cf6565b3480156104f557600080fd5b50602254610509906001600160a01b031681565b6040516001600160a01b0390911681526020016102de565b34801561052d57600080fd5b5061037161053c3660046126aa565b610d44565b34801561054d57600080fd5b5061037161055c3660046125af565b610dab565b34801561056d57600080fd5b50610371610df6565b34801561058257600080fd5b506102d460075481565b34801561059857600080fd5b50610371610e2e565b3480156105ad57600080fd5b506102d46105bc3660046125af565b6001600160a01b031660009081526002602052604090205490565b3480156105e357600080fd5b50610371610e9d565b3480156105f857600080fd5b506102d4601b5481565b34801561060e57600080fd5b506102d460135481565b34801561062457600080fd5b506000546001600160a01b0316610509565b34801561064257600080fd5b50610371610f11565b34801561065757600080fd5b506103716106663660046126aa565b610f4a565b34801561067757600080fd5b506040805180820190915260048152631093d31560e21b6020820152610314565b3480156106a457600080fd5b506103716106b33660046126aa565b610fb1565b3480156106c457600080fd5b506103416106d336600461265f565b610fe0565b3480156106e457600080fd5b50610371610fed565b3480156106f957600080fd5b506102d460115481565b34801561070f57600080fd5b506102d4600f5481565b34801561072557600080fd5b506102d460175481565b34801561073b57600080fd5b506102d460195481565b34801561075157600080fd5b506103716107603660046125af565b611036565b34801561077157600080fd5b506103716107803660046126aa565b611082565b34801561079157600080fd5b506103716107a03660046125af565b6110c2565b3480156107b157600080fd5b506102d4600b5481565b3480156107c757600080fd5b506102d46107d63660046125e7565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561080d57600080fd5b5061037161081c3660046126aa565b61110e565b34801561082d57600080fd5b5061037161083c366004612707565b61113d565b34801561084d57600080fd5b5061037161085c3660046125af565b611264565b34801561086d57600080fd5b5061037161087c3660046125af565b6112af565b34801561088d57600080fd5b5061037161089c366004612707565b611347565b3480156108ad57600080fd5b506024546103419060ff1681565b3480156108c757600080fd5b506103716108d63660046125af565b61145d565b60006108e83384846114ab565b5060015b92915050565b6000546001600160a01b031633146109255760405162461bcd60e51b815260040161091c906127f2565b60405180910390fd5b601e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146109715760405162461bcd60e51b815260040161091c906127f2565b601d80546001600160a01b0319166001600160a01b0392909216919091179055565b60006109a08484846115cf565b6109f284336109ed85604051806060016040528060288152602001612982602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190611b2a565b6114ab565b5060019392505050565b6000546001600160a01b03163314610a265760405162461bcd60e51b815260040161091c906127f2565b610a3f6c01431e0fae6d7217caa00000006103e8611b64565b811015610aa15760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d7573742062652067726561746572207468616e20302e3125604482015269206f6620737570706c7960b01b606482015260840161091c565b6c01431e0fae6d7217caa0000000811115610b175760405162461bcd60e51b815260206004820152603060248201527f416d6f756e74206d757374206265206c657373207468616e206f72206571756160448201526f6c20746f20746f74616c537570706c7960801b606482015260840161091c565b600755565b6000546001600160a01b03163314610b465760405162461bcd60e51b815260040161091c906127f2565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a082319060240160206040518083038186803b158015610b8857600080fd5b505afa158015610b9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc091906126c2565b9050816001600160a01b031663a9059cbb610be36000546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101849052604401602060405180830381600087803b158015610c2b57600080fd5b505af1158015610c3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c63919061268a565b505050565b6000546001600160a01b03163314610c925760405162461bcd60e51b815260040161091c906127f2565b60245462010000900460ff16610cea5760405162461bcd60e51b815260206004820152601e60248201527f7468697320636f6e74726163742063616e6e6f74206265207061757365640000604482015260640161091c565b6024805460ff19169055565b6000546001600160a01b03163314610d205760405162461bcd60e51b815260040161091c906127f2565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000546001600160a01b03163314610d6e5760405162461bcd60e51b815260040161091c906127f2565b610d876c01431e0fae6d7217caa00000006103e8611b64565b811015610da65760405162461bcd60e51b815260040161091c90612827565b600955565b6000546001600160a01b03163314610dd55760405162461bcd60e51b815260040161091c906127f2565b6001600160a01b03166000908152601c60205260409020805460ff19169055565b6000546001600160a01b03163314610e205760405162461bcd60e51b815260040161091c906127f2565b6024805462ff000019169055565b6000546001600160a01b03163314610e585760405162461bcd60e51b815260040161091c906127f2565b478015610e9a57600080546040516001600160a01b039091169183156108fc02918491818181858888f19350505050158015610e98573d6000803e3d6000fd5b505b50565b6000546001600160a01b03163314610ec75760405162461bcd60e51b815260040161091c906127f2565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610f3b5760405162461bcd60e51b815260040161091c906127f2565b6024805460ff19166001179055565b6000546001600160a01b03163314610f745760405162461bcd60e51b815260040161091c906127f2565b610f8d6c01431e0fae6d7217caa00000006103e8611b64565b811015610fac5760405162461bcd60e51b815260040161091c90612827565b600855565b6000546001600160a01b03163314610fdb5760405162461bcd60e51b815260040161091c906127f2565b601b55565b60006108e83384846115cf565b6000546001600160a01b031633146110175760405162461bcd60e51b815260040161091c906127f2565b306000908152600260205260409020548015610e9a57610e9a81611bad565b6000546001600160a01b031633146110605760405162461bcd60e51b815260040161091c906127f2565b602080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146110ac5760405162461bcd60e51b815260040161091c906127f2565b426005556006556024805460ff19166001179055565b6000546001600160a01b031633146110ec5760405162461bcd60e51b815260040161091c906127f2565b601f80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146111385760405162461bcd60e51b815260040161091c906127f2565b600a55565b6000546001600160a01b031633146111675760405162461bcd60e51b815260040161091c906127f2565b600061117f8261117985818989611d4c565b90611d4c565b905060648111156111ec5760405162461bcd60e51b815260206004820152603160248201527f53756d206f66206275792066656573206d757374206265206c657373207468616044820152706e206f7220657175616c20746f2031302560781b606482015260840161091c565b600f859055600b8490556011839055600d8290556010859055600c8490556012839055600e8290556040805186815260208101869052908101849052606081018390527f892b2caa2d791bf7b8d9a49c4db7a4513ff1ae2e0e068ed217f9d5ab4c1a28f0906080015b60405180910390a15050505050565b6000546001600160a01b0316331461128e5760405162461bcd60e51b815260040161091c906127f2565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b031633146112d95760405162461bcd60e51b815260040161091c906127f2565b6001600160a01b03811661133e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161091c565b610e9a81611dab565b6000546001600160a01b031633146113715760405162461bcd60e51b815260040161091c906127f2565b60006113838261117985818989611d4c565b905060788111156113f05760405162461bcd60e51b815260206004820152603160248201527f53756d206f66206275792066656573206d757374206265206c657373207468616044820152706e206f7220657175616c20746f2031322560781b606482015260840161091c565b601785905560138490556019839055601582905560188590556014849055601a83905560168290556040805186815260208101869052908101849052606081018390527f439932620c72dddea29980c098bca1a482729646d1216b226d723c6d278a30d190608001611255565b6000546001600160a01b031633146114875760405162461bcd60e51b815260040161091c906127f2565b6001600160a01b03166000908152601c60205260409020805460ff19166001179055565b6001600160a01b03831661150d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161091c565b6001600160a01b03821661156e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161091c565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166116335760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161091c565b6001600160a01b0382166116955760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161091c565b600081116116f75760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161091c565b600161170b6000546001600160a01b031690565b6001600160a01b0316846001600160a01b03161415801561173a57506000546001600160a01b03848116911614155b801561174f57506001600160a01b0384163014155b801561176457506001600160a01b0383163014155b15611ad05760245460ff166117b35760405162461bcd60e51b815260206004820152601560248201527454726164696e67206973206e6f742061637469766560581b604482015260640161091c565b6022546001600160a01b0385811691161480156117de57506021546001600160a01b03848116911614155b156118b2576006546005546117f291611d4c565b421161181c576001600160a01b0383166000908152601c60205260409020805460ff191660011790555b60075461184283611179866001600160a01b031660009081526002602052604090205490565b11156118605760405162461bcd60e51b815260040161091c9061278b565b6009548211156118b25760405162461bcd60e51b815260206004820181905260248201527f416d6f756e742065786365656473206d6178696d756d20627579206c696d6974604482015260640161091c565b602454610100900460ff161580156118d857506022546001600160a01b03858116911614155b80156118f157506022546001600160a01b038481169116145b15611a5b576001600160a01b0384166000908152601c602052604090205460ff1615801561193857506001600160a01b0383166000908152601c602052604090205460ff16155b61194157600080fd5b60085482111561199d5760405162461bcd60e51b815260206004820152602160248201527f416d6f756e742065786365656473206d6178696d756d2073656c6c206c696d696044820152601d60fa1b606482015260840161091c565b30600090815260026020526040902054600a548110611a59578015611a475760006119e1601354611179601554611179601954601754611d4c90919063ffffffff16565b1115611a47576000611a22611a0f601354611179601554611179601954601754611d4c90919063ffffffff16565b601354611a1c9085611dfb565b90611b64565b90506000818310611a3a57611a378383611e7a565b90505b611a448282611ebc565b50505b478015611a5757611a5747611f2f565b505b505b6022546001600160a01b03858116911614801590611a8757506022546001600160a01b03848116911614155b15611ad057600754611ab283611179866001600160a01b031660009081526002602052604090205490565b1115611ad05760405162461bcd60e51b815260040161091c9061278b565b6001600160a01b03841660009081526004602052604090205460ff1680611b0f57506001600160a01b03831660009081526004602052604090205460ff165b15611b18575060005b611b2484848484612075565b50505050565b60008184841115611b4e5760405162461bcd60e51b815260040161091c9190612738565b506000611b5b848661293f565b95945050505050565b6000611ba683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612113565b9392505050565b6024805461ff0019166101001790556040805160028082526060820183526000926020830190803683370190505090503081600081518110611bff57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152602154604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611c5357600080fd5b505afa158015611c67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c8b91906125cb565b81600181518110611cac57634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152602154611cd291309116846114ab565b60215460405163791ac94760e01b81526001600160a01b039091169063791ac94790611d0b908590600090869030904290600401612878565b600060405180830381600087803b158015611d2557600080fd5b505af1158015611d39573d6000803e3d6000fd5b50506024805461ff001916905550505050565b600080611d5983856128e8565b905083811015611ba65760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161091c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600082611e0a575060006108ec565b6000611e168385612920565b905082611e238583612900565b14611ba65760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161091c565b6000611ba683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b2a565b6024805461ff0019166101001790556000611ed8836002611b64565b90506000611ee68483611e7a565b905047611efb611ef68585611d4c565b611bad565b6000611f074783611e7a565b90508215611d3957611d3983611f2a611f208888611d4c565b611a1c8589611dfb565b612141565b6000611f4e601954611179601554601754611d4c90919063ffffffff16565b90508015610e98576000611f7182611a1c60175486611dfb90919063ffffffff16565b90506000611f8e83611a1c60195487611dfb90919063ffffffff16565b90506000611fa682611fa08786611e7a565b90611e7a565b90508215611fea57601d546040516001600160a01b039091169084156108fc029085906000818181858888f19350505050158015611fe8573d6000803e3d6000fd5b505b811561202c57601e546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801561202a573d6000803e3d6000fd5b505b801561206e57601f546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561206c573d6000803e3d6000fd5b505b5050505050565b806120d3576120d3600f8054601055600b8054600c5560118054601255600d8054600e5560009384905591839055829055819055601780546018556013805460145560198054601a5560158054601655928490559083905582905555565b6120de8484846121fd565b611b24601054600f55600c54600b55601254601155600e54600d55601854601755601454601355601a54601955601654601555565b600081836121345760405162461bcd60e51b815260040161091c9190612738565b506000611b5b8486612900565b6021546121599030906001600160a01b0316846114ab565b60215460205460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c4016060604051808303818588803b1580156121c457600080fd5b505af11580156121d8573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061206e91906126da565b61222f6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6022546001600160a01b03858116911614801561225a57506021546001600160a01b03848116911614155b156122ce5761227a6103e8611a1c600f5485611dfb90919063ffffffff16565b6020820152600b54612295906103e890611a1c908590611dfb565b81526011546122ad906103e890611a1c908590611dfb565b6040820152600d546122c8906103e890611a1c908590611dfb565b60608201525b6022546001600160a01b038581169116148015906122f957506022546001600160a01b038481169116145b1561236d576123196103e8611a1c60175485611dfb90919063ffffffff16565b6020820152601354612334906103e890611a1c908590611dfb565b815260195461234c906103e890611a1c908590611dfb565b6040820152601554612367906103e890611a1c908590611dfb565b60608201525b6022546001600160a01b0385811691161480159061239957506022546001600160a01b03848116911614155b15612453576123ca6064611a1c601b546123c46103e8611a1c60175489611dfb90919063ffffffff16565b90611dfb565b8160200181815250506123f96064611a1c601b546123c46103e8611a1c60135489611dfb90919063ffffffff16565b8152601b5460195461241e91606491611a1c91906123c4906103e89084908990611dfb565b81604001818152505061244d6064611a1c601b546123c46103e8611a1c60155489611dfb90919063ffffffff16565b60608201525b6124828160600151611fa08360400151611fa08560000151611fa0876020015189611e7a90919063ffffffff16565b60808201526001600160a01b0384166000908152600260205260409020546124aa9083611e7a565b6001600160a01b03808616600090815260026020526040808220939093556080840151918616815291909120546124e091611d4c565b60026000856001600160a01b03166001600160a01b031681526020019081526020016000208190555061254d6125378260600151611179846040015161117986600001518760200151611d4c90919063ffffffff16565b3060009081526002602052604090205490611d4c565b3060009081526002602090815260409182902092909255608083015190519081526001600160a01b0385811692908716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350505050565b6000602082840312156125c0578081fd5b8135611ba68161296c565b6000602082840312156125dc578081fd5b8151611ba68161296c565b600080604083850312156125f9578081fd5b82356126048161296c565b915060208301356126148161296c565b809150509250929050565b600080600060608486031215612633578081fd5b833561263e8161296c565b9250602084013561264e8161296c565b929592945050506040919091013590565b60008060408385031215612671578182fd5b823561267c8161296c565b946020939093013593505050565b60006020828403121561269b578081fd5b81518015158114611ba6578182fd5b6000602082840312156126bb578081fd5b5035919050565b6000602082840312156126d3578081fd5b5051919050565b6000806000606084860312156126ee578283fd5b8351925060208401519150604084015190509250925092565b6000806000806080858703121561271c578081fd5b5050823594602084013594506040840135936060013592509050565b6000602080835283518082850152825b8181101561276457858101830151858201604001528201612748565b818111156127755783604083870101525b50601f01601f1916929092016040019392505050565b60208082526041908201527f77616c6c65742062616c616e6365206166746572207472616e73666572206d7560408201527f7374206265206c657373207468616e206d61782077616c6c657420616d6f756e6060820152601d60fa1b608082015260a00190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526031908201527f63616e74206d616b6520746865206c696d6974206c6f776572207468616e20306040820152702e3125206f662074686520737570706c7960781b606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b818110156128c75784516001600160a01b0316835293830193918301916001016128a2565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156128fb576128fb612956565b500190565b60008261291b57634e487b7160e01b81526012600452602481fd5b500490565b600081600019048311821515161561293a5761293a612956565b500290565b60008282101561295157612951612956565b500390565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114610e9a57600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220eb61fb348261ea181f656a2ba8574c58b93b3da4da8f7137b0c7a00b35aa978764736f6c63430008040033

Deployed Bytecode

0x6080604052600436106102b25760003560e01c806372b2aecc11610175578063cab03471116100dc578063e315a6da11610095578063f2fde38b1161006f578063f2fde38b14610861578063f480fec214610881578063ffb54a99146108a1578063ffecf516146108bb57600080fd5b8063e315a6da14610801578063e4bf1bed14610821578063ea2f0b371461084157600080fd5b8063cab034711461072f578063cdb3858f14610745578063d163364914610765578063db0045ec14610785578063dc44b6a0146107a5578063dd62ed3e146107bb57600080fd5b8063a850673d1161012e578063a850673d14610698578063a9059cbb146106b8578063c3c8cd80146106d8578063c469b6dd146106ed578063c5d2418914610703578063c86079521461071957600080fd5b806372b2aecc146105ec57806388790a68146106025780638da5cb5b146106185780638e360253146106365780639164f9db1461064b57806395d89b411461066b57600080fd5b8063323be1c5116102195780635fecd926116101d25780635fecd926146105415780636aabff3f146105615780636c0a24eb146105765780636fc3eaec1461058c57806370a08231146105a1578063715018a6146105d757600080fd5b8063323be1c51461045b5780633bbac5791461047b5780633e0f966d146104b4578063437823ec146104c957806349bd5a5e146104e9578063588813041461052157600080fd5b806323b872dd1161026b57806323b872dd146103b3578063248dd232146103d357806327a14fc2146103e95780632843631d14610409578063294093951461041f578063313ce5671461043f57600080fd5b806301a6c43b146102be57806306fdde03146102e7578063095ea7b31461032157806314eb76ac1461035157806318160ddd146103735780632369bf831461039357600080fd5b366102b957005b600080fd5b3480156102ca57600080fd5b506102d4600a5481565b6040519081526020015b60405180910390f35b3480156102f357600080fd5b50604080518082019091526008815267426f6c7420496e7560c01b60208201525b6040516102de9190612738565b34801561032d57600080fd5b5061034161033c36600461265f565b6108db565b60405190151581526020016102de565b34801561035d57600080fd5b5061037161036c3660046125af565b6108f2565b005b34801561037f57600080fd5b506c01431e0fae6d7217caa00000006102d4565b34801561039f57600080fd5b506103716103ae3660046125af565b610947565b3480156103bf57600080fd5b506103416103ce36600461261f565b610993565b3480156103df57600080fd5b506102d460155481565b3480156103f557600080fd5b506103716104043660046126aa565b6109fc565b34801561041557600080fd5b506102d4600d5481565b34801561042b57600080fd5b5061037161043a3660046125af565b610b1c565b34801561044b57600080fd5b50604051601281526020016102de565b34801561046757600080fd5b506024546103419062010000900460ff1681565b34801561048757600080fd5b506103416104963660046125af565b6001600160a01b03166000908152601c602052604090205460ff1690565b3480156104c057600080fd5b50610371610c68565b3480156104d557600080fd5b506103716104e43660046125af565b610cf6565b3480156104f557600080fd5b50602254610509906001600160a01b031681565b6040516001600160a01b0390911681526020016102de565b34801561052d57600080fd5b5061037161053c3660046126aa565b610d44565b34801561054d57600080fd5b5061037161055c3660046125af565b610dab565b34801561056d57600080fd5b50610371610df6565b34801561058257600080fd5b506102d460075481565b34801561059857600080fd5b50610371610e2e565b3480156105ad57600080fd5b506102d46105bc3660046125af565b6001600160a01b031660009081526002602052604090205490565b3480156105e357600080fd5b50610371610e9d565b3480156105f857600080fd5b506102d4601b5481565b34801561060e57600080fd5b506102d460135481565b34801561062457600080fd5b506000546001600160a01b0316610509565b34801561064257600080fd5b50610371610f11565b34801561065757600080fd5b506103716106663660046126aa565b610f4a565b34801561067757600080fd5b506040805180820190915260048152631093d31560e21b6020820152610314565b3480156106a457600080fd5b506103716106b33660046126aa565b610fb1565b3480156106c457600080fd5b506103416106d336600461265f565b610fe0565b3480156106e457600080fd5b50610371610fed565b3480156106f957600080fd5b506102d460115481565b34801561070f57600080fd5b506102d4600f5481565b34801561072557600080fd5b506102d460175481565b34801561073b57600080fd5b506102d460195481565b34801561075157600080fd5b506103716107603660046125af565b611036565b34801561077157600080fd5b506103716107803660046126aa565b611082565b34801561079157600080fd5b506103716107a03660046125af565b6110c2565b3480156107b157600080fd5b506102d4600b5481565b3480156107c757600080fd5b506102d46107d63660046125e7565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561080d57600080fd5b5061037161081c3660046126aa565b61110e565b34801561082d57600080fd5b5061037161083c366004612707565b61113d565b34801561084d57600080fd5b5061037161085c3660046125af565b611264565b34801561086d57600080fd5b5061037161087c3660046125af565b6112af565b34801561088d57600080fd5b5061037161089c366004612707565b611347565b3480156108ad57600080fd5b506024546103419060ff1681565b3480156108c757600080fd5b506103716108d63660046125af565b61145d565b60006108e83384846114ab565b5060015b92915050565b6000546001600160a01b031633146109255760405162461bcd60e51b815260040161091c906127f2565b60405180910390fd5b601e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146109715760405162461bcd60e51b815260040161091c906127f2565b601d80546001600160a01b0319166001600160a01b0392909216919091179055565b60006109a08484846115cf565b6109f284336109ed85604051806060016040528060288152602001612982602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190611b2a565b6114ab565b5060019392505050565b6000546001600160a01b03163314610a265760405162461bcd60e51b815260040161091c906127f2565b610a3f6c01431e0fae6d7217caa00000006103e8611b64565b811015610aa15760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d7573742062652067726561746572207468616e20302e3125604482015269206f6620737570706c7960b01b606482015260840161091c565b6c01431e0fae6d7217caa0000000811115610b175760405162461bcd60e51b815260206004820152603060248201527f416d6f756e74206d757374206265206c657373207468616e206f72206571756160448201526f6c20746f20746f74616c537570706c7960801b606482015260840161091c565b600755565b6000546001600160a01b03163314610b465760405162461bcd60e51b815260040161091c906127f2565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a082319060240160206040518083038186803b158015610b8857600080fd5b505afa158015610b9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc091906126c2565b9050816001600160a01b031663a9059cbb610be36000546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101849052604401602060405180830381600087803b158015610c2b57600080fd5b505af1158015610c3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c63919061268a565b505050565b6000546001600160a01b03163314610c925760405162461bcd60e51b815260040161091c906127f2565b60245462010000900460ff16610cea5760405162461bcd60e51b815260206004820152601e60248201527f7468697320636f6e74726163742063616e6e6f74206265207061757365640000604482015260640161091c565b6024805460ff19169055565b6000546001600160a01b03163314610d205760405162461bcd60e51b815260040161091c906127f2565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000546001600160a01b03163314610d6e5760405162461bcd60e51b815260040161091c906127f2565b610d876c01431e0fae6d7217caa00000006103e8611b64565b811015610da65760405162461bcd60e51b815260040161091c90612827565b600955565b6000546001600160a01b03163314610dd55760405162461bcd60e51b815260040161091c906127f2565b6001600160a01b03166000908152601c60205260409020805460ff19169055565b6000546001600160a01b03163314610e205760405162461bcd60e51b815260040161091c906127f2565b6024805462ff000019169055565b6000546001600160a01b03163314610e585760405162461bcd60e51b815260040161091c906127f2565b478015610e9a57600080546040516001600160a01b039091169183156108fc02918491818181858888f19350505050158015610e98573d6000803e3d6000fd5b505b50565b6000546001600160a01b03163314610ec75760405162461bcd60e51b815260040161091c906127f2565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610f3b5760405162461bcd60e51b815260040161091c906127f2565b6024805460ff19166001179055565b6000546001600160a01b03163314610f745760405162461bcd60e51b815260040161091c906127f2565b610f8d6c01431e0fae6d7217caa00000006103e8611b64565b811015610fac5760405162461bcd60e51b815260040161091c90612827565b600855565b6000546001600160a01b03163314610fdb5760405162461bcd60e51b815260040161091c906127f2565b601b55565b60006108e83384846115cf565b6000546001600160a01b031633146110175760405162461bcd60e51b815260040161091c906127f2565b306000908152600260205260409020548015610e9a57610e9a81611bad565b6000546001600160a01b031633146110605760405162461bcd60e51b815260040161091c906127f2565b602080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146110ac5760405162461bcd60e51b815260040161091c906127f2565b426005556006556024805460ff19166001179055565b6000546001600160a01b031633146110ec5760405162461bcd60e51b815260040161091c906127f2565b601f80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146111385760405162461bcd60e51b815260040161091c906127f2565b600a55565b6000546001600160a01b031633146111675760405162461bcd60e51b815260040161091c906127f2565b600061117f8261117985818989611d4c565b90611d4c565b905060648111156111ec5760405162461bcd60e51b815260206004820152603160248201527f53756d206f66206275792066656573206d757374206265206c657373207468616044820152706e206f7220657175616c20746f2031302560781b606482015260840161091c565b600f859055600b8490556011839055600d8290556010859055600c8490556012839055600e8290556040805186815260208101869052908101849052606081018390527f892b2caa2d791bf7b8d9a49c4db7a4513ff1ae2e0e068ed217f9d5ab4c1a28f0906080015b60405180910390a15050505050565b6000546001600160a01b0316331461128e5760405162461bcd60e51b815260040161091c906127f2565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b031633146112d95760405162461bcd60e51b815260040161091c906127f2565b6001600160a01b03811661133e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161091c565b610e9a81611dab565b6000546001600160a01b031633146113715760405162461bcd60e51b815260040161091c906127f2565b60006113838261117985818989611d4c565b905060788111156113f05760405162461bcd60e51b815260206004820152603160248201527f53756d206f66206275792066656573206d757374206265206c657373207468616044820152706e206f7220657175616c20746f2031322560781b606482015260840161091c565b601785905560138490556019839055601582905560188590556014849055601a83905560168290556040805186815260208101869052908101849052606081018390527f439932620c72dddea29980c098bca1a482729646d1216b226d723c6d278a30d190608001611255565b6000546001600160a01b031633146114875760405162461bcd60e51b815260040161091c906127f2565b6001600160a01b03166000908152601c60205260409020805460ff19166001179055565b6001600160a01b03831661150d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161091c565b6001600160a01b03821661156e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161091c565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166116335760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161091c565b6001600160a01b0382166116955760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161091c565b600081116116f75760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161091c565b600161170b6000546001600160a01b031690565b6001600160a01b0316846001600160a01b03161415801561173a57506000546001600160a01b03848116911614155b801561174f57506001600160a01b0384163014155b801561176457506001600160a01b0383163014155b15611ad05760245460ff166117b35760405162461bcd60e51b815260206004820152601560248201527454726164696e67206973206e6f742061637469766560581b604482015260640161091c565b6022546001600160a01b0385811691161480156117de57506021546001600160a01b03848116911614155b156118b2576006546005546117f291611d4c565b421161181c576001600160a01b0383166000908152601c60205260409020805460ff191660011790555b60075461184283611179866001600160a01b031660009081526002602052604090205490565b11156118605760405162461bcd60e51b815260040161091c9061278b565b6009548211156118b25760405162461bcd60e51b815260206004820181905260248201527f416d6f756e742065786365656473206d6178696d756d20627579206c696d6974604482015260640161091c565b602454610100900460ff161580156118d857506022546001600160a01b03858116911614155b80156118f157506022546001600160a01b038481169116145b15611a5b576001600160a01b0384166000908152601c602052604090205460ff1615801561193857506001600160a01b0383166000908152601c602052604090205460ff16155b61194157600080fd5b60085482111561199d5760405162461bcd60e51b815260206004820152602160248201527f416d6f756e742065786365656473206d6178696d756d2073656c6c206c696d696044820152601d60fa1b606482015260840161091c565b30600090815260026020526040902054600a548110611a59578015611a475760006119e1601354611179601554611179601954601754611d4c90919063ffffffff16565b1115611a47576000611a22611a0f601354611179601554611179601954601754611d4c90919063ffffffff16565b601354611a1c9085611dfb565b90611b64565b90506000818310611a3a57611a378383611e7a565b90505b611a448282611ebc565b50505b478015611a5757611a5747611f2f565b505b505b6022546001600160a01b03858116911614801590611a8757506022546001600160a01b03848116911614155b15611ad057600754611ab283611179866001600160a01b031660009081526002602052604090205490565b1115611ad05760405162461bcd60e51b815260040161091c9061278b565b6001600160a01b03841660009081526004602052604090205460ff1680611b0f57506001600160a01b03831660009081526004602052604090205460ff165b15611b18575060005b611b2484848484612075565b50505050565b60008184841115611b4e5760405162461bcd60e51b815260040161091c9190612738565b506000611b5b848661293f565b95945050505050565b6000611ba683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612113565b9392505050565b6024805461ff0019166101001790556040805160028082526060820183526000926020830190803683370190505090503081600081518110611bff57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152602154604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611c5357600080fd5b505afa158015611c67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c8b91906125cb565b81600181518110611cac57634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152602154611cd291309116846114ab565b60215460405163791ac94760e01b81526001600160a01b039091169063791ac94790611d0b908590600090869030904290600401612878565b600060405180830381600087803b158015611d2557600080fd5b505af1158015611d39573d6000803e3d6000fd5b50506024805461ff001916905550505050565b600080611d5983856128e8565b905083811015611ba65760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161091c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600082611e0a575060006108ec565b6000611e168385612920565b905082611e238583612900565b14611ba65760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161091c565b6000611ba683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b2a565b6024805461ff0019166101001790556000611ed8836002611b64565b90506000611ee68483611e7a565b905047611efb611ef68585611d4c565b611bad565b6000611f074783611e7a565b90508215611d3957611d3983611f2a611f208888611d4c565b611a1c8589611dfb565b612141565b6000611f4e601954611179601554601754611d4c90919063ffffffff16565b90508015610e98576000611f7182611a1c60175486611dfb90919063ffffffff16565b90506000611f8e83611a1c60195487611dfb90919063ffffffff16565b90506000611fa682611fa08786611e7a565b90611e7a565b90508215611fea57601d546040516001600160a01b039091169084156108fc029085906000818181858888f19350505050158015611fe8573d6000803e3d6000fd5b505b811561202c57601e546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801561202a573d6000803e3d6000fd5b505b801561206e57601f546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561206c573d6000803e3d6000fd5b505b5050505050565b806120d3576120d3600f8054601055600b8054600c5560118054601255600d8054600e5560009384905591839055829055819055601780546018556013805460145560198054601a5560158054601655928490559083905582905555565b6120de8484846121fd565b611b24601054600f55600c54600b55601254601155600e54600d55601854601755601454601355601a54601955601654601555565b600081836121345760405162461bcd60e51b815260040161091c9190612738565b506000611b5b8486612900565b6021546121599030906001600160a01b0316846114ab565b60215460205460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c4016060604051808303818588803b1580156121c457600080fd5b505af11580156121d8573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061206e91906126da565b61222f6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6022546001600160a01b03858116911614801561225a57506021546001600160a01b03848116911614155b156122ce5761227a6103e8611a1c600f5485611dfb90919063ffffffff16565b6020820152600b54612295906103e890611a1c908590611dfb565b81526011546122ad906103e890611a1c908590611dfb565b6040820152600d546122c8906103e890611a1c908590611dfb565b60608201525b6022546001600160a01b038581169116148015906122f957506022546001600160a01b038481169116145b1561236d576123196103e8611a1c60175485611dfb90919063ffffffff16565b6020820152601354612334906103e890611a1c908590611dfb565b815260195461234c906103e890611a1c908590611dfb565b6040820152601554612367906103e890611a1c908590611dfb565b60608201525b6022546001600160a01b0385811691161480159061239957506022546001600160a01b03848116911614155b15612453576123ca6064611a1c601b546123c46103e8611a1c60175489611dfb90919063ffffffff16565b90611dfb565b8160200181815250506123f96064611a1c601b546123c46103e8611a1c60135489611dfb90919063ffffffff16565b8152601b5460195461241e91606491611a1c91906123c4906103e89084908990611dfb565b81604001818152505061244d6064611a1c601b546123c46103e8611a1c60155489611dfb90919063ffffffff16565b60608201525b6124828160600151611fa08360400151611fa08560000151611fa0876020015189611e7a90919063ffffffff16565b60808201526001600160a01b0384166000908152600260205260409020546124aa9083611e7a565b6001600160a01b03808616600090815260026020526040808220939093556080840151918616815291909120546124e091611d4c565b60026000856001600160a01b03166001600160a01b031681526020019081526020016000208190555061254d6125378260600151611179846040015161117986600001518760200151611d4c90919063ffffffff16565b3060009081526002602052604090205490611d4c565b3060009081526002602090815260409182902092909255608083015190519081526001600160a01b0385811692908716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350505050565b6000602082840312156125c0578081fd5b8135611ba68161296c565b6000602082840312156125dc578081fd5b8151611ba68161296c565b600080604083850312156125f9578081fd5b82356126048161296c565b915060208301356126148161296c565b809150509250929050565b600080600060608486031215612633578081fd5b833561263e8161296c565b9250602084013561264e8161296c565b929592945050506040919091013590565b60008060408385031215612671578182fd5b823561267c8161296c565b946020939093013593505050565b60006020828403121561269b578081fd5b81518015158114611ba6578182fd5b6000602082840312156126bb578081fd5b5035919050565b6000602082840312156126d3578081fd5b5051919050565b6000806000606084860312156126ee578283fd5b8351925060208401519150604084015190509250925092565b6000806000806080858703121561271c578081fd5b5050823594602084013594506040840135936060013592509050565b6000602080835283518082850152825b8181101561276457858101830151858201604001528201612748565b818111156127755783604083870101525b50601f01601f1916929092016040019392505050565b60208082526041908201527f77616c6c65742062616c616e6365206166746572207472616e73666572206d7560408201527f7374206265206c657373207468616e206d61782077616c6c657420616d6f756e6060820152601d60fa1b608082015260a00190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526031908201527f63616e74206d616b6520746865206c696d6974206c6f776572207468616e20306040820152702e3125206f662074686520737570706c7960781b606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b818110156128c75784516001600160a01b0316835293830193918301916001016128a2565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156128fb576128fb612956565b500190565b60008261291b57634e487b7160e01b81526012600452602481fd5b500490565b600081600019048311821515161561293a5761293a612956565b500290565b60008282101561295157612951612956565b500390565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114610e9a57600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220eb61fb348261ea181f656a2ba8574c58b93b3da4da8f7137b0c7a00b35aa978764736f6c63430008040033

Deployed Bytecode Sourcemap

7852:19436:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8523:51;;;;;;;;;;;;;;;;;;;13068:25:1;;;13056:2;13041:18;8523:51:0;;;;;;;;11810:94;;;;;;;;;;-1:-1:-1;11891:5:0;;;;;;;;;;;;-1:-1:-1;;;11891:5:0;;;;11810:94;;;;;;;:::i;12792:163::-;;;;;;;;;;-1:-1:-1;12792:163:0;;;;;:::i;:::-;;:::i;:::-;;;4705:14:1;;4698:22;4680:41;;4668:2;4653:18;12792:163:0;4635:92:1;26907:122:0;;;;;;;;;;-1:-1:-1;26907:122:0;;;;;:::i;:::-;;:::i;:::-;;12120:97;;;;;;;;;;-1:-1:-1;8314:21:0;12120:97;;26753:142;;;;;;;;;;-1:-1:-1;26753:142:0;;;;;:::i;:::-;;:::i;12963:312::-;;;;;;;;;;-1:-1:-1;12963:312:0;;;;;:::i;:::-;;:::i;9251:36::-;;;;;;;;;;;;;;;;24257:327;;;;;;;;;;-1:-1:-1;24257:327:0;;;;;:::i;:::-;;:::i;8735:35::-;;;;;;;;;;;;;;;;21269:185;;;;;;;;;;-1:-1:-1;21269:185:0;;;;;:::i;:::-;;:::i;12018:94::-;;;;;;;;;;-1:-1:-1;12018:94:0;;8084:2;14630:36:1;;14618:2;14603:18;12018:94:0;14585:87:1;10453:27:0;;;;;;;;;;-1:-1:-1;10453:27:0;;;;;;;;;;;12352:98;;;;;;;;;;-1:-1:-1;12352:98:0;;;;;:::i;:::-;-1:-1:-1;;;;;12429:13:0;12405:4;12429:13;;;:4;:13;;;;;;;;;12352:98;20567:145;;;;;;;;;;;;;:::i;23650:113::-;;;;;;;;;;-1:-1:-1;23650:113:0;;;;;:::i;:::-;;:::i;10309:28::-;;;;;;;;;;-1:-1:-1;10309:28:0;;;;-1:-1:-1;;;;;10309:28:0;;;;;;-1:-1:-1;;;;;3597:32:1;;;3579:51;;3567:2;3552:18;10309:28:0;3534:102:1;26396:195:0;;;;;;;;;;-1:-1:-1;26396:195:0;;;;;:::i;:::-;;:::i;23897:97::-;;;;;;;;;;-1:-1:-1;23897:97:0;;;;;:::i;:::-;;:::i;20720:87::-;;;;;;;;;;;;;:::i;8424:31::-;;;;;;;;;;;;;;;;21030:231;;;;;;;;;;;;;:::i;12225:119::-;;;;;;;;;;-1:-1:-1;12225:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;12318:18:0;12291:7;12318:18;;;:9;:18;;;;;;;12225:119;3423:150;;;;;;;;;;;;;:::i;9626:46::-;;;;;;;;;;;;;;;;9121:36;;;;;;;;;;;;;;;;2498:79;;;;;;;;;;-1:-1:-1;2536:7:0;2563:6;-1:-1:-1;;;;;2563:6:0;2498:79;;20478:81;;;;;;;;;;;;;:::i;26184:200::-;;;;;;;;;;-1:-1:-1;26184:200:0;;;;;:::i;:::-;;:::i;11912:98::-;;;;;;;;;;-1:-1:-1;11995:7:0;;;;;;;;;;;;-1:-1:-1;;;11995:7:0;;;;11912:98;;24107:142;;;;;;;;;;-1:-1:-1;24107:142:0;;;;;:::i;:::-;;:::i;12462:169::-;;;;;;;;;;-1:-1:-1;12462:169:0;;;;;:::i;:::-;;:::i;20815:207::-;;;;;;;;;;;;;:::i;8989:30::-;;;;;;;;;;;;;;;;8862:35;;;;;;;;;;;;;;;;9381:36;;;;;;;;;;;;;;;;9511:31;;;;;;;;;;;;;;;;27038:122;;;;;;;;;;-1:-1:-1;27038:122:0;;;;;:::i;:::-;;:::i;20299:171::-;;;;;;;;;;-1:-1:-1;20299:171:0;;;;;:::i;:::-;;:::i;26599:142::-;;;;;;;;;;-1:-1:-1;26599:142:0;;;;;:::i;:::-;;:::i;8608:35::-;;;;;;;;;;;;;;;;12639:145;;;;;;;;;;-1:-1:-1;12639:145:0;;;;;:::i;:::-;-1:-1:-1;;;;;12749:18:0;;;12722:7;12749:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;12639:145;27168:117;;;;;;;;;;-1:-1:-1;27168:117:0;;;;;:::i;:::-;;:::i;24592:779::-;;;;;;;;;;-1:-1:-1;24592:779:0;;;;;:::i;:::-;;:::i;23771:114::-;;;;;;;;;;-1:-1:-1;23771:114:0;;;;;:::i;:::-;;:::i;2859:201::-;;;;;;;;;;-1:-1:-1;2859:201:0;;;;;:::i;:::-;;:::i;25379:793::-;;;;;;;;;;-1:-1:-1;25379:793:0;;;;;:::i;:::-;;:::i;10381:31::-;;;;;;;;;;-1:-1:-1;10381:31:0;;;;;;;;24002:93;;;;;;;;;;-1:-1:-1;24002:93:0;;;;;:::i;:::-;;:::i;12792:163::-;12869:4;12886:39;299:10;12909:7;12918:6;12886:8;:39::i;:::-;-1:-1:-1;12943:4:0;12792:163;;;;;:::o;26907:122::-;2625:6;;-1:-1:-1;;;;;2625:6:0;299:10;2625:22;2617:67;;;;-1:-1:-1;;;2617:67:0;;;;;;;:::i;:::-;;;;;;;;;26995:12:::1;:26:::0;;-1:-1:-1;;;;;;26995:26:0::1;-1:-1:-1::0;;;;;26995:26:0;;;::::1;::::0;;;::::1;::::0;;26907:122::o;26753:142::-;2625:6;;-1:-1:-1;;;;;2625:6:0;299:10;2625:22;2617:67;;;;-1:-1:-1;;;2617:67:0;;;;;;;:::i;:::-;26851:17:::1;:36:::0;;-1:-1:-1;;;;;;26851:36:0::1;-1:-1:-1::0;;;;;26851:36:0;;;::::1;::::0;;;::::1;::::0;;26753:142::o;12963:312::-;13063:4;13080:36;13090:6;13098:9;13109:6;13080:9;:36::i;:::-;13127:118;13136:6;299:10;13156:88;13194:6;13156:88;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13156:19:0;;;;;;:11;:19;;;;;;;;299:10;13156:33;;;;;;;;;;:37;:88::i;:::-;13127:8;:118::i;:::-;-1:-1:-1;13263:4:0;12963:312;;;;;:::o;24257:327::-;2625:6;;-1:-1:-1;;;;;2625:6:0;299:10;2625:22;2617:67;;;;-1:-1:-1;;;2617:67:0;;;;;;;:::i;:::-;24369:17:::1;8314:21;24381:4;24369:11;:17::i;:::-;24350:15;:36;;24342:91;;;::::0;-1:-1:-1;;;24342:91:0;;8641:2:1;24342:91:0::1;::::0;::::1;8623:21:1::0;8680:2;8660:18;;;8653:30;8719:34;8699:18;;;8692:62;-1:-1:-1;;;8770:18:1;;;8763:40;8820:19;;24342:91:0::1;8613:232:1::0;24342:91:0::1;8314:21;24452:15;:26;;24444:87;;;::::0;-1:-1:-1;;;24444:87:0;;11535:2:1;24444:87:0::1;::::0;::::1;11517:21:1::0;11574:2;11554:18;;;11547:30;11613:34;11593:18;;;11586:62;-1:-1:-1;;;11664:18:1;;;11657:46;11720:19;;24444:87:0::1;11507:238:1::0;24444:87:0::1;24542:16;:34:::0;24257:327::o;21269:185::-;2625:6;;-1:-1:-1;;;;;2625:6:0;299:10;2625:22;2617:67;;;;-1:-1:-1;;;2617:67:0;;;;;;;:::i;:::-;21358:38:::1;::::0;-1:-1:-1;;;21358:38:0;;21390:4:::1;21358:38;::::0;::::1;3579:51:1::0;21341:14:0::1;::::0;-1:-1:-1;;;;;21358:23:0;::::1;::::0;::::1;::::0;3552:18:1;;21358:38:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21341:55;;21414:5;-1:-1:-1::0;;;;;21407:22:0::1;;21430:7;2536::::0;2563:6;-1:-1:-1;;;;;2563:6:0;;2498:79;21430:7:::1;21407:39;::::0;-1:-1:-1;;;;;;21407:39:0::1;::::0;;;;;;-1:-1:-1;;;;;3833:32:1;;;21407:39:0::1;::::0;::::1;3815:51:1::0;3882:18;;;3875:34;;;3788:18;;21407:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2695:1;21269:185:::0;:::o;20567:145::-;2625:6;;-1:-1:-1;;;;;2625:6:0;299:10;2625:22;2617:67;;;;-1:-1:-1;;;2617:67:0;;;;;;;:::i;:::-;20631:8:::1;::::0;;;::::1;;;20623:51;;;::::0;-1:-1:-1;;;20623:51:0;;5542:2:1;20623:51:0::1;::::0;::::1;5524:21:1::0;5581:2;5561:18;;;5554:30;5620:32;5600:18;;;5593:60;5670:18;;20623:51:0::1;5514:180:1::0;20623:51:0::1;20685:11;:19:::0;;-1:-1:-1;;20685:19:0::1;::::0;;20567:145::o;23650:113::-;2625:6;;-1:-1:-1;;;;;2625:6:0;299:10;2625:22;2617:67;;;;-1:-1:-1;;;2617:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23721:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;23721:34:0::1;23751:4;23721:34;::::0;;23650:113::o;26396:195::-;2625:6;;-1:-1:-1;;;;;2625:6:0;299:10;2625:22;2617:67;;;;-1:-1:-1;;;2617:67:0;;;;;;;:::i;:::-;26484:17:::1;8314:21;26496:4;26484:11;:17::i;:::-;26474:6;:27;;26466:90;;;;-1:-1:-1::0;;;26466:90:0::1;;;;;;;:::i;:::-;26567:7;:16:::0;26396:195::o;23897:97::-;2625:6;;-1:-1:-1;;;;;2625:6:0;299:10;2625:22;2617:67;;;;-1:-1:-1;;;2617:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23965:13:0::1;23981:5;23965:13:::0;;;:4:::1;:13;::::0;;;;:21;;-1:-1:-1;;23965:21:0::1;::::0;;23897:97::o;20720:87::-;2625:6;;-1:-1:-1;;;;;2625:6:0;299:10;2625:22;2617:67;;;;-1:-1:-1;;;2617:67:0;;;;;;;:::i;:::-;20783:8:::1;:16:::0;;-1:-1:-1;;20783:16:0::1;::::0;;20720:87::o;21030:231::-;2625:6;;-1:-1:-1;;;;;2625:6:0;299:10;2625:22;2617:67;;;;-1:-1:-1;;;2617:67:0;;;;;;;:::i;:::-;21113:21:::1;21149:22:::0;;21145:109:::1;;2536:7:::0;2563:6;;21188:54:::1;::::0;-1:-1:-1;;;;;2563:6:0;;;;21188:54;::::1;;;::::0;21223:18;;21188:54;2536:7;21188:54;21223:18;2563:6;21188:54;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;21145:109;2695:1;21030:231::o:0;3423:150::-;2625:6;;-1:-1:-1;;;;;2625:6:0;299:10;2625:22;2617:67;;;;-1:-1:-1;;;2617:67:0;;;;;;;:::i;:::-;3532:1:::1;3516:6:::0;;3495:40:::1;::::0;-1:-1:-1;;;;;3516:6:0;;::::1;::::0;3495:40:::1;::::0;3532:1;;3495:40:::1;3563:1;3546:19:::0;;-1:-1:-1;;;;;;3546:19:0::1;::::0;;3423:150::o;20478:81::-;2625:6;;-1:-1:-1;;;;;2625:6:0;299:10;2625:22;2617:67;;;;-1:-1:-1;;;2617:67:0;;;;;;;:::i;:::-;20533:11:::1;:18:::0;;-1:-1:-1;;20533:18:0::1;20547:4;20533:18;::::0;;20478:81::o;26184:200::-;2625:6;;-1:-1:-1;;;;;2625:6:0;299:10;2625:22;2617:67;;;;-1:-1:-1;;;2617:67:0;;;;;;;:::i;:::-;26275:17:::1;8314:21;26287:4;26275:11;:17::i;:::-;26264:7;:28;;26256:91;;;;-1:-1:-1::0;;;26256:91:0::1;;;;;;;:::i;:::-;26358:8;:18:::0;26184:200::o;24107:142::-;2625:6;;-1:-1:-1;;;;;2625:6:0;299:10;2625:22;2617:67;;;;-1:-1:-1;;;2617:67:0;;;;;;;:::i;:::-;24202:25:::1;:39:::0;24107:142::o;12462:169::-;12542:4;12559:42;299:10;12583:9;12594:6;12559:9;:42::i;20815:207::-;2625:6;;-1:-1:-1;;;;;2625:6:0;299:10;2625:22;2617:67;;;;-1:-1:-1;;;2617:67:0;;;;;;;:::i;:::-;20913:4:::1;20869:23;12318:18:::0;;;:9;:18;;;;;;20934:19;;20930:85:::1;;20970:33;20987:15;20970:16;:33::i;27038:122::-:0;2625:6;;-1:-1:-1;;;;;2625:6:0;299:10;2625:22;2617:67;;;;-1:-1:-1;;;2617:67:0;;;;;;;:::i;:::-;27126:12:::1;:26:::0;;-1:-1:-1;;;;;;27126:26:0::1;-1:-1:-1::0;;;;;27126:26:0;;;::::1;::::0;;;::::1;::::0;;27038:122::o;20299:171::-;2625:6;;-1:-1:-1;;;;;2625:6:0;299:10;2625:22;2617:67;;;;-1:-1:-1;;;2617:67:0;;;;;;;:::i;:::-;20385:15:::1;20371:11;:29:::0;20411:10:::1;:22:::0;20444:11:::1;:18:::0;;-1:-1:-1;;20444:18:0::1;20458:4;20444:18;::::0;;20299:171::o;26599:142::-;2625:6;;-1:-1:-1;;;;;2625:6:0;299:10;2625:22;2617:67;;;;-1:-1:-1;;;2617:67:0;;;;;;;:::i;:::-;26697:17:::1;:36:::0;;-1:-1:-1;;;;;;26697:36:0::1;-1:-1:-1::0;;;;;26697:36:0;;;::::1;::::0;;;::::1;::::0;;26599:142::o;27168:117::-;2625:6;;-1:-1:-1;;;;;2625:6:0;299:10;2625:22;2617:67;;;;-1:-1:-1;;;2617:67:0;;;;;;;:::i;:::-;27250:15:::1;:27:::0;27168:117::o;24592:779::-;2625:6;;-1:-1:-1;;;;;2625:6:0;299:10;2625:22;2617:67;;;;-1:-1:-1;;;2617:67:0;;;;;;;:::i;:::-;24728:16:::1;24747:61;24795:12:::0;24747:43:::1;24782:7:::0;24747:43;:12;24764;24747:16:::1;:30::i;:::-;:34:::0;::::1;:43::i;:61::-;24728:80;;24839:3;24827:8;:15;;24819:77;;;::::0;-1:-1:-1;;;24819:77:0;;11117:2:1;24819:77:0::1;::::0;::::1;11099:21:1::0;11156:2;11136:18;;;11129:30;11195:34;11175:18;;;11168:62;-1:-1:-1;;;11246:18:1;;;11239:47;11303:19;;24819:77:0::1;11089:239:1::0;24819:77:0::1;24909:16;:31:::0;;;24951:16:::1;:31:::0;;;24993:11:::1;:21:::0;;;25025:16:::1;:31:::0;;;25077:24:::1;:43:::0;;;25131:24:::1;:43:::0;;;25185:19:::1;:33:::0;;;25229:24:::1;:43:::0;;;25298:65:::1;::::0;;14323:25:1;;;14379:2;14364:18;;14357:34;;;14407:18;;;14400:34;;;14465:2;14450:18;;14443:34;;;25298:65:0::1;::::0;14310:3:1;14295:19;25298:65:0::1;;;;;;;;2695:1;24592:779:::0;;;;:::o;23771:114::-;2625:6;;-1:-1:-1;;;;;2625:6:0;299:10;2625:22;2617:67;;;;-1:-1:-1;;;2617:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23842:27:0::1;23872:5;23842:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;23842:35:0::1;::::0;;23771:114::o;2859:201::-;2625:6;;-1:-1:-1;;;;;2625:6:0;299:10;2625:22;2617:67;;;;-1:-1:-1;;;2617:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2948:22:0;::::1;2940:73;;;::::0;-1:-1:-1;;;2940:73:0;;7073:2:1;2940:73:0::1;::::0;::::1;7055:21:1::0;7112:2;7092:18;;;7085:30;7151:34;7131:18;;;7124:62;-1:-1:-1;;;7202:18:1;;;7195:36;7248:19;;2940:73:0::1;7045:228:1::0;2940:73:0::1;3024:28;3043:8;3024:18;:28::i;25379:793::-:0;2625:6;;-1:-1:-1;;;;;2625:6:0;299:10;2625:22;2617:67;;;;-1:-1:-1;;;2617:67:0;;;;;;;:::i;:::-;25516:16:::1;25535:61;25583:12:::0;25535:43:::1;25570:7:::0;25535:43;:12;25552;25535:16:::1;:30::i;:61::-;25516:80;;25627:3;25615:8;:15;;25607:77;;;::::0;-1:-1:-1;;;25607:77:0;;5901:2:1;25607:77:0::1;::::0;::::1;5883:21:1::0;5940:2;5920:18;;;5913:30;5979:34;5959:18;;;5952:62;-1:-1:-1;;;6030:18:1;;;6023:47;6087:19;;25607:77:0::1;5873:239:1::0;25607:77:0::1;25697:17;:32:::0;;;25740:17:::1;:32:::0;;;25783:12:::1;:22:::0;;;25816:17:::1;:32:::0;;;25869:25:::1;:45:::0;;;25925:25:::1;:45:::0;;;25981:20:::1;:35:::0;;;26027:25:::1;:45:::0;;;26098:66:::1;::::0;;14323:25:1;;;14379:2;14364:18;;14357:34;;;14407:18;;;14400:34;;;14465:2;14450:18;;14443:34;;;26098:66:0::1;::::0;14310:3:1;14295:19;26098:66:0::1;14277:206:1::0;24002:93:0;2625:6;;-1:-1:-1;;;;;2625:6:0;299:10;2625:22;2617:67;;;;-1:-1:-1;;;2617:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24067:13:0::1;;::::0;;;:4:::1;:13;::::0;;;;:20;;-1:-1:-1;;24067:20:0::1;24083:4;24067:20;::::0;;24002:93::o;14490:335::-;-1:-1:-1;;;;;14583:19:0;;14575:68;;;;-1:-1:-1;;;14575:68:0;;12719:2:1;14575:68:0;;;12701:21:1;12758:2;12738:18;;;12731:30;12797:34;12777:18;;;12770:62;-1:-1:-1;;;12848:18:1;;;12841:34;12892:19;;14575:68:0;12691:226:1;14575:68:0;-1:-1:-1;;;;;14662:21:0;;14654:68;;;;-1:-1:-1;;;14654:68:0;;7480:2:1;14654:68:0;;;7462:21:1;7519:2;7499:18;;;7492:30;7558:34;7538:18;;;7531:62;-1:-1:-1;;;7609:18:1;;;7602:32;7651:19;;14654:68:0;7452:224:1;14654:68:0;-1:-1:-1;;;;;14733:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;14785:32;;13068:25:1;;;14785:32:0;;13041:18:1;14785:32:0;;;;;;;14490:335;;;:::o;14838:2751::-;-1:-1:-1;;;;;14926:18:0;;14918:68;;;;-1:-1:-1;;;14918:68:0;;12313:2:1;14918:68:0;;;12295:21:1;12352:2;12332:18;;;12325:30;12391:34;12371:18;;;12364:62;-1:-1:-1;;;12442:18:1;;;12435:35;12487:19;;14918:68:0;12285:227:1;14918:68:0;-1:-1:-1;;;;;15005:16:0;;14997:64;;;;-1:-1:-1;;;14997:64:0;;6319:2:1;14997:64:0;;;6301:21:1;6358:2;6338:18;;;6331:30;6397:34;6377:18;;;6370:62;-1:-1:-1;;;6448:18:1;;;6441:33;6491:19;;14997:64:0;6291:225:1;14997:64:0;15089:1;15080:6;:10;15072:64;;;;-1:-1:-1;;;15072:64:0;;10289:2:1;15072:64:0;;;10271:21:1;10328:2;10308:18;;;10301:30;10367:34;10347:18;;;10340:62;-1:-1:-1;;;10418:18:1;;;10411:39;10467:19;;15072:64:0;10261:231:1;15072:64:0;15164:4;15193:7;2536;2563:6;-1:-1:-1;;;;;2563:6:0;;2498:79;15193:7;-1:-1:-1;;;;;15185:15:0;:4;-1:-1:-1;;;;;15185:15:0;;;:32;;;;-1:-1:-1;2536:7:0;2563:6;-1:-1:-1;;;;;15204:13:0;;;2563:6;;15204:13;;15185:32;:57;;;;-1:-1:-1;;;;;;15221:21:0;;15237:4;15221:21;;15185:57;:80;;;;-1:-1:-1;;;;;;15246:19:0;;15260:4;15246:19;;15185:80;15181:2229;;;15290:11;;;;15282:45;;;;-1:-1:-1;;;15282:45:0;;6723:2:1;15282:45:0;;;6705:21:1;6762:2;6742:18;;;6735:30;-1:-1:-1;;;6781:18:1;;;6774:51;6842:18;;15282:45:0;6695:171:1;15282:45:0;15354:13;;-1:-1:-1;;;;;15346:21:0;;;15354:13;;15346:21;:55;;;;-1:-1:-1;15385:15:0;;-1:-1:-1;;;;;15371:30:0;;;15385:15;;15371:30;;15346:55;15342:436;;;15469:10;;15453:11;;:27;;:15;:27::i;:::-;15434:15;:46;15430:110;;-1:-1:-1;;;;;15505:8:0;;;;;;:4;:8;;;;;:15;;-1:-1:-1;;15505:15:0;15516:4;15505:15;;;15430:110;15595:16;;15566:25;15584:6;15566:13;15576:2;-1:-1:-1;;;;;12318:18:0;12291:7;12318:18;;;:9;:18;;;;;;;12225:119;15566:25;:45;;15558:123;;;;-1:-1:-1;;;15558:123:0;;;;;;;:::i;:::-;15718:7;;15708:6;:17;;15700:62;;;;-1:-1:-1;;;15700:62:0;;11952:2:1;15700:62:0;;;11934:21:1;;;11971:18;;;11964:30;12030:34;12010:18;;;12003:62;12082:18;;15700:62:0;11924:182:1;15700:62:0;15811:6;;;;;;;15810:7;:32;;;;-1:-1:-1;15829:13:0;;-1:-1:-1;;;;;15821:21:0;;;15829:13;;15821:21;;15810:32;:55;;;;-1:-1:-1;15852:13:0;;-1:-1:-1;;;;;15846:19:0;;;15852:13;;15846:19;15810:55;15806:1338;;;-1:-1:-1;;;;;15903:10:0;;;;;;:4;:10;;;;;;;;15902:11;:24;;;;-1:-1:-1;;;;;;15918:8:0;;;;;;:4;:8;;;;;;;;15917:9;15902:24;15894:33;;;;;;15964:8;;15954:6;:18;;15946:64;;;;-1:-1:-1;;;15946:64:0;;8239:2:1;15946:64:0;;;8221:21:1;8278:2;8258:18;;;8251:30;8317:34;8297:18;;;8290:62;-1:-1:-1;;;8368:18:1;;;8361:31;8409:19;;15946:64:0;8211:223:1;15946:64:0;16096:4;16047:28;12318:18;;;:9;:18;;;;;;16151:15;;16127:39;;16123:984;;16195:24;;16191:688;;16336:1;16252:81;16315:17;;16252:58;16292:17;;16252:35;16274:12;;16252:17;;:21;;:35;;;;:::i;:81::-;:85;16248:608;;;16370:20;16393:130;16441:81;16504:17;;16441:58;16481:17;;16441:35;16463:12;;16441:17;;:21;;:35;;;;:::i;:81::-;16393:17;;:43;;16415:20;16393:21;:43::i;:::-;:47;;:130::i;:::-;16370:153;;16554:15;16632:12;16608:20;:36;16604:157;;16691:38;:20;16716:12;16691:24;:38::i;:::-;16681:48;;16604:157;16791:37;16806:12;16820:7;16791:14;:37::i;:::-;16248:608;;;16930:21;16978:22;;16974:114;;17029:35;17042:21;17029:12;:35::i;:::-;16123:984;;15806:1338;;17171:13;;-1:-1:-1;;;;;17163:21:0;;;17171:13;;17163:21;;;;:44;;-1:-1:-1;17194:13:0;;-1:-1:-1;;;;;17188:19:0;;;17194:13;;17188:19;;17163:44;17160:239;;;17295:16;;17266:25;17284:6;17266:13;17276:2;-1:-1:-1;;;;;12318:18:0;12291:7;12318:18;;;:9;:18;;;;;;;12225:119;17266:25;:45;;17258:123;;;;-1:-1:-1;;;17258:123:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17426:24:0;;;;;;:18;:24;;;;;;;;;:50;;-1:-1:-1;;;;;;17454:22:0;;;;;;:18;:22;;;;;;;;17426:50;17422:98;;;-1:-1:-1;17503:5:0;17422:98;17540:41;17555:4;17561:2;17565:6;17573:7;17540:14;:41::i;:::-;14838:2751;;;;:::o;1356:190::-;1442:7;1478:12;1470:6;;;;1462:29;;;;-1:-1:-1;;;1462:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1502:9:0;1514:5;1518:1;1514;:5;:::i;:::-;1502:17;1356:190;-1:-1:-1;;;;;1356:190:0:o;1808:132::-;1866:7;1893:39;1897:1;1900;1893:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1886:46;1808:132;-1:-1:-1;;;1808:132:0:o;17600:407::-;10833:6;:13;;-1:-1:-1;;10833:13:0;;;;;17702:16:::1;::::0;;17716:1:::1;17702:16:::0;;;;;::::1;::::0;;-1:-1:-1;;17702:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;17702:16:0::1;17678:40;;17747:4;17729;17734:1;17729:7;;;;;;-1:-1:-1::0;;;17729:7:0::1;;;;;;;;;-1:-1:-1::0;;;;;17729:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;17773:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;17773:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;17729:7;;17773:22;;;;;:15;:22;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17763:4;17768:1;17763:7;;;;;;-1:-1:-1::0;;;17763:7:0::1;;;;;;;;;-1:-1:-1::0;;;;;17763:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;17838:15:::1;::::0;17806:62:::1;::::0;17823:4:::1;::::0;17838:15:::1;17856:11:::0;17806:8:::1;:62::i;:::-;17879:15;::::0;:120:::1;::::0;-1:-1:-1;;;17879:120:0;;-1:-1:-1;;;;;17879:15:0;;::::1;::::0;:66:::1;::::0;:120:::1;::::0;17946:11;;17879:15:::1;::::0;17962:4;;17976::::1;::::0;17983:15:::1;::::0;17879:120:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;10869:6:0;:14;;-1:-1:-1;;10869:14:0;;;-1:-1:-1;;;;17600:407:0:o;1025:179::-;1083:7;;1115:5;1119:1;1115;:5;:::i;:::-;1103:17;;1144:1;1139;:6;;1131:46;;;;-1:-1:-1;;;1131:46:0;;7883:2:1;1131:46:0;;;7865:21:1;7922:2;7902:18;;;7895:30;7961:29;7941:18;;;7934:57;8008:18;;1131:46:0;7855:177:1;3220:191:0;3294:16;3313:6;;-1:-1:-1;;;;;3330:17:0;;;-1:-1:-1;;;;;;3330:17:0;;;;;;3363:40;;3313:6;;;;;;;3363:40;;3294:16;3363:40;3220:191;;:::o;1554:246::-;1612:7;1636:6;1632:47;;-1:-1:-1;1666:1:0;1659:8;;1632:47;1689:9;1701:5;1705:1;1701;:5;:::i;:::-;1689:17;-1:-1:-1;1734:1:0;1725:5;1729:1;1689:17;1725:5;:::i;:::-;:10;1717:56;;;;-1:-1:-1;;;1717:56:0;;9526:2:1;1717:56:0;;;9508:21:1;9565:2;9545:18;;;9538:30;9604:34;9584:18;;;9577:62;-1:-1:-1;;;9655:18:1;;;9648:31;9696:19;;1717:56:0;9498:223:1;1212:136:0;1270:7;1297:43;1301:1;1304;1297:43;;;;;;;;;;;;;;;;;:3;:43::i;18494:1031::-;10833:6;:13;;-1:-1:-1;;10833:13:0;;;;;;18663:15:::1;:8:::0;18676:1:::1;18663:12;:15::i;:::-;18648:30:::0;-1:-1:-1;18689:17:0::1;18709:18;:8:::0;18648:30;18709:12:::1;:18::i;:::-;18689:38:::0;-1:-1:-1;19030:21:0::1;19096:48;19113:30;:20:::0;19138:4;19113:24:::1;:30::i;:::-;19096:16;:48::i;:::-;19275:18;19296:41;:21;19322:14:::0;19296:25:::1;:41::i;:::-;19275:62:::0;-1:-1:-1;19395:13:0;;19391:127:::1;;19425:81;19438:9:::0;19449:56:::1;19474:30;:20:::0;19499:4;19474:24:::1;:30::i;:::-;19449:20;:10:::0;19464:4;19449:14:::1;:20::i;:56::-;19425:12;:81::i;19533:758::-:0;19590:17;19610:58;19655:12;;19610:40;19632:17;;19610;;:21;;:40;;;;:::i;:58::-;19590:78;-1:-1:-1;19683:14:0;;19679:605;;19714:24;19741:44;19775:9;19741:29;19752:17;;19741:6;:10;;:29;;;;:::i;:44::-;19714:71;;19800:19;19822:39;19851:9;19822:24;19833:12;;19822:6;:10;;:24;;;;:::i;:39::-;19800:61;-1:-1:-1;19876:18:0;19897:45;19800:61;19897:28;:6;19908:16;19897:10;:28::i;:::-;:32;;:45::i;:::-;19876:66;-1:-1:-1;19961:20:0;;19957:105;;20002:17;;:44;;-1:-1:-1;;;;;20002:17:0;;;;:44;;;;;20029:16;;20002:17;:44;:17;:44;20029:16;20002:17;:44;;;;;;;;;;;;;;;;;;;;;19957:105;20080:15;;20076:90;;20116:12;;:34;;-1:-1:-1;;;;;20116:12:0;;;;:34;;;;;20138:11;;20116:12;:34;:12;:34;20138:11;20116:12;:34;;;;;;;;;;;;;;;;;;;;;20076:90;20184:14;;20180:93;;20219:17;;:38;;-1:-1:-1;;;;;20219:17:0;;;;:38;;;;;20246:10;;20219:17;:38;:17;:38;20246:10;20219:17;:38;;;;;;;;;;;;;;;;;;;;;20180:93;19679:605;;;19533:758;;:::o;21462:256::-;21575:7;21570:60;;21604:14;13353:16;;;13326:24;:43;13407:16;;;13380:24;:43;13456:11;;;13434:19;:33;13505:16;;;13478:24;:43;-1:-1:-1;13542:20:0;;;;13573;;;;13604:15;;;13630:20;;;13691:17;;;13663:25;:45;13747:17;;;13719:25;:45;13798:12;;;13775:20;:35;13849:17;;;13821:25;:45;13887:21;;;;13919;;;;13951:16;;;13978:21;13283:724;21604:14;21640:44;21658:6;21666:9;21677:6;21640:17;:44::i;:::-;21695:15;14082:24;;14063:16;:43;14136:24;;14117:16;:43;14185:19;;14171:11;:33;14234:24;;14215:16;:43;14291:25;;14271:17;:45;14347:25;;14327:17;:45;14398:20;;14383:12;:35;14449:25;;14429:17;:45;14019:463;1948:189;2034:7;2069:12;2062:5;2054:28;;;;-1:-1:-1;;;2054:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2093:9:0;2105:5;2109:1;2105;:5;:::i;18019:465::-;18132:15;;18100:62;;18117:4;;-1:-1:-1;;;;;18132:15:0;18150:11;18100:8;:62::i;:::-;18205:15;;18419:12;;18205:271;;-1:-1:-1;;;18205:271:0;;18279:4;18205:271;;;4269:34:1;4319:18;;;4312:34;;;18205:15:0;4362:18:1;;;4355:34;;;4405:18;;;4398:34;-1:-1:-1;;;;;18419:12:0;;;4448:19:1;;;4441:44;18448:15:0;4501:19:1;;;4494:35;18205:15:0;;;:31;;18244:9;;4203:19:1;;18205:271:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;21726:1875::-;21823:24;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21823:24:0;21872:13;;-1:-1:-1;;;;;21862:23:0;;;21872:13;;21862:23;:64;;;;-1:-1:-1;21910:15:0;;-1:-1:-1;;;;;21889:37:0;;;21910:15;;21889:37;;21862:64;21858:362;;;21967:38;22000:4;21967:28;21978:16;;21967:6;:10;;:28;;;;:::i;:38::-;21949:15;;;:56;22049:16;;22038:38;;22071:4;;22038:28;;:6;;:10;:28::i;:38::-;22020:56;;22115:11;;22104:33;;22132:4;;22104:23;;:6;;:10;:23::i;:33::-;22091:10;;;:46;22181:16;;22170:38;;22203:4;;22170:28;;:6;;:10;:28::i;:38::-;22152:15;;;:56;21858:362;22244:13;;-1:-1:-1;;;;;22234:23:0;;;22244:13;;22234:23;;;;:53;;-1:-1:-1;22274:13:0;;-1:-1:-1;;;;;22261:26:0;;;22274:13;;22261:26;22234:53;22230:356;;;22329:39;22363:4;22329:29;22340:17;;22329:6;:10;;:29;;;;:::i;:39::-;22311:15;;;:57;22412:17;;22401:39;;22435:4;;22401:29;;:6;;:10;:29::i;:39::-;22383:57;;22479:12;;22468:34;;22497:4;;22468:24;;:6;;:10;:24::i;:34::-;22455:10;;;:47;22546:17;;22535:39;;22569:4;;22535:29;;:6;;:10;:29::i;:39::-;22517:15;;;:57;22230:356;22610:13;;-1:-1:-1;;;;;22600:23:0;;;22610:13;;22600:23;;;;:53;;-1:-1:-1;22640:13:0;;-1:-1:-1;;;;;22627:26:0;;;22640:13;;22627:26;;22600:53;22596:527;;;22698:81;22775:3;22698:72;22744:25;;22699:39;22733:4;22699:29;22710:17;;22699:6;:10;;:29;;;;:::i;:39::-;22698:45;;:72::i;:81::-;22680:4;:15;;:99;;;;;22812:81;22889:3;22812:72;22858:25;;22813:39;22847:4;22813:29;22824:17;;22813:6;:10;;:29;;;;:::i;22812:81::-;22794:99;;22962:25;;22933:12;;22921:76;;22993:3;;22921:67;;22962:25;22922:34;;22951:4;;22921:67;;22922:6;;:10;:24::i;22921:76::-;22908:4;:10;;:89;;;;;23030:81;23107:3;23030:72;23076:25;;23031:39;23065:4;23031:29;23042:17;;23031:6;:10;;:29;;;;:::i;23030:81::-;23012:15;;;:99;22596:527;23158:85;23227:4;:15;;;23158:64;23211:4;:10;;;23158:48;23190:4;:15;;;23158:27;23169:4;:15;;;23158:6;:10;;:27;;;;:::i;:85::-;23143:12;;;:100;-1:-1:-1;;;;;23284:17:0;;;;;;:9;:17;;;;;;:29;;23306:6;23284:21;:29::i;:::-;-1:-1:-1;;;;;23264:17:0;;;;;;;:9;:17;;;;;;:49;;;;23372:12;;;;23347:20;;;;;;;;;;:38;;:24;:38::i;:::-;23324:9;:20;23334:9;-1:-1:-1;;;;;23324:20:0;-1:-1:-1;;;;;23324:20:0;;;;;;;;;;;;:61;;;;23423:103;23452:73;23509:4;:15;;;23452:52;23493:4;:10;;;23452:36;23472:4;:15;;;23452:4;:15;;;:19;;:36;;;;:::i;:73::-;23441:4;23423:24;;;;:9;:24;;;;;;;:28;:103::i;:::-;23414:4;23396:24;;;;:9;:24;;;;;;;;;:130;;;;23580:12;;;;23552:41;;13068:25:1;;;-1:-1:-1;;;;;23552:41:0;;;;;;;;;;13041:18:1;23552:41:0;;;;;;;21726:1875;;;;:::o;14:257:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:2;;;147:6;139;132:22;94:2;191:9;178:23;210:31;235:5;210:31;:::i;276:261::-;346:6;399:2;387:9;378:7;374:23;370:32;367:2;;;420:6;412;405:22;367:2;457:9;451:16;476:31;501:5;476:31;:::i;812:398::-;880:6;888;941:2;929:9;920:7;916:23;912:32;909:2;;;962:6;954;947:22;909:2;1006:9;993:23;1025:31;1050:5;1025:31;:::i;:::-;1075:5;-1:-1:-1;1132:2:1;1117:18;;1104:32;1145:33;1104:32;1145:33;:::i;:::-;1197:7;1187:17;;;899:311;;;;;:::o;1215:466::-;1292:6;1300;1308;1361:2;1349:9;1340:7;1336:23;1332:32;1329:2;;;1382:6;1374;1367:22;1329:2;1426:9;1413:23;1445:31;1470:5;1445:31;:::i;:::-;1495:5;-1:-1:-1;1552:2:1;1537:18;;1524:32;1565:33;1524:32;1565:33;:::i;:::-;1319:362;;1617:7;;-1:-1:-1;;;1671:2:1;1656:18;;;;1643:32;;1319:362::o;1686:325::-;1754:6;1762;1815:2;1803:9;1794:7;1790:23;1786:32;1783:2;;;1836:6;1828;1821:22;1783:2;1880:9;1867:23;1899:31;1924:5;1899:31;:::i;:::-;1949:5;2001:2;1986:18;;;;1973:32;;-1:-1:-1;;;1773:238:1:o;2016:297::-;2083:6;2136:2;2124:9;2115:7;2111:23;2107:32;2104:2;;;2157:6;2149;2142:22;2104:2;2194:9;2188:16;2247:5;2240:13;2233:21;2226:5;2223:32;2213:2;;2274:6;2266;2259:22;2318:190;2377:6;2430:2;2418:9;2409:7;2405:23;2401:32;2398:2;;;2451:6;2443;2436:22;2398:2;-1:-1:-1;2479:23:1;;2388:120;-1:-1:-1;2388:120:1:o;2513:194::-;2583:6;2636:2;2624:9;2615:7;2611:23;2607:32;2604:2;;;2657:6;2649;2642:22;2604:2;-1:-1:-1;2685:16:1;;2594:113;-1:-1:-1;2594:113:1:o;2712:316::-;2800:6;2808;2816;2869:2;2857:9;2848:7;2844:23;2840:32;2837:2;;;2890:6;2882;2875:22;2837:2;2924:9;2918:16;2908:26;;2974:2;2963:9;2959:18;2953:25;2943:35;;3018:2;3007:9;3003:18;2997:25;2987:35;;2827:201;;;;;:::o;3033:395::-;3119:6;3127;3135;3143;3196:3;3184:9;3175:7;3171:23;3167:33;3164:2;;;3218:6;3210;3203:22;3164:2;-1:-1:-1;;3246:23:1;;;3316:2;3301:18;;3288:32;;-1:-1:-1;3367:2:1;3352:18;;3339:32;;3418:2;3403:18;3390:32;;-1:-1:-1;3154:274:1;-1:-1:-1;3154:274:1:o;4732:603::-;4844:4;4873:2;4902;4891:9;4884:21;4934:6;4928:13;4977:6;4972:2;4961:9;4957:18;4950:34;5002:4;5015:140;5029:6;5026:1;5023:13;5015:140;;;5124:14;;;5120:23;;5114:30;5090:17;;;5109:2;5086:26;5079:66;5044:10;;5015:140;;;5173:6;5170:1;5167:13;5164:2;;;5243:4;5238:2;5229:6;5218:9;5214:22;5210:31;5203:45;5164:2;-1:-1:-1;5319:2:1;5298:15;-1:-1:-1;;5294:29:1;5279:45;;;;5326:2;5275:54;;4853:482;-1:-1:-1;;;4853:482:1:o;8850:469::-;9052:2;9034:21;;;9091:2;9071:18;;;9064:30;9130:34;9125:2;9110:18;;9103:62;9201:34;9196:2;9181:18;;9174:62;-1:-1:-1;;;9267:3:1;9252:19;;9245:32;9309:3;9294:19;;9024:295::o;9726:356::-;9928:2;9910:21;;;9947:18;;;9940:30;10006:34;10001:2;9986:18;;9979:62;10073:2;10058:18;;9900:182::o;10497:413::-;10699:2;10681:21;;;10738:2;10718:18;;;10711:30;10777:34;10772:2;10757:18;;10750:62;-1:-1:-1;;;10843:2:1;10828:18;;10821:47;10900:3;10885:19;;10671:239::o;13104:983::-;13366:4;13414:3;13403:9;13399:19;13445:6;13434:9;13427:25;13471:2;13509:6;13504:2;13493:9;13489:18;13482:34;13552:3;13547:2;13536:9;13532:18;13525:31;13576:6;13611;13605:13;13642:6;13634;13627:22;13680:3;13669:9;13665:19;13658:26;;13719:2;13711:6;13707:15;13693:29;;13740:4;13753:195;13767:6;13764:1;13761:13;13753:195;;;13832:13;;-1:-1:-1;;;;;13828:39:1;13816:52;;13923:15;;;;13888:12;;;;13864:1;13782:9;13753:195;;;-1:-1:-1;;;;;;;14004:32:1;;;;13999:2;13984:18;;13977:60;-1:-1:-1;;;14068:3:1;14053:19;14046:35;13965:3;13375:712;-1:-1:-1;;;13375:712:1:o;14677:128::-;14717:3;14748:1;14744:6;14741:1;14738:13;14735:2;;;14754:18;;:::i;:::-;-1:-1:-1;14790:9:1;;14725:80::o;14810:217::-;14850:1;14876;14866:2;;-1:-1:-1;;;14901:31:1;;14955:4;14952:1;14945:15;14983:4;14908:1;14973:15;14866:2;-1:-1:-1;15012:9:1;;14856:171::o;15032:168::-;15072:7;15138:1;15134;15130:6;15126:14;15123:1;15120:21;15115:1;15108:9;15101:17;15097:45;15094:2;;;15145:18;;:::i;:::-;-1:-1:-1;15185:9:1;;15084:116::o;15205:125::-;15245:4;15273:1;15270;15267:8;15264:2;;;15278:18;;:::i;:::-;-1:-1:-1;15315:9:1;;15254:76::o;15335:127::-;15396:10;15391:3;15387:20;15384:1;15377:31;15427:4;15424:1;15417:15;15451:4;15448:1;15441:15;15467:131;-1:-1:-1;;;;;15542:31:1;;15532:42;;15522:2;;15588:1;15585;15578:12

Swarm Source

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