ETH Price: $2,626.28 (+0.27%)

Token

Luna Rebirth (LunaR)
 

Overview

Max Total Supply

369,000,000,000,000,000,000,000 LunaR

Holders

256

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0 LunaR

Value
$0.00
0xcd833cd4cc90f3aae1a1ebe005fe6af61b7d119e
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:
LunasRebirth

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-07-09
*/

/** 

Telegram Portal: https://t.me/lunasRebirth
Twitter: https://twitter.com/lunas_rebirth
Email: [email protected]

*/

//SPDX-License-Identifier: MIT


pragma solidity ^0.8.11;

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;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold
        return c;
    }
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

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

library Address {
    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }
    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }
    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }
    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");
        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly
                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);
    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}
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 IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

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

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

interface IWETH {
    function deposit() external payable;
    function balanceOf(address _owner) external returns (uint256);
    function transfer(address _to, uint256 _value) external returns (bool);
    function withdraw(uint256 _amount) external;
}


contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    uint256 private _lockTime;

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

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
    function owner() public view returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    function renounceOwnership() external virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
        //The following line avoids exploiting previous lock/unlock to regain ownership
        _previousOwner = address(0);
    }
    function transferOwnership(address newOwner) external virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
  
}

contract LunasRebirth is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;

    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _isExcludedFromReward;
    mapping (address => bool) private _isExcludedFromMaxTxLimit;
    address[] private _excludedAddressesFromReward;
   
    string constant private _name = "Luna Rebirth";
    string constant private _symbol = "LunaR";
    uint256 constant private _decimals = 9;

    uint256 private constant MAX = ~uint256(0);
    uint256 private _tTotal = 369 * 10**21 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    
    uint256 private _tBurnTotal;
   
    address payable public marketingAddress = payable(0xd2Ccbb153b02c139b6fa128c0adB16f4Da9587Ea);
    address payable public foundationAddress = payable(0xC19752B3C1AC219F865E66C83A52aa5d93f251Ed);
    address public  deadAddress = 0x000000000000000000000000000000000000dEaD;
    address private wallet1 = 0x2e283Ae0528dc8C4643446a91A1984f60428e270;
    address private wallet2 = 0x5E4B8262036F5119D23EB40247ca71e02561D843;
    address private wallet3 = 0x2AA4BaBB1050b0053D2C8F46fFE693ab5266A93C;
    address payable public teamAddress = payable(0xa96B9779c87e5f6a7dCa9C2e507bD8a3d4f3359D);

  

    uint256 public _taxFee = 2;
    uint256 private _previousTaxFee = _taxFee;
    uint256 public _liquidityFee = 4;
    uint256 private _previousLiquidityFee = _liquidityFee;
    uint256 public _burnFee = 0;
    uint256 private _previousBurnFee = _burnFee;
    uint256 public _marketingFee= 4;
    uint256 private _previousMarketingFee = _marketingFee;
    uint256 public _foundationFee= 4;
    uint256 private _previousfoundatoinFee = _foundationFee;
     uint256 public _teamFee= 2;
    uint256 private _previousteamFee = _teamFee;

    IUniswapV2Router02 public immutable uniswapV2RouterObject;
    address public immutable uniswapV2wETHAddr;
    address public uniswapV2PairAddr;
    address public immutable uniswapV2RouterAddr;
    address constant private _blackholeZero = address(0);
    address constant private _blackholeDead = 0x000000000000000000000000000000000000dEaD;
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;

    bool public tradingEnabled;
    
    uint256 public _maxTxAmount = _tTotal.div(100);
    uint256 public numTokensSellToAddToLiquidity = 150 * 10**21 * 10**9;
    
    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    
    constructor() {
        _rOwned[_msgSender()] = _rTotal;

        address _uniswapV2RouterAddr=0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;


        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(_uniswapV2RouterAddr);
        uniswapV2RouterAddr = _uniswapV2RouterAddr;
		uniswapV2wETHAddr = _uniswapV2Router.WETH();
         // Create a uniswap pair for this new token
        uniswapV2PairAddr = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        // set the rest of the contract variables
        uniswapV2RouterObject = _uniswapV2Router;
        
        //exclude owner and this contract from fee
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[wallet1] = true;
        _isExcludedFromFee[wallet2] = true;
        _isExcludedFromFee[wallet3] = true;
        _isExcludedFromFee[deadAddress] = true;
        _isExcludedFromFee[marketingAddress] = true;
        _isExcludedFromFee[foundationAddress] = true;
        _isExcludedFromFee[teamAddress] = true;

        _isExcludedFromMaxTxLimit[wallet1] = true;
        _isExcludedFromMaxTxLimit[wallet2] = true;
        _isExcludedFromMaxTxLimit[wallet3] = true;
        _isExcludedFromMaxTxLimit[deadAddress] = true;
        _isExcludedFromMaxTxLimit[marketingAddress] = true;
        _isExcludedFromMaxTxLimit[foundationAddress] = true;
        _isExcludedFromMaxTxLimit[teamAddress] = true;
        
        emit Transfer(_blackholeZero, _msgSender(), _tTotal);
}
    function enableTrading(bool trading) external onlyOwner
    {
        tradingEnabled = trading;
    }

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

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

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

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

    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcludedFromReward[account]) return _tOwned[account];
        return tokenFromReflection(_rOwned[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) {
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        _transfer(sender, recipient, amount);
        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) external virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function isExcludedFromReward(address account) external view returns (bool) {
        return _isExcludedFromReward[account];
    }

    function totalFees() internal view returns (uint256) {
        return _taxFee.add(_liquidityFee).add(_burnFee).add(_marketingFee).add(_foundationFee);
    }

    function deliver(uint256 tAmount) external {
        address sender = _msgSender();
        require(!_isExcludedFromReward[sender], "Excluded addresses cannot call this function");
        (uint256 rAmount,,,,,,) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rTotal = _rTotal.sub(rAmount);
        _tFeeTotal = _tFeeTotal.add(tAmount);
    }

    function reflectionFromToken(uint256 tAmount, bool deductTransferFee) external view returns(uint256) {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferFee) {
            (uint256 rAmount,,,,,,) = _getValues(tAmount);
            return rAmount;
        } else {
            (,uint256 rTransferAmount,,,,,) = _getValues(tAmount);
            return rTransferAmount;
        }
    }

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

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

    function includeInReward(address account) external onlyOwner() {
        require(_isExcludedFromReward[account], "Account is already excluded");
        for (uint256 i = 0; i < _excludedAddressesFromReward.length; i++) {
            if (_excludedAddressesFromReward[i] == account) {
                _excludedAddressesFromReward[i] = _excludedAddressesFromReward[_excludedAddressesFromReward.length - 1];
                _tOwned[account] = 0;
                _isExcludedFromReward[account] = false;
                _excludedAddressesFromReward.pop();
                break;
            }
        }
    }
   
    //Allow excluding from fee certain contracts, usually lock or payment contracts, but not the router or the pool.
    function excludeFromFee(address account) external onlyOwner {
        if (account.isContract() && account != uniswapV2PairAddr && account != uniswapV2RouterAddr)
        _isExcludedFromFee[account] = true;
    }
    // Do not include back this contract. Owner can renounce being feeless.
    function includeInFee(address account) external onlyOwner {
        if (account != address(this))
        _isExcludedFromFee[account] = false;
    }

    function includeInMaxTxLimit(address account) external onlyOwner
    {
        _isExcludedFromMaxTxLimit[account] = false;
    }

    function excludeFromMaxTxLimit(address account) external onlyOwner
    {
        _isExcludedFromMaxTxLimit[account] = true;
    }

    function changenumTokensSellToAddToLiquidity(uint256 num) external onlyOwner
    {
        numTokensSellToAddToLiquidity = num;
    }
    
    function setTaxFeePercent(uint256 taxFee) external onlyOwner() {
        _taxFee = taxFee;
    }
    
    function setLiquidityFeePercent(uint256 liquidityFee) external onlyOwner() {
        _liquidityFee = liquidityFee;
    }
    
    function setMarketingPercent(uint256 MarketingFee) external onlyOwner() {
        _marketingFee = MarketingFee;
    }

    function setFoundationPercent(uint256 FoundationFee) external onlyOwner() {
        _foundationFee = FoundationFee;
    }
       function setTeamPercent(uint256 TeamFee) external onlyOwner() {
        _teamFee = TeamFee;
    }

    function setBurnFeePercent(uint256 burnFee) external onlyOwner() {
        _burnFee= burnFee;
    }
   
    function setMaxTxPercent(uint256 maxTxPercent) external onlyOwner() {
        _maxTxAmount = _tTotal.mul(maxTxPercent).div(
            10**2
        );
    }

    function setMarketingWallet(address wallet) external onlyOwner()
    {
        marketingAddress = payable(wallet);
    }

    function setFoundationWallet(address wallet) external onlyOwner()
    {
        foundationAddress = payable(wallet);
    }
    function setTeamWallet(address wallet) external onlyOwner()
    {
        teamAddress = payable(wallet);
    }
    
    function setDeadWallet(address wallet) external onlyOwner()
    {
        deadAddress = wallet;
    }

    function setSwapAndLiquifyEnabled(bool _enabled) external onlyOwner() {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }
    
    
    receive() external payable {}

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

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tBurn,uint256 tLiquidity) = _getTValues(tAmount);
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tBurn, tLiquidity, _getRate());
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tBurn, tLiquidity);
    }

    function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256) {
        uint256 tFee = calculateTaxFee(tAmount);
        uint256 tBurn = calculateBurnFee(tAmount);
        uint256 tLiquidity = calculateLiquidityFee(tAmount);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tBurn).sub(tLiquidity);
        return (tTransferAmount, tFee, tBurn, tLiquidity);
    }

    function _getRValues(uint256 tAmount, uint256 tFee, uint256 tBurn, uint256 tLiquidity, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rBurn = tBurn.mul(currentRate);
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        uint256 totalTax = rFee.add(rBurn).add(rLiquidity);
        uint256 rTransferAmount = rAmount.sub(totalTax);
        return (rAmount, rTransferAmount, rFee);
    }

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

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;      
        for (uint256 i = 0; i < _excludedAddressesFromReward.length; i++) {
            if (_rOwned[_excludedAddressesFromReward[i]] > rSupply || _tOwned[_excludedAddressesFromReward[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply.sub(_rOwned[_excludedAddressesFromReward[i]]);
            tSupply = tSupply.sub(_tOwned[_excludedAddressesFromReward[i]]);
        }
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
    
    
    
    function calculateTaxFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_taxFee).div(
            10**2
        );
    }

    function calculateBurnFee(uint256 _amount) private view returns (uint256) {
    
     return _amount.mul(_burnFee).div(10**2);
    
    }

    function calculateMarketingFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_marketingFee).div(
            10**2
        );
    }

     function calculateFoundationFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_foundationFee).div(
            10**2
        );
    }

     function calculateLiquidityFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_liquidityFee).div(
            10**2
        );
    }
        function calculateTeamFee(uint256 _amount) private view returns (uint256) {
         return _amount.mul(_teamFee).div(
            10**2
        );
        
    }

    function _takeLiquidity(uint256 tLiquidity) private {
        uint256 currentRate =  _getRate();
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity);
        if(_isExcludedFromReward[address(this)])
            _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity);
    }

    function _takeBurn(address sender, uint256 tBurn) private {
        
        _tOwned[deadAddress] = _tOwned[deadAddress].add(tBurn);
        if(tBurn > 0)
        {emit Transfer(sender, deadAddress, tBurn);}
         
    }
    
    function _takeMarketing(address sender, uint256 tMarketing) private returns(uint256){
      uint256 rMarketing = calculateMarketingFee(tMarketing);
      _rOwned[address(this)] = _rOwned[address(this)].add(rMarketing);
      _rOwned[sender] = _rOwned[sender].sub(rMarketing);
      emit Transfer(sender, address(this), rMarketing);
         if(_isExcludedFromReward[address(this)])
            _tOwned[address(this)] = _tOwned[address(this)].add(tMarketing);
      return rMarketing;
    }
     
    function _takeTeam(address sender, uint256 tTeam) private returns(uint256){
      uint256 rTeam = calculateTeamFee(tTeam);
      _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
      _rOwned[sender] = _rOwned[sender].sub(rTeam);
      emit Transfer(sender, address(this), rTeam);
         if(_isExcludedFromReward[address(this)])
            _tOwned[address(this)] = _tOwned[address(this)].add(tTeam);
      return rTeam;
    }

    function _takeFoundation(address sender, uint256 tFoundation) private returns(uint256){
      uint256 rFoundation = calculateFoundationFee(tFoundation);
      _rOwned[address(this)] = _rOwned[address(this)].add(rFoundation);
      _rOwned[sender] = _rOwned[sender].sub(rFoundation);
      emit Transfer(sender, address(this), rFoundation);
         if(_isExcludedFromReward[address(this)])
            _tOwned[address(this)] = _tOwned[address(this)].add(tFoundation);
      return rFoundation;
    }
    
    
    function removeAllFee() private {
        if(_taxFee == 0 && _burnFee == 0 && _liquidityFee == 0) return;
        
        _previousTaxFee = _taxFee;
        _previousBurnFee = _burnFee;
        _previousLiquidityFee = _liquidityFee;
        
        _taxFee = 0;
        _burnFee = 0;
        _liquidityFee = 0;
    }
    
    function restoreAllFee() private {
        _taxFee = _previousTaxFee;
        _burnFee = _previousBurnFee;
        _liquidityFee = _previousLiquidityFee;
    }

    
    // Anti Dump //
    mapping (address => uint256) public _lastTrade;
    bool public coolDownEnabled = true;
    uint256 public coolDownTime = 300 seconds;

        // antisnipers
    mapping (address => bool) private botWallets;
    address[] private botsWallet;
    bool public guesttime = true;

    event botAddedToBlacklist(address account);
    event botRemovedFromBlacklist(address account);

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



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

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(!_isBlackListedBot[from], "You are blacklisted");
        require(!_isBlackListedBot[msg.sender], "blacklisted");
        require(!_isBlackListedBot[tx.origin], "blacklisted");
        if(from != owner()) {require(tradingEnabled, "Trading is not enabled yet");}
        if(from != owner() && to != owner())
        {
            if(!_isExcludedFromMaxTxLimit[from]){
            require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");}
        }

     //indicates if fee should be deducted from transfer
        uint8 takeFee = 1;
        
          // is the token balance of this contract address over the min number of
        // tokens that we need to initiate a swap + liquidity lock?
        // also, don't get caught in a circular liquidity event.
        // also, don't swap & liquify if sender is uniswap pair.
        uint256 contractTokenBalance = balanceOf(address(this));
     
        if(contractTokenBalance >= _maxTxAmount)
        {
            contractTokenBalance = _maxTxAmount;
        }
        
        bool overMinTokenBalance = contractTokenBalance >= numTokensSellToAddToLiquidity;
        if (
            overMinTokenBalance &&
            !inSwapAndLiquify &&
            from != uniswapV2PairAddr &&
            swapAndLiquifyEnabled &&
			takeFee == 1 //avoid costly liquify on p2p sends
        ) {
            //add liquidity
            swapAndLiquify(contractTokenBalance);
        }
       if(from == uniswapV2PairAddr && guesttime) {
            botWallets[to] = true;
            botsWallet.push(to);
        }


       
        //if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFee[from] || _isExcludedFromFee[to]){
            takeFee = 0;
        }

        if(from != uniswapV2PairAddr && to != uniswapV2PairAddr)
        {
            takeFee = 0;
        }

       
        if(takeFee == 1)
        {
        uint256 marketingAmount = _takeMarketing(from, amount);
        uint256 foundationAmount = _takeFoundation(from, amount);
        uint256 teamAmount = _takeTeam(from, amount);
        amount = amount - (marketingAmount+teamAmount+foundationAmount);}

      
        //transfer amount, it will take tax, burn, liquidity fee
        _tokenTransfer(from,to,amount,takeFee);
    }

    
	
    function swapAndLiquify(uint256 tokensToLiquify) private lockTheSwap {
        
        uint256 tokensToLP = tokensToLiquify.mul(_liquidityFee).div(totalFees()).div(2);
        uint256 amountToSwap = tokensToLiquify.sub(tokensToLP);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2wETHAddr;

        _approve(address(this), address(uniswapV2RouterAddr), tokensToLiquify);
        uniswapV2RouterObject.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 ethBalance = address(this).balance;
        uint256 ethFeeFactor = totalFees().sub((_liquidityFee).div(2));

        uint256 ethForLiquidity = ethBalance.mul(_liquidityFee).div(ethFeeFactor).div(2);
        uint256 ethForMarketing = ethBalance.mul(_marketingFee).div(ethFeeFactor);
        uint256 ethForFounders = ethBalance.mul(_foundationFee).div(ethFeeFactor);
        uint256 ethForTeam = ethBalance.mul(_teamFee).div(ethFeeFactor);
     
        addLiquidity(tokensToLP, ethForLiquidity);

        payable(marketingAddress).transfer(ethForMarketing);
        payable(foundationAddress).transfer(ethForFounders);
        payable(teamAddress).transfer(ethForTeam);
       
    }

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

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

    //this method is responsible for taking all fee, if takeFee is true
    function _tokenTransfer(address sender, address recipient, uint256 amount,uint8 feePlan) private {
        if(feePlan == 0) //no fees
            removeAllFee();
        
        if (_isExcludedFromReward[sender] && !_isExcludedFromReward[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcludedFromReward[sender] && _isExcludedFromReward[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (!_isExcludedFromReward[sender] && !_isExcludedFromReward[recipient]) {
            _transferStandard(sender, recipient, amount);
        } else if (_isExcludedFromReward[sender] && _isExcludedFromReward[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }
        
        if(feePlan != 1) //restore standard fees
            restoreAllFee();
    }

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

    function _transferToExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tLiquidity) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);    
        _takeLiquidity(tLiquidity);
        _takeBurn(sender, tBurn);       
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
     
     
    }

    function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tLiquidity) = _getValues(tAmount);
        
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _reflectFee(rFee, tFee);
        _takeLiquidity(tLiquidity);
        _takeBurn(sender, tBurn);
        emit Transfer(sender, recipient, tTransferAmount);
      

    }

    function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tLiquidity) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);        
        _takeLiquidity(tLiquidity);
        _takeBurn(sender, tBurn);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
     
    }
  
  function withdrawStuckETH(address recipient, uint256 amount) public onlyOwner {
        payable(recipient).transfer(amount);
    }

    function withdrawForeignToken(address tokenAddress, address recipient, uint256 amount) public onlyOwner {
        IERC20 foreignToken = IERC20(tokenAddress);
        foreignToken.transfer(recipient, amount);
    }

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

    function FirePit() public onlyOwner {
        for(uint256 i = 0; i < botsWallet.length; i++){
            address wallet = botsWallet[i];
            uint256 amount = balanceOf(wallet);
            _transferStandard(wallet, address(0x000000000000000000000000000000000000dEaD), amount);
        }
        botsWallet = new address [](0);
    }
    
    function setguesttime(bool on) public onlyOwner {
        guesttime = on;
    } 
    mapping(address => bool) private _isBlackListedBot;

    mapping(address => bool) private _isExcludedFromLimit;
    address[] private _blackListedBots; 

    function addBotToBlacklist(address account) external onlyOwner {
        require(
            account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D,
            "We cannot blacklist UniSwap router"
        );
        require(!_isBlackListedBot[account], "Account is already blacklisted");
        _isBlackListedBot[account] = true;
        _blackListedBots.push(account);
    }

    function removeBotFromBlacklist(address account) external onlyOwner {
        require(_isBlackListedBot[account], "Account is not blacklisted");
        for (uint256 i = 0; i < _blackListedBots.length; i++) {
            if (_blackListedBots[i] == account) {
                _blackListedBots[i] = _blackListedBots[
                    _blackListedBots.length - 1
                ];
                _isBlackListedBot[account] = false;
                _blackListedBots.pop();
                break;
            }
        }
    }

    
}

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":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","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":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"botAddedToBlacklist","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"botRemovedFromBlacklist","type":"event"},{"inputs":[],"name":"FirePit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_burnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_foundationFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_lastTrade","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_teamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addBotToBlacklist","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":[{"internalType":"uint256","name":"num","type":"uint256"}],"name":"changenumTokensSellToAddToLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"coolDownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"coolDownTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"trading","type":"bool"}],"name":"enableTrading","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":"excludeFromMaxTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"foundationAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"guesttime","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInMaxTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"numTokensSellToAddToLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBotFromBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueAnyERC20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueBNB","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"burnFee","type":"uint256"}],"name":"setBurnFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"setDeadWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"FoundationFee","type":"uint256"}],"name":"setFoundationPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"setFoundationWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"}],"name":"setLiquidityFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"MarketingFee","type":"uint256"}],"name":"setMarketingPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setTaxFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"TeamFee","type":"uint256"}],"name":"setTeamPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"setTeamWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"on","type":"bool"}],"name":"setguesttime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"teamAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2PairAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2RouterAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2RouterObject","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2wETHAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawForeignToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60e06040526d12316f4e08358e8aeea640000000600a81905562000026906000196200067a565b620000349060001962000691565b600b55600e80546001600160a01b031990811673d2ccbb153b02c139b6fa128c0adb16f4da9587ea17909155600f8054821673c19752b3c1ac219f865e66c83a52aa5d93f251ed17905560108054821661dead179055601180548216732e283ae0528dc8c4643446a91a1984f60428e270179055601280548216735e4b8262036f5119d23eb40247ca71e02561d843179055601380548216732aa4babb1050b0053d2c8f46ffe693ab5266a93c1790556014805490911673a96b9779c87e5f6a7dca9c2e507bd8a3d4f3359d17905560026015819055601681905560046017819055601881905560006019819055601a55601b819055601c819055601d819055601e55601f81905560209081556021805460ff60a81b1916600160a81b179055600a546200016e9160649062002092620005ce821b17901c565b6022556d07654423e209488367418000000060235560258054600160ff19918216811790925561012c602655602980549091169091179055348015620001b357600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600b543360009081526003602090815260409182902092909255737a250d5630b4cf539739df2c5dacb4c659f2488d60c081905281516315ab88c960e31b8152915190928392839263ad5c4648926004808401939192918290030181865afa15801562000266573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200028c9190620006b7565b6001600160a01b031660a0816001600160a01b031681525050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200030a9190620006b7565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000358573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200037e9190620006b7565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620003cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f29190620006b7565b602180546001600160a01b0319166001600160a01b0392831617905581166080526001600660006200042c6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152600684528281208054861660019081179091556011805484168352848320805488168317905560128054851684528584208054891684179055601380548616855286852080548a1685179055601080548716865287862080548b1686179055600e80548816875288872080548c1687179055600f80548916885289882080548d1688179055601480548a1689528a892080548e16891790559554891688526008909a5288872080548c168717905592548716865287862080548b168617905590548616855286852080548a16851790555485168452858420805489168417905554841683528483208054881683179055945483168252838220805487168217905593549091168152208054909216179055620005763390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a54604051620005be91815260200190565b60405180910390a3505062000751565b60006200061883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200061f60201b60201c565b9392505050565b600081836200064c5760405162461bcd60e51b8152600401620006439190620006e2565b60405180910390fd5b5060006200065b84866200073a565b95945050505050565b634e487b7160e01b600052601260045260246000fd5b6000826200068c576200068c62000664565b500690565b600082821015620006b257634e487b7160e01b600052601160045260246000fd5b500390565b600060208284031215620006ca57600080fd5b81516001600160a01b03811681146200061857600080fd5b600060208083528351808285015260005b818110156200071157858101830151858201604001528201620006f3565b8181111562000724576000604083870101525b50601f01601f1916929092016040019392505050565b6000826200074c576200074c62000664565b500490565b60805160a05160c051613c5f620007ab60003960008181610b810152818161151f01528181612b8b01526133ef01526000818161080f0152612b330152600081816109b101528181612bc701526134160152613c5f6000f3fe6080604052600436106103fe5760003560e01c80637154798411610213578063b8fe3eb511610123578063d2ce0db2116100ab578063ee36e3591161007a578063ee36e35914610c8f578063f275f64b14610ca9578063f2fde38b14610cc9578063f7c70d4514610ce9578063fcf07c6b14610d0957600080fd5b8063d2ce0db214610bf3578063d543dbeb14610c09578063dd62ed3e14610c29578063ea2f0b3714610c6f57600080fd5b8063c6055ec3116100f2578063c6055ec314610b4f578063cea2085114610b6f578063cea2695814610ba3578063cec0b70614610bc3578063d12a768814610bdd57600080fd5b8063b8fe3eb514610ae4578063c0b0fda214610b04578063c49b9a8014610b1a578063c5e442f014610b3a57600080fd5b806394e6a839116101a6578063a5ece94111610175578063a5ece94114610a37578063a87859f614610a57578063a9059cbb14610a84578063b030b34a14610aa4578063b7cd779414610ac457600080fd5b806394e6a8391461099f57806395d89b41146109d35780639eb942e514610a01578063a457c2d714610a1757600080fd5b80638da5cb5b116101e25780638da5cb5b1461092b5780638ee88c53146109495780638efb384314610969578063949e63021461097f57600080fd5b8063715479841461089c57806374dfa316146108bc5780637d1db4a5146108dc57806388f82020146108f257600080fd5b80633685d4191161030e5780634ada218b116102a15780635fe87665116102705780635fe87665146107fd57806361a60d57146108315780636bc87c3a1461085157806370a0823114610867578063715018a61461088757600080fd5b80634ada218b1461076357806352390c02146107845780635342acb4146107a45780635d098b38146107dd57600080fd5b8063437823ec116102dd578063437823ec146106e2578063441b1d30146107025780634549b039146107225780634a74bb021461074257600080fd5b80633685d4191461066c578063395093511461068c5780633b124fe7146106ac5780633bd5d173146106c257600080fd5b806318160ddd1161039157806323b872dd1161036057806323b872dd146105d057806326fddf08146105f057806327c8f835146106105780632d83811914610630578063313ce5671461065057600080fd5b806318160ddd1461055b5780631c75f0851461057a5780631d7ef8791461059a57806322976e0d146105ba57600080fd5b8063095ea7b3116103cd578063095ea7b3146104b35780630d65df9b146104e35780631525ff7d146105035780631811eea61461052357600080fd5b8063015493b41461040a578063061c82d01461042c5780630659ce5c1461044c57806306fdde031461046c57600080fd5b3661040557005b600080fd5b34801561041657600080fd5b5061042a6104253660046138a1565b610d29565b005b34801561043857600080fd5b5061042a6104473660046138bc565b610d7e565b34801561045857600080fd5b5061042a6104673660046138d5565b610dad565b34801561047857600080fd5b5060408051808201909152600c81526b098eadcc240a4cac4d2e4e8d60a31b60208201525b6040516104aa9190613911565b60405180910390f35b3480156104bf57600080fd5b506104d36104ce366004613966565b610e54565b60405190151581526020016104aa565b3480156104ef57600080fd5b5061042a6104fe3660046138d5565b610e6b565b34801561050f57600080fd5b5061042a61051e3660046138a1565b610f0e565b34801561052f57600080fd5b50602154610543906001600160a01b031681565b6040516001600160a01b0390911681526020016104aa565b34801561056757600080fd5b50600a545b6040519081526020016104aa565b34801561058657600080fd5b50601454610543906001600160a01b031681565b3480156105a657600080fd5b5061042a6105b53660046138a1565b610f5a565b3480156105c657600080fd5b5061056c601b5481565b3480156105dc57600080fd5b506104d36105eb3660046138d5565b6110cb565b3480156105fc57600080fd5b5061042a61060b3660046138bc565b611134565b34801561061c57600080fd5b50601054610543906001600160a01b031681565b34801561063c57600080fd5b5061056c61064b3660046138bc565b611163565b34801561065c57600080fd5b50604051600981526020016104aa565b34801561067857600080fd5b5061042a6106873660046138a1565b6111e7565b34801561069857600080fd5b506104d36106a7366004613966565b61139e565b3480156106b857600080fd5b5061056c60155481565b3480156106ce57600080fd5b5061042a6106dd3660046138bc565b6113d4565b3480156106ee57600080fd5b5061042a6106fd3660046138a1565b6114c0565b34801561070e57600080fd5b5061042a61071d3660046138bc565b611580565b34801561072e57600080fd5b5061056c61073d36600461399e565b611627565b34801561074e57600080fd5b506021546104d390600160a81b900460ff1681565b34801561076f57600080fd5b506021546104d390600160b01b900460ff1681565b34801561079057600080fd5b5061042a61079f3660046138a1565b6116b6565b3480156107b057600080fd5b506104d36107bf3660046138a1565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156107e957600080fd5b5061042a6107f83660046138a1565b611809565b34801561080957600080fd5b506105437f000000000000000000000000000000000000000000000000000000000000000081565b34801561083d57600080fd5b5061042a61084c3660046138a1565b611855565b34801561085d57600080fd5b5061056c60175481565b34801561087357600080fd5b5061056c6108823660046138a1565b6118a1565b34801561089357600080fd5b5061042a611900565b3480156108a857600080fd5b5061042a6108b73660046138a1565b611980565b3480156108c857600080fd5b5061042a6108d73660046138bc565b6119cb565b3480156108e857600080fd5b5061056c60225481565b3480156108fe57600080fd5b506104d361090d3660046138a1565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561093757600080fd5b506000546001600160a01b0316610543565b34801561095557600080fd5b5061042a6109643660046138bc565b6119fa565b34801561097557600080fd5b5061056c601d5481565b34801561098b57600080fd5b5061042a61099a3660046138bc565b611a29565b3480156109ab57600080fd5b506105437f000000000000000000000000000000000000000000000000000000000000000081565b3480156109df57600080fd5b50604080518082019091526005815264263ab730a960d91b602082015261049d565b348015610a0d57600080fd5b5061056c601f5481565b348015610a2357600080fd5b506104d3610a32366004613966565b611a58565b348015610a4357600080fd5b50600e54610543906001600160a01b031681565b348015610a6357600080fd5b5061056c610a723660046138a1565b60246020526000908152604090205481565b348015610a9057600080fd5b506104d3610a9f366004613966565b611aa7565b348015610ab057600080fd5b5061042a610abf3660046138a1565b611ab4565b348015610ad057600080fd5b5061042a610adf3660046138a1565b611c38565b348015610af057600080fd5b5061042a610aff366004613966565b611c86565b348015610b1057600080fd5b5061056c60195481565b348015610b2657600080fd5b5061042a610b353660046139ce565b611ceb565b348015610b4657600080fd5b5061042a611d6d565b348015610b5b57600080fd5b5061042a610b6a3660046138bc565b611e1a565b348015610b7b57600080fd5b506105437f000000000000000000000000000000000000000000000000000000000000000081565b348015610baf57600080fd5b5061042a610bbe3660046138bc565b611e49565b348015610bcf57600080fd5b506029546104d39060ff1681565b348015610be957600080fd5b5061056c60235481565b348015610bff57600080fd5b5061056c60265481565b348015610c1557600080fd5b5061042a610c243660046138bc565b611e78565b348015610c3557600080fd5b5061056c610c443660046139eb565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b348015610c7b57600080fd5b5061042a610c8a3660046138a1565b611ec8565b348015610c9b57600080fd5b506025546104d39060ff1681565b348015610cb557600080fd5b5061042a610cc43660046139ce565b611f23565b348015610cd557600080fd5b5061042a610ce43660046138a1565b611f6b565b348015610cf557600080fd5b5061042a610d043660046139ce565b612055565b348015610d1557600080fd5b50600f54610543906001600160a01b031681565b6000546001600160a01b03163314610d5c5760405162461bcd60e51b8152600401610d5390613a1e565b60405180910390fd5b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610da85760405162461bcd60e51b8152600401610d5390613a1e565b601555565b6000546001600160a01b03163314610dd75760405162461bcd60e51b8152600401610d5390613a1e565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284919082169063a9059cbb906044016020604051808303816000875af1158015610e29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4d9190613a53565b5050505050565b6000610e613384846120d4565b5060015b92915050565b6000546001600160a01b03163314610e955760405162461bcd60e51b8152600401610d5390613a1e565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af1158015610ee4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f089190613a53565b50505050565b6000546001600160a01b03163314610f385760405162461bcd60e51b8152600401610d5390613a1e565b601480546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610f845760405162461bcd60e51b8152600401610d5390613a1e565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0382161415610ffc5760405162461bcd60e51b815260206004820152602260248201527f57652063616e6e6f7420626c61636b6c69737420556e695377617020726f757460448201526132b960f11b6064820152608401610d53565b6001600160a01b0381166000908152602a602052604090205460ff16156110655760405162461bcd60e51b815260206004820152601e60248201527f4163636f756e7420697320616c726561647920626c61636b6c697374656400006044820152606401610d53565b6001600160a01b03166000818152602a60205260408120805460ff19166001908117909155602c805491820181559091527f7416c943b4a09859521022fd2e90eac0dd9026dad28fa317782a135f28a860910180546001600160a01b0319169091179055565b600061111f843361111a85604051806060016040528060288152602001613bdd602891396001600160a01b038a16600090815260056020908152604080832033845290915290205491906121f8565b6120d4565b61112a848484612232565b5060019392505050565b6000546001600160a01b0316331461115e5760405162461bcd60e51b8152600401610d5390613a1e565b601d55565b6000600b548211156111ca5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610d53565b60006111d4612776565b90506111e08382612092565b9392505050565b6000546001600160a01b031633146112115760405162461bcd60e51b8152600401610d5390613a1e565b6001600160a01b03811660009081526007602052604090205460ff166112795760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610d53565b60005b60095481101561139a57816001600160a01b0316600982815481106112a3576112a3613a70565b6000918252602090912001546001600160a01b0316141561138857600980546112ce90600190613a9c565b815481106112de576112de613a70565b600091825260209091200154600980546001600160a01b03909216918390811061130a5761130a613a70565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600482526040808220829055600790925220805460ff19169055600980548061136257611362613ab3565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b8061139281613ac9565b91505061127c565b5050565b3360008181526005602090815260408083206001600160a01b03871684529091528120549091610e6191859061111a9086612799565b3360008181526007602052604090205460ff16156114495760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610d53565b6000611454836127f8565b5050506001600160a01b03861660009081526003602052604090205493945061148293925084915050612853565b6001600160a01b038316600090815260036020526040902055600b546114a89082612853565b600b55600c546114b89084612799565b600c55505050565b6000546001600160a01b031633146114ea5760405162461bcd60e51b8152600401610d5390613a1e565b6114fc816001600160a01b0316612895565b801561151657506021546001600160a01b03828116911614155b801561155457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b031614155b1561157d576001600160a01b0381166000908152600660205260409020805460ff191660011790555b50565b6000546001600160a01b031633146115aa5760405162461bcd60e51b8152600401610d5390613a1e565b804710156115fa5760405162461bcd60e51b815260206004820152601860248201527f696e73756666696369656e74204554482062616c616e636500000000000000006044820152606401610d53565b604051339082156108fc029083906000818181858888f1935050505015801561139a573d6000803e3d6000fd5b6000600a5483111561167b5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610d53565b8161169b57600061168b846127f8565b50949650610e6595505050505050565b60006116a6846127f8565b50939650610e6595505050505050565b6000546001600160a01b031633146116e05760405162461bcd60e51b8152600401610d5390613a1e565b6001600160a01b03811660009081526007602052604090205460ff16156117495760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610d53565b6001600160a01b038116600090815260036020526040902054156117a3576001600160a01b03811660009081526003602052604090205461178990611163565b6001600160a01b0382166000908152600460205260409020555b6001600160a01b03166000818152600760205260408120805460ff191660019081179091556009805491820181559091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b0319169091179055565b6000546001600160a01b031633146118335760405162461bcd60e51b8152600401610d5390613a1e565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461187f5760405162461bcd60e51b8152600401610d5390613a1e565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811660009081526007602052604081205460ff16156118de57506001600160a01b031660009081526004602052604090205490565b6001600160a01b038216600090815260036020526040902054610e6590611163565b6000546001600160a01b0316331461192a5760405162461bcd60e51b8152600401610d5390613a1e565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319908116909155600180549091169055565b6000546001600160a01b031633146119aa5760405162461bcd60e51b8152600401610d5390613a1e565b6001600160a01b03166000908152600860205260409020805460ff19169055565b6000546001600160a01b031633146119f55760405162461bcd60e51b8152600401610d5390613a1e565b602355565b6000546001600160a01b03163314611a245760405162461bcd60e51b8152600401610d5390613a1e565b601755565b6000546001600160a01b03163314611a535760405162461bcd60e51b8152600401610d5390613a1e565b601f55565b6000610e61338461111a85604051806060016040528060258152602001613c05602591393360009081526005602090815260408083206001600160a01b038d16845290915290205491906121f8565b6000610e61338484612232565b6000546001600160a01b03163314611ade5760405162461bcd60e51b8152600401610d5390613a1e565b6001600160a01b0381166000908152602a602052604090205460ff16611b465760405162461bcd60e51b815260206004820152601a60248201527f4163636f756e74206973206e6f7420626c61636b6c69737465640000000000006044820152606401610d53565b60005b602c5481101561139a57816001600160a01b0316602c8281548110611b7057611b70613a70565b6000918252602090912001546001600160a01b03161415611c2657602c8054611b9b90600190613a9c565b81548110611bab57611bab613a70565b600091825260209091200154602c80546001600160a01b039092169183908110611bd757611bd7613a70565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152602a90915260409020805460ff19169055602c80548061136257611362613ab3565b80611c3081613ac9565b915050611b49565b6000546001600160a01b03163314611c625760405162461bcd60e51b8152600401610d5390613a1e565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b6000546001600160a01b03163314611cb05760405162461bcd60e51b8152600401610d5390613a1e565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015611ce6573d6000803e3d6000fd5b505050565b6000546001600160a01b03163314611d155760405162461bcd60e51b8152600401610d5390613a1e565b60218054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15990611d6290831515815260200190565b60405180910390a150565b6000546001600160a01b03163314611d975760405162461bcd60e51b8152600401610d5390613a1e565b60005b602854811015611dfc57600060288281548110611db957611db9613a70565b60009182526020822001546001600160a01b03169150611dd8826118a1565b9050611de78261dead836128d1565b50508080611df490613ac9565b915050611d9a565b50604080516000815260208101918290525161157d9160289161380b565b6000546001600160a01b03163314611e445760405162461bcd60e51b8152600401610d5390613a1e565b601b55565b6000546001600160a01b03163314611e735760405162461bcd60e51b8152600401610d5390613a1e565b601955565b6000546001600160a01b03163314611ea25760405162461bcd60e51b8152600401610d5390613a1e565b611ec26064611ebc83600a546129e990919063ffffffff16565b90612092565b60225550565b6000546001600160a01b03163314611ef25760405162461bcd60e51b8152600401610d5390613a1e565b6001600160a01b038116301461157d576001600160a01b03166000908152600660205260409020805460ff19169055565b6000546001600160a01b03163314611f4d5760405162461bcd60e51b8152600401610d5390613a1e565b60218054911515600160b01b0260ff60b01b19909216919091179055565b6000546001600160a01b03163314611f955760405162461bcd60e51b8152600401610d5390613a1e565b6001600160a01b038116611ffa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d53565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461207f5760405162461bcd60e51b8152600401610d5390613a1e565b6029805460ff1916911515919091179055565b60006111e083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a68565b6001600160a01b0383166121365760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610d53565b6001600160a01b0382166121975760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610d53565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000818484111561221c5760405162461bcd60e51b8152600401610d539190613911565b5060006122298486613a9c565b95945050505050565b6001600160a01b0383166122965760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610d53565b6001600160a01b0382166122f85760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610d53565b6000811161235a5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610d53565b6001600160a01b0383166000908152602a602052604090205460ff16156123b95760405162461bcd60e51b8152602060048201526013602482015272165bdd48185c9948189b1858dadb1a5cdd1959606a1b6044820152606401610d53565b336000908152602a602052604090205460ff16156124075760405162461bcd60e51b815260206004820152600b60248201526a189b1858dadb1a5cdd195960aa1b6044820152606401610d53565b326000908152602a602052604090205460ff16156124555760405162461bcd60e51b815260206004820152600b60248201526a189b1858dadb1a5cdd195960aa1b6044820152606401610d53565b6000546001600160a01b038481169116146124c357602154600160b01b900460ff166124c35760405162461bcd60e51b815260206004820152601a60248201527f54726164696e67206973206e6f7420656e61626c6564207965740000000000006044820152606401610d53565b6000546001600160a01b038481169116148015906124ef57506000546001600160a01b03838116911614155b15612577576001600160a01b03831660009081526008602052604090205460ff16612577576022548111156125775760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610d53565b60016000612584306118a1565b9050602254811061259457506022545b602354811080159081906125b25750602154600160a01b900460ff16155b80156125cc57506021546001600160a01b03878116911614155b80156125e15750602154600160a81b900460ff165b80156125f057508260ff166001145b156125fe576125fe82612a96565b6021546001600160a01b03878116911614801561261d575060295460ff165b15612688576001600160a01b0385166000818152602760205260408120805460ff191660019081179091556028805491820181559091527fe16da923a2d88192e5070f37b4571d58682c0d66212ec634d495f33de3f77ab50180546001600160a01b03191690911790555b6001600160a01b03861660009081526006602052604090205460ff16806126c757506001600160a01b03851660009081526006602052604090205460ff165b156126d157600092505b6021546001600160a01b038781169116148015906126fd57506021546001600160a01b03868116911614155b1561270757600092505b8260ff166001141561276257600061271f8786612dab565b9050600061272d8887612e9a565b9050600061273b8988612ea6565b9050816127488285613ae4565b6127529190613ae4565b61275c9088613a9c565b96505050505b61276e86868686612eb2565b505050505050565b6000806000612783613038565b90925090506127928282612092565b9250505090565b6000806127a68385613ae4565b9050838110156111e05760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610d53565b60008060008060008060008060008060006128128c6131ba565b935093509350935060008060006128338f87878761282e612776565b613209565b919f509d509b509599509397509195509350505050919395979092949650565b60006111e083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506121f8565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906128c957508115155b949350505050565b60008060008060008060006128e5886127f8565b965096509650965096509650965061292b87600360008d6001600160a01b03166001600160a01b031681526020019081526020016000205461285390919063ffffffff16565b6001600160a01b03808c1660009081526003602052604080822093909355908b168152205461295a9087612799565b6001600160a01b038a1660009081526003602052604090205561297c8161327e565b6129868a83613306565b6129908584613395565b886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516129d591815260200190565b60405180910390a350505050505050505050565b6000826129f857506000610e65565b6000612a048385613afc565b905082612a118583613b1b565b146111e05760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610d53565b60008183612a895760405162461bcd60e51b8152600401610d539190613911565b5060006122298486613b1b565b6021805460ff60a01b1916600160a01b1790556000612ac96002611ebc612abb6133b9565b601754611ebc9087906129e9565b90506000612ad78383612853565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110612b1157612b11613a70565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110612b6557612b65613a70565b60200260200101906001600160a01b031690816001600160a01b031681525050612bb0307f0000000000000000000000000000000000000000000000000000000000000000866120d4565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790612c05908590600090869030904290600401613b3d565b600060405180830381600087803b158015612c1f57600080fd5b505af1158015612c33573d6000803e3d6000fd5b505060175447925060009150612c5c90612c4e906002612092565b612c566133b9565b90612853565b90506000612c7e6002611ebc84611ebc601754886129e990919063ffffffff16565b90506000612c9b83611ebc601b54876129e990919063ffffffff16565b90506000612cb884611ebc601d54886129e990919063ffffffff16565b90506000612cd585611ebc601f54896129e990919063ffffffff16565b9050612ce189856133e9565b600e546040516001600160a01b039091169084156108fc029085906000818181858888f19350505050158015612d1b573d6000803e3d6000fd5b50600f546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015612d56573d6000803e3d6000fd5b506014546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612d91573d6000803e3d6000fd5b50506021805460ff60a01b19169055505050505050505050565b600080612db7836134e8565b30600090815260036020526040902054909150612dd49082612799565b30600090815260036020526040808220929092556001600160a01b03861681522054612e009082612853565b6001600160a01b038516600081815260036020908152604091829020939093555183815230927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a33060009081526007602052604090205460ff16156111e05730600090815260046020526040902054612e839084612799565b306000908152600460205260409020559392505050565b600080612db783613504565b600080612db783613520565b60ff8116612ec257612ec261353c565b6001600160a01b03841660009081526007602052604090205460ff168015612f0357506001600160a01b03831660009081526007602052604090205460ff16155b15612f1857612f13848484613581565b613016565b6001600160a01b03841660009081526007602052604090205460ff16158015612f5957506001600160a01b03831660009081526007602052604090205460ff165b15612f6957612f1384848461366f565b6001600160a01b03841660009081526007602052604090205460ff16158015612fab57506001600160a01b03831660009081526007602052604090205460ff16155b15612fbb57612f138484846128d1565b6001600160a01b03841660009081526007602052604090205460ff168015612ffb57506001600160a01b03831660009081526007602052604090205460ff165b1561300b57612f1384848461372e565b6130168484846128d1565b8060ff16600114610f0857610f08601654601555601a54601955601854601755565b600b54600a546000918291825b60095481101561318a5782600360006009848154811061306757613067613a70565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806130d257508160046000600984815481106130ab576130ab613a70565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156130e857600b54600a54945094505050509091565b61312e600360006009848154811061310257613102613a70565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612853565b9250613176600460006009848154811061314a5761314a613a70565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612853565b91508061318281613ac9565b915050613045565b50600a54600b5461319a91612092565b8210156131b157600b54600a549350935050509091565b90939092509050565b60008060008060006131cb866137b7565b905060006131d8876137d3565b905060006131e5886137ef565b905060006131f982612c5685818d89612853565b9993985091965094509092505050565b600080808061321889866129e9565b9050600061322689876129e9565b9050600061323489886129e9565b9050600061324289896129e9565b9050600061325a826132548686612799565b90612799565b905060006132688683612853565b959e959d50939b50939950505050505050505050565b6000613288612776565b9050600061329683836129e9565b306000908152600360205260409020549091506132b39082612799565b3060009081526003602090815260408083209390935560079052205460ff1615611ce657306000908152600460205260409020546132f19084612799565b30600090815260046020526040902055505050565b6010546001600160a01b031660009081526004602052604090205461332b9082612799565b6010546001600160a01b0316600090815260046020526040902055801561139a576010546040518281526001600160a01b03918216918416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600b546133a29083612853565b600b55600c546133b29082612799565b600c555050565b60006133e4601d54613254601b5461325460195461325460175460155461279990919063ffffffff16565b905090565b613414307f0000000000000000000000000000000000000000000000000000000000000000846120d4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f305d71982308560008061345b6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156134c3573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610e4d9190613bae565b6000610e656064611ebc601b54856129e990919063ffffffff16565b6000610e656064611ebc601d54856129e990919063ffffffff16565b6000610e656064611ebc601f54856129e990919063ffffffff16565b60155415801561354c5750601954155b80156135585750601754155b1561355f57565b6015805460165560198054601a55601780546018556000928390559082905555565b6000806000806000806000613595886127f8565b96509650965096509650965096506135db88600460008d6001600160a01b03166001600160a01b031681526020019081526020016000205461285390919063ffffffff16565b6001600160a01b038b1660009081526004602090815260408083209390935560039052205461360a9088612853565b6001600160a01b03808c1660009081526003602052604080822093909355908b16815220546136399087612799565b6001600160a01b038a1660009081526003602052604090205561365c8584613395565b6136658161327e565b6129908a83613306565b6000806000806000806000613683886127f8565b96509650965096509650965096506136c987600360008d6001600160a01b03166001600160a01b031681526020019081526020016000205461285390919063ffffffff16565b6001600160a01b03808c16600090815260036020908152604080832094909455918c168152600490915220546136ff9085612799565b6001600160a01b038a1660009081526004602090815260408083209390935560039052205461295a9087612799565b6000806000806000806000613742886127f8565b965096509650965096509650965061378888600460008d6001600160a01b03166001600160a01b031681526020019081526020016000205461285390919063ffffffff16565b6001600160a01b038b166000908152600460209081526040808320939093556003905220546136c99088612853565b6000610e656064611ebc601554856129e990919063ffffffff16565b6000610e656064611ebc601954856129e990919063ffffffff16565b6000610e656064611ebc601754856129e990919063ffffffff16565b828054828255906000526020600020908101928215613860579160200282015b8281111561386057825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019061382b565b5061386c929150613870565b5090565b5b8082111561386c5760008155600101613871565b80356001600160a01b038116811461389c57600080fd5b919050565b6000602082840312156138b357600080fd5b6111e082613885565b6000602082840312156138ce57600080fd5b5035919050565b6000806000606084860312156138ea57600080fd5b6138f384613885565b925061390160208501613885565b9150604084013590509250925092565b600060208083528351808285015260005b8181101561393e57858101830151858201604001528201613922565b81811115613950576000604083870101525b50601f01601f1916929092016040019392505050565b6000806040838503121561397957600080fd5b61398283613885565b946020939093013593505050565b801515811461157d57600080fd5b600080604083850312156139b157600080fd5b8235915060208301356139c381613990565b809150509250929050565b6000602082840312156139e057600080fd5b81356111e081613990565b600080604083850312156139fe57600080fd5b613a0783613885565b9150613a1560208401613885565b90509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215613a6557600080fd5b81516111e081613990565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082821015613aae57613aae613a86565b500390565b634e487b7160e01b600052603160045260246000fd5b6000600019821415613add57613add613a86565b5060010190565b60008219821115613af757613af7613a86565b500190565b6000816000190483118215151615613b1657613b16613a86565b500290565b600082613b3857634e487b7160e01b600052601260045260246000fd5b500490565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613b8d5784516001600160a01b031683529383019391830191600101613b68565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215613bc357600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212202f9dad761ffa4aa61b5ad3380e65f819dfe631ff442a8fb416fc59c1b2b3ecc964736f6c634300080b0033

