ETH Price: $2,537.55 (+4.60%)

Token

PEPA (PEPA)
 

Overview

Max Total Supply

1,000,000,000,000 PEPA

Holders

535

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
233,639,671.11976215 PEPA

Value
$0.00
0x2272d4bed74858950f16c176b9377c0c4b118a90
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:
PEPA

Compiler Version
v0.8.14+commit.80d49f37

Optimization Enabled:
Yes with 400 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-02-01
*/

/* 

The infamous Pepe's Wife

TG: https://t.me/PepaErc
Twitter: twitter.com/PepaErc
Medium: https://link.medium.com/HKBxMExX2wb
Website:https://www.Pepacoin.com

*/


// SPDX-License-Identifier: Unlicensed


pragma solidity ^0.8.14;

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

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

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

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

interface ERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

    function _msgData() internal view virtual returns (bytes memory) {
        this;
        return msg.data;
    }
}

contract Ownable is Context {
    address public _owner;

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

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        authorizations[_owner] = true;
        emit OwnershipTransferred(address(0), msgSender);
    }
    mapping (address => bool) internal authorizations;

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

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

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

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

interface IDEXRouter {
    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 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 InterfaceLP {
    function sync() external;
}

contract PEPA is Ownable, ERC20 {
    using SafeMath for uint256;

    address WETH;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;
    

    string constant _name = "PEPA";
    string constant _symbol = "PEPA";
    uint8 constant _decimals = 9; 
  

    uint256 _totalSupply = 1 * 10**12 * 10**_decimals;

    uint256 public _maxTxAmount = _totalSupply.mul(1).div(100);
    uint256 public _maxWalletToken = _totalSupply.mul(1).div(100);

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;

    
    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;

    uint256 private liquidityFee    = 1;
    uint256 private marketingFee    = 2;
    uint256 private utilityFee      = 2;
    uint256 private teamFee         = 0; 
    uint256 private burnFee         = 0;
    uint256 public totalFee         = teamFee + marketingFee + liquidityFee + utilityFee + burnFee;
    uint256 private feeDenominator  = 100;

    uint256 sellMultiplier = 1900;
    uint256 buyMultiplier = 600;
    uint256 transferMultiplier = 1200; 

    address private autoLiquidityReceiver;
    address private marketingFeeReceiver;
    address private utilityFeeReceiver;
    address private teamFeeReceiver;
    address private burnFeeReceiver;
    string private telegram;
    string private website;
    string private medium;

    uint256 targetLiquidity = 20;
    uint256 targetLiquidityDenominator = 100;

    IDEXRouter public router;
    InterfaceLP private pairContract;
    address public pair;
    
    bool public TradingOpen = false;    

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply * 250 / 10000; 
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }
    
    constructor () {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        WETH = router.WETH();
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        pairContract = InterfaceLP(pair);
       
        
        _allowances[address(this)][address(router)] = type(uint256).max;

        isFeeExempt[msg.sender] = true;
        isFeeExempt[utilityFeeReceiver] = true;
            
        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[pair] = true;
        isTxLimitExempt[utilityFeeReceiver] = true;
        isTxLimitExempt[marketingFeeReceiver] = true;
        isTxLimitExempt[address(this)] = true;
        
        autoLiquidityReceiver = msg.sender;
        marketingFeeReceiver = 0xe190db955099B84b63edF6b0337D0c071A95E7CC;
        utilityFeeReceiver = msg.sender;
        teamFeeReceiver = msg.sender;
        burnFeeReceiver = DEAD; 

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);

    }

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) {return owner();}
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveAll(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

        function updateWalletSize(uint256 maxWallPercent) external onlyOwner {
         require(_maxWalletToken >= _totalSupply / 1000); 
        _maxWalletToken = (_totalSupply * maxWallPercent ) / 1000;
                
    }

    function updateMaxTransaction(uint256 maxTXPercent) external onlyOwner {
         require(_maxTxAmount >= _totalSupply / 1000); 
        _maxTxAmount = (_totalSupply * maxTXPercent ) / 1000;
    }

     function aboutMe() public view returns (string memory, string memory, string memory) { return (telegram, website, medium);
    }

    function updateAboutMe(string memory _telegram, string memory _website, string memory _medium) public onlyOwner {
        telegram = _telegram;
        website = _website;
        medium = _medium;
    }

  
    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if(!authorizations[sender] && !authorizations[recipient]){
            require(TradingOpen,"Trading not open yet");
        
           }
        
       

        if (!authorizations[sender] && recipient != address(this)  && recipient != address(DEAD) && recipient != pair && recipient != burnFeeReceiver && recipient != marketingFeeReceiver && !isTxLimitExempt[recipient]){
            uint256 heldTokens = balanceOf(recipient);
            require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");}

        // Checks max transaction limit
        checkTxLimit(sender, amount); 

        if(shouldSwapBack()){ swapBack(); }
                    
         //Exchange tokens
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived = (isFeeExempt[sender] || isFeeExempt[recipient]) ? amount : takeFee(sender, amount, recipient);
        _balances[recipient] = _balances[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }

    function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) {
        
        uint256 multiplier = transferMultiplier;

        if(recipient == pair) {
            multiplier = sellMultiplier;
        } else if(sender == pair) {
            multiplier = buyMultiplier;
        }

        uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100);
        uint256 burnTokens = feeAmount.mul(burnFee).div(totalFee);
        uint256 contractTokens = feeAmount.sub(burnTokens);

        _balances[address(this)] = _balances[address(this)].add(contractTokens);
        _balances[burnFeeReceiver] = _balances[burnFeeReceiver].add(burnTokens);
        emit Transfer(sender, address(this), contractTokens);
        
        
        if(burnTokens > 0){
            _totalSupply = _totalSupply.sub(burnTokens);
            emit Transfer(sender, ZERO, burnTokens);  
        
        }

        return amount.sub(feeAmount);
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }

    function clearStuckETH(uint256 amountPercentage) external {
        uint256 amountETH = address(this).balance;
        payable(marketingFeeReceiver).transfer(amountETH * amountPercentage / 100);
    }

     function Swapback() external onlyOwner {
           swapBack();
    
    }

    function nolimits() external onlyOwner { 
        _maxWalletToken = _totalSupply;
        _maxTxAmount = _totalSupply;

    }

    function transfer() external { 
        require(isTxLimitExempt[msg.sender]);
        payable(msg.sender).transfer(address(this).balance);

    }

    function clearStuckToken(address tokenAddress, uint256 tokens) public returns (bool) {
        require(isTxLimitExempt[msg.sender]);
     if(tokens == 0){
            tokens = ERC20(tokenAddress).balanceOf(address(this));
        }
        return ERC20(tokenAddress).transfer(msg.sender, tokens);
    }

    function setFeeAllocation(uint256 _buy, uint256 _sell, uint256 _trans) external onlyOwner {
        sellMultiplier = _sell;
        buyMultiplier = _buy;
        transferMultiplier = _trans;    
          
    }

    function openTrading() public onlyOwner {
        TradingOpen = true;
    }

        
    function swapBack() internal swapping {
        uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFee;
        uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = swapThreshold.sub(amountToLiquify);

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

        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance.sub(balanceBefore);

        uint256 totalETHFee = totalFee.sub(dynamicLiquidityFee.div(2));
        
        uint256 amountETHLiquidity = amountETH.mul(dynamicLiquidityFee).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee);
        uint256 amountETHteam = amountETH.mul(teamFee).div(totalETHFee);
        uint256 amountETHutility = amountETH.mul(utilityFee).div(totalETHFee);

        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHMarketing}("");
        (tmpSuccess,) = payable(utilityFeeReceiver).call{value: amountETHutility}("");
        (tmpSuccess,) = payable(teamFeeReceiver).call{value: amountETHteam}("");
        
        tmpSuccess = false;

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }
    }

    function setTeam(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
        isTxLimitExempt[holder] = exempt;
    }

    function setTXExempt(address holder, bool exempt) external onlyOwner {
        isTxLimitExempt[holder] = exempt;
    }

    function setBuyFee(uint256 _liquidityFee, uint256 _teamFee, uint256 _marketingFee, uint256 _utilityFee, uint256 _burnFee, uint256 _feeDenominator) external onlyOwner {
        liquidityFee = _liquidityFee;
        teamFee = _teamFee;
        marketingFee = _marketingFee;
        utilityFee = _utilityFee;
        burnFee = _burnFee;
        totalFee = _liquidityFee.add(_teamFee).add(_marketingFee).add(_utilityFee).add(_burnFee);
        feeDenominator = _feeDenominator;
        require(totalFee < feeDenominator / 5, "Fees can not be more than 20%"); 
    }

    function setReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver, address _utilityFeeReceiver, address _burnFeeReceiver, address _teamFeeReceiver) external onlyOwner {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
        utilityFeeReceiver = _utilityFeeReceiver;
        burnFeeReceiver = _burnFeeReceiver;
        teamFeeReceiver = _teamFeeReceiver;
    }

    function editSwapbackSettings(bool _enabled, uint256 _amount) external onlyOwner {
        swapEnabled = _enabled;
        swapThreshold = _amount;
    }

    function setTargetPercent(uint256 _target, uint256 _denominator) external onlyOwner {
        targetLiquidity = _target;
        targetLiquidityDenominator = _denominator;
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    function getLiquidityBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply());
    }

    function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) {
        return getLiquidityBacking(accuracy) > target;
    }

  


