ETH Price: $2,270.15 (+3.07%)

Token

SHINA PRINTER (SHIP)
 

Overview

Max Total Supply

20,000,000,000,000 SHIP

Holders

106

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

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:
SHINAPRINTER

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-04-11
*/

// File: @openzeppelin/contracts/token/ERC20/IERC20.sol

// www.shinaprinter.com

// Telegram t.me/SHIP_PortalJoin

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

// File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol


// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

// File: @openzeppelin/contracts/utils/Context.sol


// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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

// File: @openzeppelin/contracts/utils/math/SafeMath.sol


// OpenZeppelin Contracts v4.4.1 (utils/math/SafeMath.sol)

pragma solidity ^0.8.0;

// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.

/**
 * @dev Wrappers over Solidity's arithmetic operations.
 *
 * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler
 * now has built in overflow checking.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the substraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator.
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

// File: @openzeppelin/contracts/access/Ownable.sol


// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)

pragma solidity ^0.8.0;

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

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

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

// File: contracts/SHINAPRINTER.sol




pragma solidity ^0.8.0;





interface IBURNER {
    function burnEmUp() external payable;    
}

 interface IUniswapV2Factory {
     function createPair(address tokenA, address tokenB) external returns (address pair);
 }
 
 interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
     function factory() external pure returns (address);
     function WETH() external pure returns (address);
     function addLiquidityETH(
         address token,
         uint amountTokenDesired,
         uint amountTokenMin,
         uint amountETHMin,
         address to,
         uint deadline
     ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidityETH(
      address token,
      uint liquidity,
      uint amountTokenMin,
      uint amountETHMin,
      address to,
      uint deadline
    ) external returns (uint amountToken, uint amountETH);     
 }

interface IDividendDistributor {
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external;
    function setShare(address shareholder, uint256 amount) external;
    function deposit() external payable;
    function process(uint256 gas) external;
}


contract DividendDistributor is IDividendDistributor {

    using SafeMath for uint256;
    address _token;

    struct Share {
        uint256 amount;
        uint256 totalExcluded;
        uint256 totalRealised;
    }

    IUniswapV2Router02 router;
    IERC20 public RewardToken; 

    address[] shareholders;
    mapping (address => uint256) shareholderIndexes;
    mapping (address => uint256) shareholderClaims;
    mapping (address => Share) public shares;

    uint256 public totalShares;
    uint256 public totalDividends;
    uint256 public totalDistributed;
    uint256 public dividendsPerShare;
    uint256 public dividendsPerShareAccuracyFactor = 10 ** 36;

    uint256 public minPeriod = 30 minutes;
    uint256 public minDistribution = 1 * (10 ** 18);

    uint256 currentIndex;
    bool initialized;

    modifier initialization() {
        require(!initialized);
        _;
        initialized = true;
    }

    modifier onlyToken() {
        require(msg.sender == _token); _;
    }

    constructor (address _router, address _reflectionToken, address token) {
        router = IUniswapV2Router02(_router);
        RewardToken = IERC20(_reflectionToken);
        _token = token;
    }

    function setDistributionCriteria(uint256 newMinPeriod, uint256 newMinDistribution) external override onlyToken {
        minPeriod = newMinPeriod;
        minDistribution = newMinDistribution;
    }

    function setShare(address shareholder, uint256 amount) external override onlyToken {

        if(shares[shareholder].amount > 0){
            distributeDividend(shareholder);
        }

        if(amount > 0 && shares[shareholder].amount == 0){
            addShareholder(shareholder);
        }else if(amount == 0 && shares[shareholder].amount > 0){
            removeShareholder(shareholder);
        }

        totalShares = totalShares.sub(shares[shareholder].amount).add(amount);
        shares[shareholder].amount = amount;
        shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
    }

    function deposit() external payable override onlyToken {

        uint256 balanceBefore = RewardToken.balanceOf(address(this));

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

        router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: msg.value}(
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amount = RewardToken.balanceOf(address(this)).sub(balanceBefore);
        totalDividends = totalDividends.add(amount);
        dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares));
    }
    
    function process(uint256 gas) external override onlyToken {
        uint256 shareholderCount = shareholders.length;

        if(shareholderCount == 0) { return; }

        uint256 iterations = 0;
        uint256 gasUsed = 0;
        uint256 gasLeft = gasleft();

        while(gasUsed < gas && iterations < shareholderCount) {

            if(currentIndex >= shareholderCount){ currentIndex = 0; }

            if(shouldDistribute(shareholders[currentIndex])){
                distributeDividend(shareholders[currentIndex]);
            }

            gasUsed = gasUsed.add(gasLeft.sub(gasleft()));
            gasLeft = gasleft();
            currentIndex++;
            iterations++;
        }
    }
    
    function shouldDistribute(address shareholder) internal view returns (bool) {
        return shareholderClaims[shareholder] + minPeriod < block.timestamp
                && getUnpaidEarnings(shareholder) > minDistribution;
    }

    function distributeDividend(address shareholder) internal {
        if(shares[shareholder].amount == 0){ return; }

        uint256 amount = getUnpaidEarnings(shareholder);
        if(amount > 0){
            totalDistributed = totalDistributed.add(amount);
            RewardToken.transfer(shareholder, amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
        }
    }
    
    function claimDividend() external {
        require(shouldDistribute(msg.sender), "Too soon. Need to wait!");
        distributeDividend(msg.sender);
    }

    function getUnpaidEarnings(address shareholder) public view returns (uint256) {
        if(shares[shareholder].amount == 0){ return 0; }

        uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount);
        uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded;

        if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; }

        return shareholderTotalDividends.sub(shareholderTotalExcluded);
    }

    function getCumulativeDividends(uint256 share) internal view returns (uint256) {
        return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor);
    }

    function addShareholder(address shareholder) internal {
        shareholderIndexes[shareholder] = shareholders.length;
        shareholders.push(shareholder);
    }

    function removeShareholder(address shareholder) internal {
        shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1];
        shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder];
        shareholders.pop();
    }
}


contract SHINAPRINTER is Context, IERC20, IERC20Metadata {
    using SafeMath for uint256;

    IDividendDistributor public dividendDistributor;
    uint256 distributorGas = 500000;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;


    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;
    address payable public hldBurnerAddress;
    address public hldAdmin;

    bool public restrictWhales = true;

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

    uint256 public launchedAt;
    uint256 public hldFee = 2;

    uint256 public reflectionFee;
    uint256 public lpFee;
    uint256 public devFee;

    uint256 public reflectionFeeOnSell;
    uint256 public lpFeeOnSell;
    uint256 public devFeeOnSell;

    uint256 public totalFee;
    uint256 public totalFeeIfSelling;

    IUniswapV2Router02 public router;
    address public pair;
    address public factory;
    address public tokenOwner;
    address payable public devWallet;

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public tradingStatus = true;

    mapping (address => bool) private bots;    

    uint256 public _maxTxAmount;
    uint256 public _walletMax;
    uint256 public swapThreshold;
    
    constructor(uint256 initialSupply, address reflectionToken, address routerAddress, address initialHldAdmin, address initialHldBurner) {

        _name = "SHINA PRINTER";
        _symbol = "SHIP";
        _totalSupply += initialSupply;
        _balances[msg.sender] += initialSupply;        

        _maxTxAmount = initialSupply * 2 / 200;
        _walletMax = initialSupply * 3 / 100;    
        swapThreshold = initialSupply * 5 / 4000;

        router = IUniswapV2Router02(routerAddress);
        pair = IUniswapV2Factory(router.factory()).createPair(router.WETH(), address(this));

        _allowances[address(this)][address(router)] = type(uint256).max;

        dividendDistributor = new DividendDistributor(routerAddress, reflectionToken, address(this));

        factory = msg.sender;

        isFeeExempt[address(this)] = true;
        isFeeExempt[factory] = true;

        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[pair] = true;
        isTxLimitExempt[factory] = true;
        isTxLimitExempt[DEAD] = true;
        isTxLimitExempt[ZERO] = true; 

        isDividendExempt[pair] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[DEAD] = true;
        isDividendExempt[ZERO] = true; 

        reflectionFee = 6;
        lpFee = 2;
        devFee = 4;

        reflectionFeeOnSell = 6;
        lpFeeOnSell = 2;
        devFeeOnSell = 4;

        totalFee = devFee.add(lpFee).add(reflectionFee).add(hldFee);
        totalFeeIfSelling = devFeeOnSell.add(lpFeeOnSell).add(reflectionFeeOnSell).add(hldFee);         

        tokenOwner = msg.sender;
        devWallet = payable(msg.sender);
        hldBurnerAddress = payable(initialHldBurner);
        hldAdmin = initialHldAdmin;

    }

    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    modifier onlyHldAdmin() {
        require(hldAdmin == _msgSender(), "Ownable: caller is not the hldAdmin");
        _;
    }

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

    //hldAdmin functions
    function updateHldAdmin(address newAdmin) public virtual onlyHldAdmin {     
        hldAdmin = newAdmin;
    }

    function updateHldBurnerAddress(address newhldBurnerAddress) public virtual onlyHldAdmin {     
        hldBurnerAddress = payable(newhldBurnerAddress);
    }    
    
    function setBots(address[] memory bots_) external onlyHldAdmin {
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }


    //Owner functions
    function changeFees(uint256 initialReflectionFee, uint256 initialReflectionFeeOnSell, uint256 initialLpFee, uint256 initialLpFeeOnSell,
        uint256 initialDevFee, uint256 initialDevFeeOnSell) external onlyOwner {

        reflectionFee = initialReflectionFee;
        lpFee = initialLpFee;
        devFee = initialDevFee;

        reflectionFeeOnSell = initialReflectionFeeOnSell;
        lpFeeOnSell = initialLpFeeOnSell;
        devFeeOnSell = initialDevFeeOnSell;

        totalFee = devFee.add(lpFee).add(reflectionFee).add(hldFee);
        totalFeeIfSelling = devFeeOnSell.add(lpFeeOnSell).add(reflectionFeeOnSell).add(hldFee);

        require(totalFee <= 15, "Too high fee");
        require(totalFeeIfSelling <= 15, "Too high fee");
    } 

    function removeHldAdmin() public virtual onlyOwner {
        hldAdmin = address(0);
    }

    function changeTxLimit(uint256 newLimit) external onlyOwner {
        _maxTxAmount = newLimit;
    }

    function changeWalletLimit(uint256 newLimit) external onlyOwner {
    
        _walletMax  = newLimit;
    }

    function changeRestrictWhales(bool newValue) external onlyOwner {            
        restrictWhales = newValue;
    }
    
    function changeIsFeeExempt(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
    }

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


    function setDevWallet(address payable newDevWallet) external onlyOwner {
        devWallet = payable(newDevWallet);
    }

    function setOwnerWallet(address payable newOwnerWallet) external onlyOwner {
        tokenOwner = newOwnerWallet;
    }     

    function changeSwapBackSettings(bool enableSwapBack, uint256 newSwapBackLimit) external onlyOwner {
        swapAndLiquifyEnabled  = enableSwapBack;
        swapThreshold = newSwapBackLimit;
    }

    function setDistributionCriteria(uint256 newMinPeriod, uint256 newMinDistribution) external onlyOwner {
        dividendDistributor.setDistributionCriteria(newMinPeriod, newMinDistribution);        
    }

    function delBot(address notbot) external onlyOwner {
        bots[notbot] = false;
    }       

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5.05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 9;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    /**
     *
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * Requirements:
     *
     * - `from` and `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `amount`.
     */

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, _allowances[owner][spender] + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = _allowances[owner][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        
        require(!bots[sender] && !bots[recipient]);

        if(inSwapAndLiquify){ return _basicTransfer(sender, recipient, amount); }

        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "tx");

        if(!isTxLimitExempt[recipient] && restrictWhales)
        {
            require(_balances[recipient].add(amount) <= _walletMax, "wallet");
        }

        if(msg.sender != pair && !inSwapAndLiquify && swapAndLiquifyEnabled && _balances[address(this)] >= swapThreshold){ swapBack(); }

        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        
        uint256 finalAmount = !isFeeExempt[sender] && !isFeeExempt[recipient] ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(finalAmount);

        // Dividend tracker
        if(!isDividendExempt[sender]) {
            try dividendDistributor.setShare(sender, _balances[sender]) {} catch {}
        }

        if(!isDividendExempt[recipient]) {
            try dividendDistributor.setShare(recipient, _balances[recipient]) {} catch {} 
        }

        try dividendDistributor.process(distributorGas) {} catch {}


        emit Transfer(sender, recipient, finalAmount);
        return true;
    }    

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

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */



    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

    /**
     * @dev Spend `amount` form the allowance of `owner` toward `spender`.
     *
     * Does not update the allowance amount in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Might emit an {Approval} event.
     */
    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint256 feeApplicable = pair == recipient ? totalFeeIfSelling : totalFee;
        uint256 feeAmount = amount.mul(feeApplicable).div(100);

        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount);
    }

    function swapBack() internal lockTheSwap {
        
        uint256 tokensToLiquify = _balances[address(this)];
        uint256 amountToLiquify = tokensToLiquify.mul(lpFee).div(totalFee).div(2);
        uint256 amountToSwap = tokensToLiquify.sub(amountToLiquify);

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

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

        uint256 amountETH = address(this).balance;
        uint256 devBalance = amountETH.mul(devFee).div(totalFee);
        uint256 hldBalance = amountETH.mul(hldFee).div(totalFee);

        uint256 amountEthLiquidity = amountETH.mul(lpFee).div(totalFee).div(2);
        uint256 amountEthReflection = amountETH.sub(devBalance).sub(hldBalance).sub(amountEthLiquidity);


        if(amountETH > 0){
            IBURNER(hldBurnerAddress).burnEmUp{value: hldBalance}();           
            devWallet.transfer(devBalance);
        }        

        try dividendDistributor.deposit{value: amountEthReflection}() {} catch {}

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountEthLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                0x000000000000000000000000000000000000dEaD,
                block.timestamp
            );
        }      
    
    }

    receive() external payable { }

}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"uint256","name":"initialSupply","type":"uint256"},{"internalType":"address","name":"reflectionToken","type":"address"},{"internalType":"address","name":"routerAddress","type":"address"},{"internalType":"address","name":"initialHldAdmin","type":"address"},{"internalType":"address","name":"initialHldBurner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"initialReflectionFee","type":"uint256"},{"internalType":"uint256","name":"initialReflectionFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"initialLpFee","type":"uint256"},{"internalType":"uint256","name":"initialLpFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"initialDevFee","type":"uint256"},{"internalType":"uint256","name":"initialDevFeeOnSell","type":"uint256"}],"name":"changeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"changeRestrictWhales","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enableSwapBack","type":"bool"},{"internalType":"uint256","name":"newSwapBackLimit","type":"uint256"}],"name":"changeSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"changeTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"changeWalletLimit","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"notbot","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dividendDistributor","outputs":[{"internalType":"contract IDividendDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hldAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hldBurnerAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hldFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpFeeOnSell","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":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reflectionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reflectionFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeHldAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"restrictWhales","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newDevWallet","type":"address"}],"name":"setDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMinPeriod","type":"uint256"},{"internalType":"uint256","name":"newMinDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newOwnerWallet","type":"address"}],"name":"setOwnerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFeeIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"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":"newAdmin","type":"address"}],"name":"updateHldAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newhldBurnerAddress","type":"address"}],"name":"updateHldBurnerAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526207a120600155600780546001600160a01b031990811661dead17909155600880549091169055600a805460ff60a01b1916600160a01b1790556002600f55601c805461010160a81b61ffff60a81b199091161790553480156200006757600080fd5b50604051620039fa380380620039fa8339810160408190526200008a9162000659565b60408051808201909152600d8082526c29a424a72090282924a72a22a960991b6020909201918252620000c09160059162000588565b50604080518082019091526004808252630534849560e41b6020909201918252620000ee9160069162000588565b508460046000828254620001039190620006d6565b9091555050336000908152600260205260408120805487929062000129908490620006d6565b9091555060c890506200013e866002620006f1565b6200014a919062000713565b601e5560646200015c866003620006f1565b62000168919062000713565b601f55610fa06200017b866005620006f1565b62000187919062000713565b6020908155601880546001600160a01b0319166001600160a01b0386169081179091556040805163c45a015560e01b81529051919263c45a0155926004808401938290030181865afa158015620001e2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000208919062000736565b6001600160a01b031663c9c65396601860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200026a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000290919062000736565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015620002dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000303919062000736565b601980546001600160a01b0319166001600160a01b0392831617905530600081815260036020908152604080832060185490951683529390528290206000199055905184918691620003559062000617565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562000392573d6000803e3d6000fd5b50600080546001600160a01b03199081166001600160a01b03938416178255601a80543392168217815530808452600b60209081526040808620805460ff1990811660019081179092558554891688528288208054821683179055958752600c8352818720805487168217905560198054891688528288208054881683179055945488168752818720805487168217905560078054891688528288208054881683179055600880548a1689528389208054891684179055955489168852600d845282882080548816831790559387528187208054871682179055925487168652808620805486168417905592549095168452922080549091169091179055600660108190556002601181905560046012819055601383905560148290556015819055600f54620004ed949093620004d9939092849290919062000573811b620011b317901c565b6200057360201b620011b31790919060201c565b6016819055506200051f600f54620004d9601354620004d96014546015546200057360201b620011b31790919060201c565b601755601b8054336001600160a01b03199182168117909255601c805482169092179091556009805482166001600160a01b03938416179055600a8054909116929091169190911790555062000790915050565b6000620005818284620006d6565b9392505050565b828054620005969062000754565b90600052602060002090601f016020900481019282620005ba576000855562000605565b82601f10620005d557805160ff191683800117855562000605565b8280016001018555821562000605579182015b8281111562000605578251825591602001919060010190620005e8565b506200061392915062000625565b5090565b610f188062002ae283390190565b5b8082111562000613576000815560010162000626565b80516001600160a01b03811681146200065457600080fd5b919050565b600080600080600060a086880312156200067257600080fd5b8551945062000684602087016200063c565b935062000694604087016200063c565b9250620006a4606087016200063c565b9150620006b4608087016200063c565b90509295509295909350565b634e487b7160e01b600052601160045260246000fd5b60008219821115620006ec57620006ec620006c0565b500190565b60008160001904831182151516156200070e576200070e620006c0565b500290565b6000826200073157634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200074957600080fd5b62000581826200063c565b600181811c908216806200076957607f821691505b6020821081036200078a57634e487b7160e01b600052602260045260246000fd5b50919050565b61234280620007a06000396000f3fe6080604052600436106103395760003560e01c806383ad7994116101ab578063bf56b371116100f7578063dd62ed3e11610095578063ede1588f1161006f578063ede1588f14610981578063f7c72205146109a1578063f887ea40146109c1578063fabe6283146109e157600080fd5b8063dd62ed3e14610905578063e5d851081461094b578063e66b1d1e1461096157600080fd5b8063cb29813c116100d1578063cb29813c1461088e578063cc6badb3146108ae578063d4fb9a01146108c4578063d920334e146108e557600080fd5b8063bf56b37114610842578063c45a015514610858578063ca987b0e1461087857600080fd5b8063a3e6761011610164578063a9059cbb1161013e578063a9059cbb146107c2578063b515566a146107e2578063bad3ea6a14610802578063bb542ef01461082257600080fd5b8063a3e6761014610762578063a457c2d714610782578063a8aa1b31146107a257600080fd5b806383ad7994146106b15780638b42507f146106c75780638ea5220f146106f75780639502c4261461071757806395d89b411461072d578063a3a2e89e1461074257600080fd5b80633f4218e011610285578063704ce43e116102235780637c0ff205116101fd5780637c0ff2051461064f5780637d1db4a5146106655780637db1342c1461067b578063807c2d9c1461069b57600080fd5b8063704ce43e146105cb57806370a08231146105e1578063774b58471461061757600080fd5b806344de2e4c1161025f57806344de2e4c1461055e5780634a74bb021461057f57806366b5d882146105a05780636827e764146105b557600080fd5b80633f4218e0146104de5780634355855a1461050e57806343d49dda1461053e57600080fd5b806323b872dd116102f25780632d48e896116102cc5780632d48e89614610462578063313ce56714610482578063395093511461049e5780633dab5269146104be57600080fd5b806323b872dd1461040d578063273123b71461042d5780632b112e491461044d57600080fd5b80630445b6671461034557806306fdde031461036e578063095ea7b31461039057806318160ddd146103c05780631df4ccfc146103d55780631f53ac02146103eb57600080fd5b3661034057005b600080fd5b34801561035157600080fd5b5061035b60205481565b6040519081526020015b60405180910390f35b34801561037a57600080fd5b50610383610a01565b6040516103659190611dd4565b34801561039c57600080fd5b506103b06103ab366004611e51565b610a93565b6040519015158152602001610365565b3480156103cc57600080fd5b5060045461035b565b3480156103e157600080fd5b5061035b60165481565b3480156103f757600080fd5b5061040b610406366004611e7d565b610aab565b005b34801561041957600080fd5b506103b0610428366004611e9a565b610b00565b34801561043957600080fd5b5061040b610448366004611e7d565b610b27565b34801561045957600080fd5b5061035b610b72565b34801561046e57600080fd5b5061040b61047d366004611edb565b610bc4565b34801561048e57600080fd5b5060405160098152602001610365565b3480156104aa57600080fd5b506103b06104b9366004611e51565b610c57565b3480156104ca57600080fd5b5061040b6104d9366004611f0d565b610c96565b3480156104ea57600080fd5b506103b06104f9366004611e7d565b600b6020526000908152604090205460ff1681565b34801561051a57600080fd5b506103b0610529366004611e7d565b600d6020526000908152604090205460ff1681565b34801561054a57600080fd5b5061040b610559366004611e7d565b610ce2565b34801561056a57600080fd5b50600a546103b090600160a01b900460ff1681565b34801561058b57600080fd5b50601c546103b090600160a81b900460ff1681565b3480156105ac57600080fd5b5061040b610d2e565b3480156105c157600080fd5b5061035b60125481565b3480156105d757600080fd5b5061035b60115481565b3480156105ed57600080fd5b5061035b6105fc366004611e7d565b6001600160a01b031660009081526002602052604090205490565b34801561062357600080fd5b50600954610637906001600160a01b031681565b6040516001600160a01b039091168152602001610365565b34801561065b57600080fd5b5061035b60145481565b34801561067157600080fd5b5061035b601e5481565b34801561068757600080fd5b5061040b610696366004611f29565b610d6a565b3480156106a757600080fd5b5061035b601f5481565b3480156106bd57600080fd5b5061035b60105481565b3480156106d357600080fd5b506103b06106e2366004611e7d565b600c6020526000908152604090205460ff1681565b34801561070357600080fd5b50601c54610637906001600160a01b031681565b34801561072357600080fd5b5061035b60155481565b34801561073957600080fd5b50610383610d99565b34801561074e57600080fd5b5061040b61075d366004611f42565b610da8565b34801561076e57600080fd5b50601b54610637906001600160a01b031681565b34801561078e57600080fd5b506103b061079d366004611e51565b610dfd565b3480156107ae57600080fd5b50601954610637906001600160a01b031681565b3480156107ce57600080fd5b506103b06107dd366004611e51565b610e9a565b3480156107ee57600080fd5b5061040b6107fd366004611f8d565b610ea8565b34801561080e57600080fd5b50600054610637906001600160a01b031681565b34801561082e57600080fd5b5061040b61083d366004611e7d565b610f3e565b34801561084e57600080fd5b5061035b600e5481565b34801561086457600080fd5b50601a54610637906001600160a01b031681565b34801561088457600080fd5b5061035b60175481565b34801561089a57600080fd5b5061040b6108a9366004612052565b610f8a565b3480156108ba57600080fd5b5061035b60135481565b3480156108d057600080fd5b50601c546103b090600160b01b900460ff1681565b3480156108f157600080fd5b5061040b610900366004611f29565b61109b565b34801561091157600080fd5b5061035b610920366004612095565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561095757600080fd5b5061035b600f5481565b34801561096d57600080fd5b5061040b61097c3660046120ce565b6110ca565b34801561098d57600080fd5b50600a54610637906001600160a01b031681565b3480156109ad57600080fd5b5061040b6109bc366004611e7d565b611112565b3480156109cd57600080fd5b50601854610637906001600160a01b031681565b3480156109ed57600080fd5b5061040b6109fc366004611f42565b61115e565b606060058054610a10906120e9565b80601f0160208091040260200160405190810160405280929190818152602001828054610a3c906120e9565b8015610a895780601f10610a5e57610100808354040283529160200191610a89565b820191906000526020600020905b815481529060010190602001808311610a6c57829003601f168201915b5050505050905090565b600033610aa18185856111bf565b5060019392505050565b601b546001600160a01b03163314610ade5760405162461bcd60e51b8152600401610ad590612123565b60405180910390fd5b601c80546001600160a01b0319166001600160a01b0392909216919091179055565b600033610b0e8582856112e3565b610b19858585611375565b5060019150505b9392505050565b601b546001600160a01b03163314610b515760405162461bcd60e51b8152600401610ad590612123565b6001600160a01b03166000908152601d60205260409020805460ff19169055565b6008546001600160a01b0316600090815260026020526040812054610bbf906007546001600160a01b0316600090815260026020526040902054610bb99060045490611808565b90611808565b905090565b601b546001600160a01b03163314610bee5760405162461bcd60e51b8152600401610ad590612123565b6000546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e89690604401600060405180830381600087803b158015610c3b57600080fd5b505af1158015610c4f573d6000803e3d6000fd5b505050505050565b3360008181526003602090815260408083206001600160a01b0387168452909152812054909190610aa19082908690610c9190879061216e565b6111bf565b601b546001600160a01b03163314610cc05760405162461bcd60e51b8152600401610ad590612123565b601c8054921515600160a81b0260ff60a81b1990931692909217909155602055565b600a546001600160a01b03163314610d0c5760405162461bcd60e51b8152600401610ad590612186565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b601b546001600160a01b03163314610d585760405162461bcd60e51b8152600401610ad590612123565b600a80546001600160a01b0319169055565b601b546001600160a01b03163314610d945760405162461bcd60e51b8152600401610ad590612123565b601f55565b606060068054610a10906120e9565b601b546001600160a01b03163314610dd25760405162461bcd60e51b8152600401610ad590612123565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b3360008181526003602090815260408083206001600160a01b038716845290915281205490919083811015610e825760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610ad5565b610e8f82868684036111bf565b506001949350505050565b600033610e8f818585611375565b600a546001600160a01b03163314610ed25760405162461bcd60e51b8152600401610ad590612186565b60005b8151811015610f3a576001601d6000848481518110610ef657610ef66121c9565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610f32816121df565b915050610ed5565b5050565b601b546001600160a01b03163314610f685760405162461bcd60e51b8152600401610ad590612123565b601b80546001600160a01b0319166001600160a01b0392909216919091179055565b601b546001600160a01b03163314610fb45760405162461bcd60e51b8152600401610ad590612123565b601086905560118490556012829055601385905560148390556015819055600f54610feb90610fe5888186896111b3565b906111b3565b601681905550611014600f54610fe5601354610fe56014546015546111b390919063ffffffff16565b601755601654600f10156110595760405162461bcd60e51b815260206004820152600c60248201526b546f6f20686967682066656560a01b6044820152606401610ad5565b600f6017541115610c4f5760405162461bcd60e51b815260206004820152600c60248201526b546f6f20686967682066656560a01b6044820152606401610ad5565b601b546001600160a01b031633146110c55760405162461bcd60e51b8152600401610ad590612123565b601e55565b601b546001600160a01b031633146110f45760405162461bcd60e51b8152600401610ad590612123565b600a8054911515600160a01b0260ff60a01b19909216919091179055565b600a546001600160a01b0316331461113c5760405162461bcd60e51b8152600401610ad590612186565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b601b546001600160a01b031633146111885760405162461bcd60e51b8152600401610ad590612123565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6000610b20828461216e565b6001600160a01b0383166112215760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ad5565b6001600160a01b0382166112825760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ad5565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03838116600090815260036020908152604080832093861683529290522054600019811461136f57818110156113625760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610ad5565b61136f84848484036111bf565b50505050565b6001600160a01b0383166000908152601d602052604081205460ff161580156113b757506001600160a01b0383166000908152601d602052604090205460ff16155b6113c057600080fd5b601c54600160a01b900460ff16156113e4576113dd848484611814565b9050610b20565b601e548211158061140d57506001600160a01b0384166000908152600c602052604090205460ff165b61143e5760405162461bcd60e51b81526020600482015260026024820152610e8f60f31b6044820152606401610ad5565b6001600160a01b0383166000908152600c602052604090205460ff161580156114705750600a54600160a01b900460ff165b156114d257601f546001600160a01b03841660009081526002602052604090205461149b90846111b3565b11156114d25760405162461bcd60e51b81526020600482015260066024820152651dd85b1b195d60d21b6044820152606401610ad5565b6019546001600160a01b031633148015906114f75750601c54600160a01b900460ff16155b801561150c5750601c54600160a81b900460ff165b801561152b575060208054306000908152600290925260409091205410155b15611538576115386118fa565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03871660009081526002909152919091205461158a918490611ccd565b6001600160a01b038516600090815260026020908152604080832093909355600b90529081205460ff161580156115da57506001600160a01b0384166000908152600b602052604090205460ff16155b6115e457826115ef565b6115ef858585611cf9565b6001600160a01b03851660009081526002602052604090205490915061161590826111b3565b6001600160a01b038086166000908152600260209081526040808320949094559188168152600d909152205460ff166116ba57600080546001600160a01b038781168084526002602052604093849020549351630a5b654b60e11b81526004810191909152602481019390935216906314b6ca9690604401600060405180830381600087803b1580156116a757600080fd5b505af19250505080156116b8575060015b505b6001600160a01b0384166000908152600d602052604090205460ff1661174c57600080546001600160a01b038681168084526002602052604093849020549351630a5b654b60e11b81526004810191909152602481019390935216906314b6ca9690604401600060405180830381600087803b15801561173957600080fd5b505af192505050801561174a575060015b505b6000546001546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c479916117849160040190815260200190565b600060405180830381600087803b15801561179e57600080fd5b505af19250505080156117af575060015b50836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516117f591815260200190565b60405180910390a3506001949350505050565b6000610b2082846121f8565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600290915291822054611865918490611ccd565b6001600160a01b03808616600090815260026020526040808220939093559085168152205461189490836111b3565b6001600160a01b0380851660008181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906118e89086815260200190565b60405180910390a35060019392505050565b601c805460ff60a01b1916600160a01b17905530600090815260026020819052604082205460165460115491939261194192909161193b9182908790611dbc565b90611dc8565b9050600061194f8383611808565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110611989576119896121c9565b6001600160a01b03928316602091820292909201810191909152601854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156119e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a06919061220f565b81600181518110611a1957611a196121c9565b6001600160a01b03928316602091820292909201015260185460405163791ac94760e01b815291169063791ac94790611a5f90859060009086903090429060040161222c565b600060405180830381600087803b158015611a7957600080fd5b505af1158015611a8d573d6000803e3d6000fd5b5050505060004790506000611ab360165461193b60125485611dbc90919063ffffffff16565b90506000611ad260165461193b600f5486611dbc90919063ffffffff16565b90506000611af6600261193b60165461193b60115489611dbc90919063ffffffff16565b90506000611b0a82610bb985818989611808565b90508415611bb757600960009054906101000a90046001600160a01b03166001600160a01b0316630c50f89d846040518263ffffffff1660e01b81526004016000604051808303818588803b158015611b6257600080fd5b505af1158015611b76573d6000803e3d6000fd5b5050601c546040516001600160a01b03909116935087156108fc0292508791506000818181858888f19350505050158015611bb5573d6000803e3d6000fd5b505b60008054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015611c0557600080fd5b505af193505050508015611c17575060015b508715611cb55760185460405163f305d71960e01b8152306004820152602481018a9052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990849060c40160606040518083038185885af1158015611c8c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611cb1919061229d565b5050505b5050601c805460ff60a01b1916905550505050505050565b60008184841115611cf15760405162461bcd60e51b8152600401610ad59190611dd4565b505050900390565b60195460009081906001600160a01b03858116911614611d1b57601654611d1f565b6017545b90506000611d32606461193b8685611dbc565b30600090815260026020526040902054909150611d4f90826111b3565b30600081815260026020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611da09085815260200190565b60405180910390a3611db28482611808565b9695505050505050565b6000610b2082846122cb565b6000610b2082846122ea565b600060208083528351808285015260005b81811015611e0157858101830151858201604001528201611de5565b81811115611e13576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114611e3e57600080fd5b50565b8035611e4c81611e29565b919050565b60008060408385031215611e6457600080fd5b8235611e6f81611e29565b946020939093013593505050565b600060208284031215611e8f57600080fd5b8135610b2081611e29565b600080600060608486031215611eaf57600080fd5b8335611eba81611e29565b92506020840135611eca81611e29565b929592945050506040919091013590565b60008060408385031215611eee57600080fd5b50508035926020909101359150565b80358015158114611e4c57600080fd5b60008060408385031215611f2057600080fd5b611e6f83611efd565b600060208284031215611f3b57600080fd5b5035919050565b60008060408385031215611f5557600080fd5b8235611f6081611e29565b9150611f6e60208401611efd565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215611fa057600080fd5b823567ffffffffffffffff80821115611fb857600080fd5b818501915085601f830112611fcc57600080fd5b813581811115611fde57611fde611f77565b8060051b604051601f19603f8301168101818110858211171561200357612003611f77565b60405291825284820192508381018501918883111561202157600080fd5b938501935b828510156120465761203785611e41565b84529385019392850192612026565b98975050505050505050565b60008060008060008060c0878903121561206b57600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b600080604083850312156120a857600080fd5b82356120b381611e29565b915060208301356120c381611e29565b809150509250929050565b6000602082840312156120e057600080fd5b610b2082611efd565b600181811c908216806120fd57607f821691505b60208210810361211d57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000821982111561218157612181612158565b500190565b60208082526023908201527f4f776e61626c653a2063616c6c6572206973206e6f742074686520686c64416460408201526236b4b760e91b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b6000600182016121f1576121f1612158565b5060010190565b60008282101561220a5761220a612158565b500390565b60006020828403121561222157600080fd5b8151610b2081611e29565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561227c5784516001600160a01b031683529383019391830191600101612257565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156122b257600080fd5b8351925060208401519150604084015190509250925092565b60008160001904831182151516156122e5576122e5612158565b500290565b60008261230757634e487b7160e01b600052601260045260246000fd5b50049056fea264697066735822122092d79a8658206747feb9cf6f314092bfe60677439a356973c5703ce968665e3864736f6c634300080d003360806040526ec097ce7bc90715b34b9f1000000000600b55610708600c55670de0b6b3a7640000600d5534801561003557600080fd5b50604051610f18380380610f18833981016040819052610054916100b2565b600180546001600160a01b039485166001600160a01b0319918216179091556002805493851693821693909317909255600080549190931691161790556100f5565b80516001600160a01b03811681146100ad57600080fd5b919050565b6000806000606084860312156100c757600080fd5b6100d084610096565b92506100de60208501610096565b91506100ec60408501610096565b90509250925092565b610e14806101046000396000f3fe6080604052600436106100e85760003560e01c8063ce7c2ac21161008a578063f0fc6bca11610059578063f0fc6bca14610245578063f1e9f1e51461025a578063ffb2c47914610292578063ffd49c84146102b257600080fd5b8063ce7c2ac2146101ba578063d0e30db014610211578063e2d2e21914610219578063efca2eed1461022f57600080fd5b80632d48e896116100c65780632d48e896146101585780633a98ef39146101785780634fab0ae81461018e578063997664d7146101a457600080fd5b806311ce023d146100ed57806314b6ca961461011657806328fd319814610138575b600080fd5b3480156100f957600080fd5b50610103600b5481565b6040519081526020015b60405180910390f35b34801561012257600080fd5b50610136610131366004610bcd565b6102c8565b005b34801561014457600080fd5b50610103610153366004610bf9565b610440565b34801561016457600080fd5b50610136610173366004610c16565b6104cb565b34801561018457600080fd5b5061010360075481565b34801561019a57600080fd5b50610103600d5481565b3480156101b057600080fd5b5061010360085481565b3480156101c657600080fd5b506101f66101d5366004610bf9565b60066020526000908152604090208054600182015460029092015490919083565b6040805193845260208401929092529082015260600161010d565b6101366104ed565b34801561022557600080fd5b50610103600a5481565b34801561023b57600080fd5b5061010360095481565b34801561025157600080fd5b5061013661077d565b34801561026657600080fd5b5060025461027a906001600160a01b031681565b6040516001600160a01b03909116815260200161010d565b34801561029e57600080fd5b506101366102ad366004610c38565b6107e1565b3480156102be57600080fd5b50610103600c5481565b6000546001600160a01b031633146102df57600080fd5b6001600160a01b0382166000908152600660205260409020541561030657610306826108e6565b60008111801561032c57506001600160a01b038216600090815260066020526040902054155b1561039257600380546001600160a01b0384166000818152600460205260408120839055600183018455929092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b03191690911790556103c5565b801580156103b757506001600160a01b03821660009081526006602052604090205415155b156103c5576103c582610a04565b6001600160a01b0382166000908152600660205260409020546007546103f69183916103f091610b19565b90610b2c565b6007556001600160a01b038216600090815260066020526040902081905561041d81610b38565b6001600160a01b0390921660009081526006602052604090206001019190915550565b6001600160a01b038116600090815260066020526040812054810361046757506000919050565b6001600160a01b03821660009081526006602052604081205461048990610b38565b6001600160a01b0384166000908152600660205260409020600101549091508082116104b9575060009392505050565b6104c38282610b19565b949350505050565b6000546001600160a01b031633146104e257600080fd5b600c91909155600d55565b6000546001600160a01b0316331461050457600080fd5b6002546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa15801561054d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105719190610c51565b60408051600280825260608201835292935060009290916020830190803683375050600154604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa1580156105e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106049190610c6a565b8160008151811061061757610617610c87565b6001600160a01b03928316602091820292909201015260025482519116908290600190811061064857610648610c87565b6001600160a01b03928316602091820292909201015260015460405163b6f9de9560e01b815291169063b6f9de9590349061068e90600090869030904290600401610c9d565b6000604051808303818588803b1580156106a757600080fd5b505af11580156106bb573d6000803e3d6000fd5b50506002546040516370a0823160e01b81523060048201526000945061073b93508692506001600160a01b03909116906370a0823190602401602060405180830381865afa158015610711573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107359190610c51565b90610b19565b60085490915061074b9082610b2c565b600855600754600b546107759161076c916107669085610b5b565b90610b67565b600a5490610b2c565b600a55505050565b61078633610b73565b6107d65760405162461bcd60e51b815260206004820152601760248201527f546f6f20736f6f6e2e204e65656420746f207761697421000000000000000000604482015260640160405180910390fd5b6107df336108e6565b565b6000546001600160a01b031633146107f857600080fd5b6003546000819003610808575050565b60008060005a90505b848210801561081f57508383105b156108de5783600e5410610833576000600e555b6108656003600e548154811061084b5761084b610c87565b6000918252602090912001546001600160a01b0316610b73565b1561089c5761089c6003600e548154811061088257610882610c87565b6000918252602090912001546001600160a01b03166108e6565b6108b16108aa5a8390610b19565b8390610b2c565b91505a600e805491925060006108c683610d1d565b919050555082806108d690610d1d565b935050610811565b505050505b50565b6001600160a01b03811660009081526006602052604081205490036109085750565b600061091382610440565b90508015610a00576009546109289082610b2c565b60095560025460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af115801561097e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a29190610d36565b506001600160a01b038216600090815260056020908152604080832042905560069091529020600201546109d69082610b2c565b6001600160a01b038316600090815260066020526040902060028101919091555461041d90610b38565b5050565b60038054610a1490600190610d58565b81548110610a2457610a24610c87565b60009182526020808320909101546001600160a01b0384811684526004909252604090922054600380549290931692918110610a6257610a62610c87565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260049182905260408120546003805491939291610aae90600190610d58565b81548110610abe57610abe610c87565b60009182526020808320909101546001600160a01b031683528201929092526040019020556003805480610af457610af4610d6f565b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000610b258284610d58565b9392505050565b6000610b258284610d85565b6000610b55600b54610766600a5485610b5b90919063ffffffff16565b92915050565b6000610b258284610d9d565b6000610b258284610dbc565b600c546001600160a01b03821660009081526005602052604081205490914291610b9d9190610d85565b108015610b555750600d54610bb183610440565b1192915050565b6001600160a01b03811681146108e357600080fd5b60008060408385031215610be057600080fd5b8235610beb81610bb8565b946020939093013593505050565b600060208284031215610c0b57600080fd5b8135610b2581610bb8565b60008060408385031215610c2957600080fd5b50508035926020909101359150565b600060208284031215610c4a57600080fd5b5035919050565b600060208284031215610c6357600080fd5b5051919050565b600060208284031215610c7c57600080fd5b8151610b2581610bb8565b634e487b7160e01b600052603260045260246000fd5b600060808201868352602060808185015281875180845260a086019150828901935060005b81811015610ce75784516001600160a01b031683529383019391830191600101610cc2565b50506001600160a01b039690961660408501525050506060015292915050565b634e487b7160e01b600052601160045260246000fd5b600060018201610d2f57610d2f610d07565b5060010190565b600060208284031215610d4857600080fd5b81518015158114610b2557600080fd5b600082821015610d6a57610d6a610d07565b500390565b634e487b7160e01b600052603160045260246000fd5b60008219821115610d9857610d98610d07565b500190565b6000816000190483118215151615610db757610db7610d07565b500290565b600082610dd957634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212209286b1c1279dd3c6709acbc2513cca36a7b2f4e43b4a41127fbd4d7fcdfe84f064736f6c634300080d003300000000000000000000000000000000000000000000043c33c1937564800000000000000000000000000000243cacb4d5ff6814ad668c3e225246efa886ad5a0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000c46da8ea0e02c297aeff9446df4b2a6c77b99e350000000000000000000000003b650605becadd965067005326ab085f9ff0c547