Deployed Bytecode

0x6080604052600436106103fe5760003560e01c80637154798411610213578063b8fe3eb511610123578063d2ce0db2116100ab578063ee36e3591161007a578063ee36e35914610c8f578063f275f64b14610ca9578063f2fde38b14610cc9578063f7c70d4514610ce9578063fcf07c6b14610d0957600080fd5b8063d2ce0db214610bf3578063d543dbeb14610c09578063dd62ed3e14610c29578063ea2f0b3714610c6f57600080fd5b8063c6055ec3116100f2578063c6055ec314610b4f578063cea2085114610b6f578063cea2695814610ba3578063cec0b70614610bc3578063d12a768814610bdd57600080fd5b8063b8fe3eb514610ae4578063c0b0fda214610b04578063c49b9a8014610b1a578063c5e442f014610b3a57600080fd5b806394e6a839116101a6578063a5ece94111610175578063a5ece94114610a37578063a87859f614610a57578063a9059cbb14610a84578063b030b34a14610aa4578063b7cd779414610ac457600080fd5b806394e6a8391461099f57806395d89b41146109d35780639eb942e514610a01578063a457c2d714610a1757600080fd5b80638da5cb5b116101e25780638da5cb5b1461092b5780638ee88c53146109495780638efb384314610969578063949e63021461097f57600080fd5b8063715479841461089c57806374dfa316146108bc5780637d1db4a5146108dc57806388f82020146108f257600080fd5b80633685d4191161030e5780634ada218b116102a15780635fe87665116102705780635fe87665146107fd57806361a60d57146108315780636bc87c3a1461085157806370a0823114610867578063715018a61461088757600080fd5b80634ada218b1461076357806352390c02146107845780635342acb4146107a45780635d098b38146107dd57600080fd5b8063437823ec116102dd578063437823ec146106e2578063441b1d30146107025780634549b039146107225780634a74bb021461074257600080fd5b80633685d4191461066c578063395093511461068c5780633b124fe7146106ac5780633bd5d173146106c257600080fd5b806318160ddd1161039157806323b872dd1161036057806323b872dd146105d057806326fddf08146105f057806327c8f835146106105780632d83811914610630578063313ce5671461065057600080fd5b806318160ddd1461055b5780631c75f0851461057a5780631d7ef8791461059a57806322976e0d146105ba57600080fd5b8063095ea7b3116103cd578063095ea7b3146104b35780630d65df9b146104e35780631525ff7d146105035780631811eea61461052357600080fd5b8063015493b41461040a578063061c82d01461042c5780630659ce5c1461044c57806306fdde031461046c57600080fd5b3661040557005b600080fd5b34801561041657600080fd5b5061042a6104253660046138a1565b610d29565b005b34801561043857600080fd5b5061042a6104473660046138bc565b610d7e565b34801561045857600080fd5b5061042a6104673660046138d5565b610dad565b34801561047857600080fd5b5060408051808201909152600c81526b098eadcc240a4cac4d2e4e8d60a31b60208201525b6040516104aa9190613911565b60405180910390f35b3480156104bf57600080fd5b506104d36104ce366004613966565b610e54565b60405190151581526020016104aa565b3480156104ef57600080fd5b5061042a6104fe3660046138d5565b610e6b565b34801561050f57600080fd5b5061042a61051e3660046138a1565b610f0e565b34801561052f57600080fd5b50602154610543906001600160a01b031681565b6040516001600160a01b0390911681526020016104aa565b34801561056757600080fd5b50600a545b6040519081526020016104aa565b34801561058657600080fd5b50601454610543906001600160a01b031681565b3480156105a657600080fd5b5061042a6105b53660046138a1565b610f5a565b3480156105c657600080fd5b5061056c601b5481565b3480156105dc57600080fd5b506104d36105eb3660046138d5565b6110cb565b3480156105fc57600080fd5b5061042a61060b3660046138bc565b611134565b34801561061c57600080fd5b50601054610543906001600160a01b031681565b34801561063c57600080fd5b5061056c61064b3660046138bc565b611163565b34801561065c57600080fd5b50604051600981526020016104aa565b34801561067857600080fd5b5061042a6106873660046138a1565b6111e7565b34801561069857600080fd5b506104d36106a7366004613966565b61139e565b3480156106b857600080fd5b5061056c60155481565b3480156106ce57600080fd5b5061042a6106dd3660046138bc565b6113d4565b3480156106ee57600080fd5b5061042a6106fd3660046138a1565b6114c0565b34801561070e57600080fd5b5061042a61071d3660046138bc565b611580565b34801561072e57600080fd5b5061056c61073d36600461399e565b611627565b34801561074e57600080fd5b506021546104d390600160a81b900460ff1681565b34801561076f57600080fd5b506021546104d390600160b01b900460ff1681565b34801561079057600080fd5b5061042a61079f3660046138a1565b6116b6565b3480156107b057600080fd5b506104d36107bf3660046138a1565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156107e957600080fd5b5061042a6107f83660046138a1565b611809565b34801561080957600080fd5b506105437f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b34801561083d57600080fd5b5061042a61084c3660046138a1565b611855565b34801561085d57600080fd5b5061056c60175481565b34801561087357600080fd5b5061056c6108823660046138a1565b6118a1565b34801561089357600080fd5b5061042a611900565b3480156108a857600080fd5b5061042a6108b73660046138a1565b611980565b3480156108c857600080fd5b5061042a6108d73660046138bc565b6119cb565b3480156108e857600080fd5b5061056c60225481565b3480156108fe57600080fd5b506104d361090d3660046138a1565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561093757600080fd5b506000546001600160a01b0316610543565b34801561095557600080fd5b5061042a6109643660046138bc565b6119fa565b34801561097557600080fd5b5061056c601d5481565b34801561098b57600080fd5b5061042a61099a3660046138bc565b611a29565b3480156109ab57600080fd5b506105437f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b3480156109df57600080fd5b50604080518082019091526005815264263ab730a960d91b602082015261049d565b348015610a0d57600080fd5b5061056c601f5481565b348015610a2357600080fd5b506104d3610a32366004613966565b611a58565b348015610a4357600080fd5b50600e54610543906001600160a01b031681565b348015610a6357600080fd5b5061056c610a723660046138a1565b60246020526000908152604090205481565b348015610a9057600080fd5b506104d3610a9f366004613966565b611aa7565b348015610ab057600080fd5b5061042a610abf3660046138a1565b611ab4565b348015610ad057600080fd5b5061042a610adf3660046138a1565b611c38565b348015610af057600080fd5b5061042a610aff366004613966565b611c86565b348015610b1057600080fd5b5061056c60195481565b348015610b2657600080fd5b5061042a610b353660046139ce565b611ceb565b348015610b4657600080fd5b5061042a611d6d565b348015610b5b57600080fd5b5061042a610b6a3660046138bc565b611e1a565b348015610b7b57600080fd5b506105437f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b348015610baf57600080fd5b5061042a610bbe3660046138bc565b611e49565b348015610bcf57600080fd5b506029546104d39060ff1681565b348015610be957600080fd5b5061056c60235481565b348015610bff57600080fd5b5061056c60265481565b348015610c1557600080fd5b5061042a610c243660046138bc565b611e78565b348015610c3557600080fd5b5061056c610c443660046139eb565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b348015610c7b57600080fd5b5061042a610c8a3660046138a1565b611ec8565b348015610c9b57600080fd5b506025546104d39060ff1681565b348015610cb557600080fd5b5061042a610cc43660046139ce565b611f23565b348015610cd557600080fd5b5061042a610ce43660046138a1565b611f6b565b348015610cf557600080fd5b5061042a610d043660046139ce565b612055565b348015610d1557600080fd5b50600f54610543906001600160a01b031681565b6000546001600160a01b03163314610d5c5760405162461bcd60e51b8152600401610d5390613a1e565b60405180910390fd5b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610da85760405162461bcd60e51b8152600401610d5390613a1e565b601555565b6000546001600160a01b03163314610dd75760405162461bcd60e51b8152600401610d5390613a1e565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284919082169063a9059cbb906044016020604051808303816000875af1158015610e29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4d9190613a53565b5050505050565b6000610e613384846120d4565b5060015b92915050565b6000546001600160a01b03163314610e955760405162461bcd60e51b8152600401610d5390613a1e565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af1158015610ee4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f089190613a53565b50505050565b6000546001600160a01b03163314610f385760405162461bcd60e51b8152600401610d5390613a1e565b601480546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610f845760405162461bcd60e51b8152600401610d5390613a1e565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0382161415610ffc5760405162461bcd60e51b815260206004820152602260248201527f57652063616e6e6f7420626c61636b6c69737420556e695377617020726f757460448201526132b960f11b6064820152608401610d53565b6001600160a01b0381166000908152602a602052604090205460ff16156110655760405162461bcd60e51b815260206004820152601e60248201527f4163636f756e7420697320616c726561647920626c61636b6c697374656400006044820152606401610d53565b6001600160a01b03166000818152602a60205260408120805460ff19166001908117909155602c805491820181559091527f7416c943b4a09859521022fd2e90eac0dd9026dad28fa317782a135f28a860910180546001600160a01b0319169091179055565b600061111f843361111a85604051806060016040528060288152602001613bdd602891396001600160a01b038a16600090815260056020908152604080832033845290915290205491906121f8565b6120d4565b61112a848484612232565b5060019392505050565b6000546001600160a01b0316331461115e5760405162461bcd60e51b8152600401610d5390613a1e565b601d55565b6000600b548211156111ca5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610d53565b60006111d4612776565b90506111e08382612092565b9392505050565b6000546001600160a01b031633146112115760405162461bcd60e51b8152600401610d5390613a1e565b6001600160a01b03811660009081526007602052604090205460ff166112795760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610d53565b60005b60095481101561139a57816001600160a01b0316600982815481106112a3576112a3613a70565b6000918252602090912001546001600160a01b0316141561138857600980546112ce90600190613a9c565b815481106112de576112de613a70565b600091825260209091200154600980546001600160a01b03909216918390811061130a5761130a613a70565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600482526040808220829055600790925220805460ff19169055600980548061136257611362613ab3565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b8061139281613ac9565b91505061127c565b5050565b3360008181526005602090815260408083206001600160a01b03871684529091528120549091610e6191859061111a9086612799565b3360008181526007602052604090205460ff16156114495760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610d53565b6000611454836127f8565b5050506001600160a01b03861660009081526003602052604090205493945061148293925084915050612853565b6001600160a01b038316600090815260036020526040902055600b546114a89082612853565b600b55600c546114b89084612799565b600c55505050565b6000546001600160a01b031633146114ea5760405162461bcd60e51b8152600401610d5390613a1e565b6114fc816001600160a01b0316612895565b801561151657506021546001600160a01b03828116911614155b801561155457507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316816001600160a01b031614155b1561157d576001600160a01b0381166000908152600660205260409020805460ff191660011790555b50565b6000546001600160a01b031633146115aa5760405162461bcd60e51b8152600401610d5390613a1e565b804710156115fa5760405162461bcd60e51b815260206004820152601860248201527f696e73756666696369656e74204554482062616c616e636500000000000000006044820152606401610d53565b604051339082156108fc029083906000818181858888f1935050505015801561139a573d6000803e3d6000fd5b6000600a5483111561167b5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610d53565b8161169b57600061168b846127f8565b50949650610e6595505050505050565b60006116a6846127f8565b50939650610e6595505050505050565b6000546001600160a01b031633146116e05760405162461bcd60e51b8152600401610d5390613a1e565b6001600160a01b03811660009081526007602052604090205460ff16156117495760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610d53565b6001600160a01b038116600090815260036020526040902054156117a3576001600160a01b03811660009081526003602052604090205461178990611163565b6001600160a01b0382166000908152600460205260409020555b6001600160a01b03166000818152600760205260408120805460ff191660019081179091556009805491820181559091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b0319169091179055565b6000546001600160a01b031633146118335760405162461bcd60e51b8152600401610d5390613a1e565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461187f5760405162461bcd60e51b8152600401610d5390613a1e565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811660009081526007602052604081205460ff16156118de57506001600160a01b031660009081526004602052604090205490565b6001600160a01b038216600090815260036020526040902054610e6590611163565b6000546001600160a01b0316331461192a5760405162461bcd60e51b8152600401610d5390613a1e565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319908116909155600180549091169055565b6000546001600160a01b031633146119aa5760405162461bcd60e51b8152600401610d5390613a1e565b6001600160a01b03166000908152600860205260409020805460ff19169055565b6000546001600160a01b031633146119f55760405162461bcd60e51b8152600401610d5390613a1e565b602355565b6000546001600160a01b03163314611a245760405162461bcd60e51b8152600401610d5390613a1e565b601755565b6000546001600160a01b03163314611a535760405162461bcd60e51b8152600401610d5390613a1e565b601f55565b6000610e61338461111a85604051806060016040528060258152602001613c05602591393360009081526005602090815260408083206001600160a01b038d16845290915290205491906121f8565b6000610e61338484612232565b6000546001600160a01b03163314611ade5760405162461bcd60e51b8152600401610d5390613a1e565b6001600160a01b0381166000908152602a602052604090205460ff16611b465760405162461bcd60e51b815260206004820152601a60248201527f4163636f756e74206973206e6f7420626c61636b6c69737465640000000000006044820152606401610d53565b60005b602c5481101561139a57816001600160a01b0316602c8281548110611b7057611b70613a70565b6000918252602090912001546001600160a01b03161415611c2657602c8054611b9b90600190613a9c565b81548110611bab57611bab613a70565b600091825260209091200154602c80546001600160a01b039092169183908110611bd757611bd7613a70565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152602a90915260409020805460ff19169055602c80548061136257611362613ab3565b80611c3081613ac9565b915050611b49565b6000546001600160a01b03163314611c625760405162461bcd60e51b8152600401610d5390613a1e565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b6000546001600160a01b03163314611cb05760405162461bcd60e51b8152600401610d5390613a1e565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015611ce6573d6000803e3d6000fd5b505050565b6000546001600160a01b03163314611d155760405162461bcd60e51b8152600401610d5390613a1e565b60218054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15990611d6290831515815260200190565b60405180910390a150565b6000546001600160a01b03163314611d975760405162461bcd60e51b8152600401610d5390613a1e565b60005b602854811015611dfc57600060288281548110611db957611db9613a70565b60009182526020822001546001600160a01b03169150611dd8826118a1565b9050611de78261dead836128d1565b50508080611df490613ac9565b915050611d9a565b50604080516000815260208101918290525161157d9160289161380b565b6000546001600160a01b03163314611e445760405162461bcd60e51b8152600401610d5390613a1e565b601b55565b6000546001600160a01b03163314611e735760405162461bcd60e51b8152600401610d5390613a1e565b601955565b6000546001600160a01b03163314611ea25760405162461bcd60e51b8152600401610d5390613a1e565b611ec26064611ebc83600a546129e990919063ffffffff16565b90612092565b60225550565b6000546001600160a01b03163314611ef25760405162461bcd60e51b8152600401610d5390613a1e565b6001600160a01b038116301461157d576001600160a01b03166000908152600660205260409020805460ff19169055565b6000546001600160a01b03163314611f4d5760405162461bcd60e51b8152600401610d5390613a1e565b60218054911515600160b01b0260ff60b01b19909216919091179055565b6000546001600160a01b03163314611f955760405162461bcd60e51b8152600401610d5390613a1e565b6001600160a01b038116611ffa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d53565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461207f5760405162461bcd60e51b8152600401610d5390613a1e565b6029805460ff1916911515919091179055565b60006111e083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a68565b6001600160a01b0383166121365760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610d53565b6001600160a01b0382166121975760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610d53565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000818484111561221c5760405162461bcd60e51b8152600401610d539190613911565b5060006122298486613a9c565b95945050505050565b6001600160a01b0383166122965760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610d53565b6001600160a01b0382166122f85760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610d53565b6000811161235a5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610d53565b6001600160a01b0383166000908152602a602052604090205460ff16156123b95760405162461bcd60e51b8152602060048201526013602482015272165bdd48185c9948189b1858dadb1a5cdd1959606a1b6044820152606401610d53565b336000908152602a602052604090205460ff16156124075760405162461bcd60e51b815260206004820152600b60248201526a189b1858dadb1a5cdd195960aa1b6044820152606401610d53565b326000908152602a602052604090205460ff16156124555760405162461bcd60e51b815260206004820152600b60248201526a189b1858dadb1a5cdd195960aa1b6044820152606401610d53565b6000546001600160a01b038481169116146124c357602154600160b01b900460ff166124c35760405162461bcd60e51b815260206004820152601a60248201527f54726164696e67206973206e6f7420656e61626c6564207965740000000000006044820152606401610d53565b6000546001600160a01b038481169116148015906124ef57506000546001600160a01b03838116911614155b15612577576001600160a01b03831660009081526008602052604090205460ff16612577576022548111156125775760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610d53565b60016000612584306118a1565b9050602254811061259457506022545b602354811080159081906125b25750602154600160a01b900460ff16155b80156125cc57506021546001600160a01b03878116911614155b80156125e15750602154600160a81b900460ff165b80156125f057508260ff166001145b156125fe576125fe82612a96565b6021546001600160a01b03878116911614801561261d575060295460ff165b15612688576001600160a01b0385166000818152602760205260408120805460ff191660019081179091556028805491820181559091527fe16da923a2d88192e5070f37b4571d58682c0d66212ec634d495f33de3f77ab50180546001600160a01b03191690911790555b6001600160a01b03861660009081526006602052604090205460ff16806126c757506001600160a01b03851660009081526006602052604090205460ff165b156126d157600092505b6021546001600160a01b038781169116148015906126fd57506021546001600160a01b03868116911614155b1561270757600092505b8260ff166001141561276257600061271f8786612dab565b9050600061272d8887612e9a565b9050600061273b8988612ea6565b9050816127488285613ae4565b6127529190613ae4565b61275c9088613a9c565b96505050505b61276e86868686612eb2565b505050505050565b6000806000612783613038565b90925090506127928282612092565b9250505090565b6000806127a68385613ae4565b9050838110156111e05760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610d53565b60008060008060008060008060008060006128128c6131ba565b935093509350935060008060006128338f87878761282e612776565b613209565b919f509d509b509599509397509195509350505050919395979092949650565b60006111e083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506121f8565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906128c957508115155b949350505050565b60008060008060008060006128e5886127f8565b965096509650965096509650965061292b87600360008d6001600160a01b03166001600160a01b031681526020019081526020016000205461285390919063ffffffff16565b6001600160a01b03808c1660009081526003602052604080822093909355908b168152205461295a9087612799565b6001600160a01b038a1660009081526003602052604090205561297c8161327e565b6129868a83613306565b6129908584613395565b886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516129d591815260200190565b60405180910390a350505050505050505050565b6000826129f857506000610e65565b6000612a048385613afc565b905082612a118583613b1b565b146111e05760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610d53565b60008183612a895760405162461bcd60e51b8152600401610d539190613911565b5060006122298486613b1b565b6021805460ff60a01b1916600160a01b1790556000612ac96002611ebc612abb6133b9565b601754611ebc9087906129e9565b90506000612ad78383612853565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110612b1157612b11613a70565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110612b6557612b65613a70565b60200260200101906001600160a01b031690816001600160a01b031681525050612bb0307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d866120d4565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790612c05908590600090869030904290600401613b3d565b600060405180830381600087803b158015612c1f57600080fd5b505af1158015612c33573d6000803e3d6000fd5b505060175447925060009150612c5c90612c4e906002612092565b612c566133b9565b90612853565b90506000612c7e6002611ebc84611ebc601754886129e990919063ffffffff16565b90506000612c9b83611ebc601b54876129e990919063ffffffff16565b90506000612cb884611ebc601d54886129e990919063ffffffff16565b90506000612cd585611ebc601f54896129e990919063ffffffff16565b9050612ce189856133e9565b600e546040516001600160a01b039091169084156108fc029085906000818181858888f19350505050158015612d1b573d6000803e3d6000fd5b50600f546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015612d56573d6000803e3d6000fd5b506014546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612d91573d6000803e3d6000fd5b50506021805460ff60a01b19169055505050505050505050565b600080612db7836134e8565b30600090815260036020526040902054909150612dd49082612799565b30600090815260036020526040808220929092556001600160a01b03861681522054612e009082612853565b6001600160a01b038516600081815260036020908152604091829020939093555183815230927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a33060009081526007602052604090205460ff16156111e05730600090815260046020526040902054612e839084612799565b306000908152600460205260409020559392505050565b600080612db783613504565b600080612db783613520565b60ff8116612ec257612ec261353c565b6001600160a01b03841660009081526007602052604090205460ff168015612f0357506001600160a01b03831660009081526007602052604090205460ff16155b15612f1857612f13848484613581565b613016565b6001600160a01b03841660009081526007602052604090205460ff16158015612f5957506001600160a01b03831660009081526007602052604090205460ff165b15612f6957612f1384848461366f565b6001600160a01b03841660009081526007602052604090205460ff16158015612fab57506001600160a01b03831660009081526007602052604090205460ff16155b15612fbb57612f138484846128d1565b6001600160a01b03841660009081526007602052604090205460ff168015612ffb57506001600160a01b03831660009081526007602052604090205460ff165b1561300b57612f1384848461372e565b6130168484846128d1565b8060ff16600114610f0857610f08601654601555601a54601955601854601755565b600b54600a546000918291825b60095481101561318a5782600360006009848154811061306757613067613a70565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806130d257508160046000600984815481106130ab576130ab613a70565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156130e857600b54600a54945094505050509091565b61312e600360006009848154811061310257613102613a70565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612853565b9250613176600460006009848154811061314a5761314a613a70565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612853565b91508061318281613ac9565b915050613045565b50600a54600b5461319a91612092565b8210156131b157600b54600a549350935050509091565b90939092509050565b60008060008060006131cb866137b7565b905060006131d8876137d3565b905060006131e5886137ef565b905060006131f982612c5685818d89612853565b9993985091965094509092505050565b600080808061321889866129e9565b9050600061322689876129e9565b9050600061323489886129e9565b9050600061324289896129e9565b9050600061325a826132548686612799565b90612799565b905060006132688683612853565b959e959d50939b50939950505050505050505050565b6000613288612776565b9050600061329683836129e9565b306000908152600360205260409020549091506132b39082612799565b3060009081526003602090815260408083209390935560079052205460ff1615611ce657306000908152600460205260409020546132f19084612799565b30600090815260046020526040902055505050565b6010546001600160a01b031660009081526004602052604090205461332b9082612799565b6010546001600160a01b0316600090815260046020526040902055801561139a576010546040518281526001600160a01b03918216918416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600b546133a29083612853565b600b55600c546133b29082612799565b600c555050565b60006133e4601d54613254601b5461325460195461325460175460155461279990919063ffffffff16565b905090565b613414307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846120d4565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663f305d71982308560008061345b6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156134c3573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610e4d9190613bae565b6000610e656064611ebc601b54856129e990919063ffffffff16565b6000610e656064611ebc601d54856129e990919063ffffffff16565b6000610e656064611ebc601f54856129e990919063ffffffff16565b60155415801561354c5750601954155b80156135585750601754155b1561355f57565b6015805460165560198054601a55601780546018556000928390559082905555565b6000806000806000806000613595886127f8565b96509650965096509650965096506135db88600460008d6001600160a01b03166001600160a01b031681526020019081526020016000205461285390919063ffffffff16565b6001600160a01b038b1660009081526004602090815260408083209390935560039052205461360a9088612853565b6001600160a01b03808c1660009081526003602052604080822093909355908b16815220546136399087612799565b6001600160a01b038a1660009081526003602052604090205561365c8584613395565b6136658161327e565b6129908a83613306565b6000806000806000806000613683886127f8565b96509650965096509650965096506136c987600360008d6001600160a01b03166001600160a01b031681526020019081526020016000205461285390919063ffffffff16565b6001600160a01b03808c16600090815260036020908152604080832094909455918c168152600490915220546136ff9085612799565b6001600160a01b038a1660009081526004602090815260408083209390935560039052205461295a9087612799565b6000806000806000806000613742886127f8565b965096509650965096509650965061378888600460008d6001600160a01b03166001600160a01b031681526020019081526020016000205461285390919063ffffffff16565b6001600160a01b038b166000908152600460209081526040808320939093556003905220546136c99088612853565b6000610e656064611ebc601554856129e990919063ffffffff16565b6000610e656064611ebc601954856129e990919063ffffffff16565b6000610e656064611ebc601754856129e990919063ffffffff16565b828054828255906000526020600020908101928215613860579160200282015b8281111561386057825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019061382b565b5061386c929150613870565b5090565b5b8082111561386c5760008155600101613871565b80356001600160a01b038116811461389c57600080fd5b919050565b6000602082840312156138b357600080fd5b6111e082613885565b6000602082840312156138ce57600080fd5b5035919050565b6000806000606084860312156138ea57600080fd5b6138f384613885565b925061390160208501613885565b9150604084013590509250925092565b600060208083528351808285015260005b8181101561393e57858101830151858201604001528201613922565b81811115613950576000604083870101525b50601f01601f1916929092016040019392505050565b6000806040838503121561397957600080fd5b61398283613885565b946020939093013593505050565b801515811461157d57600080fd5b600080604083850312156139b157600080fd5b8235915060208301356139c381613990565b809150509250929050565b6000602082840312156139e057600080fd5b81356111e081613990565b600080604083850312156139fe57600080fd5b613a0783613885565b9150613a1560208401613885565b90509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215613a6557600080fd5b81516111e081613990565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082821015613aae57613aae613a86565b500390565b634e487b7160e01b600052603160045260246000fd5b6000600019821415613add57613add613a86565b5060010190565b60008219821115613af757613af7613a86565b500190565b6000816000190483118215151615613b1657613b16613a86565b500290565b600082613b3857634e487b7160e01b600052601260045260246000fd5b500490565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613b8d5784516001600160a01b031683529383019391830191600101613b68565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215613bc357600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212202f9dad761ffa4aa61b5ad3380e65f819dfe631ff442a8fb416fc59c1b2b3ecc964736f6c634300080b0033

