ETH Price: $3,506.76 (+3.01%)
Gas: 3 Gwei

Token

Eggs (EGGS)
 

Overview

Max Total Supply

1,489,200 EGGS

Holders

20

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 5 Decimals)

Balance
5,643.97096 EGGS

Value
$0.00
0x46e3d123e78628255aaeeae581b8936f23f21619
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:
Eggs

Compiler Version
v0.7.4+commit.3f05b770

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-03-13
*/

/*

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@                   🥚$EGGS🥚
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@       
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@        an experiemntal erc-20 project
@@@@@@@@@@@@@@@@@@,.....*@@@@@#,*@@@@@@@@@@@@@@@@@       your tokens double every 24 hours
@@@@@@@@@@@@@@..          ..        ..@@@@@@@@@@@@
@@@@@@@@@@@..            ,             .&@@@@@@@@@
@@@@@@@@@,.             ..              ..@@@@@@@@                    website 
@@@@@@@%..              ..                .*@@@@@@                   
@@@@@@@...              ..                 .(@@@@@                https://eggs.wtf
@@@@@@,...              ..                 ..@@@@@
@@@@@@@....             ,..           .   ..,@@@@@                    twitter
@@@@@@@&,....          ..,..            ...,@@@@@@
@@@@@@@@@%,.............%@@,.............,@@@@@@@@           https://twitter.com/wtf_eggs
@@@@@@@@@@@@@&**,,,*&@@@@@@@@@(,,,,,,,/@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@                    telegram
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@              https://t.me/eggswtf
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

*/


// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.7.4;

library SafeMathInt {
    int256 private constant MIN_INT256 = int256(1) << 255;
    int256 private constant MAX_INT256 = ~(int256(1) << 255);

    function mul(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a * b;

        require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));
        require((b == 0) || (c / b == a));
        return c;
    }

    function div(int256 a, int256 b) internal pure returns (int256) {
        require(b != -1 || a != MIN_INT256);

        return a / b;
    }

    function sub(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a - b;
        require((b >= 0 && c <= a) || (b < 0 && c > a));
        return c;
    }

    function add(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a + b;
        require((b >= 0 && c >= a) || (b < 0 && c < a));
        return c;
    }

    function abs(int256 a) internal pure returns (int256) {
        require(a != MIN_INT256);
        return a < 0 ? -a : a;
    }
}

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

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

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

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

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b != 0);
        return a % b;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address who) external view returns (uint256);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function transfer(address to, uint256 value) external returns (bool);

    function approve(address spender, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

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

    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

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

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

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

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

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

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

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

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

		function initialize(address, address) external;
}

interface IUniswapSwapRouter{
		function factory() external pure returns (address);
		function WETH() external pure returns (address);

		function addLiquidity(
				address tokenA,
				address tokenB,
				uint amountADesired,
				uint amountBDesired,
				uint amountAMin,
				uint amountBMin,
				address to,
				uint deadline
		) external returns (uint amountA, uint amountB, uint liquidity);
		function addLiquidityETH(
				address token,
				uint amountTokenDesired,
				uint amountTokenMin,
				uint amountETHMin,
				address to,
				uint deadline
		) external payable returns (uint amountToken, uint amountETH, uint liquidity);
		function removeLiquidity(
				address tokenA,
				address tokenB,
				uint liquidity,
				uint amountAMin,
				uint amountBMin,
				address to,
				uint deadline
		) external returns (uint amountA, uint amountB);
		function removeLiquidityETH(
				address token,
				uint liquidity,
				uint amountTokenMin,
				uint amountETHMin,
				address to,
				uint deadline
		) external returns (uint amountToken, uint amountETH);
		function removeLiquidityWithPermit(
				address tokenA,
				address tokenB,
				uint liquidity,
				uint amountAMin,
				uint amountBMin,
				address to,
				uint deadline,
				bool approveMax, uint8 v, bytes32 r, bytes32 s
		) external returns (uint amountA, uint amountB);
		function removeLiquidityETHWithPermit(
				address token,
				uint liquidity,
				uint amountTokenMin,
				uint amountETHMin,
				address to,
				uint deadline,
				bool approveMax, uint8 v, bytes32 r, bytes32 s
		) external returns (uint amountToken, uint amountETH);
		function swapExactTokensForTokens(
				uint amountIn,
				uint amountOutMin,
				address[] calldata path,
				address to,
				uint deadline
		) external returns (uint[] memory amounts);
		function swapTokensForExactTokens(
				uint amountOut,
				uint amountInMax,
				address[] calldata path,
				address to,
				uint deadline
		) external returns (uint[] memory amounts);
		function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
				external
				payable
				returns (uint[] memory amounts);
		function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
				external
				returns (uint[] memory amounts);
		function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
				external
				returns (uint[] memory amounts);
		function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
				external
				payable
				returns (uint[] memory amounts);

		function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
		function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
		function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
		function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
		function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
		function removeLiquidityETHSupportingFeeOnTransferTokens(
			address token,
			uint liquidity,
			uint amountTokenMin,
			uint amountETHMin,
			address to,
			uint deadline
		) external returns (uint amountETH);
		function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
			address token,
			uint liquidity,
			uint amountTokenMin,
			uint amountETHMin,
			address to,
			uint deadline,
			bool approveMax, uint8 v, bytes32 r, bytes32 s
		) external returns (uint amountETH);
	
		function swapExactTokensForTokensSupportingFeeOnTransferTokens(
			uint amountIn,
			uint amountOutMin,
			address[] calldata path,
			address to,
			uint deadline
		) external;
		function swapExactETHForTokensSupportingFeeOnTransferTokens(
			uint amountOutMin,
			address[] calldata path,
			address to,
			uint deadline
		) external payable;
		function swapExactTokensForETHSupportingFeeOnTransferTokens(
			uint amountIn,
			uint amountOutMin,
			address[] calldata path,
			address to,
			uint deadline
		) external;
}

interface IUniswapSwapFactory {
		event PairCreated(address indexed token0, address indexed token1, address pair, uint);

		function feeTo() external view returns (address);
		function feeToSetter() external view returns (address);

		function getPair(address tokenA, address tokenB) external view returns (address pair);
		function allPairs(uint) external view returns (address pair);
		function allPairsLength() external view returns (uint);

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

		function setFeeTo(address) external;
		function setFeeToSetter(address) external;
}