Deployed Bytecode

0x6080604052600436106103395760003560e01c806383ad7994116101ab578063bf56b371116100f7578063dd62ed3e11610095578063ede1588f1161006f578063ede1588f14610981578063f7c72205146109a1578063f887ea40146109c1578063fabe6283146109e157600080fd5b8063dd62ed3e14610905578063e5d851081461094b578063e66b1d1e1461096157600080fd5b8063cb29813c116100d1578063cb29813c1461088e578063cc6badb3146108ae578063d4fb9a01146108c4578063d920334e146108e557600080fd5b8063bf56b37114610842578063c45a015514610858578063ca987b0e1461087857600080fd5b8063a3e6761011610164578063a9059cbb1161013e578063a9059cbb146107c2578063b515566a146107e2578063bad3ea6a14610802578063bb542ef01461082257600080fd5b8063a3e6761014610762578063a457c2d714610782578063a8aa1b31146107a257600080fd5b806383ad7994146106b15780638b42507f146106c75780638ea5220f146106f75780639502c4261461071757806395d89b411461072d578063a3a2e89e1461074257600080fd5b80633f4218e011610285578063704ce43e116102235780637c0ff205116101fd5780637c0ff2051461064f5780637d1db4a5146106655780637db1342c1461067b578063807c2d9c1461069b57600080fd5b8063704ce43e146105cb57806370a08231146105e1578063774b58471461061757600080fd5b806344de2e4c1161025f57806344de2e4c1461055e5780634a74bb021461057f57806366b5d882146105a05780636827e764146105b557600080fd5b80633f4218e0146104de5780634355855a1461050e57806343d49dda1461053e57600080fd5b806323b872dd116102f25780632d48e896116102cc5780632d48e89614610462578063313ce56714610482578063395093511461049e5780633dab5269146104be57600080fd5b806323b872dd1461040d578063273123b71461042d5780632b112e491461044d57600080fd5b80630445b6671461034557806306fdde031461036e578063095ea7b31461039057806318160ddd146103c05780631df4ccfc146103d55780631f53ac02146103eb57600080fd5b3661034057005b600080fd5b34801561035157600080fd5b5061035b60205481565b6040519081526020015b60405180910390f35b34801561037a57600080fd5b50610383610a01565b6040516103659190611dd4565b34801561039c57600080fd5b506103b06103ab366004611e51565b610a93565b6040519015158152602001610365565b3480156103cc57600080fd5b5060045461035b565b3480156103e157600080fd5b5061035b60165481565b3480156103f757600080fd5b5061040b610406366004611e7d565b610aab565b005b34801561041957600080fd5b506103b0610428366004611e9a565b610b00565b34801561043957600080fd5b5061040b610448366004611e7d565b610b27565b34801561045957600080fd5b5061035b610b72565b34801561046e57600080fd5b5061040b61047d366004611edb565b610bc4565b34801561048e57600080fd5b5060405160098152602001610365565b3480156104aa57600080fd5b506103b06104b9366004611e51565b610c57565b3480156104ca57600080fd5b5061040b6104d9366004611f0d565b610c96565b3480156104ea57600080fd5b506103b06104f9366004611e7d565b600b6020526000908152604090205460ff1681565b34801561051a57600080fd5b506103b0610529366004611e7d565b600d6020526000908152604090205460ff1681565b34801561054a57600080fd5b5061040b610559366004611e7d565b610ce2565b34801561056a57600080fd5b50600a546103b090600160a01b900460ff1681565b34801561058b57600080fd5b50601c546103b090600160a81b900460ff1681565b3480156105ac57600080fd5b5061040b610d2e565b3480156105c157600080fd5b5061035b60125481565b3480156105d757600080fd5b5061035b60115481565b3480156105ed57600080fd5b5061035b6105fc366004611e7d565b6001600160a01b031660009081526002602052604090205490565b34801561062357600080fd5b50600954610637906001600160a01b031681565b6040516001600160a01b039091168152602001610365565b34801561065b57600080fd5b5061035b60145481565b34801561067157600080fd5b5061035b601e5481565b34801561068757600080fd5b5061040b610696366004611f29565b610d6a565b3480156106a757600080fd5b5061035b601f5481565b3480156106bd57600080fd5b5061035b60105481565b3480156106d357600080fd5b506103b06106e2366004611e7d565b600c6020526000908152604090205460ff1681565b34801561070357600080fd5b50601c54610637906001600160a01b031681565b34801561072357600080fd5b5061035b60155481565b34801561073957600080fd5b50610383610d99565b34801561074e57600080fd5b5061040b61075d366004611f42565b610da8565b34801561076e57600080fd5b50601b54610637906001600160a01b031681565b34801561078e57600080fd5b506103b061079d366004611e51565b610dfd565b3480156107ae57600080fd5b50601954610637906001600160a01b031681565b3480156107ce57600080fd5b506103b06107dd366004611e51565b610e9a565b3480156107ee57600080fd5b5061040b6107fd366004611f8d565b610ea8565b34801561080e57600080fd5b50600054610637906001600160a01b031681565b34801561082e57600080fd5b5061040b61083d366004611e7d565b610f3e565b34801561084e57600080fd5b5061035b600e5481565b34801561086457600080fd5b50601a54610637906001600160a01b031681565b34801561088457600080fd5b5061035b60175481565b34801561089a57600080fd5b5061040b6108a9366004612052565b610f8a565b3480156108ba57600080fd5b5061035b60135481565b3480156108d057600080fd5b50601c546103b090600160b01b900460ff1681565b3480156108f157600080fd5b5061040b610900366004611f29565b61109b565b34801561091157600080fd5b5061035b610920366004612095565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561095757600080fd5b5061035b600f5481565b34801561096d57600080fd5b5061040b61097c3660046120ce565b6110ca565b34801561098d57600080fd5b50600a54610637906001600160a01b031681565b3480156109ad57600080fd5b5061040b6109bc366004611e7d565b611112565b3480156109cd57600080fd5b50601854610637906001600160a01b031681565b3480156109ed57600080fd5b5061040b6109fc366004611f42565b61115e565b606060058054610a10906120e9565b80601f0160208091040260200160405190810160405280929190818152602001828054610a3c906120e9565b8015610a895780601f10610a5e57610100808354040283529160200191610a89565b820191906000526020600020905b815481529060010190602001808311610a6c57829003601f168201915b5050505050905090565b600033610aa18185856111bf565b5060019392505050565b601b546001600160a01b03163314610ade5760405162461bcd60e51b8152600401610ad590612123565b60405180910390fd5b601c80546001600160a01b0319166001600160a01b0392909216919091179055565b600033610b0e8582856112e3565b610b19858585611375565b5060019150505b9392505050565b601b546001600160a01b03163314610b515760405162461bcd60e51b8152600401610ad590612123565b6001600160a01b03166000908152601d60205260409020805460ff19169055565b6008546001600160a01b0316600090815260026020526040812054610bbf906007546001600160a01b0316600090815260026020526040902054610bb99060045490611808565b90611808565b905090565b601b546001600160a01b03163314610bee5760405162461bcd60e51b8152600401610ad590612123565b6000546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e89690604401600060405180830381600087803b158015610c3b57600080fd5b505af1158015610c4f573d6000803e3d6000fd5b505050505050565b3360008181526003602090815260408083206001600160a01b0387168452909152812054909190610aa19082908690610c9190879061216e565b6111bf565b601b546001600160a01b03163314610cc05760405162461bcd60e51b8152600401610ad590612123565b601c8054921515600160a81b0260ff60a81b1990931692909217909155602055565b600a546001600160a01b03163314610d0c5760405162461bcd60e51b8152600401610ad590612186565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b601b546001600160a01b03163314610d585760405162461bcd60e51b8152600401610ad590612123565b600a80546001600160a01b0319169055565b601b546001600160a01b03163314610d945760405162461bcd60e51b8152600401610ad590612123565b601f55565b606060068054610a10906120e9565b601b546001600160a01b03163314610dd25760405162461bcd60e51b8152600401610ad590612123565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b3360008181526003602090815260408083206001600160a01b038716845290915281205490919083811015610e825760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610ad5565b610e8f82868684036111bf565b506001949350505050565b600033610e8f818585611375565b600a546001600160a01b03163314610ed25760405162461bcd60e51b8152600401610ad590612186565b60005b8151811015610f3a576001601d6000848481518110610ef657610ef66121c9565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610f32816121df565b915050610ed5565b5050565b601b546001600160a01b03163314610f685760405162461bcd60e51b8152600401610ad590612123565b601b80546001600160a01b0319166001600160a01b0392909216919091179055565b601b546001600160a01b03163314610fb45760405162461bcd60e51b8152600401610ad590612123565b601086905560118490556012829055601385905560148390556015819055600f54610feb90610fe5888186896111b3565b906111b3565b601681905550611014600f54610fe5601354610fe56014546015546111b390919063ffffffff16565b601755601654600f10156110595760405162461bcd60e51b815260206004820152600c60248201526b546f6f20686967682066656560a01b6044820152606401610ad5565b600f6017541115610c4f5760405162461bcd60e51b815260206004820152600c60248201526b546f6f20686967682066656560a01b6044820152606401610ad5565b601b546001600160a01b031633146110c55760405162461bcd60e51b8152600401610ad590612123565b601e55565b601b546001600160a01b031633146110f45760405162461bcd60e51b8152600401610ad590612123565b600a8054911515600160a01b0260ff60a01b19909216919091179055565b600a546001600160a01b0316331461113c5760405162461bcd60e51b8152600401610ad590612186565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b601b546001600160a01b031633146111885760405162461bcd60e51b8152600401610ad590612123565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6000610b20828461216e565b6001600160a01b0383166112215760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ad5565b6001600160a01b0382166112825760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ad5565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03838116600090815260036020908152604080832093861683529290522054600019811461136f57818110156113625760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610ad5565b61136f84848484036111bf565b50505050565b6001600160a01b0383166000908152601d602052604081205460ff161580156113b757506001600160a01b0383166000908152601d602052604090205460ff16155b6113c057600080fd5b601c54600160a01b900460ff16156113e4576113dd848484611814565b9050610b20565b601e548211158061140d57506001600160a01b0384166000908152600c602052604090205460ff165b61143e5760405162461bcd60e51b81526020600482015260026024820152610e8f60f31b6044820152606401610ad5565b6001600160a01b0383166000908152600c602052604090205460ff161580156114705750600a54600160a01b900460ff165b156114d257601f546001600160a01b03841660009081526002602052604090205461149b90846111b3565b11156114d25760405162461bcd60e51b81526020600482015260066024820152651dd85b1b195d60d21b6044820152606401610ad5565b6019546001600160a01b031633148015906114f75750601c54600160a01b900460ff16155b801561150c5750601c54600160a81b900460ff165b801561152b575060208054306000908152600290925260409091205410155b15611538576115386118fa565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03871660009081526002909152919091205461158a918490611ccd565b6001600160a01b038516600090815260026020908152604080832093909355600b90529081205460ff161580156115da57506001600160a01b0384166000908152600b602052604090205460ff16155b6115e457826115ef565b6115ef858585611cf9565b6001600160a01b03851660009081526002602052604090205490915061161590826111b3565b6001600160a01b038086166000908152600260209081526040808320949094559188168152600d909152205460ff166116ba57600080546001600160a01b038781168084526002602052604093849020549351630a5b654b60e11b81526004810191909152602481019390935216906314b6ca9690604401600060405180830381600087803b1580156116a757600080fd5b505af19250505080156116b8575060015b505b6001600160a01b0384166000908152600d602052604090205460ff1661174c57600080546001600160a01b038681168084526002602052604093849020549351630a5b654b60e11b81526004810191909152602481019390935216906314b6ca9690604401600060405180830381600087803b15801561173957600080fd5b505af192505050801561174a575060015b505b6000546001546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c479916117849160040190815260200190565b600060405180830381600087803b15801561179e57600080fd5b505af19250505080156117af575060015b50836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516117f591815260200190565b60405180910390a3506001949350505050565b6000610b2082846121f8565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600290915291822054611865918490611ccd565b6001600160a01b03808616600090815260026020526040808220939093559085168152205461189490836111b3565b6001600160a01b0380851660008181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906118e89086815260200190565b60405180910390a35060019392505050565b601c805460ff60a01b1916600160a01b17905530600090815260026020819052604082205460165460115491939261194192909161193b9182908790611dbc565b90611dc8565b9050600061194f8383611808565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110611989576119896121c9565b6001600160a01b03928316602091820292909201810191909152601854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156119e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a06919061220f565b81600181518110611a1957611a196121c9565b6001600160a01b03928316602091820292909201015260185460405163791ac94760e01b815291169063791ac94790611a5f90859060009086903090429060040161222c565b600060405180830381600087803b158015611a7957600080fd5b505af1158015611a8d573d6000803e3d6000fd5b5050505060004790506000611ab360165461193b60125485611dbc90919063ffffffff16565b90506000611ad260165461193b600f5486611dbc90919063ffffffff16565b90506000611af6600261193b60165461193b60115489611dbc90919063ffffffff16565b90506000611b0a82610bb985818989611808565b90508415611bb757600960009054906101000a90046001600160a01b03166001600160a01b0316630c50f89d846040518263ffffffff1660e01b81526004016000604051808303818588803b158015611b6257600080fd5b505af1158015611b76573d6000803e3d6000fd5b5050601c546040516001600160a01b03909116935087156108fc0292508791506000818181858888f19350505050158015611bb5573d6000803e3d6000fd5b505b60008054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015611c0557600080fd5b505af193505050508015611c17575060015b508715611cb55760185460405163f305d71960e01b8152306004820152602481018a9052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990849060c40160606040518083038185885af1158015611c8c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611cb1919061229d565b5050505b5050601c805460ff60a01b1916905550505050505050565b60008184841115611cf15760405162461bcd60e51b8152600401610ad59190611dd4565b505050900390565b60195460009081906001600160a01b03858116911614611d1b57601654611d1f565b6017545b90506000611d32606461193b8685611dbc565b30600090815260026020526040902054909150611d4f90826111b3565b30600081815260026020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611da09085815260200190565b60405180910390a3611db28482611808565b9695505050505050565b6000610b2082846122cb565b6000610b2082846122ea565b600060208083528351808285015260005b81811015611e0157858101830151858201604001528201611de5565b81811115611e13576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114611e3e57600080fd5b50565b8035611e4c81611e29565b919050565b60008060408385031215611e6457600080fd5b8235611e6f81611e29565b946020939093013593505050565b600060208284031215611e8f57600080fd5b8135610b2081611e29565b600080600060608486031215611eaf57600080fd5b8335611eba81611e29565b92506020840135611eca81611e29565b929592945050506040919091013590565b60008060408385031215611eee57600080fd5b50508035926020909101359150565b80358015158114611e4c57600080fd5b60008060408385031215611f2057600080fd5b611e6f83611efd565b600060208284031215611f3b57600080fd5b5035919050565b60008060408385031215611f5557600080fd5b8235611f6081611e29565b9150611f6e60208401611efd565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215611fa057600080fd5b823567ffffffffffffffff80821115611fb857600080fd5b818501915085601f830112611fcc57600080fd5b813581811115611fde57611fde611f77565b8060051b604051601f19603f8301168101818110858211171561200357612003611f77565b60405291825284820192508381018501918883111561202157600080fd5b938501935b828510156120465761203785611e41565b84529385019392850192612026565b98975050505050505050565b60008060008060008060c0878903121561206b57600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b600080604083850312156120a857600080fd5b82356120b381611e29565b915060208301356120c381611e29565b809150509250929050565b6000602082840312156120e057600080fd5b610b2082611efd565b600181811c908216806120fd57607f821691505b60208210810361211d57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000821982111561218157612181612158565b500190565b60208082526023908201527f4f776e61626c653a2063616c6c6572206973206e6f742074686520686c64416460408201526236b4b760e91b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b6000600182016121f1576121f1612158565b5060010190565b60008282101561220a5761220a612158565b500390565b60006020828403121561222157600080fd5b8151610b2081611e29565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561227c5784516001600160a01b031683529383019391830191600101612257565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156122b257600080fd5b8351925060208401519150604084015190509250925092565b60008160001904831182151516156122e5576122e5612158565b500290565b60008261230757634e487b7160e01b600052601260045260246000fd5b50049056fea264697066735822122092d79a8658206747feb9cf6f314092bfe60677439a356973c5703ce968665e3864736f6c634300080d0033

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