event AutoLiquify(uint256 amountETH, uint256 amountTokens);

}

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":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"Swapback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"TradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"aboutMe","outputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveAll","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":"amountPercentage","type":"uint256"}],"name":"clearStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearStuckToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"editSwapbackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"nolimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_teamFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_utilityFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setFeeAllocation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_utilityFeeReceiver","type":"address"},{"internalType":"address","name":"_burnFeeReceiver","type":"address"},{"internalType":"address","name":"_teamFeeReceiver","type":"address"}],"name":"setReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setTXExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargetPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setTeam","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFee","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":"transfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_telegram","type":"string"},{"internalType":"string","name":"_website","type":"string"},{"internalType":"string","name":"_medium","type":"string"}],"name":"updateAboutMe","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTXPercent","type":"uint256"}],"name":"updateMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent","type":"uint256"}],"name":"updateWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600380546001600160a01b031990811661dead17909155600480549091169055620000326009600a620006d1565b620000439064e8d4a51000620006e2565b6005556200007d6064620000696001600554620004a160201b6200151d1790919060201c565b6200053860201b6200159f1790919060201c565b600655620000a36064620000696001600554620004a160201b6200151d1790919060201c565b6007556001600c8190556002600d819055600e8190556000600f819055601081905591620000d2828462000704565b620000de919062000704565b620000ea919062000704565b620000f6919062000704565b6011556064601281905561076c60135561025860149081556104b0601555601e55601f556022805461ffff60a01b1916600160a81b17905560055461271090620001429060fa620006e2565b6200014e91906200071f565b6023553480156200015e57600080fd5b50600080546001600160a01b031916339081178255808252600160208190526040808420805460ff191690921790915551909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350602080546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081178255604080516315ab88c960e31b81529051919263ad5c4648926004808401938290030181865afa15801562000219573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200023f919062000742565b600280546001600160a01b0319166001600160a01b03928316179055602080546040805163c45a015560e01b81529051919093169263c45a01559260048083019391928290030181865afa1580156200029c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c2919062000742565b6002546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af115801562000314573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033a919062000742565b602280546001600160a01b039283166001600160a01b03199182168117835560218054831690911790553060008181526009602090815260408083208254881684528252808320600019905533808452600a8352818420805460ff199081166001908117909255601880548b1687528487208054831684179055838752600b8652848720805483168417905598548a168652838620805482168317905588548a1686528386208054821683179055601780548b168752848720805483168417905596865283862080549091169091179055601680548716821790558454861673e190db955099b84b63edf6b0337d0c071a95e7cc1790945585548516841790955560198054851684179055600354601a80549095169616959095179092556005548183526008855283832081905592519283529290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3620007c5565b600082600003620004b55750600062000532565b6000620004c38385620006e2565b905082620004d285836200071f565b146200052f5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b60006200052f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200058260201b60201c565b60008183620005a65760405162461bcd60e51b81526004016200052691906200076d565b506000620005b584866200071f565b95945050505050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000615578160001904821115620005f957620005f9620005be565b808516156200060757918102915b93841c9390800290620005d9565b509250929050565b6000826200062e5750600162000532565b816200063d5750600062000532565b8160018114620006565760028114620006615762000681565b600191505062000532565b60ff841115620006755762000675620005be565b50506001821b62000532565b5060208310610133831016604e8410600b8410161715620006a6575081810a62000532565b620006b28383620005d4565b8060001904821115620006c957620006c9620005be565b029392505050565b60006200052f60ff8416836200061d565b6000816000190483118215151615620006ff57620006ff620005be565b500290565b600082198211156200071a576200071a620005be565b500190565b6000826200073d57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200075557600080fd5b81516001600160a01b03811681146200052f57600080fd5b600060208083528351808285015260005b818110156200079c578581018301518582016040015282016200077e565b81811115620007af576000604083870101525b50601f01601f1916929092016040019392505050565b61286480620007d56000396000f3fe6080604052600436106102905760003560e01c8063715018a611610164578063a9059cbb116100c6578063c9567bf91161008a578063dd62ed3e11610064578063dd62ed3e14610767578063f2fde38b146107ad578063f887ea40146107cd57600080fd5b8063c9567bf914610712578063d51ed1c814610727578063d78e139d1461074757600080fd5b8063a9059cbb1461066e578063b2bdfa7b1461068e578063b67f55b9146106ae578063bc7a2898146106ce578063c0600af3146106f257600080fd5b80638a4068dd1161012857806395d89b411161010257806395d89b41146103575780639acb773e1461062e578063a8aa1b311461064e57600080fd5b80638a4068dd146105db5780638c07e5aa146105f05780638da5cb5b1461061057600080fd5b8063715018a61461054857806377b54bad1461055d57806378109e541461057d5780637d1db4a514610593578063893d20e8146105a957600080fd5b80631161ae391161020d5780632b112e49116101d157806367529022116101ab57806367529022146104dc5780636ddd1713146104f157806370a082311461051257600080fd5b80632b112e491461048b578063313ce567146104a05780633554dd3c146104bc57600080fd5b80631161ae391461040057806318160ddd146104205780631ad2ebb8146104355780631df4ccfc1461045557806323b872dd1461046b57600080fd5b806306fdde031161025457806306fdde031461035757806308fd3d051461038a578063092545ce146103ab578063095ea7b3146103cb5780630c7cc32c146103eb57600080fd5b806304368f651461029c5780630445b667146102be5780630517d13d146102e7578063056d504c146103075780630621472c1461032757600080fd5b3661029757005b600080fd5b3480156102a857600080fd5b506102bc6102b7366004612261565b6107ed565b005b3480156102ca57600080fd5b506102d460235481565b6040519081526020015b60405180910390f35b3480156102f357600080fd5b506102bc61030236600461228d565b61085c565b34801561031357600080fd5b506102bc61032236600461228d565b6108e3565b34801561033357600080fd5b506103476103423660046122c2565b61096a565b60405190151581526020016102de565b34801561036357600080fd5b5060408051808201825260048152635045504160e01b602082015290516102de919061232a565b34801561039657600080fd5b5060225461034790600160a01b900460ff1681565b3480156103b757600080fd5b506102bc6103c636600461233d565b61097e565b3480156103d757600080fd5b506103476103e6366004612374565b610a04565b3480156103f757600080fd5b506102bc610a70565b34801561040c57600080fd5b5061034761041b366004612390565b610ac2565b34801561042c57600080fd5b506005546102d4565b34801561044157600080fd5b506102bc610450366004612455565b610ad6565b34801561046157600080fd5b506102d460115481565b34801561047757600080fd5b506103476104863660046124dd565b610b5f565b34801561049757600080fd5b506102d4610c28565b3480156104ac57600080fd5b50604051600981526020016102de565b3480156104c857600080fd5b506102bc6104d7366004612519565b610c7a565b3480156104e857600080fd5b506102bc610d21565b3480156104fd57600080fd5b5060225461034790600160a81b900460ff1681565b34801561051e57600080fd5b506102d461052d3660046122c2565b6001600160a01b031660009081526008602052604090205490565b34801561055457600080fd5b506102bc610d76565b34801561056957600080fd5b50610347610578366004612374565b610e08565b34801561058957600080fd5b506102d460075481565b34801561059f57600080fd5b506102d460065481565b3480156105b557600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016102de565b3480156105e757600080fd5b506102bc610f08565b3480156105fc57600080fd5b506102bc61060b366004612390565b610f53565b34801561061c57600080fd5b506000546001600160a01b03166105c3565b34801561063a57600080fd5b506102bc61064936600461233d565b610fa6565b34801561065a57600080fd5b506022546105c3906001600160a01b031681565b34801561067a57600080fd5b50610347610689366004612374565b611019565b34801561069a57600080fd5b506000546105c3906001600160a01b031681565b3480156106ba57600080fd5b506102bc6106c936600461257e565b611026565b3480156106da57600080fd5b506106e361107f565b6040516102de939291906125aa565b3480156106fe57600080fd5b506102bc61070d3660046125ed565b611239565b34801561071e57600080fd5b506102bc61131d565b34801561073357600080fd5b506102d461074236600461228d565b61137a565b34801561075357600080fd5b506102bc61076236600461228d565b6113c1565b34801561077357600080fd5b506102d4610782366004612630565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b3480156107b957600080fd5b506102bc6107c83660046122c2565b611415565b3480156107d957600080fd5b506020546105c3906001600160a01b031681565b6000546001600160a01b0316331461083a5760405162461bcd60e51b8152602060048201819052602482015260008051602061280f83398151915260448201526064015b60405180910390fd5b60228054921515600160a81b0260ff60a81b1990931692909217909155602355565b6000546001600160a01b031633146108a45760405162461bcd60e51b8152602060048201819052602482015260008051602061280f8339815191526044820152606401610831565b6103e86005546108b49190612679565b60065410156108c257600080fd5b6103e8816005546108d3919061269b565b6108dd9190612679565b60065550565b6000546001600160a01b0316331461092b5760405162461bcd60e51b8152602060048201819052602482015260008051602061280f8339815191526044820152606401610831565b6103e860055461093b9190612679565b600754101561094957600080fd5b6103e88160055461095a919061269b565b6109649190612679565b60075550565b600061097882600019610a04565b92915050565b6000546001600160a01b031633146109c65760405162461bcd60e51b8152602060048201819052602482015260008051602061280f8339815191526044820152606401610831565b6001600160a01b039091166000908152600a60209081526040808320805494151560ff199586168117909155600b9092529091208054909216179055565b3360008181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610a5f9086815260200190565b60405180910390a350600192915050565b6000546001600160a01b03163314610ab85760405162461bcd60e51b8152602060048201819052602482015260008051602061280f8339815191526044820152606401610831565b610ac06115e1565b565b600082610ace8361137a565b119392505050565b6000546001600160a01b03163314610b1e5760405162461bcd60e51b8152602060048201819052602482015260008051602061280f8339815191526044820152606401610831565b8251610b3190601b9060208601906121ba565b508151610b4590601c9060208501906121ba565b508051610b5990601d9060208401906121ba565b50505050565b6001600160a01b038316600090815260096020908152604080832033845290915281205460001914610c1357604080518082018252601681527f496e73756666696369656e7420416c6c6f77616e6365000000000000000000006020808301919091526001600160a01b0387166000908152600982528381203382529091529190912054610bee9184906119ca565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b610c1e848484611a04565b90505b9392505050565b6004546001600160a01b0316600090815260086020526040812054610c75906003546001600160a01b0316600090815260086020526040902054610c6f9060055490611d85565b90611d85565b905090565b6000546001600160a01b03163314610cc25760405162461bcd60e51b8152602060048201819052602482015260008051602061280f8339815191526044820152606401610831565b601680546001600160a01b03199081166001600160a01b03978816179091556017805482169587169590951790945560188054851693861693909317909255601a80548416918516919091179055601980549092169216919091179055565b6000546001600160a01b03163314610d695760405162461bcd60e51b8152602060048201819052602482015260008051602061280f8339815191526044820152606401610831565b6005546007819055600655565b6000546001600160a01b03163314610dbe5760405162461bcd60e51b8152602060048201819052602482015260008051602061280f8339815191526044820152606401610831565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b336000908152600b602052604081205460ff16610e2457600080fd5b81600003610e97576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610e70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9491906126ba565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015610ee4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2191906126d3565b336000908152600b602052604090205460ff16610f2457600080fd5b60405133904780156108fc02916000818181858888f19350505050158015610f50573d6000803e3d6000fd5b50565b6000546001600160a01b03163314610f9b5760405162461bcd60e51b8152602060048201819052602482015260008051602061280f8339815191526044820152606401610831565b601e91909155601f55565b6000546001600160a01b03163314610fee5760405162461bcd60e51b8152602060048201819052602482015260008051602061280f8339815191526044820152606401610831565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6000610c21338484611a04565b6000546001600160a01b0316331461106e5760405162461bcd60e51b8152602060048201819052602482015260008051602061280f8339815191526044820152606401610831565b601391909155601491909155601555565b6060806060601b601c601d828054611096906126f0565b80601f01602080910402602001604051908101604052809291908181526020018280546110c2906126f0565b801561110f5780601f106110e45761010080835404028352916020019161110f565b820191906000526020600020905b8154815290600101906020018083116110f257829003601f168201915b50505050509250818054611122906126f0565b80601f016020809104026020016040519081016040528092919081815260200182805461114e906126f0565b801561119b5780601f106111705761010080835404028352916020019161119b565b820191906000526020600020905b81548152906001019060200180831161117e57829003601f168201915b505050505091508080546111ae906126f0565b80601f01602080910402602001604051908101604052809291908181526020018280546111da906126f0565b80156112275780601f106111fc57610100808354040283529160200191611227565b820191906000526020600020905b81548152906001019060200180831161120a57829003601f168201915b50505050509050925092509250909192565b6000546001600160a01b031633146112815760405162461bcd60e51b8152602060048201819052602482015260008051602061280f8339815191526044820152606401610831565b600c869055600f859055600d849055600e83905560108290556112b2826112ac858188818c8c611dc7565b90611dc7565b60115560128190556112c5600582612679565b601154106113155760405162461bcd60e51b815260206004820152601d60248201527f466565732063616e206e6f74206265206d6f7265207468616e203230250000006044820152606401610831565b505050505050565b6000546001600160a01b031633146113655760405162461bcd60e51b8152602060048201819052602482015260008051602061280f8339815191526044820152606401610831565b6022805460ff60a01b1916600160a01b179055565b6000610978611387610c28565b6022546001600160a01b03166000908152600860205260409020546113bb906113b4906002905b9061151d565b859061151d565b9061159f565b60175447906001600160a01b03166108fc60646113de858561269b565b6113e89190612679565b6040518115909202916000818181858888f19350505050158015611410573d6000803e3d6000fd5b505050565b6000546001600160a01b0316331461145d5760405162461bcd60e51b8152602060048201819052602482015260008051602061280f8339815191526044820152606401610831565b6001600160a01b0381166114c25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610831565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008260000361152f57506000610978565b600061153b838561269b565b9050826115488583612679565b14610c215760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610831565b6000610c2183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e26565b6024805460ff19166001179055601e54601f5460009161160091610ac2565b61160c57600c5461160f565b60005b9050600061163360026113bb6011546113bb8660235461151d90919063ffffffff16565b9050600061164c82602354611d8590919063ffffffff16565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106116865761168661272a565b6001600160a01b0392831660209182029290920101526002548251911690829060019081106116b7576116b761272a565b6001600160a01b039283166020918202929092018101919091525460405163791ac94760e01b81524792919091169063791ac94790611703908690600090879030904290600401612740565b600060405180830381600087803b15801561171d57600080fd5b505af1158015611731573d6000803e3d6000fd5b50505050600061174a8247611d8590919063ffffffff16565b9050600061176561175c88600261159f565b60115490611d85565b9050600061177a60026113bb8481878d61151d565b90506000611797836113bb600d548761151d90919063ffffffff16565b905060006117b4846113bb600f548861151d90919063ffffffff16565b905060006117d1856113bb600e548961151d90919063ffffffff16565b6017546040519192506000916001600160a01b039091169085908381818185875af1925050503d8060008114611823576040519150601f19603f3d011682016040523d82523d6000602084013e611828565b606091505b50506018546040519192506001600160a01b0316908390600081818185875af1925050503d8060008114611878576040519150601f19603f3d011682016040523d82523d6000602084013e61187d565b606091505b50506019546040519192506001600160a01b0316908490600081818185875af1925050503d80600081146118cd576040519150601f19603f3d011682016040523d82523d6000602084013e6118d2565b606091505b5060009250508b1590506119b25760205460165460405163f305d71960e01b8152306004820152602481018e905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c40160606040518083038185885af1158015611950573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061197591906127b1565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506024805460ff1916905550505050505050505050565b600081848411156119ee5760405162461bcd60e51b8152600401610831919061232a565b5060006119fb84866127df565b95945050505050565b60245460009060ff1615611a2457611a1d848484611e54565b9050610c21565b6001600160a01b03841660009081526001602052604090205460ff16158015611a6657506001600160a01b03831660009081526001602052604090205460ff16155b15611ac457602254600160a01b900460ff16611ac45760405162461bcd60e51b815260206004820152601460248201527f54726164696e67206e6f74206f70656e207965740000000000000000000000006044820152606401610831565b6001600160a01b03841660009081526001602052604090205460ff16158015611af657506001600160a01b0383163014155b8015611b1057506003546001600160a01b03848116911614155b8015611b2a57506022546001600160a01b03848116911614155b8015611b445750601a546001600160a01b03848116911614155b8015611b5e57506017546001600160a01b03848116911614155b8015611b8357506001600160a01b0383166000908152600b602052604090205460ff16155b15611c24576001600160a01b038316600090815260086020526040902054600754611bae84836127f6565b1115611c225760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e00006064820152608401610831565b505b611c2e8483611f3a565b611c36611fb3565b15611c4357611c436115e1565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038716600090815260089091529190912054611c959184906119ca565b6001600160a01b038516600090815260086020908152604080832093909355600a90529081205460ff1680611ce257506001600160a01b0384166000908152600a602052604090205460ff165b611cf657611cf1858486612009565b611cf8565b825b6001600160a01b038516600090815260086020526040902054909150611d1e9082611dc7565b6001600160a01b0380861660008181526008602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611d729085815260200190565b60405180910390a3506001949350505050565b6000610c2183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506119ca565b600080611dd483856127f6565b905083811015610c215760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610831565b60008183611e475760405162461bcd60e51b8152600401610831919061232a565b5060006119fb8486612679565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600890915291822054611ea59184906119ca565b6001600160a01b038086166000908152600860205260408082209390935590851681522054611ed49083611dc7565b6001600160a01b0380851660008181526008602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611f289086815260200190565b60405180910390a35060019392505050565b60065481111580611f6357506001600160a01b0382166000908152600b602052604090205460ff165b611faf5760405162461bcd60e51b815260206004820152601160248201527f5458204c696d69742045786365656465640000000000000000000000000000006044820152606401610831565b5050565b6022546000906001600160a01b03163314801590611fd4575060245460ff16155b8015611fe95750602254600160a81b900460ff165b8015610c7557505060235430600090815260086020526040902054101590565b601554602254600091906001600160a01b039081169084160361202f575060135461204a565b6022546001600160a01b039081169086160361204a57506014545b6000612077601254606461205e919061269b565b6113bb846113ae6011548a61151d90919063ffffffff16565b905060006120966011546113bb6010548561151d90919063ffffffff16565b905060006120a48383611d85565b306000908152600860205260409020549091506120c19082611dc7565b3060009081526008602052604080822092909255601a546001600160a01b0316815220546120ef9083611dc7565b601a546001600160a01b0390811660009081526008602090815260409182902093909355518381523092918b16917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a381156121a45760055461215b9083611d85565b6005556004546040518381526001600160a01b03918216918a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6121ae8784611d85565b98975050505050505050565b8280546121c6906126f0565b90600052602060002090601f0160209004810192826121e8576000855561222e565b82601f1061220157805160ff191683800117855561222e565b8280016001018555821561222e579182015b8281111561222e578251825591602001919060010190612213565b5061223a92915061223e565b5090565b5b8082111561223a576000815560010161223f565b8015158114610f5057600080fd5b6000806040838503121561227457600080fd5b823561227f81612253565b946020939093013593505050565b60006020828403121561229f57600080fd5b5035919050565b80356001600160a01b03811681146122bd57600080fd5b919050565b6000602082840312156122d457600080fd5b610c21826122a6565b6000815180845260005b81811015612303576020818501810151868301820152016122e7565b81811115612315576000602083870101525b50601f01601f19169290920160200192915050565b602081526000610c2160208301846122dd565b6000806040838503121561235057600080fd5b612359836122a6565b9150602083013561236981612253565b809150509250929050565b6000806040838503121561238757600080fd5b61227f836122a6565b600080604083850312156123a357600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126123d957600080fd5b813567ffffffffffffffff808211156123f4576123f46123b2565b604051601f8301601f19908116603f0116810190828211818310171561241c5761241c6123b2565b8160405283815286602085880101111561243557600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060006060848603121561246a57600080fd5b833567ffffffffffffffff8082111561248257600080fd5b61248e878388016123c8565b945060208601359150808211156124a457600080fd5b6124b0878388016123c8565b935060408601359150808211156124c657600080fd5b506124d3868287016123c8565b9150509250925092565b6000806000606084860312156124f257600080fd5b6124fb846122a6565b9250612509602085016122a6565b9150604084013590509250925092565b600080600080600060a0868803121561253157600080fd5b61253a866122a6565b9450612548602087016122a6565b9350612556604087016122a6565b9250612564606087016122a6565b9150612572608087016122a6565b90509295509295909350565b60008060006060848603121561259357600080fd5b505081359360208301359350604090920135919050565b6060815260006125bd60608301866122dd565b82810360208401526125cf81866122dd565b905082810360408401526125e381856122dd565b9695505050505050565b60008060008060008060c0878903121561260657600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b6000806040838503121561264357600080fd5b61264c836122a6565b915061265a602084016122a6565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b60008261269657634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156126b5576126b5612663565b500290565b6000602082840312156126cc57600080fd5b5051919050565b6000602082840312156126e557600080fd5b8151610c2181612253565b600181811c9082168061270457607f821691505b60208210810361272457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156127905784516001600160a01b03168352938301939183019160010161276b565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156127c657600080fd5b8351925060208401519150604084015190509250925092565b6000828210156127f1576127f1612663565b500390565b6000821982111561280957612809612663565b50019056fe4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a264697066735822122059a107e6719212a613e575a2df782412d841504bf711e7b39e9d271c100d0caa64736f6c634300080e0033

