ETH Price: $2,509.59 (-0.34%)

Token

Kabosu 2.0 (Kabosu2.0)
 

Overview

Max Total Supply

420,690,000,000,000 Kabosu2.0

Holders

179

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
187,903,202,647.445369198435811532 Kabosu2.0

Value
$0.00
0xDD6e9d249d0eB92F2AbC41fAB1F8CD7289815961
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:
Kabosu2

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-12
*/

// Kabosu 2.0 (Japanese: かぼす) is a female Shiba Inu most famously known as the face of Doge.
// ██████  ███████ ██    ██  ██████  ██      ██    ██ 
// COPYRIGHT © 2023 ALL RIGHTS RESERVED BY KABOSU 2.0
// ██████  ███████ ██    ██  ██████  ██      ██    ██ 
// Website: https://kabosu2.fun/
// Telegram:https://t.me/Kabosu2ERC
// Twitter: https://twitter.com/Kabuso2ERC

// SPDX-License-Identifier: MIT
pragma solidity 0.8.18;

/********************************************************************************************
  INTERFACE
********************************************************************************************/

interface IERC20 {
    
    // EVENT 

    event Transfer(address indexed from, address indexed to, uint256 value);
    
    event Approval(address indexed owner, address indexed spender, uint256 value);

    // FUNCTION

    function name() external view returns (string memory);
    
    function symbol() external view returns (string memory);
    
    function decimals() external view returns (uint8);
    
    function totalSupply() external view returns (uint256);
    
    function balanceOf(address account) external view returns (uint256);
    
    function transfer(address to, 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 from, address to, uint256 amount) external returns (bool);
}

interface IFactory {

    // FUNCTION

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

interface IRouter {

    // FUNCTION

    function WETH() external pure returns (address);
        
    function factory() external pure returns (address);

    function swapExactTokensForETHSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external;
    
    function swapExactETHForTokensSupportingFeeOnTransferTokens(uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external payable;
}

interface IAuthError {

    // ERROR

    error InvalidOwner(address account);

    error UnauthorizedAccount(address account);

    error InvalidAuthorizedAccount(address account);

    error CurrentAuthorizedState(address account, bool state);
}

interface ICommonError {

    // ERROR

    error CannotUseCurrentAddress(address current);

    error CannotUseCurrentValue(uint256 current);

    error CannotUseCurrentState(bool current);

    error InvalidAddress(address invalid);

    error InvalidValue(uint256 invalid);
}

/********************************************************************************************
  ACCESS
********************************************************************************************/

abstract contract Auth is IAuthError {
    
    // DATA

    address private _owner;

    // MAPPING

    mapping(address => bool) public authorization;

    // MODIFIER

    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    modifier authorized() {
        _checkAuthorized();
        _;
    }

    // CONSTRUCCTOR

    constructor(address initialOwner) {
        _transferOwnership(initialOwner);
        authorize(initialOwner);
        if (initialOwner != msg.sender) {
            authorize(msg.sender);
        }
    }

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

    event UpdateAuthorizedAccount(address authorizedAccount, address caller, bool state, uint256 timestamp);

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

    function _checkOwner() internal view virtual {
        if (owner() != msg.sender) {
            revert UnauthorizedAccount(msg.sender);
        }
    }

    function _checkAuthorized() internal view virtual {
        if (!authorization[msg.sender]) {
            revert UnauthorizedAccount(msg.sender);
        }
    }

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        if (newOwner == address(0)) {
            revert InvalidOwner(address(0));
        }
        _transferOwnership(newOwner);
    }

    function authorize(address account) public virtual onlyOwner {
        if (account == address(0) || account == address(0xdead)) {
            revert InvalidAuthorizedAccount(account);
        }
        _authorization(account, msg.sender, true);
    }

    function unauthorize(address account) public virtual onlyOwner {
        if (account == address(0) || account == address(0xdead)) {
            revert InvalidAuthorizedAccount(account);
        }
        _authorization(account, msg.sender, false);
    }

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }

    function _authorization(address account, address caller, bool state) internal virtual {
        if (authorization[account] == state) {
            revert CurrentAuthorizedState(account, state);
        }
        authorization[account] = state;
        emit UpdateAuthorizedAccount(account, caller, state, block.timestamp);
    }
}

/********************************************************************************************
  SECURITY
********************************************************************************************/

abstract contract Pausable {

    // DATA

    bool private _paused;

    // ERROR

    error EnforcedPause();

    error ExpectedPause();

    // MODIFIER

    modifier whenNotPaused() {
        _requireNotPaused();
        _;
    }

    modifier whenPaused() {
        _requirePaused();
        _;
    }

    // CONSTRUCTOR

    constructor() {
        _paused = false;
    }

    // EVENT
    
    event Paused(address account);

    event Unpaused(address account);

    // FUNCTION

    function paused() public view virtual returns (bool) {
        return _paused;
    }

    function pause() external virtual whenNotPaused {
        _pause();
    }

    function unpause() external virtual whenPaused {
        _unpause();
    }

    function _requireNotPaused() internal view virtual {
        if (paused()) {
            revert EnforcedPause();
        }
    }

    function _requirePaused() internal view virtual {
        if (!paused()) {
            revert ExpectedPause();
        }
    }

    function _pause() internal virtual whenNotPaused {
        _paused = true;
        emit Paused(msg.sender);
    }

    function _unpause() internal virtual whenPaused {
        _paused = false;
        emit Unpaused(msg.sender);
    }
}

/********************************************************************************************
  TOKEN
********************************************************************************************/