contract Ownable {
    address private _owner;

    event OwnershipRenounced(address indexed previousOwner);

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

    constructor() {
        _owner = msg.sender;
    }

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

    modifier onlyOwner() {
        require(isOwner());
        _;
    }

    function isOwner() public view returns (bool) {
        return msg.sender == _owner;
    }

    function renounceOwnership() public onlyOwner {
        emit OwnershipRenounced(_owner);
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal {
        require(newOwner != address(0));
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

abstract contract ERC20Detailed is IERC20 {
    string private _name;
    string private _symbol;
    uint8 private _decimals;

    constructor(
        string memory name_,
        string memory symbol_,
        uint8 decimals_
    ) {
        _name = name_;
        _symbol = symbol_;
        _decimals = decimals_;
    }

    function name() public view returns (string memory) {
        return _name;
    }

    function symbol() public view returns (string memory) {
        return _symbol;
    }

    function decimals() public view returns (uint8) {
        return _decimals;
    }
}

contract Eggs is ERC20Detailed, Ownable {

    using SafeMath for uint256;
    using SafeMathInt for int256;

    event LogRebase(uint256 indexed epoch, uint256 totalSupply);

    string public _name = "Eggs";
    string public _symbol = "EGGS";
    uint8 public _decimals = 5;

    IUniswapSwapPair public pairContract;
    mapping(address => bool) _isFeeExempt;

    modifier validRecipient(address to) {
        require(to != address(0x0));
        _;
    }

    uint256 public constant DECIMALS = 5;
    uint256 public constant MAX_UINT256 = ~uint256(0);
    uint8 public constant RATE_DECIMALS = 7;

    uint256 private constant INITIAL_FRAGMENTS_SUPPLY =
        730 * 10**3 * 10**DECIMALS;

    uint256 public liquidityFee = 10;
    uint256 public treasuryFee = 100;
    uint256 public DEVFundFee = 100;
    uint256 public sellFee = 10;
    uint256 public firePitFee = 10;
    uint256 public totalFee =
        liquidityFee.add(treasuryFee).add(DEVFundFee).add(
            firePitFee
        );
    uint256 public feeDenominator = 1000;

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

    address public autoLiquidityReceiver;
    address public treasuryReceiver;
    address public DEVFundReceiver;
    address public firePit;
    address public pairAddress;
    bool public swapEnabled = true;
    IUniswapSwapRouter public router;
    address public pair;
    bool inSwap = false;
    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }

    uint256 private constant TOTAL_GONS =
        MAX_UINT256 - (MAX_UINT256 % INITIAL_FRAGMENTS_SUPPLY);

    uint256 private constant MAX_SUPPLY = 730 * 10**7 * 10**DECIMALS;

    bool public _autoRebase;
    bool public _autoAddLiquidity;
    uint256 public _initRebaseStartTime;
    uint256 public _lastRebasedTime;
    uint256 public _lastAddLiquidityTime;
    uint256 public _totalSupply;
    uint256 private _gonsPerFragment;

    mapping(address => uint256) private _gonBalances;
    mapping(address => mapping(address => uint256)) private _allowedFragments;
    mapping(address => bool) public blacklist;

    constructor() ERC20Detailed("Eggs", "EGGS", uint8(DECIMALS)) Ownable() {

        router = IUniswapSwapRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 
        pair = IUniswapSwapFactory(router.factory()).createPair(
            router.WETH(),
            address(this)
        );
      
        autoLiquidityReceiver = 0x2613Aa009E45ADF040Ea63421E969C86Ee964825;
        treasuryReceiver = 0x37e837Ac5405D1846d691F09fb17Dd3115992207; 
        DEVFundReceiver = 0x9bD2E12b0377EDb28c6692393202f7501B5d8D29;
        firePit = DEAD;

        _allowedFragments[address(this)][address(router)] = uint256(-1);
        pairAddress = pair;
        pairContract = IUniswapSwapPair(pair);

        _totalSupply = INITIAL_FRAGMENTS_SUPPLY;
        _gonBalances[treasuryReceiver] = TOTAL_GONS;
        _gonsPerFragment = TOTAL_GONS.div(_totalSupply);
        _initRebaseStartTime = block.timestamp;
        _lastRebasedTime = block.timestamp;
        _autoRebase = true;
        _autoAddLiquidity = true;
        _isFeeExempt[treasuryReceiver] = true;
        _isFeeExempt[address(this)] = true;

        _transferOwnership(treasuryReceiver);
        emit Transfer(address(0x0), treasuryReceiver, _totalSupply);
    }

    function rebase() internal {
        
        if ( inSwap ) return;
        uint256 rebaseRate;
        uint256 deltaTimeFromInit = block.timestamp - _initRebaseStartTime;
        uint256 deltaTime = block.timestamp - _lastRebasedTime;
        uint256 times = deltaTime.div(15 minutes);
        uint256 epoch = times.mul(15);

        if (deltaTimeFromInit < (365 days)) {
            rebaseRate = 10400000;
        } else if (deltaTimeFromInit >= (365 days)) {
            rebaseRate = 5200000;
        } else if (deltaTimeFromInit >= ((15 * 365 days) / 10)) {
            rebaseRate = 2600000;
        } else if (deltaTimeFromInit >= (7 * 365 days)) {
            rebaseRate = 1300000;
        }

        for (uint256 i = 0; i < times; i++) {
            _totalSupply = _totalSupply
                .mul((10**RATE_DECIMALS).add(rebaseRate))
                .div(10**RATE_DECIMALS);
        }

        _gonsPerFragment = TOTAL_GONS.div(_totalSupply);
        _lastRebasedTime = _lastRebasedTime.add(times.mul(15 minutes));

        pairContract.sync();

        emit LogRebase(epoch, _totalSupply);
    }

    function transfer(address to, uint256 value)
        external
        override
        validRecipient(to)
        returns (bool)
    {
        _transferFrom(msg.sender, to, value);
        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external override validRecipient(to) returns (bool) {
        
        if (_allowedFragments[from][msg.sender] != uint256(-1)) {
            _allowedFragments[from][msg.sender] = _allowedFragments[from][
                msg.sender
            ].sub(value, "Insufficient Allowance");
        }
        _transferFrom(from, to, value);
        return true;
    }

    function _basicTransfer(
        address from,
        address to,
        uint256 amount
    ) internal returns (bool) {
        uint256 gonAmount = amount.mul(_gonsPerFragment);
        _gonBalances[from] = _gonBalances[from].sub(gonAmount);
        _gonBalances[to] = _gonBalances[to].add(gonAmount);
        return true;
    }

    function _transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {

        require(!blacklist[sender] && !blacklist[recipient], "in_blacklist");

        if (inSwap) {
            return _basicTransfer(sender, recipient, amount);
        }
        if (shouldRebase()) {
           rebase();
        }

        if (shouldAddLiquidity()) {
            addLiquidity();
        }

        if (shouldSwapBack()) {
            swapBack();
        }

        uint256 gonAmount = amount.mul(_gonsPerFragment);
        _gonBalances[sender] = _gonBalances[sender].sub(gonAmount);
        uint256 gonAmountReceived = shouldTakeFee(sender, recipient)
            ? takeFee(sender, recipient, gonAmount)
            : gonAmount;
        _gonBalances[recipient] = _gonBalances[recipient].add(
            gonAmountReceived
        );


        emit Transfer(
            sender,
            recipient,
            gonAmountReceived.div(_gonsPerFragment)
        );
        return true;
    }

    function takeFee(
        address sender,
        address recipient,
        uint256 gonAmount
    ) internal  returns (uint256) {
        uint256 _totalFee = totalFee;
        uint256 _treasuryFee = treasuryFee;

        if (recipient == pair) {
            _totalFee = totalFee.add(sellFee);
            _treasuryFee = treasuryFee.add(sellFee);
        }

        uint256 feeAmount = gonAmount.div(feeDenominator).mul(_totalFee);
       
        _gonBalances[firePit] = _gonBalances[firePit].add(
            gonAmount.div(feeDenominator).mul(firePitFee)
        );
        _gonBalances[address(this)] = _gonBalances[address(this)].add(
            gonAmount.div(feeDenominator).mul(_treasuryFee.add(DEVFundFee))
        );
        _gonBalances[autoLiquidityReceiver] = _gonBalances[autoLiquidityReceiver].add(
            gonAmount.div(feeDenominator).mul(liquidityFee)
        );
        
        emit Transfer(sender, address(this), feeAmount.div(_gonsPerFragment));
        return gonAmount.sub(feeAmount);
    }

    function addLiquidity() internal swapping {
        uint256 autoLiquidityAmount = _gonBalances[autoLiquidityReceiver].div(
            _gonsPerFragment
        );
        _gonBalances[address(this)] = _gonBalances[address(this)].add(
            _gonBalances[autoLiquidityReceiver]
        );
        _gonBalances[autoLiquidityReceiver] = 0;
        uint256 amountToLiquify = autoLiquidityAmount.div(2);
        uint256 amountToSwap = autoLiquidityAmount.sub(amountToLiquify);

        if( amountToSwap == 0 ) {
            return;
        }
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        uint256 balanceBefore = address(this).balance;


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

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

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

    function swapBack() internal swapping {

        uint256 amountToSwap = _gonBalances[address(this)].div(_gonsPerFragment);

        if( amountToSwap == 0) {
            return;
        }

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

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

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

        (bool success, ) = payable(treasuryReceiver).call{
            value: amountETHToTreasuryAndDEV.mul(treasuryFee).div(
                treasuryFee.add(DEVFundFee)
            ),
            gas: 30000
        }("");
        (success, ) = payable(DEVFundReceiver).call{
            value: amountETHToTreasuryAndDEV.mul(DEVFundFee).div(
                treasuryFee.add(DEVFundFee)
            ),
            gas: 30000
        }("");
    }

    function withdrawAllToTreasury() external swapping onlyOwner {

        uint256 amountToSwap = _gonBalances[address(this)].div(_gonsPerFragment);
        require( amountToSwap > 0,"There is no Eggs token deposited in token contract");
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            treasuryReceiver,
            block.timestamp
        );
    }

    function shouldTakeFee(address from, address to)
        internal
        view
        returns (bool)
    {
        return 
            (pair == from || pair == to) &&
            !_isFeeExempt[from];
    }

    function shouldRebase() internal view returns (bool) {
        return
            _autoRebase &&
            (_totalSupply < MAX_SUPPLY) &&
            msg.sender != pair  &&
            !inSwap &&
            block.timestamp >= (_lastRebasedTime + 15 minutes);
    }

    function shouldAddLiquidity() internal view returns (bool) {
        return
            _autoAddLiquidity && 
            !inSwap && 
            msg.sender != pair;
    }

    function shouldSwapBack() internal view returns (bool) {
        return 
            !inSwap &&
            msg.sender != pair  ; 
    }

    function setAutoRebase(bool _flag) external onlyOwner {
        if (_flag) {
            _autoRebase = _flag;
            _lastRebasedTime = block.timestamp;
        } else {
            _autoRebase = _flag;
        }
    }

    function setAutoAddLiquidity(bool _flag) external onlyOwner {
        if(_flag) {
            _autoAddLiquidity = _flag;
            _lastAddLiquidityTime = block.timestamp;
        } else {
            _autoAddLiquidity = _flag;
        }
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue)
        external
        returns (bool)
    {
        uint256 oldValue = _allowedFragments[msg.sender][spender];
        if (subtractedValue >= oldValue) {
            _allowedFragments[msg.sender][spender] = 0;
        } else {
            _allowedFragments[msg.sender][spender] = oldValue.sub(
                subtractedValue
            );
        }
        emit Approval(
            msg.sender,
            spender,
            _allowedFragments[msg.sender][spender]
        );
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue)
        external
        returns (bool)
    {
        _allowedFragments[msg.sender][spender] = _allowedFragments[msg.sender][
            spender
        ].add(addedValue);
        emit Approval(
            msg.sender,
            spender,
            _allowedFragments[msg.sender][spender]
        );
        return true;
    }

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

    function checkFeeExempt(address _addr) external view returns (bool) {
        return _isFeeExempt[_addr];
    }

    function getCirculatingSupply() public view returns (uint256) {
        return
            (TOTAL_GONS.sub(_gonBalances[DEAD]).sub(_gonBalances[ZERO])).div(
                _gonsPerFragment
            );
    }

    function isNotInSwap() external view returns (bool) {
        return !inSwap;
    }

    function manualSync() external {
        IUniswapSwapPair(pair).sync();
    }

    function setFeeReceivers(
        address _autoLiquidityReceiver,
        address _treasuryReceiver,
        address _DEVFundReceiver,
        address _firePit
    ) external onlyOwner {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        treasuryReceiver = _treasuryReceiver;
        DEVFundReceiver = _DEVFundReceiver;
        firePit = _firePit;
    }

    function getLiquidityBacking(uint256 accuracy)
        public
        view
        returns (uint256)
    {
        uint256 liquidityBalance = _gonBalances[pair].div(_gonsPerFragment);
        return
            accuracy.mul(liquidityBalance.mul(2)).div(getCirculatingSupply());
    }

    function setWhitelist(address _addr) external onlyOwner {
        _isFeeExempt[_addr] = true;
    }

    function setBotBlacklist(address _botAddress, bool _flag) external onlyOwner {
        require(isContract(_botAddress), "only contract address, not allowed exteranlly owned account");
        blacklist[_botAddress] = _flag;    
    }
    
    function setPairAddress(address _pairAddress) public onlyOwner {
        pairAddress = _pairAddress;
    }

    function setLP(address _address) external onlyOwner {
        pairContract = IUniswapSwapPair(_address);
    }
    
    function totalSupply() external view override returns (uint256) {
        return _totalSupply;
    }
   
    function balanceOf(address who) external view override returns (uint256) {
        return _gonBalances[who].div(_gonsPerFragment);
    }

    function isContract(address addr) internal view returns (bool) {
        uint size;
        assembly { size := extcodesize(addr) }
        return size > 0;
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"epoch","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalSupply","type":"uint256"}],"name":"LogRebase","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DECIMALS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEVFundFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEVFundReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_UINT256","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RATE_DECIMALS","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_autoAddLiquidity","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_autoRebase","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_initRebaseStartTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_lastAddLiquidityTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_lastRebasedTime","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":"_symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalSupply","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":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"checkFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"firePit","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"firePitFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":[],"name":"isNotInSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSync","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pairAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pairContract","outputs":[{"internalType":"contract IUniswapSwapPair","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IUniswapSwapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_flag","type":"bool"}],"name":"setAutoAddLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_flag","type":"bool"}],"name":"setAutoRebase","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_botAddress","type":"address"},{"internalType":"bool","name":"_flag","type":"bool"}],"name":"setBotBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_treasuryReceiver","type":"address"},{"internalType":"address","name":"_DEVFundReceiver","type":"address"},{"internalType":"address","name":"_firePit","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pairAddress","type":"address"}],"name":"setPairAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"setWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","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":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasuryReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawAllToTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c060405260046080819052634567677360e01b60a0908152620000279160039190620006d8565b50604080518082019091526004808252634547475360e01b6020909201918252620000539181620006d8565b506005805460ff191681179055600a6007819055606460088190556009819055818055600b829055620000af91906200009b908183826200050a602090811b620017de17901c565b6200050a60201b620017de1790919060201c565b600c556103e8600d55600e80546001600160a01b031990811661dead17909155600f805490911690556014805460ff60a01b19908116600160a01b179091556016805490911690553480156200010457600080fd5b50604051806040016040528060048152602001634567677360e01b815250604051806040016040528060048152602001634547475360e01b8152506005826000908051906020019062000159929190620006d8565b5081516200016f906001906020850190620006d8565b506002805460ff191660ff9290921691909117610100600160a81b0319166101003302179055505060158054737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031990911617908190556040805163c45a015560e01b815290516001600160a01b039092169163c45a015591600480820192602092909190829003018186803b1580156200020457600080fd5b505afa15801562000219573d6000803e3d6000fd5b505050506040513d60208110156200023057600080fd5b5051601554604080516315ab88c960e31b815290516001600160a01b039384169363c9c6539693169163ad5c4648916004808301926020929190829003018186803b1580156200027f57600080fd5b505afa15801562000294573d6000803e3d6000fd5b505050506040513d6020811015620002ab57600080fd5b5051604080516001600160e01b031960e085901b1681526001600160a01b0390921660048301523060248301525160448083019260209291908290030181600087803b158015620002fb57600080fd5b505af115801562000310573d6000803e3d6000fd5b505050506040513d60208110156200032757600080fd5b5051601680546001600160a01b039283166001600160a01b0319918216178255601080548216732613aa009e45adf040ea63421e969c86ee9648251790556011805482167337e837ac5405d1846d691f09fb17dd3115992207178155601280548316739bd2e12b0377edb28c6692393202f7501b5d8d29179055600e54601380548416918616919091179055306000908152601d60209081526040808320601554881684528252808320600019905594546014805490951690871690811790945560058054610100909502610100600160a81b0319909516949094179093556410ff239a00601a90815591549094168452601c825291909220640131c017ff1990819055905462000441926200056c811b6200183817901c565b601b554260178190556018556016805460ff60b01b1960ff60a81b19909116600160a81b1716600160b01b179055601180546001600160a01b03908116600090815260066020526040808220805460ff19908116600190811790925530845291909220805490911690911790559054620004bc9116620005b6565b601154601a5460408051918252516001600160a01b03909216916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a362000784565b60008282018381101562000565576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b60006200056583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200063160201b60201c565b6001600160a01b038116620005ca57600080fd5b6002546040516001600160a01b0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600280546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b60008183620006c15760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620006855781810151838201526020016200066b565b50505050905090810190601f168015620006b35780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581620006ce57fe5b0495945050505050565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826200071057600085556200075b565b82601f106200072b57805160ff19168380011785556200075b565b828001600101855582156200075b579182015b828111156200075b5782518255916020019190600101906200073e565b50620007699291506200076d565b5090565b5b808211156200076957600081556001016200076e565b6128d080620007946000396000f3fe60806040526004361061037a5760003560e01c806383b4ac68116101d1578063afb9cf6d11610102578063d4399790116100a0578063e15beb801161006f578063e15beb8014610ab0578063f2fde38b14610adc578063f887ea4014610b0f578063f9f92be414610b2457610381565b8063d439979014610a03578063d51ed1c814610a36578063dd62ed3e14610a60578063e060f73b14610a9b57610381565b8063ca33e64c116100dc578063ca33e64c14610998578063cc32d176146109ad578063cfbac92f146109c2578063d28d8852146109ee57610381565b8063afb9cf6d14610959578063b09f12661461096e578063bd5955811461098357610381565b80639b87676c1161016f578063a6cf729311610149578063a6cf7293146108e1578063a8aa1b31146108f6578063a8b089821461090b578063a9059cbb1461092057610381565b80639b87676c14610860578063a22d483214610875578063a457c2d7146108a857610381565b80638f32d59b116101ab5780638f32d59b1461080c57806395d89b411461082157806398118cb4146108365780639b2912cc1461084b57610381565b806383b4ac68146107af578063854cff2f146107c45780638da5cb5b146107f757610381565b806332b75683116102ab5780634d709adf116102495780636ddd1713116102235780636ddd17131461073d57806370a0823114610752578063715018a614610785578063753d02a11461079a57610381565b80634d709adf146106fe5780635a604c52146107135780636912652c1461072857610381565b8063395093511161028557806339509351146106505780633c8e556d146106895780633eaaf86b146106d457806349d98142146106e957610381565b806332b75683146105eb57806333a581d21461060057806337c9be871461061557610381565b806325e4405e116103185780632e0f2625116102f25780632e0f2625146105615780632f34d28214610576578063313ce567146105ab57806332424aa3146105d657610381565b806325e4405e146105225780632b112e49146105375780632b14ca561461054c57610381565b8063180b0d7e11610354578063180b0d7e1461048e57806318160ddd146104b55780631df4ccfc146104ca57806323b872dd146104df57610381565b806306fdde031461038657806308b1fd8f14610410578063095ea7b31461044157610381565b3661038157005b600080fd5b34801561039257600080fd5b5061039b610b57565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103d55781810151838201526020016103bd565b50505050905090810190601f1680156104025780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561041c57600080fd5b50610425610bed565b604080516001600160a01b039092168252519081900360200190f35b34801561044d57600080fd5b5061047a6004803603604081101561046457600080fd5b506001600160a01b038135169060200135610bfc565b604080519115158252519081900360200190f35b34801561049a57600080fd5b506104a3610c63565b60408051918252519081900360200190f35b3480156104c157600080fd5b506104a3610c69565b3480156104d657600080fd5b506104a3610c6f565b3480156104eb57600080fd5b5061047a6004803603606081101561050257600080fd5b506001600160a01b03813581169160208101359091169060400135610c75565b34801561052e57600080fd5b50610425610d4f565b34801561054357600080fd5b506104a3610d5e565b34801561055857600080fd5b506104a3610db9565b34801561056d57600080fd5b506104a3610dbf565b34801561058257600080fd5b506105a96004803603602081101561059957600080fd5b50356001600160a01b0316610dc4565b005b3480156105b757600080fd5b506105c0610dfd565b6040805160ff9092168252519081900360200190f35b3480156105e257600080fd5b506105c0610e06565b3480156105f757600080fd5b506104a3610e0f565b34801561060c57600080fd5b506104a3610e15565b34801561062157600080fd5b506105a96004803603604081101561063857600080fd5b506001600160a01b0381351690602001351515610e1b565b34801561065c57600080fd5b5061047a6004803603604081101561067357600080fd5b506001600160a01b038135169060200135610e9b565b34801561069557600080fd5b506105a9600480360360808110156106ac57600080fd5b506001600160a01b038135811691602081013582169160408201358116916060013516610f2e565b3480156106e057600080fd5b506104a3610f8f565b3480156106f557600080fd5b50610425610f95565b34801561070a57600080fd5b50610425610fa4565b34801561071f57600080fd5b506105c0610fb8565b34801561073457600080fd5b5061047a610fbd565b34801561074957600080fd5b5061047a610fcd565b34801561075e57600080fd5b506104a36004803603602081101561077557600080fd5b50356001600160a01b0316610fdd565b34801561079157600080fd5b506105a9611005565b3480156107a657600080fd5b506105a9611065565b3480156107bb57600080fd5b5061047a6110cf565b3480156107d057600080fd5b506105a9600480360360208110156107e757600080fd5b50356001600160a01b03166110e0565b34801561080357600080fd5b50610425611115565b34801561081857600080fd5b5061047a611129565b34801561082d57600080fd5b5061039b61113f565b34801561084257600080fd5b506104a361119f565b34801561085757600080fd5b506104a36111a5565b34801561086c57600080fd5b506104a36111ab565b34801561088157600080fd5b506105a96004803603602081101561089857600080fd5b50356001600160a01b03166111b1565b3480156108b457600080fd5b5061047a600480360360408110156108cb57600080fd5b506001600160a01b0381351690602001356111e4565b3480156108ed57600080fd5b506104a36112cd565b34801561090257600080fd5b506104256112d3565b34801561091757600080fd5b506104256112e2565b34801561092c57600080fd5b5061047a6004803603604081101561094357600080fd5b506001600160a01b0381351690602001356112f1565b34801561096557600080fd5b5061047a61131d565b34801561097a57600080fd5b5061039b61132d565b34801561098f57600080fd5b506105a96113bb565b3480156109a457600080fd5b506104256115e8565b3480156109b957600080fd5b506104a36115f7565b3480156109ce57600080fd5b506105a9600480360360208110156109e557600080fd5b503515156115fd565b3480156109fa57600080fd5b5061039b61164f565b348015610a0f57600080fd5b5061047a60048036036020811015610a2657600080fd5b50356001600160a01b03166116aa565b348015610a4257600080fd5b506104a360048036036020811015610a5957600080fd5b50356116c8565b348015610a6c57600080fd5b506104a360048036036040811015610a8357600080fd5b506001600160a01b038135811691602001351661171c565b348015610aa757600080fd5b506104a3611747565b348015610abc57600080fd5b506105a960048036036020811015610ad357600080fd5b5035151561174d565b348015610ae857600080fd5b506105a960048036036020811015610aff57600080fd5b50356001600160a01b03166117a0565b348015610b1b57600080fd5b506104256117ba565b348015610b3057600080fd5b5061047a60048036036020811015610b4757600080fd5b50356001600160a01b03166117c9565b60008054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610be35780601f10610bb857610100808354040283529160200191610be3565b820191906000526020600020905b815481529060010190602001808311610bc657829003601f168201915b5050505050905090565b6011546001600160a01b031681565b336000818152601d602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b600d5481565b601a5490565b600c5481565b6000826001600160a01b038116610c8b57600080fd5b6001600160a01b0385166000908152601d6020908152604080832033845290915290205460001914610d38576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0388166000908152601d82528381203382529091529190912054610d1391859061187a565b6001600160a01b0386166000908152601d602090815260408083203384529091529020555b610d43858585611911565b50600195945050505050565b6012546001600160a01b031681565b601b54600f546001600160a01b039081166000908152601c602052604080822054600e5490931682528120549092610db4929091610dae9190610da890640131c017ff1990611b02565b90611b02565b90611838565b905090565b600a5481565b600581565b610dcc611129565b610dd557600080fd5b600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b60025460ff1690565b60055460ff1681565b60185481565b60001981565b610e23611129565b610e2c57600080fd5b610e3582611b44565b610e705760405162461bcd60e51b815260040180806020018281038252603b81526020018061282e603b913960400191505060405180910390fd5b6001600160a01b03919091166000908152601e60205260409020805460ff1916911515919091179055565b336000908152601d602090815260408083206001600160a01b0386168452909152812054610ec990836117de565b336000818152601d602090815260408083206001600160a01b0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b610f36611129565b610f3f57600080fd5b601080546001600160a01b039586166001600160a01b0319918216179091556011805494861694821694909417909355601280549285169284169290921790915560138054919093169116179055565b601a5481565b6013546001600160a01b031681565b60055461010090046001600160a01b031681565b600781565b601654600160b01b900460ff1681565b601454600160a01b900460ff1681565b601b546001600160a01b0382166000908152601c60205260408120549091610c5d9190611838565b61100d611129565b61101657600080fd5b6002546040516101009091046001600160a01b0316907ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482090600090a260028054610100600160a81b0319169055565b601660009054906101000a90046001600160a01b03166001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156110b557600080fd5b505af11580156110c9573d6000803e3d6000fd5b50505050565b601654600160a01b900460ff161590565b6110e8611129565b6110f157600080fd5b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b60025461010090046001600160a01b031690565b60025461010090046001600160a01b0316331490565b60018054604080516020601f60026000196101008789161502019095169490940493840181900481028201810190925282815260609390929091830182828015610be35780601f10610bb857610100808354040283529160200191610be3565b60075481565b60195481565b60175481565b6111b9611129565b6111c257600080fd5b601480546001600160a01b0319166001600160a01b0392909216919091179055565b336000908152601d602090815260408083206001600160a01b038616845290915281205480831061123857336000908152601d602090815260408083206001600160a01b0388168452909152812055611267565b6112428184611b02565b336000908152601d602090815260408083206001600160a01b03891684529091529020555b336000818152601d602090815260408083206001600160a01b0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b600b5481565b6016546001600160a01b031681565b6014546001600160a01b031681565b6000826001600160a01b03811661130757600080fd5b611312338585611911565b506001949350505050565b601654600160a81b900460ff1681565b6004805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156113b35780601f10611388576101008083540402835291602001916113b3565b820191906000526020600020905b81548152906001019060200180831161139657829003601f168201915b505050505081565b6016805460ff60a01b1916600160a01b1790556113d6611129565b6113df57600080fd5b601b54306000908152601c602052604081205490916113fe9190611838565b90506000811161143f5760405162461bcd60e51b81526004018080602001828103825260328152602001806128696032913960400191505060405180910390fd5b6040805160028082526060808301845292602083019080368337019050509050308160008151811061146d57fe5b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156114c157600080fd5b505afa1580156114d5573d6000803e3d6000fd5b505050506040513d60208110156114eb57600080fd5b50518151829060019081106114fc57fe5b6001600160a01b0392831660209182029290920181019190915260155460115460405163791ac94760e01b81526004810187815260006024830181905292861660648301819052426084840181905260a060448501908152895160a48601528951969098169763791ac947978b978b969495939460c4019187810191028083838b5b8381101561159657818101518382015260200161157e565b505050509050019650505050505050600060405180830381600087803b1580156115bf57600080fd5b505af11580156115d3573d6000803e3d6000fd5b50506016805460ff60a01b1916905550505050565b6010546001600160a01b031681565b60085481565b611605611129565b61160e57600080fd5b8015611634576016805460ff60b01b1916600160b01b831515021790554260195561164c565b6016805460ff60b01b1916600160b01b831515021790555b50565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156113b35780601f10611388576101008083540402835291602001916113b3565b6001600160a01b031660009081526006602052604090205460ff1690565b601b546016546001600160a01b03166000908152601c6020526040812054909182916116f391611838565b9050611715611700610d5e565b610dae61170e846002611b4a565b8690611b4a565b9392505050565b6001600160a01b039182166000908152601d6020908152604080832093909416825291909152205490565b60095481565b611755611129565b61175e57600080fd5b8015611784576016805460ff60a81b1916600160a81b831515021790554260185561164c565b60168054821515600160a81b0260ff60a81b1990911617905550565b6117a8611129565b6117b157600080fd5b61164c81611ba3565b6015546001600160a01b031681565b601e6020526000908152604090205460ff1681565b600082820183811015611715576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061171583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611c1d565b600081848411156119095760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156118ce5781810151838201526020016118b6565b50505050905090810190601f1680156118fb5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160a01b0383166000908152601e602052604081205460ff1615801561195357506001600160a01b0383166000908152601e602052604090205460ff16155b611993576040805162461bcd60e51b815260206004820152600c60248201526b1a5b97d89b1858dadb1a5cdd60a21b604482015290519081900360640190fd5b601654600160a01b900460ff16156119b7576119b0848484611c82565b9050611715565b6119bf611d14565b156119cc576119cc611d7a565b6119d4611f25565b156119e1576119e1611f65565b6119e96122a2565b156119f6576119f66122cd565b6000611a0d601b5484611b4a90919063ffffffff16565b6001600160a01b0386166000908152601c6020526040902054909150611a339082611b02565b6001600160a01b0386166000908152601c6020526040812091909155611a5986866125f0565b611a635781611a6e565b611a6e868684612644565b6001600160a01b0386166000908152601c6020526040902054909150611a9490826117de565b6001600160a01b038087166000818152601c6020526040902092909255601b54908816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611ae5908590611838565b60408051918252519081900360200190a350600195945050505050565b600061171583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061187a565b3b151590565b600082611b5957506000610c5d565b82820282848281611b6657fe5b04146117155760405162461bcd60e51b815260040180806020018281038252602181526020018061280d6021913960400191505060405180910390fd5b6001600160a01b038116611bb657600080fd5b6002546040516001600160a01b0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600280546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b60008183611c6c5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156118ce5781810151838201526020016118b6565b506000838581611c7857fe5b0495945050505050565b600080611c9a601b5484611b4a90919063ffffffff16565b6001600160a01b0386166000908152601c6020526040902054909150611cc09082611b02565b6001600160a01b038087166000908152601c60205260408082209390935590861681522054611cef90826117de565b6001600160a01b0385166000908152601c602052604090205550600190509392505050565b601654600090600160a81b900460ff168015611d385750601a54660297ee5eafa000115b8015611d4f57506016546001600160a01b03163314155b8015611d655750601654600160a01b900460ff16155b8015610db45750506018546103840142101590565b601654600160a01b900460ff1615611d9157611f23565b6017546018546000914290810391900382611dae82610384611838565b90506000611dbd82600f611b4a565b90506301e13380841015611dd657629eb1009450611e14565b6301e133808410611dec57624f58809450611e14565b6302d1cd408410611e02576227ac409450611e14565b630d2868808410611e14576213d62094505b60005b82811015611e4757611e3c62989680610dae611e33828a6117de565b601a5490611b4a565b601a55600101611e17565b50601a54611e5c90640131c017ff1990611838565b601b55611e77611e6e83610384611b4a565b601854906117de565b601881905550600560019054906101000a90046001600160a01b03166001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611ecd57600080fd5b505af1158015611ee1573d6000803e3d6000fd5b5050601a5460408051918252518493507f72725a3b1e5bd622d6bcd1339bb31279c351abe8f541ac7fd320f24e1b1641f292509081900360200190a250505050505b565b601654600090600160b01b900460ff168015611f4b5750601654600160a01b900460ff16155b8015610db45750506016546001600160a01b031633141590565b6016805460ff60a01b1916600160a01b179055601b546010546001600160a01b03166000908152601c60205260408120549091611fa29190611838565b6010546001600160a01b03166000908152601c602052604080822054308352912054919250611fd191906117de565b306000908152601c6020526040808220929092556010546001600160a01b03168152908120819055612004826002611838565b905060006120128383611b02565b90508061202157505050612293565b6040805160028082526060808301845292602083019080368337019050509050308160008151811061204f57fe5b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156120a357600080fd5b505afa1580156120b7573d6000803e3d6000fd5b505050506040513d60208110156120cd57600080fd5b50518151829060019081106120de57fe5b6001600160a01b0392831660209182029290920181019190915260155460405163791ac94760e01b8152600481018681526000602483018190523060648401819052426084850181905260a060448601908152895160a487015289514799979097169763791ac947978c9795968c9690939260c49091019187820191028083838b5b83811015612178578181015183820152602001612160565b505050509050019650505050505050600060405180830381600087803b1580156121a157600080fd5b505af11580156121b5573d6000803e3d6000fd5b5050505060006121ce8247611b0290919063ffffffff16565b90506000851180156121e05750600081115b15612288576015546010546040805163f305d71960e01b81523060048201526024810189905260006044820181905260648201526001600160a01b0392831660848201524260a48201529051919092169163f305d71991849160c48082019260609290919082900301818588803b15801561225a57600080fd5b505af115801561226e573d6000803e3d6000fd5b50505050506040513d606081101561228557600080fd5b50505b505042601955505050505b6016805460ff60a01b19169055565b601654600090600160a01b900460ff16158015610db45750506016546001600160a01b031633141590565b6016805460ff60a01b1916600160a01b179055601b54306000908152601c602052604081205490916122ff9190611838565b90508061230c5750612293565b60408051600280825260608083018452479390929190602083019080368337019050509050308160008151811061233f57fe5b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561239357600080fd5b505afa1580156123a7573d6000803e3d6000fd5b505050506040513d60208110156123bd57600080fd5b50518151829060019081106123ce57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050601560009054906101000a90046001600160a01b03166001600160a01b031663791ac9478460008430426040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015612488578181015183820152602001612470565b505050509050019650505050505050600060405180830381600087803b1580156124b157600080fd5b505af11580156124c5573d6000803e3d6000fd5b5050505060006124de8347611b0290919063ffffffff16565b6011546009546008549293506000926001600160a01b03909216916125159161250791906117de565b600854610dae908690611b4a565b60405161753091906000818181858888f193505050503d8060008114612557576040519150601f19603f3d011682016040523d82523d6000602084013e61255c565b606091505b50506012546009546008549293506001600160a01b03909116916125929161258491906117de565b600954610dae908690611b4a565b60405161753091906000818181858888f193505050503d80600081146125d4576040519150601f19603f3d011682016040523d82523d6000602084013e6125d9565b606091505b50505050505050506016805460ff60a01b19169055565b6016546000906001600160a01b038481169116148061261c57506016546001600160a01b038381169116145b8015611715575050506001600160a01b031660009081526006602052604090205460ff161590565b600c5460085460165460009291906001600160a01b038681169116141561269057600a54600c54612674916117de565b915061268d600a546008546117de90919063ffffffff16565b90505b60006126b1836126ab600d548861183890919063ffffffff16565b90611b4a565b90506126f26126d1600b546126ab600d548961183890919063ffffffff16565b6013546001600160a01b03166000908152601c6020526040902054906117de565b6013546001600160a01b03166000908152601c602052604090205560095461274790612731906127239085906117de565b600d546126ab908990611838565b306000908152601c6020526040902054906117de565b306000908152601c6020526040902055600754600d5461279191612770916126ab908990611838565b6010546001600160a01b03166000908152601c6020526040902054906117de565b6010546001600160a01b039081166000908152601c6020526040902091909155601b5430918916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906127e6908590611838565b60408051918252519081900360200190a36128018582611b02565b97965050505050505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f776f6e6c7920636f6e747261637420616464726573732c206e6f7420616c6c6f776564206578746572616e6c6c79206f776e6564206163636f756e745468657265206973206e6f204567677320746f6b656e206465706f736974656420696e20746f6b656e20636f6e7472616374a2646970667358221220f9d04d9ce89af4932fab4a9bf5131e43508bb4fedcb8d4b55769b1daac49774264736f6c63430007040033