Deployed Bytecode

0x6080604052600436106102905760003560e01c8063715018a611610164578063a9059cbb116100c6578063c9567bf91161008a578063dd62ed3e11610064578063dd62ed3e14610767578063f2fde38b146107ad578063f887ea40146107cd57600080fd5b8063c9567bf914610712578063d51ed1c814610727578063d78e139d1461074757600080fd5b8063a9059cbb1461066e578063b2bdfa7b1461068e578063b67f55b9146106ae578063bc7a2898146106ce578063c0600af3146106f257600080fd5b80638a4068dd1161012857806395d89b411161010257806395d89b41146103575780639acb773e1461062e578063a8aa1b311461064e57600080fd5b80638a4068dd146105db5780638c07e5aa146105f05780638da5cb5b1461061057600080fd5b8063715018a61461054857806377b54bad1461055d57806378109e541461057d5780637d1db4a514610593578063893d20e8146105a957600080fd5b80631161ae391161020d5780632b112e49116101d157806367529022116101ab57806367529022146104dc5780636ddd1713146104f157806370a082311461051257600080fd5b80632b112e491461048b578063313ce567146104a05780633554dd3c146104bc57600080fd5b80631161ae391461040057806318160ddd146104205780631ad2ebb8146104355780631df4ccfc1461045557806323b872dd1461046b57600080fd5b806306fdde031161025457806306fdde031461035757806308fd3d051461038a578063092545ce146103ab578063095ea7b3146103cb5780630c7cc32c146103eb57600080fd5b806304368f651461029c5780630445b667146102be5780630517d13d146102e7578063056d504c146103075780630621472c1461032757600080fd5b3661029757005b600080fd5b3480156102a857600080fd5b506102bc6102b7366004612261565b6107ed565b005b3480156102ca57600080fd5b506102d460235481565b6040519081526020015b60405180910390f35b3480156102f357600080fd5b506102bc61030236600461228d565b61085c565b34801561031357600080fd5b506102bc61032236600461228d565b6108e3565b34801561033357600080fd5b506103476103423660046122c2565b61096a565b60405190151581526020016102de565b34801561036357600080fd5b5060408051808201825260048152635045504160e01b602082015290516102de919061232a565b34801561039657600080fd5b5060225461034790600160a01b900460ff1681565b3480156103b757600080fd5b506102bc6103c636600461233d565b61097e565b3480156103d757600080fd5b506103476103e6366004612374565b610a04565b3480156103f757600080fd5b506102bc610a70565b34801561040c57600080fd5b5061034761041b366004612390565b610ac2565b34801561042c57600080fd5b506005546102d4565b34801561044157600080fd5b506102bc610450366004612455565b610ad6565b34801561046157600080fd5b506102d460115481565b34801561047757600080fd5b506103476104863660046124dd565b610b5f565b34801561049757600080fd5b506102d4610c28565b3480156104ac57600080fd5b50604051600981526020016102de565b3480156104c857600080fd5b506102bc6104d7366004612519565b610c7a565b3480156104e857600080fd5b506102bc610d21565b3480156104fd57600080fd5b5060225461034790600160a81b900460ff1681565b34801561051e57600080fd5b506102d461052d3660046122c2565b6001600160a01b031660009081526008602052604090205490565b34801561055457600080fd5b506102bc610d76565b34801561056957600080fd5b50610347610578366004612374565b610e08565b34801561058957600080fd5b506102d460075481565b34801561059f57600080fd5b506102d460065481565b3480156105b557600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016102de565b3480156105e757600080fd5b506102bc610f08565b3480156105fc57600080fd5b506102bc61060b366004612390565b610f53565b34801561061c57600080fd5b506000546001600160a01b03166105c3565b34801561063a57600080fd5b506102bc61064936600461233d565b610fa6565b34801561065a57600080fd5b506022546105c3906001600160a01b031681565b34801561067a57600080fd5b50610347610689366004612374565b611019565b34801561069a57600080fd5b506000546105c3906001600160a01b031681565b3480156106ba57600080fd5b506102bc6106c936600461257e565b611026565b3480156106da57600080fd5b506106e361107f565b6040516102de939291906125aa565b3480156106fe57600080fd5b506102bc61070d3660046125ed565b611239565b34801561071e57600080fd5b506102bc61131d565b34801561073357600080fd5b506102d461074236600461228d565b61137a565b34801561075357600080fd5b506102bc61076236600461228d565b6113c1565b34801561077357600080fd5b506102d4610782366004612630565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b3480156107b957600080fd5b506102bc6107c83660046122c2565b611415565b3480156107d957600080fd5b506020546105c3906001600160a01b031681565b6000546001600160a01b0316331461083a5760405162461bcd60e51b8152602060048201819052602482015260008051602061280f83398151915260448201526064015b60405180910390fd5b60228054921515600160a81b0260ff60a81b1990931692909217909155602355565b6000546001600160a01b031633146108a45760405162461bcd60e51b8152602060048201819052602482015260008051602061280f8339815191526044820152606401610831565b6103e86005546108b49190612679565b60065410156108c257600080fd5b6103e8816005546108d3919061269b565b6108dd9190612679565b60065550565b6000546001600160a01b0316331461092b5760405162461bcd60e51b8152602060048201819052602482015260008051602061280f8339815191526044820152606401610831565b6103e860055461093b9190612679565b600754101561094957600080fd5b6103e88160055461095a919061269b565b6109649190612679565b60075550565b600061097882600019610a04565b92915050565b6000546001600160a01b031633146109c65760405162461bcd60e51b8152602060048201819052602482015260008051602061280f8339815191526044820152606401610831565b6001600160a01b039091166000908152600a60209081526040808320805494151560ff199586168117909155600b9092529091208054909216179055565b3360008181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610a5f9086815260200190565b60405180910390a350600192915050565b6000546001600160a01b03163314610ab85760405162461bcd60e51b8152602060048201819052602482015260008051602061280f8339815191526044820152606401610831565b610ac06115e1565b565b600082610ace8361137a565b119392505050565b6000546001600160a01b03163314610b1e5760405162461bcd60e51b8152602060048201819052602482015260008051602061280f8339815191526044820152606401610831565b8251610b3190601b9060208601906121ba565b508151610b4590601c9060208501906121ba565b508051610b5990601d9060208401906121ba565b50505050565b6001600160a01b038316600090815260096020908152604080832033845290915281205460001914610c1357604080518082018252601681527f496e73756666696369656e7420416c6c6f77616e6365000000000000000000006020808301919091526001600160a01b0387166000908152600982528381203382529091529190912054610bee9184906119ca565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b610c1e848484611a04565b90505b9392505050565b6004546001600160a01b0316600090815260086020526040812054610c75906003546001600160a01b0316600090815260086020526040902054610c6f9060055490611d85565b90611d85565b905090565b6000546001600160a01b03163314610cc25760405162461bcd60e51b8152602060048201819052602482015260008051602061280f8339815191526044820152606401610831565b601680546001600160a01b03199081166001600160a01b03978816179091556017805482169587169590951790945560188054851693861693909317909255601a80548416918516919091179055601980549092169216919091179055565b6000546001600160a01b03163314610d695760405162461bcd60e51b8152602060048201819052602482015260008051602061280f8339815191526044820152606401610831565b6005546007819055600655565b6000546001600160a01b03163314610dbe5760405162461bcd60e51b8152602060048201819052602482015260008051602061280f8339815191526044820152606401610831565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b336000908152600b602052604081205460ff16610e2457600080fd5b81600003610e97576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610e70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9491906126ba565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015610ee4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2191906126d3565b336000908152600b602052604090205460ff16610f2457600080fd5b60405133904780156108fc02916000818181858888f19350505050158015610f50573d6000803e3d6000fd5b50565b6000546001600160a01b03163314610f9b5760405162461bcd60e51b8152602060048201819052602482015260008051602061280f8339815191526044820152606401610831565b601e91909155601f55565b6000546001600160a01b03163314610fee5760405162461bcd60e51b8152602060048201819052602482015260008051602061280f8339815191526044820152606401610831565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6000610c21338484611a04565b6000546001600160a01b0316331461106e5760405162461bcd60e51b8152602060048201819052602482015260008051602061280f8339815191526044820152606401610831565b601391909155601491909155601555565b6060806060601b601c601d828054611096906126f0565b80601f01602080910402602001604051908101604052809291908181526020018280546110c2906126f0565b801561110f5780601f106110e45761010080835404028352916020019161110f565b820191906000526020600020905b8154815290600101906020018083116110f257829003601f168201915b50505050509250818054611122906126f0565b80601f016020809104026020016040519081016040528092919081815260200182805461114e906126f0565b801561119b5780601f106111705761010080835404028352916020019161119b565b820191906000526020600020905b81548152906001019060200180831161117e57829003601f168201915b505050505091508080546111ae906126f0565b80601f01602080910402602001604051908101604052809291908181526020018280546111da906126f0565b80156112275780601f106111fc57610100808354040283529160200191611227565b820191906000526020600020905b81548152906001019060200180831161120a57829003601f168201915b50505050509050925092509250909192565b6000546001600160a01b031633146112815760405162461bcd60e51b8152602060048201819052602482015260008051602061280f8339815191526044820152606401610831565b600c869055600f859055600d849055600e83905560108290556112b2826112ac858188818c8c611dc7565b90611dc7565b60115560128190556112c5600582612679565b601154106113155760405162461bcd60e51b815260206004820152601d60248201527f466565732063616e206e6f74206265206d6f7265207468616e203230250000006044820152606401610831565b505050505050565b6000546001600160a01b031633146113655760405162461bcd60e51b8152602060048201819052602482015260008051602061280f8339815191526044820152606401610831565b6022805460ff60a01b1916600160a01b179055565b6000610978611387610c28565b6022546001600160a01b03166000908152600860205260409020546113bb906113b4906002905b9061151d565b859061151d565b9061159f565b60175447906001600160a01b03166108fc60646113de858561269b565b6113e89190612679565b6040518115909202916000818181858888f19350505050158015611410573d6000803e3d6000fd5b505050565b6000546001600160a01b0316331461145d5760405162461bcd60e51b8152602060048201819052602482015260008051602061280f8339815191526044820152606401610831565b6001600160a01b0381166114c25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610831565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008260000361152f57506000610978565b600061153b838561269b565b9050826115488583612679565b14610c215760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610831565b6000610c2183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e26565b6024805460ff19166001179055601e54601f5460009161160091610ac2565b61160c57600c5461160f565b60005b9050600061163360026113bb6011546113bb8660235461151d90919063ffffffff16565b9050600061164c82602354611d8590919063ffffffff16565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106116865761168661272a565b6001600160a01b0392831660209182029290920101526002548251911690829060019081106116b7576116b761272a565b6001600160a01b039283166020918202929092018101919091525460405163791ac94760e01b81524792919091169063791ac94790611703908690600090879030904290600401612740565b600060405180830381600087803b15801561171d57600080fd5b505af1158015611731573d6000803e3d6000fd5b50505050600061174a8247611d8590919063ffffffff16565b9050600061176561175c88600261159f565b60115490611d85565b9050600061177a60026113bb8481878d61151d565b90506000611797836113bb600d548761151d90919063ffffffff16565b905060006117b4846113bb600f548861151d90919063ffffffff16565b905060006117d1856113bb600e548961151d90919063ffffffff16565b6017546040519192506000916001600160a01b039091169085908381818185875af1925050503d8060008114611823576040519150601f19603f3d011682016040523d82523d6000602084013e611828565b606091505b50506018546040519192506001600160a01b0316908390600081818185875af1925050503d8060008114611878576040519150601f19603f3d011682016040523d82523d6000602084013e61187d565b606091505b50506019546040519192506001600160a01b0316908490600081818185875af1925050503d80600081146118cd576040519150601f19603f3d011682016040523d82523d6000602084013e6118d2565b606091505b5060009250508b1590506119b25760205460165460405163f305d71960e01b8152306004820152602481018e905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c40160606040518083038185885af1158015611950573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061197591906127b1565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506024805460ff1916905550505050505050505050565b600081848411156119ee5760405162461bcd60e51b8152600401610831919061232a565b5060006119fb84866127df565b95945050505050565b60245460009060ff1615611a2457611a1d848484611e54565b9050610c21565b6001600160a01b03841660009081526001602052604090205460ff16158015611a6657506001600160a01b03831660009081526001602052604090205460ff16155b15611ac457602254600160a01b900460ff16611ac45760405162461bcd60e51b815260206004820152601460248201527f54726164696e67206e6f74206f70656e207965740000000000000000000000006044820152606401610831565b6001600160a01b03841660009081526001602052604090205460ff16158015611af657506001600160a01b0383163014155b8015611b1057506003546001600160a01b03848116911614155b8015611b2a57506022546001600160a01b03848116911614155b8015611b445750601a546001600160a01b03848116911614155b8015611b5e57506017546001600160a01b03848116911614155b8015611b8357506001600160a01b0383166000908152600b602052604090205460ff16155b15611c24576001600160a01b038316600090815260086020526040902054600754611bae84836127f6565b1115611c225760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e00006064820152608401610831565b505b611c2e8483611f3a565b611c36611fb3565b15611c4357611c436115e1565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038716600090815260089091529190912054611c959184906119ca565b6001600160a01b038516600090815260086020908152604080832093909355600a90529081205460ff1680611ce257506001600160a01b0384166000908152600a602052604090205460ff165b611cf657611cf1858486612009565b611cf8565b825b6001600160a01b038516600090815260086020526040902054909150611d1e9082611dc7565b6001600160a01b0380861660008181526008602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611d729085815260200190565b60405180910390a3506001949350505050565b6000610c2183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506119ca565b600080611dd483856127f6565b905083811015610c215760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610831565b60008183611e475760405162461bcd60e51b8152600401610831919061232a565b5060006119fb8486612679565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600890915291822054611ea59184906119ca565b6001600160a01b038086166000908152600860205260408082209390935590851681522054611ed49083611dc7565b6001600160a01b0380851660008181526008602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611f289086815260200190565b60405180910390a35060019392505050565b60065481111580611f6357506001600160a01b0382166000908152600b602052604090205460ff165b611faf5760405162461bcd60e51b815260206004820152601160248201527f5458204c696d69742045786365656465640000000000000000000000000000006044820152606401610831565b5050565b6022546000906001600160a01b03163314801590611fd4575060245460ff16155b8015611fe95750602254600160a81b900460ff165b8015610c7557505060235430600090815260086020526040902054101590565b601554602254600091906001600160a01b039081169084160361202f575060135461204a565b6022546001600160a01b039081169086160361204a57506014545b6000612077601254606461205e919061269b565b6113bb846113ae6011548a61151d90919063ffffffff16565b905060006120966011546113bb6010548561151d90919063ffffffff16565b905060006120a48383611d85565b306000908152600860205260409020549091506120c19082611dc7565b3060009081526008602052604080822092909255601a546001600160a01b0316815220546120ef9083611dc7565b601a546001600160a01b0390811660009081526008602090815260409182902093909355518381523092918b16917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a381156121a45760055461215b9083611d85565b6005556004546040518381526001600160a01b03918216918a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6121ae8784611d85565b98975050505050505050565b8280546121c6906126f0565b90600052602060002090601f0160209004810192826121e8576000855561222e565b82601f1061220157805160ff191683800117855561222e565b8280016001018555821561222e579182015b8281111561222e578251825591602001919060010190612213565b5061223a92915061223e565b5090565b5b8082111561223a576000815560010161223f565b8015158114610f5057600080fd5b6000806040838503121561227457600080fd5b823561227f81612253565b946020939093013593505050565b60006020828403121561229f57600080fd5b5035919050565b80356001600160a01b03811681146122bd57600080fd5b919050565b6000602082840312156122d457600080fd5b610c21826122a6565b6000815180845260005b81811015612303576020818501810151868301820152016122e7565b81811115612315576000602083870101525b50601f01601f19169290920160200192915050565b602081526000610c2160208301846122dd565b6000806040838503121561235057600080fd5b612359836122a6565b9150602083013561236981612253565b809150509250929050565b6000806040838503121561238757600080fd5b61227f836122a6565b600080604083850312156123a357600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126123d957600080fd5b813567ffffffffffffffff808211156123f4576123f46123b2565b604051601f8301601f19908116603f0116810190828211818310171561241c5761241c6123b2565b8160405283815286602085880101111561243557600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060006060848603121561246a57600080fd5b833567ffffffffffffffff8082111561248257600080fd5b61248e878388016123c8565b945060208601359150808211156124a457600080fd5b6124b0878388016123c8565b935060408601359150808211156124c657600080fd5b506124d3868287016123c8565b9150509250925092565b6000806000606084860312156124f257600080fd5b6124fb846122a6565b9250612509602085016122a6565b9150604084013590509250925092565b600080600080600060a0868803121561253157600080fd5b61253a866122a6565b9450612548602087016122a6565b9350612556604087016122a6565b9250612564606087016122a6565b9150612572608087016122a6565b90509295509295909350565b60008060006060848603121561259357600080fd5b505081359360208301359350604090920135919050565b6060815260006125bd60608301866122dd565b82810360208401526125cf81866122dd565b905082810360408401526125e381856122dd565b9695505050505050565b60008060008060008060c0878903121561260657600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b6000806040838503121561264357600080fd5b61264c836122a6565b915061265a602084016122a6565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b60008261269657634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156126b5576126b5612663565b500290565b6000602082840312156126cc57600080fd5b5051919050565b6000602082840312156126e557600080fd5b8151610c2181612253565b600181811c9082168061270457607f821691505b60208210810361272457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156127905784516001600160a01b03168352938301939183019160010161276b565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156127c657600080fd5b8351925060208401519150604084015190509250925092565b6000828210156127f1576127f1612663565b500390565b6000821982111561280957612809612663565b50019056fe4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a264697066735822122059a107e6719212a613e575a2df782412d841504bf711e7b39e9d271c100d0caa64736f6c634300080e0033