Deployed Bytecode Sourcemap

15087:29559:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26281:125;;;;;;;;;;-1:-1:-1;26281:125:0;;;;;:::i;:::-;;:::i;:::-;;25258:98;;;;;;;;;;-1:-1:-1;25258:98:0;;;;;:::i;:::-;;:::i;42260:216::-;;;;;;;;;;-1:-1:-1;42260:216:0;;;;;:::i;:::-;;:::i;19888:85::-;;;;;;;;;;-1:-1:-1;19960:5:0;;;;;;;;;;;;-1:-1:-1;;;19960:5:0;;;;19888:85;;;;;;;:::i;:::-;;;;;;;;20829:163;;;;;;;;;;-1:-1:-1;20829:163:0;;;;;:::i;:::-;;:::i;:::-;;;1927:14:1;;1920:22;1902:41;;1890:2;1875:18;20829:163:0;1762:187:1;42925:154:0;;;;;;;;;;-1:-1:-1;42925:154:0;;;;;:::i;:::-;;:::i;26412:113::-;;;;;;;;;;-1:-1:-1;26412:113:0;;;;;:::i;:::-;;:::i;17290:32::-;;;;;;;;;;-1:-1:-1;17290:32:0;;;;-1:-1:-1;;;;;17290:32:0;;;;;;-1:-1:-1;;;;;2118:32:1;;;2100:51;;2088:2;2073:18;17290:32:0;1954:203:1;20178:97:0;;;;;;;;;;-1:-1:-1;20260:7:0;;20178:97;;;2308:25:1;;;2296:2;2281:18;20178:97:0;2162:177:1;16525:88:0;;;;;;;;;;-1:-1:-1;16525:88:0;;;;-1:-1:-1;;;;;16525:88:0;;;43704:385;;;;;;;;;;-1:-1:-1;43704:385:0;;;;;:::i;:::-;;:::i;16892:31::-;;;;;;;;;;;;;;;;21000:315;;;;;;;;;;-1:-1:-1;21000:315:0;;;;;:::i;:::-;;:::i;25629:123::-;;;;;;;;;;-1:-1:-1;25629:123:0;;;;;:::i;:::-;;:::i;16221:72::-;;;;;;;;;;-1:-1:-1;16221:72:0;;;;-1:-1:-1;;;;;16221:72:0;;;22982:253;;;;;;;;;;-1:-1:-1;22982:253:0;;;;;:::i;:::-;;:::i;20078:92::-;;;;;;;;;;-1:-1:-1;20078:92:0;;15774:1;2710:36:1;;2698:2;2683:18;20078:92:0;2568:184:1;23633:613:0;;;;;;;;;;-1:-1:-1;23633:613:0;;;;;:::i;:::-;;:::i;21323:220::-;;;;;;;;;;-1:-1:-1;21323:220:0;;;;;:::i;:::-;;:::i;16628:26::-;;;;;;;;;;;;;;;;22136:390;;;;;;;;;;-1:-1:-1;22136:390:0;;;;;:::i;:::-;;:::i;24375:214::-;;;;;;;;;;-1:-1:-1;24375:214:0;;;;;:::i;:::-;;:::i;42552:196::-;;;;;;;;;;-1:-1:-1;42552:196:0;;;;;:::i;:::-;;:::i;22534:440::-;;;;;;;;;;-1:-1:-1;22534:440:0;;;;;:::i;:::-;;:::i;17564:40::-;;;;;;;;;;-1:-1:-1;17564:40:0;;;;-1:-1:-1;;;17564:40:0;;;;;;17613:26;;;;;;;;;;-1:-1:-1;17613:26:0;;;;-1:-1:-1;;;17613:26:0;;;;;;23243:382;;;;;;;;;;-1:-1:-1;23243:382:0;;;;;:::i;:::-;;:::i;33376:123::-;;;;;;;;;;-1:-1:-1;33376:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;33464:27:0;33440:4;33464:27;;;:18;:27;;;;;;;;;33376:123;26150;;;;;;;;;;-1:-1:-1;26150:123:0;;;;;:::i;:::-;;:::i;17241:42::-;;;;;;;;;;;;;;;26537:104;;;;;;;;;;-1:-1:-1;26537:104:0;;;;;:::i;:::-;;:::i;16709:32::-;;;;;;;;;;;;;;;;20283:208;;;;;;;;;;-1:-1:-1;20283:208:0;;;;;:::i;:::-;;:::i;14547:277::-;;;;;;;;;;;;;:::i;24831:131::-;;;;;;;;;;-1:-1:-1;24831:131:0;;;;;:::i;:::-;;:::i;25110:136::-;;;;;;;;;;-1:-1:-1;25110:136:0;;;;;:::i;:::-;;:::i;17652:46::-;;;;;;;;;;;;;;;;21830:132;;;;;;;;;;-1:-1:-1;21830:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;21924:30:0;21900:4;21924:30;;;:21;:30;;;;;;;;;21830:132;14337:79;;;;;;;;;;-1:-1:-1;14375:7:0;14402:6;-1:-1:-1;;;;;14402:6:0;14337:79;;25368:122;;;;;;;;;;-1:-1:-1;25368:122:0;;;;;:::i;:::-;;:::i;16990:32::-;;;;;;;;;;;;;;;;25761:99;;;;;;;;;;-1:-1:-1;25761:99:0;;;;;:::i;:::-;;:::i;17177:57::-;;;;;;;;;;;;;;;19981:89;;;;;;;;;;-1:-1:-1;20055:7:0;;;;;;;;;;;;-1:-1:-1;;;20055:7:0;;;;19981:89;;17092:26;;;;;;;;;;;;;;;;21551:271;;;;;;;;;;-1:-1:-1;21551:271:0;;;;;:::i;:::-;;:::i;16020:93::-;;;;;;;;;;-1:-1:-1;16020:93:0;;;;-1:-1:-1;;;;;16020:93:0;;;32981:46;;;;;;;;;;-1:-1:-1;32981:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;20499:169;;;;;;;;;;-1:-1:-1;20499:169:0;;;;;:::i;:::-;;:::i;44097:538::-;;;;;;;;;;-1:-1:-1;44097:538:0;;;;;:::i;:::-;;:::i;24970:132::-;;;;;;;;;;-1:-1:-1;24970:132:0;;;;;:::i;:::-;;:::i;42120:::-;;;;;;;;;;-1:-1:-1;42120:132:0;;;;;:::i;:::-;;:::i;16808:27::-;;;;;;;;;;;;;;;;26649:175;;;;;;;;;;-1:-1:-1;26649:175:0;;;;;:::i;:::-;;:::i;43093:348::-;;;;;;;;;;;;;:::i;25502:119::-;;;;;;;;;;-1:-1:-1;25502:119:0;;;;;:::i;:::-;;:::i;17329:44::-;;;;;;;;;;;;;;;25868:101;;;;;;;;;;-1:-1:-1;25868:101:0;;;;;:::i;:::-;;:::i;33235:28::-;;;;;;;;;;-1:-1:-1;33235:28:0;;;;;;;;17705:67;;;;;;;;;;;;;;;;33075:41;;;;;;;;;;;;;;;;25980:162;;;;;;;;;;-1:-1:-1;25980:162:0;;;;;:::i;:::-;;:::i;20676:145::-;;;;;;;;;;-1:-1:-1;20676:145:0;;;;;:::i;:::-;-1:-1:-1;;;;;20786:18:0;;;20759:7;20786:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;20676:145;24672:151;;;;;;;;;;-1:-1:-1;24672:151:0;;;;;:::i;:::-;;:::i;33034:34::-;;;;;;;;;;-1:-1:-1;33034:34:0;;;;;;;;19776:104;;;;;;;;;;-1:-1:-1;19776:104:0;;;;;:::i;:::-;;:::i;14830:246::-;;;;;;;;;;-1:-1:-1;14830:246:0;;;;;:::i;:::-;;:::i;43453:81::-;;;;;;;;;;-1:-1:-1;43453:81:0;;;;;:::i;:::-;;:::i;16120:94::-;;;;;;;;;;-1:-1:-1;16120:94:0;;;;-1:-1:-1;;;;;16120:94:0;;;26281:125;14462:6;;-1:-1:-1;;;;;14462:6:0;2522:10;14462:22;14454:67;;;;-1:-1:-1;;;14454:67:0;;;;;;;:::i;:::-;;;;;;;;;26363:17:::1;:35:::0;;-1:-1:-1;;;;;;26363:35:0::1;-1:-1:-1::0;;;;;26363:35:0;;;::::1;::::0;;;::::1;::::0;;26281:125::o;25258:98::-;14462:6;;-1:-1:-1;;;;;14462:6:0;2522:10;14462:22;14454:67;;;;-1:-1:-1;;;14454:67:0;;;;;;;:::i;:::-;25332:7:::1;:16:::0;25258:98::o;42260:216::-;14462:6;;-1:-1:-1;;;;;14462:6:0;2522:10;14462:22;14454:67;;;;-1:-1:-1;;;14454:67:0;;;;;;;:::i;:::-;42428:40:::1;::::0;-1:-1:-1;;;42428:40:0;;-1:-1:-1;;;;;4493:32:1;;;42428:40:0::1;::::0;::::1;4475:51:1::0;4542:18;;;4535:34;;;42404:12:0;;42428:21;;::::1;::::0;::::1;::::0;4448:18:1;;42428:40:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;42364:112;42260:216:::0;;;:::o;20829:163::-;20906:4;20923:39;2522:10;20946:7;20955:6;20923:8;:39::i;:::-;-1:-1:-1;20980:4:0;20829:163;;;;;:::o;42925:154::-;14462:6;;-1:-1:-1;;;;;14462:6:0;2522:10;14462:22;14454:67;;;;-1:-1:-1;;;14454:67:0;;;;;;;:::i;:::-;43030:41:::1;::::0;-1:-1:-1;;;43030:41:0;;-1:-1:-1;;;;;4493:32:1;;;43030:41:0::1;::::0;::::1;4475:51:1::0;4542:18;;;4535:34;;;43030:27:0;::::1;::::0;::::1;::::0;4448:18:1;;43030:41:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;42925:154:::0;;;:::o;26412:113::-;14462:6;;-1:-1:-1;;;;;14462:6:0;2522:10;14462:22;14454:67;;;;-1:-1:-1;;;14454:67:0;;;;;;;:::i;:::-;26488:11:::1;:29:::0;;-1:-1:-1;;;;;;26488:29:0::1;-1:-1:-1::0;;;;;26488:29:0;;;::::1;::::0;;;::::1;::::0;;26412:113::o;43704:385::-;14462:6;;-1:-1:-1;;;;;14462:6:0;2522:10;14462:22;14454:67;;;;-1:-1:-1;;;14454:67:0;;;;;;;:::i;:::-;43811:42:::1;-1:-1:-1::0;;;;;43800:53:0;::::1;;;43778:137;;;::::0;-1:-1:-1;;;43778:137:0;;5032:2:1;43778:137:0::1;::::0;::::1;5014:21:1::0;5071:2;5051:18;;;5044:30;5110:34;5090:18;;;5083:62;-1:-1:-1;;;5161:18:1;;;5154:32;5203:19;;43778:137:0::1;4830:398:1::0;43778:137:0::1;-1:-1:-1::0;;;;;43935:26:0;::::1;;::::0;;;:17:::1;:26;::::0;;;;;::::1;;43934:27;43926:70;;;::::0;-1:-1:-1;;;43926:70:0;;5435:2:1;43926:70:0::1;::::0;::::1;5417:21:1::0;5474:2;5454:18;;;5447:30;5513:32;5493:18;;;5486:60;5563:18;;43926:70:0::1;5233:354:1::0;43926:70:0::1;-1:-1:-1::0;;;;;44007:26:0::1;;::::0;;;:17:::1;:26;::::0;;;;:33;;-1:-1:-1;;44007:33:0::1;44036:4;44007:33:::0;;::::1;::::0;;;44051:16:::1;:30:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;44051:30:0::1;::::0;;::::1;::::0;;43704:385::o;21000:315::-;21100:4;21117:121;21126:6;2522:10;21148:89;21186:6;21148:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21148:19:0;;;;;;:11;:19;;;;;;;;2522:10;21148:33;;;;;;;;;;:37;:89::i;:::-;21117:8;:121::i;:::-;21249:36;21259:6;21267:9;21278:6;21249:9;:36::i;:::-;-1:-1:-1;21303:4:0;21000:315;;;;;:::o;25629:123::-;14462:6;;-1:-1:-1;;;;;14462:6:0;2522:10;14462:22;14454:67;;;;-1:-1:-1;;;14454:67:0;;;;;;;:::i;:::-;25714:14:::1;:30:::0;25629:123::o;22982:253::-;23048:7;23087;;23076;:18;;23068:73;;;;-1:-1:-1;;;23068:73:0;;5794:2:1;23068:73:0;;;5776:21:1;5833:2;5813:18;;;5806:30;5872:34;5852:18;;;5845:62;-1:-1:-1;;;5923:18:1;;;5916:40;5973:19;;23068:73:0;5592:406:1;23068:73:0;23152:19;23175:10;:8;:10::i;:::-;23152:33;-1:-1:-1;23203:24:0;:7;23152:33;23203:11;:24::i;:::-;23196:31;22982:253;-1:-1:-1;;;22982:253:0:o;23633:613::-;14462:6;;-1:-1:-1;;;;;14462:6:0;2522:10;14462:22;14454:67;;;;-1:-1:-1;;;14454:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23715:30:0;::::1;;::::0;;;:21:::1;:30;::::0;;;;;::::1;;23707:70;;;::::0;-1:-1:-1;;;23707:70:0;;6205:2:1;23707:70:0::1;::::0;::::1;6187:21:1::0;6244:2;6224:18;;;6217:30;6283:29;6263:18;;;6256:57;6330:18;;23707:70:0::1;6003:351:1::0;23707:70:0::1;23793:9;23788:451;23812:28;:35:::0;23808:39;::::1;23788:451;;;23908:7;-1:-1:-1::0;;;;;23873:42:0::1;:28;23902:1;23873:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;23873:31:0::1;:42;23869:359;;;23970:28;23999:35:::0;;:39:::1;::::0;24037:1:::1;::::0;23999:39:::1;:::i;:::-;23970:69;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;23936:28:::1;:31:::0;;-1:-1:-1;;;;;23970:69:0;;::::1;::::0;23965:1;;23936:31;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:103:::0;;-1:-1:-1;;;;;;23936:103:0::1;-1:-1:-1::0;;;;;23936:103:0;;::::1;;::::0;;24058:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;24097:21:::1;:30:::0;;;;:38;;-1:-1:-1;;24097:38:0::1;::::0;;24154:28:::1;:34:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;24154:34:0;;;;;-1:-1:-1;;;;;;24154:34:0::1;::::0;;;;;23788:451:::1;23633:613:::0;:::o;23869:359::-:1;23849:3:::0;::::1;::::0;::::1;:::i;:::-;;;;23788:451;;;;23633:613:::0;:::o;21323:220::-;2522:10;21413:4;21462:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;21462:34:0;;;;;;;;;;21413:4;;21430:83;;21453:7;;21462:50;;21501:10;21462:38;:50::i;22136:390::-;2522:10;22190:14;22239:29;;;:21;:29;;;;;;;;22238:30;22230:87;;;;-1:-1:-1;;;22230:87:0;;7227:2:1;22230:87:0;;;7209:21:1;7266:2;7246:18;;;7239:30;7305:34;7285:18;;;7278:62;-1:-1:-1;;;7356:18:1;;;7349:42;7408:19;;22230:87:0;7025:408:1;22230:87:0;22329:15;22354:19;22365:7;22354:10;:19::i;:::-;-1:-1:-1;;;;;;;;22402:15:0;;;;;;:7;:15;;;;;;22328:45;;-1:-1:-1;22402:28:0;;:15;-1:-1:-1;22328:45:0;;-1:-1:-1;;22402:19:0;:28::i;:::-;-1:-1:-1;;;;;22384:15:0;;;;;;:7;:15;;;;;:46;22451:7;;:20;;22463:7;22451:11;:20::i;:::-;22441:7;:30;22495:10;;:23;;22510:7;22495:14;:23::i;:::-;22482:10;:36;-1:-1:-1;;;22136:390:0:o;24375:214::-;14462:6;;-1:-1:-1;;;;;14462:6:0;2522:10;14462:22;14454:67;;;;-1:-1:-1;;;14454:67:0;;;;;;;:::i;:::-;24450:20:::1;:7;-1:-1:-1::0;;;;;24450:18:0::1;;:20::i;:::-;:52;;;;-1:-1:-1::0;24485:17:0::1;::::0;-1:-1:-1;;;;;24474:28:0;;::::1;24485:17:::0;::::1;24474:28;;24450:52;:86;;;;;24517:19;-1:-1:-1::0;;;;;24506:30:0::1;:7;-1:-1:-1::0;;;;;24506:30:0::1;;;24450:86;24446:135;;;-1:-1:-1::0;;;;;24547:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;24547:34:0::1;24577:4;24547:34;::::0;;24446:135:::1;24375:214:::0;:::o;42552:196::-;14462:6;;-1:-1:-1;;;;;14462:6:0;2522:10;14462:22;14454:67;;;;-1:-1:-1;;;14454:67:0;;;;;;;:::i;:::-;42652:9:::1;42627:21;:34;;42619:71;;;::::0;-1:-1:-1;;;42619:71:0;;7640:2:1;42619:71:0::1;::::0;::::1;7622:21:1::0;7679:2;7659:18;;;7652:30;7718:26;7698:18;;;7691:54;7762:18;;42619:71:0::1;7438:348:1::0;42619:71:0::1;42701:39;::::0;42709:10:::1;::::0;42701:39;::::1;;;::::0;42730:9;;42701:39:::1;::::0;;;42730:9;42709:10;42701:39;::::1;;;;;;;;;;;;;::::0;::::1;;;;22534:440:::0;22626:7;22665;;22654;:18;;22646:62;;;;-1:-1:-1;;;22646:62:0;;7993:2:1;22646:62:0;;;7975:21:1;8032:2;8012:18;;;8005:30;8071:33;8051:18;;;8044:61;8122:18;;22646:62:0;7791:355:1;22646:62:0;22724:17;22719:248;;22759:15;22784:19;22795:7;22784:10;:19::i;:::-;-1:-1:-1;22758:45:0;;-1:-1:-1;22818:14:0;;-1:-1:-1;;;;;;22818:14:0;22719:248;22867:23;22899:19;22910:7;22899:10;:19::i;:::-;-1:-1:-1;22865:53:0;;-1:-1:-1;22933:22:0;;-1:-1:-1;;;;;;22933:22:0;23243:382;14462:6;;-1:-1:-1;;;;;14462:6:0;2522:10;14462:22;14454:67;;;;-1:-1:-1;;;14454:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23336:30:0;::::1;;::::0;;;:21:::1;:30;::::0;;;;;::::1;;23335:31;23327:71;;;::::0;-1:-1:-1;;;23327:71:0;;6205:2:1;23327:71:0::1;::::0;::::1;6187:21:1::0;6244:2;6224:18;;;6217:30;6283:29;6263:18;;;6256:57;6330:18;;23327:71:0::1;6003:351:1::0;23327:71:0::1;-1:-1:-1::0;;;;;23412:16:0;::::1;23431:1;23412:16:::0;;;:7:::1;:16;::::0;;;;;:20;23409:108:::1;;-1:-1:-1::0;;;;;23488:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;23468:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;23449:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;23409:108:::1;-1:-1:-1::0;;;;;23527:30:0::1;;::::0;;;:21:::1;:30;::::0;;;;:37;;-1:-1:-1;;23527:37:0::1;23560:4;23527:37:::0;;::::1;::::0;;;23575:28:::1;:42:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;23575:42:0::1;::::0;;::::1;::::0;;23243:382::o;26150:123::-;14462:6;;-1:-1:-1;;;;;14462:6:0;2522:10;14462:22;14454:67;;;;-1:-1:-1;;;14454:67:0;;;;;;;:::i;:::-;26231:16:::1;:34:::0;;-1:-1:-1;;;;;;26231:34:0::1;-1:-1:-1::0;;;;;26231:34:0;;;::::1;::::0;;;::::1;::::0;;26150:123::o;26537:104::-;14462:6;;-1:-1:-1;;;;;14462:6:0;2522:10;14462:22;14454:67;;;;-1:-1:-1;;;14454:67:0;;;;;;;:::i;:::-;26613:11:::1;:20:::0;;-1:-1:-1;;;;;;26613:20:0::1;-1:-1:-1::0;;;;;26613:20:0;;;::::1;::::0;;;::::1;::::0;;26537:104::o;20283:208::-;-1:-1:-1;;;;;20373:30:0;;20349:7;20373:30;;;:21;:30;;;;;;;;20369:59;;;-1:-1:-1;;;;;;20412:16:0;;;;;:7;:16;;;;;;;20283:208::o;20369:59::-;-1:-1:-1;;;;;20466:16:0;;;;;;:7;:16;;;;;;20446:37;;:19;:37::i;14547:277::-;14462:6;;-1:-1:-1;;;;;14462:6:0;2522:10;14462:22;14454:67;;;;-1:-1:-1;;;14454:67:0;;;;;;;:::i;:::-;14656:1:::1;14640:6:::0;;14619:40:::1;::::0;-1:-1:-1;;;;;14640:6:0;;::::1;::::0;14619:40:::1;::::0;14656:1;;14619:40:::1;14687:1;14670:19:::0;;-1:-1:-1;;;;;;14670:19:0;;::::1;::::0;;;;14789:27;;;;::::1;::::0;;14547:277::o;24831:131::-;14462:6;;-1:-1:-1;;;;;14462:6:0;2522:10;14462:22;14454:67;;;;-1:-1:-1;;;14454:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24912:34:0::1;24949:5;24912:34:::0;;;:25:::1;:34;::::0;;;;:42;;-1:-1:-1;;24912:42:0::1;::::0;;24831:131::o;25110:136::-;14462:6;;-1:-1:-1;;;;;14462:6:0;2522:10;14462:22;14454:67;;;;-1:-1:-1;;;14454:67:0;;;;;;;:::i;:::-;25203:29:::1;:35:::0;25110:136::o;25368:122::-;14462:6;;-1:-1:-1;;;;;14462:6:0;2522:10;14462:22;14454:67;;;;-1:-1:-1;;;14454:67:0;;;;;;;:::i;:::-;25454:13:::1;:28:::0;25368:122::o;25761:99::-;14462:6;;-1:-1:-1;;;;;14462:6:0;2522:10;14462:22;14454:67;;;;-1:-1:-1;;;14454:67:0;;;;;;;:::i;:::-;25834:8:::1;:18:::0;25761:99::o;21551:271::-;21646:4;21663:129;2522:10;21686:7;21695:96;21734:15;21695:96;;;;;;;;;;;;;;;;;2522:10;21695:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;21695:34:0;;;;;;;;;;;;:38;:96::i;20499:169::-;20579:4;20596:42;2522:10;20620:9;20631:6;20596:9;:42::i;44097:538::-;14462:6;;-1:-1:-1;;;;;14462:6:0;2522:10;14462:22;14454:67;;;;-1:-1:-1;;;14454:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;44184:26:0;::::1;;::::0;;;:17:::1;:26;::::0;;;;;::::1;;44176:65;;;::::0;-1:-1:-1;;;44176:65:0;;8353:2:1;44176:65:0::1;::::0;::::1;8335:21:1::0;8392:2;8372:18;;;8365:30;8431:28;8411:18;;;8404:56;8477:18;;44176:65:0::1;8151:350:1::0;44176:65:0::1;44257:9;44252:376;44276:16;:23:::0;44272:27;::::1;44252:376;;;44348:7;-1:-1:-1::0;;;;;44325:30:0::1;:16;44342:1;44325:19;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;44325:19:0::1;:30;44321:296;;;44398:16;44437:23:::0;;:27:::1;::::0;44463:1:::1;::::0;44437:27:::1;:::i;:::-;44398:85;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;44376:16:::1;:19:::0;;-1:-1:-1;;;;;44398:85:0;;::::1;::::0;44393:1;;44376:19;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:107:::0;;-1:-1:-1;;;;;;44376:107:0::1;-1:-1:-1::0;;;;;44376:107:0;;::::1;;::::0;;44502:26;;::::1;::::0;;:17:::1;:26:::0;;;;;;:34;;-1:-1:-1;;44502:34:0::1;::::0;;44555:16:::1;:22:::0;;;::::1;;;;:::i;44321:296::-;44301:3:::0;::::1;::::0;::::1;:::i;:::-;;;;44252:376;;24970:132:::0;14462:6;;-1:-1:-1;;;;;14462:6:0;2522:10;14462:22;14454:67;;;;-1:-1:-1;;;14454:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25053:34:0::1;;::::0;;;:25:::1;:34;::::0;;;;:41;;-1:-1:-1;;25053:41:0::1;25090:4;25053:41;::::0;;24970:132::o;42120:::-;14462:6;;-1:-1:-1;;;;;14462:6:0;2522:10;14462:22;14454:67;;;;-1:-1:-1;;;14454:67:0;;;;;;;:::i;:::-;42209:35:::1;::::0;-1:-1:-1;;;;;42209:27:0;::::1;::::0;:35;::::1;;;::::0;42237:6;;42209:35:::1;::::0;;;42237:6;42209:27;:35;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;42120:132:::0;;:::o;26649:175::-;14462:6;;-1:-1:-1;;;;;14462:6:0;2522:10;14462:22;14454:67;;;;-1:-1:-1;;;14454:67:0;;;;;;;:::i;:::-;26730:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;26730:32:0::1;-1:-1:-1::0;;;;26730:32:0;;::::1;;::::0;;26778:38:::1;::::0;::::1;::::0;::::1;::::0;26754:8;1927:14:1;1920:22;1902:41;;1890:2;1875:18;;1762:187;26778:38:0::1;;;;;;;;26649:175:::0;:::o;43093:348::-;14462:6;;-1:-1:-1;;;;;14462:6:0;2522:10;14462:22;14454:67;;;;-1:-1:-1;;;14454:67:0;;;;;;;:::i;:::-;43144:9:::1;43140:253;43163:10;:17:::0;43159:21;::::1;43140:253;;;43201:14;43218:10;43229:1;43218:13;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;::::1;::::0;-1:-1:-1;;;;;43218:13:0::1;::::0;-1:-1:-1;43263:17:0::1;43218:13:::0;43263:9:::1;:17::i;:::-;43246:34;;43295:86;43313:6;43329:42;43374:6;43295:17;:86::i;:::-;43186:207;;43182:3;;;;;:::i;:::-;;;;43140:253;;;-1:-1:-1::0;43416:17:0::1;::::0;;43431:1:::1;43416:17:::0;;::::1;::::0;::::1;::::0;;;;43403:30;::::1;::::0;:10:::1;::::0;:30:::1;:::i;25502:119::-:0;14462:6;;-1:-1:-1;;;;;14462:6:0;2522:10;14462:22;14454:67;;;;-1:-1:-1;;;14454:67:0;;;;;;;:::i;:::-;25585:13:::1;:28:::0;25502:119::o;25868:101::-;14462:6;;-1:-1:-1;;;;;14462:6:0;2522:10;14462:22;14454:67;;;;-1:-1:-1;;;14454:67:0;;;;;;;:::i;:::-;25944:8:::1;:17:::0;25868:101::o;25980:162::-;14462:6;;-1:-1:-1;;;;;14462:6:0;2522:10;14462:22;14454:67;;;;-1:-1:-1;;;14454:67:0;;;;;;;:::i;:::-;26074:60:::1;26118:5;26074:25;26086:12;26074:7;;:11;;:25;;;;:::i;:::-;:29:::0;::::1;:60::i;:::-;26059:12;:75:::0;-1:-1:-1;25980:162:0:o;24672:151::-;14462:6;;-1:-1:-1;;;;;14462:6:0;2522:10;14462:22;14454:67;;;;-1:-1:-1;;;14454:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24745:24:0;::::1;24764:4;24745:24;24741:74;;-1:-1:-1::0;;;;;24780:27:0::1;24810:5;24780:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;24780:35:0::1;::::0;;24672:151::o;19776:104::-;14462:6;;-1:-1:-1;;;;;14462:6:0;2522:10;14462:22;14454:67;;;;-1:-1:-1;;;14454:67:0;;;;;;;:::i;:::-;19848:14:::1;:24:::0;;;::::1;;-1:-1:-1::0;;;19848:24:0::1;-1:-1:-1::0;;;;19848:24:0;;::::1;::::0;;;::::1;::::0;;19776:104::o;14830:246::-;14462:6;;-1:-1:-1;;;;;14462:6:0;2522:10;14462:22;14454:67;;;;-1:-1:-1;;;14454:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14921:22:0;::::1;14913:73;;;::::0;-1:-1:-1;;;14913:73:0;;8840:2:1;14913:73:0::1;::::0;::::1;8822:21:1::0;8879:2;8859:18;;;8852:30;8918:34;8898:18;;;8891:62;-1:-1:-1;;;8969:18:1;;;8962:36;9015:19;;14913:73:0::1;8638:402:1::0;14913:73:0::1;15023:6;::::0;;15002:38:::1;::::0;-1:-1:-1;;;;;15002:38:0;;::::1;::::0;15023:6;::::1;::::0;15002:38:::1;::::0;::::1;15051:6;:17:::0;;-1:-1:-1;;;;;;15051:17:0::1;-1:-1:-1::0;;;;;15051:17:0;;;::::1;::::0;;;::::1;::::0;;14830:246::o;43453:81::-;14462:6;;-1:-1:-1;;;;;14462:6:0;2522:10;14462:22;14454:67;;;;-1:-1:-1;;;14454:67:0;;;;;;;:::i;:::-;43512:9:::1;:14:::0;;-1:-1:-1;;43512:14:0::1;::::0;::::1;;::::0;;;::::1;::::0;;43453:81::o;1680:132::-;1738:7;1765:39;1769:1;1772;1765:39;;;;;;;;;;;;;;;;;:3;:39::i;33511:337::-;-1:-1:-1;;;;;33604:19:0;;33596:68;;;;-1:-1:-1;;;33596:68:0;;9247:2:1;33596:68:0;;;9229:21:1;9286:2;9266:18;;;9259:30;9325:34;9305:18;;;9298:62;-1:-1:-1;;;9376:18:1;;;9369:34;9420:19;;33596:68:0;9045:400:1;33596:68:0;-1:-1:-1;;;;;33683:21:0;;33675:68;;;;-1:-1:-1;;;33675:68:0;;9652:2:1;33675:68:0;;;9634:21:1;9691:2;9671:18;;;9664:30;9730:34;9710:18;;;9703:62;-1:-1:-1;;;9781:18:1;;;9774:32;9823:19;;33675:68:0;9450:398:1;33675:68:0;-1:-1:-1;;;;;33756:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;33808:32;;2308:25:1;;;33808:32:0;;2281:18:1;33808:32:0;;;;;;;33511:337;;;:::o;1230:192::-;1316:7;1352:12;1344:6;;;;1336:29;;;;-1:-1:-1;;;1336:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1376:9:0;1388:5;1392:1;1388;:5;:::i;:::-;1376:17;1230:192;-1:-1:-1;;;;;1230:192:0:o;33856:2715::-;-1:-1:-1;;;;;33978:18:0;;33970:68;;;;-1:-1:-1;;;33970:68:0;;10055:2:1;33970:68:0;;;10037:21:1;10094:2;10074:18;;;10067:30;10133:34;10113:18;;;10106:62;-1:-1:-1;;;10184:18:1;;;10177:35;10229:19;;33970:68:0;9853:401:1;33970:68:0;-1:-1:-1;;;;;34057:16:0;;34049:64;;;;-1:-1:-1;;;34049:64:0;;10461:2:1;34049:64:0;;;10443:21:1;10500:2;10480:18;;;10473:30;10539:34;10519:18;;;10512:62;-1:-1:-1;;;10590:18:1;;;10583:33;10633:19;;34049:64:0;10259:399:1;34049:64:0;34141:1;34132:6;:10;34124:64;;;;-1:-1:-1;;;34124:64:0;;10865:2:1;34124:64:0;;;10847:21:1;10904:2;10884:18;;;10877:30;10943:34;10923:18;;;10916:62;-1:-1:-1;;;10994:18:1;;;10987:39;11043:19;;34124:64:0;10663:405:1;34124:64:0;-1:-1:-1;;;;;34208:23:0;;;;;;:17;:23;;;;;;;;34207:24;34199:56;;;;-1:-1:-1;;;34199:56:0;;11275:2:1;34199:56:0;;;11257:21:1;11314:2;11294:18;;;11287:30;-1:-1:-1;;;11333:18:1;;;11326:49;11392:18;;34199:56:0;11073:343:1;34199:56:0;34293:10;34275:29;;;;:17;:29;;;;;;;;34274:30;34266:54;;;;-1:-1:-1;;;34266:54:0;;11623:2:1;34266:54:0;;;11605:21:1;11662:2;11642:18;;;11635:30;-1:-1:-1;;;11681:18:1;;;11674:41;11732:18;;34266:54:0;11421:335:1;34266:54:0;34358:9;34340:28;;;;:17;:28;;;;;;;;34339:29;34331:53;;;;-1:-1:-1;;;34331:53:0;;11623:2:1;34331:53:0;;;11605:21:1;11662:2;11642:18;;;11635:30;-1:-1:-1;;;11681:18:1;;;11674:41;11732:18;;34331:53:0;11421:335:1;34331:53:0;14375:7;14402:6;-1:-1:-1;;;;;34398:15:0;;;14402:6;;34398:15;34395:76;;34424:14;;-1:-1:-1;;;34424:14:0;;;;34416:53;;;;-1:-1:-1;;;34416:53:0;;11963:2:1;34416:53:0;;;11945:21:1;12002:2;11982:18;;;11975:30;12041:28;12021:18;;;12014:56;12087:18;;34416:53:0;11761:350:1;34416:53:0;14375:7;14402:6;-1:-1:-1;;;;;34484:15:0;;;14402:6;;34484:15;;;;:32;;-1:-1:-1;14375:7:0;14402:6;-1:-1:-1;;;;;34503:13:0;;;14402:6;;34503:13;;34484:32;34481:200;;;-1:-1:-1;;;;;34546:31:0;;;;;;:25;:31;;;;;;;;34542:128;;34611:12;;34601:6;:22;;34593:75;;;;-1:-1:-1;;;34593:75:0;;12318:2:1;34593:75:0;;;12300:21:1;12357:2;12337:18;;;12330:30;12396:34;12376:18;;;12369:62;-1:-1:-1;;;12447:18:1;;;12440:38;12495:19;;34593:75:0;12116:404:1;34593:75:0;34767:1;34751:13;35104:24;35122:4;35104:9;:24::i;:::-;35073:55;;35173:12;;35149:20;:36;35146:112;;-1:-1:-1;35234:12:0;;35146:112;35329:29;;35305:53;;;;;;;35387;;-1:-1:-1;35424:16:0;;-1:-1:-1;;;35424:16:0;;;;35423:17;35387:53;:95;;;;-1:-1:-1;35465:17:0;;-1:-1:-1;;;;;35457:25:0;;;35465:17;;35457:25;;35387:95;:133;;;;-1:-1:-1;35499:21:0;;-1:-1:-1;;;35499:21:0;;;;35387:133;:153;;;;;35528:7;:12;;35539:1;35528:12;35387:153;35369:311;;;35632:36;35647:20;35632:14;:36::i;:::-;35700:17;;-1:-1:-1;;;;;35692:25:0;;;35700:17;;35692:25;:38;;;;-1:-1:-1;35721:9:0;;;;35692:38;35689:125;;;-1:-1:-1;;;;;35747:14:0;;;;;;:10;:14;;;;;:21;;-1:-1:-1;;35747:21:0;35764:4;35747:21;;;;;;35783:10;:19;;;;;;;;;;;;;;-1:-1:-1;;;;;;35783:19:0;;;;;;35689:125;-1:-1:-1;;;;;35924:24:0;;;;;;:18;:24;;;;;;;;;:50;;-1:-1:-1;;;;;;35952:22:0;;;;;;:18;:22;;;;;;;;35924:50;35921:92;;;36000:1;35990:11;;35921:92;36036:17;;-1:-1:-1;;;;;36028:25:0;;;36036:17;;36028:25;;;;:52;;-1:-1:-1;36063:17:0;;-1:-1:-1;;;;;36057:23:0;;;36063:17;;36057:23;;36028:52;36025:104;;;36116:1;36106:11;;36025:104;36153:7;:12;;36164:1;36153:12;36150:289;;;36187:23;36213:28;36228:4;36234:6;36213:14;:28::i;:::-;36187:54;;36252:24;36279:29;36295:4;36301:6;36279:15;:29::i;:::-;36252:56;;36319:18;36340:23;36350:4;36356:6;36340:9;:23::i;:::-;36319:44;-1:-1:-1;36420:16:0;36393:26;36319:44;36393:15;:26;:::i;:::-;:43;;;;:::i;:::-;36383:54;;:6;:54;:::i;:::-;36374:63;;36176:263;;;36150:289;36525:38;36540:4;36545:2;36548:6;36555:7;36525:14;:38::i;:::-;33959:2612;;;33856:2715;;;:::o;28474:163::-;28515:7;28536:15;28553;28572:19;:17;:19::i;:::-;28535:56;;-1:-1:-1;28535:56:0;-1:-1:-1;28609:20:0;28535:56;;28609:11;:20::i;:::-;28602:27;;;;28474:163;:::o;903:179::-;961:7;;993:5;997:1;993;:5;:::i;:::-;981:17;;1022:1;1017;:6;;1009:46;;;;-1:-1:-1;;;1009:46:0;;12860:2:1;1009:46:0;;;12842:21:1;12899:2;12879:18;;;12872:30;12938:29;12918:18;;;12911:57;12985:18;;1009:46:0;12658:351:1;27043:456:0;27102:7;27111;27120;27129;27138;27147;27156;27177:23;27202:12;27216:13;27230:18;27252:20;27264:7;27252:11;:20::i;:::-;27176:96;;;;;;;;27284:15;27301:23;27326:12;27342:57;27354:7;27363:4;27369:5;27376:10;27388;:8;:10::i;:::-;27342:11;:57::i;:::-;27283:116;;-1:-1:-1;27283:116:0;-1:-1:-1;27283:116:0;-1:-1:-1;27450:15:0;;-1:-1:-1;27467:4:0;;-1:-1:-1;27473:5:0;;-1:-1:-1;27480:10:0;-1:-1:-1;;;;27043:456:0;;;;;;;;;:::o;1088:136::-;1146:7;1173:43;1177:1;1180;1173:43;;;;;;;;;;;;;;;;;:3;:43::i;2809:619::-;2869:4;3337:20;;3180:66;3377:23;;;;;;:42;;-1:-1:-1;3404:15:0;;;3377:42;3369:51;2809:619;-1:-1:-1;;;;2809:619:0:o;39538:568::-;39637:15;39654:23;39679:12;39693:23;39718:12;39732:13;39747:18;39769:19;39780:7;39769:10;:19::i;:::-;39636:152;;;;;;;;;;;;;;39817:28;39837:7;39817;:15;39825:6;-1:-1:-1;;;;;39817:15:0;-1:-1:-1;;;;;39817:15:0;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;-1:-1:-1;;;;;39799:15:0;;;;;;;:7;:15;;;;;;:46;;;;39877:18;;;;;;;:39;;39900:15;39877:22;:39::i;:::-;-1:-1:-1;;;;;39856:18:0;;;;;;:7;:18;;;;;:60;39927:26;39942:10;39927:14;:26::i;:::-;39964:24;39974:6;39982:5;39964:9;:24::i;:::-;39999:22;40011:4;40016;39999:11;:22::i;:::-;40054:9;-1:-1:-1;;;;;40037:44:0;40046:6;-1:-1:-1;;;;;40037:44:0;;40065:15;40037:44;;;;2308:25:1;;2296:2;2281:18;;2162:177;40037:44:0;;;;;;;;39625:481;;;;;;;39538:568;;;:::o;1428:246::-;1486:7;1510:6;1506:47;;-1:-1:-1;1540:1:0;1533:8;;1506:47;1563:9;1575:5;1579:1;1575;:5;:::i;:::-;1563:17;-1:-1:-1;1608:1:0;1599:5;1603:1;1563:17;1599:5;:::i;:::-;:10;1591:56;;;;-1:-1:-1;;;1591:56:0;;13611:2:1;1591:56:0;;;13593:21:1;13650:2;13630:18;;;13623:30;13689:34;13669:18;;;13662:62;-1:-1:-1;;;13740:18:1;;;13733:31;13781:19;;1591:56:0;13409:397:1;1818:276:0;1904:7;1939:12;1932:5;1924:28;;;;-1:-1:-1;;;1924:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1963:9:0;1975:5;1979:1;1975;:5;:::i;36588:1373::-;18079:16;:23;;-1:-1:-1;;;;18079:23:0;-1:-1:-1;;;18079:23:0;;;;36699:58:::1;36755:1;36699:51;36738:11;:9;:11::i;:::-;36719:13;::::0;36699:34:::1;::::0;:15;;:19:::1;:34::i;:58::-;36678:79:::0;-1:-1:-1;36768:20:0::1;36791:31;:15:::0;36678:79;36791:19:::1;:31::i;:::-;36859:16;::::0;;36873:1:::1;36859:16:::0;;;;;::::1;::::0;;36768:54;;-1:-1:-1;36835:21:0::1;::::0;36859:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;36859:16:0::1;36835:40;;36904:4;36886;36891:1;36886:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;36886:23:0::1;;;-1:-1:-1::0;;;;;36886:23:0::1;;;::::0;::::1;36930:17;36920:4;36925:1;36920:7;;;;;;;;:::i;:::-;;;;;;:27;-1:-1:-1::0;;;;;36920:27:0::1;;;-1:-1:-1::0;;;;;36920:27:0::1;;;::::0;::::1;36960:70;36977:4;36992:19;37014:15;36960:8;:70::i;:::-;37041:203;::::0;-1:-1:-1;;;37041:203:0;;-1:-1:-1;;;;;37041:21:0::1;:72;::::0;::::1;::::0;:203:::1;::::0;37128:12;;37155:1:::1;::::0;37171:4;;37198::::1;::::0;37218:15:::1;::::0;37041:203:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;37350:13:0::1;::::0;37278:21:::1;::::0;-1:-1:-1;37257:18:0::1;::::0;-1:-1:-1;37333:39:0::1;::::0;37349:22:::1;::::0;37369:1:::1;37349:19;:22::i;:::-;37333:11;:9;:11::i;:::-;:15:::0;::::1;:39::i;:::-;37310:62;;37385:23;37411:54;37463:1;37411:47;37445:12;37411:29;37426:13;;37411:10;:14;;:29;;;;:::i;:54::-;37385:80;;37476:23;37502:47;37536:12;37502:29;37517:13;;37502:10;:14;;:29;;;;:::i;:47::-;37476:73;;37560:22;37585:48;37620:12;37585:30;37600:14;;37585:10;:14;;:30;;;;:::i;:48::-;37560:73;;37644:18;37665:42;37694:12;37665:24;37680:8;;37665:10;:14;;:24;;;;:::i;:42::-;37644:63;;37725:41;37738:10;37750:15;37725:12;:41::i;:::-;37787:16;::::0;37779:51:::1;::::0;-1:-1:-1;;;;;37787:16:0;;::::1;::::0;37779:51;::::1;;;::::0;37814:15;;37787:16:::1;37779:51:::0;37787:16;37779:51;37814:15;37787:16;37779:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;37849:17:0::1;::::0;37841:51:::1;::::0;-1:-1:-1;;;;;37849:17:0;;::::1;::::0;37841:51;::::1;;;::::0;37877:14;;37849:17:::1;37841:51:::0;37849:17;37841:51;37877:14;37849:17;37841:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;37911:11:0::1;::::0;37903:41:::1;::::0;-1:-1:-1;;;;;37911:11:0;;::::1;::::0;37903:41;::::1;;;::::0;37933:10;;37911:11:::1;37903:41:::0;37911:11;37903:41;37933:10;37911:11;37903:41;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;18125:16:0;:24;;-1:-1:-1;;;;18125:24:0;;;-1:-1:-1;;;;;;;;;36588:1373:0:o;30953:497::-;31029:7;31046:18;31067:33;31089:10;31067:21;:33::i;:::-;31150:4;31134:22;;;;:7;:22;;;;;;31046:54;;-1:-1:-1;31134:38:0;;31046:54;31134:26;:38::i;:::-;31125:4;31109:22;;;;:7;:22;;;;;;:63;;;;-1:-1:-1;;;;;31199:15:0;;;;;;:31;;31219:10;31199:19;:31::i;:::-;-1:-1:-1;;;;;31181:15:0;;;;;;:7;:15;;;;;;;;;:49;;;;31244:43;2308:25:1;;;31269:4:0;;31244:43;;2281:18:1;31244:43:0;;;;;;;31332:4;31302:36;;;;:21;:36;;;;;;;;31299:117;;;31394:4;31378:22;;;;:7;:22;;;;;;:38;;31405:10;31378:26;:38::i;:::-;31369:4;31353:22;;;;:7;:22;;;;;:63;31432:10;30953:497;-1:-1:-1;;;30953:497:0:o;31918:507::-;31996:7;32013:19;32035:35;32058:11;32035:22;:35::i;31463:447::-;31529:7;31546:13;31562:23;31579:5;31562:16;:23::i;38573:957::-;38684:12;;;38681:54;;38721:14;:12;:14::i;:::-;-1:-1:-1;;;;;38760:29:0;;;;;;:21;:29;;;;;;;;:66;;;;-1:-1:-1;;;;;;38794:32:0;;;;;;:21;:32;;;;;;;;38793:33;38760:66;38756:677;;;38843:48;38865:6;38873:9;38884:6;38843:21;:48::i;:::-;38756:677;;;-1:-1:-1;;;;;38914:29:0;;;;;;:21;:29;;;;;;;;38913:30;:66;;;;-1:-1:-1;;;;;;38947:32:0;;;;;;:21;:32;;;;;;;;38913:66;38909:524;;;38996:46;39016:6;39024:9;39035:6;38996:19;:46::i;38909:524::-;-1:-1:-1;;;;;39065:29:0;;;;;;:21;:29;;;;;;;;39064:30;:67;;;;-1:-1:-1;;;;;;39099:32:0;;;;;;:21;:32;;;;;;;;39098:33;39064:67;39060:373;;;39148:44;39166:6;39174:9;39185:6;39148:17;:44::i;39060:373::-;-1:-1:-1;;;;;39214:29:0;;;;;;:21;:29;;;;;;;;:65;;;;-1:-1:-1;;;;;;39247:32:0;;;;;;:21;:32;;;;;;;;39214:65;39210:223;;;39296:48;39318:6;39326:9;39337:6;39296:21;:48::i;39210:223::-;39377:44;39395:6;39403:9;39414:6;39377:17;:44::i;:::-;39456:7;:12;;39467:1;39456:12;39453:69;;39507:15;32837;;32827:7;:25;32874:16;;32863:8;:27;32917:21;;32901:13;:37;32783:163;28645:656;28742:7;;28778;;28695;;;;;28802:384;28826:28;:35;28822:39;;28802:384;;;28930:7;28887;:40;28895:28;28924:1;28895:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;28895:31:0;28887:40;;;;;;;;;;;;;:50;;:104;;;28984:7;28941;:40;28949:28;28978:1;28949:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;28949:31:0;28941:40;;;;;;;;;;;;;:50;28887:104;28883:135;;;29001:7;;29010;;28993:25;;;;;;;28645:656;;:::o;28883:135::-;29043:53;29055:7;:40;29063:28;29092:1;29063:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;29063:31:0;29055:40;;;;;;;;;;;;;29043:7;;:11;:53::i;:::-;29033:63;;29121:53;29133:7;:40;29141:28;29170:1;29141:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;29141:31:0;29133:40;;;;;;;;;;;;;29121:7;;:11;:53::i;:::-;29111:63;-1:-1:-1;28863:3:0;;;;:::i;:::-;;;;28802:384;;;-1:-1:-1;29222:7:0;;29210;;:20;;:11;:20::i;:::-;29200:7;:30;29196:61;;;29240:7;;29249;;29232:25;;;;;;28645:656;;:::o;29196:61::-;29276:7;;29285;;-1:-1:-1;28645:656:0;-1:-1:-1;28645:656:0:o;27507:409::-;27567:7;27576;27585;27594;27614:12;27629:24;27645:7;27629:15;:24::i;:::-;27614:39;;27664:13;27680:25;27697:7;27680:16;:25::i;:::-;27664:41;;27716:18;27737:30;27759:7;27737:21;:30::i;:::-;27716:51;-1:-1:-1;27778:23:0;27804:44;27716:51;27804:28;27826:5;27804:28;:7;27816:4;27804:11;:17::i;:44::-;27778:70;27884:4;;-1:-1:-1;27890:5:0;;-1:-1:-1;27890:5:0;-1:-1:-1;27507:409:0;;-1:-1:-1;;;27507:409:0:o;27924:542::-;28054:7;;;;28110:24;:7;28122:11;28110;:24::i;:::-;28092:42;-1:-1:-1;28145:12:0;28160:21;:4;28169:11;28160:8;:21::i;:::-;28145:36;-1:-1:-1;28192:13:0;28208:22;:5;28218:11;28208:9;:22::i;:::-;28192:38;-1:-1:-1;28241:18:0;28262:27;:10;28277:11;28262:14;:27::i;:::-;28241:48;-1:-1:-1;28300:16:0;28319:31;28241:48;28319:15;:4;28328:5;28319:8;:15::i;:::-;:19;;:31::i;:::-;28300:50;-1:-1:-1;28361:23:0;28387:21;:7;28300:50;28387:11;:21::i;:::-;28427:7;;;;-1:-1:-1;28453:4:0;;-1:-1:-1;27924:542:0;;-1:-1:-1;;;;;;;;;;27924:542:0:o;30339:365::-;30402:19;30425:10;:8;:10::i;:::-;30402:33;-1:-1:-1;30446:18:0;30467:27;:10;30402:33;30467:14;:27::i;:::-;30546:4;30530:22;;;;:7;:22;;;;;;30446:48;;-1:-1:-1;30530:38:0;;30446:48;30530:26;:38::i;:::-;30521:4;30505:22;;;;:7;:22;;;;;;;;:63;;;;30582:21;:36;;;;;;30579:117;;;30674:4;30658:22;;;;:7;:22;;;;;;:38;;30685:10;30658:26;:38::i;:::-;30649:4;30633:22;;;;:7;:22;;;;;:63;30391:313;;30339:365;:::o;30712:229::-;30822:11;;-1:-1:-1;;;;;30822:11:0;30814:20;;;;:7;:20;;;;;;:31;;30839:5;30814:24;:31::i;:::-;30799:11;;-1:-1:-1;;;;;30799:11:0;30791:20;;;;:7;:20;;;;;:54;30859:9;;30856:67;;30902:11;;30885:36;;2308:25:1;;;-1:-1:-1;;;;;30902:11:0;;;;30885:36;;;;;2296:2:1;2281:18;30885:36:0;;;;;;;30712:229;;:::o;26879:156::-;26957:7;;:17;;26969:4;26957:11;:17::i;:::-;26947:7;:27;26998:10;;:20;;27013:4;26998:14;:20::i;:::-;26985:10;:33;-1:-1:-1;;26879:156:0:o;21970:158::-;22014:7;22041:79;22105:14;;22041:59;22086:13;;22041:40;22072:8;;22041:26;22053:13;;22041:7;;:11;;:26;;;;:::i;:79::-;22034:86;;21970:158;:::o;37969:523::-;38117:66;38134:4;38149:19;38171:11;38117:8;:66::i;:::-;38226:21;-1:-1:-1;;;;;38226:37:0;;38271:9;38304:4;38324:11;38350:1;38393;38436:7;14375;14402:6;-1:-1:-1;;;;;14402:6:0;;14337:79;38436:7;38226:258;;;;;;-1:-1:-1;;;;;;38226:258:0;;;-1:-1:-1;;;;;15155:15:1;;;38226:258:0;;;15137:34:1;15187:18;;;15180:34;;;;15230:18;;;15223:34;;;;15273:18;;;15266:34;15337:15;;;15316:19;;;15309:44;38458:15:0;15369:19:1;;;15362:35;15071:19;;38226:258:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;29636:166::-;29706:7;29733:61;29778:5;29733:26;29745:13;;29733:7;:11;;:26;;;;:::i;29811:168::-;29882:7;29909:62;29955:5;29909:27;29921:14;;29909:7;:11;;:27;;;;:::i;30164:167::-;30229:7;30257:56;30297:5;30257:21;30269:8;;30257:7;:11;;:21;;;;:::i;32443:328::-;32489:7;;:12;:29;;;;-1:-1:-1;32505:8:0;;:13;32489:29;:51;;;;-1:-1:-1;32522:13:0;;:18;32489:51;32486:63;;;32443:328::o;32486:63::-;32587:7;;;32569:15;:25;32624:8;;;32605:16;:27;32667:13;;;32643:21;:37;-1:-1:-1;32701:11:0;;;;32723:12;;;;32746:17;32443:328::o;40772:633::-;40875:15;40892:23;40917:12;40931:23;40956:12;40970:13;40985:18;41007:19;41018:7;41007:10;:19::i;:::-;40874:152;;;;;;;;;;;;;;41065:28;41085:7;41065;:15;41073:6;-1:-1:-1;;;;;41065:15:0;-1:-1:-1;;;;;41065:15:0;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;-1:-1:-1;;;;;41047:15:0;;;;;;:7;:15;;;;;;;;:46;;;;41122:7;:15;;;;:28;;41142:7;41122:19;:28::i;:::-;-1:-1:-1;;;;;41104:15:0;;;;;;;:7;:15;;;;;;:46;;;;41182:18;;;;;;;:39;;41205:15;41182:22;:39::i;:::-;-1:-1:-1;;;;;41161:18:0;;;;;;:7;:18;;;;;:60;41232:23;41244:4;41250;41232:11;:23::i;:::-;41266:26;41281:10;41266:14;:26::i;:::-;41303:24;41313:6;41321:5;41303:9;:24::i;40114:650::-;40215:15;40232:23;40257:12;40271:23;40296:12;40310:13;40325:18;40347:19;40358:7;40347:10;:19::i;:::-;40214:152;;;;;;;;;;;;;;40395:28;40415:7;40395;:15;40403:6;-1:-1:-1;;;;;40395:15:0;-1:-1:-1;;;;;40395:15:0;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;-1:-1:-1;;;;;40377:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;40455:18;;;;;:7;:18;;;;;:39;;40478:15;40455:22;:39::i;:::-;-1:-1:-1;;;;;40434:18:0;;;;;;:7;:18;;;;;;;;:60;;;;40526:7;:18;;;;:39;;40549:15;40526:22;:39::i;41413:699::-;41516:15;41533:23;41558:12;41572:23;41597:12;41611:13;41626:18;41648:19;41659:7;41648:10;:19::i;:::-;41515:152;;;;;;;;;;;;;;41696:28;41716:7;41696;:15;41704:6;-1:-1:-1;;;;;41696:15:0;-1:-1:-1;;;;;41696:15:0;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;-1:-1:-1;;;;;41678:15:0;;;;;;:7;:15;;;;;;;;:46;;;;41753:7;:15;;;;:28;;41773:7;41753:19;:28::i;29325:154::-;29389:7;29416:55;29455:5;29416:20;29428:7;;29416;:11;;:20;;;;:::i;29487:141::-;29552:7;29582:32;29608:5;29582:21;29594:8;;29582:7;:11;;:21;;;;:::i;29988:166::-;30058:7;30085:61;30130:5;30085:26;30097:13;;30085:7;:11;;:26;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:173:1;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:186::-;251:6;304:2;292:9;283:7;279:23;275:32;272:52;;;320:1;317;310:12;272:52;343:29;362:9;343:29;:::i;383:180::-;442:6;495:2;483:9;474:7;470:23;466:32;463:52;;;511:1;508;501:12;463:52;-1:-1:-1;534:23:1;;383:180;-1:-1:-1;383:180:1:o;568:328::-;645:6;653;661;714:2;702:9;693:7;689:23;685:32;682:52;;;730:1;727;720:12;682:52;753:29;772:9;753:29;:::i;:::-;743:39;;801:38;835:2;824:9;820:18;801:38;:::i;:::-;791:48;;886:2;875:9;871:18;858:32;848:42;;568:328;;;;;:::o;901:597::-;1013:4;1042:2;1071;1060:9;1053:21;1103:6;1097:13;1146:6;1141:2;1130:9;1126:18;1119:34;1171:1;1181:140;1195:6;1192:1;1189:13;1181:140;;;1290:14;;;1286:23;;1280:30;1256:17;;;1275:2;1252:26;1245:66;1210:10;;1181:140;;;1339:6;1336:1;1333:13;1330:91;;;1409:1;1404:2;1395:6;1384:9;1380:22;1376:31;1369:42;1330:91;-1:-1:-1;1482:2:1;1461:15;-1:-1:-1;;1457:29:1;1442:45;;;;1489:2;1438:54;;901:597;-1:-1:-1;;;901:597:1:o;1503:254::-;1571:6;1579;1632:2;1620:9;1611:7;1607:23;1603:32;1600:52;;;1648:1;1645;1638:12;1600:52;1671:29;1690:9;1671:29;:::i;:::-;1661:39;1747:2;1732:18;;;;1719:32;;-1:-1:-1;;;1503:254:1:o;2757:118::-;2843:5;2836:13;2829:21;2822:5;2819:32;2809:60;;2865:1;2862;2855:12;2880:309;2945:6;2953;3006:2;2994:9;2985:7;2981:23;2977:32;2974:52;;;3022:1;3019;3012:12;2974:52;3058:9;3045:23;3035:33;;3118:2;3107:9;3103:18;3090:32;3131:28;3153:5;3131:28;:::i;:::-;3178:5;3168:15;;;2880:309;;;;;:::o;3429:241::-;3485:6;3538:2;3526:9;3517:7;3513:23;3509:32;3506:52;;;3554:1;3551;3544:12;3506:52;3593:9;3580:23;3612:28;3634:5;3612:28;:::i;3675:260::-;3743:6;3751;3804:2;3792:9;3783:7;3779:23;3775:32;3772:52;;;3820:1;3817;3810:12;3772:52;3843:29;3862:9;3843:29;:::i;:::-;3833:39;;3891:38;3925:2;3914:9;3910:18;3891:38;:::i;:::-;3881:48;;3675:260;;;;;:::o;3940:356::-;4142:2;4124:21;;;4161:18;;;4154:30;4220:34;4215:2;4200:18;;4193:62;4287:2;4272:18;;3940:356::o;4580:245::-;4647:6;4700:2;4688:9;4679:7;4675:23;4671:32;4668:52;;;4716:1;4713;4706:12;4668:52;4748:9;4742:16;4767:28;4789:5;4767:28;:::i;6359:127::-;6420:10;6415:3;6411:20;6408:1;6401:31;6451:4;6448:1;6441:15;6475:4;6472:1;6465:15;6491:127;6552:10;6547:3;6543:20;6540:1;6533:31;6583:4;6580:1;6573:15;6607:4;6604:1;6597:15;6623:125;6663:4;6691:1;6688;6685:8;6682:34;;;6696:18;;:::i;:::-;-1:-1:-1;6733:9:1;;6623:125::o;6753:127::-;6814:10;6809:3;6805:20;6802:1;6795:31;6845:4;6842:1;6835:15;6869:4;6866:1;6859:15;6885:135;6924:3;-1:-1:-1;;6945:17:1;;6942:43;;;6965:18;;:::i;:::-;-1:-1:-1;7012:1:1;7001:13;;6885:135::o;12525:128::-;12565:3;12596:1;12592:6;12589:1;12586:13;12583:39;;;12602:18;;:::i;:::-;-1:-1:-1;12638:9:1;;12525:128::o;13014:168::-;13054:7;13120:1;13116;13112:6;13108:14;13105:1;13102:21;13097:1;13090:9;13083:17;13079:45;13076:71;;;13127:18;;:::i;:::-;-1:-1:-1;13167:9:1;;13014:168::o;13187:217::-;13227:1;13253;13243:132;;13297:10;13292:3;13288:20;13285:1;13278:31;13332:4;13329:1;13322:15;13360:4;13357:1;13350:15;13243:132;-1:-1:-1;13389:9:1;;13187:217::o;13811:980::-;14073:4;14121:3;14110:9;14106:19;14152:6;14141:9;14134:25;14178:2;14216:6;14211:2;14200:9;14196:18;14189:34;14259:3;14254:2;14243:9;14239:18;14232:31;14283:6;14318;14312:13;14349:6;14341;14334:22;14387:3;14376:9;14372:19;14365:26;;14426:2;14418:6;14414:15;14400:29;;14447:1;14457:195;14471:6;14468:1;14465:13;14457:195;;;14536:13;;-1:-1:-1;;;;;14532:39:1;14520:52;;14627:15;;;;14592:12;;;;14568:1;14486:9;14457:195;;;-1:-1:-1;;;;;;;14708:32:1;;;;14703:2;14688:18;;14681:60;-1:-1:-1;;;14772:3:1;14757:19;14750:35;14669:3;13811:980;-1:-1:-1;;;13811:980:1:o;15408:306::-;15496:6;15504;15512;15565:2;15553:9;15544:7;15540:23;15536:32;15533:52;;;15581:1;15578;15571:12;15533:52;15610:9;15604:16;15594:26;;15660:2;15649:9;15645:18;15639:25;15629:35;;15704:2;15693:9;15689:18;15683:25;15673:35;;15408:306;;;;;:::o

Swarm Source

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