contract Kabosu2 is Auth, ICommonError, IERC20 {

    // DATA

    IRouter public router;

    string private constant NAME = "Kabosu 2.0";
    string private constant SYMBOL = "Kabosu2.0";

    uint8 private constant DECIMALS = 18;

    uint256 private _totalSupply;
    
    uint256 public constant FEEDENOMINATOR = 10_000;

    uint256 public buyDevelopmentFee = 200;
    uint256 public sellDevelopmentFee = 200;
    uint256 public transferDevelopmentFee = 0;
    uint256 public developmentFeeCollected = 0;
    uint256 public totalFeeCollected = 0;
    uint256 public developmentFeeRedeemed = 0;
    uint256 public totalFeeRedeemed = 0;
    uint256 public minSwap = 100 ether;

    bool private constant ISKABOSU2 = true;

    bool public isFeeActive = false;
    bool public isFeeLocked = false;
    bool public isSwapEnabled = false;
    bool public inSwap = false;
    
    address public constant ZERO = address(0);
    address public constant DEAD = address(0xdead);

    address public developmentReceiver = 0xA828314168403eFd76E65209938cEfF1a431b0F5;
    
    address public pair;
    
    // MAPPING

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) public isExcludeFromFees;

    // MODIFIER

    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }

    // ERROR

    error InvalidTotalFee(uint256 current, uint256 max);

    error InvalidFeeActiveState(bool current);

    error InvalidSwapEnabledState(bool current);

    error FeeLocked();

    // CONSTRUCTOR

    constructor(
        address routerAddress,
        address projectOwnerAddress
    ) Auth (msg.sender) {
        _mint(msg.sender, 420_690_000_000_000 * 10**DECIMALS);
        if (projectOwnerAddress == ZERO) { revert InvalidAddress(projectOwnerAddress); }

        router = IRouter(routerAddress);
        pair = IFactory(router.factory()).createPair(address(this), router.WETH());

        isExcludeFromFees[msg.sender] = true;
        isExcludeFromFees[address(router)] = true;
    }

    // EVENT

    event UpdateRouter(address oldRouter, address newRouter, address caller, uint256 timestamp);

    event UpdateMinSwap(uint256 oldMinSwap, uint256 newMinSwap, address caller, uint256 timestamp);

    event UpdateFeeActive(bool oldStatus, bool newStatus, address caller, uint256 timestamp);

    event UpdateBuyFee(uint256 oldBuyDevelopmentFee, uint256 newBuyDevelopmentFee, address caller, uint256 timestamp);

    event UpdateSellFee(uint256 oldSellDevelopmentFee, uint256 newSellDevelopmentFee, address caller, uint256 timestamp);

    event UpdateTransferFee(uint256 oldTransferDevelopmentFee, uint256 newTransferDevelopmentFee, address caller, uint256 timestamp);

    event UpdateSwapEnabled(bool oldStatus, bool newStatus, address caller, uint256 timestamp);

    event UpdateDevelopmentReceiver(address oldDevelopmentReceiver, address newDevelopmentReceiver, address caller, uint256 timestamp);
        
    event AutoRedeem(uint256 developmentFeeDistribution, uint256 amountToRedeem, address caller, uint256 timestamp);

    // FUNCTION

    /* General */

    receive() external payable {}

    function finalizePresale() external authorized {
        if (isFeeActive) { revert InvalidFeeActiveState(isFeeActive); }
        if (isSwapEnabled) { revert InvalidSwapEnabledState(isSwapEnabled); }
        isFeeActive = true;
        isSwapEnabled = true;
    }

    function lockFees() external onlyOwner {
        if (isFeeLocked) { revert FeeLocked(); }
        isFeeLocked = true;
    }

    /* Redeem */

    function redeemAllDevelopmentFee() external {
        uint256 amountToRedeem = developmentFeeCollected - developmentFeeRedeemed;
        
        _redeemDevelopmentFee(amountToRedeem);
    }

    function redeemPartialDevelopmentFee(uint256 amountToRedeem) external {
        require(amountToRedeem <= developmentFeeCollected - developmentFeeRedeemed, "Redeem Partial Development Fee: Insufficient development fee collected.");
        
        _redeemDevelopmentFee(amountToRedeem);
    }

    function _redeemDevelopmentFee(uint256 amountToRedeem) internal swapping { 
        developmentFeeRedeemed += amountToRedeem;
        totalFeeRedeemed += amountToRedeem;
 
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        _approve(address(this), address(router), amountToRedeem);

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToRedeem,
            0,
            path,
            developmentReceiver,
            block.timestamp
        );
    }

    function autoRedeem(uint256 amountToRedeem) public swapping {  
        uint256 developmentToRedeem = developmentFeeCollected - developmentFeeRedeemed;
        uint256 totalToRedeem = totalFeeCollected - totalFeeRedeemed;

        uint256 developmentFeeDistribution = amountToRedeem * developmentToRedeem / totalToRedeem;
        
        developmentFeeRedeemed += developmentFeeDistribution;
        totalFeeRedeemed += amountToRedeem;

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

        _approve(address(this), address(router), amountToRedeem);
    
        emit AutoRedeem(developmentFeeDistribution, amountToRedeem, msg.sender, block.timestamp);

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            developmentFeeDistribution,
            0,
            path,
            developmentReceiver,
            block.timestamp
        );
    }

    /* Check */

    function isKabosu2() external pure returns (bool) {
        return ISKABOSU2;
    }

    function circulatingSupply() external view returns (uint256) {
        return totalSupply() - balanceOf(DEAD) - balanceOf(ZERO);
    }

    /* Update */

    function updateRouter(address newRouter) external onlyOwner {
        if (address(router) == newRouter) { revert CannotUseCurrentAddress(newRouter); }
        address oldRouter = address(router);
        router = IRouter(newRouter);
        
        isExcludeFromFees[newRouter] = true;

        emit UpdateRouter(oldRouter, newRouter, msg.sender, block.timestamp);
        pair = IFactory(router.factory()).createPair(address(this), router.WETH());
    }

    function updateMinSwap(uint256 newMinSwap) external onlyOwner {
        if (minSwap == newMinSwap) { revert CannotUseCurrentValue(newMinSwap); }
        uint256 oldMinSwap = minSwap;
        minSwap = newMinSwap;
        emit UpdateMinSwap(oldMinSwap, newMinSwap, msg.sender, block.timestamp);
    }

    function updateBuyFee(uint256 newDevelopmentFee) external onlyOwner {
        if (isFeeLocked) { revert FeeLocked(); }
        if (newDevelopmentFee > 210) { revert InvalidTotalFee(newDevelopmentFee, 210); }
        uint256 oldDevelopmentFee = buyDevelopmentFee;
        buyDevelopmentFee = newDevelopmentFee;
        emit UpdateBuyFee(oldDevelopmentFee, newDevelopmentFee, msg.sender, block.timestamp);
    }

    function updateSellFee(uint256 newDevelopmentFee) external onlyOwner {
        if (isFeeLocked) { revert FeeLocked(); }
        if (newDevelopmentFee > 210) { revert InvalidTotalFee(newDevelopmentFee, 210); }
        uint256 oldDevelopmentFee = sellDevelopmentFee;
        sellDevelopmentFee = newDevelopmentFee;
        emit UpdateSellFee(oldDevelopmentFee, newDevelopmentFee, msg.sender, block.timestamp);
    }

    function updateTransferFee(uint256 newDevelopmentFee) external onlyOwner {
        if (isFeeLocked) { revert FeeLocked(); }
        if (newDevelopmentFee > 210) { revert InvalidTotalFee(newDevelopmentFee, 210); }
        uint256 oldDevelopmentFee = transferDevelopmentFee;
        transferDevelopmentFee = newDevelopmentFee;
        emit UpdateTransferFee(oldDevelopmentFee, newDevelopmentFee, msg.sender, block.timestamp);
    }

    function updateFeeActive(bool newStatus) external authorized {
        if (isFeeActive == newStatus) { revert CannotUseCurrentState(newStatus); }
        bool oldStatus = isFeeActive;
        isFeeActive = newStatus;
        emit UpdateFeeActive(oldStatus, newStatus, msg.sender, block.timestamp);
    }

    function updateSwapEnabled(bool newStatus) external authorized {
        if (isSwapEnabled == newStatus) { revert CannotUseCurrentState(newStatus); }
        bool oldStatus = isSwapEnabled;
        isSwapEnabled = newStatus;
        emit UpdateSwapEnabled(oldStatus, newStatus, msg.sender, block.timestamp);
    }

    function updateDevelopmentReceiver(address newDevelopmentReceiver) external onlyOwner {
        if (developmentReceiver == newDevelopmentReceiver) { revert CannotUseCurrentAddress(newDevelopmentReceiver); }
        address oldDevelopmentReceiver = developmentReceiver;
        developmentReceiver = newDevelopmentReceiver;
        emit UpdateDevelopmentReceiver(oldDevelopmentReceiver, newDevelopmentReceiver, msg.sender, block.timestamp);
    }

    function setExcludeFromFees(address user, bool status) external authorized {
        if (isExcludeFromFees[user] == status) { revert CannotUseCurrentState(status); }
        isExcludeFromFees[user] = status;
    }

    /* Fee */

    function takeBuyFee(address from, uint256 amount) internal swapping returns (uint256) {
        uint256 feeAmount = amount * buyDevelopmentFee / FEEDENOMINATOR;
        uint256 newAmount = amount - feeAmount;
        tallyBuyFee(from, feeAmount, buyDevelopmentFee);
        return newAmount;
    }

    function takeSellFee(address from, uint256 amount) internal swapping returns (uint256) {
        uint256 feeAmount = amount * sellDevelopmentFee / FEEDENOMINATOR;
        uint256 newAmount = amount - feeAmount;
        tallySellFee(from, feeAmount, sellDevelopmentFee);
        return newAmount;
    }

    function takeTransferFee(address from, uint256 amount) internal swapping returns (uint256) {
        uint256 feeAmount = amount * transferDevelopmentFee / FEEDENOMINATOR;
        uint256 newAmount = amount - feeAmount;
        tallyTransferFee(from, feeAmount, transferDevelopmentFee);
        return newAmount;
    }

    function tallyBuyFee(address from, uint256 amount, uint256 fee) internal swapping {
        uint256 collectDevelopment = amount * buyDevelopmentFee / fee;
        tallyCollection(collectDevelopment, amount);
        
        _balances[from] -= amount;
        _balances[address(this)] += amount;
    }

    function tallySellFee(address from, uint256 amount, uint256 fee) internal swapping {
        uint256 collectDevelopment = amount * sellDevelopmentFee / fee;
        tallyCollection(collectDevelopment, amount);
        
        _balances[from] -= amount;
        _balances[address(this)] += amount;
    }

    function tallyTransferFee(address from, uint256 amount, uint256 fee) internal swapping {
        uint256 collectDevelopment = amount * transferDevelopmentFee / fee;
        tallyCollection(collectDevelopment, amount);

        _balances[from] -= amount;
        _balances[address(this)] += amount;
    }

    function tallyCollection(uint256 collectDevelopment, uint256 amount) internal swapping {
        developmentFeeCollected += collectDevelopment;
        totalFeeCollected += amount;
    }

    /* Buyback */

    function triggerZeusBuyback(uint256 amount) external authorized {
        buyTokens(amount, DEAD);
    }

    function buyTokens(uint256 amount, address to) internal swapping {
        if (msg.sender == DEAD) { revert InvalidAddress(DEAD); }
        address[] memory path = new address[](2);
        path[0] = router.WETH();
        path[1] = address(this);

        router.swapExactETHForTokensSupportingFeeOnTransferTokens{
            value: amount
        }(0, path, to, block.timestamp);
    }

    /* ERC20 Standard */

    function name() external view virtual override returns (string memory) {
        return NAME;
    }
    
    function symbol() external view virtual override returns (string memory) {
        return SYMBOL;
    }
    
    function decimals() external view virtual override returns (uint8) {
        return DECIMALS;
    }
    
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }
    
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }
    
    function transfer(address to, uint256 amount) external virtual override returns (bool) {
        address provider = msg.sender;
        return _transfer(provider, to, amount);
    }
    
    function allowance(address provider, address spender) public view virtual override returns (uint256) {
        return _allowances[provider][spender];
    }
    
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        address provider = msg.sender;
        _approve(provider, spender, amount);
        return true;
    }
    
    function transferFrom(address from, address to, uint256 amount) external virtual override returns (bool) {
        address spender = msg.sender;
        _spendAllowance(from, spender, amount);
        return _transfer(from, to, amount);
    }
    
    function increaseAllowance(address spender, uint256 addedValue) external virtual returns (bool) {
        address provider = msg.sender;
        _approve(provider, spender, allowance(provider, spender) + addedValue);
        return true;
    }
    
    function decreaseAllowance(address spender, uint256 subtractedValue) external virtual returns (bool) {
        address provider = msg.sender;
        uint256 currentAllowance = allowance(provider, spender);
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(provider, spender, currentAllowance - subtractedValue);
        }

        return true;
    }
    
    function _mint(address account, uint256 amount) internal virtual {
        if (account == ZERO) { revert InvalidAddress(account); }

        _totalSupply += amount;
        unchecked {
            _balances[account] += amount;
        }
        emit Transfer(address(0), account, amount);
    }

    function _approve(address provider, address spender, uint256 amount) internal virtual {
        if (provider == ZERO) { revert InvalidAddress(provider); }
        if (spender == ZERO) { revert InvalidAddress(spender); }

        _allowances[provider][spender] = amount;
        emit Approval(provider, spender, amount);
    }
    
    function _spendAllowance(address provider, address spender, uint256 amount) internal virtual {
        uint256 currentAllowance = allowance(provider, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(provider, spender, currentAllowance - amount);
            }
        }
    }

    /* Additional */

    function _basicTransfer(address from, address to, uint256 amount ) internal returns (bool) {
        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);
        return true;
    }
    
    /* Overrides */
 
    function _transfer(address from, address to, uint256 amount) internal virtual returns (bool) {
        if (from == ZERO) { revert InvalidAddress(from); }
        if (to == ZERO) { revert InvalidAddress(to); }

        if (inSwap || isExcludeFromFees[from]) {
            return _basicTransfer(from, to, amount);
        }

        if (from != pair && isSwapEnabled && totalFeeCollected - totalFeeRedeemed >= minSwap) {
            autoRedeem(minSwap);
        }

        uint256 newAmount = amount;

        if (isFeeActive && !isExcludeFromFees[from]) {
            newAmount = _beforeTokenTransfer(from, to, amount);
        }

        require(_balances[from] >= newAmount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = _balances[from] - newAmount;
            _balances[to] += newAmount;
        }

        emit Transfer(from, to, newAmount);

        return true;
    }

    function _beforeTokenTransfer(address from, address to, uint256 amount) internal swapping virtual returns (uint256) {
        if (from == pair && (buyDevelopmentFee > 0)) {
            return takeBuyFee(from, amount);
        }
        if (to == pair && (sellDevelopmentFee > 0)) {
            return takeSellFee(from, amount);
        }
        if (from != pair && to != pair && (transferDevelopmentFee > 0)) {
            return takeTransferFee(from, amount);
        }
        return amount;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"routerAddress","type":"address"},{"internalType":"address","name":"projectOwnerAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"current","type":"address"}],"name":"CannotUseCurrentAddress","type":"error"},{"inputs":[{"internalType":"bool","name":"current","type":"bool"}],"name":"CannotUseCurrentState","type":"error"},{"inputs":[{"internalType":"uint256","name":"current","type":"uint256"}],"name":"CannotUseCurrentValue","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"CurrentAuthorizedState","type":"error"},{"inputs":[],"name":"FeeLocked","type":"error"},{"inputs":[{"internalType":"address","name":"invalid","type":"address"}],"name":"InvalidAddress","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"InvalidAuthorizedAccount","type":"error"},{"inputs":[{"internalType":"bool","name":"current","type":"bool"}],"name":"InvalidFeeActiveState","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"InvalidOwner","type":"error"},{"inputs":[{"internalType":"bool","name":"current","type":"bool"}],"name":"InvalidSwapEnabledState","type":"error"},{"inputs":[{"internalType":"uint256","name":"current","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"name":"InvalidTotalFee","type":"error"},{"inputs":[{"internalType":"uint256","name":"invalid","type":"uint256"}],"name":"InvalidValue","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"UnauthorizedAccount","type":"error"},{"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":"developmentFeeDistribution","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountToRedeem","type":"uint256"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"AutoRedeem","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"authorizedAccount","type":"address"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"bool","name":"state","type":"bool"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"UpdateAuthorizedAccount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldBuyDevelopmentFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBuyDevelopmentFee","type":"uint256"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"UpdateBuyFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldDevelopmentReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"newDevelopmentReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"UpdateDevelopmentReceiver","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"oldStatus","type":"bool"},{"indexed":false,"internalType":"bool","name":"newStatus","type":"bool"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"UpdateFeeActive","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldMinSwap","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newMinSwap","type":"uint256"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"UpdateMinSwap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldRouter","type":"address"},{"indexed":false,"internalType":"address","name":"newRouter","type":"address"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"UpdateRouter","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldSellDevelopmentFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newSellDevelopmentFee","type":"uint256"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"UpdateSellFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"oldStatus","type":"bool"},{"indexed":false,"internalType":"bool","name":"newStatus","type":"bool"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"UpdateSwapEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldTransferDevelopmentFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newTransferDevelopmentFee","type":"uint256"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"UpdateTransferFee","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FEEDENOMINATOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ZERO","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"provider","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":"","type":"address"}],"name":"authorization","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountToRedeem","type":"uint256"}],"name":"autoRedeem","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevelopmentFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"circulatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"developmentFeeCollected","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"developmentFeeRedeemed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"developmentReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"finalizePresale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"inSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludeFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isFeeActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isFeeLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isKabosu2","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"isSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"minSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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":"redeemAllDevelopmentFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountToRedeem","type":"uint256"}],"name":"redeemPartialDevelopmentFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellDevelopmentFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setExcludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFeeCollected","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFeeRedeemed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDevelopmentFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"triggerZeusBuyback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newDevelopmentFee","type":"uint256"}],"name":"updateBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newDevelopmentReceiver","type":"address"}],"name":"updateDevelopmentReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newStatus","type":"bool"}],"name":"updateFeeActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMinSwap","type":"uint256"}],"name":"updateMinSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"updateRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newDevelopmentFee","type":"uint256"}],"name":"updateSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newStatus","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newDevelopmentFee","type":"uint256"}],"name":"updateTransferFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260c8600481905560055560006006819055600781905560088190556009819055600a5568056bc75e2d63100000600b55600c80546001600160c01b03191677a828314168403efd76e65209938ceff1a431b0f5000000001790553480156200006b57600080fd5b5060405162002dd238038062002dd28339810160408190526200008e916200057c565b336200009a81620002fa565b620000a5816200034a565b6001600160a01b0381163314620000c157620000c1336200034a565b50620000ee33620000d56012600a620006c9565b620000e89066017e9d8602b400620006e1565b620003b1565b6001600160a01b0381166200012657604051634726455360e11b81526001600160a01b03821660048201526024015b60405180910390fd5b600280546001600160a01b0319166001600160a01b0384169081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000180573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001a69190620006fb565b6001600160a01b031663c9c6539630600260009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000209573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022f9190620006fb565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200027d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a39190620006fb565b600d80546001600160a01b0319166001600160a01b0392831617905533600090815260106020526040808220805460ff199081166001908117909255600254909416835291208054909216179055506200072f9050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6200035462000452565b6001600160a01b03811615806200037557506001600160a01b03811661dead145b15620003a057604051635077b8ed60e11b81526001600160a01b03821660048201526024016200011d565b620003ae8133600162000493565b50565b6001600160a01b038216620003e557604051634726455360e11b81526001600160a01b03831660048201526024016200011d565b8060036000828254620003f9919062000719565b90915550506001600160a01b0382166000818152600e60209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b33620004666000546001600160a01b031690565b6001600160a01b03161462000491576040516332b2baa360e01b81523360048201526024016200011d565b565b6001600160a01b03831660009081526001602052604090205481151560ff909116151503620004e957604051635ce75a3b60e01b81526001600160a01b038416600482015281151560248201526044016200011d565b6001600160a01b03838116600081815260016020908152604091829020805460ff19168615159081179091558251938452938616908301528101919091524260608201527fff1d0a27274ca0cc8403b0e8f4a70b968164366f4856d18f7569eba542e9aae49060800160405180910390a1505050565b80516001600160a01b03811681146200057757600080fd5b919050565b600080604083850312156200059057600080fd5b6200059b836200055f565b9150620005ab602084016200055f565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200060b578160001904821115620005ef57620005ef620005b4565b80851615620005fd57918102915b93841c9390800290620005cf565b509250929050565b6000826200062457506001620006c3565b816200063357506000620006c3565b81600181146200064c5760028114620006575762000677565b6001915050620006c3565b60ff8411156200066b576200066b620005b4565b50506001821b620006c3565b5060208310610133831016604e8410600b84101617156200069c575081810a620006c3565b620006a88383620005ca565b8060001904821115620006bf57620006bf620005b4565b0290505b92915050565b6000620006da60ff84168362000613565b9392505050565b8082028115828204841417620006c357620006c3620005b4565b6000602082840312156200070e57600080fd5b620006da826200055f565b80820180821115620006c357620006c3620005b4565b612693806200073f6000396000f3fe60806040526004361061031e5760003560e01c8063924de9b7116101ab578063b908de8c116100f7578063dd62ed3e11610095578063f0b37c041161006f578063f0b37c0414610916578063f2a4268714610936578063f2fde38b14610966578063f887ea401461098657600080fd5b8063dd62ed3e146108c6578063e0dfb880146108e6578063e43504da146108fc57600080fd5b8063cbe12969116100d1578063cbe1296914610841578063d63cad2214610871578063d830678614610891578063dc7dc605146108b257600080fd5b8063b908de8c146107ec578063b9b2b5cd1461080b578063c851cc321461082157600080fd5b8063a8aa1b3111610164578063ab3662921161013e578063ab36629214610781578063b204141114610796578063b284f3ad146107ac578063b6a5d7de146107cc57600080fd5b8063a8aa1b311461072b578063a9059cbb1461074b578063ab28a04c1461076b57600080fd5b8063924de9b7146106795780639358928b1461069957806395d89b41146106ae578063a07ea36b146106e0578063a0a6e940146106f6578063a457c2d71461070b57600080fd5b8063467abe0a1161026a57806370a082311161022357806375fed3c7116101fd57806375fed3c7146105fb5780638577a6d51461061b57806388fc36b71461063b5780638da5cb5b1461065b57600080fd5b806370a082311461059a578063715018a6146105d057806371538eed146105e557600080fd5b8063467abe0a146104f157806358fa63ca14610511578063593173c11461052657806359cd90311461054e5780635f4702b81461056457806363a954921461057a57600080fd5b80631d933a4a116102d7578063313ce567116102b1578063313ce56714610475578063351a964d1461049157806339509351146104b15780633bf31454146104d157600080fd5b80631d933a4a146104205780631f7f508c1461044057806323b872dd1461045557600080fd5b8063012951431461032a57806303fd2a451461034c57806306fdde031461037f578063095ea7b3146103bb57806318160ddd146103eb57806318a94cf11461040a57600080fd5b3661032557005b600080fd5b34801561033657600080fd5b5061034a6103453660046122f2565b6109a6565b005b34801561035857600080fd5b5061036261dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561038b57600080fd5b5060408051808201909152600a81526904b61626f737520322e360b41b60208201525b604051610376919061230b565b3480156103c757600080fd5b506103db6103d636600461236e565b610bdf565b6040519015158152602001610376565b3480156103f757600080fd5b506003545b604051908152602001610376565b34801561041657600080fd5b506103fc60055481565b34801561042c57600080fd5b5061034a61043b3660046122f2565b610bf9565b34801561044c57600080fd5b5061034a610ca5565b34801561046157600080fd5b506103db61047036600461239a565b610cc5565b34801561048157600080fd5b5060405160128152602001610376565b34801561049d57600080fd5b50600c546103db9062010000900460ff1681565b3480156104bd57600080fd5b506103db6104cc36600461236e565b610ce9565b3480156104dd57600080fd5b5061034a6104ec3660046123f0565b610d0b565b3480156104fd57600080fd5b5061034a61050c3660046122f2565b610d9d565b34801561051d57600080fd5b50610362600081565b34801561053257600080fd5b50600c546103629064010000000090046001600160a01b031681565b34801561055a57600080fd5b506103fc600b5481565b34801561057057600080fd5b506103fc60075481565b34801561058657600080fd5b5061034a6105953660046122f2565b610e38565b3480156105a657600080fd5b506103fc6105b536600461240b565b6001600160a01b03166000908152600e602052604090205490565b3480156105dc57600080fd5b5061034a610e4c565b3480156105f157600080fd5b506103fc600a5481565b34801561060757600080fd5b5061034a6106163660046122f2565b610e60565b34801561062757600080fd5b5061034a6106363660046122f2565b610ecb565b34801561064757600080fd5b5061034a61065636600461240b565b610f66565b34801561066757600080fd5b506000546001600160a01b0316610362565b34801561068557600080fd5b5061034a6106943660046123f0565b611029565b3480156106a557600080fd5b506103fc6110d3565b3480156106ba57600080fd5b5060408051808201909152600981526804b61626f7375322e360bc1b60208201526103ae565b3480156106ec57600080fd5b506103fc60065481565b34801561070257600080fd5b5061034a611143565b34801561071757600080fd5b506103db61072636600461236e565b6111c7565b34801561073757600080fd5b50600d54610362906001600160a01b031681565b34801561075757600080fd5b506103db61076636600461236e565b61124d565b34801561077757600080fd5b506103fc61271081565b34801561078d57600080fd5b5061034a611263565b3480156107a257600080fd5b506103fc60045481565b3480156107b857600080fd5b5061034a6107c73660046122f2565b6112a5565b3480156107d857600080fd5b5061034a6107e736600461240b565b611343565b3480156107f857600080fd5b50600c546103db90610100900460ff1681565b34801561081757600080fd5b506103fc60085481565b34801561082d57600080fd5b5061034a61083c36600461240b565b6113a0565b34801561084d57600080fd5b506103db61085c36600461240b565b60016020526000908152604090205460ff1681565b34801561087d57600080fd5b5061034a61088c366004612428565b6115f9565b34801561089d57600080fd5b50600c546103db906301000000900460ff1681565b3480156108be57600080fd5b5060016103db565b3480156108d257600080fd5b506103fc6108e136600461245d565b611670565b3480156108f257600080fd5b506103fc60095481565b34801561090857600080fd5b50600c546103db9060ff1681565b34801561092257600080fd5b5061034a61093136600461240b565b61169b565b34801561094257600080fd5b506103db61095136600461240b565b60106020526000908152604090205460ff1681565b34801561097257600080fd5b5061034a61098136600461240b565b6116f8565b34801561099257600080fd5b50600254610362906001600160a01b031681565b600c805463ff000000191663010000001790556009546007546000916109cb916124ac565b90506000600a546008546109df91906124ac565b90506000816109ee84866124bf565b6109f891906124d6565b90508060096000828254610a0c91906124f8565b9250508190555083600a6000828254610a2591906124f8565b90915550506040805160028082526060820183526000926020830190803683370190505090503081600081518110610a5f57610a5f61250b565b6001600160a01b03928316602091820292909201810191909152600254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610ab8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610adc9190612521565b81600181518110610aef57610aef61250b565b6001600160a01b039283166020918202929092010152600254610b159130911687611733565b7fb933c1b294702108551eddf782a9c7d1a018b57f68ecf63bc59a1247daa19c3082863342604051610b4a949392919061253e565b60405180910390a1600254600c5460405163791ac94760e01b81526001600160a01b039283169263791ac94792610b9992879260009288926401000000009091049091169042906004016125a6565b600060405180830381600087803b158015610bb357600080fd5b505af1158015610bc7573d6000803e3d6000fd5b5050600c805463ff0000001916905550505050505050565b600033610bed818585611733565b60019150505b92915050565b610c016117f8565b600c54610100900460ff1615610c2a5760405163882d29d360e01b815260040160405180910390fd5b60d2811115610c5b5760405163211a907760e11b81526004810182905260d260248201526044015b60405180910390fd5b60058054908290556040517f303e7b18c743f03402db563f20359b822ba8bb215a8460ba6c5f5b1f401b868290610c9990839085903390429061253e565b60405180910390a15050565b6000600954600754610cb791906124ac565b9050610cc281611834565b50565b600033610cd38582856119ef565b610cde858585611a69565b9150505b9392505050565b600033610bed818585610cfc8383611670565b610d0691906124f8565b611733565b610d13611c56565b600c5481151560ff909116151503610d415760405162a7e72d60e41b81528115156004820152602401610c52565b600c805482151560ff19821681179092556040805160ff9092168015158352602083019390935233908201524260608201527ff99f9d4d81f67d0980beea494b4404ba3b8af1a0a2d493230f1a883efa027f2f90608001610c99565b610da56117f8565b600c54610100900460ff1615610dce5760405163882d29d360e01b815260040160405180910390fd5b60d2811115610dfa5760405163211a907760e11b81526004810182905260d26024820152604401610c52565b60048054908290556040517f90874b2697cc8e5401df6338d4549d0467cdd4f7e96a2cd367659b2eff89a07990610c9990839085903390429061253e565b610e40611c56565b610cc28161dead611c88565b610e546117f8565b610e5e6000611e21565b565b610e686117f8565b80600b5403610e8d5760405163657e16cf60e01b815260048101829052602401610c52565b600b8054908290556040517f9a9f4704ac409fe039e92a996e415370980275aaff2992936ed5b432886c55c590610c9990839085903390429061253e565b610ed36117f8565b600c54610100900460ff1615610efc5760405163882d29d360e01b815260040160405180910390fd5b60d2811115610f285760405163211a907760e11b81526004810182905260d26024820152604401610c52565b60068054908290556040517f93f0ae7c5c2922bf736e77b4999848c80112f12ae2c18ab4d80c1f55557a0fff90610c9990839085903390429061253e565b610f6e6117f8565b600c546001600160a01b038083166401000000009092041603610faf5760405163a936636960e01b81526001600160a01b0382166004820152602401610c52565b600c80546001600160a01b03838116640100000000818102640100000000600160c01b0319851617909455604080519490930490911680845260208401919091523391830191909152426060830152907fb0451709ef39d7c8ccf1af9d25ae2f9fb27fa0ec1bc6e7fe7526a78169301ab290608001610c99565b611031611c56565b801515600c60029054906101000a900460ff161515036110675760405162a7e72d60e41b81528115156004820152602401610c52565b600c80548215156201000081810262ff0000198416179093556040805160ff94909304939093168015158352602083019190915233928201929092524260608201527fa9eb6c000d17475b17651469533695f7b673c93327fdbadf4341ebeb2607a04490608001610c99565b600e6020527fe710864318d4a32f37d6ce54cb3fadbef648dd12d8dbdf53973564d56b7f881c5461dead60009081527ff77e91909e61d18f67b875b2bfcae1f683a8d555e55382e3a6b082e2c59ea57a5460035491929161113491906124ac565b61113e91906124ac565b905090565b61114b611c56565b600c5460ff161561117a57600c54604051630eff900b60e21b815260ff90911615156004820152602401610c52565b600c5462010000900460ff16156111b457600c5460405163610a8e6760e01b81526201000090910460ff1615156004820152602401610c52565b600c805462ff00ff191662010001179055565b600033816111d58286611670565b9050838110156112355760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610c52565b6112428286868403611733565b506001949350505050565b60003361125b818585611a69565b949350505050565b61126b6117f8565b600c54610100900460ff16156112945760405163882d29d360e01b815260040160405180910390fd5b600c805461ff001916610100179055565b6009546007546112b591906124ac565b81111561133a5760405162461bcd60e51b815260206004820152604760248201527f52656465656d205061727469616c20446576656c6f706d656e74204665653a2060448201527f496e73756666696369656e7420646576656c6f706d656e742066656520636f6c6064820152663632b1ba32b21760c91b608482015260a401610c52565b610cc281611834565b61134b6117f8565b6001600160a01b038116158061136b57506001600160a01b03811661dead145b1561139457604051635077b8ed60e11b81526001600160a01b0382166004820152602401610c52565b610cc281336001611e71565b6113a86117f8565b6002546001600160a01b038083169116036113e15760405163a936636960e01b81526001600160a01b0382166004820152602401610c52565b600280546001600160a01b031981166001600160a01b03848116918217909355600081815260106020908152604091829020805460ff19166001179055815194909316808552928401919091523390830152426060830152907fe1cb783288eddc7b22c25642a832d886a558be0dd900747310a34156b9fdcbbb9060800160405180910390a1600260009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114de9190612521565b6001600160a01b031663c9c6539630600260009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611540573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115649190612521565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156115b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115d59190612521565b600d80546001600160a01b0319166001600160a01b03929092169190911790555050565b611601611c56565b6001600160a01b03821660009081526010602052604090205481151560ff9091161515036116455760405162a7e72d60e41b81528115156004820152602401610c52565b6001600160a01b03919091166000908152601060205260409020805460ff1916911515919091179055565b6001600160a01b039182166000908152600f6020908152604080832093909416825291909152205490565b6116a36117f8565b6001600160a01b03811615806116c357506001600160a01b03811661dead145b156116ec57604051635077b8ed60e11b81526001600160a01b0382166004820152602401610c52565b610cc281336000611e71565b6117006117f8565b6001600160a01b03811661172a5760405163b20f76e360e01b815260006004820152602401610c52565b610cc281611e21565b6001600160a01b03831661176557604051634726455360e11b81526001600160a01b0384166004820152602401610c52565b6001600160a01b03821661179757604051634726455360e11b81526001600160a01b0383166004820152602401610c52565b6001600160a01b038381166000818152600f602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b3361180b6000546001600160a01b031690565b6001600160a01b031614610e5e576040516332b2baa360e01b8152336004820152602401610c52565b600c805463ff000000191663010000001790556009805482919060009061185c9084906124f8565b9250508190555080600a600082825461187591906124f8565b909155505060408051600280825260608201835260009260208301908036833701905050905030816000815181106118af576118af61250b565b6001600160a01b03928316602091820292909201810191909152600254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611908573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192c9190612521565b8160018151811061193f5761193f61250b565b6001600160a01b0392831660209182029290920101526002546119659130911684611733565b600254600c5460405163791ac94760e01b81526001600160a01b039283169263791ac947926119ac92879260009288926401000000009091049091169042906004016125a6565b600060405180830381600087803b1580156119c657600080fd5b505af11580156119da573d6000803e3d6000fd5b5050600c805463ff0000001916905550505050565b60006119fb8484611670565b90506000198114611a635781811015611a565760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610c52565b611a638484848403611733565b50505050565b60006001600160a01b038416611a9d57604051634726455360e11b81526001600160a01b0385166004820152602401610c52565b6001600160a01b038316611acf57604051634726455360e11b81526001600160a01b0384166004820152602401610c52565b600c546301000000900460ff1680611aff57506001600160a01b03841660009081526010602052604090205460ff165b15611b1657611b0f848484611f3b565b9050610ce2565b600d546001600160a01b03858116911614801590611b3c5750600c5462010000900460ff165b8015611b595750600b54600a54600854611b5691906124ac565b10155b15611b6957611b69600b546109a6565b600c54829060ff168015611b9657506001600160a01b03851660009081526010602052604090205460ff16155b15611ba957611ba6858585611fd4565b90505b6001600160a01b0385166000908152600e6020526040902054811115611be15760405162461bcd60e51b8152600401610c52906125e2565b6001600160a01b038086166000818152600e6020526040808220805486900390559287168082529083902080548501905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611c439085815260200190565b60405180910390a3506001949350505050565b3360009081526001602052604090205460ff16610e5e576040516332b2baa360e01b8152336004820152602401610c52565b600c805463ff0000001916630100000017905561deac193301611cc257604051634726455360e11b815261dead6004820152602401610c52565b6040805160028082526060820183526000926020830190803683375050600254604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015611d2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d509190612521565b81600081518110611d6357611d6361250b565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110611d9757611d9761250b565b6001600160a01b03928316602091820292909201015260025460405163b6f9de9560e01b815291169063b6f9de95908590611ddd90600090869088904290600401612628565b6000604051808303818588803b158015611df657600080fd5b505af1158015611e0a573d6000803e3d6000fd5b5050600c805463ff00000019169055505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03831660009081526001602052604090205481151560ff909116151503611ec557604051635ce75a3b60e01b81526001600160a01b03841660048201528115156024820152604401610c52565b6001600160a01b03838116600081815260016020908152604091829020805460ff19168615159081179091558251938452938616908301528101919091524260608201527fff1d0a27274ca0cc8403b0e8f4a70b968164366f4856d18f7569eba542e9aae49060800160405180910390a1505050565b6001600160a01b0383166000908152600e602052604081205482811015611f745760405162461bcd60e51b8152600401610c52906125e2565b6001600160a01b038086166000818152600e602052604080822087860390559287168082529083902080548701905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611c439087815260200190565b600c805463ff00000019166301000000179055600d546000906001600160a01b03858116911614801561200957506000600454115b1561201f5761201884836120ad565b9050612099565b600d546001600160a01b03848116911614801561203e57506000600554115b1561204d576120188483612112565b600d546001600160a01b038581169116148015906120795750600d546001600160a01b03848116911614155b801561208757506000600654115b15612096576120188483612162565b50805b600c805463ff000000191690559392505050565b600c805463ff000000191663010000001790556004546000908190612710906120d690856124bf565b6120e091906124d6565b905060006120ee82856124ac565b90506120fd85836004546121b2565b600c805463ff00000019169055949350505050565b600c805463ff0000001916630100000017905560055460009081906127109061213b90856124bf565b61214591906124d6565b9050600061215382856124ac565b90506120fd8583600554612251565b600c805463ff0000001916630100000017905560065460009081906127109061218b90856124bf565b61219591906124d6565b905060006121a382856124ac565b90506120fd8583600654612276565b600c805463ff0000001916630100000017905560045460009082906121d790856124bf565b6121e191906124d6565b90506121ed818461229b565b6001600160a01b0384166000908152600e6020526040812080548592906122159084906124ac565b9091555050306000908152600e6020526040812080548592906122399084906124f8565b9091555050600c805463ff0000001916905550505050565b600c805463ff0000001916630100000017905560055460009082906121d790856124bf565b600c805463ff0000001916630100000017905560065460009082906121d790856124bf565b600c805463ff00000019166301000000179055600780548391906000906122c39084906124f8565b9250508190555080600860008282546122dc91906124f8565b9091555050600c805463ff000000191690555050565b60006020828403121561230457600080fd5b5035919050565b600060208083528351808285015260005b818110156123385785810183015185820160400152820161231c565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610cc257600080fd5b6000806040838503121561238157600080fd5b823561238c81612359565b946020939093013593505050565b6000806000606084860312156123af57600080fd5b83356123ba81612359565b925060208401356123ca81612359565b929592945050506040919091013590565b803580151581146123eb57600080fd5b919050565b60006020828403121561240257600080fd5b610ce2826123db565b60006020828403121561241d57600080fd5b8135610ce281612359565b6000806040838503121561243b57600080fd5b823561244681612359565b9150612454602084016123db565b90509250929050565b6000806040838503121561247057600080fd5b823561247b81612359565b9150602083013561248b81612359565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610bf357610bf3612496565b8082028115828204841417610bf357610bf3612496565b6000826124f357634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610bf357610bf3612496565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561253357600080fd5b8151610ce281612359565b93845260208401929092526001600160a01b03166040830152606082015260800190565b600081518084526020808501945080840160005b8381101561259b5781516001600160a01b031687529582019590820190600101612576565b509495945050505050565b85815284602082015260a0604082015260006125c560a0830186612562565b6001600160a01b0394909416606083015250608001529392505050565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b8481526080602082015260006126416080830186612562565b6001600160a01b0394909416604083015250606001529291505056fea26469706673582212207beab3a208aad219bd6b2f122ec70102feb2c03d00a2688af1ae443a54750e8564736f6c634300081200330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000a828314168403efd76e65209938ceff1a431b0f5