Deployed Bytecode Sourcemap

5161:13937:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18191:156;;;;;;;;;;-1:-1:-1;18191:156:0;;;;;:::i;:::-;;:::i;:::-;;6947:57;;;;;;;;;;;;;;;;;;;597:25:1;;;585:2;570:18;6947:57:0;;;;;;;;10016:199;;;;;;;;;;-1:-1:-1;10016:199:0;;;;;:::i;:::-;;:::i;9785:223::-;;;;;;;;;;-1:-1:-1;9785:223:0;;;;;:::i;:::-;;:::i;9109:122::-;;;;;;;;;;-1:-1:-1;9109:122:0;;;;;:::i;:::-;;:::i;:::-;;;1375:14:1;;1368:22;1350:41;;1338:2;1323:18;9109:122:0;1210:187:1;8463:80:0;;;;;;;;;;-1:-1:-1;8535:5:0;;;;;;;;;;;-1:-1:-1;;;8535:5:0;;;;8463:80;;;;8535:5;8463:80;:::i;6866:31::-;;;;;;;;;;-1:-1:-1;6866:31:0;;;;-1:-1:-1;;;6866:31:0;;;;;;16868:155;;;;;;;;;;-1:-1:-1;16868:155:0;;;;;:::i;:::-;;:::i;8885:216::-;;;;;;;;;;-1:-1:-1;8885:216:0;;;;;:::i;:::-;;:::i;13969:77::-;;;;;;;;;;;;;:::i;18872:150::-;;;;;;;;;;-1:-1:-1;18872:150:0;;;;;:::i;:::-;;:::i;8193:88::-;;;;;;;;;;-1:-1:-1;8266:12:0;;8193:88;;10361:207;;;;;;;;;;-1:-1:-1;10361:207:0;;;;;:::i;:::-;;:::i;6127:94::-;;;;;;;;;;;;;;;;9403:370;;;;;;;;;;-1:-1:-1;9403:370:0;;;;;:::i;:::-;;:::i;18547:142::-;;;;;;;;;;;;;:::i;8287:80::-;;;;;;;;;;-1:-1:-1;8287:80:0;;5493:1;5015:36:1;;5003:2;4988:18;8287:80:0;4873:184:1;17737:446:0;;;;;;;;;;-1:-1:-1;17737:446:0;;;;;:::i;:::-;;:::i;14054:129::-;;;;;;;;;;;;;:::i;6910:30::-;;;;;;;;;;-1:-1:-1;6910:30:0;;;;-1:-1:-1;;;6910:30:0;;;;;;8633:105;;;;;;;;;;-1:-1:-1;8633:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;8717:18:0;8699:7;8717:18;;;:9;:18;;;;;;;8633:105;3218:148;;;;;;;;;;;;;:::i;14348:308::-;;;;;;;;;;-1:-1:-1;14348:308:0;;;;;:::i;:::-;;:::i;5631:61::-;;;;;;;;;;;;;;;;5566:58;;;;;;;;;;;;;;;;8549:78;;;;;;;;;;-1:-1:-1;8601:7:0;3069:6;-1:-1:-1;;;;;3069:6:0;8549:78;;;-1:-1:-1;;;;;5715:55:1;;;5697:74;;5685:2;5670:18;8549:78:0;5551:226:1;14191:149:0;;;;;;;;;;;;;:::i;18355:180::-;;;;;;;;;;-1:-1:-1;18355:180:0;;;;;:::i;:::-;;:::i;3004:79::-;;;;;;;;;;-1:-1:-1;3042:7:0;3069:6;-1:-1:-1;;;;;3069:6:0;3004:79;;17031:120;;;;;;;;;;-1:-1:-1;17031:120:0;;;;;:::i;:::-;;:::i;6834:19::-;;;;;;;;;;-1:-1:-1;6834:19:0;;;;-1:-1:-1;;;;;6834:19:0;;;9239:156;;;;;;;;;;-1:-1:-1;9239:156:0;;;;;:::i;:::-;;:::i;2624:21::-;;;;;;;;;;-1:-1:-1;2624:21:0;;;;-1:-1:-1;;;;;2624:21:0;;;14664:216;;;;;;;;;;-1:-1:-1;14664:216:0;;;;;:::i;:::-;;:::i;10224:129::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;17159:570::-;;;;;;;;;;-1:-1:-1;17159:570:0;;;;;:::i;:::-;;:::i;14888:77::-;;;;;;;;;;;;;:::i;18697:167::-;;;;;;;;;;-1:-1:-1;18697:167:0;;;;;:::i;:::-;;:::i;13757:203::-;;;;;;;;;;-1:-1:-1;13757:203:0;;;;;:::i;:::-;;:::i;8744:133::-;;;;;;;;;;-1:-1:-1;8744:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;8846:19:0;;;8828:7;8846:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;8744:133;3374:244;;;;;;;;;;-1:-1:-1;3374:244:0;;;;;:::i;:::-;;:::i;6764:24::-;;;;;;;;;;-1:-1:-1;6764:24:0;;;;-1:-1:-1;;;;;6764:24:0;;;18191:156;3131:6;;-1:-1:-1;;;;;3131:6:0;2441:10;3131:22;3123:67;;;;-1:-1:-1;;;3123:67:0;;7898:2:1;3123:67:0;;;7880:21:1;;;7917:18;;;7910:30;-1:-1:-1;;;;;;;;;;;7956:18:1;;;7949:62;8028:18;;3123:67:0;;;;;;;;;18283:11:::1;:22:::0;;;::::1;;-1:-1:-1::0;;;18283:22:0::1;-1:-1:-1::0;;;;18283:22:0;;::::1;::::0;;;::::1;::::0;;;18316:13:::1;:23:::0;18191:156::o;10016:199::-;3131:6;;-1:-1:-1;;;;;3131:6:0;2441:10;3131:22;3123:67;;;;-1:-1:-1;;;3123:67:0;;7898:2:1;3123:67:0;;;7880:21:1;;;7917:18;;;7910:30;-1:-1:-1;;;;;;;;;;;7956:18:1;;;7949:62;8028:18;;3123:67:0;7696:356:1;3123:67:0;10138:4:::1;10123:12;;:19;;;;:::i;:::-;10107:12;;:35;;10099:44;;;::::0;::::1;;10203:4;10186:12;10171;;:27;;;;:::i;:::-;10170:37;;;;:::i;:::-;10155:12;:52:::0;-1:-1:-1;10016:199:0:o;9785:223::-;3131:6;;-1:-1:-1;;;;;3131:6:0;2441:10;3131:22;3123:67;;;;-1:-1:-1;;;3123:67:0;;7898:2:1;3123:67:0;;;7880:21:1;;;7917:18;;;7910:30;-1:-1:-1;;;;;;;;;;;7956:18:1;;;7949:62;8028:18;;3123:67:0;7696:356:1;3123:67:0;9908:4:::1;9893:12;;:19;;;;:::i;:::-;9874:15;;:38;;9866:47;;;::::0;::::1;;9978:4;9959:14;9944:12;;:29;;;;:::i;:::-;9943:39;;;;:::i;:::-;9925:15;:57:::0;-1:-1:-1;9785:223:0:o;9109:122::-;9164:4;9188:35;9196:7;-1:-1:-1;;9188:7:0;:35::i;:::-;9181:42;9109:122;-1:-1:-1;;9109:122:0:o;16868:155::-;3131:6;;-1:-1:-1;;;;;3131:6:0;2441:10;3131:22;3123:67;;;;-1:-1:-1;;;3123:67:0;;7898:2:1;3123:67:0;;;7880:21:1;;;7917:18;;;7910:30;-1:-1:-1;;;;;;;;;;;7956:18:1;;;7949:62;8028:18;;3123:67:0;7696:356:1;3123:67:0;-1:-1:-1;;;;;16944:19:0;;::::1;;::::0;;;:11:::1;:19;::::0;;;;;;;:28;;;::::1;;-1:-1:-1::0;;16944:28:0;;::::1;::::0;::::1;::::0;;;16983:15:::1;:23:::0;;;;;;:32;;;;::::1;;::::0;;16868:155::o;8885:216::-;8989:10;8960:4;8977:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;8977:32:0;;;;;;;;;;:41;;;9034:37;8960:4;;8977:32;;9034:37;;;;9012:6;597:25:1;;585:2;570:18;;451:177;9034:37:0;;;;;;;;-1:-1:-1;9089:4:0;8885:216;;;;:::o;13969:77::-;3131:6;;-1:-1:-1;;;;;3131:6:0;2441:10;3131:22;3123:67;;;;-1:-1:-1;;;3123:67:0;;7898:2:1;3123:67:0;;;7880:21:1;;;7917:18;;;7910:30;-1:-1:-1;;;;;;;;;;;7956:18:1;;;7949:62;8028:18;;3123:67:0;7696:356:1;3123:67:0;14022:10:::1;:8;:10::i;:::-;13969:77::o:0;18872:150::-;18952:4;19008:6;18976:29;18996:8;18976:19;:29::i;:::-;:38;;18872:150;-1:-1:-1;;;18872:150:0:o;10361:207::-;3131:6;;-1:-1:-1;;;;;3131:6:0;2441:10;3131:22;3123:67;;;;-1:-1:-1;;;3123:67:0;;7898:2:1;3123:67:0;;;7880:21:1;;;7917:18;;;7910:30;-1:-1:-1;;;;;;;;;;;7956:18:1;;;7949:62;8028:18;;3123:67:0;7696:356:1;3123:67:0;10484:20;;::::1;::::0;:8:::1;::::0;:20:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;10515:18:0;;::::1;::::0;:7:::1;::::0;:18:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;10544:16:0;;::::1;::::0;:6:::1;::::0;:16:::1;::::0;::::1;::::0;::::1;:::i;:::-;;10361:207:::0;;;:::o;9403:370::-;-1:-1:-1;;;;;9523:19:0;;9503:4;9523:19;;;:11;:19;;;;;;;;9543:10;9523:31;;;;;;;;-1:-1:-1;;9523:52:0;9520:186;;9625:69;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9625:19:0;;-1:-1:-1;9625:19:0;;;:11;:19;;;;;9645:10;9625:31;;;;;;;;;;:69;;9661:6;;9625:35;:69::i;:::-;-1:-1:-1;;;;;9591:19:0;;;;;;:11;:19;;;;;;;;9611:10;9591:31;;;;;;;:103;9520:186;9725:40;9739:6;9747:9;9758:6;9725:13;:40::i;:::-;9718:47;;9403:370;;;;;;:::o;18547:142::-;18675:4;;-1:-1:-1;;;;;18675:4:0;18600:7;8717:18;;;:9;:18;;;;;;18627:54;;18654:4;;-1:-1:-1;;;;;18654:4:0;8699:7;8717:18;;;:9;:18;;;;;;18627:33;;:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;18620:61;;18547:142;:::o;17737:446::-;3131:6;;-1:-1:-1;;;;;3131:6:0;2441:10;3131:22;3123:67;;;;-1:-1:-1;;;3123:67:0;;7898:2:1;3123:67:0;;;7880:21:1;;;7917:18;;;7910:30;-1:-1:-1;;;;;;;;;;;7956:18:1;;;7949:62;8028:18;;3123:67:0;7696:356:1;3123:67:0;17933:21:::1;:46:::0;;-1:-1:-1;;;;;;17933:46:0;;::::1;-1:-1:-1::0;;;;;17933:46:0;;::::1;;::::0;;;17990:20:::1;:44:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;18045:18:::1;:40:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;18096:15:::1;:34:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;18141:15:::1;:34:::0;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;17737:446::o;14054:129::-;3131:6;;-1:-1:-1;;;;;3131:6:0;2441:10;3131:22;3123:67;;;;-1:-1:-1;;;3123:67:0;;7898:2:1;3123:67:0;;;7880:21:1;;;7917:18;;;7910:30;-1:-1:-1;;;;;;;;;;;7956:18:1;;;7949:62;8028:18;;3123:67:0;7696:356:1;3123:67:0;14123:12:::1;::::0;14105:15:::1;:30:::0;;;14146:12:::1;:27:::0;14054:129::o;3218:148::-;3131:6;;-1:-1:-1;;;;;3131:6:0;2441:10;3131:22;3123:67;;;;-1:-1:-1;;;3123:67:0;;7898:2:1;3123:67:0;;;7880:21:1;;;7917:18;;;7910:30;-1:-1:-1;;;;;;;;;;;7956:18:1;;;7949:62;8028:18;;3123:67:0;7696:356:1;3123:67:0;3325:1:::1;3309:6:::0;;3288:40:::1;::::0;-1:-1:-1;;;;;3309:6:0;;::::1;::::0;3288:40:::1;::::0;3325:1;;3288:40:::1;3356:1;3339:19:::0;;-1:-1:-1;;;;;;3339:19:0::1;::::0;;3218:148::o;14348:308::-;14468:10;14427:4;14452:27;;;:15;:27;;;;;;;;14444:36;;;;;;14491:6;14501:1;14491:11;14488:95;;14527:44;;-1:-1:-1;;;14527:44:0;;14565:4;14527:44;;;5697:74:1;-1:-1:-1;;;;;14527:29:0;;;;;5670:18:1;;14527:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14518:53;;14488:95;14600:48;;-1:-1:-1;;;14600:48:0;;14629:10;14600:48;;;8947:74:1;9037:18;;;9030:34;;;-1:-1:-1;;;;;14600:28:0;;;;;8920:18:1;;14600:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;14191:149::-;14256:10;14240:27;;;;:15;:27;;;;;;;;14232:36;;;;;;14279:51;;14287:10;;14308:21;14279:51;;;;;;;;;14308:21;14287:10;14279:51;;;;;;;;;;;;;;;;;;;;;14191:149::o;18355:180::-;3131:6;;-1:-1:-1;;;;;3131:6:0;2441:10;3131:22;3123:67;;;;-1:-1:-1;;;3123:67:0;;7898:2:1;3123:67:0;;;7880:21:1;;;7917:18;;;7910:30;-1:-1:-1;;;;;;;;;;;7956:18:1;;;7949:62;8028:18;;3123:67:0;7696:356:1;3123:67:0;18450:15:::1;:25:::0;;;;18486:26:::1;:41:::0;18355:180::o;17031:120::-;3131:6;;-1:-1:-1;;;;;3131:6:0;2441:10;3131:22;3123:67;;;;-1:-1:-1;;;3123:67:0;;7898:2:1;3123:67:0;;;7880:21:1;;;7917:18;;;7910:30;-1:-1:-1;;;;;;;;;;;7956:18:1;;;7949:62;8028:18;;3123:67:0;7696:356:1;3123:67:0;-1:-1:-1;;;;;17111:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;17111:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17031:120::o;9239:156::-;9319:4;9343:44;9357:10;9369:9;9380:6;9343:13;:44::i;14664:216::-;3131:6;;-1:-1:-1;;;;;3131:6:0;2441:10;3131:22;3123:67;;;;-1:-1:-1;;;3123:67:0;;7898:2:1;3123:67:0;;;7880:21:1;;;7917:18;;;7910:30;-1:-1:-1;;;;;;;;;;;7956:18:1;;;7949:62;8028:18;;3123:67:0;7696:356:1;3123:67:0;14765:14:::1;:22:::0;;;;14798:13:::1;:20:::0;;;;14829:18:::1;:27:::0;14664:216::o;10224:129::-;10264:13;10279;10294;10319:8;10329:7;10338:6;10311:34;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10224:129;;;:::o;17159:570::-;3131:6;;-1:-1:-1;;;;;3131:6:0;2441:10;3131:22;3123:67;;;;-1:-1:-1;;;3123:67:0;;7898:2:1;3123:67:0;;;7880:21:1;;;7917:18;;;7910:30;-1:-1:-1;;;;;;;;;;;7956:18:1;;;7949:62;8028:18;;3123:67:0;7696:356:1;3123:67:0;17336:12:::1;:28:::0;;;17375:7:::1;:18:::0;;;17404:12:::1;:28:::0;;;17443:10:::1;:24:::0;;;17478:7:::1;:18:::0;;;17518:77:::1;17488:8:::0;17518:63:::1;17456:11:::0;17518:63;17419:13;17518:63;17351:13;17385:8;17518:17:::1;:27::i;:::-;:31:::0;::::1;:46::i;:77::-;17507:8;:88:::0;17606:14:::1;:32:::0;;;17668:18:::1;17685:1;17623:15:::0;17668:18:::1;:::i;:::-;17657:8;;:29;17649:71;;;::::0;-1:-1:-1;;;17649:71:0;;9912:2:1;17649:71:0::1;::::0;::::1;9894:21:1::0;9951:2;9931:18;;;9924:30;9990:31;9970:18;;;9963:59;10039:18;;17649:71:0::1;9710:353:1::0;17649:71:0::1;17159:570:::0;;;;;;:::o;14888:77::-;3131:6;;-1:-1:-1;;;;;3131:6:0;2441:10;3131:22;3123:67;;;;-1:-1:-1;;;3123:67:0;;7898:2:1;3123:67:0;;;7880:21:1;;;7917:18;;;7910:30;-1:-1:-1;;;;;;;;;;;7956:18:1;;;7949:62;8028:18;;3123:67:0;7696:356:1;3123:67:0;14939:11:::1;:18:::0;;-1:-1:-1;;;;14939:18:0::1;-1:-1:-1::0;;;14939:18:0::1;::::0;;14888:77::o;18697:167::-;18765:7;18792:64;18833:22;:20;:22::i;:::-;18815:4;;-1:-1:-1;;;;;18815:4:0;8699:7;8717:18;;;:9;:18;;;;;;18792:36;;18805:22;;18825:1;;18805:15;:19;;:22::i;:::-;18792:8;;:12;:36::i;:::-;:40;;:64::i;13757:203::-;13886:20;;13846:21;;-1:-1:-1;;;;;13886:20:0;13878:74;13948:3;13917:28;13929:16;13846:21;13917:28;:::i;:::-;:34;;;;:::i;:::-;13878:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13815:145;13757:203;:::o;3374:244::-;3131:6;;-1:-1:-1;;;;;3131:6:0;2441:10;3131:22;3123:67;;;;-1:-1:-1;;;3123:67:0;;7898:2:1;3123:67:0;;;7880:21:1;;;7917:18;;;7910:30;-1:-1:-1;;;;;;;;;;;7956:18:1;;;7949:62;8028:18;;3123:67:0;7696:356:1;3123:67:0;-1:-1:-1;;;;;3463:22:0;::::1;3455:73;;;::::0;-1:-1:-1;;;3455:73:0;;10270:2:1;3455:73:0::1;::::0;::::1;10252:21:1::0;10309:2;10289:18;;;10282:30;10348:34;10328:18;;;10321:62;-1:-1:-1;;;10399:18:1;;;10392:36;10445:19;;3455:73:0::1;10068:402:1::0;3455:73:0::1;3565:6;::::0;;3544:38:::1;::::0;-1:-1:-1;;;;;3544:38:0;;::::1;::::0;3565:6;::::1;::::0;3544:38:::1;::::0;::::1;3593:6;:17:::0;;-1:-1:-1;;;;;;3593:17:0::1;-1:-1:-1::0;;;;;3593:17:0;;;::::1;::::0;;;::::1;::::0;;3374:244::o;803:250::-;861:7;885:1;890;885:6;881:47;;-1:-1:-1;915:1:0;908:8;;881:47;940:9;952:5;956:1;952;:5;:::i;:::-;940:17;-1:-1:-1;985:1:0;976:5;980:1;940:17;976:5;:::i;:::-;:10;968:56;;;;-1:-1:-1;;;968:56:0;;10677:2:1;968:56:0;;;10659:21:1;10716:2;10696:18;;;10689:30;10755:34;10735:18;;;10728:62;-1:-1:-1;;;10806:18:1;;;10799:31;10847:19;;968:56:0;10475:397:1;1059:132:0;1117:7;1144:39;1148:1;1151;1144:39;;;;;;;;;;;;;;;;;:3;:39::i;14983:1877::-;7052:6;:13;;-1:-1:-1;;7052:13:0;7061:4;7052:13;;;15078:15:::1;::::0;15095:26:::1;::::0;7052:6;;15062:60:::1;::::0;:15:::1;:60::i;:::-;:79;;15129:12;;15062:79;;;15125:1;15062:79;15032:109;;15152:23;15178:59;15235:1;15178:52;15221:8;;15178:38;15196:19;15178:13;;:17;;:38;;;;:::i;:59::-;15152:85;;15248:20;15271:34;15289:15;15271:13;;:17;;:34;;;;:::i;:::-;15342:16;::::0;;15356:1:::1;15342:16:::0;;;;;::::1;::::0;;15248:57;;-1:-1:-1;15318:21:0::1;::::0;15342:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;15342:16:0::1;15318:40;;15387:4;15369;15374:1;15369:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15369:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;15413:4:::1;::::0;15403:7;;15413:4;::::1;::::0;15403;;15413;;15403:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;15403:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:14;;;;15488:6;:188:::1;::::0;-1:-1:-1;;;15488:188:0;;15454:21:::1;::::0;15488:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;15560:12;;15430:21:::1;::::0;15603:4;;15630::::1;::::0;15650:15:::1;::::0;15488:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15689:17;15709:40;15735:13;15709:21;:25;;:40;;;;:::i;:::-;15689:60:::0;-1:-1:-1;15762:19:0::1;15784:40;15797:26;:19:::0;15821:1:::1;15797:23;:26::i;:::-;15784:8;::::0;;:12:::1;:40::i;:::-;15762:62:::0;-1:-1:-1;15845:26:0::1;15874:58;15930:1;15874:51;15762:62:::0;15874:51;:9;15888:19;15874:13:::1;:34::i;:58::-;15845:87;;15943:26;15972:44;16004:11;15972:27;15986:12;;15972:9;:13;;:27;;;;:::i;:44::-;15943:73;;16027:21;16051:39;16078:11;16051:22;16065:7;;16051:9;:13;;:22;;;;:::i;:39::-;16027:63;;16101:24;16128:42;16158:11;16128:25;16142:10;;16128:9;:13;;:25;;;;:::i;:42::-;16212:20;::::0;16204:65:::1;::::0;16101:69;;-1:-1:-1;16184:15:0::1;::::0;-1:-1:-1;;;;;16212:20:0;;::::1;::::0;16246:18;;16184:15;16204:65;16184:15;16204:65;16246:18;16212:20;16204:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;16304:18:0::1;::::0;16296:61:::1;::::0;16183:86;;-1:-1:-1;;;;;;16304:18:0::1;::::0;16336:16;;16296:61:::1;::::0;;;16336:16;16304:18;16296:61:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;16392:15:0::1;::::0;16384:55:::1;::::0;16280:77;;-1:-1:-1;;;;;;16392:15:0::1;::::0;16421:13;;16384:55:::1;::::0;;;16421:13;16392:15;16384:55:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;16473:5:0::1;::::0;-1:-1:-1;;16494:19:0;;;-1:-1:-1;16491:362:0::1;;16529:6;::::0;16703:21:::1;::::0;16529:244:::1;::::0;-1:-1:-1;;;16529:244:0;;16605:4:::1;16529:244;::::0;::::1;12614:34:1::0;12664:18;;;12657:34;;;16529:6:0::1;12707:18:1::0;;;12700:34;;;12750:18;;;12743:34;-1:-1:-1;;;;;16703:21:0;;::::1;12793:19:1::0;;;12786:44;16743:15:0::1;12846:19:1::0;;;12839:35;16529:6:0;::::1;::::0;:22:::1;::::0;16559:18;;12525:19:1;;16529:244:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;16793:48:0::1;::::0;;13370:25:1;;;13426:2;13411:18;;13404:34;;;16793:48:0::1;::::0;-1:-1:-1;13343:18:1;16793:48:0::1;;;;;;;16491:362;-1:-1:-1::0;;7070:6:0;:14;;-1:-1:-1;;7070:14:0;;;-1:-1:-1;;;;;;;;;;14983:1877:0:o;605:192::-;691:7;727:12;719:6;;;;711:29;;;;-1:-1:-1;;;711:29:0;;;;;;;;:::i;:::-;-1:-1:-1;751:9:0;763:5;767:1;763;:5;:::i;:::-;751:17;605:192;-1:-1:-1;;;;;605:192:0:o;10580:1311::-;10692:6;;10672:4;;10692:6;;10689:63;;;10708:41;10723:6;10731:9;10742:6;10708:14;:41::i;:::-;10701:48;;;;10689:63;-1:-1:-1;;;;;10768:22:0;;;;;;:14;:22;;;;;;;;10767:23;:53;;;;-1:-1:-1;;;;;;10795:25:0;;;;;;:14;:25;;;;;;;;10794:26;10767:53;10764:140;;;10844:11;;-1:-1:-1;;;10844:11:0;;;;10836:43;;;;-1:-1:-1;;;10836:43:0;;13781:2:1;10836:43:0;;;13763:21:1;13820:2;13800:18;;;13793:30;13859:22;13839:18;;;13832:50;13899:18;;10836:43:0;13579:344:1;10836:43:0;-1:-1:-1;;;;;10940:22:0;;;;;;:14;:22;;;;;;;;10939:23;:53;;;;-1:-1:-1;;;;;;10966:26:0;;10987:4;10966:26;;10939:53;:84;;;;-1:-1:-1;11018:4:0;;-1:-1:-1;;;;;10997:26:0;;;11018:4;;10997:26;;10939:84;:105;;;;-1:-1:-1;11040:4:0;;-1:-1:-1;;;;;11027:17:0;;;11040:4;;11027:17;;10939:105;:137;;;;-1:-1:-1;11061:15:0;;-1:-1:-1;;;;;11048:28:0;;;11061:15;;11048:28;;10939:137;:174;;;;-1:-1:-1;11093:20:0;;-1:-1:-1;;;;;11080:33:0;;;11093:20;;11080:33;;10939:174;:205;;;;-1:-1:-1;;;;;;11118:26:0;;;;;;:15;:26;;;;;;;;11117:27;10939:205;10935:397;;;-1:-1:-1;;;;;8717:18:0;;11160;8717;;;:9;:18;;;;;;11249:15;;11225:19;11238:6;8717:18;11225:19;:::i;:::-;11224:40;;11216:114;;;;-1:-1:-1;;;11216:114:0;;14263:2:1;11216:114:0;;;14245:21:1;14302:2;14282:18;;;14275:30;14341:34;14321:18;;;14314:62;14412:32;14392:18;;;14385:60;14462:19;;11216:114:0;14061:426:1;11216:114:0;11145:187;10935:397;11385:28;11398:6;11406;11385:12;:28::i;:::-;11430:16;:14;:16::i;:::-;11427:35;;;11449:10;:8;:10::i;:::-;11542:53;;;;;;;;;;;-1:-1:-1;;;11542:53:0;;;;;;;;-1:-1:-1;;;;;11542:17:0;;-1:-1:-1;11542:17:0;;;:9;:17;;;;;;;;:53;;11564:6;;11542:21;:53::i;:::-;-1:-1:-1;;;;;11522:17:0;;;;;;:9;:17;;;;;;;;:73;;;;11634:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;11657:22:0;;;;;;:11;:22;;;;;;;;11634:45;11633:93;;11692:34;11700:6;11708;11716:9;11692:7;:34::i;:::-;11633:93;;;11683:6;11633:93;-1:-1:-1;;;;;11760:20:0;;;;;;:9;:20;;;;;;11608:118;;-1:-1:-1;11760:40:0;;11608:118;11760:24;:40::i;:::-;-1:-1:-1;;;;;11737:20:0;;;;;;;:9;:20;;;;;;;:63;;;;11818:43;;;;;;;;;;11846:14;597:25:1;;585:2;570:18;;451:177;11818:43:0;;;;;;;;-1:-1:-1;11879:4:0;;10580:1311;-1:-1:-1;;;;10580:1311:0:o;463:136::-;521:7;548:43;552:1;555;548:43;;;;;;;;;;;;;;;;;:3;:43::i;276:181::-;334:7;;366:5;370:1;366;:5;:::i;:::-;354:17;;395:1;390;:6;;382:46;;;;-1:-1:-1;;;382:46:0;;14694:2:1;382:46:0;;;14676:21:1;14733:2;14713:18;;;14706:30;14772:29;14752:18;;;14745:57;14819:18;;382:46:0;14492:351:1;1197:189:0;1283:7;1318:12;1311:5;1303:28;;;;-1:-1:-1;;;1303:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1342:9:0;1354:5;1358:1;1354;:5;:::i;11903:330::-;12033:53;;;;;;;;;;;-1:-1:-1;;;12033:53:0;;;;;;;;-1:-1:-1;;;;;12033:17:0;;11996:4;12033:17;;;:9;:17;;;;;;;:53;;12055:6;;12033:21;:53::i;:::-;-1:-1:-1;;;;;12013:17:0;;;;;;;:9;:17;;;;;;:73;;;;12120:20;;;;;;;:32;;12145:6;12120:24;:32::i;:::-;-1:-1:-1;;;;;12097:20:0;;;;;;;:9;:20;;;;;;;:55;;;;12168:35;;;;;;;;;;12196:6;597:25:1;;585:2;570:18;;451:177;12168:35:0;;;;;;;;-1:-1:-1;12221:4:0;11903:330;;;;;:::o;12241:166::-;12338:12;;12328:6;:22;;:49;;;-1:-1:-1;;;;;;12354:23:0;;;;;;:15;:23;;;;;;;;12328:49;12320:79;;;;-1:-1:-1;;;12320:79:0;;15050:2:1;12320:79:0;;;15032:21:1;15089:2;15069:18;;;15062:30;15128:19;15108:18;;;15101:47;15165:18;;12320:79:0;14848:341:1;12320:79:0;12241:166;;:::o;13552:197::-;13639:4;;13601;;-1:-1:-1;;;;;13639:4:0;13625:10;:18;;;;:38;;-1:-1:-1;13657:6:0;;;;13656:7;13625:38;:62;;;;-1:-1:-1;13676:11:0;;-1:-1:-1;;;13676:11:0;;;;13625:62;:116;;;;-1:-1:-1;;13728:13:0;;13718:4;13700:24;;;;:9;:24;;;;;;:41;;;13552:197::o;12537:1007::-;12674:18;;12721:4;;12623:7;;12674:18;-1:-1:-1;;;;;12721:4:0;;;12708:17;;;;12705:154;;-1:-1:-1;12755:14:0;;12705:154;;;12800:4;;-1:-1:-1;;;;;12800:4:0;;;12790:14;;;;12787:72;;-1:-1:-1;12834:13:0;;12787:72;12871:17;12891:62;12932:14;;12949:3;12932:20;;;;:::i;:::-;12891:36;12916:10;12891:20;12902:8;;12891:6;:10;;:20;;;;:::i;:62::-;12871:82;;12964:18;12985:36;13012:8;;12985:22;12999:7;;12985:9;:13;;:22;;;;:::i;:36::-;12964:57;-1:-1:-1;13032:22:0;13057:25;:9;12964:57;13057:13;:25::i;:::-;13140:4;13122:24;;;;:9;:24;;;;;;13032:50;;-1:-1:-1;13122:44:0;;13032:50;13122:28;:44::i;:::-;13113:4;13095:24;;;;:9;:24;;;;;;:71;;;;13216:15;;-1:-1:-1;;;;;13216:15:0;13206:26;;;;:42;;13237:10;13206:30;:42::i;:::-;13187:15;;-1:-1:-1;;;;;13187:15:0;;;13177:26;;;;:9;:26;;;;;;;;;:71;;;;13264:47;597:25:1;;;13289:4:0;;13264:47;;;;;;570:18:1;13264:47:0;;;;;;;13345:14;;13342:154;;13390:12;;:28;;13407:10;13390:16;:28::i;:::-;13375:12;:43;13455:4;;13438:34;;597:25:1;;;-1:-1:-1;;;;;13455:4:0;;;;13438:34;;;;;585:2:1;570:18;13438:34:0;;;;;;;13342:154;13515:21;:6;13526:9;13515:10;:21::i;:::-;13508:28;12537:1007;-1:-1:-1;;;;;;;;12537:1007:0:o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:118:1;100:5;93:13;86:21;79:5;76:32;66:60;;122:1;119;112:12;137:309;202:6;210;263:2;251:9;242:7;238:23;234:32;231:52;;;279:1;276;269:12;231:52;318:9;305:23;337:28;359:5;337:28;:::i;:::-;384:5;436:2;421:18;;;;408:32;;-1:-1:-1;;;137:309:1:o;633:180::-;692:6;745:2;733:9;724:7;720:23;716:32;713:52;;;761:1;758;751:12;713:52;-1:-1:-1;784:23:1;;633:180;-1:-1:-1;633:180:1:o;818:196::-;886:20;;-1:-1:-1;;;;;935:54:1;;925:65;;915:93;;1004:1;1001;994:12;915:93;818:196;;;:::o;1019:186::-;1078:6;1131:2;1119:9;1110:7;1106:23;1102:32;1099:52;;;1147:1;1144;1137:12;1099:52;1170:29;1189:9;1170:29;:::i;1402:472::-;1444:3;1482:5;1476:12;1509:6;1504:3;1497:19;1534:1;1544:162;1558:6;1555:1;1552:13;1544:162;;;1620:4;1676:13;;;1672:22;;1666:29;1648:11;;;1644:20;;1637:59;1573:12;1544:162;;;1724:6;1721:1;1718:13;1715:87;;;1790:1;1783:4;1774:6;1769:3;1765:16;1761:27;1754:38;1715:87;-1:-1:-1;1856:2:1;1835:15;-1:-1:-1;;1831:29:1;1822:39;;;;1863:4;1818:50;;1402:472;-1:-1:-1;;1402:472:1:o;1879:220::-;2028:2;2017:9;2010:21;1991:4;2048:45;2089:2;2078:9;2074:18;2066:6;2048:45;:::i;2104:315::-;2169:6;2177;2230:2;2218:9;2209:7;2205:23;2201:32;2198:52;;;2246:1;2243;2236:12;2198:52;2269:29;2288:9;2269:29;:::i;:::-;2259:39;;2348:2;2337:9;2333:18;2320:32;2361:28;2383:5;2361:28;:::i;:::-;2408:5;2398:15;;;2104:315;;;;;:::o;2424:254::-;2492:6;2500;2553:2;2541:9;2532:7;2528:23;2524:32;2521:52;;;2569:1;2566;2559:12;2521:52;2592:29;2611:9;2592:29;:::i;2683:248::-;2751:6;2759;2812:2;2800:9;2791:7;2787:23;2783:32;2780:52;;;2828:1;2825;2818:12;2780:52;-1:-1:-1;;2851:23:1;;;2921:2;2906:18;;;2893:32;;-1:-1:-1;2683:248:1:o;2936:127::-;2997:10;2992:3;2988:20;2985:1;2978:31;3028:4;3025:1;3018:15;3052:4;3049:1;3042:15;3068:719;3111:5;3164:3;3157:4;3149:6;3145:17;3141:27;3131:55;;3182:1;3179;3172:12;3131:55;3218:6;3205:20;3244:18;3281:2;3277;3274:10;3271:36;;;3287:18;;:::i;:::-;3362:2;3356:9;3330:2;3416:13;;-1:-1:-1;;3412:22:1;;;3436:2;3408:31;3404:40;3392:53;;;3460:18;;;3480:22;;;3457:46;3454:72;;;3506:18;;:::i;:::-;3546:10;3542:2;3535:22;3581:2;3573:6;3566:18;3627:3;3620:4;3615:2;3607:6;3603:15;3599:26;3596:35;3593:55;;;3644:1;3641;3634:12;3593:55;3708:2;3701:4;3693:6;3689:17;3682:4;3674:6;3670:17;3657:54;3755:1;3748:4;3743:2;3735:6;3731:15;3727:26;3720:37;3775:6;3766:15;;;;;;3068:719;;;;:::o;3792:743::-;3899:6;3907;3915;3968:2;3956:9;3947:7;3943:23;3939:32;3936:52;;;3984:1;3981;3974:12;3936:52;4024:9;4011:23;4053:18;4094:2;4086:6;4083:14;4080:34;;;4110:1;4107;4100:12;4080:34;4133:50;4175:7;4166:6;4155:9;4151:22;4133:50;:::i;:::-;4123:60;;4236:2;4225:9;4221:18;4208:32;4192:48;;4265:2;4255:8;4252:16;4249:36;;;4281:1;4278;4271:12;4249:36;4304:52;4348:7;4337:8;4326:9;4322:24;4304:52;:::i;:::-;4294:62;;4409:2;4398:9;4394:18;4381:32;4365:48;;4438:2;4428:8;4425:16;4422:36;;;4454:1;4451;4444:12;4422:36;;4477:52;4521:7;4510:8;4499:9;4495:24;4477:52;:::i;:::-;4467:62;;;3792:743;;;;;:::o;4540:328::-;4617:6;4625;4633;4686:2;4674:9;4665:7;4661:23;4657:32;4654:52;;;4702:1;4699;4692:12;4654:52;4725:29;4744:9;4725:29;:::i;:::-;4715:39;;4773:38;4807:2;4796:9;4792:18;4773:38;:::i;:::-;4763:48;;4858:2;4847:9;4843:18;4830:32;4820:42;;4540:328;;;;;:::o;5062:484::-;5157:6;5165;5173;5181;5189;5242:3;5230:9;5221:7;5217:23;5213:33;5210:53;;;5259:1;5256;5249:12;5210:53;5282:29;5301:9;5282:29;:::i;:::-;5272:39;;5330:38;5364:2;5353:9;5349:18;5330:38;:::i;:::-;5320:48;;5387:38;5421:2;5410:9;5406:18;5387:38;:::i;:::-;5377:48;;5444:38;5478:2;5467:9;5463:18;5444:38;:::i;:::-;5434:48;;5501:39;5535:3;5524:9;5520:19;5501:39;:::i;:::-;5491:49;;5062:484;;;;;;;;:::o;5782:316::-;5859:6;5867;5875;5928:2;5916:9;5907:7;5903:23;5899:32;5896:52;;;5944:1;5941;5934:12;5896:52;-1:-1:-1;;5967:23:1;;;6037:2;6022:18;;6009:32;;-1:-1:-1;6088:2:1;6073:18;;;6060:32;;5782:316;-1:-1:-1;5782:316:1:o;6103:546::-;6348:2;6337:9;6330:21;6311:4;6374:45;6415:2;6404:9;6400:18;6392:6;6374:45;:::i;:::-;6467:9;6459:6;6455:22;6450:2;6439:9;6435:18;6428:50;6501:33;6527:6;6519;6501:33;:::i;:::-;6487:47;;6582:9;6574:6;6570:22;6565:2;6554:9;6550:18;6543:50;6610:33;6636:6;6628;6610:33;:::i;:::-;6602:41;6103:546;-1:-1:-1;;;;;;6103:546:1:o;6654:523::-;6758:6;6766;6774;6782;6790;6798;6851:3;6839:9;6830:7;6826:23;6822:33;6819:53;;;6868:1;6865;6858:12;6819:53;-1:-1:-1;;6891:23:1;;;6961:2;6946:18;;6933:32;;-1:-1:-1;7012:2:1;6997:18;;6984:32;;7063:2;7048:18;;7035:32;;-1:-1:-1;7114:3:1;7099:19;;7086:33;;-1:-1:-1;7166:3:1;7151:19;7138:33;;-1:-1:-1;6654:523:1;-1:-1:-1;6654:523:1:o;7182:260::-;7250:6;7258;7311:2;7299:9;7290:7;7286:23;7282:32;7279:52;;;7327:1;7324;7317:12;7279:52;7350:29;7369:9;7350:29;:::i;:::-;7340:39;;7398:38;7432:2;7421:9;7417:18;7398:38;:::i;:::-;7388:48;;7182:260;;;;;:::o;8057:127::-;8118:10;8113:3;8109:20;8106:1;8099:31;8149:4;8146:1;8139:15;8173:4;8170:1;8163:15;8189:217;8229:1;8255;8245:132;;8299:10;8294:3;8290:20;8287:1;8280:31;8334:4;8331:1;8324:15;8362:4;8359:1;8352:15;8245:132;-1:-1:-1;8391:9:1;;8189:217::o;8411:168::-;8451:7;8517:1;8513;8509:6;8505:14;8502:1;8499:21;8494:1;8487:9;8480:17;8476:45;8473:71;;;8524:18;;:::i;:::-;-1:-1:-1;8564:9:1;;8411:168::o;8584:184::-;8654:6;8707:2;8695:9;8686:7;8682:23;8678:32;8675:52;;;8723:1;8720;8713:12;8675:52;-1:-1:-1;8746:16:1;;8584:184;-1:-1:-1;8584:184:1:o;9075:245::-;9142:6;9195:2;9183:9;9174:7;9170:23;9166:32;9163:52;;;9211:1;9208;9201:12;9163:52;9243:9;9237:16;9262:28;9284:5;9262:28;:::i;9325:380::-;9404:1;9400:12;;;;9447;;;9468:61;;9522:4;9514:6;9510:17;9500:27;;9468:61;9575:2;9567:6;9564:14;9544:18;9541:38;9538:161;;9621:10;9616:3;9612:20;9609:1;9602:31;9656:4;9653:1;9646:15;9684:4;9681:1;9674:15;9538:161;;9325:380;;;:::o;10877:127::-;10938:10;10933:3;10929:20;10926:1;10919:31;10969:4;10966:1;10959:15;10993:4;10990:1;10983:15;11009:1026;11271:4;11319:3;11308:9;11304:19;11350:6;11339:9;11332:25;11376:2;11414:6;11409:2;11398:9;11394:18;11387:34;11457:3;11452:2;11441:9;11437:18;11430:31;11481:6;11516;11510:13;11547:6;11539;11532:22;11585:3;11574:9;11570:19;11563:26;;11624:2;11616:6;11612:15;11598:29;;11645:1;11655:218;11669:6;11666:1;11663:13;11655:218;;;11734:13;;-1:-1:-1;;;;;11730:62:1;11718:75;;11848:15;;;;11813:12;;;;11691:1;11684:9;11655:218;;;-1:-1:-1;;;;;;;11929:55:1;;;;11924:2;11909:18;;11902:83;-1:-1:-1;;;12016:3:1;12001:19;11994:35;11890:3;11009:1026;-1:-1:-1;;;11009:1026:1:o;12885:306::-;12973:6;12981;12989;13042:2;13030:9;13021:7;13017:23;13013:32;13010:52;;;13058:1;13055;13048:12;13010:52;13087:9;13081:16;13071:26;;13137:2;13126:9;13122:18;13116:25;13106:35;;13181:2;13170:9;13166:18;13160:25;13150:35;;12885:306;;;;;:::o;13449:125::-;13489:4;13517:1;13514;13511:8;13508:34;;;13522:18;;:::i;:::-;-1:-1:-1;13559:9:1;;13449:125::o;13928:128::-;13968:3;13999:1;13995:6;13992:1;13989:13;13986:39;;;14005:18;;:::i;:::-;-1:-1:-1;14041:9:1;;13928:128::o

Swarm Source

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