Deployed Bytecode

0x60806040526004361061037a5760003560e01c806383b4ac68116101d1578063afb9cf6d11610102578063d4399790116100a0578063e15beb801161006f578063e15beb8014610ab0578063f2fde38b14610adc578063f887ea4014610b0f578063f9f92be414610b2457610381565b8063d439979014610a03578063d51ed1c814610a36578063dd62ed3e14610a60578063e060f73b14610a9b57610381565b8063ca33e64c116100dc578063ca33e64c14610998578063cc32d176146109ad578063cfbac92f146109c2578063d28d8852146109ee57610381565b8063afb9cf6d14610959578063b09f12661461096e578063bd5955811461098357610381565b80639b87676c1161016f578063a6cf729311610149578063a6cf7293146108e1578063a8aa1b31146108f6578063a8b089821461090b578063a9059cbb1461092057610381565b80639b87676c14610860578063a22d483214610875578063a457c2d7146108a857610381565b80638f32d59b116101ab5780638f32d59b1461080c57806395d89b411461082157806398118cb4146108365780639b2912cc1461084b57610381565b806383b4ac68146107af578063854cff2f146107c45780638da5cb5b146107f757610381565b806332b75683116102ab5780634d709adf116102495780636ddd1713116102235780636ddd17131461073d57806370a0823114610752578063715018a614610785578063753d02a11461079a57610381565b80634d709adf146106fe5780635a604c52146107135780636912652c1461072857610381565b8063395093511161028557806339509351146106505780633c8e556d146106895780633eaaf86b146106d457806349d98142146106e957610381565b806332b75683146105eb57806333a581d21461060057806337c9be871461061557610381565b806325e4405e116103185780632e0f2625116102f25780632e0f2625146105615780632f34d28214610576578063313ce567146105ab57806332424aa3146105d657610381565b806325e4405e146105225780632b112e49146105375780632b14ca561461054c57610381565b8063180b0d7e11610354578063180b0d7e1461048e57806318160ddd146104b55780631df4ccfc146104ca57806323b872dd146104df57610381565b806306fdde031461038657806308b1fd8f14610410578063095ea7b31461044157610381565b3661038157005b600080fd5b34801561039257600080fd5b5061039b610b57565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103d55781810151838201526020016103bd565b50505050905090810190601f1680156104025780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561041c57600080fd5b50610425610bed565b604080516001600160a01b039092168252519081900360200190f35b34801561044d57600080fd5b5061047a6004803603604081101561046457600080fd5b506001600160a01b038135169060200135610bfc565b604080519115158252519081900360200190f35b34801561049a57600080fd5b506104a3610c63565b60408051918252519081900360200190f35b3480156104c157600080fd5b506104a3610c69565b3480156104d657600080fd5b506104a3610c6f565b3480156104eb57600080fd5b5061047a6004803603606081101561050257600080fd5b506001600160a01b03813581169160208101359091169060400135610c75565b34801561052e57600080fd5b50610425610d4f565b34801561054357600080fd5b506104a3610d5e565b34801561055857600080fd5b506104a3610db9565b34801561056d57600080fd5b506104a3610dbf565b34801561058257600080fd5b506105a96004803603602081101561059957600080fd5b50356001600160a01b0316610dc4565b005b3480156105b757600080fd5b506105c0610dfd565b6040805160ff9092168252519081900360200190f35b3480156105e257600080fd5b506105c0610e06565b3480156105f757600080fd5b506104a3610e0f565b34801561060c57600080fd5b506104a3610e15565b34801561062157600080fd5b506105a96004803603604081101561063857600080fd5b506001600160a01b0381351690602001351515610e1b565b34801561065c57600080fd5b5061047a6004803603604081101561067357600080fd5b506001600160a01b038135169060200135610e9b565b34801561069557600080fd5b506105a9600480360360808110156106ac57600080fd5b506001600160a01b038135811691602081013582169160408201358116916060013516610f2e565b3480156106e057600080fd5b506104a3610f8f565b3480156106f557600080fd5b50610425610f95565b34801561070a57600080fd5b50610425610fa4565b34801561071f57600080fd5b506105c0610fb8565b34801561073457600080fd5b5061047a610fbd565b34801561074957600080fd5b5061047a610fcd565b34801561075e57600080fd5b506104a36004803603602081101561077557600080fd5b50356001600160a01b0316610fdd565b34801561079157600080fd5b506105a9611005565b3480156107a657600080fd5b506105a9611065565b3480156107bb57600080fd5b5061047a6110cf565b3480156107d057600080fd5b506105a9600480360360208110156107e757600080fd5b50356001600160a01b03166110e0565b34801561080357600080fd5b50610425611115565b34801561081857600080fd5b5061047a611129565b34801561082d57600080fd5b5061039b61113f565b34801561084257600080fd5b506104a361119f565b34801561085757600080fd5b506104a36111a5565b34801561086c57600080fd5b506104a36111ab565b34801561088157600080fd5b506105a96004803603602081101561089857600080fd5b50356001600160a01b03166111b1565b3480156108b457600080fd5b5061047a600480360360408110156108cb57600080fd5b506001600160a01b0381351690602001356111e4565b3480156108ed57600080fd5b506104a36112cd565b34801561090257600080fd5b506104256112d3565b34801561091757600080fd5b506104256112e2565b34801561092c57600080fd5b5061047a6004803603604081101561094357600080fd5b506001600160a01b0381351690602001356112f1565b34801561096557600080fd5b5061047a61131d565b34801561097a57600080fd5b5061039b61132d565b34801561098f57600080fd5b506105a96113bb565b3480156109a457600080fd5b506104256115e8565b3480156109b957600080fd5b506104a36115f7565b3480156109ce57600080fd5b506105a9600480360360208110156109e557600080fd5b503515156115fd565b3480156109fa57600080fd5b5061039b61164f565b348015610a0f57600080fd5b5061047a60048036036020811015610a2657600080fd5b50356001600160a01b03166116aa565b348015610a4257600080fd5b506104a360048036036020811015610a5957600080fd5b50356116c8565b348015610a6c57600080fd5b506104a360048036036040811015610a8357600080fd5b506001600160a01b038135811691602001351661171c565b348015610aa757600080fd5b506104a3611747565b348015610abc57600080fd5b506105a960048036036020811015610ad357600080fd5b5035151561174d565b348015610ae857600080fd5b506105a960048036036020811015610aff57600080fd5b50356001600160a01b03166117a0565b348015610b1b57600080fd5b506104256117ba565b348015610b3057600080fd5b5061047a60048036036020811015610b4757600080fd5b50356001600160a01b03166117c9565b60008054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610be35780601f10610bb857610100808354040283529160200191610be3565b820191906000526020600020905b815481529060010190602001808311610bc657829003601f168201915b5050505050905090565b6011546001600160a01b031681565b336000818152601d602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b600d5481565b601a5490565b600c5481565b6000826001600160a01b038116610c8b57600080fd5b6001600160a01b0385166000908152601d6020908152604080832033845290915290205460001914610d38576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0388166000908152601d82528381203382529091529190912054610d1391859061187a565b6001600160a01b0386166000908152601d602090815260408083203384529091529020555b610d43858585611911565b50600195945050505050565b6012546001600160a01b031681565b601b54600f546001600160a01b039081166000908152601c602052604080822054600e5490931682528120549092610db4929091610dae9190610da890640131c017ff1990611b02565b90611b02565b90611838565b905090565b600a5481565b600581565b610dcc611129565b610dd557600080fd5b600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b60025460ff1690565b60055460ff1681565b60185481565b60001981565b610e23611129565b610e2c57600080fd5b610e3582611b44565b610e705760405162461bcd60e51b815260040180806020018281038252603b81526020018061282e603b913960400191505060405180910390fd5b6001600160a01b03919091166000908152601e60205260409020805460ff1916911515919091179055565b336000908152601d602090815260408083206001600160a01b0386168452909152812054610ec990836117de565b336000818152601d602090815260408083206001600160a01b0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b610f36611129565b610f3f57600080fd5b601080546001600160a01b039586166001600160a01b0319918216179091556011805494861694821694909417909355601280549285169284169290921790915560138054919093169116179055565b601a5481565b6013546001600160a01b031681565b60055461010090046001600160a01b031681565b600781565b601654600160b01b900460ff1681565b601454600160a01b900460ff1681565b601b546001600160a01b0382166000908152601c60205260408120549091610c5d9190611838565b61100d611129565b61101657600080fd5b6002546040516101009091046001600160a01b0316907ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482090600090a260028054610100600160a81b0319169055565b601660009054906101000a90046001600160a01b03166001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156110b557600080fd5b505af11580156110c9573d6000803e3d6000fd5b50505050565b601654600160a01b900460ff161590565b6110e8611129565b6110f157600080fd5b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b60025461010090046001600160a01b031690565b60025461010090046001600160a01b0316331490565b60018054604080516020601f60026000196101008789161502019095169490940493840181900481028201810190925282815260609390929091830182828015610be35780601f10610bb857610100808354040283529160200191610be3565b60075481565b60195481565b60175481565b6111b9611129565b6111c257600080fd5b601480546001600160a01b0319166001600160a01b0392909216919091179055565b336000908152601d602090815260408083206001600160a01b038616845290915281205480831061123857336000908152601d602090815260408083206001600160a01b0388168452909152812055611267565b6112428184611b02565b336000908152601d602090815260408083206001600160a01b03891684529091529020555b336000818152601d602090815260408083206001600160a01b0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b600b5481565b6016546001600160a01b031681565b6014546001600160a01b031681565b6000826001600160a01b03811661130757600080fd5b611312338585611911565b506001949350505050565b601654600160a81b900460ff1681565b6004805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156113b35780601f10611388576101008083540402835291602001916113b3565b820191906000526020600020905b81548152906001019060200180831161139657829003601f168201915b505050505081565b6016805460ff60a01b1916600160a01b1790556113d6611129565b6113df57600080fd5b601b54306000908152601c602052604081205490916113fe9190611838565b90506000811161143f5760405162461bcd60e51b81526004018080602001828103825260328152602001806128696032913960400191505060405180910390fd5b6040805160028082526060808301845292602083019080368337019050509050308160008151811061146d57fe5b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156114c157600080fd5b505afa1580156114d5573d6000803e3d6000fd5b505050506040513d60208110156114eb57600080fd5b50518151829060019081106114fc57fe5b6001600160a01b0392831660209182029290920181019190915260155460115460405163791ac94760e01b81526004810187815260006024830181905292861660648301819052426084840181905260a060448501908152895160a48601528951969098169763791ac947978b978b969495939460c4019187810191028083838b5b8381101561159657818101518382015260200161157e565b505050509050019650505050505050600060405180830381600087803b1580156115bf57600080fd5b505af11580156115d3573d6000803e3d6000fd5b50506016805460ff60a01b1916905550505050565b6010546001600160a01b031681565b60085481565b611605611129565b61160e57600080fd5b8015611634576016805460ff60b01b1916600160b01b831515021790554260195561164c565b6016805460ff60b01b1916600160b01b831515021790555b50565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156113b35780601f10611388576101008083540402835291602001916113b3565b6001600160a01b031660009081526006602052604090205460ff1690565b601b546016546001600160a01b03166000908152601c6020526040812054909182916116f391611838565b9050611715611700610d5e565b610dae61170e846002611b4a565b8690611b4a565b9392505050565b6001600160a01b039182166000908152601d6020908152604080832093909416825291909152205490565b60095481565b611755611129565b61175e57600080fd5b8015611784576016805460ff60a81b1916600160a81b831515021790554260185561164c565b60168054821515600160a81b0260ff60a81b1990911617905550565b6117a8611129565b6117b157600080fd5b61164c81611ba3565b6015546001600160a01b031681565b601e6020526000908152604090205460ff1681565b600082820183811015611715576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061171583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611c1d565b600081848411156119095760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156118ce5781810151838201526020016118b6565b50505050905090810190601f1680156118fb5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160a01b0383166000908152601e602052604081205460ff1615801561195357506001600160a01b0383166000908152601e602052604090205460ff16155b611993576040805162461bcd60e51b815260206004820152600c60248201526b1a5b97d89b1858dadb1a5cdd60a21b604482015290519081900360640190fd5b601654600160a01b900460ff16156119b7576119b0848484611c82565b9050611715565b6119bf611d14565b156119cc576119cc611d7a565b6119d4611f25565b156119e1576119e1611f65565b6119e96122a2565b156119f6576119f66122cd565b6000611a0d601b5484611b4a90919063ffffffff16565b6001600160a01b0386166000908152601c6020526040902054909150611a339082611b02565b6001600160a01b0386166000908152601c6020526040812091909155611a5986866125f0565b611a635781611a6e565b611a6e868684612644565b6001600160a01b0386166000908152601c6020526040902054909150611a9490826117de565b6001600160a01b038087166000818152601c6020526040902092909255601b54908816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611ae5908590611838565b60408051918252519081900360200190a350600195945050505050565b600061171583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061187a565b3b151590565b600082611b5957506000610c5d565b82820282848281611b6657fe5b04146117155760405162461bcd60e51b815260040180806020018281038252602181526020018061280d6021913960400191505060405180910390fd5b6001600160a01b038116611bb657600080fd5b6002546040516001600160a01b0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600280546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b60008183611c6c5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156118ce5781810151838201526020016118b6565b506000838581611c7857fe5b0495945050505050565b600080611c9a601b5484611b4a90919063ffffffff16565b6001600160a01b0386166000908152601c6020526040902054909150611cc09082611b02565b6001600160a01b038087166000908152601c60205260408082209390935590861681522054611cef90826117de565b6001600160a01b0385166000908152601c602052604090205550600190509392505050565b601654600090600160a81b900460ff168015611d385750601a54660297ee5eafa000115b8015611d4f57506016546001600160a01b03163314155b8015611d655750601654600160a01b900460ff16155b8015610db45750506018546103840142101590565b601654600160a01b900460ff1615611d9157611f23565b6017546018546000914290810391900382611dae82610384611838565b90506000611dbd82600f611b4a565b90506301e13380841015611dd657629eb1009450611e14565b6301e133808410611dec57624f58809450611e14565b6302d1cd408410611e02576227ac409450611e14565b630d2868808410611e14576213d62094505b60005b82811015611e4757611e3c62989680610dae611e33828a6117de565b601a5490611b4a565b601a55600101611e17565b50601a54611e5c90640131c017ff1990611838565b601b55611e77611e6e83610384611b4a565b601854906117de565b601881905550600560019054906101000a90046001600160a01b03166001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611ecd57600080fd5b505af1158015611ee1573d6000803e3d6000fd5b5050601a5460408051918252518493507f72725a3b1e5bd622d6bcd1339bb31279c351abe8f541ac7fd320f24e1b1641f292509081900360200190a250505050505b565b601654600090600160b01b900460ff168015611f4b5750601654600160a01b900460ff16155b8015610db45750506016546001600160a01b031633141590565b6016805460ff60a01b1916600160a01b179055601b546010546001600160a01b03166000908152601c60205260408120549091611fa29190611838565b6010546001600160a01b03166000908152601c602052604080822054308352912054919250611fd191906117de565b306000908152601c6020526040808220929092556010546001600160a01b03168152908120819055612004826002611838565b905060006120128383611b02565b90508061202157505050612293565b6040805160028082526060808301845292602083019080368337019050509050308160008151811061204f57fe5b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156120a357600080fd5b505afa1580156120b7573d6000803e3d6000fd5b505050506040513d60208110156120cd57600080fd5b50518151829060019081106120de57fe5b6001600160a01b0392831660209182029290920181019190915260155460405163791ac94760e01b8152600481018681526000602483018190523060648401819052426084850181905260a060448601908152895160a487015289514799979097169763791ac947978c9795968c9690939260c49091019187820191028083838b5b83811015612178578181015183820152602001612160565b505050509050019650505050505050600060405180830381600087803b1580156121a157600080fd5b505af11580156121b5573d6000803e3d6000fd5b5050505060006121ce8247611b0290919063ffffffff16565b90506000851180156121e05750600081115b15612288576015546010546040805163f305d71960e01b81523060048201526024810189905260006044820181905260648201526001600160a01b0392831660848201524260a48201529051919092169163f305d71991849160c48082019260609290919082900301818588803b15801561225a57600080fd5b505af115801561226e573d6000803e3d6000fd5b50505050506040513d606081101561228557600080fd5b50505b505042601955505050505b6016805460ff60a01b19169055565b601654600090600160a01b900460ff16158015610db45750506016546001600160a01b031633141590565b6016805460ff60a01b1916600160a01b179055601b54306000908152601c602052604081205490916122ff9190611838565b90508061230c5750612293565b60408051600280825260608083018452479390929190602083019080368337019050509050308160008151811061233f57fe5b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561239357600080fd5b505afa1580156123a7573d6000803e3d6000fd5b505050506040513d60208110156123bd57600080fd5b50518151829060019081106123ce57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050601560009054906101000a90046001600160a01b03166001600160a01b031663791ac9478460008430426040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015612488578181015183820152602001612470565b505050509050019650505050505050600060405180830381600087803b1580156124b157600080fd5b505af11580156124c5573d6000803e3d6000fd5b5050505060006124de8347611b0290919063ffffffff16565b6011546009546008549293506000926001600160a01b03909216916125159161250791906117de565b600854610dae908690611b4a565b60405161753091906000818181858888f193505050503d8060008114612557576040519150601f19603f3d011682016040523d82523d6000602084013e61255c565b606091505b50506012546009546008549293506001600160a01b03909116916125929161258491906117de565b600954610dae908690611b4a565b60405161753091906000818181858888f193505050503d80600081146125d4576040519150601f19603f3d011682016040523d82523d6000602084013e6125d9565b606091505b50505050505050506016805460ff60a01b19169055565b6016546000906001600160a01b038481169116148061261c57506016546001600160a01b038381169116145b8015611715575050506001600160a01b031660009081526006602052604090205460ff161590565b600c5460085460165460009291906001600160a01b038681169116141561269057600a54600c54612674916117de565b915061268d600a546008546117de90919063ffffffff16565b90505b60006126b1836126ab600d548861183890919063ffffffff16565b90611b4a565b90506126f26126d1600b546126ab600d548961183890919063ffffffff16565b6013546001600160a01b03166000908152601c6020526040902054906117de565b6013546001600160a01b03166000908152601c602052604090205560095461274790612731906127239085906117de565b600d546126ab908990611838565b306000908152601c6020526040902054906117de565b306000908152601c6020526040902055600754600d5461279191612770916126ab908990611838565b6010546001600160a01b03166000908152601c6020526040902054906117de565b6010546001600160a01b039081166000908152601c6020526040902091909155601b5430918916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906127e6908590611838565b60408051918252519081900360200190a36128018582611b02565b97965050505050505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f776f6e6c7920636f6e747261637420616464726573732c206e6f7420616c6c6f776564206578746572616e6c6c79206f776e6564206163636f756e745468657265206973206e6f204567677320746f6b656e206465706f736974656420696e20746f6b656e20636f6e7472616374a2646970667358221220f9d04d9ce89af4932fab4a9bf5131e43508bb4fedcb8d4b55769b1daac49774264736f6c63430007040033