Deployed Bytecode

0x60806040526004361061031e5760003560e01c8063924de9b7116101ab578063b908de8c116100f7578063dd62ed3e11610095578063f0b37c041161006f578063f0b37c0414610916578063f2a4268714610936578063f2fde38b14610966578063f887ea401461098657600080fd5b8063dd62ed3e146108c6578063e0dfb880146108e6578063e43504da146108fc57600080fd5b8063cbe12969116100d1578063cbe1296914610841578063d63cad2214610871578063d830678614610891578063dc7dc605146108b257600080fd5b8063b908de8c146107ec578063b9b2b5cd1461080b578063c851cc321461082157600080fd5b8063a8aa1b3111610164578063ab3662921161013e578063ab36629214610781578063b204141114610796578063b284f3ad146107ac578063b6a5d7de146107cc57600080fd5b8063a8aa1b311461072b578063a9059cbb1461074b578063ab28a04c1461076b57600080fd5b8063924de9b7146106795780639358928b1461069957806395d89b41146106ae578063a07ea36b146106e0578063a0a6e940146106f6578063a457c2d71461070b57600080fd5b8063467abe0a1161026a57806370a082311161022357806375fed3c7116101fd57806375fed3c7146105fb5780638577a6d51461061b57806388fc36b71461063b5780638da5cb5b1461065b57600080fd5b806370a082311461059a578063715018a6146105d057806371538eed146105e557600080fd5b8063467abe0a146104f157806358fa63ca14610511578063593173c11461052657806359cd90311461054e5780635f4702b81461056457806363a954921461057a57600080fd5b80631d933a4a116102d7578063313ce567116102b1578063313ce56714610475578063351a964d1461049157806339509351146104b15780633bf31454146104d157600080fd5b80631d933a4a146104205780631f7f508c1461044057806323b872dd1461045557600080fd5b8063012951431461032a57806303fd2a451461034c57806306fdde031461037f578063095ea7b3146103bb57806318160ddd146103eb57806318a94cf11461040a57600080fd5b3661032557005b600080fd5b34801561033657600080fd5b5061034a6103453660046122f2565b6109a6565b005b34801561035857600080fd5b5061036261dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561038b57600080fd5b5060408051808201909152600a81526904b61626f737520322e360b41b60208201525b604051610376919061230b565b3480156103c757600080fd5b506103db6103d636600461236e565b610bdf565b6040519015158152602001610376565b3480156103f757600080fd5b506003545b604051908152602001610376565b34801561041657600080fd5b506103fc60055481565b34801561042c57600080fd5b5061034a61043b3660046122f2565b610bf9565b34801561044c57600080fd5b5061034a610ca5565b34801561046157600080fd5b506103db61047036600461239a565b610cc5565b34801561048157600080fd5b5060405160128152602001610376565b34801561049d57600080fd5b50600c546103db9062010000900460ff1681565b3480156104bd57600080fd5b506103db6104cc36600461236e565b610ce9565b3480156104dd57600080fd5b5061034a6104ec3660046123f0565b610d0b565b3480156104fd57600080fd5b5061034a61050c3660046122f2565b610d9d565b34801561051d57600080fd5b50610362600081565b34801561053257600080fd5b50600c546103629064010000000090046001600160a01b031681565b34801561055a57600080fd5b506103fc600b5481565b34801561057057600080fd5b506103fc60075481565b34801561058657600080fd5b5061034a6105953660046122f2565b610e38565b3480156105a657600080fd5b506103fc6105b536600461240b565b6001600160a01b03166000908152600e602052604090205490565b3480156105dc57600080fd5b5061034a610e4c565b3480156105f157600080fd5b506103fc600a5481565b34801561060757600080fd5b5061034a6106163660046122f2565b610e60565b34801561062757600080fd5b5061034a6106363660046122f2565b610ecb565b34801561064757600080fd5b5061034a61065636600461240b565b610f66565b34801561066757600080fd5b506000546001600160a01b0316610362565b34801561068557600080fd5b5061034a6106943660046123f0565b611029565b3480156106a557600080fd5b506103fc6110d3565b3480156106ba57600080fd5b5060408051808201909152600981526804b61626f7375322e360bc1b60208201526103ae565b3480156106ec57600080fd5b506103fc60065481565b34801561070257600080fd5b5061034a611143565b34801561071757600080fd5b506103db61072636600461236e565b6111c7565b34801561073757600080fd5b50600d54610362906001600160a01b031681565b34801561075757600080fd5b506103db61076636600461236e565b61124d565b34801561077757600080fd5b506103fc61271081565b34801561078d57600080fd5b5061034a611263565b3480156107a257600080fd5b506103fc60045481565b3480156107b857600080fd5b5061034a6107c73660046122f2565b6112a5565b3480156107d857600080fd5b5061034a6107e736600461240b565b611343565b3480156107f857600080fd5b50600c546103db90610100900460ff1681565b34801561081757600080fd5b506103fc60085481565b34801561082d57600080fd5b5061034a61083c36600461240b565b6113a0565b34801561084d57600080fd5b506103db61085c36600461240b565b60016020526000908152604090205460ff1681565b34801561087d57600080fd5b5061034a61088c366004612428565b6115f9565b34801561089d57600080fd5b50600c546103db906301000000900460ff1681565b3480156108be57600080fd5b5060016103db565b3480156108d257600080fd5b506103fc6108e136600461245d565b611670565b3480156108f257600080fd5b506103fc60095481565b34801561090857600080fd5b50600c546103db9060ff1681565b34801561092257600080fd5b5061034a61093136600461240b565b61169b565b34801561094257600080fd5b506103db61095136600461240b565b60106020526000908152604090205460ff1681565b34801561097257600080fd5b5061034a61098136600461240b565b6116f8565b34801561099257600080fd5b50600254610362906001600160a01b031681565b600c805463ff000000191663010000001790556009546007546000916109cb916124ac565b90506000600a546008546109df91906124ac565b90506000816109ee84866124bf565b6109f891906124d6565b90508060096000828254610a0c91906124f8565b9250508190555083600a6000828254610a2591906124f8565b90915550506040805160028082526060820183526000926020830190803683370190505090503081600081518110610a5f57610a5f61250b565b6001600160a01b03928316602091820292909201810191909152600254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610ab8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610adc9190612521565b81600181518110610aef57610aef61250b565b6001600160a01b039283166020918202929092010152600254610b159130911687611733565b7fb933c1b294702108551eddf782a9c7d1a018b57f68ecf63bc59a1247daa19c3082863342604051610b4a949392919061253e565b60405180910390a1600254600c5460405163791ac94760e01b81526001600160a01b039283169263791ac94792610b9992879260009288926401000000009091049091169042906004016125a6565b600060405180830381600087803b158015610bb357600080fd5b505af1158015610bc7573d6000803e3d6000fd5b5050600c805463ff0000001916905550505050505050565b600033610bed818585611733565b60019150505b92915050565b610c016117f8565b600c54610100900460ff1615610c2a5760405163882d29d360e01b815260040160405180910390fd5b60d2811115610c5b5760405163211a907760e11b81526004810182905260d260248201526044015b60405180910390fd5b60058054908290556040517f303e7b18c743f03402db563f20359b822ba8bb215a8460ba6c5f5b1f401b868290610c9990839085903390429061253e565b60405180910390a15050565b6000600954600754610cb791906124ac565b9050610cc281611834565b50565b600033610cd38582856119ef565b610cde858585611a69565b9150505b9392505050565b600033610bed818585610cfc8383611670565b610d0691906124f8565b611733565b610d13611c56565b600c5481151560ff909116151503610d415760405162a7e72d60e41b81528115156004820152602401610c52565b600c805482151560ff19821681179092556040805160ff9092168015158352602083019390935233908201524260608201527ff99f9d4d81f67d0980beea494b4404ba3b8af1a0a2d493230f1a883efa027f2f90608001610c99565b610da56117f8565b600c54610100900460ff1615610dce5760405163882d29d360e01b815260040160405180910390fd5b60d2811115610dfa5760405163211a907760e11b81526004810182905260d26024820152604401610c52565b60048054908290556040517f90874b2697cc8e5401df6338d4549d0467cdd4f7e96a2cd367659b2eff89a07990610c9990839085903390429061253e565b610e40611c56565b610cc28161dead611c88565b610e546117f8565b610e5e6000611e21565b565b610e686117f8565b80600b5403610e8d5760405163657e16cf60e01b815260048101829052602401610c52565b600b8054908290556040517f9a9f4704ac409fe039e92a996e415370980275aaff2992936ed5b432886c55c590610c9990839085903390429061253e565b610ed36117f8565b600c54610100900460ff1615610efc5760405163882d29d360e01b815260040160405180910390fd5b60d2811115610f285760405163211a907760e11b81526004810182905260d26024820152604401610c52565b60068054908290556040517f93f0ae7c5c2922bf736e77b4999848c80112f12ae2c18ab4d80c1f55557a0fff90610c9990839085903390429061253e565b610f6e6117f8565b600c546001600160a01b038083166401000000009092041603610faf5760405163a936636960e01b81526001600160a01b0382166004820152602401610c52565b600c80546001600160a01b03838116640100000000818102640100000000600160c01b0319851617909455604080519490930490911680845260208401919091523391830191909152426060830152907fb0451709ef39d7c8ccf1af9d25ae2f9fb27fa0ec1bc6e7fe7526a78169301ab290608001610c99565b611031611c56565b801515600c60029054906101000a900460ff161515036110675760405162a7e72d60e41b81528115156004820152602401610c52565b600c80548215156201000081810262ff0000198416179093556040805160ff94909304939093168015158352602083019190915233928201929092524260608201527fa9eb6c000d17475b17651469533695f7b673c93327fdbadf4341ebeb2607a04490608001610c99565b600e6020527fe710864318d4a32f37d6ce54cb3fadbef648dd12d8dbdf53973564d56b7f881c5461dead60009081527ff77e91909e61d18f67b875b2bfcae1f683a8d555e55382e3a6b082e2c59ea57a5460035491929161113491906124ac565b61113e91906124ac565b905090565b61114b611c56565b600c5460ff161561117a57600c54604051630eff900b60e21b815260ff90911615156004820152602401610c52565b600c5462010000900460ff16156111b457600c5460405163610a8e6760e01b81526201000090910460ff1615156004820152602401610c52565b600c805462ff00ff191662010001179055565b600033816111d58286611670565b9050838110156112355760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610c52565b6112428286868403611733565b506001949350505050565b60003361125b818585611a69565b949350505050565b61126b6117f8565b600c54610100900460ff16156112945760405163882d29d360e01b815260040160405180910390fd5b600c805461ff001916610100179055565b6009546007546112b591906124ac565b81111561133a5760405162461bcd60e51b815260206004820152604760248201527f52656465656d205061727469616c20446576656c6f706d656e74204665653a2060448201527f496e73756666696369656e7420646576656c6f706d656e742066656520636f6c6064820152663632b1ba32b21760c91b608482015260a401610c52565b610cc281611834565b61134b6117f8565b6001600160a01b038116158061136b57506001600160a01b03811661dead145b1561139457604051635077b8ed60e11b81526001600160a01b0382166004820152602401610c52565b610cc281336001611e71565b6113a86117f8565b6002546001600160a01b038083169116036113e15760405163a936636960e01b81526001600160a01b0382166004820152602401610c52565b600280546001600160a01b031981166001600160a01b03848116918217909355600081815260106020908152604091829020805460ff19166001179055815194909316808552928401919091523390830152426060830152907fe1cb783288eddc7b22c25642a832d886a558be0dd900747310a34156b9fdcbbb9060800160405180910390a1600260009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114de9190612521565b6001600160a01b031663c9c6539630600260009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611540573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115649190612521565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156115b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115d59190612521565b600d80546001600160a01b0319166001600160a01b03929092169190911790555050565b611601611c56565b6001600160a01b03821660009081526010602052604090205481151560ff9091161515036116455760405162a7e72d60e41b81528115156004820152602401610c52565b6001600160a01b03919091166000908152601060205260409020805460ff1916911515919091179055565b6001600160a01b039182166000908152600f6020908152604080832093909416825291909152205490565b6116a36117f8565b6001600160a01b03811615806116c357506001600160a01b03811661dead145b156116ec57604051635077b8ed60e11b81526001600160a01b0382166004820152602401610c52565b610cc281336000611e71565b6117006117f8565b6001600160a01b03811661172a5760405163b20f76e360e01b815260006004820152602401610c52565b610cc281611e21565b6001600160a01b03831661176557604051634726455360e11b81526001600160a01b0384166004820152602401610c52565b6001600160a01b03821661179757604051634726455360e11b81526001600160a01b0383166004820152602401610c52565b6001600160a01b038381166000818152600f602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b3361180b6000546001600160a01b031690565b6001600160a01b031614610e5e576040516332b2baa360e01b8152336004820152602401610c52565b600c805463ff000000191663010000001790556009805482919060009061185c9084906124f8565b9250508190555080600a600082825461187591906124f8565b909155505060408051600280825260608201835260009260208301908036833701905050905030816000815181106118af576118af61250b565b6001600160a01b03928316602091820292909201810191909152600254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611908573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192c9190612521565b8160018151811061193f5761193f61250b565b6001600160a01b0392831660209182029290920101526002546119659130911684611733565b600254600c5460405163791ac94760e01b81526001600160a01b039283169263791ac947926119ac92879260009288926401000000009091049091169042906004016125a6565b600060405180830381600087803b1580156119c657600080fd5b505af11580156119da573d6000803e3d6000fd5b5050600c805463ff0000001916905550505050565b60006119fb8484611670565b90506000198114611a635781811015611a565760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610c52565b611a638484848403611733565b50505050565b60006001600160a01b038416611a9d57604051634726455360e11b81526001600160a01b0385166004820152602401610c52565b6001600160a01b038316611acf57604051634726455360e11b81526001600160a01b0384166004820152602401610c52565b600c546301000000900460ff1680611aff57506001600160a01b03841660009081526010602052604090205460ff165b15611b1657611b0f848484611f3b565b9050610ce2565b600d546001600160a01b03858116911614801590611b3c5750600c5462010000900460ff165b8015611b595750600b54600a54600854611b5691906124ac565b10155b15611b6957611b69600b546109a6565b600c54829060ff168015611b9657506001600160a01b03851660009081526010602052604090205460ff16155b15611ba957611ba6858585611fd4565b90505b6001600160a01b0385166000908152600e6020526040902054811115611be15760405162461bcd60e51b8152600401610c52906125e2565b6001600160a01b038086166000818152600e6020526040808220805486900390559287168082529083902080548501905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611c439085815260200190565b60405180910390a3506001949350505050565b3360009081526001602052604090205460ff16610e5e576040516332b2baa360e01b8152336004820152602401610c52565b600c805463ff0000001916630100000017905561deac193301611cc257604051634726455360e11b815261dead6004820152602401610c52565b6040805160028082526060820183526000926020830190803683375050600254604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015611d2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d509190612521565b81600081518110611d6357611d6361250b565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110611d9757611d9761250b565b6001600160a01b03928316602091820292909201015260025460405163b6f9de9560e01b815291169063b6f9de95908590611ddd90600090869088904290600401612628565b6000604051808303818588803b158015611df657600080fd5b505af1158015611e0a573d6000803e3d6000fd5b5050600c805463ff00000019169055505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03831660009081526001602052604090205481151560ff909116151503611ec557604051635ce75a3b60e01b81526001600160a01b03841660048201528115156024820152604401610c52565b6001600160a01b03838116600081815260016020908152604091829020805460ff19168615159081179091558251938452938616908301528101919091524260608201527fff1d0a27274ca0cc8403b0e8f4a70b968164366f4856d18f7569eba542e9aae49060800160405180910390a1505050565b6001600160a01b0383166000908152600e602052604081205482811015611f745760405162461bcd60e51b8152600401610c52906125e2565b6001600160a01b038086166000818152600e602052604080822087860390559287168082529083902080548701905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611c439087815260200190565b600c805463ff00000019166301000000179055600d546000906001600160a01b03858116911614801561200957506000600454115b1561201f5761201884836120ad565b9050612099565b600d546001600160a01b03848116911614801561203e57506000600554115b1561204d576120188483612112565b600d546001600160a01b038581169116148015906120795750600d546001600160a01b03848116911614155b801561208757506000600654115b15612096576120188483612162565b50805b600c805463ff000000191690559392505050565b600c805463ff000000191663010000001790556004546000908190612710906120d690856124bf565b6120e091906124d6565b905060006120ee82856124ac565b90506120fd85836004546121b2565b600c805463ff00000019169055949350505050565b600c805463ff0000001916630100000017905560055460009081906127109061213b90856124bf565b61214591906124d6565b9050600061215382856124ac565b90506120fd8583600554612251565b600c805463ff0000001916630100000017905560065460009081906127109061218b90856124bf565b61219591906124d6565b905060006121a382856124ac565b90506120fd8583600654612276565b600c805463ff0000001916630100000017905560045460009082906121d790856124bf565b6121e191906124d6565b90506121ed818461229b565b6001600160a01b0384166000908152600e6020526040812080548592906122159084906124ac565b9091555050306000908152600e6020526040812080548592906122399084906124f8565b9091555050600c805463ff0000001916905550505050565b600c805463ff0000001916630100000017905560055460009082906121d790856124bf565b600c805463ff0000001916630100000017905560065460009082906121d790856124bf565b600c805463ff00000019166301000000179055600780548391906000906122c39084906124f8565b9250508190555080600860008282546122dc91906124f8565b9091555050600c805463ff000000191690555050565b60006020828403121561230457600080fd5b5035919050565b600060208083528351808285015260005b818110156123385785810183015185820160400152820161231c565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610cc257600080fd5b6000806040838503121561238157600080fd5b823561238c81612359565b946020939093013593505050565b6000806000606084860312156123af57600080fd5b83356123ba81612359565b925060208401356123ca81612359565b929592945050506040919091013590565b803580151581146123eb57600080fd5b919050565b60006020828403121561240257600080fd5b610ce2826123db565b60006020828403121561241d57600080fd5b8135610ce281612359565b6000806040838503121561243b57600080fd5b823561244681612359565b9150612454602084016123db565b90509250929050565b6000806040838503121561247057600080fd5b823561247b81612359565b9150602083013561248b81612359565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610bf357610bf3612496565b8082028115828204841417610bf357610bf3612496565b6000826124f357634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610bf357610bf3612496565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561253357600080fd5b8151610ce281612359565b93845260208401929092526001600160a01b03166040830152606082015260800190565b600081518084526020808501945080840160005b8381101561259b5781516001600160a01b031687529582019590820190600101612576565b509495945050505050565b85815284602082015260a0604082015260006125c560a0830186612562565b6001600160a01b0394909416606083015250608001529392505050565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b8481526080602082015260006126416080830186612562565b6001600160a01b0394909416604083015250606001529291505056fea26469706673582212207beab3a208aad219bd6b2f122ec70102feb2c03d00a2688af1ae443a54750e8564736f6c63430008120033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000a828314168403efd76e65209938ceff1a431b0f5