00000000000000000000000000000000000000000000043c33c1937564800000000000000000000000000000243cacb4d5ff6814ad668c3e225246efa886ad5a0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000c46da8ea0e02c297aeff9446df4b2a6c77b99e350000000000000000000000003b650605becadd965067005326ab085f9ff0c547

-----Decoded View---------------
Arg [0] : initialSupply (uint256): 20000000000000000000000
Arg [1] : reflectionToken (address): 0x243cACb4D5fF6814AD668C3e225246efA886AD5a
Arg [2] : routerAddress (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [3] : initialHldAdmin (address): 0xC46Da8ea0e02c297AEFf9446df4B2a6C77b99e35
Arg [4] : initialHldBurner (address): 0x3B650605BecAdD965067005326aB085F9FF0c547

-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000043c33c1937564800000
Arg [1] : 000000000000000000000000243cacb4d5ff6814ad668c3e225246efa886ad5a
Arg [2] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [3] : 000000000000000000000000c46da8ea0e02c297aeff9446df4b2a6c77b99e35
Arg [4] : 0000000000000000000000003b650605becadd965067005326ab085f9ff0c547


Deployed Bytecode Sourcemap

21553:17520:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23122:28;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;23122:28:0;;;;;;;;28385:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;30735:201::-;;;;;;;;;;-1:-1:-1;30735:201:0;;;;;:::i;:::-;;:::i;:::-;;;1558:14:1;;1551:22;1533:41;;1521:2;1506:18;30735:201:0;1393:187:1;29504:108:0;;;;;;;;;;-1:-1:-1;29592:12:0;;29504:108;;22651:23;;;;;;;;;;;;;;;;27382:123;;;;;;;;;;-1:-1:-1;27382:123:0;;;;;:::i;:::-;;:::i;:::-;;31526:295;;;;;;;;;;-1:-1:-1;31526:295:0;;;;;:::i;:::-;;:::i;28068:90::-;;;;;;;;;;-1:-1:-1;28068:90:0;;;;;:::i;:::-;;:::i;28173:142::-;;;;;;;;;;;;;:::i;27854:206::-;;;;;;;;;;-1:-1:-1;27854:206:0;;;;;:::i;:::-;;:::i;29347:92::-;;;;;;;;;;-1:-1:-1;29347:92:0;;29430:1;2953:36:1;;2941:2;2926:18;29347:92:0;2811:184:1;32230:240:0;;;;;;;;;;-1:-1:-1;32230:240:0;;;;;:::i;:::-;;:::i;27647:199::-;;;;;;;;;;-1:-1:-1;27647:199:0;;;;;:::i;:::-;;:::i;22219:44::-;;;;;;;;;;-1:-1:-1;22219:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;22325:49;;;;;;;;;;-1:-1:-1;22325:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;25372:113;;;;;;;;;;-1:-1:-1;25372:113:0;;;;;:::i;:::-;;:::i;22177:33::-;;;;;;;;;;-1:-1:-1;22177:33:0;;;;-1:-1:-1;;;22177:33:0;;;;;;22917:40;;;;;;;;;;-1:-1:-1;22917:40:0;;;;-1:-1:-1;;;22917:40:0;;;;;;26646:91;;;;;;;;;;;;;:::i;22511:21::-;;;;;;;;;;;;;;;;22484:20;;;;;;;;;;;;;;;;29675:127;;;;;;;;;;-1:-1:-1;29675:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;29776:18:0;29749:7;29776:18;;;:9;:18;;;;;;;29675:127;22099:39;;;;;;;;;;-1:-1:-1;22099:39:0;;;;-1:-1:-1;;;;;22099:39:0;;;;;;-1:-1:-1;;;;;3598:32:1;;;3580:51;;3568:2;3553:18;22099:39:0;3418:219:1;22582:26:0;;;;;;;;;;;;;;;;23056:27;;;;;;;;;;;;;;;;26855:111;;;;;;;;;;-1:-1:-1;26855:111:0;;;;;:::i;:::-;;:::i;23090:25::-;;;;;;;;;;;;;;;;22449:28;;;;;;;;;;;;;;;;22270:48;;;;;;;;;;-1:-1:-1;22270:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;22848:32;;;;;;;;;;-1:-1:-1;22848:32:0;;;;-1:-1:-1;;;;;22848:32:0;;;22615:27;;;;;;;;;;;;;;;;28604:104;;;;;;;;;;;;;:::i;27106:122::-;;;;;;;;;;-1:-1:-1;27106:122:0;;;;;:::i;:::-;;:::i;22816:25::-;;;;;;;;;;-1:-1:-1;22816:25:0;;;;-1:-1:-1;;;;;22816:25:0;;;32973:438;;;;;;;;;;-1:-1:-1;32973:438:0;;;;;:::i;:::-;;:::i;22761:19::-;;;;;;;;;;-1:-1:-1;22761:19:0;;;;-1:-1:-1;;;;;22761:19:0;;;30008:193;;;;;;;;;;-1:-1:-1;30008:193:0;;;;;:::i;:::-;;:::i;25669:169::-;;;;;;;;;;-1:-1:-1;25669:169:0;;;;;:::i;:::-;;:::i;21652:47::-;;;;;;;;;;-1:-1:-1;21652:47:0;;;;-1:-1:-1;;;;;21652:47:0;;;27513:121;;;;;;;;;;-1:-1:-1;27513:121:0;;;;;:::i;:::-;;:::i;22383:25::-;;;;;;;;;;;;;;;;22787:22;;;;;;;;;;-1:-1:-1;22787:22:0;;;;-1:-1:-1;;;;;22787:22:0;;;22681:32;;;;;;;;;;;;;;;;25871:766;;;;;;;;;;-1:-1:-1;25871:766:0;;;;;:::i;:::-;;:::i;22541:34::-;;;;;;;;;;;;;;;;22964:32;;;;;;;;;;-1:-1:-1;22964:32:0;;;;-1:-1:-1;;;22964:32:0;;;;;;26745:102;;;;;;;;;;-1:-1:-1;26745:102:0;;;;;:::i;:::-;;:::i;30264:151::-;;;;;;;;;;-1:-1:-1;30264:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;30380:18:0;;;30353:7;30380:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;30264:151;22415:25;;;;;;;;;;;;;;;;26974:120;;;;;;;;;;-1:-1:-1;26974:120:0;;;;;:::i;:::-;;:::i;22145:23::-;;;;;;;;;;-1:-1:-1;22145:23:0;;;;-1:-1:-1;;;;;22145:23:0;;;25493:160;;;;;;;;;;-1:-1:-1;25493:160:0;;;;;:::i;:::-;;:::i;22722:32::-;;;;;;;;;;-1:-1:-1;22722:32:0;;;;-1:-1:-1;;;;;22722:32:0;;;27236:136;;;;;;;;;;-1:-1:-1;27236:136:0;;;;;:::i;:::-;;:::i;28385:100::-;28439:13;28472:5;28465:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28385:100;:::o;30735:201::-;30818:4;4482:10;30874:32;4482:10;30890:7;30899:6;30874:8;:32::i;:::-;-1:-1:-1;30924:4:0;;30735:201;-1:-1:-1;;;30735:201:0:o;27382:123::-;25255:10;;-1:-1:-1;;;;;25255:10:0;4482;25255:26;25247:71;;;;-1:-1:-1;;;25247:71:0;;;;;;;:::i;:::-;;;;;;;;;27464:9:::1;:33:::0;;-1:-1:-1;;;;;;27464:33:0::1;-1:-1:-1::0;;;;;27464:33:0;;;::::1;::::0;;;::::1;::::0;;27382:123::o;31526:295::-;31657:4;4482:10;31715:38;31731:4;4482:10;31746:6;31715:15;:38::i;:::-;31764:27;31774:4;31780:2;31784:6;31764:9;:27::i;:::-;;31809:4;31802:11;;;31526:295;;;;;;:::o;28068:90::-;25255:10;;-1:-1:-1;;;;;25255:10:0;4482;25255:26;25247:71;;;;-1:-1:-1;;;25247:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;28130:12:0::1;28145:5;28130:12:::0;;;:4:::1;:12;::::0;;;;:20;;-1:-1:-1;;28130:20:0::1;::::0;;28068:90::o;28173:142::-;28301:4;;-1:-1:-1;;;;;28301:4:0;28226:7;29776:18;;;:9;:18;;;;;;28253:54;;28280:4;;-1:-1:-1;;;;;28280:4:0;29749:7;29776:18;;;:9;:18;;;;;;28253:33;;:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;28246:61;;28173:142;:::o;27854:206::-;25255:10;;-1:-1:-1;;;;;25255:10:0;4482;25255:26;25247:71;;;;-1:-1:-1;;;25247:71:0;;;;;;;:::i;:::-;27967:19:::1;::::0;:77:::1;::::0;-1:-1:-1;;;27967:77:0;;::::1;::::0;::::1;8109:25:1::0;;;8150:18;;;8143:34;;;-1:-1:-1;;;;;27967:19:0;;::::1;::::0;:43:::1;::::0;8082:18:1;;27967:77:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;27854:206:::0;;:::o;32230:240::-;4482:10;32318:4;32399:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;32399:27:0;;;;;;;;;;32318:4;;4482:10;32374:66;;4482:10;;32399:27;;:40;;32429:10;;32399:40;:::i;:::-;32374:8;:66::i;27647:199::-;25255:10;;-1:-1:-1;;;;;25255:10:0;4482;25255:26;25247:71;;;;-1:-1:-1;;;25247:71:0;;;;;;;:::i;:::-;27756:21:::1;:39:::0;;;::::1;;-1:-1:-1::0;;;27756:39:0::1;-1:-1:-1::0;;;;27756:39:0;;::::1;::::0;;;::::1;::::0;;;27806:13:::1;:32:::0;27647:199::o;25372:113::-;25123:8;;-1:-1:-1;;;;;25123:8:0;4482:10;25123:24;25115:72;;;;-1:-1:-1;;;25115:72:0;;;;;;;:::i;:::-;25458:8:::1;:19:::0;;-1:-1:-1;;;;;;25458:19:0::1;-1:-1:-1::0;;;;;25458:19:0;;;::::1;::::0;;;::::1;::::0;;25372:113::o;26646:91::-;25255:10;;-1:-1:-1;;;;;25255:10:0;4482;25255:26;25247:71;;;;-1:-1:-1;;;25247:71:0;;;;;;;:::i;:::-;26708:8:::1;:21:::0;;-1:-1:-1;;;;;;26708:21:0::1;::::0;;26646:91::o;26855:111::-;25255:10;;-1:-1:-1;;;;;25255:10:0;4482;25255:26;25247:71;;;;-1:-1:-1;;;25247:71:0;;;;;;;:::i;:::-;26936:10:::1;:22:::0;26855:111::o;28604:104::-;28660:13;28693:7;28686:14;;;;;:::i;27106:122::-;25255:10;;-1:-1:-1;;;;;25255:10:0;4482;25255:26;25247:71;;;;-1:-1:-1;;;25247:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27192:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;27192:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;27106:122::o;32973:438::-;4482:10;33066:4;33149:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;33149:27:0;;;;;;;;;;33066:4;;4482:10;33195:35;;;;33187:85;;;;-1:-1:-1;;;33187:85:0;;9059:2:1;33187:85:0;;;9041:21:1;9098:2;9078:18;;;9071:30;9137:34;9117:18;;;9110:62;-1:-1:-1;;;9188:18:1;;;9181:35;9233:19;;33187:85:0;8857:401:1;33187:85:0;33308:60;33317:5;33324:7;33352:15;33333:16;:34;33308:8;:60::i;:::-;-1:-1:-1;33399:4:0;;32973:438;-1:-1:-1;;;;32973:438:0:o;30008:193::-;30087:4;4482:10;30143:28;4482:10;30160:2;30164:6;30143:9;:28::i;25669:169::-;25123:8;;-1:-1:-1;;;;;25123:8:0;4482:10;25123:24;25115:72;;;;-1:-1:-1;;;25115:72:0;;;;;;;:::i;:::-;25748:6:::1;25743:88;25764:5;:12;25760:1;:16;25743:88;;;25815:4;25798;:14;25803:5;25809:1;25803:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;25798:14:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;25798:14:0;:21;;-1:-1:-1;;25798:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25778:3;::::1;::::0;::::1;:::i;:::-;;;;25743:88;;;;25669:169:::0;:::o;27513:121::-;25255:10;;-1:-1:-1;;;;;25255:10:0;4482;25255:26;25247:71;;;;-1:-1:-1;;;25247:71:0;;;;;;;:::i;:::-;27599:10:::1;:27:::0;;-1:-1:-1;;;;;;27599:27:0::1;-1:-1:-1::0;;;;;27599:27:0;;;::::1;::::0;;;::::1;::::0;;27513:121::o;25871:766::-;25255:10;;-1:-1:-1;;;;;25255:10:0;4482;25255:26;25247:71;;;;-1:-1:-1;;;25247:71:0;;;;;;;:::i;:::-;26100:13:::1;:36:::0;;;26147:5:::1;:20:::0;;;26178:6:::1;:22:::0;;;26213:19:::1;:48:::0;;;26272:11:::1;:32:::0;;;26315:12:::1;:34:::0;;;26414:6:::1;::::0;26373:48:::1;::::0;:36:::1;26116:20:::0;26373:36;26187:13;26155:12;26373:10:::1;:17::i;:::-;:21:::0;::::1;:36::i;:48::-;26362:8;:59;;;;26452:66;26511:6;;26452:54;26486:19;;26452:29;26469:11;;26452:12;;:16;;:29;;;;:::i;:66::-;26432:17;:86:::0;26539:8:::1;::::0;26551:2:::1;-1:-1:-1::0;26539:14:0::1;26531:39;;;::::0;-1:-1:-1;;;26531:39:0;;9737:2:1;26531:39:0::1;::::0;::::1;9719:21:1::0;9776:2;9756:18;;;9749:30;-1:-1:-1;;;9795:18:1;;;9788:42;9847:18;;26531:39:0::1;9535:336:1::0;26531:39:0::1;26610:2;26589:17;;:23;;26581:48;;;::::0;-1:-1:-1;;;26581:48:0;;9737:2:1;26581:48:0::1;::::0;::::1;9719:21:1::0;9776:2;9756:18;;;9749:30;-1:-1:-1;;;9795:18:1;;;9788:42;9847:18;;26581:48:0::1;9535:336:1::0;26745:102:0;25255:10;;-1:-1:-1;;;;;25255:10:0;4482;25255:26;25247:71;;;;-1:-1:-1;;;25247:71:0;;;;;;;:::i;:::-;26816:12:::1;:23:::0;26745:102::o;26974:120::-;25255:10;;-1:-1:-1;;;;;25255:10:0;4482;25255:26;25247:71;;;;-1:-1:-1;;;25247:71:0;;;;;;;:::i;:::-;27061:14:::1;:25:::0;;;::::1;;-1:-1:-1::0;;;27061:25:0::1;-1:-1:-1::0;;;;27061:25:0;;::::1;::::0;;;::::1;::::0;;26974:120::o;25493:160::-;25123:8;;-1:-1:-1;;;;;25123:8:0;4482:10;25123:24;25115:72;;;;-1:-1:-1;;;25115:72:0;;;;;;;:::i;:::-;25598:16:::1;:47:::0;;-1:-1:-1;;;;;;25598:47:0::1;-1:-1:-1::0;;;;;25598:47:0;;;::::1;::::0;;;::::1;::::0;;25493:160::o;27236:136::-;25255:10;;-1:-1:-1;;;;;25255:10:0;4482;25255:26;25247:71;;;;-1:-1:-1;;;25247:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27332:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;27332:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;27236:136::o;7478:98::-;7536:7;7563:5;7567:1;7563;:5;:::i;35881:380::-;-1:-1:-1;;;;;36017:19:0;;36009:68;;;;-1:-1:-1;;;36009:68:0;;10078:2:1;36009:68:0;;;10060:21:1;10117:2;10097:18;;;10090:30;10156:34;10136:18;;;10129:62;-1:-1:-1;;;10207:18:1;;;10200:34;10251:19;;36009:68:0;9876:400:1;36009:68:0;-1:-1:-1;;;;;36096:21:0;;36088:68;;;;-1:-1:-1;;;36088:68:0;;10483:2:1;36088:68:0;;;10465:21:1;10522:2;10502:18;;;10495:30;10561:34;10541:18;;;10534:62;-1:-1:-1;;;10612:18:1;;;10605:32;10654:19;;36088:68:0;10281:398:1;36088:68:0;-1:-1:-1;;;;;36169:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;36221:32;;160:25:1;;;36221:32:0;;133:18:1;36221:32:0;;;;;;;35881:380;;;:::o;36548:453::-;-1:-1:-1;;;;;30380:18:0;;;36683:24;30380:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;36750:37:0;;36746:248;;36832:6;36812:16;:26;;36804:68;;;;-1:-1:-1;;;36804:68:0;;10886:2:1;36804:68:0;;;10868:21:1;10925:2;10905:18;;;10898:30;10964:31;10944:18;;;10937:59;11013:18;;36804:68:0;10684:353:1;36804:68:0;36916:51;36925:5;36932:7;36960:6;36941:16;:25;36916:8;:51::i;:::-;36672:329;36548:453;;;:::o;33419:1393::-;-1:-1:-1;;;;;33543:12:0;;33507:4;33543:12;;;:4;:12;;;;;;;;33542:13;:33;;;;-1:-1:-1;;;;;;33560:15:0;;;;;;:4;:15;;;;;;;;33559:16;33542:33;33534:42;;;;;;33592:16;;-1:-1:-1;;;33592:16:0;;;;33589:73;;;33618:41;33633:6;33641:9;33652:6;33618:14;:41::i;:::-;33611:48;;;;33589:73;33692:12;;33682:6;:22;;:49;;;-1:-1:-1;;;;;;33708:23:0;;;;;;:15;:23;;;;;;;;33682:49;33674:64;;;;-1:-1:-1;;;33674:64:0;;11244:2:1;33674:64:0;;;11226:21:1;11283:1;11263:18;;;11256:29;-1:-1:-1;;;11301:18:1;;;11294:32;11343:18;;33674:64:0;11042:325:1;33674:64:0;-1:-1:-1;;;;;33755:26:0;;;;;;:15;:26;;;;;;;;33754:27;:45;;;;-1:-1:-1;33785:14:0;;-1:-1:-1;;;33785:14:0;;;;33754:45;33751:151;;;33869:10;;-1:-1:-1;;;;;33833:20:0;;;;;;:9;:20;;;;;;:32;;33858:6;33833:24;:32::i;:::-;:46;;33825:65;;;;-1:-1:-1;;;33825:65:0;;11574:2:1;33825:65:0;;;11556:21:1;11613:1;11593:18;;;11586:29;-1:-1:-1;;;11631:18:1;;;11624:36;11677:18;;33825:65:0;11372:329:1;33825:65:0;33931:4;;-1:-1:-1;;;;;33931:4:0;33917:10;:18;;;;:39;;-1:-1:-1;33940:16:0;;-1:-1:-1;;;33940:16:0;;;;33939:17;33917:39;:64;;;;-1:-1:-1;33960:21:0;;-1:-1:-1;;;33960:21:0;;;;33917:64;:109;;;;-1:-1:-1;34013:13:0;;;34003:4;33985:24;;;;:9;:24;;;;;;;;:41;;33917:109;33914:128;;;34029:10;:8;:10::i;:::-;34074:53;;;;;;;;;;;-1:-1:-1;;;34074:53:0;;;;;;;;-1:-1:-1;;;;;34074:17:0;;-1:-1:-1;34074:17:0;;;:9;:17;;;;;;;;:53;;34096:6;;34074:21;:53::i;:::-;-1:-1:-1;;;;;34054:17:0;;;;;;:9;:17;;;;;;;;:73;;;;34171:11;:19;;;;;;;;34170:20;:47;;;;-1:-1:-1;;;;;;34195:22:0;;;;;;:11;:22;;;;;;;;34194:23;34170:47;:93;;34257:6;34170:93;;;34220:34;34228:6;34236:9;34247:6;34220:7;:34::i;:::-;-1:-1:-1;;;;;34297:20:0;;;;;;:9;:20;;;;;;34148:115;;-1:-1:-1;34297:37:0;;34148:115;34297:24;:37::i;:::-;-1:-1:-1;;;;;34274:20:0;;;;;;;:9;:20;;;;;;;;:60;;;;34380:24;;;;;:16;:24;;;;;;;34376:127;;34425:19;;;-1:-1:-1;;;;;34462:17:0;;;;;;:9;:17;;;;;;;;34425:55;;-1:-1:-1;;;34425:55:0;;;;;11880:51:1;;;;11947:18;;;11940:34;;;;34425:19:0;;:28;;11853:18:1;;34425:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34421:71;;-1:-1:-1;;;;;34519:27:0;;;;;;:16;:27;;;;;;;;34515:137;;34567:19;;;-1:-1:-1;;;;;34607:20:0;;;;;;:9;:20;;;;;;;;34567:61;;-1:-1:-1;;;34567:61:0;;;;;11880:51:1;;;;11947:18;;;11940:34;;;;34567:19:0;;:28;;11853:18:1;;34567:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34563:77;;34668:19;;;34696:14;34668:43;;-1:-1:-1;;;;;;34668:43:0;;-1:-1:-1;;;;;34668:19:0;;;;:27;;:43;;;;160:25:1;;;148:2;133:18;;14:177;34668:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34664:59;34759:9;-1:-1:-1;;;;;34742:40:0;34751:6;-1:-1:-1;;;;;34742:40:0;;34770:11;34742:40;;;;160:25:1;;148:2;133:18;;14:177;34742:40:0;;;;;;;;-1:-1:-1;34800:4:0;;33419:1393;-1:-1:-1;;;;33419:1393:0:o;7859:98::-;7917:7;7944:5;7948:1;7944;:5;:::i;34824:330::-;34954:53;;;;;;;;;;;-1:-1:-1;;;34954:53:0;;;;;;;;-1:-1:-1;;;;;34954:17:0;;34917:4;34954:17;;;:9;:17;;;;;;;:53;;34976:6;;34954:21;:53::i;:::-;-1:-1:-1;;;;;34934:17:0;;;;;;;:9;:17;;;;;;:73;;;;35041:20;;;;;;;:32;;35066:6;35041:24;:32::i;:::-;-1:-1:-1;;;;;35018:20:0;;;;;;;:9;:20;;;;;;;:55;;;;35089:35;;;;;;;;;;35117:6;160:25:1;;148:2;133:18;;14:177;35089:35:0;;;;;;;;-1:-1:-1;35142:4:0;34824:330;;;;;:::o;37456:1574::-;24994:16;:23;;-1:-1:-1;;;;24994:23:0;-1:-1:-1;;;24994:23:0;;;37562:4:::1;24994:23:::0;37544:24;;;:9:::1;:24;::::0;;;;;;;37636:8:::1;::::0;37625:5:::1;::::0;37544:24;;24994:23;37605:47:::1;::::0;37544:9;;37605:40:::1;::::0;;;37544:24;;37605:19:::1;:26::i;:::-;:30:::0;::::1;:40::i;:47::-;37579:73:::0;-1:-1:-1;37663:20:0::1;37686:36;:15:::0;37579:73;37686:19:::1;:36::i;:::-;37759:16;::::0;;37773:1:::1;37759:16:::0;;;;;::::1;::::0;;37663:59;;-1:-1:-1;37735:21:0::1;::::0;37759:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;37759:16:0::1;37735:40;;37804:4;37786;37791:1;37786:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;37786:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;37830:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;37830:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;37786:7;;37830:13;;;;;:6;:13:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;37820:4;37825:1;37820:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;37820:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;37856:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;37856:188:0;;:6;::::1;::::0;:57:::1;::::0;:188:::1;::::0;37928:12;;37856:6:::1;::::0;37971:4;;37998::::1;::::0;38018:15:::1;::::0;37856:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;38057:17;38077:21;38057:41;;38109:18;38130:35;38156:8;;38130:21;38144:6;;38130:9;:13;;:21;;;;:::i;:35::-;38109:56;;38176:18;38197:35;38223:8;;38197:21;38211:6;;38197:9;:13;;:21;;;;:::i;:35::-;38176:56;;38245:26;38274:41;38313:1;38274:34;38299:8;;38274:20;38288:5;;38274:9;:13;;:20;;;;:::i;:41::-;38245:70:::0;-1:-1:-1;38326:27:0::1;38356:65;38245:70:::0;38356:41:::1;38386:10:::0;38356:41;:9;38370:10;38356:13:::1;:25::i;:65::-;38326:95:::0;-1:-1:-1;38439:13:0;;38436:155:::1;;38476:16;;;;;;;;;-1:-1:-1::0;;;;;38476:16:0::1;-1:-1:-1::0;;;;;38468:34:0::1;;38510:10;38468:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;38549:9:0::1;::::0;:30:::1;::::0;-1:-1:-1;;;;;38549:9:0;;::::1;::::0;-1:-1:-1;38549:30:0;::::1;;;::::0;-1:-1:-1;38568:10:0;;-1:-1:-1;38549:9:0::1;:30:::0;:9;:30;38568:10;38549:9;:30;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;38436:155;38615:19;::::0;::::1;;;;;;-1:-1:-1::0;;;;;38615:19:0::1;-1:-1:-1::0;;;;;38615:27:0::1;;38650:19;38615:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;38611:73:::0;38699:19;;38696:315:::1;;38734:6;::::0;:265:::1;::::0;-1:-1:-1;;;38734:265:0;;38810:4:::1;38734:265;::::0;::::1;13697:34:1::0;13747:18;;;13740:34;;;38734:6:0::1;13790:18:1::0;;;13783:34;;;13833:18;;;13826:34;38908:42:0::1;13876:19:1::0;;;13869:44;38969:15:0::1;13929:19:1::0;;;13922:35;-1:-1:-1;;;;;38734:6:0;;::::1;::::0;:22:::1;::::0;38764:18;;13631:19:1;;38734:265:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;38696:315;-1:-1:-1::0;;25040:16:0;:24;;-1:-1:-1;;;;25040:24:0;;;-1:-1:-1;;;;;;;37456:1574:0:o;9757:240::-;9877:7;9938:12;9930:6;;;;9922:29;;;;-1:-1:-1;;;9922:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;9973:5:0;;;9757:240::o;37009:439::-;37149:4;;37095:7;;;;-1:-1:-1;;;;;37149:17:0;;;:4;;:17;:48;;37189:8;;37149:48;;;37169:17;;37149:48;37125:72;-1:-1:-1;37208:17:0;37228:34;37258:3;37228:25;:6;37125:72;37228:10;:25::i;:34::-;37320:4;37302:24;;;;:9;:24;;;;;;37208:54;;-1:-1:-1;37302:39:0;;37208:54;37302:28;:39::i;:::-;37293:4;37275:24;;;;:9;:24;;;;;;;:66;;;;37357:42;;-1:-1:-1;;;;;37357:42:0;;;;;;;37389:9;160:25:1;;148:2;133:18;;14:177;37357:42:0;;;;;;;;37419:21;:6;37430:9;37419:10;:21::i;:::-;37412:28;37009:439;-1:-1:-1;;;;;;37009:439:0:o;8216:98::-;8274:7;8301:5;8305:1;8301;:5;:::i;8615:98::-;8673:7;8700:5;8704:1;8700;:5;:::i;196:597:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;634:6;631:1;628:13;625:91;;;704:1;699:2;690:6;679:9;675:22;671:31;664:42;625:91;-1:-1:-1;777:2:1;756:15;-1:-1:-1;;752:29:1;737:45;;;;784:2;733:54;;196:597;-1:-1:-1;;;196:597:1:o;798:131::-;-1:-1:-1;;;;;873:31:1;;863:42;;853:70;;919:1;916;909:12;853:70;798:131;:::o;934:134::-;1002:20;;1031:31;1002:20;1031:31;:::i;:::-;934:134;;;:::o;1073:315::-;1141:6;1149;1202:2;1190:9;1181:7;1177:23;1173:32;1170:52;;;1218:1;1215;1208:12;1170:52;1257:9;1244:23;1276:31;1301:5;1276:31;:::i;:::-;1326:5;1378:2;1363:18;;;;1350:32;;-1:-1:-1;;;1073:315:1:o;1585:255::-;1652:6;1705:2;1693:9;1684:7;1680:23;1676:32;1673:52;;;1721:1;1718;1711:12;1673:52;1760:9;1747:23;1779:31;1804:5;1779:31;:::i;1845:456::-;1922:6;1930;1938;1991:2;1979:9;1970:7;1966:23;1962:32;1959:52;;;2007:1;2004;1997:12;1959:52;2046:9;2033:23;2065:31;2090:5;2065:31;:::i;:::-;2115:5;-1:-1:-1;2172:2:1;2157:18;;2144:32;2185:33;2144:32;2185:33;:::i;:::-;1845:456;;2237:7;;-1:-1:-1;;;2291:2:1;2276:18;;;;2263:32;;1845:456::o;2558:248::-;2626:6;2634;2687:2;2675:9;2666:7;2662:23;2658:32;2655:52;;;2703:1;2700;2693:12;2655:52;-1:-1:-1;;2726:23:1;;;2796:2;2781:18;;;2768:32;;-1:-1:-1;2558:248:1:o;3000:160::-;3065:20;;3121:13;;3114:21;3104:32;;3094:60;;3150:1;3147;3140:12;3165:248;3230:6;3238;3291:2;3279:9;3270:7;3266:23;3262:32;3259:52;;;3307:1;3304;3297:12;3259:52;3330:26;3346:9;3330:26;:::i;3642:180::-;3701:6;3754:2;3742:9;3733:7;3729:23;3725:32;3722:52;;;3770:1;3767;3760:12;3722:52;-1:-1:-1;3793:23:1;;3642:180;-1:-1:-1;3642:180:1:o;3827:315::-;3892:6;3900;3953:2;3941:9;3932:7;3928:23;3924:32;3921:52;;;3969:1;3966;3959:12;3921:52;4008:9;3995:23;4027:31;4052:5;4027:31;:::i;:::-;4077:5;-1:-1:-1;4101:35:1;4132:2;4117:18;;4101:35;:::i;:::-;4091:45;;3827:315;;;;;:::o;4355:127::-;4416:10;4411:3;4407:20;4404:1;4397:31;4447:4;4444:1;4437:15;4471:4;4468:1;4461:15;4487:1121;4571:6;4602:2;4645;4633:9;4624:7;4620:23;4616:32;4613:52;;;4661:1;4658;4651:12;4613:52;4701:9;4688:23;4730:18;4771:2;4763:6;4760:14;4757:34;;;4787:1;4784;4777:12;4757:34;4825:6;4814:9;4810:22;4800:32;;4870:7;4863:4;4859:2;4855:13;4851:27;4841:55;;4892:1;4889;4882:12;4841:55;4928:2;4915:16;4950:2;4946;4943:10;4940:36;;;4956:18;;:::i;:::-;5002:2;4999:1;4995:10;5034:2;5028:9;5097:2;5093:7;5088:2;5084;5080:11;5076:25;5068:6;5064:38;5152:6;5140:10;5137:22;5132:2;5120:10;5117:18;5114:46;5111:72;;;5163:18;;:::i;:::-;5199:2;5192:22;5249:18;;;5283:15;;;;-1:-1:-1;5325:11:1;;;5321:20;;;5353:19;;;5350:39;;;5385:1;5382;5375:12;5350:39;5409:11;;;;5429:148;5445:6;5440:3;5437:15;5429:148;;;5511:23;5530:3;5511:23;:::i;:::-;5499:36;;5462:12;;;;5555;;;;5429:148;;;5596:6;4487:1121;-1:-1:-1;;;;;;;;4487:1121:1:o;5849:523::-;5953:6;5961;5969;5977;5985;5993;6046:3;6034:9;6025:7;6021:23;6017:33;6014:53;;;6063:1;6060;6053:12;6014:53;-1:-1:-1;;6086:23:1;;;6156:2;6141:18;;6128:32;;-1:-1:-1;6207:2:1;6192:18;;6179:32;;6258:2;6243:18;;6230:32;;-1:-1:-1;6309:3:1;6294:19;;6281:33;;-1:-1:-1;6361:3:1;6346:19;6333:33;;-1:-1:-1;5849:523:1;-1:-1:-1;5849:523:1:o;6377:388::-;6445:6;6453;6506:2;6494:9;6485:7;6481:23;6477:32;6474:52;;;6522:1;6519;6512:12;6474:52;6561:9;6548:23;6580:31;6605:5;6580:31;:::i;:::-;6630:5;-1:-1:-1;6687:2:1;6672:18;;6659:32;6700:33;6659:32;6700:33;:::i;:::-;6752:7;6742:17;;;6377:388;;;;;:::o;6770:180::-;6826:6;6879:2;6867:9;6858:7;6854:23;6850:32;6847:52;;;6895:1;6892;6885:12;6847:52;6918:26;6934:9;6918:26;:::i;7189:380::-;7268:1;7264:12;;;;7311;;;7332:61;;7386:4;7378:6;7374:17;7364:27;;7332:61;7439:2;7431:6;7428:14;7408:18;7405:38;7402:161;;7485:10;7480:3;7476:20;7473:1;7466:31;7520:4;7517:1;7510:15;7548:4;7545:1;7538:15;7402:161;;7189:380;;;:::o;7574:356::-;7776:2;7758:21;;;7795:18;;;7788:30;7854:34;7849:2;7834:18;;7827:62;7921:2;7906:18;;7574:356::o;8188:127::-;8249:10;8244:3;8240:20;8237:1;8230:31;8280:4;8277:1;8270:15;8304:4;8301:1;8294:15;8320:128;8360:3;8391:1;8387:6;8384:1;8381:13;8378:39;;;8397:18;;:::i;:::-;-1:-1:-1;8433:9:1;;8320:128::o;8453:399::-;8655:2;8637:21;;;8694:2;8674:18;;;8667:30;8733:34;8728:2;8713:18;;8706:62;-1:-1:-1;;;8799:2:1;8784:18;;8777:33;8842:3;8827:19;;8453:399::o;9263:127::-;9324:10;9319:3;9315:20;9312:1;9305:31;9355:4;9352:1;9345:15;9379:4;9376:1;9369:15;9395:135;9434:3;9455:17;;;9452:43;;9475:18;;:::i;:::-;-1:-1:-1;9522:1:1;9511:13;;9395:135::o;11985:125::-;12025:4;12053:1;12050;12047:8;12044:34;;;12058:18;;:::i;:::-;-1:-1:-1;12095:9:1;;11985:125::o;12115:251::-;12185:6;12238:2;12226:9;12217:7;12213:23;12209:32;12206:52;;;12254:1;12251;12244:12;12206:52;12286:9;12280:16;12305:31;12330:5;12305:31;:::i;12371:980::-;12633:4;12681:3;12670:9;12666:19;12712:6;12701:9;12694:25;12738:2;12776:6;12771:2;12760:9;12756:18;12749:34;12819:3;12814:2;12803:9;12799:18;12792:31;12843:6;12878;12872:13;12909:6;12901;12894:22;12947:3;12936:9;12932:19;12925:26;;12986:2;12978:6;12974:15;12960:29;;13007:1;13017:195;13031:6;13028:1;13025:13;13017:195;;;13096:13;;-1:-1:-1;;;;;13092:39:1;13080:52;;13187:15;;;;13152:12;;;;13128:1;13046:9;13017:195;;;-1:-1:-1;;;;;;;13268:32:1;;;;13263:2;13248:18;;13241:60;-1:-1:-1;;;13332:3:1;13317:19;13310:35;13229:3;12371:980;-1:-1:-1;;;12371:980:1:o;13968:306::-;14056:6;14064;14072;14125:2;14113:9;14104:7;14100:23;14096:32;14093:52;;;14141:1;14138;14131:12;14093:52;14170:9;14164:16;14154:26;;14220:2;14209:9;14205:18;14199:25;14189:35;;14264:2;14253:9;14249:18;14243:25;14233:35;;13968:306;;;;;:::o;14279:168::-;14319:7;14385:1;14381;14377:6;14373:14;14370:1;14367:21;14362:1;14355:9;14348:17;14344:45;14341:71;;;14392:18;;:::i;:::-;-1:-1:-1;14432:9:1;;14279:168::o;14452:217::-;14492:1;14518;14508:132;;14562:10;14557:3;14553:20;14550:1;14543:31;14597:4;14594:1;14587:15;14625:4;14622:1;14615:15;14508:132;-1:-1:-1;14654:9:1;;14452:217::o

Swarm Source

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