Deployed Bytecode Sourcemap

13584:16060:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13308:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14844:31;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;14844:31:0;;;;;;;;;;;;;;27115:253;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;27115:253:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;14626:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;29180:102;;;;;;;;;;;;;:::i;14499:120::-;;;;;;;;;;;;;:::i;18451:465::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18451:465:0;;;;;;;;;;;;;;;;;:::i;14882:30::-;;;;;;;;;;;;;:::i;27497:215::-;;;;;;;;;;;;;:::i;14428:27::-;;;;;;;;;;;;;:::i;14069:36::-;;;;;;;;;;;;;:::i;29056:112::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29056:112:0;-1:-1:-1;;;;;29056:112:0;;:::i;:::-;;13494:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13843:26;;;;;;;;;;;;;:::i;15497:31::-;;;;;;;;;;;;;:::i;14112:49::-;;;;;;;;;;;;;:::i;28692:236::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;28692:236:0;;;;;;;;;;:::i;26701:406::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;26701:406:0;;;;;;;;:::i;27900:376::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;27900:376:0;;;;;;;;;;;;;;;;;;;;;;;;:::i;15578:27::-;;;;;;;;;;;;;:::i;14919:22::-;;;;;;;;;;;;;:::i;13878:36::-;;;;;;;;;;;;;:::i;14168:39::-;;;;;;;;;;;;;:::i;15419:29::-;;;;;;;;;;;;;:::i;14981:30::-;;;;;;;;;;;;;:::i;29293:138::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29293:138:0;-1:-1:-1;;;;;29293:138:0;;:::i;12519:126::-;;;;;;;;;;;;;:::i;27813:79::-;;;;;;;;;;;;;:::i;27720:85::-;;;;;;;;;;;;;:::i;28583:101::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28583:101:0;-1:-1:-1;;;;;28583:101:0;;:::i;12254:79::-;;;;;;;;;;;;;:::i;12419:92::-;;;;;;;;;;;;;:::i;13399:87::-;;;;;;;;;;;;;:::i;14312:32::-;;;;;;;;;;;;;:::i;15535:36::-;;;;;;;;;;;;;:::i;15455:35::-;;;;;;;;;;;;;:::i;28940:108::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28940:108:0;-1:-1:-1;;;;;28940:108:0;;:::i;26097:596::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;26097:596:0;;;;;;;;:::i;14462:30::-;;;;;;;;;;;;;:::i;15057:19::-;;;;;;;;;;;;;:::i;14948:26::-;;;;;;;;;;;;;:::i;18228:215::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18228:215:0;;;;;;;;:::i;15389:23::-;;;;;;;;;;;;;:::i;13806:30::-;;;;;;;;;;;;;:::i;23988:565::-;;;;;;;;;;;;;:::i;14801:36::-;;;;;;;;;;;;;:::i;14351:32::-;;;;;;;;;;;;;:::i;25635:252::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25635:252:0;;;;:::i;13771:28::-;;;;;;;;;;;;;:::i;27376:113::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27376:113:0;-1:-1:-1;;;;;27376:113:0;;:::i;28284:291::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28284:291:0;;:::i;25895:194::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;25895:194:0;;;;;;;;;;:::i;14390:31::-;;;;;;;;;;;;;:::i;25397:230::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25397:230:0;;;;:::i;12653:109::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12653:109:0;-1:-1:-1;;;;;12653:109:0;;:::i;15018:32::-;;;;;;;;;;;;;:::i;15788:41::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15788:41:0;-1:-1:-1;;;;;15788:41:0;;:::i;13308:83::-;13378:5;13371:12;;;;;;;;-1:-1:-1;;13371:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13345:13;;13371:12;;13378:5;;13371:12;;13378:5;13371:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13308:83;:::o;14844:31::-;;;-1:-1:-1;;;;;14844:31:0;;:::o;27115:253::-;27258:10;27218:4;27240:29;;;:17;:29;;;;;;;;-1:-1:-1;;;;;27240:38:0;;;;;;;;;;;:46;;;27302:36;;;;;;;27218:4;;27240:38;;27258:10;;27302:36;;;;;;;;-1:-1:-1;27356:4:0;27115:253;;;;;:::o;14626:36::-;;;;:::o;29180:102::-;29262:12;;29180:102;:::o;14499:120::-;;;;:::o;18451:465::-;18594:4;18581:2;-1:-1:-1;;;;;14022:18:0;;14014:27;;;;;;-1:-1:-1;;;;;18625:23:0;::::1;;::::0;;;:17:::1;:23;::::0;;;;;;;18649:10:::1;18625:35:::0;;;;;;;;-1:-1:-1;;18625:50:0::1;18621:225;;18730:104;::::0;;;;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;18730:104:0::1;::::0;;::::1;::::0;;;;-1:-1:-1;;;;;18730:23:0;::::1;-1:-1:-1::0;18730:23:0;;;:17:::1;:23:::0;;;;;18772:10:::1;18730:67:::0;;;;;;;;;;:104:::1;::::0;18802:5;;18730:71:::1;:104::i;:::-;-1:-1:-1::0;;;;;18692:23:0;::::1;;::::0;;;:17:::1;:23;::::0;;;;;;;18716:10:::1;18692:35:::0;;;;;;;:142;18621:225:::1;18856:30;18870:4;18876:2;18880:5;18856:13;:30::i;:::-;-1:-1:-1::0;18904:4:0::1;::::0;18451:465;-1:-1:-1;;;;;18451:465:0:o;14882:30::-;;;-1:-1:-1;;;;;14882:30:0;;:::o;27497:215::-;27673:16;;27643:4;;-1:-1:-1;;;;;27643:4:0;;;27550:7;27630:18;;;:12;:18;;;;;;;27619:4;;;;;27606:18;;;;;27550:7;;27590:114;;27673:16;;27591:58;;27630:18;27591:34;;-1:-1:-1;;15253:54:0;27591:14;:34::i;:::-;:38;;:58::i;:::-;27590:64;;:114::i;:::-;27570:134;;27497:215;:::o;14428:27::-;;;;:::o;14069:36::-;14104:1;14069:36;:::o;29056:112::-;12381:9;:7;:9::i;:::-;12373:18;;;;;;29119:12:::1;:41:::0;;-1:-1:-1;;;;;29119:41:0;;::::1;;;-1:-1:-1::0;;;;;;29119:41:0;;::::1;::::0;;;::::1;::::0;;29056:112::o;13494:83::-;13560:9;;;;13494:83;:::o;13843:26::-;;;;;;:::o;15497:31::-;;;;:::o;14112:49::-;-1:-1:-1;;14112:49:0;:::o;28692:236::-;12381:9;:7;:9::i;:::-;12373:18;;;;;;28788:23:::1;28799:11;28788:10;:23::i;:::-;28780:95;;;;-1:-1:-1::0;;;28780:95:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;28886:22:0;;;::::1;;::::0;;;:9:::1;:22;::::0;;;;:30;;-1:-1:-1;;28886:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;28692:236::o;26701:406::-;26882:10;26801:4;26864:29;;;:17;:29;;;;;;;;-1:-1:-1;;;;;26864:62:0;;;;;;;;;;:78;;26931:10;26864:66;:78::i;:::-;26841:10;26823:29;;;;:17;:29;;;;;;;;-1:-1:-1;;;;;26823:38:0;;;;;;;;;;;;:119;;;26958;;;;;;26823:38;;26958:119;;;;;;;;;;;-1:-1:-1;27095:4:0;26701:406;;;;:::o;27900:376::-;12381:9;:7;:9::i;:::-;12373:18;;;;;;28101:21:::1;:46:::0;;-1:-1:-1;;;;;28101:46:0;;::::1;-1:-1:-1::0;;;;;;28101:46:0;;::::1;;::::0;;;28158:16:::1;:36:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;28205:15:::1;:34:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;28250:7:::1;:18:::0;;;;;::::1;::::0;::::1;;::::0;;27900:376::o;15578:27::-;;;;:::o;14919:22::-;;;-1:-1:-1;;;;;14919:22:0;;:::o;13878:36::-;;;;;;-1:-1:-1;;;;;13878:36:0;;:::o;14168:39::-;14206:1;14168:39;:::o;15419:29::-;;;-1:-1:-1;;;15419:29:0;;;;;:::o;14981:30::-;;;-1:-1:-1;;;14981:30:0;;;;;:::o;29293:138::-;29406:16;;-1:-1:-1;;;;;29384:17:0;;29357:7;29384:17;;;:12;:17;;;;;;29357:7;;29384:39;;:17;:21;:39::i;12519:126::-;12381:9;:7;:9::i;:::-;12373:18;;;;;;12600:6:::1;::::0;12581:26:::1;::::0;12600:6:::1;::::0;;::::1;-1:-1:-1::0;;;;;12600:6:0::1;::::0;12581:26:::1;::::0;;;::::1;12618:6;:19:::0;;-1:-1:-1;;;;;;12618:19:0::1;::::0;;12519:126::o;27813:79::-;27872:4;;;;;;;;;-1:-1:-1;;;;;27872:4:0;-1:-1:-1;;;;;27855:27:0;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27813:79::o;27720:85::-;27791:6;;-1:-1:-1;;;27791:6:0;;;;27790:7;;27720:85::o;28583:101::-;12381:9;:7;:9::i;:::-;12373:18;;;;;;-1:-1:-1;;;;;28650:19:0::1;;::::0;;;:12:::1;:19;::::0;;;;:26;;-1:-1:-1;;28650:26:0::1;28672:4;28650:26;::::0;;28583:101::o;12254:79::-;12319:6;;;;;-1:-1:-1;;;;;12319:6:0;;12254:79::o;12419:92::-;12497:6;;;;;-1:-1:-1;;;;;12497:6:0;12483:10;:20;;12419:92::o;13399:87::-;13471:7;13464:14;;;;;;;;-1:-1:-1;;13464:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13438:13;;13464:14;;13471:7;;13464:14;;13471:7;13464:14;;;;;;;;;;;;;;;;;;;;;;;;14312:32;;;;:::o;15535:36::-;;;;:::o;15455:35::-;;;;:::o;28940:108::-;12381:9;:7;:9::i;:::-;12373:18;;;;;;29014:11:::1;:26:::0;;-1:-1:-1;;;;;;29014:26:0::1;-1:-1:-1::0;;;;;29014:26:0;;;::::1;::::0;;;::::1;::::0;;28940:108::o;26097:596::-;26261:10;26202:4;26243:29;;;:17;:29;;;;;;;;-1:-1:-1;;;;;26243:38:0;;;;;;;;;;26296:27;;;26292:237;;26358:10;26381:1;26340:29;;;:17;:29;;;;;;;;-1:-1:-1;;;;;26340:38:0;;;;;;;;;:42;26292:237;;;26456:61;:8;26487:15;26456:12;:61::i;:::-;26433:10;26415:29;;;;:17;:29;;;;;;;;-1:-1:-1;;;;;26415:38:0;;;;;;;;;:102;26292:237;26567:10;26614:29;;;;:17;:29;;;;;;;;-1:-1:-1;;;;;26544:119:0;;26614:38;;;;;;;;;;;26544:119;;;;;;;;;26567:10;26544:119;;;;;;;;;;;-1:-1:-1;26681:4:0;;26097:596;-1:-1:-1;;;26097:596:0:o;14462:30::-;;;;:::o;15057:19::-;;;-1:-1:-1;;;;;15057:19:0;;:::o;14948:26::-;;;-1:-1:-1;;;;;14948:26:0;;:::o;18228:215::-;18355:4;18333:2;-1:-1:-1;;;;;14022:18:0;;14014:27;;;;;;18377:36:::1;18391:10;18403:2;18407:5;18377:13;:36::i;:::-;-1:-1:-1::0;18431:4:0::1;::::0;18228:215;-1:-1:-1;;;;18228:215:0:o;15389:23::-;;;-1:-1:-1;;;15389:23:0;;;;;:::o;13806:30::-;;;;;;;;;;;;;;;-1:-1:-1;;13806:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;23988:565::-;15140:6;:13;;-1:-1:-1;;;;15140:13:0;-1:-1:-1;;;15140:13:0;;;12381:9:::1;:7;:9::i;:::-;12373:18;;;::::0;::::1;;24117:16:::2;::::0;24106:4:::2;24062:20;24085:27:::0;;;:12:::2;:27;::::0;;;;;24062:20;;24085:49:::2;::::0;:27;:31:::2;:49::i;:::-;24062:72;;24169:1;24154:12;:16;24145:79;;;;-1:-1:-1::0;;;24145:79:0::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24259:16;::::0;;24273:1:::2;24259:16:::0;;;24235:21:::2;24259:16:::0;;::::2;::::0;;24235:21;24259:16:::2;::::0;::::2;::::0;;::::2;::::0;::::2;;::::0;-1:-1:-1;24259:16:0::2;24235:40;;24304:4;24286;24291:1;24286:7;;;;;;;;-1:-1:-1::0;;;;;24286:23:0;;::::2;:7;::::0;;::::2;::::0;;;;;;:23;;;;24330:6:::2;::::0;:13:::2;::::0;;-1:-1:-1;;;24330:13:0;;;;:6;;;::::2;::::0;:11:::2;::::0;:13:::2;::::0;;::::2;::::0;24286:7;;24330:13;;;;;:6;:13;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;24330:13:0;24320:7;;:4;;24325:1:::2;::::0;24320:7;::::2;;;;;-1:-1:-1::0;;;;;24320:23:0;;::::2;:7;::::0;;::::2;::::0;;;;;;:23;;;;24354:6:::2;::::0;24488:16:::2;::::0;24354:191:::2;::::0;-1:-1:-1;;;24354:191:0;;::::2;::::0;::::2;::::0;;;:6:::2;:191:::0;;;;;;24488:16;;::::2;24354:191:::0;;;;;;24519:15:::2;24354:191:::0;;;;;;;;;;;;;;;;;;;;;:6;;;::::2;::::0;:57:::2;::::0;24426:12;;24469:4;;24488:16;;24519:15;;24354:191;;;;;::::2;::::0;::::2;::::0;;;:6;:191:::2;;;;;;;::::0;;::::2;::::0;;;::::2;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;15176:6:0;:14;;-1:-1:-1;;;;15176:14:0;;;-1:-1:-1;;;;23988:565:0:o;14801:36::-;;;-1:-1:-1;;;;;14801:36:0;;:::o;14351:32::-;;;;:::o;25635:252::-;12381:9;:7;:9::i;:::-;12373:18;;;;;;25709:5:::1;25706:174;;;25731:17;:25:::0;;-1:-1:-1;;;;25731:25:0::1;-1:-1:-1::0;;;25731:25:0;::::1;;;;::::0;;25795:15:::1;25771:21;:39:::0;25706:174:::1;;;25843:17;:25:::0;;-1:-1:-1;;;;25843:25:0::1;-1:-1:-1::0;;;25843:25:0;::::1;;;;::::0;;25706:174:::1;25635:252:::0;:::o;13771:28::-;;;;;;;;;;;;;;;-1:-1:-1;;13771:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27376:113;-1:-1:-1;;;;;27462:19:0;27438:4;27462:19;;;:12;:19;;;;;;;;;27376:113::o;28284:291::-;28454:16;;28444:4;;-1:-1:-1;;;;;28444:4:0;28379:7;28431:18;;;:12;:18;;;;;;28379:7;;;;28431:40;;:22;:40::i;:::-;28404:67;;28502:65;28544:22;:20;:22::i;:::-;28502:37;28515:23;:16;28536:1;28515:20;:23::i;:::-;28502:8;;:12;:37::i;:65::-;28482:85;28284:291;-1:-1:-1;;;28284:291:0:o;25895:194::-;-1:-1:-1;;;;;26047:25:0;;;26015:7;26047:25;;;:17;:25;;;;;;;;:34;;;;;;;;;;;;;25895:194::o;14390:31::-;;;;:::o;25397:230::-;12381:9;:7;:9::i;:::-;12373:18;;;;;;25466:5:::1;25462:158;;;25488:11;:19:::0;;-1:-1:-1;;;;25488:19:0::1;-1:-1:-1::0;;;25488:19:0;::::1;;;;::::0;;25541:15:::1;25522:16;:34:::0;25462:158:::1;;;25589:11;:19:::0;;;::::1;;-1:-1:-1::0;;;25589:19:0::1;-1:-1:-1::0;;;;25589:19:0;;::::1;;::::0;;25397:230;:::o;12653:109::-;12381:9;:7;:9::i;:::-;12373:18;;;;;;12726:28:::1;12745:8;12726:18;:28::i;15018:32::-:0;;;-1:-1:-1;;;;;15018:32:0;;:::o;15788:41::-;;;;;;;;;;;;;;;:::o;2525:181::-;2583:7;2615:5;;;2639:6;;;;2631:46;;;;;-1:-1:-1;;;2631:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;3350:132;3408:7;3435:39;3439:1;3442;3435:39;;;;;;;;;;;;;;;;;:3;:39::i;2858:226::-;2978:7;3014:12;3006:6;;;;2998:29;;;;-1:-1:-1;;;2998:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3050:5:0;;;2858:226::o;19271:1080::-;-1:-1:-1;;;;;19425:17:0;;19397:4;19425:17;;;:9;:17;;;;;;;;19424:18;:43;;;;-1:-1:-1;;;;;;19447:20:0;;;;;;:9;:20;;;;;;;;19446:21;19424:43;19416:68;;;;;-1:-1:-1;;;19416:68:0;;;;;;;;;;;;-1:-1:-1;;;19416:68:0;;;;;;;;;;;;;;;19501:6;;-1:-1:-1;;;19501:6:0;;;;19497:87;;;19531:41;19546:6;19554:9;19565:6;19531:14;:41::i;:::-;19524:48;;;;19497:87;19598:14;:12;:14::i;:::-;19594:54;;;19628:8;:6;:8::i;:::-;19664:20;:18;:20::i;:::-;19660:67;;;19701:14;:12;:14::i;:::-;19743:16;:14;:16::i;:::-;19739:59;;;19776:10;:8;:10::i;:::-;19810:17;19830:28;19841:16;;19830:6;:10;;:28;;;;:::i;:::-;-1:-1:-1;;;;;19892:20:0;;;;;;:12;:20;;;;;;19810:48;;-1:-1:-1;19892:35:0;;19810:48;19892:24;:35::i;:::-;-1:-1:-1;;;;;19869:20:0;;;;;;:12;:20;;;;;:58;;;;19966:32;19882:6;19988:9;19966:13;:32::i;:::-;:110;;20067:9;19966:110;;;20014:37;20022:6;20030:9;20041;20014:7;:37::i;:::-;-1:-1:-1;;;;;20113:23:0;;;;;;:12;:23;;;;;;19938:138;;-1:-1:-1;20113:70:0;;19938:138;20113:27;:70::i;:::-;-1:-1:-1;;;;;20087:23:0;;;;;;;:12;:23;;;;;:96;;;;20293:16;;20203:118;;;;;;20271:39;;:17;;:21;:39::i;:::-;20203:118;;;;;;;;;;;;;;;-1:-1:-1;20339:4:0;;19271:1080;-1:-1:-1;;;;;19271:1080:0:o;2714:136::-;2772:7;2799:43;2803:1;2806;2799:43;;;;;;;;;;;;;;;;;:3;:43::i;29439:165::-;29552:17;29588:8;;;29439:165::o;3092:250::-;3150:7;3174:6;3170:47;;-1:-1:-1;3204:1:0;3197:8;;3170:47;3241:5;;;3245:1;3241;:5;:1;3265:5;;;;;:10;3257:56;;;;-1:-1:-1;;;3257:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12770:187;-1:-1:-1;;;;;12844:22:0;;12836:31;;;;;;12904:6;;12883:38;;-1:-1:-1;;;;;12883:38:0;;;;12904:6;;;;;12883:38;;;;;12932:6;:17;;-1:-1:-1;;;;;12932:17:0;;;;;-1:-1:-1;;;;;;12932:17:0;;;;;;;;;12770:187::o;3490:225::-;3610:7;3645:12;3638:5;3630:28;;;;-1:-1:-1;;;3630:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3669:9;3685:1;3681;:5;;;;;;;3490:225;-1:-1:-1;;;;;3490:225:0:o;18924:339::-;19042:4;19059:17;19079:28;19090:16;;19079:6;:10;;:28;;;;:::i;:::-;-1:-1:-1;;;;;19139:18:0;;;;;;:12;:18;;;;;;19059:48;;-1:-1:-1;19139:33:0;;19059:48;19139:22;:33::i;:::-;-1:-1:-1;;;;;19118:18:0;;;;;;;:12;:18;;;;;;:54;;;;19202:16;;;;;;;:31;;19223:9;19202:20;:31::i;:::-;-1:-1:-1;;;;;19183:16:0;;;;;;:12;:16;;;;;:50;-1:-1:-1;19251:4:0;;-1:-1:-1;18924:339:0;;;;;:::o;24783:274::-;24867:11;;24830:4;;-1:-1:-1;;;24867:11:0;;;;:55;;;;-1:-1:-1;24896:12:0;;15354:26;-1:-1:-1;24867:55:0;:90;;;;-1:-1:-1;24953:4:0;;-1:-1:-1;;;;;24953:4:0;24939:10;:18;;24867:90;:115;;;;-1:-1:-1;24976:6:0;;-1:-1:-1;;;24976:6:0;;;;24975:7;24867:115;:182;;;;-1:-1:-1;;25019:16:0;;25038:10;25019:29;24999:15;:50;;;24783:274::o;17084:1136::-;17137:6;;-1:-1:-1;;;17137:6:0;;;;17132:21;;;17146:7;;17132:21;17238:20;;17307:16;;17163:18;;17220:15;:38;;;;17289:34;;17163:18;17350:25;17289:34;17364:10;17350:13;:25::i;:::-;17334:41;-1:-1:-1;17386:13:0;17402;17334:41;17412:2;17402:9;:13::i;:::-;17386:29;;17453:8;17432:17;:30;17428:370;;;17492:8;17479:21;;17428:370;;;17544:8;17522:17;:31;17518:280;;17583:7;17570:20;;17518:280;;;17634:20;17612:17;:43;17608:190;;17685:7;17672:20;;17608:190;;;17736:12;17714:17;:35;17710:88;;17779:7;17766:20;;17710:88;17815:9;17810:190;17834:5;17830:1;:9;17810:190;;;17876:112;17970:17;17876:71;17911:35;17970:17;17935:10;17911:23;:35::i;:::-;17876:12;;;:34;:71::i;:112::-;17861:12;:127;17841:3;;17810:190;;;-1:-1:-1;18046:12:0;;18031:28;;-1:-1:-1;;15253:54:0;18031:14;:28::i;:::-;18012:16;:47;18089:43;18110:21;:5;18120:10;18110:9;:21::i;:::-;18089:16;;;:20;:43::i;:::-;18070:16;:62;;;;18145:12;;;;;;;;;-1:-1:-1;;;;;18145:12:0;-1:-1:-1;;;;;18145:17:0;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18199:12:0;;18182:30;;;;;;;18192:5;;-1:-1:-1;18182:30:0;;-1:-1:-1;18182:30:0;;;;;;;;17084:1136;;;;;;:::o;25065:176::-;25155:17;;25118:4;;-1:-1:-1;;;25155:17:0;;;;:42;;;;-1:-1:-1;25191:6:0;;-1:-1:-1;;;25191:6:0;;;;25190:7;25155:42;:78;;;;-1:-1:-1;;25229:4:0;;-1:-1:-1;;;;;25229:4:0;25215:10;:18;;;25065:176::o;21412:1407::-;15140:6;:13;;-1:-1:-1;;;;15140:13:0;-1:-1:-1;;;15140:13:0;;;21549:16:::1;::::0;21508:21:::1;::::0;-1:-1:-1;;;;;21508:21:0::1;15140:13:::0;21495:35;;;:12:::1;:35;::::0;;;;;15140:13;;21495:81:::1;::::0;:35;:39:::1;:81::i;:::-;21676:21;::::0;-1:-1:-1;;;;;21676:21:0::1;21663:35;::::0;;;:12:::1;:35;::::0;;;;;;21638:4:::1;21617:27:::0;;;;;21465:111;;-1:-1:-1;21617:92:0::1;::::0;:27;:31:::1;:92::i;:::-;21608:4;21587:27;::::0;;;:12:::1;:27;::::0;;;;;:122;;;;21733:21:::1;::::0;-1:-1:-1;;;;;21733:21:0::1;21720:35:::0;;;;;:39;;;21796:26:::1;:19:::0;21820:1:::1;21796:23;:26::i;:::-;21770:52:::0;-1:-1:-1;21833:20:0::1;21856:40;:19:::0;21770:52;21856:23:::1;:40::i;:::-;21833:63:::0;-1:-1:-1;21913:17:0;21909:57:::1;;21948:7;;;;;21909:57;22000:16;::::0;;22014:1:::1;22000:16:::0;;;21976:21:::1;22000:16:::0;;::::1;::::0;;21976:21;22000:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;22000:16:0::1;21976:40;;22045:4;22027;22032:1;22027:7;;;;;;;;-1:-1:-1::0;;;;;22027:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;22071:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;22071:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;22027:7;;22071:13;;;;;:6;:13;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;22071:13:0;22061:7;;:4;;22066:1:::1;::::0;22061:7;::::1;;;;;-1:-1:-1::0;;;;;22061:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;22157:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;22157:188:0;;::::1;::::0;::::1;::::0;;;22097:21:::1;22157:188:::0;;;;;;22299:4:::1;22157:188:::0;;;;;;22319:15:::1;22157:188:::0;;;;;;;;;;;;;;;;;;;;;22121:21:::1;::::0;22157:6;;;::::1;::::0;:57:::1;::::0;22229:12;;22097:21;;22272:4;;22157:188;;;;;;;;;;::::1;::::0;::::1;::::0;;;22097:21;22157:188:::1;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;22358:26;22387:40;22413:13;22387:21;:25;;:40;;;;:::i;:::-;22358:69;;22462:1;22444:15;:19;:45;;;;;22488:1;22467:18;:22;22444:45;22440:322;;;22506:6;::::0;22680:21:::1;::::0;22506:244:::1;::::0;;-1:-1:-1;;;22506:244:0;;22582:4:::1;22506:244;::::0;::::1;::::0;;;;;;;:6:::1;:244:::0;;;;;;;;;;-1:-1:-1;;;;;22680:21:0;;::::1;22506:244:::0;;;;22720:15:::1;22506:244:::0;;;;;;:6;;;::::1;::::0;:22:::1;::::0;22536:18;;22506:244;;;;;::::1;::::0;;;;;;;;;22536:18;22506:6;:244;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;22440:322:0::1;-1:-1:-1::0;;22796:15:0::1;22772:21;:39:::0;-1:-1:-1;;;;15164:1:0::1;15176:6:::0;:14;;-1:-1:-1;;;;15176:14:0;;;21412:1407::o;25249:140::-;25337:6;;25298:4;;-1:-1:-1;;;25337:6:0;;;;25336:7;:42;;;;-1:-1:-1;;25374:4:0;;-1:-1:-1;;;;;25374:4:0;25360:10;:18;;;25249:140::o;22827:1153::-;15140:6;:13;;-1:-1:-1;;;;15140:13:0;-1:-1:-1;;;15140:13:0;;;22933:16:::1;::::0;22922:4:::1;15140:13:::0;22901:27;;;:12:::1;:27;::::0;;;;;15140:13;;22901:49:::1;::::0;:27;:31:::1;:49::i;:::-;22878:72:::0;-1:-1:-1;22967:17:0;22963:56:::1;;23001:7;;;22963:56;23111:16;::::0;;23125:1:::1;23111:16:::0;;;23087:21:::1;23111:16:::0;;::::1;::::0;;23055:21:::1;::::0;23087;;23111:16;23125:1;23111:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;23111:16:0::1;23087:40;;23156:4;23138;23143:1;23138:7;;;;;;;;-1:-1:-1::0;;;;;23138:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;23182:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;23182:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;23138:7;;23182:13;;;;;:6;:13;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;23182:13:0;23172:7;;:4;;23177:1:::1;::::0;23172:7;::::1;;;;;;;;;;:23;-1:-1:-1::0;;;;;23172:23:0::1;;;-1:-1:-1::0;;;;;23172:23:0::1;;;::::0;::::1;23218:6;;;;;;;;;-1:-1:-1::0;;;;;23218:6:0::1;-1:-1:-1::0;;;;;23218:57:0::1;;23290:12;23317:1;23333:4;23360;23380:15;23218:188;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;23218:188:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;23419:33;23455:64;23495:13;23455:21;:25;;:64;;;;:::i;:::-;23559:16;::::0;23684:10:::1;::::0;23668:11:::1;::::0;23419:100;;-1:-1:-1;23533:12:0::1;::::0;-1:-1:-1;;;;;23559:16:0;;::::1;::::0;23603:107:::1;::::0;23668:27:::1;::::0;:11;:15:::1;:27::i;:::-;23633:11;::::0;23603:42:::1;::::0;:25;;:29:::1;:42::i;:107::-;23551:199;::::0;23730:5:::1;::::0;23551:199;::::1;::::0;;;;;23730:5;23551:199:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;23783:15:0::1;::::0;23906:10:::1;::::0;23890:11:::1;::::0;23532:218;;-1:-1:-1;;;;;;23783:15:0;;::::1;::::0;23826:106:::1;::::0;23890:27:::1;::::0;:11;:15:::1;:27::i;:::-;23856:10;::::0;23826:41:::1;::::0;:25;;:29:::1;:41::i;:106::-;23775:197;::::0;23952:5:::1;::::0;23775:197;::::1;::::0;;;;;23952:5;23775:197:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;;;15176:6:0;:14;;-1:-1:-1;;;;15176:14:0;;;22827:1153::o;24561:214::-;24704:4;;24660;;-1:-1:-1;;;;;24704:12:0;;;:4;;:12;;:26;;-1:-1:-1;24720:4:0;;-1:-1:-1;;;;;24720:10:0;;;:4;;:10;24704:26;24703:64;;;;-1:-1:-1;;;;;;;;24749:18:0;;;;;:12;:18;;;;;;;;24748:19;;24561:214::o;20359:1045::-;20523:8;;20565:11;;20606:4;;20483:7;;20523:8;20565:11;-1:-1:-1;;;;;20593:17:0;;;20606:4;;20593:17;20589:137;;;20652:7;;20639:8;;:21;;:12;:21::i;:::-;20627:33;;20690:24;20706:7;;20690:11;;:15;;:24;;;;:::i;:::-;20675:39;;20589:137;20738:17;20758:44;20792:9;20758:29;20772:14;;20758:9;:13;;:29;;;;:::i;:::-;:33;;:44::i;:::-;20738:64;;20846:96;20886:45;20920:10;;20886:29;20900:14;;20886:9;:13;;:29;;;;:::i;:45::-;20859:7;;-1:-1:-1;;;;;20859:7:0;20846:21;;;;:12;:21;;;;;;;:25;:96::i;:::-;20835:7;;-1:-1:-1;;;;;20835:7:0;20822:21;;;;:12;:21;;;;;:120;21080:10;;20983:120;;21029:63;;21063:28;;:12;;:16;:28::i;:::-;21043:14;;21029:29;;:9;;:13;:29::i;:63::-;21004:4;20983:27;;;;:12;:27;;;;;;;:31;:120::i;:::-;20974:4;20953:27;;;;:12;:27;;;;;:150;21240:12;;21220:14;;21152:112;;21206:47;;:29;;:9;;:13;:29::i;:47::-;21165:21;;-1:-1:-1;;;;;21165:21:0;21152:35;;;;:12;:35;;;;;;;:39;:112::i;:::-;21127:21;;-1:-1:-1;;;;;21127:21:0;;;21114:35;;;;:12;:35;;;;;:150;;;;21336:16;;21315:4;;21290:64;;;;;21322:31;;:9;;:13;:31::i;:::-;21290:64;;;;;;;;;;;;;;;21372:24;:9;21386;21372:13;:24::i;:::-;21365:31;20359:1045;-1:-1:-1;;;;;;;20359:1045:0:o

Swarm Source

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