-----Decoded View---------------
Arg [0] : routerAddress (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [1] : projectOwnerAddress (address): 0xA828314168403eFd76E65209938cEfF1a431b0F5

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [1] : 000000000000000000000000a828314168403efd76e65209938ceff1a431b0f5


Deployed Bytecode Sourcemap

7487:17386:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12342:966;;;;;;;;;;-1:-1:-1;12342:966:0;;;;;:::i;:::-;;:::i;:::-;;8447:46;;;;;;;;;;;;8486:6;8447:46;;;;;-1:-1:-1;;;;;363:32:1;;;345:51;;333:2;318:18;8447:46:0;;;;;;;;19678:101;;;;;;;;;;-1:-1:-1;19767:4:0;;;;;;;;;;;;-1:-1:-1;;;19767:4:0;;;;19678:101;;;;;;;:::i;20645:205::-;;;;;;;;;;-1:-1:-1;20645:205:0;;;;;:::i;:::-;;:::i;:::-;;;1581:14:1;;1574:22;1556:41;;1544:2;1529:18;20645:205:0;1416:187:1;20021:108:0;;;;;;;;;;-1:-1:-1;20109:12:0;;20021:108;;;1754:25:1;;;1742:2;1727:18;20021:108:0;1608:177:1;7878:39:0;;;;;;;;;;;;;;;;14799:419;;;;;;;;;;-1:-1:-1;14799:419:0;;;;;:::i;:::-;;:::i;11249:194::-;;;;;;;;;;;;;:::i;20862:246::-;;;;;;;;;;-1:-1:-1;20862:246:0;;;;;:::i;:::-;;:::i;19908:101::-;;;;;;;;;;-1:-1:-1;19908:101:0;;7725:2;2393:36:1;;2381:2;2366:18;19908:101:0;2251:184:1;8320:33:0;;;;;;;;;;-1:-1:-1;8320:33:0;;;;;;;;;;;21120:247;;;;;;;;;;-1:-1:-1;21120:247:0;;;;;:::i;:::-;;:::i;15669:308::-;;;;;;;;;;-1:-1:-1;15669:308:0;;;;;:::i;:::-;;:::i;14376:415::-;;;;;;;;;;-1:-1:-1;14376:415:0;;;;;:::i;:::-;;:::i;8399:41::-;;;;;;;;;;;;8438:1;8399:41;;8502:79;;;;;;;;;;-1:-1:-1;8502:79:0;;;;;;;-1:-1:-1;;;;;8502:79:0;;;8154:34;;;;;;;;;;;;;;;;7972:42;;;;;;;;;;;;;;;;19131:106;;;;;;;;;;-1:-1:-1;19131:106:0;;;;;:::i;:::-;;:::i;20141:127::-;;;;;;;;;;-1:-1:-1;20141:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;20242:18:0;20215:7;20242:18;;;:9;:18;;;;;;;20141:127;4363:103;;;;;;;;;;;;;:::i;8112:35::-;;;;;;;;;;;;;;;;14064:304;;;;;;;;;;-1:-1:-1;14064:304:0;;;;;:::i;:::-;;:::i;15226:435::-;;;;;;;;;;-1:-1:-1;15226:435:0;;;;;:::i;:::-;;:::i;16311:450::-;;;;;;;;;;-1:-1:-1;16311:450:0;;;;;:::i;:::-;;:::i;3932:87::-;;;;;;;;;;-1:-1:-1;3978:7:0;4005:6;-1:-1:-1;;;;;4005:6:0;3932:87;;15985:318;;;;;;;;;;-1:-1:-1;15985:318:0;;;;;:::i;:::-;;:::i;13428:136::-;;;;;;;;;;;;;:::i;19791:105::-;;;;;;;;;;-1:-1:-1;19882:6:0;;;;;;;;;;;;-1:-1:-1;;;19882:6:0;;;;19791:105;;7924:41;;;;;;;;;;;;;;;;10820:267;;;;;;;;;;;;;:::i;21379:445::-;;;;;;;;;;-1:-1:-1;21379:445:0;;;;;:::i;:::-;;:::i;8594:19::-;;;;;;;;;;-1:-1:-1;8594:19:0;;;;-1:-1:-1;;;;;8594:19:0;;;20280:184;;;;;;;;;;-1:-1:-1;20280:184:0;;;;;:::i;:::-;;:::i;7777:47::-;;;;;;;;;;;;7818:6;7777:47;;11095:126;;;;;;;;;;;;;:::i;7833:38::-;;;;;;;;;;;;;;;;11451:297;;;;;;;;;;-1:-1:-1;11451:297:0;;;;;:::i;:::-;;:::i;4695:255::-;;;;;;;;;;-1:-1:-1;4695:255:0;;;;;:::i;:::-;;:::i;8282:31::-;;;;;;;;;;-1:-1:-1;8282:31:0;;;;;;;;;;;8021:36;;;;;;;;;;;;;;;;13592:464;;;;;;;;;;-1:-1:-1;13592:464:0;;;;;:::i;:::-;;:::i;3220:45::-;;;;;;;;;;-1:-1:-1;3220:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16769:216;;;;;;;;;;-1:-1:-1;16769:216:0;;;;;:::i;:::-;;:::i;8360:26::-;;;;;;;;;;-1:-1:-1;8360:26:0;;;;;;;;;;;13335:85;;;;;;;;;;-1:-1:-1;8231:4:0;13335:85;;20476:157;;;;;;;;;;-1:-1:-1;20476:157:0;;;;;:::i;:::-;;:::i;8064:41::-;;;;;;;;;;;;;;;;8244:31;;;;;;;;;;-1:-1:-1;8244:31:0;;;;;;;;4958:258;;;;;;;;;;-1:-1:-1;4958:258:0;;;;;:::i;:::-;;:::i;8770:49::-;;;;;;;;;;-1:-1:-1;8770:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4474:213;;;;;;;;;;-1:-1:-1;4474:213:0;;;;;:::i;:::-;;:::i;7558:21::-;;;;;;;;;;-1:-1:-1;7558:21:0;;;;-1:-1:-1;;;;;7558:21:0;;;12342:966;8878:6;:13;;-1:-1:-1;;8878:13:0;;;;;12471:22:::1;::::0;12445:23:::1;::::0;8878:13;;12445:48:::1;::::0;::::1;:::i;:::-;12415:78;;12504:21;12548:16;;12528:17;;:36;;;;:::i;:::-;12504:60:::0;-1:-1:-1;12577:34:0::1;12504:60:::0;12614:36:::1;12631:19:::0;12614:14;:36:::1;:::i;:::-;:52;;;;:::i;:::-;12577:89;;12713:26;12687:22;;:52;;;;;;;:::i;:::-;;;;;;;;12770:14;12750:16;;:34;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;12821:16:0::1;::::0;;12835:1:::1;12821:16:::0;;;;;::::1;::::0;;12797:21:::1;::::0;12821:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;12821:16:0::1;12797:40;;12866:4;12848;12853:1;12848:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12848:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;12892:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;12892:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;12848:7;;12892:13;;;;;:6;:13:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12882:4;12887:1;12882:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12882:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;12950:6:::1;::::0;12918:56:::1;::::0;12935:4:::1;::::0;12950:6:::1;12959:14:::0;12918:8:::1;:56::i;:::-;12996:83;13007:26;13035:14;13051:10;13063:15;12996:83;;;;;;;;;:::i;:::-;;;;;;;;13092:6;::::0;13240:19:::1;::::0;13092:208:::1;::::0;-1:-1:-1;;;13092:208:0;;-1:-1:-1;;;;;13092:6:0;;::::1;::::0;:57:::1;::::0;:208:::1;::::0;13164:26;;13092:6:::1;::::0;13221:4;;13240:19;;;::::1;::::0;;::::1;::::0;13274:15:::1;::::0;13240:19:::1;13092:208;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;8914:6:0;:14;;-1:-1:-1;;8914:14:0;;;-1:-1:-1;;;;;;;12342:966:0:o;20645:205::-;20728:4;20764:10;20785:35;20764:10;20804:7;20813:6;20785:8;:35::i;:::-;20838:4;20831:11;;;20645:205;;;;;:::o;14799:419::-;3325:13;:11;:13::i;:::-;14883:11:::1;::::0;::::1;::::0;::::1;;;14879:40;;;14905:11;;-1:-1:-1::0;;;14905:11:0::1;;;;;;;;;;;14879:40;14953:3;14933:17;:23;14929:80;;;14967:39;::::0;-1:-1:-1;;;14967:39:0;;::::1;::::0;::::1;6947:25:1::0;;;15002:3:0::1;6988:18:1::0;;;6981:34;6920:18;;14967:39:0::1;;;;;;;;14929:80;15047:18;::::0;;15076:38;;;;15130:80:::1;::::0;::::1;::::0;::::1;::::0;15047:18;;15097:17;;15182:10:::1;::::0;15194:15:::1;::::0;15130:80:::1;:::i;:::-;;;;;;;;14868:350;14799:419:::0;:::o;11249:194::-;11304:22;11355;;11329:23;;:48;;;;:::i;:::-;11304:73;;11398:37;11420:14;11398:21;:37::i;:::-;11293:150;11249:194::o;20862:246::-;20961:4;20996:10;21017:38;21033:4;20996:10;21048:6;21017:15;:38::i;:::-;21073:27;21083:4;21089:2;21093:6;21073:9;:27::i;:::-;21066:34;;;20862:246;;;;;;:::o;21120:247::-;21210:4;21246:10;21267:70;21246:10;21286:7;21326:10;21295:28;21246:10;21286:7;21295:9;:28::i;:::-;:41;;;;:::i;:::-;21267:8;:70::i;15669:308::-;3399:18;:16;:18::i;:::-;15745:11:::1;::::0;:24;::::1;;:11;::::0;;::::1;:24;;::::0;15741:74:::1;;15780:32;::::0;-1:-1:-1;;;15780:32:0;;1581:14:1;;1574:22;15780:32:0::1;::::0;::::1;1556:41:1::0;1529:18;;15780:32:0::1;1416:187:1::0;15741:74:0::1;15842:11;::::0;;15864:23;::::1;;-1:-1:-1::0;;15864:23:0;::::1;::::0;::::1;::::0;;;15903:66:::1;::::0;;15842:11:::1;::::0;;::::1;7270:14:1::0;;7263:22;7245:41;;7317:2;7302:18;;7295:50;;;;15941:10:0::1;7361:18:1::0;;;7354:60;15953:15:0::1;7445:2:1::0;7430:18;;7423:34;15903:66:0::1;::::0;7232:3:1;7217:19;15903:66:0::1;7026:437:1::0;14376:415:0;3325:13;:11;:13::i;:::-;14459:11:::1;::::0;::::1;::::0;::::1;;;14455:40;;;14481:11;;-1:-1:-1::0;;;14481:11:0::1;;;;;;;;;;;14455:40;14529:3;14509:17;:23;14505:80;;;14543:39;::::0;-1:-1:-1;;;14543:39:0;;::::1;::::0;::::1;6947:25:1::0;;;14578:3:0::1;6988:18:1::0;;;6981:34;6920:18;;14543:39:0::1;6763:258:1::0;14505:80:0::1;14623:17;::::0;;14651:37;;;;14704:79:::1;::::0;::::1;::::0;::::1;::::0;14623:17;;14671;;14755:10:::1;::::0;14767:15:::1;::::0;14704:79:::1;:::i;19131:106::-:0;3399:18;:16;:18::i;:::-;19206:23:::1;19216:6;8486;19206:9;:23::i;4363:103::-:0;3325:13;:11;:13::i;:::-;4428:30:::1;4455:1;4428:18;:30::i;:::-;4363:103::o:0;14064:304::-;3325:13;:11;:13::i;:::-;14152:10:::1;14141:7;;:21:::0;14137:72:::1;;14173:33;::::0;-1:-1:-1;;;14173:33:0;;::::1;::::0;::::1;1754:25:1::0;;;1727:18;;14173:33:0::1;1608:177:1::0;14137:72:0::1;14240:7;::::0;;14258:20;;;;14294:66:::1;::::0;::::1;::::0;::::1;::::0;14240:7;;14268:10;;14332::::1;::::0;14344:15:::1;::::0;14294:66:::1;:::i;15226:435::-:0;3325:13;:11;:13::i;:::-;15314:11:::1;::::0;::::1;::::0;::::1;;;15310:40;;;15336:11;;-1:-1:-1::0;;;15336:11:0::1;;;;;;;;;;;15310:40;15384:3;15364:17;:23;15360:80;;;15398:39;::::0;-1:-1:-1;;;15398:39:0;;::::1;::::0;::::1;6947:25:1::0;;;15433:3:0::1;6988:18:1::0;;;6981:34;6920:18;;15398:39:0::1;6763:258:1::0;15360:80:0::1;15478:22;::::0;;15511:42;;;;15569:84:::1;::::0;::::1;::::0;::::1;::::0;15478:22;;15536:17;;15625:10:::1;::::0;15637:15:::1;::::0;15569:84:::1;:::i;16311:450::-:0;3325:13;:11;:13::i;:::-;16412:19:::1;::::0;-1:-1:-1;;;;;16412:45:0;;::::1;:19:::0;;;::::1;;:45:::0;16408:110:::1;;16468:47;::::0;-1:-1:-1;;;16468:47:0;;-1:-1:-1;;;;;363:32:1;;16468:47:0::1;::::0;::::1;345:51:1::0;318:18;;16468:47:0::1;199:203:1::0;16408:110:0::1;16561:19;::::0;;-1:-1:-1;;;;;16591:44:0;;::::1;16561:19:::0;16591:44;;::::1;-1:-1:-1::0;;;;;;16591:44:0;::::1;;::::0;;;16651:102:::1;::::0;;16561:19;;;::::1;::::0;;::::1;7737:34:1::0;;;7802:2;7787:18;;7780:43;;;;16725:10:0::1;7839:18:1::0;;;7832:43;;;;16737:15:0::1;7906:2:1::0;7891:18;;7884:34;16561:19:0;16651:102:::1;::::0;7686:3:1;7671:19;16651:102:0::1;7468:456:1::0;15985:318:0;3399:18;:16;:18::i;:::-;16080:9:::1;16063:26;;:13;;;;;;;;;;;:26;;::::0;16059:76:::1;;16100:32;::::0;-1:-1:-1;;;16100:32:0;;1581:14:1;;1574:22;16100:32:0::1;::::0;::::1;1556:41:1::0;1529:18;;16100:32:0::1;1416:187:1::0;16059:76:0::1;16162:13;::::0;;16186:25;::::1;;16162:13:::0;16186:25;;::::1;-1:-1:-1::0;;16186:25:0;::::1;;::::0;;;16227:68:::1;::::0;;16162:13:::1;::::0;;;::::1;::::0;;;::::1;7270:14:1::0;;7263:22;7245:41;;7317:2;7302:18;;7295:50;;;;16267:10:0::1;7361:18:1::0;;;7354:60;;;;16279:15:0::1;7445:2:1::0;7430:18;;7423:34;16227:68:0::1;::::0;7232:3:1;7217:19;16227:68:0::1;7026:437:1::0;13428:136:0;20242:9;:18;;;;8486:6;13480:7;20242:18;;;;;20109:12;;13480:7;;20242:18;13507:31;;20242:18;13507:31;:::i;:::-;:49;;;;:::i;:::-;13500:56;;13428:136;:::o;10820:267::-;3399:18;:16;:18::i;:::-;10882:11:::1;::::0;::::1;;10878:63;;;10926:11;::::0;10904:34:::1;::::0;-1:-1:-1;;;10904:34:0;;10926:11:::1;::::0;;::::1;1581:14:1::0;1574:22;10904:34:0::1;::::0;::::1;1556:41:1::0;1529:18;;10904:34:0::1;1416:187:1::0;10878:63:0::1;10955:13;::::0;;;::::1;;;10951:69;;;11003:13;::::0;10979:38:::1;::::0;-1:-1:-1;;;10979:38:0;;11003:13;;;::::1;;;1581:14:1::0;1574:22;10979:38:0::1;::::0;::::1;1556:41:1::0;1529:18;;10979:38:0::1;1416:187:1::0;10951:69:0::1;11030:11;:18:::0;;-1:-1:-1;;11059:20:0;;;;;10820:267::o;21379:445::-;21474:4;21510:10;21474:4;21558:28;21510:10;21578:7;21558:9;:28::i;:::-;21531:55;;21625:15;21605:16;:35;;21597:85;;;;-1:-1:-1;;;21597:85:0;;8131:2:1;21597:85:0;;;8113:21:1;8170:2;8150:18;;;8143:30;8209:34;8189:18;;;8182:62;-1:-1:-1;;;8260:18:1;;;8253:35;8305:19;;21597:85:0;7929:401:1;21597:85:0;21718:63;21727:8;21737:7;21765:15;21746:16;:34;21718:8;:63::i;:::-;-1:-1:-1;21812:4:0;;21379:445;-1:-1:-1;;;;21379:445:0:o;20280:184::-;20361:4;20397:10;20425:31;20397:10;20445:2;20449:6;20425:9;:31::i;:::-;20418:38;20280:184;-1:-1:-1;;;;20280:184:0:o;11095:126::-;3325:13;:11;:13::i;:::-;11149:11:::1;::::0;::::1;::::0;::::1;;;11145:40;;;11171:11;;-1:-1:-1::0;;;11171:11:0::1;;;;;;;;;;;11145:40;11195:11;:18:::0;;-1:-1:-1;;11195:18:0::1;;;::::0;;11095:126::o;11451:297::-;11584:22;;11558:23;;:48;;;;:::i;:::-;11540:14;:66;;11532:150;;;;-1:-1:-1;;;11532:150:0;;8537:2:1;11532:150:0;;;8519:21:1;8576:2;8556:18;;;8549:30;8615:34;8595:18;;;8588:62;8686:34;8666:18;;;8659:62;-1:-1:-1;;;8737:19:1;;;8730:38;8785:19;;11532:150:0;8335:475:1;11532:150:0;11703:37;11725:14;11703:21;:37::i;4695:255::-;3325:13;:11;:13::i;:::-;-1:-1:-1;;;;;4771:21:0;::::1;::::0;;:51:::1;;-1:-1:-1::0;;;;;;4796:26:0;::::1;4815:6;4796:26;4771:51;4767:124;;;4846:33;::::0;-1:-1:-1;;;4846:33:0;;-1:-1:-1;;;;;363:32:1;;4846:33:0::1;::::0;::::1;345:51:1::0;318:18;;4846:33:0::1;199:203:1::0;4767:124:0::1;4901:41;4916:7;4925:10;4937:4;4901:14;:41::i;13592:464::-:0;3325:13;:11;:13::i;:::-;13675:6:::1;::::0;-1:-1:-1;;;;;13667:28:0;;::::1;13675:6:::0;::::1;13667:28:::0;13663:80:::1;;13706:34;::::0;-1:-1:-1;;;13706:34:0;;-1:-1:-1;;;;;363:32:1;;13706:34:0::1;::::0;::::1;345:51:1::0;318:18;;13706:34:0::1;199:203:1::0;13663:80:0::1;13781:6;::::0;;-1:-1:-1;;;;;;13799:27:0;::::1;-1:-1:-1::0;;;;;13799:27:0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;13847:28:0;;;:17:::1;:28;::::0;;;;;;;;:35;;-1:-1:-1;;13847:35:0::1;-1:-1:-1::0;13847:35:0::1;::::0;;13900:63;;13781:6;;;::::1;7737:34:1::0;;;7787:18;;;7780:43;;;;13935:10:0::1;7839:18:1::0;;;7832:43;13947:15:0::1;7906:2:1::0;7891:18;;7884:34;13781:6:0;13900:63:::1;::::0;7686:3:1;7671:19;13900:63:0::1;;;;;;;13990:6;;;;;;;;;-1:-1:-1::0;;;;;13990:6:0::1;-1:-1:-1::0;;;;;13990:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13981:37:0::1;;14027:4;14034:6;;;;;;;;;-1:-1:-1::0;;;;;14034:6:0::1;-1:-1:-1::0;;;;;14034:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13981:67;::::0;-1:-1:-1;;;;;;13981:67:0::1;::::0;;;;;;-1:-1:-1;;;;;9045:15:1;;;13981:67:0::1;::::0;::::1;9027:34:1::0;9097:15;;9077:18;;;9070:43;8962:18;;13981:67:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13974:4;:74:::0;;-1:-1:-1;;;;;;13974:74:0::1;-1:-1:-1::0;;;;;13974:74:0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;13592:464:0:o;16769:216::-;3399:18;:16;:18::i;:::-;-1:-1:-1;;;;;16859:23:0;::::1;;::::0;;;:17:::1;:23;::::0;;;;;:33;::::1;;:23;::::0;;::::1;:33;;::::0;16855:80:::1;;16903:29;::::0;-1:-1:-1;;;16903:29:0;;1581:14:1;;1574:22;16903:29:0::1;::::0;::::1;1556:41:1::0;1529:18;;16903:29:0::1;1416:187:1::0;16855:80:0::1;-1:-1:-1::0;;;;;16945:23:0;;;::::1;;::::0;;;:17:::1;:23;::::0;;;;:32;;-1:-1:-1;;16945:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16769:216::o;20476:157::-;-1:-1:-1;;;;;20595:21:0;;;20568:7;20595:21;;;:11;:21;;;;;;;;:30;;;;;;;;;;;;;20476:157::o;4958:258::-;3325:13;:11;:13::i;:::-;-1:-1:-1;;;;;5036:21:0;::::1;::::0;;:51:::1;;-1:-1:-1::0;;;;;;5061:26:0;::::1;5080:6;5061:26;5036:51;5032:124;;;5111:33;::::0;-1:-1:-1;;;5111:33:0;;-1:-1:-1;;;;;363:32:1;;5111:33:0::1;::::0;::::1;345:51:1::0;318:18;;5111:33:0::1;199:203:1::0;5032:124:0::1;5166:42;5181:7;5190:10;5202:5;5166:14;:42::i;4474:213::-:0;3325:13;:11;:13::i;:::-;-1:-1:-1;;;;;4559:22:0;::::1;4555:86;;4605:24;::::0;-1:-1:-1;;;4605:24:0;;4626:1:::1;4605:24;::::0;::::1;345:51:1::0;318:18;;4605:24:0::1;199:203:1::0;4555:86:0::1;4651:28;4670:8;4651:18;:28::i;22146:331::-:0;-1:-1:-1;;;;;22247:16:0;;22243:58;;22274:24;;-1:-1:-1;;;22274:24:0;;-1:-1:-1;;;;;363:32:1;;22274:24:0;;;345:51:1;318:18;;22274:24:0;199:203:1;22243:58:0;-1:-1:-1;;;;;22315:15:0;;22311:56;;22341:23;;-1:-1:-1;;;22341:23:0;;-1:-1:-1;;;;;363:32:1;;22341:23:0;;;345:51:1;318:18;;22341:23:0;199:203:1;22311:56:0;-1:-1:-1;;;;;22379:21:0;;;;;;;:11;:21;;;;;;;;:30;;;;;;;;;;;;;:39;;;22434:35;;1754:25:1;;;22434:35:0;;1727:18:1;22434:35:0;;;;;;;22146:331;;;:::o;4027:155::-;4098:10;4087:7;3978;4005:6;-1:-1:-1;;;;;4005:6:0;;3932:87;4087:7;-1:-1:-1;;;;;4087:21:0;;4083:92;;4132:31;;-1:-1:-1;;;4132:31:0;;4152:10;4132:31;;;345:51:1;318:18;;4132:31:0;199:203:1;11756:578:0;8878:6;:13;;-1:-1:-1;;8878:13:0;;;;;11841:22:::1;:40:::0;;11867:14;;11841:22;8878:13;;11841:40:::1;::::0;11867:14;;11841:40:::1;:::i;:::-;;;;;;;;11912:14;11892:16;;:34;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;11964:16:0::1;::::0;;11978:1:::1;11964:16:::0;;;;;::::1;::::0;;11940:21:::1;::::0;11964:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11964:16:0::1;11940:40;;12009:4;11991;11996:1;11991:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11991:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;12035:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;12035:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;11991:7;;12035:13;;;;;:6;:13:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12025:4;12030:1;12025:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12025:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;12093:6:::1;::::0;12061:56:::1;::::0;12078:4:::1;::::0;12093:6:::1;12102:14:::0;12061:8:::1;:56::i;:::-;12130:6;::::0;12266:19:::1;::::0;12130:196:::1;::::0;-1:-1:-1;;;12130:196:0;;-1:-1:-1;;;;;12130:6:0;;::::1;::::0;:57:::1;::::0;:196:::1;::::0;12202:14;;12130:6:::1;::::0;12247:4;;12266:19;;;::::1;::::0;;::::1;::::0;12300:15:::1;::::0;12266:19:::1;12130:196;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;8914:6:0;:14;;-1:-1:-1;;8914:14:0;;;-1:-1:-1;;;;11756:578:0:o;22489:428::-;22593:24;22620:28;22630:8;22640:7;22620:9;:28::i;:::-;22593:55;;-1:-1:-1;;22663:16:0;:37;22659:251;;22745:6;22725:16;:26;;22717:68;;;;-1:-1:-1;;;22717:68:0;;9326:2:1;22717:68:0;;;9308:21:1;9365:2;9345:18;;;9338:30;9404:31;9384:18;;;9377:59;9453:18;;22717:68:0;9124:353:1;22717:68:0;22829:54;22838:8;22848:7;22876:6;22857:16;:25;22829:8;:54::i;:::-;22582:335;22489:428;;;:::o;23404:947::-;23491:4;-1:-1:-1;;;;;23512:12:0;;23508:50;;23535:20;;-1:-1:-1;;;23535:20:0;;-1:-1:-1;;;;;363:32:1;;23535:20:0;;;345:51:1;318:18;;23535:20:0;199:203:1;23508:50:0;-1:-1:-1;;;;;23572:10:0;;23568:46;;23593:18;;-1:-1:-1;;;23593:18:0;;-1:-1:-1;;;;;363:32:1;;23593:18:0;;;345:51:1;318:18;;23593::0;199:203:1;23568:46:0;23630:6;;;;;;;;:33;;-1:-1:-1;;;;;;23640:23:0;;;;;;:17;:23;;;;;;;;23630:33;23626:105;;;23687:32;23702:4;23708:2;23712:6;23687:14;:32::i;:::-;23680:39;;;;23626:105;23755:4;;-1:-1:-1;;;;;23747:12:0;;;23755:4;;23747:12;;;;:29;;-1:-1:-1;23763:13:0;;;;;;;23747:29;:80;;;;;23820:7;;23800:16;;23780:17;;:36;;;;:::i;:::-;:47;;23747:80;23743:132;;;23844:19;23855:7;;23844:10;:19::i;:::-;23930:11;;23907:6;;23930:11;;:39;;;;-1:-1:-1;;;;;;23946:23:0;;;;;;:17;:23;;;;;;;;23945:24;23930:39;23926:122;;;23998:38;24019:4;24025:2;24029:6;23998:20;:38::i;:::-;23986:50;;23926:122;-1:-1:-1;;;;;24068:15:0;;;;;;:9;:15;;;;;;:28;-1:-1:-1;24068:28:0;24060:79;;;;-1:-1:-1;;;24060:79:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24193:15:0;;;;;;;:9;:15;;;;;;;;:27;;;24175:45;;24235:13;;;;;;;;;;:26;;;;;;24290:29;;;;;;24211:9;1754:25:1;;1742:2;1727:18;;1608:177;24290:29:0;;;;;;;;-1:-1:-1;24339:4:0;;23404:947;-1:-1:-1;;;;23404:947:0:o;4190:165::-;4270:10;4256:25;;;;:13;:25;;;;;;;;4251:97;;4305:31;;-1:-1:-1;;;4305:31:0;;4325:10;4305:31;;;345:51:1;318:18;;4305:31:0;199:203:1;19245:397:0;8878:6;:13;;-1:-1:-1;;8878:13:0;;;;;-1:-1:-1;;19325:10:0::1;:18:::0;19321:56:::1;;19354:20;::::0;-1:-1:-1;;;19354:20:0;;8486:6:::1;19354:20;::::0;::::1;345:51:1::0;318:18;;19354:20:0::1;199:203:1::0;19321:56:0::1;19411:16;::::0;;19425:1:::1;19411:16:::0;;;;;::::1;::::0;;19387:21:::1;::::0;19411:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;19448:6:0::1;::::0;:13:::1;::::0;;-1:-1:-1;;;19448:13:0;;;;19387:40;;-1:-1:-1;;;;;;19448:6:0;;::::1;::::0;:11:::1;::::0;-1:-1:-1;19448:13:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:6;:13:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19438:4;19443:1;19438:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;19438:23:0::1;;;-1:-1:-1::0;;;;;19438:23:0::1;;;::::0;::::1;19490:4;19472;19477:1;19472:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19472:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;19508:6:::1;::::0;:126:::1;::::0;-1:-1:-1;;;19508:126:0;;:6;::::1;::::0;:57:::1;::::0;19587:6;;19508:126:::1;::::0;:6:::1;::::0;19608:4;;19614:2;;19618:15:::1;::::0;19508:126:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;8914:6:0;:14;;-1:-1:-1;;8914:14:0;;;-1:-1:-1;;;;;;19245:397:0:o;5224:191::-;5298:16;5317:6;;-1:-1:-1;;;;;5334:17:0;;;-1:-1:-1;;;;;;5334:17:0;;;;;;5367:40;;5317:6;;;;;;;5367:40;;5298:16;5367:40;5287:128;5224:191;:::o;5423:334::-;-1:-1:-1;;;;;5524:22:0;;;;;;:13;:22;;;;;;:31;;;:22;;;;:31;;;5520:109;;5579:38;;-1:-1:-1;;;5579:38:0;;-1:-1:-1;;;;;10590:32:1;;5579:38:0;;;10572:51:1;10666:14;;10659:22;10639:18;;;10632:50;10545:18;;5579:38:0;10404:284:1;5520:109:0;-1:-1:-1;;;;;5639:22:0;;;;;;;:13;:22;;;;;;;;;:30;;-1:-1:-1;;5639:30:0;;;;;;;;;;5685:64;;10956:34:1;;;11026:15;;;11006:18;;;10999:43;11058:18;;11051:50;;;;5733:15:0;11132:2:1;11117:18;;11110:34;5685:64:0;;10905:3:1;10890:19;5685:64:0;;;;;;;5423:334;;;:::o;22949:419::-;-1:-1:-1;;;;;23073:15:0;;23034:4;23073:15;;;:9;:15;;;;;;23107:21;;;;23099:72;;;;-1:-1:-1;;;23099:72:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23207:15:0;;;;;;;:9;:15;;;;;;23225:20;;;23207:38;;23260:13;;;;;;;;;;:23;;;;;;23312:26;;;;;;23239:6;1754:25:1;;1742:2;1727:18;;1608:177;24359:511:0;8878:6;:13;;-1:-1:-1;;8878:13:0;;;;;24498:4:::1;::::0;24466:7;;-1:-1:-1;;;;;24490:12:0;;::::1;24498:4:::0;::::1;24490:12;:39:::0;::::1;;;;24527:1;24507:17;;:21;24490:39;24486:103;;;24553:24;24564:4;24570:6;24553:10;:24::i;:::-;24546:31;;;;24486:103;24609:4;::::0;-1:-1:-1;;;;;24603:10:0;;::::1;24609:4:::0;::::1;24603:10;:38:::0;::::1;;;;24639:1;24618:18;;:22;24603:38;24599:103;;;24665:25;24677:4;24683:6;24665:11;:25::i;24599:103::-;24724:4;::::0;-1:-1:-1;;;;;24716:12:0;;::::1;24724:4:::0;::::1;24716:12;::::0;::::1;::::0;:26:::1;;-1:-1:-1::0;24738:4:0::1;::::0;-1:-1:-1;;;;;24732:10:0;;::::1;24738:4:::0;::::1;24732:10;;24716:26;:58;;;;;24772:1;24747:22;;:26;24716:58;24712:127;;;24798:29;24814:4;24820:6;24798:15;:29::i;24712:127::-;-1:-1:-1::0;24856:6:0;8902:1:::1;8914:6:::0;:14;;-1:-1:-1;;8914:14:0;;;24359:511;;-1:-1:-1;;;24359:511:0:o;17010:302::-;8878:6;:13;;-1:-1:-1;;8878:13:0;;;;;17136:17:::1;::::0;17087:7;;;;7818:6:::1;::::0;17127:26:::1;::::0;:6;:26:::1;:::i;:::-;:43;;;;:::i;:::-;17107:63:::0;-1:-1:-1;17181:17:0::1;17201:18;17107:63:::0;17201:6;:18:::1;:::i;:::-;17181:38;;17230:47;17242:4;17248:9;17259:17;;17230:11;:47::i;:::-;8914:6:::0;:14;;-1:-1:-1;;8914:14:0;;;17295:9;17010:302;-1:-1:-1;;;;17010:302:0:o;17320:306::-;8878:6;:13;;-1:-1:-1;;8878:13:0;;;;;17447:18:::1;::::0;17398:7;;;;7818:6:::1;::::0;17438:27:::1;::::0;:6;:27:::1;:::i;:::-;:44;;;;:::i;:::-;17418:64:::0;-1:-1:-1;17493:17:0::1;17513:18;17418:64:::0;17513:6;:18:::1;:::i;:::-;17493:38;;17542:49;17555:4;17561:9;17572:18;;17542:12;:49::i;17634:322::-:0;8878:6;:13;;-1:-1:-1;;8878:13:0;;;;;17765:22:::1;::::0;17716:7;;;;7818:6:::1;::::0;17756:31:::1;::::0;:6;:31:::1;:::i;:::-;:48;;;;:::i;:::-;17736:68:::0;-1:-1:-1;17815:17:0::1;17835:18;17736:68:::0;17835:6;:18:::1;:::i;:::-;17815:38;;17864:57;17881:4;17887:9;17898:22;;17864:16;:57::i;17964:307::-:0;8878:6;:13;;-1:-1:-1;;8878:13:0;;;;;18095:17:::1;::::0;8878:13;;18115:3;;18086:26:::1;::::0;:6;:26:::1;:::i;:::-;:32;;;;:::i;:::-;18057:61;;18129:43;18145:18;18165:6;18129:15;:43::i;:::-;-1:-1:-1::0;;;;;18193:15:0;::::1;;::::0;;;:9:::1;:15;::::0;;;;:25;;18212:6;;18193:15;:25:::1;::::0;18212:6;;18193:25:::1;:::i;:::-;::::0;;;-1:-1:-1;;18247:4:0::1;18229:24;::::0;;;:9:::1;:24;::::0;;;;:34;;18257:6;;18229:24;:34:::1;::::0;18257:6;;18229:34:::1;:::i;:::-;::::0;;;-1:-1:-1;;8914:6:0;:14;;-1:-1:-1;;8914:14:0;;;-1:-1:-1;;;;17964:307:0:o;18279:309::-;8878:6;:13;;-1:-1:-1;;8878:13:0;;;;;18411:18:::1;::::0;8878:13;;18432:3;;18402:27:::1;::::0;:6;:27:::1;:::i;18596:309::-:0;8878:6;:13;;-1:-1:-1;;8878:13:0;;;;;18732:22:::1;::::0;8878:13;;18757:3;;18723:31:::1;::::0;:6;:31:::1;:::i;18913:189::-:0;8878:6;:13;;-1:-1:-1;;8878:13:0;;;;;19011:23:::1;:45:::0;;19038:18;;19011:23;8878:13;;19011:45:::1;::::0;19038:18;;19011:45:::1;:::i;:::-;;;;;;;;19088:6;19067:17;;:27;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;8914:6:0;:14;;-1:-1:-1;;8914:14:0;;;-1:-1:-1;;18913:189:0:o;14:180:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:1;;14:180;-1:-1:-1;14:180:1:o;407:548::-;519:4;548:2;577;566:9;559:21;609:6;603:13;652:6;647:2;636:9;632:18;625:34;677:1;687:140;701:6;698:1;695:13;687:140;;;796:14;;;792:23;;786:30;762:17;;;781:2;758:26;751:66;716:10;;687:140;;;691:3;876:1;871:2;862:6;851:9;847:22;843:31;836:42;946:2;939;935:7;930:2;922:6;918:15;914:29;903:9;899:45;895:54;887:62;;;;407:548;;;;:::o;960:131::-;-1:-1:-1;;;;;1035:31:1;;1025:42;;1015:70;;1081:1;1078;1071:12;1096:315;1164:6;1172;1225:2;1213:9;1204:7;1200:23;1196:32;1193:52;;;1241:1;1238;1231:12;1193:52;1280:9;1267:23;1299:31;1324:5;1299:31;:::i;:::-;1349:5;1401:2;1386:18;;;;1373:32;;-1:-1:-1;;;1096:315:1:o;1790:456::-;1867:6;1875;1883;1936:2;1924:9;1915:7;1911:23;1907:32;1904:52;;;1952:1;1949;1942:12;1904:52;1991:9;1978:23;2010:31;2035:5;2010:31;:::i;:::-;2060:5;-1:-1:-1;2117:2:1;2102:18;;2089:32;2130:33;2089:32;2130:33;:::i;:::-;1790:456;;2182:7;;-1:-1:-1;;;2236:2:1;2221:18;;;;2208:32;;1790:456::o;2440:160::-;2505:20;;2561:13;;2554:21;2544:32;;2534:60;;2590:1;2587;2580:12;2534:60;2440:160;;;:::o;2605:180::-;2661:6;2714:2;2702:9;2693:7;2689:23;2685:32;2682:52;;;2730:1;2727;2720:12;2682:52;2753:26;2769:9;2753:26;:::i;2790:247::-;2849:6;2902:2;2890:9;2881:7;2877:23;2873:32;2870:52;;;2918:1;2915;2908:12;2870:52;2957:9;2944:23;2976:31;3001:5;2976:31;:::i;3042:315::-;3107:6;3115;3168:2;3156:9;3147:7;3143:23;3139:32;3136:52;;;3184:1;3181;3174:12;3136:52;3223:9;3210:23;3242:31;3267:5;3242:31;:::i;:::-;3292:5;-1:-1:-1;3316:35:1;3347:2;3332:18;;3316:35;:::i;:::-;3306:45;;3042:315;;;;;:::o;3362:388::-;3430:6;3438;3491:2;3479:9;3470:7;3466:23;3462:32;3459:52;;;3507:1;3504;3497:12;3459:52;3546:9;3533:23;3565:31;3590:5;3565:31;:::i;:::-;3615:5;-1:-1:-1;3672:2:1;3657:18;;3644:32;3685:33;3644:32;3685:33;:::i;:::-;3737:7;3727:17;;;3362:388;;;;;:::o;3978:127::-;4039:10;4034:3;4030:20;4027:1;4020:31;4070:4;4067:1;4060:15;4094:4;4091:1;4084:15;4110:128;4177:9;;;4198:11;;;4195:37;;;4212:18;;:::i;4243:168::-;4316:9;;;4347;;4364:15;;;4358:22;;4344:37;4334:71;;4385:18;;:::i;4416:217::-;4456:1;4482;4472:132;;4526:10;4521:3;4517:20;4514:1;4507:31;4561:4;4558:1;4551:15;4589:4;4586:1;4579:15;4472:132;-1:-1:-1;4618:9:1;;4416:217::o;4638:125::-;4703:9;;;4724:10;;;4721:36;;;4737:18;;:::i;4900:127::-;4961:10;4956:3;4952:20;4949:1;4942:31;4992:4;4989:1;4982:15;5016:4;5013:1;5006:15;5032:251;5102:6;5155:2;5143:9;5134:7;5130:23;5126:32;5123:52;;;5171:1;5168;5161:12;5123:52;5203:9;5197:16;5222:31;5247:5;5222:31;:::i;5288:417::-;5519:25;;;5575:2;5560:18;;5553:34;;;;-1:-1:-1;;;;;5623:32:1;5618:2;5603:18;;5596:60;5687:2;5672:18;;5665:34;5506:3;5491:19;;5288:417::o;5710:461::-;5763:3;5801:5;5795:12;5828:6;5823:3;5816:19;5854:4;5883:2;5878:3;5874:12;5867:19;;5920:2;5913:5;5909:14;5941:1;5951:195;5965:6;5962:1;5959:13;5951:195;;;6030:13;;-1:-1:-1;;;;;6026:39:1;6014:52;;6086:12;;;;6121:15;;;;6062:1;5980:9;5951:195;;;-1:-1:-1;6162:3:1;;5710:461;-1:-1:-1;;;;;5710:461:1:o;6176:582::-;6475:6;6464:9;6457:25;6518:6;6513:2;6502:9;6498:18;6491:34;6561:3;6556:2;6545:9;6541:18;6534:31;6438:4;6582:57;6634:3;6623:9;6619:19;6611:6;6582:57;:::i;:::-;-1:-1:-1;;;;;6675:32:1;;;;6670:2;6655:18;;6648:60;-1:-1:-1;6739:3:1;6724:19;6717:35;6574:65;6176:582;-1:-1:-1;;;6176:582:1:o;9482:402::-;9684:2;9666:21;;;9723:2;9703:18;;;9696:30;9762:34;9757:2;9742:18;;9735:62;-1:-1:-1;;;9828:2:1;9813:18;;9806:36;9874:3;9859:19;;9482:402::o;9889:510::-;10160:6;10149:9;10142:25;10203:3;10198:2;10187:9;10183:18;10176:31;10123:4;10224:57;10276:3;10265:9;10261:19;10253:6;10224:57;:::i;:::-;-1:-1:-1;;;;;10317:32:1;;;;10312:2;10297:18;;10290:60;-1:-1:-1;10381:2:1;10366:18;10359:34;10216:65;9889:510;-1:-1:-1;;9889:510:1:o

Swarm Source

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