ETH Price: $3,398.77 (+1.92%)

Token

Ganymede | t.me/GanymedeFLC (GANYMEDE)
 

Overview

Max Total Supply

1,000,000,000,000,000 GANYMEDE

Holders

332

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
222,248,911,798.963681021 GANYMEDE

Value
$0.00
0x637114f66f00c63b44c09ccd048a89e9410e9f8c
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:
Ganymede

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-07-16
*/

// $GANYMEDE | Ganymede Token
// Telegram: https://t.me/GanymedeFLC

// Fair Launch, no Dev Tokens. 100% LP.
// Snipers will be nuked.

// LP Burn on launch.
// Ownership will be renounced 30 minutes after launch.

// Slippage Recommended: 12%
// Variable tax, converts to zero-fee, RFI-Only, or team multisig at Community request
// Audit & Fair Launch handled by https://t.me/FairLaunchCalls
// Community-owned token, Ape Play

/**
 *         _..._
 *       .'     '.      _
 *      /    .-""-\   _/ \
 *    .-|   /:.   |  |   |
 *    |  \  |:.   /.-'-./
 *    | .-'-;:__.'    =/
 *    .'=  *=|     _.='
 *   /   _.  |    ;
 *  ;-.-'|    \   |
 * /   | \    _\  _\
 * \__/'._;.  ==' ==\
 *          \    \   |
 *          /    /   /
 *          /-._/-._/
 *   jgs    \   `\  \
 *           `-._/._/
*/

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

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

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

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

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

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

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

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

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

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

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

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

        return c;
    }

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

    /**
    * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
    * overflow (when the result is negative).
    *
    * Counterpart to Solidity's `-` operator.
    *
    * Requirements:
    *
    * - Subtraction cannot overflow.
    */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
    * @dev Returns the multiplication of two unsigned integers, reverting on
    * overflow.
    *
    * Counterpart to Solidity's `*` operator.
    *
    * Requirements:
    *
    * - Multiplication cannot overflow.
    */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

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

        return c;
    }

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

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

        return c;
    }

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

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

library Address {
    /**
    * @dev Returns true if `account` is a contract.
    *
    * [IMPORTANT]
    * ====
    * It is unsafe to assume that an address for which this function returns
    * false is an externally-owned account (EOA) and not a contract.
    *
    * Among others, `isContract` will return false for the following
    * types of addresses:
    *
    *  - an externally-owned account
    *  - a contract in construction
    *  - an address where a contract will be created
    *  - an address where a contract lived, but was destroyed
    * ====
    */
    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

    /**
    * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
    * `recipient`, forwarding all available gas and reverting on errors.
    *
    * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
    * of certain opcodes, possibly making contracts go over the 2300 gas limit
    * imposed by `transfer`, making them unable to receive funds via
    * `transfer`. {sendValue} removes this limitation.
    *
    * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
    *
    * IMPORTANT: because control is transferred to `recipient`, care must be
    * taken to not create reentrancy vulnerabilities. Consider using
    * {ReentrancyGuard} or the
    * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
    */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    /**
    * @dev Performs a Solidity function call using a low level `call`. A
    * plain`call` is an unsafe replacement for a function call: use this
    * function instead.
    *
    * If `target` reverts with a revert reason, it is bubbled up by this
    * function (like regular Solidity function calls).
    *
    * Returns the raw returned data. To convert to the expected return value,
    * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
    *
    * Requirements:
    *
    * - `target` must be a contract.
    * - calling `target` with `data` must not revert.
    *
    * _Available since v3.1._
    */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    /**
    * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
    * `errorMessage` as a fallback revert reason when `target` reverts.
    *
    * _Available since v3.1._
    */
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
    * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
    * but also transferring `value` wei to `target`.
    *
    * Requirements:
    *
    * - the calling contract must have an ETH balance of at least `value`.
    * - the called Solidity function must be `payable`.
    *
    * _Available since v3.1._
    */
    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
    * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
    * with `errorMessage` as a fallback revert reason when `target` reverts.
    *
    * _Available since v3.1._
    */
    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

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

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

    /**
    * @dev Initializes the contract setting the deployer as the initial owner.
    */
    constructor () internal {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

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

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

}

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

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

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

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

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

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

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

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

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

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

    //NB: This is an INTERFACE FUNCTION on the default UniSwapV2 Library.
    //Feel free to check the contract itself - there's no implementation/way to use it to mint tokens.
    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);

    //NB: This is an INTERFACE FUNCTION on the default UniSwapV2 Library.
    //Feel free to check the contract itself - there's no implementation/way to use it to mint tokens.
    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

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

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

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

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

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

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

    mapping (address => bool) private _isExcludedFromFee;

    mapping (address => bool) private _isExcluded;
    address[] private _excluded;

    uint256 private constant MAX = ~uint256(0);
    uint256 private _tTotal = 1000000000000000000000000;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 public launchTime;
    mapping (address => bool) private _isSniper;
    address[] private _confirmedSnipers;

    string private _name = 'Ganymede | t.me/GanymedeFLC';
    string private _symbol = 'GANYMEDE';
    uint8 private _decimals = 9;

    uint256 private _taxFee = 0;
    uint256 private _teamDev = 0;
    uint256 private _previousTaxFee = _taxFee;
    uint256 private _previousTeamDev = _teamDev;

    address payable private _teamDevAddress;
    address payable private _multisigAddress;
    address private _router = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address private _dead = address(0x000000000000000000000000000000000000dEaD);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool inSwap = false;
    bool public swapEnabled = true;
    bool public tradingOpen = false;
    bool private snipeProtectionOn = false;

    uint256 public _maxTxAmount = 10000000000000000000000;
    uint256 private _numOfTokensToExchangeForTeamDev = 50000000000000000;
    bool _txLimitsEnabled = true;

    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event SwapEnabledUpdated(bool enabled);

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

    constructor () public {
        _rOwned[_msgSender()] = _rTotal;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    function initContract() external onlyOwner() {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(_router);
        // Create a uniswap pair for this new token
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
        .createPair(address(this), _uniswapV2Router.WETH());

        // set the rest of the contract variables
        uniswapV2Router = _uniswapV2Router;
        // Exclude owner and this contract from fee
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
    }

    function initDefaultLists() external onlyOwner() {
        // List of front-runner & sniper bots from t.me/FairLaunchCalls
        blacklistFrontrunnerBot(address(0xA39C50bf86e15391180240938F469a7bF4fDAe9a));
        blacklistFrontrunnerBot(address(0xFFFFF6E70842330948Ca47254F2bE673B1cb0dB7));
        blacklistFrontrunnerBot(address(0xD334C5392eD4863C81576422B968C6FB90EE9f79));
        blacklistFrontrunnerBot(address(0x20f6fCd6B8813c4f98c0fFbD88C87c0255040Aa3));
        blacklistFrontrunnerBot(address(0xC6bF34596f74eb22e066a878848DfB9fC1CF4C65));
        blacklistFrontrunnerBot(address(0x231DC6af3C66741f6Cf618884B953DF0e83C1A2A));
        blacklistFrontrunnerBot(address(0x00000000003b3cc22aF3aE1EAc0440BcEe416B40));
        blacklistFrontrunnerBot(address(0x42d4C197036BD9984cA652303e07dD29fA6bdB37));
        blacklistFrontrunnerBot(address(0x22246F9BCa9921Bfa9A3f8df5baBc5Bc8ee73850));
        blacklistFrontrunnerBot(address(0xbCb05a3F85d34f0194C70d5914d5C4E28f11Cc02));
        blacklistFrontrunnerBot(address(0x5B83A351500B631cc2a20a665ee17f0dC66e3dB7));
        blacklistFrontrunnerBot(address(0x39608b6f20704889C51C0Ae28b1FCA8F36A5239b));
        blacklistFrontrunnerBot(address(0x136F4B5b6A306091b280E3F251fa0E21b1280Cd5));
        blacklistFrontrunnerBot(address(0x4aEB32e16DcaC00B092596ADc6CD4955EfdEE290));
        blacklistFrontrunnerBot(address(0xe986d48EfeE9ec1B8F66CD0b0aE8e3D18F091bDF));
        blacklistFrontrunnerBot(address(0x59341Bc6b4f3Ace878574b05914f43309dd678c7));
        blacklistFrontrunnerBot(address(0xc496D84215d5018f6F53E7F6f12E45c9b5e8e8A9));
        blacklistFrontrunnerBot(address(0x39608b6f20704889C51C0Ae28b1FCA8F36A5239b));
        blacklistFrontrunnerBot(address(0xfe9d99ef02E905127239E85A611c29ad32c31c2F));
        blacklistFrontrunnerBot(address(0x9eDD647D7d6Eceae6bB61D7785Ef66c5055A9bEE));
        blacklistFrontrunnerBot(address(0x72b30cDc1583224381132D379A052A6B10725415));
        blacklistFrontrunnerBot(address(0x7100e690554B1c2FD01E8648db88bE235C1E6514));
        blacklistFrontrunnerBot(address(0x000000917de6037d52b1F0a306eeCD208405f7cd));
        blacklistFrontrunnerBot(address(0x59903993Ae67Bf48F10832E9BE28935FEE04d6F6));
        blacklistFrontrunnerBot(address(0x00000000000003441d59DdE9A90BFfb1CD3fABf1));
        blacklistFrontrunnerBot(address(0x0000000000007673393729D5618DC555FD13f9aA));
        blacklistFrontrunnerBot(address(0xA3b0e79935815730d942A444A84d4Bd14A339553));
        blacklistFrontrunnerBot(address(0x000000005804B22091aa9830E50459A15E7C9241));
        blacklistFrontrunnerBot(address(0x323b7F37d382A68B0195b873aF17CeA5B67cd595));
        blacklistFrontrunnerBot(address(0x6dA4bEa09C3aA0761b09b19837D9105a52254303));
        blacklistFrontrunnerBot(address(0x000000000000084e91743124a982076C59f10084));
        blacklistFrontrunnerBot(address(0x1d6E8BAC6EA3730825bde4B005ed7B2B39A2932d));
        blacklistFrontrunnerBot(address(0xfad95B6089c53A0D1d861eabFaadd8901b0F8533));
        blacklistFrontrunnerBot(address(0x9282dc5c422FA91Ff2F6fF3a0b45B7BF97CF78E7));
        blacklistFrontrunnerBot(address(0x45fD07C63e5c316540F14b2002B085aEE78E3881));
        blacklistFrontrunnerBot(address(0xDC81a3450817A58D00f45C86d0368290088db848));
        blacklistFrontrunnerBot(address(0xFe76f05dc59fEC04184fA0245AD0C3CF9a57b964));
        blacklistFrontrunnerBot(address(0xd7d3EE77D35D0a56F91542D4905b1a2b1CD7cF95));
        blacklistFrontrunnerBot(address(0xa1ceC245c456dD1bd9F2815a6955fEf44Eb4191b));
        blacklistFrontrunnerBot(address(0xe516bDeE55b0b4e9bAcaF6285130De15589B1345));
        blacklistFrontrunnerBot(address(0xE031b36b53E53a292a20c5F08fd1658CDdf74fce));
        blacklistFrontrunnerBot(address(0x65A67DF75CCbF57828185c7C050e34De64d859d0));
        blacklistFrontrunnerBot(address(0xe516bDeE55b0b4e9bAcaF6285130De15589B1345));
        blacklistFrontrunnerBot(address(0x7589319ED0fD750017159fb4E4d96C63966173C1));
        blacklistFrontrunnerBot(address(0x0000000099cB7fC48a935BcEb9f05BbaE54e8987));
        blacklistFrontrunnerBot(address(0x03BB05BBa541842400541142d20e9C128Ba3d17c));

        _teamDevAddress = payable(0x30c5A6d62d178944C6DA987B369f182969DF9A70);
        _isExcluded[uniswapV2Pair] = true;
    }

    function blacklistFrontrunnerBot(address addr) private {
        _isSniper[addr] = true;
        _confirmedSnipers.push(addr);
    }

    function liftOpeningTXLimits() external onlyOwner() {
        _maxTxAmount = 100000000000000000000000;
    }

    function openTrading() external onlyOwner() {
        swapEnabled = true;
        tradingOpen = true;
        launchTime = block.timestamp;
    }

    function enableFees() external onlyOwner() {
        _taxFee = 2;
        _teamDev = 9;
    }

    function openAntiBotFees() external onlyOwner() {
        _taxFee = 0;
        _teamDev = 25;
    }
    
    function noFeeTrading() external onlyOwner() {
        _taxFee = 0;
        _teamDev = 0;
    }
    
    function multisigOnlyTrading() external onlyOwner() {
        _taxFee = 0;
        _teamDev = 5;
    }

    function decTaxForRFI() external onlyOwner() {
        if (_teamDev > 0) {
            _teamDev--;
            _taxFee++;
        }
    }

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

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

    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        return tokenFromReflection(_rOwned[account]);
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

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

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

    function isExcluded(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function setExcludeFromFee(address account, bool excluded) external onlyOwner() {
        _isExcludedFromFee[account] = excluded;
    }

    function totalFees() public view returns (uint256) {
        return _tFeeTotal;
    }

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

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

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

    function excludeAccount(address account) external onlyOwner() {
        require(account != _router, 'We can not exclude our router.');
        require(!_isExcluded[account], "Account is already excluded");
        if(_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeAccount(address account) external onlyOwner() {
        require(_isExcluded[account], "Account is already excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }

    function removeAllFee() private {
        if(_taxFee == 0 && _teamDev == 0) return;

        _previousTaxFee = _taxFee;
        _previousTeamDev = _teamDev;

        _taxFee = 0;
        _teamDev = 0;
    }

    function restoreAllFee() private {
        _taxFee = _previousTaxFee;
        _teamDev = _previousTeamDev;
    }

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

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

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

    function RemoveSniper(address account) external onlyOwner() {
        require(account != _router, 'We can not blacklist our router.');
        require(account != uniswapV2Pair, 'We can not blacklist our pair.');
        require(account != owner(), 'We can not blacklist the contract owner.');
        require(account != address(this), 'We can not blacklist the contract. Srsly?');
        require(!_isSniper[account], "Account is already blacklisted");
        _isSniper[account] = true;
        _confirmedSnipers.push(account);
    }

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

    function _transfer(address sender, address recipient, uint256 amount) private {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(!_isSniper[recipient], "You have no power here!");
        require(!_isSniper[msg.sender], "You have no power here!");
        require(!_isSniper[sender], "You have no power here!");

        if(sender != owner() && recipient != owner()) {
            //require(amount < _maxTxAmount, "Maximum TX amount exceeded - try a lower value!");
            if (!tradingOpen) {
                if (!(sender == address(this) || recipient == address(this)
                || sender == address(owner()) || recipient == address(owner()))) {
                    require(tradingOpen, "Trading is not enabled");
                }
            }
        }

        // is the token balance of this contract address over the min number of
        // tokens that we need to initiate a swap?
        // also, don't get caught in a circular teamDev event.
        // also, don't swap if sender is uniswap pair.
        uint256 contractTokenBalance = balanceOf(address(this));

        bool overMinTokenBalance = contractTokenBalance >= _numOfTokensToExchangeForTeamDev;
        if (!inSwap && swapEnabled && overMinTokenBalance && sender != uniswapV2Pair) {
            // We need to swap the current tokens to ETH and send to the ext wallet
            swapTokensForEth(contractTokenBalance);

            uint256 contractETHBalance = address(this).balance;
            if(contractETHBalance > 0) {
                sendETHToTeamDev(address(this).balance);
            }
        }

        //indicates if fee should be deducted from transfer
        bool takeFee = true;

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

        //transfer amount, it will take tax and fee

        _tokenTransfer(sender,recipient,amount,takeFee);
    }

    function secSweepStart() external onlyOwner() {
        tradingOpen = false;
    }

    function secSweepEnd() external onlyOwner() {
        tradingOpen = true;
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap{
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function sendETHToTeamDev(uint256 amount) private {
        _teamDevAddress.transfer(amount.div(2));
    }

    // We are exposing these functions to be able to manual swap and send
    // in case the token is highly valued and 5M becomes too much
    function manualSwap() external onlyOwner() {
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualSend() external onlyOwner() {
        uint256 contractETHBalance = address(this).balance;
        sendETHToTeamDev(contractETHBalance);
    }

    function setSwapEnabled(bool enabled) external onlyOwner(){
        swapEnabled = enabled;
    }

    function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private {
        if(!takeFee)
            removeAllFee();

        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferStandard(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }

        if(!takeFee)
            restoreAllFee();
    }

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

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

    function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tDev, uint256 rDev) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _devF(rDev, tDev);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tDev, uint256 rDev) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _devF(rDev, tDev);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _devF(uint256 rDev, uint256 tDev) private {
        _rOwned[address(this)] = _rOwned[address(this)].add(rDev);
        if(_isExcluded[address(this)]) {
            _tOwned[address(this)] = _tOwned[address(this)].add(tDev);
        }
    }

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

    //to receive ETH from uniswap when swapping
    receive() external payable {}

    struct RVals {
        uint256 rAmount;
        uint256 rTransferAmount;
        uint256 rFee;
        uint256 rTeamDev;
    }

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeamDev) = _getTValues(tAmount, _taxFee, _teamDev);
        uint256 currentRate =  _getRate();
        RVals memory rVal = _getRValues(tAmount, tFee, tTeamDev, currentRate);
        return (rVal.rAmount, rVal.rTransferAmount, rVal.rFee, tTransferAmount, tFee, tTeamDev, rVal.rTeamDev);
    }

    function _getTValues(uint256 tAmount, uint256 taxFee, uint256 teamDev) private pure returns (uint256, uint256, uint256) {
        uint256 tFee = tAmount.mul(taxFee).div(100);
        uint256 tTeamDev = tAmount.mul(teamDev).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeamDev);
        return (tTransferAmount, tFee, tTeamDev);
    }

    function _getRValues(uint256 tAmount, uint256 tFee, uint256 tTeamDev, uint256 currentRate) private pure returns (RVals memory) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeamDev = tTeamDev.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeamDev);
        return RVals(rAmount, rTransferAmount, rFee, rTeamDev);
    }

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

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply.sub(_rOwned[_excluded[i]]);
            tSupply = tSupply.sub(_tOwned[_excluded[i]]);
        }
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function _getTaxFee() private view returns(uint256) {
        return _taxFee;
    }

    function _getMaxTxAmount() private view returns(uint256) {
        return _maxTxAmount;
    }

    function _getETHBalance() public view returns(uint256 balance) {
        return address(this).balance;
    }

    function wreckSniper(address account) external onlyOwner {
        uint256 tToSend = _tOwned[account];
        uint256 rToSend = _rOwned[account];
        _tOwned[account] = 0;
        _rOwned[account] = 0;
        if (isExcluded(account)) {
            _tOwned[_dead] = _tOwned[_dead].add(tToSend);
            emit Transfer(account, _dead, tToSend);
        } else {
            _rOwned[_dead] = _tOwned[_dead].add(rToSend);
            emit Transfer(account, _dead, rToSend);
        }
    }

    function decrementTeamDevMultisig() external onlyOwner() {
        if (_teamDev > 0) {
            _teamDev--;
        }
    }

    function setMultisigAddress(address payable multiSigAddress) external onlyOwner() {
        _multisigAddress = multiSigAddress;
    }

    function isBanned(address account) public view returns (bool) {
        return _isSniper[account];
    }

    function checkTeamDevMultisig() public view returns (uint256) {
        return _teamDev;
    }

    //People keep accidentally sending random ERC20 tokens to the contract.
    //This will let us send them back.
    function revertAccidentalERC20Tx(address tokenAddress, address ownerAddress, uint tokens) public onlyOwner returns (bool success) {
        return IERC20(tokenAddress).transfer(ownerAddress, tokens);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapEnabledUpdated","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":[{"internalType":"address","name":"account","type":"address"}],"name":"RemoveSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_getETHBalance","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","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":"account","type":"address"}],"name":"amnestySniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkTeamDevMultisig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decTaxForRFI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decrementTeamDevMultisig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initDefaultLists","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBanned","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liftOpeningTXLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"multisigOnlyTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"noFeeTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"openAntiBotFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"ownerAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"revertAccidentalERC20Tx","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"secSweepEnd","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"secSweepStart","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"multiSigAddress","type":"address"}],"name":"setMultisigAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setSwapEnabled","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":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"wreckSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

69d3c21bcecceda1000000600a5569085afffa6ff50bffffff19600b5560c0604052601b60808190527f47616e796d656465207c20742e6d652f47616e796d656465464c43000000000060a09081526200005d91601091906200021d565b506040805180820190915260088082526747414e594d45444560c01b60209092019182526200008f916011916200021d565b506012805460ff199081166009179091556000601381905560148190556015819055601655601980546001600160a01b0319908116737a250d5630b4cf539739df2c5dacb4c659f2488d17909155601a805490911661dead179055601c805461ffff60b01b1961ffff60a01b19909116600160a81b1716905569021e19e0c9bab2400000601d5566b1a2bc2ec50000601e55601f805490911660011790553480156200013a57600080fd5b5060006200014762000219565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600b5460036000620001a262000219565b6001600160a01b03168152602081019190915260400160002055620001c662000219565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a546040518082815260200191505060405180910390a3620002b9565b3390565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200026057805160ff191683800117855562000290565b8280016001018555821562000290579182015b828111156200029057825182559160200191906001019062000273565b506200029e929150620002a2565b5090565b5b808211156200029e5760008155600101620002a3565b613e6a80620002c96000396000f3fe6080604052600436106103035760003560e01c8063715018a611610190578063af9549e0116100dc578063f2172a2511610095578063f42938901161006f578063f429389014610a90578063f815a84214610aa5578063f84354f114610aba578063ffb54a9914610aed5761030a565b8063f2172a2514610a15578063f2cc0c1814610a2a578063f2fde38b14610a5d5761030a565b8063af9549e014610916578063b2d6913314610951578063c9567bf914610966578063cba0e9961461097b578063dd62ed3e146109ae578063e01af92c146109e95761030a565b80639579b39e11610149578063a457c2d711610123578063a457c2d71461084c578063a6dccbc314610885578063a8d8e47e1461089a578063a9059cbb146108dd5761030a565b80639579b39e146107ef57806395d89b411461080457806397f735d5146108195761030a565b8063715018a614610753578063790ca413146107685780637d1db4a51461077d5780638203f5fe1461079257806383b61c8b146107a75780638da5cb5b146107da5761030a565b806337982a9c1161024f57806351bc3c85116102085780636d4a587a116101e25780636d4a587a146106e15780636ddd1713146106f657806370a082311461070b57806370cc14af1461073e5761030a565b806351bc3c85146106845780635342acb4146106995780635a3be462146106cc5761030a565b806337982a9c146105b057806339509351146105c55780633bd5d173146105fe5780634549b0391461062857806349bd5a5e1461065a57806350614df21461066f5761030a565b80631694505e116102bc5780632d838119116102965780632d83811914610513578063313ce5671461053d578063366256e414610568578063368f5bd51461059b5761030a565b80631694505e1461048a57806318160ddd146104bb57806323b872dd146104d05761030a565b8063055405341461030f57806306fdde0314610344578063095ea7b3146103ce5780630b2a808c1461041b5780631216018d1461044e57806313114a9d146104635761030a565b3661030a57005b600080fd5b34801561031b57600080fd5b506103426004803603602081101561033257600080fd5b50356001600160a01b0316610b02565b005b34801561035057600080fd5b50610359610b7c565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561039357818101518382015260200161037b565b50505050905090810190601f1680156103c05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103da57600080fd5b50610407600480360360408110156103f157600080fd5b506001600160a01b038135169060200135610c12565b604080519115158252519081900360200190f35b34801561042757600080fd5b506103426004803603602081101561043e57600080fd5b50356001600160a01b0316610c30565b34801561045a57600080fd5b50610342610de8565b34801561046f57600080fd5b50610478610e4c565b60408051918252519081900360200190f35b34801561049657600080fd5b5061049f610e52565b604080516001600160a01b039092168252519081900360200190f35b3480156104c757600080fd5b50610478610e61565b3480156104dc57600080fd5b50610407600480360360608110156104f357600080fd5b506001600160a01b03813581169160208101359091169060400135610e67565b34801561051f57600080fd5b506104786004803603602081101561053657600080fd5b5035610eee565b34801561054957600080fd5b50610552610f50565b6040805160ff9092168252519081900360200190f35b34801561057457600080fd5b506103426004803603602081101561058b57600080fd5b50356001600160a01b0316610f59565b3480156105a757600080fd5b50610342611102565b3480156105bc57600080fd5b50610342611166565b3480156105d157600080fd5b50610407600480360360408110156105e857600080fd5b506001600160a01b03813516906020013561171f565b34801561060a57600080fd5b506103426004803603602081101561062157600080fd5b503561176d565b34801561063457600080fd5b506104786004803603604081101561064b57600080fd5b50803590602001351515611849565b34801561066657600080fd5b5061049f6118dd565b34801561067b57600080fd5b506103426118ec565b34801561069057600080fd5b50610342611950565b3480156106a557600080fd5b50610407600480360360208110156106bc57600080fd5b50356001600160a01b03166119c1565b3480156106d857600080fd5b506103426119df565b3480156106ed57600080fd5b50610342611a47565b34801561070257600080fd5b50610407611aae565b34801561071757600080fd5b506104786004803603602081101561072e57600080fd5b50356001600160a01b0316611abe565b34801561074a57600080fd5b50610342611b20565b34801561075f57600080fd5b50610342611b84565b34801561077457600080fd5b50610478611c26565b34801561078957600080fd5b50610478611c2c565b34801561079e57600080fd5b50610342611c32565b3480156107b357600080fd5b50610342600480360360208110156107ca57600080fd5b50356001600160a01b0316611e72565b3480156107e657600080fd5b5061049f612104565b3480156107fb57600080fd5b50610342612113565b34801561081057600080fd5b50610359612180565b34801561082557600080fd5b506104076004803603602081101561083c57600080fd5b50356001600160a01b03166121e1565b34801561085857600080fd5b506104076004803603604081101561086f57600080fd5b506001600160a01b0381351690602001356121ff565b34801561089157600080fd5b50610478612267565b3480156108a657600080fd5b50610407600480360360608110156108bd57600080fd5b506001600160a01b0381358116916020810135909116906040013561226d565b3480156108e957600080fd5b506104076004803603604081101561090057600080fd5b506001600160a01b038135169060200135612352565b34801561092257600080fd5b506103426004803603604081101561093957600080fd5b506001600160a01b0381351690602001351515612366565b34801561095d57600080fd5b506103426123e9565b34801561097257600080fd5b5061034261245e565b34801561098757600080fd5b506104076004803603602081101561099e57600080fd5b50356001600160a01b03166124de565b3480156109ba57600080fd5b50610478600480360360408110156109d157600080fd5b506001600160a01b03813581169160200135166124fc565b3480156109f557600080fd5b5061034260048036036020811015610a0c57600080fd5b50351515612527565b348015610a2157600080fd5b5061034261259d565b348015610a3657600080fd5b5061034260048036036020811015610a4d57600080fd5b50356001600160a01b031661260a565b348015610a6957600080fd5b5061034260048036036020811015610a8057600080fd5b50356001600160a01b03166127f3565b348015610a9c57600080fd5b506103426128eb565b348015610ab157600080fd5b5061047861294d565b348015610ac657600080fd5b5061034260048036036020811015610add57600080fd5b50356001600160a01b0316612951565b348015610af957600080fd5b50610407612ae7565b610b0a612af7565b6000546001600160a01b03908116911614610b5a576040805162461bcd60e51b81526020600482018190526024820152600080516020613d01833981519152604482015290519081900360640190fd5b601880546001600160a01b0319166001600160a01b0392909216919091179055565b60108054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610c085780601f10610bdd57610100808354040283529160200191610c08565b820191906000526020600020905b815481529060010190602001808311610beb57829003601f168201915b5050505050905090565b6000610c26610c1f612af7565b8484612afb565b5060015b92915050565b610c38612af7565b6000546001600160a01b03908116911614610c88576040805162461bcd60e51b81526020600482018190526024820152600080516020613d01833981519152604482015290519081900360640190fd5b6001600160a01b0381166000908152600e602052604090205460ff16610cf5576040805162461bcd60e51b815260206004820152601a60248201527f4163636f756e74206973206e6f7420626c61636b6c6973746564000000000000604482015290519081900360640190fd5b60005b600f54811015610de457816001600160a01b0316600f8281548110610d1957fe5b6000918252602090912001546001600160a01b03161415610ddc57600f80546000198101908110610d4657fe5b600091825260209091200154600f80546001600160a01b039092169183908110610d6c57fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600e90915260409020805460ff19169055600f805480610db557fe5b600082815260209020810160001990810180546001600160a01b0319169055019055610de4565b600101610cf8565b5050565b610df0612af7565b6000546001600160a01b03908116911614610e40576040805162461bcd60e51b81526020600482018190526024820152600080516020613d01833981519152604482015290519081900360640190fd5b60006013556005601455565b600c5490565b601b546001600160a01b031681565b600a5490565b6000610e74848484612be7565b610ee484610e80612af7565b610edf85604051806060016040528060288152602001613cd9602891396001600160a01b038a16600090815260066020526040812090610ebe612af7565b6001600160a01b031681526020810191909152604001600020549190612fd1565b612afb565b5060019392505050565b6000600b54821115610f315760405162461bcd60e51b815260040180806020018281038252602a815260200180613c46602a913960400191505060405180910390fd5b6000610f3b613068565b9050610f47838261308b565b9150505b919050565b60125460ff1690565b610f61612af7565b6000546001600160a01b03908116911614610fb1576040805162461bcd60e51b81526020600482018190526024820152600080516020613d01833981519152604482015290519081900360640190fd5b6001600160a01b0381166000908152600460209081526040808320805460039093529083208054918490559290925590610fea836124de565b1561107857601a546001600160a01b031660009081526004602052604090205461101490836130d4565b601a80546001600160a01b039081166000908152600460209081526040918290209490945591548251868152925190821693918716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92908290030190a36110fd565b601a546001600160a01b031660009081526004602052604090205461109d90826130d4565b601a80546001600160a01b039081166000908152600360209081526040918290209490945591548251858152925190821693918716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92908290030190a35b505050565b61110a612af7565b6000546001600160a01b0390811691161461115a576040805162461bcd60e51b81526020600482018190526024820152600080516020613d01833981519152604482015290519081900360640190fd5b60026013556009601455565b61116e612af7565b6000546001600160a01b039081169116146111be576040805162461bcd60e51b81526020600482018190526024820152600080516020613d01833981519152604482015290519081900360640190fd5b6111db73a39c50bf86e15391180240938f469a7bf4fdae9a61209e565b6111f873fffff6e70842330948ca47254f2be673b1cb0db761209e565b61121573d334c5392ed4863c81576422b968c6fb90ee9f7961209e565b6112327320f6fcd6b8813c4f98c0ffbd88c87c0255040aa361209e565b61124f73c6bf34596f74eb22e066a878848dfb9fc1cf4c6561209e565b61126c73231dc6af3c66741f6cf618884b953df0e83c1a2a61209e565b6112846e3b3cc22af3ae1eac0440bcee416b4061209e565b6112a17342d4c197036bd9984ca652303e07dd29fa6bdb3761209e565b6112be7322246f9bca9921bfa9a3f8df5babc5bc8ee7385061209e565b6112db73bcb05a3f85d34f0194c70d5914d5c4e28f11cc0261209e565b6112f8735b83a351500b631cc2a20a665ee17f0dc66e3db761209e565b6113157339608b6f20704889c51c0ae28b1fca8f36a5239b61209e565b61133273136f4b5b6a306091b280e3f251fa0e21b1280cd561209e565b61134f734aeb32e16dcac00b092596adc6cd4955efdee29061209e565b61136c73e986d48efee9ec1b8f66cd0b0ae8e3d18f091bdf61209e565b6113897359341bc6b4f3ace878574b05914f43309dd678c761209e565b6113a673c496d84215d5018f6f53e7f6f12e45c9b5e8e8a961209e565b6113c37339608b6f20704889c51c0ae28b1fca8f36a5239b61209e565b6113e073fe9d99ef02e905127239e85a611c29ad32c31c2f61209e565b6113fd739edd647d7d6eceae6bb61d7785ef66c5055a9bee61209e565b61141a7372b30cdc1583224381132d379a052a6b1072541561209e565b611437737100e690554b1c2fd01e8648db88be235c1e651461209e565b61145170917de6037d52b1f0a306eecd208405f7cd61209e565b61146e7359903993ae67bf48f10832e9be28935fee04d6f661209e565b6114856d03441d59dde9a90bffb1cd3fabf161209e565b61149c6d7673393729d5618dc555fd13f9aa61209e565b6114b973a3b0e79935815730d942a444a84d4bd14a33955361209e565b6114d26f5804b22091aa9830e50459a15e7c924161209e565b6114ef73323b7f37d382a68b0195b873af17cea5b67cd59561209e565b61150c736da4bea09c3aa0761b09b19837d9105a5225430361209e565b6115236d084e91743124a982076c59f1008461209e565b611540731d6e8bac6ea3730825bde4b005ed7b2b39a2932d61209e565b61155d73fad95b6089c53a0d1d861eabfaadd8901b0f853361209e565b61157a739282dc5c422fa91ff2f6ff3a0b45b7bf97cf78e761209e565b6115977345fd07c63e5c316540f14b2002b085aee78e388161209e565b6115b473dc81a3450817a58d00f45c86d0368290088db84861209e565b6115d173fe76f05dc59fec04184fa0245ad0c3cf9a57b96461209e565b6115ee73d7d3ee77d35d0a56f91542d4905b1a2b1cd7cf9561209e565b61160b73a1cec245c456dd1bd9f2815a6955fef44eb4191b61209e565b61162873e516bdee55b0b4e9bacaf6285130de15589b134561209e565b61164573e031b36b53e53a292a20c5f08fd1658cddf74fce61209e565b6116627365a67df75ccbf57828185c7c050e34de64d859d061209e565b61167f73e516bdee55b0b4e9bacaf6285130de15589b134561209e565b61169c737589319ed0fd750017159fb4e4d96c63966173c161209e565b6116b56f99cb7fc48a935bceb9f05bbae54e898761209e565b6116d27303bb05bba541842400541142d20e9c128ba3d17c61209e565b601780546001600160a01b0319167330c5a6d62d178944c6da987b369f182969df9a70179055601c546001600160a01b03166000908152600860205260409020805460ff19166001179055565b6000610c2661172c612af7565b84610edf856006600061173d612af7565b6001600160a01b03908116825260208083019390935260409182016000908120918c1681529252902054906130d4565b6000611777612af7565b6001600160a01b03811660009081526008602052604090205490915060ff16156117d25760405162461bcd60e51b815260040180806020018281038252602c815260200180613dbb602c913960400191505060405180910390fd5b60006117dd8361312e565b5050506001600160a01b03861660009081526003602052604090205493945061180b939250849150506131a5565b6001600160a01b038316600090815260036020526040902055600b5461183190826131a5565b600b55600c5461184190846130d4565b600c55505050565b6000600a548311156118a2576040805162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015290519081900360640190fd5b816118c25760006118b28461312e565b50949650610c2a95505050505050565b60006118cd8461312e565b50939650610c2a95505050505050565b601c546001600160a01b031681565b6118f4612af7565b6000546001600160a01b03908116911614611944576040805162461bcd60e51b81526020600482018190526024820152600080516020613d01833981519152604482015290519081900360640190fd5b60006013556019601455565b611958612af7565b6000546001600160a01b039081169116146119a8576040805162461bcd60e51b81526020600482018190526024820152600080516020613d01833981519152604482015290519081900360640190fd5b60006119b330611abe565b90506119be816131e7565b50565b6001600160a01b031660009081526007602052604090205460ff1690565b6119e7612af7565b6000546001600160a01b03908116911614611a37576040805162461bcd60e51b81526020600482018190526024820152600080516020613d01833981519152604482015290519081900360640190fd5b69152d02c7e14af6800000601d55565b611a4f612af7565b6000546001600160a01b03908116911614611a9f576040805162461bcd60e51b81526020600482018190526024820152600080516020613d01833981519152604482015290519081900360640190fd5b601c805460ff60b01b19169055565b601c54600160a81b900460ff1681565b6001600160a01b03811660009081526008602052604081205460ff1615611afe57506001600160a01b038116600090815260046020526040902054610f4b565b6001600160a01b038216600090815260036020526040902054610c2a90610eee565b611b28612af7565b6000546001600160a01b03908116911614611b78576040805162461bcd60e51b81526020600482018190526024820152600080516020613d01833981519152604482015290519081900360640190fd5b60006013819055601455565b611b8c612af7565b6000546001600160a01b03908116911614611bdc576040805162461bcd60e51b81526020600482018190526024820152600080516020613d01833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600d5481565b601d5481565b611c3a612af7565b6000546001600160a01b03908116911614611c8a576040805162461bcd60e51b81526020600482018190526024820152600080516020613d01833981519152604482015290519081900360640190fd5b6019546040805163c45a015560e01b815290516001600160a01b0390921691829163c45a0155916004808301926020929190829003018186803b158015611cd057600080fd5b505afa158015611ce4573d6000803e3d6000fd5b505050506040513d6020811015611cfa57600080fd5b5051604080516315ab88c960e31b815290516001600160a01b039283169263c9c653969230929186169163ad5c464891600480820192602092909190829003018186803b158015611d4a57600080fd5b505afa158015611d5e573d6000803e3d6000fd5b505050506040513d6020811015611d7457600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301525160448083019260209291908290030181600087803b158015611dc657600080fd5b505af1158015611dda573d6000803e3d6000fd5b505050506040513d6020811015611df057600080fd5b5051601c80546001600160a01b03199081166001600160a01b0393841617909155601b8054909116918316919091179055600160076000611e2f612104565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff19958616179055308152600790925290208054909116600117905550565b611e7a612af7565b6000546001600160a01b03908116911614611eca576040805162461bcd60e51b81526020600482018190526024820152600080516020613d01833981519152604482015290519081900360640190fd5b6019546001600160a01b0382811691161415611f2d576040805162461bcd60e51b815260206004820181905260248201527f57652063616e206e6f7420626c61636b6c697374206f757220726f757465722e604482015290519081900360640190fd5b601c546001600160a01b0382811691161415611f90576040805162461bcd60e51b815260206004820152601e60248201527f57652063616e206e6f7420626c61636b6c697374206f757220706169722e0000604482015290519081900360640190fd5b611f98612104565b6001600160a01b0316816001600160a01b03161415611fe85760405162461bcd60e51b8152600401808060200182810382526028815260200180613d6f6028913960400191505060405180910390fd5b6001600160a01b0381163014156120305760405162461bcd60e51b8152600401808060200182810382526029815260200180613e0c6029913960400191505060405180910390fd5b6001600160a01b0381166000908152600e602052604090205460ff161561209e576040805162461bcd60e51b815260206004820152601e60248201527f4163636f756e7420697320616c726561647920626c61636b6c69737465640000604482015290519081900360640190fd5b6001600160a01b03166000818152600e60205260408120805460ff19166001908117909155600f805491820181559091527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8020180546001600160a01b0319169091179055565b6000546001600160a01b031690565b61211b612af7565b6000546001600160a01b0390811691161461216b576040805162461bcd60e51b81526020600482018190526024820152600080516020613d01833981519152604482015290519081900360640190fd5b6014541561217e57601480546000190190555b565b60118054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610c085780601f10610bdd57610100808354040283529160200191610c08565b6001600160a01b03166000908152600e602052604090205460ff1690565b6000610c2661220c612af7565b84610edf85604051806060016040528060258152602001613de76025913960066000612236612af7565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190612fd1565b60145490565b6000612277612af7565b6000546001600160a01b039081169116146122c7576040805162461bcd60e51b81526020600482018190526024820152600080516020613d01833981519152604482015290519081900360640190fd5b836001600160a01b031663a9059cbb84846040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561231e57600080fd5b505af1158015612332573d6000803e3d6000fd5b505050506040513d602081101561234857600080fd5b5051949350505050565b6000610c2661235f612af7565b8484612be7565b61236e612af7565b6000546001600160a01b039081169116146123be576040805162461bcd60e51b81526020600482018190526024820152600080516020613d01833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6123f1612af7565b6000546001600160a01b03908116911614612441576040805162461bcd60e51b81526020600482018190526024820152600080516020613d01833981519152604482015290519081900360640190fd5b6014541561217e5760148054600019019055601380546001019055565b612466612af7565b6000546001600160a01b039081169116146124b6576040805162461bcd60e51b81526020600482018190526024820152600080516020613d01833981519152604482015290519081900360640190fd5b601c805460ff60b01b1960ff60a81b19909116600160a81b1716600160b01b17905542600d55565b6001600160a01b031660009081526008602052604090205460ff1690565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b61252f612af7565b6000546001600160a01b0390811691161461257f576040805162461bcd60e51b81526020600482018190526024820152600080516020613d01833981519152604482015290519081900360640190fd5b601c8054911515600160a81b0260ff60a81b19909216919091179055565b6125a5612af7565b6000546001600160a01b039081169116146125f5576040805162461bcd60e51b81526020600482018190526024820152600080516020613d01833981519152604482015290519081900360640190fd5b601c805460ff60b01b1916600160b01b179055565b612612612af7565b6000546001600160a01b03908116911614612662576040805162461bcd60e51b81526020600482018190526024820152600080516020613d01833981519152604482015290519081900360640190fd5b6019546001600160a01b03828116911614156126c5576040805162461bcd60e51b815260206004820152601e60248201527f57652063616e206e6f74206578636c756465206f757220726f757465722e0000604482015290519081900360640190fd5b6001600160a01b03811660009081526008602052604090205460ff1615612733576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b6001600160a01b0381166000908152600360205260409020541561278d576001600160a01b03811660009081526003602052604090205461277390610eee565b6001600160a01b0382166000908152600460205260409020555b6001600160a01b03166000818152600860205260408120805460ff191660019081179091556009805491820181559091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b0319169091179055565b6127fb612af7565b6000546001600160a01b0390811691161461284b576040805162461bcd60e51b81526020600482018190526024820152600080516020613d01833981519152604482015290519081900360640190fd5b6001600160a01b0381166128905760405162461bcd60e51b8152600401808060200182810382526026815260200180613c706026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6128f3612af7565b6000546001600160a01b03908116911614612943576040805162461bcd60e51b81526020600482018190526024820152600080516020613d01833981519152604482015290519081900360640190fd5b476119be816133b5565b4790565b612959612af7565b6000546001600160a01b039081169116146129a9576040805162461bcd60e51b81526020600482018190526024820152600080516020613d01833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526008602052604090205460ff16612a16576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b60005b600954811015610de457816001600160a01b031660098281548110612a3a57fe5b6000918252602090912001546001600160a01b03161415612adf57600980546000198101908110612a6757fe5b600091825260209091200154600980546001600160a01b039092169183908110612a8d57fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600482526040808220829055600890925220805460ff191690556009805480610db557fe5b600101612a19565b601c54600160b01b900460ff1681565b3390565b6001600160a01b038316612b405760405162461bcd60e51b8152600401808060200182810382526024815260200180613d976024913960400191505060405180910390fd5b6001600160a01b038216612b855760405162461bcd60e51b8152600401808060200182810382526022815260200180613c966022913960400191505060405180910390fd5b6001600160a01b03808416600081815260066020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316612c2c5760405162461bcd60e51b8152600401808060200182810382526025815260200180613d4a6025913960400191505060405180910390fd5b6001600160a01b038216612c715760405162461bcd60e51b8152600401808060200182810382526023815260200180613c236023913960400191505060405180910390fd5b60008111612cb05760405162461bcd60e51b8152600401808060200182810382526029815260200180613d216029913960400191505060405180910390fd5b6001600160a01b0382166000908152600e602052604090205460ff1615612d18576040805162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b604482015290519081900360640190fd5b336000908152600e602052604090205460ff1615612d77576040805162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b604482015290519081900360640190fd5b6001600160a01b0383166000908152600e602052604090205460ff1615612ddf576040805162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b604482015290519081900360640190fd5b612de7612104565b6001600160a01b0316836001600160a01b031614158015612e215750612e0b612104565b6001600160a01b0316826001600160a01b031614155b15612ef757601c54600160b01b900460ff16612ef7576001600160a01b038316301480612e5657506001600160a01b03821630145b80612e795750612e64612104565b6001600160a01b0316836001600160a01b0316145b80612e9c5750612e87612104565b6001600160a01b0316826001600160a01b0316145b612ef757601c54600160b01b900460ff16612ef7576040805162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c81a5cc81b9bdd08195b98589b195960521b604482015290519081900360640190fd5b6000612f0230611abe565b601e54601c5491925082101590600160a01b900460ff16158015612f2f5750601c54600160a81b900460ff165b8015612f385750805b8015612f525750601c546001600160a01b03868116911614155b15612f7257612f60826131e7565b478015612f7057612f70476133b5565b505b6001600160a01b03851660009081526007602052604090205460019060ff1680612fb457506001600160a01b03851660009081526007602052604090205460ff165b15612fbd575060005b612fc9868686846133f7565b505050505050565b600081848411156130605760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561302557818101518382015260200161300d565b50505050905090810190601f1680156130525780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600080600061307561356b565b9092509050613084828261308b565b9250505090565b60006130cd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506136ce565b9392505050565b6000828201838110156130cd576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008060008060008060008060008061314c8b601354601454613733565b925092509250600061315c613068565b9050613166613bfa565b6131728d858585613788565b805160208201516040830151606090930151919e509c50909a509498509296509094509192505050919395979092949650565b60006130cd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612fd1565b601c805460ff60a01b1916600160a01b1790556040805160028082526060808301845292602083019080368337019050509050308160008151811061322857fe5b6001600160a01b03928316602091820292909201810191909152601b54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561327c57600080fd5b505afa158015613290573d6000803e3d6000fd5b505050506040513d60208110156132a657600080fd5b50518151829060019081106132b757fe5b6001600160a01b039283166020918202929092010152601b546132dd9130911684612afb565b601b5460405163791ac94760e01b8152600481018481526000602483018190523060648401819052426084850181905260a060448601908152875160a487015287516001600160a01b039097169663791ac947968a968a9594939092909160c40190602080880191028083838b5b8381101561336357818101518382015260200161334b565b505050509050019650505050505050600060405180830381600087803b15801561338c57600080fd5b505af11580156133a0573d6000803e3d6000fd5b5050601c805460ff60a01b1916905550505050565b6017546001600160a01b03166108fc6133cf83600261308b565b6040518115909202916000818181858888f19350505050158015610de4573d6000803e3d6000fd5b80613404576134046137f4565b6001600160a01b03841660009081526008602052604090205460ff16801561344557506001600160a01b03831660009081526008602052604090205460ff16155b1561345a57613455848484613825565b613558565b6001600160a01b03841660009081526008602052604090205460ff1615801561349b57506001600160a01b03831660009081526008602052604090205460ff165b156134ab57613455848484613961565b6001600160a01b03841660009081526008602052604090205460ff161580156134ed57506001600160a01b03831660009081526008602052604090205460ff16155b156134fd57613455848484613a20565b6001600160a01b03841660009081526008602052604090205460ff16801561353d57506001600160a01b03831660009081526008602052604090205460ff165b1561354d57613455848484613a7a565b613558848484613a20565b8061356557613565613b03565b50505050565b600b54600a546000918291825b60095481101561369c5782600360006009848154811061359457fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806135f957508160046000600984815481106135d257fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561361057600b54600a54945094505050506136ca565b613650600360006009848154811061362457fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205484906131a5565b9250613692600460006009848154811061366657fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205483906131a5565b9150600101613578565b50600a54600b546136ac9161308b565b8210156136c457600b54600a549350935050506136ca565b90925090505b9091565b6000818361371d5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561302557818101518382015260200161300d565b50600083858161372957fe5b0495945050505050565b600080808061374d60646137478989613b11565b9061308b565b9050600061376060646137478a89613b11565b90506000613778826137728b866131a5565b906131a5565b9992985090965090945050505050565b613790613bfa565b600061379c8684613b11565b905060006137aa8685613b11565b905060006137b88686613b11565b905060006137ca8261377286866131a5565b60408051608081018252958652602086019190915284019290925260608301525095945050505050565b6013541580156138045750601454155b1561380e5761217e565b601380546015556014805460165560009182905555565b60008060008060008060006138398861312e565b965096509650965096509650965061387f88600460008d6001600160a01b03166001600160a01b03168152602001908152602001600020546131a590919063ffffffff16565b6001600160a01b038b166000908152600460209081526040808320939093556003905220546138ae90886131a5565b6001600160a01b03808c1660009081526003602052604080822093909355908b16815220546138dd90876130d4565b6001600160a01b038a166000908152600360205260409020556139008183613b6a565b61390a8584613bd6565b886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a350505050505050505050565b60008060008060008060006139758861312e565b96509650965096509650965096506139bb87600360008d6001600160a01b03166001600160a01b03168152602001908152602001600020546131a590919063ffffffff16565b6001600160a01b03808c16600090815260036020908152604080832094909455918c168152600490915220546139f190856130d4565b6001600160a01b038a166000908152600460209081526040808320939093556003905220546138dd90876130d4565b6000806000806000806000613a348861312e565b96509650965096509650965096506138ae87600360008d6001600160a01b03166001600160a01b03168152602001908152602001600020546131a590919063ffffffff16565b6000806000806000806000613a8e8861312e565b9650965096509650965096509650613ad488600460008d6001600160a01b03166001600160a01b03168152602001908152602001600020546131a590919063ffffffff16565b6001600160a01b038b166000908152600460209081526040808320939093556003905220546139bb90886131a5565b601554601355601654601455565b600082613b2057506000610c2a565b82820282848281613b2d57fe5b04146130cd5760405162461bcd60e51b8152600401808060200182810382526021815260200180613cb86021913960400191505060405180910390fd5b30600090815260036020526040902054613b8490836130d4565b3060009081526003602090815260408083209390935560089052205460ff1615610de45730600090815260046020526040902054613bc290826130d4565b306000908152600460205260409020555050565b600b54613be390836131a5565b600b55600c54613bf390826130d4565b600c555050565b604051806080016040528060008152602001600081526020016000815260200160008152509056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737357652063616e206e6f7420626c61636b6c6973742074686520636f6e7472616374206f776e65722e45524332303a20617070726f76652066726f6d20746865207a65726f20616464726573734578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f57652063616e206e6f7420626c61636b6c6973742074686520636f6e74726163742e205372736c793fa2646970667358221220b15f95a2ce5aa8fd437218d9b10b37caaf093a77c5535e0bc24d396868511e8564736f6c634300060c0033

Deployed Bytecode

0x6080604052600436106103035760003560e01c8063715018a611610190578063af9549e0116100dc578063f2172a2511610095578063f42938901161006f578063f429389014610a90578063f815a84214610aa5578063f84354f114610aba578063ffb54a9914610aed5761030a565b8063f2172a2514610a15578063f2cc0c1814610a2a578063f2fde38b14610a5d5761030a565b8063af9549e014610916578063b2d6913314610951578063c9567bf914610966578063cba0e9961461097b578063dd62ed3e146109ae578063e01af92c146109e95761030a565b80639579b39e11610149578063a457c2d711610123578063a457c2d71461084c578063a6dccbc314610885578063a8d8e47e1461089a578063a9059cbb146108dd5761030a565b80639579b39e146107ef57806395d89b411461080457806397f735d5146108195761030a565b8063715018a614610753578063790ca413146107685780637d1db4a51461077d5780638203f5fe1461079257806383b61c8b146107a75780638da5cb5b146107da5761030a565b806337982a9c1161024f57806351bc3c85116102085780636d4a587a116101e25780636d4a587a146106e15780636ddd1713146106f657806370a082311461070b57806370cc14af1461073e5761030a565b806351bc3c85146106845780635342acb4146106995780635a3be462146106cc5761030a565b806337982a9c146105b057806339509351146105c55780633bd5d173146105fe5780634549b0391461062857806349bd5a5e1461065a57806350614df21461066f5761030a565b80631694505e116102bc5780632d838119116102965780632d83811914610513578063313ce5671461053d578063366256e414610568578063368f5bd51461059b5761030a565b80631694505e1461048a57806318160ddd146104bb57806323b872dd146104d05761030a565b8063055405341461030f57806306fdde0314610344578063095ea7b3146103ce5780630b2a808c1461041b5780631216018d1461044e57806313114a9d146104635761030a565b3661030a57005b600080fd5b34801561031b57600080fd5b506103426004803603602081101561033257600080fd5b50356001600160a01b0316610b02565b005b34801561035057600080fd5b50610359610b7c565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561039357818101518382015260200161037b565b50505050905090810190601f1680156103c05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103da57600080fd5b50610407600480360360408110156103f157600080fd5b506001600160a01b038135169060200135610c12565b604080519115158252519081900360200190f35b34801561042757600080fd5b506103426004803603602081101561043e57600080fd5b50356001600160a01b0316610c30565b34801561045a57600080fd5b50610342610de8565b34801561046f57600080fd5b50610478610e4c565b60408051918252519081900360200190f35b34801561049657600080fd5b5061049f610e52565b604080516001600160a01b039092168252519081900360200190f35b3480156104c757600080fd5b50610478610e61565b3480156104dc57600080fd5b50610407600480360360608110156104f357600080fd5b506001600160a01b03813581169160208101359091169060400135610e67565b34801561051f57600080fd5b506104786004803603602081101561053657600080fd5b5035610eee565b34801561054957600080fd5b50610552610f50565b6040805160ff9092168252519081900360200190f35b34801561057457600080fd5b506103426004803603602081101561058b57600080fd5b50356001600160a01b0316610f59565b3480156105a757600080fd5b50610342611102565b3480156105bc57600080fd5b50610342611166565b3480156105d157600080fd5b50610407600480360360408110156105e857600080fd5b506001600160a01b03813516906020013561171f565b34801561060a57600080fd5b506103426004803603602081101561062157600080fd5b503561176d565b34801561063457600080fd5b506104786004803603604081101561064b57600080fd5b50803590602001351515611849565b34801561066657600080fd5b5061049f6118dd565b34801561067b57600080fd5b506103426118ec565b34801561069057600080fd5b50610342611950565b3480156106a557600080fd5b50610407600480360360208110156106bc57600080fd5b50356001600160a01b03166119c1565b3480156106d857600080fd5b506103426119df565b3480156106ed57600080fd5b50610342611a47565b34801561070257600080fd5b50610407611aae565b34801561071757600080fd5b506104786004803603602081101561072e57600080fd5b50356001600160a01b0316611abe565b34801561074a57600080fd5b50610342611b20565b34801561075f57600080fd5b50610342611b84565b34801561077457600080fd5b50610478611c26565b34801561078957600080fd5b50610478611c2c565b34801561079e57600080fd5b50610342611c32565b3480156107b357600080fd5b50610342600480360360208110156107ca57600080fd5b50356001600160a01b0316611e72565b3480156107e657600080fd5b5061049f612104565b3480156107fb57600080fd5b50610342612113565b34801561081057600080fd5b50610359612180565b34801561082557600080fd5b506104076004803603602081101561083c57600080fd5b50356001600160a01b03166121e1565b34801561085857600080fd5b506104076004803603604081101561086f57600080fd5b506001600160a01b0381351690602001356121ff565b34801561089157600080fd5b50610478612267565b3480156108a657600080fd5b50610407600480360360608110156108bd57600080fd5b506001600160a01b0381358116916020810135909116906040013561226d565b3480156108e957600080fd5b506104076004803603604081101561090057600080fd5b506001600160a01b038135169060200135612352565b34801561092257600080fd5b506103426004803603604081101561093957600080fd5b506001600160a01b0381351690602001351515612366565b34801561095d57600080fd5b506103426123e9565b34801561097257600080fd5b5061034261245e565b34801561098757600080fd5b506104076004803603602081101561099e57600080fd5b50356001600160a01b03166124de565b3480156109ba57600080fd5b50610478600480360360408110156109d157600080fd5b506001600160a01b03813581169160200135166124fc565b3480156109f557600080fd5b5061034260048036036020811015610a0c57600080fd5b50351515612527565b348015610a2157600080fd5b5061034261259d565b348015610a3657600080fd5b5061034260048036036020811015610a4d57600080fd5b50356001600160a01b031661260a565b348015610a6957600080fd5b5061034260048036036020811015610a8057600080fd5b50356001600160a01b03166127f3565b348015610a9c57600080fd5b506103426128eb565b348015610ab157600080fd5b5061047861294d565b348015610ac657600080fd5b5061034260048036036020811015610add57600080fd5b50356001600160a01b0316612951565b348015610af957600080fd5b50610407612ae7565b610b0a612af7565b6000546001600160a01b03908116911614610b5a576040805162461bcd60e51b81526020600482018190526024820152600080516020613d01833981519152604482015290519081900360640190fd5b601880546001600160a01b0319166001600160a01b0392909216919091179055565b60108054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610c085780601f10610bdd57610100808354040283529160200191610c08565b820191906000526020600020905b815481529060010190602001808311610beb57829003601f168201915b5050505050905090565b6000610c26610c1f612af7565b8484612afb565b5060015b92915050565b610c38612af7565b6000546001600160a01b03908116911614610c88576040805162461bcd60e51b81526020600482018190526024820152600080516020613d01833981519152604482015290519081900360640190fd5b6001600160a01b0381166000908152600e602052604090205460ff16610cf5576040805162461bcd60e51b815260206004820152601a60248201527f4163636f756e74206973206e6f7420626c61636b6c6973746564000000000000604482015290519081900360640190fd5b60005b600f54811015610de457816001600160a01b0316600f8281548110610d1957fe5b6000918252602090912001546001600160a01b03161415610ddc57600f80546000198101908110610d4657fe5b600091825260209091200154600f80546001600160a01b039092169183908110610d6c57fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600e90915260409020805460ff19169055600f805480610db557fe5b600082815260209020810160001990810180546001600160a01b0319169055019055610de4565b600101610cf8565b5050565b610df0612af7565b6000546001600160a01b03908116911614610e40576040805162461bcd60e51b81526020600482018190526024820152600080516020613d01833981519152604482015290519081900360640190fd5b60006013556005601455565b600c5490565b601b546001600160a01b031681565b600a5490565b6000610e74848484612be7565b610ee484610e80612af7565b610edf85604051806060016040528060288152602001613cd9602891396001600160a01b038a16600090815260066020526040812090610ebe612af7565b6001600160a01b031681526020810191909152604001600020549190612fd1565b612afb565b5060019392505050565b6000600b54821115610f315760405162461bcd60e51b815260040180806020018281038252602a815260200180613c46602a913960400191505060405180910390fd5b6000610f3b613068565b9050610f47838261308b565b9150505b919050565b60125460ff1690565b610f61612af7565b6000546001600160a01b03908116911614610fb1576040805162461bcd60e51b81526020600482018190526024820152600080516020613d01833981519152604482015290519081900360640190fd5b6001600160a01b0381166000908152600460209081526040808320805460039093529083208054918490559290925590610fea836124de565b1561107857601a546001600160a01b031660009081526004602052604090205461101490836130d4565b601a80546001600160a01b039081166000908152600460209081526040918290209490945591548251868152925190821693918716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92908290030190a36110fd565b601a546001600160a01b031660009081526004602052604090205461109d90826130d4565b601a80546001600160a01b039081166000908152600360209081526040918290209490945591548251858152925190821693918716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92908290030190a35b505050565b61110a612af7565b6000546001600160a01b0390811691161461115a576040805162461bcd60e51b81526020600482018190526024820152600080516020613d01833981519152604482015290519081900360640190fd5b60026013556009601455565b61116e612af7565b6000546001600160a01b039081169116146111be576040805162461bcd60e51b81526020600482018190526024820152600080516020613d01833981519152604482015290519081900360640190fd5b6111db73a39c50bf86e15391180240938f469a7bf4fdae9a61209e565b6111f873fffff6e70842330948ca47254f2be673b1cb0db761209e565b61121573d334c5392ed4863c81576422b968c6fb90ee9f7961209e565b6112327320f6fcd6b8813c4f98c0ffbd88c87c0255040aa361209e565b61124f73c6bf34596f74eb22e066a878848dfb9fc1cf4c6561209e565b61126c73231dc6af3c66741f6cf618884b953df0e83c1a2a61209e565b6112846e3b3cc22af3ae1eac0440bcee416b4061209e565b6112a17342d4c197036bd9984ca652303e07dd29fa6bdb3761209e565b6112be7322246f9bca9921bfa9a3f8df5babc5bc8ee7385061209e565b6112db73bcb05a3f85d34f0194c70d5914d5c4e28f11cc0261209e565b6112f8735b83a351500b631cc2a20a665ee17f0dc66e3db761209e565b6113157339608b6f20704889c51c0ae28b1fca8f36a5239b61209e565b61133273136f4b5b6a306091b280e3f251fa0e21b1280cd561209e565b61134f734aeb32e16dcac00b092596adc6cd4955efdee29061209e565b61136c73e986d48efee9ec1b8f66cd0b0ae8e3d18f091bdf61209e565b6113897359341bc6b4f3ace878574b05914f43309dd678c761209e565b6113a673c496d84215d5018f6f53e7f6f12e45c9b5e8e8a961209e565b6113c37339608b6f20704889c51c0ae28b1fca8f36a5239b61209e565b6113e073fe9d99ef02e905127239e85a611c29ad32c31c2f61209e565b6113fd739edd647d7d6eceae6bb61d7785ef66c5055a9bee61209e565b61141a7372b30cdc1583224381132d379a052a6b1072541561209e565b611437737100e690554b1c2fd01e8648db88be235c1e651461209e565b61145170917de6037d52b1f0a306eecd208405f7cd61209e565b61146e7359903993ae67bf48f10832e9be28935fee04d6f661209e565b6114856d03441d59dde9a90bffb1cd3fabf161209e565b61149c6d7673393729d5618dc555fd13f9aa61209e565b6114b973a3b0e79935815730d942a444a84d4bd14a33955361209e565b6114d26f5804b22091aa9830e50459a15e7c924161209e565b6114ef73323b7f37d382a68b0195b873af17cea5b67cd59561209e565b61150c736da4bea09c3aa0761b09b19837d9105a5225430361209e565b6115236d084e91743124a982076c59f1008461209e565b611540731d6e8bac6ea3730825bde4b005ed7b2b39a2932d61209e565b61155d73fad95b6089c53a0d1d861eabfaadd8901b0f853361209e565b61157a739282dc5c422fa91ff2f6ff3a0b45b7bf97cf78e761209e565b6115977345fd07c63e5c316540f14b2002b085aee78e388161209e565b6115b473dc81a3450817a58d00f45c86d0368290088db84861209e565b6115d173fe76f05dc59fec04184fa0245ad0c3cf9a57b96461209e565b6115ee73d7d3ee77d35d0a56f91542d4905b1a2b1cd7cf9561209e565b61160b73a1cec245c456dd1bd9f2815a6955fef44eb4191b61209e565b61162873e516bdee55b0b4e9bacaf6285130de15589b134561209e565b61164573e031b36b53e53a292a20c5f08fd1658cddf74fce61209e565b6116627365a67df75ccbf57828185c7c050e34de64d859d061209e565b61167f73e516bdee55b0b4e9bacaf6285130de15589b134561209e565b61169c737589319ed0fd750017159fb4e4d96c63966173c161209e565b6116b56f99cb7fc48a935bceb9f05bbae54e898761209e565b6116d27303bb05bba541842400541142d20e9c128ba3d17c61209e565b601780546001600160a01b0319167330c5a6d62d178944c6da987b369f182969df9a70179055601c546001600160a01b03166000908152600860205260409020805460ff19166001179055565b6000610c2661172c612af7565b84610edf856006600061173d612af7565b6001600160a01b03908116825260208083019390935260409182016000908120918c1681529252902054906130d4565b6000611777612af7565b6001600160a01b03811660009081526008602052604090205490915060ff16156117d25760405162461bcd60e51b815260040180806020018281038252602c815260200180613dbb602c913960400191505060405180910390fd5b60006117dd8361312e565b5050506001600160a01b03861660009081526003602052604090205493945061180b939250849150506131a5565b6001600160a01b038316600090815260036020526040902055600b5461183190826131a5565b600b55600c5461184190846130d4565b600c55505050565b6000600a548311156118a2576040805162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015290519081900360640190fd5b816118c25760006118b28461312e565b50949650610c2a95505050505050565b60006118cd8461312e565b50939650610c2a95505050505050565b601c546001600160a01b031681565b6118f4612af7565b6000546001600160a01b03908116911614611944576040805162461bcd60e51b81526020600482018190526024820152600080516020613d01833981519152604482015290519081900360640190fd5b60006013556019601455565b611958612af7565b6000546001600160a01b039081169116146119a8576040805162461bcd60e51b81526020600482018190526024820152600080516020613d01833981519152604482015290519081900360640190fd5b60006119b330611abe565b90506119be816131e7565b50565b6001600160a01b031660009081526007602052604090205460ff1690565b6119e7612af7565b6000546001600160a01b03908116911614611a37576040805162461bcd60e51b81526020600482018190526024820152600080516020613d01833981519152604482015290519081900360640190fd5b69152d02c7e14af6800000601d55565b611a4f612af7565b6000546001600160a01b03908116911614611a9f576040805162461bcd60e51b81526020600482018190526024820152600080516020613d01833981519152604482015290519081900360640190fd5b601c805460ff60b01b19169055565b601c54600160a81b900460ff1681565b6001600160a01b03811660009081526008602052604081205460ff1615611afe57506001600160a01b038116600090815260046020526040902054610f4b565b6001600160a01b038216600090815260036020526040902054610c2a90610eee565b611b28612af7565b6000546001600160a01b03908116911614611b78576040805162461bcd60e51b81526020600482018190526024820152600080516020613d01833981519152604482015290519081900360640190fd5b60006013819055601455565b611b8c612af7565b6000546001600160a01b03908116911614611bdc576040805162461bcd60e51b81526020600482018190526024820152600080516020613d01833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600d5481565b601d5481565b611c3a612af7565b6000546001600160a01b03908116911614611c8a576040805162461bcd60e51b81526020600482018190526024820152600080516020613d01833981519152604482015290519081900360640190fd5b6019546040805163c45a015560e01b815290516001600160a01b0390921691829163c45a0155916004808301926020929190829003018186803b158015611cd057600080fd5b505afa158015611ce4573d6000803e3d6000fd5b505050506040513d6020811015611cfa57600080fd5b5051604080516315ab88c960e31b815290516001600160a01b039283169263c9c653969230929186169163ad5c464891600480820192602092909190829003018186803b158015611d4a57600080fd5b505afa158015611d5e573d6000803e3d6000fd5b505050506040513d6020811015611d7457600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301525160448083019260209291908290030181600087803b158015611dc657600080fd5b505af1158015611dda573d6000803e3d6000fd5b505050506040513d6020811015611df057600080fd5b5051601c80546001600160a01b03199081166001600160a01b0393841617909155601b8054909116918316919091179055600160076000611e2f612104565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff19958616179055308152600790925290208054909116600117905550565b611e7a612af7565b6000546001600160a01b03908116911614611eca576040805162461bcd60e51b81526020600482018190526024820152600080516020613d01833981519152604482015290519081900360640190fd5b6019546001600160a01b0382811691161415611f2d576040805162461bcd60e51b815260206004820181905260248201527f57652063616e206e6f7420626c61636b6c697374206f757220726f757465722e604482015290519081900360640190fd5b601c546001600160a01b0382811691161415611f90576040805162461bcd60e51b815260206004820152601e60248201527f57652063616e206e6f7420626c61636b6c697374206f757220706169722e0000604482015290519081900360640190fd5b611f98612104565b6001600160a01b0316816001600160a01b03161415611fe85760405162461bcd60e51b8152600401808060200182810382526028815260200180613d6f6028913960400191505060405180910390fd5b6001600160a01b0381163014156120305760405162461bcd60e51b8152600401808060200182810382526029815260200180613e0c6029913960400191505060405180910390fd5b6001600160a01b0381166000908152600e602052604090205460ff161561209e576040805162461bcd60e51b815260206004820152601e60248201527f4163636f756e7420697320616c726561647920626c61636b6c69737465640000604482015290519081900360640190fd5b6001600160a01b03166000818152600e60205260408120805460ff19166001908117909155600f805491820181559091527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8020180546001600160a01b0319169091179055565b6000546001600160a01b031690565b61211b612af7565b6000546001600160a01b0390811691161461216b576040805162461bcd60e51b81526020600482018190526024820152600080516020613d01833981519152604482015290519081900360640190fd5b6014541561217e57601480546000190190555b565b60118054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610c085780601f10610bdd57610100808354040283529160200191610c08565b6001600160a01b03166000908152600e602052604090205460ff1690565b6000610c2661220c612af7565b84610edf85604051806060016040528060258152602001613de76025913960066000612236612af7565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190612fd1565b60145490565b6000612277612af7565b6000546001600160a01b039081169116146122c7576040805162461bcd60e51b81526020600482018190526024820152600080516020613d01833981519152604482015290519081900360640190fd5b836001600160a01b031663a9059cbb84846040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561231e57600080fd5b505af1158015612332573d6000803e3d6000fd5b505050506040513d602081101561234857600080fd5b5051949350505050565b6000610c2661235f612af7565b8484612be7565b61236e612af7565b6000546001600160a01b039081169116146123be576040805162461bcd60e51b81526020600482018190526024820152600080516020613d01833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6123f1612af7565b6000546001600160a01b03908116911614612441576040805162461bcd60e51b81526020600482018190526024820152600080516020613d01833981519152604482015290519081900360640190fd5b6014541561217e5760148054600019019055601380546001019055565b612466612af7565b6000546001600160a01b039081169116146124b6576040805162461bcd60e51b81526020600482018190526024820152600080516020613d01833981519152604482015290519081900360640190fd5b601c805460ff60b01b1960ff60a81b19909116600160a81b1716600160b01b17905542600d55565b6001600160a01b031660009081526008602052604090205460ff1690565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b61252f612af7565b6000546001600160a01b0390811691161461257f576040805162461bcd60e51b81526020600482018190526024820152600080516020613d01833981519152604482015290519081900360640190fd5b601c8054911515600160a81b0260ff60a81b19909216919091179055565b6125a5612af7565b6000546001600160a01b039081169116146125f5576040805162461bcd60e51b81526020600482018190526024820152600080516020613d01833981519152604482015290519081900360640190fd5b601c805460ff60b01b1916600160b01b179055565b612612612af7565b6000546001600160a01b03908116911614612662576040805162461bcd60e51b81526020600482018190526024820152600080516020613d01833981519152604482015290519081900360640190fd5b6019546001600160a01b03828116911614156126c5576040805162461bcd60e51b815260206004820152601e60248201527f57652063616e206e6f74206578636c756465206f757220726f757465722e0000604482015290519081900360640190fd5b6001600160a01b03811660009081526008602052604090205460ff1615612733576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b6001600160a01b0381166000908152600360205260409020541561278d576001600160a01b03811660009081526003602052604090205461277390610eee565b6001600160a01b0382166000908152600460205260409020555b6001600160a01b03166000818152600860205260408120805460ff191660019081179091556009805491820181559091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b0319169091179055565b6127fb612af7565b6000546001600160a01b0390811691161461284b576040805162461bcd60e51b81526020600482018190526024820152600080516020613d01833981519152604482015290519081900360640190fd5b6001600160a01b0381166128905760405162461bcd60e51b8152600401808060200182810382526026815260200180613c706026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6128f3612af7565b6000546001600160a01b03908116911614612943576040805162461bcd60e51b81526020600482018190526024820152600080516020613d01833981519152604482015290519081900360640190fd5b476119be816133b5565b4790565b612959612af7565b6000546001600160a01b039081169116146129a9576040805162461bcd60e51b81526020600482018190526024820152600080516020613d01833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526008602052604090205460ff16612a16576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b60005b600954811015610de457816001600160a01b031660098281548110612a3a57fe5b6000918252602090912001546001600160a01b03161415612adf57600980546000198101908110612a6757fe5b600091825260209091200154600980546001600160a01b039092169183908110612a8d57fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600482526040808220829055600890925220805460ff191690556009805480610db557fe5b600101612a19565b601c54600160b01b900460ff1681565b3390565b6001600160a01b038316612b405760405162461bcd60e51b8152600401808060200182810382526024815260200180613d976024913960400191505060405180910390fd5b6001600160a01b038216612b855760405162461bcd60e51b8152600401808060200182810382526022815260200180613c966022913960400191505060405180910390fd5b6001600160a01b03808416600081815260066020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316612c2c5760405162461bcd60e51b8152600401808060200182810382526025815260200180613d4a6025913960400191505060405180910390fd5b6001600160a01b038216612c715760405162461bcd60e51b8152600401808060200182810382526023815260200180613c236023913960400191505060405180910390fd5b60008111612cb05760405162461bcd60e51b8152600401808060200182810382526029815260200180613d216029913960400191505060405180910390fd5b6001600160a01b0382166000908152600e602052604090205460ff1615612d18576040805162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b604482015290519081900360640190fd5b336000908152600e602052604090205460ff1615612d77576040805162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b604482015290519081900360640190fd5b6001600160a01b0383166000908152600e602052604090205460ff1615612ddf576040805162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b604482015290519081900360640190fd5b612de7612104565b6001600160a01b0316836001600160a01b031614158015612e215750612e0b612104565b6001600160a01b0316826001600160a01b031614155b15612ef757601c54600160b01b900460ff16612ef7576001600160a01b038316301480612e5657506001600160a01b03821630145b80612e795750612e64612104565b6001600160a01b0316836001600160a01b0316145b80612e9c5750612e87612104565b6001600160a01b0316826001600160a01b0316145b612ef757601c54600160b01b900460ff16612ef7576040805162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c81a5cc81b9bdd08195b98589b195960521b604482015290519081900360640190fd5b6000612f0230611abe565b601e54601c5491925082101590600160a01b900460ff16158015612f2f5750601c54600160a81b900460ff165b8015612f385750805b8015612f525750601c546001600160a01b03868116911614155b15612f7257612f60826131e7565b478015612f7057612f70476133b5565b505b6001600160a01b03851660009081526007602052604090205460019060ff1680612fb457506001600160a01b03851660009081526007602052604090205460ff165b15612fbd575060005b612fc9868686846133f7565b505050505050565b600081848411156130605760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561302557818101518382015260200161300d565b50505050905090810190601f1680156130525780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600080600061307561356b565b9092509050613084828261308b565b9250505090565b60006130cd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506136ce565b9392505050565b6000828201838110156130cd576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008060008060008060008060008061314c8b601354601454613733565b925092509250600061315c613068565b9050613166613bfa565b6131728d858585613788565b805160208201516040830151606090930151919e509c50909a509498509296509094509192505050919395979092949650565b60006130cd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612fd1565b601c805460ff60a01b1916600160a01b1790556040805160028082526060808301845292602083019080368337019050509050308160008151811061322857fe5b6001600160a01b03928316602091820292909201810191909152601b54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561327c57600080fd5b505afa158015613290573d6000803e3d6000fd5b505050506040513d60208110156132a657600080fd5b50518151829060019081106132b757fe5b6001600160a01b039283166020918202929092010152601b546132dd9130911684612afb565b601b5460405163791ac94760e01b8152600481018481526000602483018190523060648401819052426084850181905260a060448601908152875160a487015287516001600160a01b039097169663791ac947968a968a9594939092909160c40190602080880191028083838b5b8381101561336357818101518382015260200161334b565b505050509050019650505050505050600060405180830381600087803b15801561338c57600080fd5b505af11580156133a0573d6000803e3d6000fd5b5050601c805460ff60a01b1916905550505050565b6017546001600160a01b03166108fc6133cf83600261308b565b6040518115909202916000818181858888f19350505050158015610de4573d6000803e3d6000fd5b80613404576134046137f4565b6001600160a01b03841660009081526008602052604090205460ff16801561344557506001600160a01b03831660009081526008602052604090205460ff16155b1561345a57613455848484613825565b613558565b6001600160a01b03841660009081526008602052604090205460ff1615801561349b57506001600160a01b03831660009081526008602052604090205460ff165b156134ab57613455848484613961565b6001600160a01b03841660009081526008602052604090205460ff161580156134ed57506001600160a01b03831660009081526008602052604090205460ff16155b156134fd57613455848484613a20565b6001600160a01b03841660009081526008602052604090205460ff16801561353d57506001600160a01b03831660009081526008602052604090205460ff165b1561354d57613455848484613a7a565b613558848484613a20565b8061356557613565613b03565b50505050565b600b54600a546000918291825b60095481101561369c5782600360006009848154811061359457fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806135f957508160046000600984815481106135d257fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561361057600b54600a54945094505050506136ca565b613650600360006009848154811061362457fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205484906131a5565b9250613692600460006009848154811061366657fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205483906131a5565b9150600101613578565b50600a54600b546136ac9161308b565b8210156136c457600b54600a549350935050506136ca565b90925090505b9091565b6000818361371d5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561302557818101518382015260200161300d565b50600083858161372957fe5b0495945050505050565b600080808061374d60646137478989613b11565b9061308b565b9050600061376060646137478a89613b11565b90506000613778826137728b866131a5565b906131a5565b9992985090965090945050505050565b613790613bfa565b600061379c8684613b11565b905060006137aa8685613b11565b905060006137b88686613b11565b905060006137ca8261377286866131a5565b60408051608081018252958652602086019190915284019290925260608301525095945050505050565b6013541580156138045750601454155b1561380e5761217e565b601380546015556014805460165560009182905555565b60008060008060008060006138398861312e565b965096509650965096509650965061387f88600460008d6001600160a01b03166001600160a01b03168152602001908152602001600020546131a590919063ffffffff16565b6001600160a01b038b166000908152600460209081526040808320939093556003905220546138ae90886131a5565b6001600160a01b03808c1660009081526003602052604080822093909355908b16815220546138dd90876130d4565b6001600160a01b038a166000908152600360205260409020556139008183613b6a565b61390a8584613bd6565b886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a350505050505050505050565b60008060008060008060006139758861312e565b96509650965096509650965096506139bb87600360008d6001600160a01b03166001600160a01b03168152602001908152602001600020546131a590919063ffffffff16565b6001600160a01b03808c16600090815260036020908152604080832094909455918c168152600490915220546139f190856130d4565b6001600160a01b038a166000908152600460209081526040808320939093556003905220546138dd90876130d4565b6000806000806000806000613a348861312e565b96509650965096509650965096506138ae87600360008d6001600160a01b03166001600160a01b03168152602001908152602001600020546131a590919063ffffffff16565b6000806000806000806000613a8e8861312e565b9650965096509650965096509650613ad488600460008d6001600160a01b03166001600160a01b03168152602001908152602001600020546131a590919063ffffffff16565b6001600160a01b038b166000908152600460209081526040808320939093556003905220546139bb90886131a5565b601554601355601654601455565b600082613b2057506000610c2a565b82820282848281613b2d57fe5b04146130cd5760405162461bcd60e51b8152600401808060200182810382526021815260200180613cb86021913960400191505060405180910390fd5b30600090815260036020526040902054613b8490836130d4565b3060009081526003602090815260408083209390935560089052205460ff1615610de45730600090815260046020526040902054613bc290826130d4565b306000908152600460205260409020555050565b600b54613be390836131a5565b600b55600c54613bf390826130d4565b600c555050565b604051806080016040528060008152602001600081526020016000815260200160008152509056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737357652063616e206e6f7420626c61636b6c6973742074686520636f6e7472616374206f776e65722e45524332303a20617070726f76652066726f6d20746865207a65726f20616464726573734578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f57652063616e206e6f7420626c61636b6c6973742074686520636f6e74726163742e205372736c793fa2646970667358221220b15f95a2ce5aa8fd437218d9b10b37caaf093a77c5535e0bc24d396868511e8564736f6c634300060c0033

Deployed Bytecode Sourcemap

24586:25275:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49173:135;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;49173:135:0;-1:-1:-1;;;;;49173:135:0;;:::i;:::-;;32577:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33489:161;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;33489:161:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;38202:481;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;38202:481:0;-1:-1:-1;;;;;38202:481:0;;:::i;32314:105::-;;;;;;;;;;;;;:::i;34745:87::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;25975:41;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;25975:41:0;;;;;;;;;;;;;;32854:95;;;;;;;;;;;;;:::i;33658:313::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;33658:313:0;;;;;;;;;;;;;;;;;:::i;35672:253::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;35672:253:0;;:::i;32763:83::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;48521:506;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;48521:506:0;-1:-1:-1;;;;;48521:506:0;;:::i;31986:96::-;;;;;;;;;;;;;:::i;27302:4258::-;;;;;;;;;;;;;:::i;33979:218::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;33979:218:0;;;;;;;;:::i;34840:378::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34840:378:0;;:::i;35226:438::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;35226:438:0;;;;;;;;;:::i;26023:28::-;;;;;;;;;;;;;:::i;32090:102::-;;;;;;;;;;;;;:::i;41983:156::-;;;;;;;;;;;;;:::i;37176:123::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;37176:123:0;-1:-1:-1;;;;;37176:123:0;;:::i;31711:110::-;;;;;;;;;;;;;:::i;40936:84::-;;;;;;;;;;;;;:::i;26086:30::-;;;;;;;;;;;;;:::i;32957:198::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32957:198:0;-1:-1:-1;;;;;32957:198:0;;:::i;32204:98::-;;;;;;;;;;;;;:::i;15752:148::-;;;;;;;;;;;;;:::i;25282:25::-;;;;;;;;;;;;;:::i;26208:53::-;;;;;;;;;;;;;:::i;26732:562::-;;;;;;;;;;;;;:::i;37652:542::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;37652:542:0;-1:-1:-1;;;;;37652:542:0;;:::i;15118:79::-;;;;;;;;;;;;;:::i;49035:130::-;;;;;;;;;;;;;:::i;32668:87::-;;;;;;;;;;;;;:::i;49316:106::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;49316:106:0;-1:-1:-1;;;;;49316:106:0;;:::i;34205:269::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;34205:269:0;;;;;;;;:::i;49430:96::-;;;;;;;;;;;;;:::i;49651:207::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;49651:207:0;;;;;;;;;;;;;;;;;:::i;33163:167::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;33163:167:0;;;;;;;;:::i;34600:137::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;34600:137:0;;;;;;;;;;:::i;32427:142::-;;;;;;;;;;;;;:::i;31829:149::-;;;;;;;;;;;;;:::i;34482:110::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34482:110:0;-1:-1:-1;;;;;34482:110:0;;:::i;33338:143::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;33338:143:0;;;;;;;;;;:::i;42314:98::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;42314:98:0;;;;:::i;41028:81::-;;;;;;;;;;;;;:::i;35933:404::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;35933:404:0;-1:-1:-1;;;;;35933:404:0;;:::i;16052:244::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16052:244:0;-1:-1:-1;;;;;16052:244:0;;:::i;42147:159::-;;;;;;;;;;;;;:::i;48403:110::-;;;;;;;;;;;;;:::i;36345:478::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;36345:478:0;-1:-1:-1;;;;;36345:478:0;;:::i;26123:31::-;;;;;;;;;;;;;:::i;49173:135::-;15338:12;:10;:12::i;:::-;15328:6;;-1:-1:-1;;;;;15328:6:0;;;:22;;;15320:67;;;;;-1:-1:-1;;;15320:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15320:67:0;;;;;;;;;;;;;;;49266:16:::1;:34:::0;;-1:-1:-1;;;;;;49266:34:0::1;-1:-1:-1::0;;;;;49266:34:0;;;::::1;::::0;;;::::1;::::0;;49173:135::o;32577:83::-;32647:5;32640:12;;;;;;;;-1:-1:-1;;32640:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32614:13;;32640:12;;32647:5;;32640:12;;32647:5;32640:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32577:83;:::o;33489:161::-;33564:4;33581:39;33590:12;:10;:12::i;:::-;33604:7;33613:6;33581:8;:39::i;:::-;-1:-1:-1;33638:4:0;33489:161;;;;;:::o;38202:481::-;15338:12;:10;:12::i;:::-;15328:6;;-1:-1:-1;;;;;15328:6:0;;;:22;;;15320:67;;;;;-1:-1:-1;;;15320:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15320:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;38282:18:0;::::1;;::::0;;;:9:::1;:18;::::0;;;;;::::1;;38274:57;;;::::0;;-1:-1:-1;;;38274:57:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;38347:9;38342:334;38366:17;:24:::0;38362:28;::::1;38342:334;;;38440:7;-1:-1:-1::0;;;;;38416:31:0::1;:17;38434:1;38416:20;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;38416:20:0::1;:31;38412:253;;;38491:17;38509:24:::0;;-1:-1:-1;;38509:28:0;;;38491:47;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;38468:17:::1;:20:::0;;-1:-1:-1;;;;;38491:47:0;;::::1;::::0;38486:1;;38468:20;::::1;;;;;;::::0;;;::::1;::::0;;;;;;::::1;:70:::0;;-1:-1:-1;;;;;;38468:70:0::1;-1:-1:-1::0;;;;;38468:70:0;;::::1;;::::0;;38557:18;;::::1;::::0;;:9:::1;:18:::0;;;;;;:26;;-1:-1:-1;;38557:26:0::1;::::0;;38602:17:::1;:23:::0;;;::::1;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;38602:23:0;;;;;-1:-1:-1;;;;;;38602:23:0::1;::::0;;;;;38644:5:::1;;38412:253;38392:3;;38342:334;;;;38202:481:::0;:::o;32314:105::-;15338:12;:10;:12::i;:::-;15328:6;;-1:-1:-1;;;;;15328:6:0;;;:22;;;15320:67;;;;;-1:-1:-1;;;15320:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15320:67:0;;;;;;;;;;;;;;;32387:1:::1;32377:7;:11:::0;32410:1:::1;32399:8;:12:::0;32314:105::o;34745:87::-;34814:10;;34745:87;:::o;25975:41::-;;;-1:-1:-1;;;;;25975:41:0;;:::o;32854:95::-;32934:7;;32854:95;:::o;33658:313::-;33756:4;33773:36;33783:6;33791:9;33802:6;33773:9;:36::i;:::-;33820:121;33829:6;33837:12;:10;:12::i;:::-;33851:89;33889:6;33851:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;33851:19:0;;;;;;:11;:19;;;;;;33871:12;:10;:12::i;:::-;-1:-1:-1;;;;;33851:33:0;;;;;;;;;;;;-1:-1:-1;33851:33:0;;;:89;:37;:89::i;:::-;33820:8;:121::i;:::-;-1:-1:-1;33959:4:0;33658:313;;;;;:::o;35672:253::-;35738:7;35777;;35766;:18;;35758:73;;;;-1:-1:-1;;;35758:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35842:19;35865:10;:8;:10::i;:::-;35842:33;-1:-1:-1;35893:24:0;:7;35842:33;35893:11;:24::i;:::-;35886:31;;;35672:253;;;;:::o;32763:83::-;32829:9;;;;32763:83;:::o;48521:506::-;15338:12;:10;:12::i;:::-;15328:6;;-1:-1:-1;;;;;15328:6:0;;;:22;;;15320:67;;;;;-1:-1:-1;;;15320:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15320:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;48607:16:0;::::1;48589:15;48607:16:::0;;;:7:::1;:16;::::0;;;;;;;;;48652:7:::1;:16:::0;;;;;;;;48679:20;;;;48710;;;;48607:16;48745:19:::1;48607:16:::0;48745:10:::1;:19::i;:::-;48741:279;;;48806:5;::::0;-1:-1:-1;;;;;48806:5:0::1;48798:14;::::0;;;:7:::1;:14;::::0;;;;;:27:::1;::::0;48817:7;48798:18:::1;:27::i;:::-;48789:5;::::0;;-1:-1:-1;;;;;48789:5:0;;::::1;48781:14;::::0;;;:7:::1;:14;::::0;;;;;;;;:44;;;;48863:5;;48845:33;;;;;;;48863:5;;::::1;::::0;48845:33;;::::1;::::0;::::1;::::0;;;;;;;::::1;48741:279;;;48936:5;::::0;-1:-1:-1;;;;;48936:5:0::1;48928:14;::::0;;;:7:::1;:14;::::0;;;;;:27:::1;::::0;48947:7;48928:18:::1;:27::i;:::-;48919:5;::::0;;-1:-1:-1;;;;;48919:5:0;;::::1;48911:14;::::0;;;:7:::1;:14;::::0;;;;;;;;:44;;;;48993:5;;48975:33;;;;;;;48993:5;;::::1;::::0;48975:33;;::::1;::::0;::::1;::::0;;;;;;;::::1;48741:279;15398:1;;48521:506:::0;:::o;31986:96::-;15338:12;:10;:12::i;:::-;15328:6;;-1:-1:-1;;;;;15328:6:0;;;:22;;;15320:67;;;;;-1:-1:-1;;;15320:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15320:67:0;;;;;;;;;;;;;;;32050:1:::1;32040:7;:11:::0;32073:1:::1;32062:8;:12:::0;31986:96::o;27302:4258::-;15338:12;:10;:12::i;:::-;15328:6;;-1:-1:-1;;;;;15328:6:0;;;:22;;;15320:67;;;;;-1:-1:-1;;;15320:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15320:67:0;;;;;;;;;;;;;;;27435:76:::1;27467:42;27435:23;:76::i;:::-;27522;27554:42;27522:23;:76::i;:::-;27609;27641:42;27609:23;:76::i;:::-;27696;27728:42;27696:23;:76::i;:::-;27783;27815:42;27783:23;:76::i;:::-;27870;27902:42;27870:23;:76::i;:::-;27957;27989:42;27957:23;:76::i;:::-;28044;28076:42;28044:23;:76::i;:::-;28131;28163:42;28131:23;:76::i;:::-;28218;28250:42;28218:23;:76::i;:::-;28305;28337:42;28305:23;:76::i;:::-;28392;28424:42;28392:23;:76::i;:::-;28479;28511:42;28479:23;:76::i;:::-;28566;28598:42;28566:23;:76::i;:::-;28653;28685:42;28653:23;:76::i;:::-;28740;28772:42;28740:23;:76::i;:::-;28827;28859:42;28827:23;:76::i;:::-;28914;28946:42;28914:23;:76::i;:::-;29001;29033:42;29001:23;:76::i;:::-;29088;29120:42;29088:23;:76::i;:::-;29175;29207:42;29175:23;:76::i;:::-;29262;29294:42;29262:23;:76::i;:::-;29349;29381:42;29349:23;:76::i;:::-;29436;29468:42;29436:23;:76::i;:::-;29523;29555:42;29523:23;:76::i;:::-;29610;29642:42;29610:23;:76::i;:::-;29697;29729:42;29697:23;:76::i;:::-;29784;29816:42;29784:23;:76::i;:::-;29871;29903:42;29871:23;:76::i;:::-;29958;29990:42;29958:23;:76::i;:::-;30045;30077:42;30045:23;:76::i;:::-;30132;30164:42;30132:23;:76::i;:::-;30219;30251:42;30219:23;:76::i;:::-;30306;30338:42;30306:23;:76::i;:::-;30393;30425:42;30393:23;:76::i;:::-;30480;30512:42;30480:23;:76::i;:::-;30567;30599:42;30567:23;:76::i;:::-;30654;30686:42;30654:23;:76::i;:::-;30741;30773:42;30741:23;:76::i;:::-;30828;30860:42;30828:23;:76::i;:::-;30915;30947:42;30915:23;:76::i;:::-;31002;31034:42;31002:23;:76::i;:::-;31089;31121:42;31089:23;:76::i;:::-;31176;31208:42;31176:23;:76::i;:::-;31263;31295:42;31263:23;:76::i;:::-;31350;31382:42;31350:23;:76::i;:::-;31439:15;:69:::0;;-1:-1:-1;;;;;;31439:69:0::1;31465:42;31439:69;::::0;;31531:13:::1;::::0;-1:-1:-1;;;;;31531:13:0::1;31439:15;31519:26:::0;;;:11:::1;:26;::::0;;;;:33;;-1:-1:-1;;31519:33:0::1;31439:69:::0;31519:33:::1;::::0;;27302:4258::o;33979:218::-;34067:4;34084:83;34093:12;:10;:12::i;:::-;34107:7;34116:50;34155:10;34116:11;:25;34128:12;:10;:12::i;:::-;-1:-1:-1;;;;;34116:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;34116:25:0;;;:34;;;;;;;;;;;:38;:50::i;34840:378::-;34892:14;34909:12;:10;:12::i;:::-;-1:-1:-1;;;;;34941:19:0;;;;;;:11;:19;;;;;;34892:29;;-1:-1:-1;34941:19:0;;34940:20;34932:77;;;;-1:-1:-1;;;34932:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35021:15;35046:19;35057:7;35046:10;:19::i;:::-;-1:-1:-1;;;;;;;;35094:15:0;;;;;;:7;:15;;;;;;35020:45;;-1:-1:-1;35094:28:0;;:15;-1:-1:-1;35020:45:0;;-1:-1:-1;;35094:19:0;:28::i;:::-;-1:-1:-1;;;;;35076:15:0;;;;;;:7;:15;;;;;:46;35143:7;;:20;;35155:7;35143:11;:20::i;:::-;35133:7;:30;35187:10;;:23;;35202:7;35187:14;:23::i;:::-;35174:10;:36;-1:-1:-1;;;34840:378:0:o;35226:438::-;35316:7;35355;;35344;:18;;35336:62;;;;;-1:-1:-1;;;35336:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;35414:17;35409:248;;35449:15;35474:19;35485:7;35474:10;:19::i;:::-;-1:-1:-1;35448:45:0;;-1:-1:-1;35508:14:0;;-1:-1:-1;;;;;;35508:14:0;35409:248;35557:23;35589:19;35600:7;35589:10;:19::i;:::-;-1:-1:-1;35555:53:0;;-1:-1:-1;35623:22:0;;-1:-1:-1;;;;;;35623:22:0;26023:28;;;-1:-1:-1;;;;;26023:28:0;;:::o;32090:102::-;15338:12;:10;:12::i;:::-;15328:6;;-1:-1:-1;;;;;15328:6:0;;;:22;;;15320:67;;;;;-1:-1:-1;;;15320:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15320:67:0;;;;;;;;;;;;;;;32159:1:::1;32149:7;:11:::0;32182:2:::1;32171:8;:13:::0;32090:102::o;41983:156::-;15338:12;:10;:12::i;:::-;15328:6;;-1:-1:-1;;;;;15328:6:0;;;:22;;;15320:67;;;;;-1:-1:-1;;;15320:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15320:67:0;;;;;;;;;;;;;;;42037:23:::1;42063:24;42081:4;42063:9;:24::i;:::-;42037:50;;42098:33;42115:15;42098:16;:33::i;:::-;15398:1;41983:156::o:0;37176:123::-;-1:-1:-1;;;;;37264:27:0;37240:4;37264:27;;;:18;:27;;;;;;;;;37176:123::o;31711:110::-;15338:12;:10;:12::i;:::-;15328:6;;-1:-1:-1;;;;;15328:6:0;;;:22;;;15320:67;;;;;-1:-1:-1;;;15320:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15320:67:0;;;;;;;;;;;;;;;31789:24:::1;31774:12;:39:::0;31711:110::o;40936:84::-;15338:12;:10;:12::i;:::-;15328:6;;-1:-1:-1;;;;;15328:6:0;;;:22;;;15320:67;;;;;-1:-1:-1;;;15320:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15320:67:0;;;;;;;;;;;;;;;40993:11:::1;:19:::0;;-1:-1:-1;;;;40993:19:0::1;::::0;;40936:84::o;26086:30::-;;;-1:-1:-1;;;26086:30:0;;;;;:::o;32957:198::-;-1:-1:-1;;;;;33047:20:0;;33023:7;33047:20;;;:11;:20;;;;;;;;33043:49;;;-1:-1:-1;;;;;;33076:16:0;;;;;;:7;:16;;;;;;33069:23;;33043:49;-1:-1:-1;;;;;33130:16:0;;;;;;:7;:16;;;;;;33110:37;;:19;:37::i;32204:98::-;15338:12;:10;:12::i;:::-;15328:6;;-1:-1:-1;;;;;15328:6:0;;;:22;;;15320:67;;;;;-1:-1:-1;;;15320:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15320:67:0;;;;;;;;;;;;;;;32270:1:::1;32260:7;:11:::0;;;32282:8:::1;:12:::0;32204:98::o;15752:148::-;15338:12;:10;:12::i;:::-;15328:6;;-1:-1:-1;;;;;15328:6:0;;;:22;;;15320:67;;;;;-1:-1:-1;;;15320:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15320:67:0;;;;;;;;;;;;;;;15859:1:::1;15843:6:::0;;15822:40:::1;::::0;-1:-1:-1;;;;;15843:6:0;;::::1;::::0;15822:40:::1;::::0;15859:1;;15822:40:::1;15890:1;15873:19:::0;;-1:-1:-1;;;;;;15873:19:0::1;::::0;;15752:148::o;25282:25::-;;;;:::o;26208:53::-;;;;:::o;26732:562::-;15338:12;:10;:12::i;:::-;15328:6;;-1:-1:-1;;;;;15328:6:0;;;:22;;;15320:67;;;;;-1:-1:-1;;;15320:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15320:67:0;;;;;;;;;;;;;;;26845:7:::1;::::0;26951:26:::1;::::0;;-1:-1:-1;;;26951:26:0;;;;-1:-1:-1;;;;;26845:7:0;;::::1;::::0;;;26951:24:::1;::::0;:26:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;26845:7;26951:26;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;26951:26:0;27015:23:::1;::::0;;-1:-1:-1;;;27015:23:0;;;;-1:-1:-1;;;;;26933:66:0;;::::1;::::0;::::1;::::0;27008:4:::1;::::0;27015:21;;::::1;::::0;::::1;::::0;:23:::1;::::0;;::::1;::::0;26951:26:::1;::::0;27015:23;;;;;;;;:21;:23;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;27015:23:0;26933:106:::1;::::0;;-1:-1:-1;;;;;;26933:106:0::1;::::0;;;;;;-1:-1:-1;;;;;26933:106:0;;::::1;;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;27015:23:::1;::::0;26933:106;;;;;;;-1:-1:-1;26933:106:0;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;26933:106:0;26917:13:::1;:122:::0;;-1:-1:-1;;;;;;26917:122:0;;::::1;-1:-1:-1::0;;;;;26917:122:0;;::::1;;::::0;;;27103:15:::1;:34:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;27201:18:0::1;-1:-1:-1::0;27220:7:0::1;:5;:7::i;:::-;-1:-1:-1::0;;;;;27201:27:0::1;::::0;;::::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;27201:27:0;;;:34;;;::::1;;-1:-1:-1::0;;27201:34:0;;::::1;;::::0;;27273:4:::1;27246:33:::0;;:18:::1;:33:::0;;;;;:40;;;;::::1;27201:34:::0;27246:40:::1;::::0;;-1:-1:-1;26732:562:0:o;37652:542::-;15338:12;:10;:12::i;:::-;15328:6;;-1:-1:-1;;;;;15328:6:0;;;:22;;;15320:67;;;;;-1:-1:-1;;;15320:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15320:67:0;;;;;;;;;;;;;;;37742:7:::1;::::0;-1:-1:-1;;;;;37731:18:0;;::::1;37742:7:::0;::::1;37731:18;;37723:63;;;::::0;;-1:-1:-1;;;37723:63:0;;::::1;;::::0;::::1;::::0;;;;;;;::::1;::::0;;;;;;;;;;;;;::::1;;37816:13;::::0;-1:-1:-1;;;;;37805:24:0;;::::1;37816:13:::0;::::1;37805:24;;37797:67;;;::::0;;-1:-1:-1;;;37797:67:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;37894:7;:5;:7::i;:::-;-1:-1:-1::0;;;;;37883:18:0::1;:7;-1:-1:-1::0;;;;;37883:18:0::1;;;37875:71;;;;-1:-1:-1::0;;;37875:71:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;37965:24:0;::::1;37984:4;37965:24;;37957:78;;;;-1:-1:-1::0;;;37957:78:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;38055:18:0;::::1;;::::0;;;:9:::1;:18;::::0;;;;;::::1;;38054:19;38046:62;;;::::0;;-1:-1:-1;;;38046:62:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;38119:18:0::1;;::::0;;;:9:::1;:18;::::0;;;;:25;;-1:-1:-1;;38119:25:0::1;38140:4;38119:25:::0;;::::1;::::0;;;38155:17:::1;:31:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;38155:31:0::1;::::0;;::::1;::::0;;37652:542::o;15118:79::-;15156:7;15183:6;-1:-1:-1;;;;;15183:6:0;15118:79;:::o;49035:130::-;15338:12;:10;:12::i;:::-;15328:6;;-1:-1:-1;;;;;15328:6:0;;;:22;;;15320:67;;;;;-1:-1:-1;;;15320:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15320:67:0;;;;;;;;;;;;;;;49107:8:::1;::::0;:12;49103:55:::1;;49136:8;:10:::0;;-1:-1:-1;;49136:10:0;;;49103:55:::1;49035:130::o:0;32668:87::-;32740:7;32733:14;;;;;;;;-1:-1:-1;;32733:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32707:13;;32733:14;;32740:7;;32733:14;;32740:7;32733:14;;;;;;;;;;;;;;;;;;;;;;;;49316:106;-1:-1:-1;;;;;49396:18:0;49372:4;49396:18;;;:9;:18;;;;;;;;;49316:106::o;34205:269::-;34298:4;34315:129;34324:12;:10;:12::i;:::-;34338:7;34347:96;34386:15;34347:96;;;;;;;;;;;;;;;;;:11;:25;34359:12;:10;:12::i;:::-;-1:-1:-1;;;;;34347:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;34347:25:0;;;:34;;;;;;;;;;;:96;:38;:96::i;49430:::-;49510:8;;49430:96;:::o;49651:207::-;49767:12;15338;:10;:12::i;:::-;15328:6;;-1:-1:-1;;;;;15328:6:0;;;:22;;;15320:67;;;;;-1:-1:-1;;;15320:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15320:67:0;;;;;;;;;;;;;;;49806:12:::1;-1:-1:-1::0;;;;;49799:29:0::1;;49829:12;49843:6;49799:51;;;;;;;;;;;;;-1:-1:-1::0;;;;;49799:51:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;49799:51:0;;49651:207;-1:-1:-1;;;;49651:207:0:o;33163:167::-;33241:4;33258:42;33268:12;:10;:12::i;:::-;33282:9;33293:6;33258:9;:42::i;34600:137::-;15338:12;:10;:12::i;:::-;15328:6;;-1:-1:-1;;;;;15328:6:0;;;:22;;;15320:67;;;;;-1:-1:-1;;;15320:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15320:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;34691:27:0;;;::::1;;::::0;;;:18:::1;:27;::::0;;;;:38;;-1:-1:-1;;34691:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;34600:137::o;32427:142::-;15338:12;:10;:12::i;:::-;15328:6;;-1:-1:-1;;;;;15328:6:0;;;:22;;;15320:67;;;;;-1:-1:-1;;;15320:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15320:67:0;;;;;;;;;;;;;;;32487:8:::1;::::0;:12;32483:79:::1;;32516:8;:10:::0;;-1:-1:-1;;32516:10:0;;;32541:7:::1;:9:::0;;32516:10:::1;32541:9;::::0;;32427:142::o;31829:149::-;15338:12;:10;:12::i;:::-;15328:6;;-1:-1:-1;;;;;15328:6:0;;;:22;;;15320:67;;;;;-1:-1:-1;;;15320:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15320:67:0;;;;;;;;;;;;;;;31884:11:::1;:18:::0;;-1:-1:-1;;;;;;;;31884:18:0;;::::1;-1:-1:-1::0;;;31884:18:0::1;31913;-1:-1:-1::0;;;31913:18:0::1;::::0;;31955:15:::1;31942:10;:28:::0;31829:149::o;34482:110::-;-1:-1:-1;;;;;34564:20:0;34540:4;34564:20;;;:11;:20;;;;;;;;;34482:110::o;33338:143::-;-1:-1:-1;;;;;33446:18:0;;;33419:7;33446:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;33338:143::o;42314:98::-;15338:12;:10;:12::i;:::-;15328:6;;-1:-1:-1;;;;;15328:6:0;;;:22;;;15320:67;;;;;-1:-1:-1;;;15320:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15320:67:0;;;;;;;;;;;;;;;42383:11:::1;:21:::0;;;::::1;;-1:-1:-1::0;;;42383:21:0::1;-1:-1:-1::0;;;;42383:21:0;;::::1;::::0;;;::::1;::::0;;42314:98::o;41028:81::-;15338:12;:10;:12::i;:::-;15328:6;;-1:-1:-1;;;;;15328:6:0;;;:22;;;15320:67;;;;;-1:-1:-1;;;15320:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15320:67:0;;;;;;;;;;;;;;;41083:11:::1;:18:::0;;-1:-1:-1;;;;41083:18:0::1;-1:-1:-1::0;;;41083:18:0::1;::::0;;41028:81::o;35933:404::-;15338:12;:10;:12::i;:::-;15328:6;;-1:-1:-1;;;;;15328:6:0;;;:22;;;15320:67;;;;;-1:-1:-1;;;15320:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15320:67:0;;;;;;;;;;;;;;;36025:7:::1;::::0;-1:-1:-1;;;;;36014:18:0;;::::1;36025:7:::0;::::1;36014:18;;36006:61;;;::::0;;-1:-1:-1;;;36006:61:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;36087:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;36086:21;36078:61;;;::::0;;-1:-1:-1;;;36078:61:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;36153:16:0;::::1;36172:1;36153:16:::0;;;:7:::1;:16;::::0;;;;;:20;36150:108:::1;;-1:-1:-1::0;;;;;36229:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;36209:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;36190:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;36150:108:::1;-1:-1:-1::0;;;;;36268:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;36268:27:0::1;36291:4;36268:27:::0;;::::1;::::0;;;36306:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;36306:23:0::1;::::0;;::::1;::::0;;35933:404::o;16052:244::-;15338:12;:10;:12::i;:::-;15328:6;;-1:-1:-1;;;;;15328:6:0;;;:22;;;15320:67;;;;;-1:-1:-1;;;15320:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15320:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;16141:22:0;::::1;16133:73;;;;-1:-1:-1::0;;;16133:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16243:6;::::0;;16222:38:::1;::::0;-1:-1:-1;;;;;16222:38:0;;::::1;::::0;16243:6;::::1;::::0;16222:38:::1;::::0;::::1;16271:6;:17:::0;;-1:-1:-1;;;;;;16271:17:0::1;-1:-1:-1::0;;;;;16271:17:0;;;::::1;::::0;;;::::1;::::0;;16052:244::o;42147:159::-;15338:12;:10;:12::i;:::-;15328:6;;-1:-1:-1;;;;;15328:6:0;;;:22;;;15320:67;;;;;-1:-1:-1;;;15320:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15320:67:0;;;;;;;;;;;;;;;42230:21:::1;42262:36;42230:21:::0;42262:16:::1;:36::i;48403:110::-:0;48484:21;48403:110;:::o;36345:478::-;15338:12;:10;:12::i;:::-;15328:6;;-1:-1:-1;;;;;15328:6:0;;;:22;;;15320:67;;;;;-1:-1:-1;;;15320:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15320:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;36426:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;36418:60;;;::::0;;-1:-1:-1;;;36418:60:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;36494:9;36489:327;36513:9;:16:::0;36509:20;::::1;36489:327;;;36571:7;-1:-1:-1::0;;;;;36555:23:0::1;:9;36565:1;36555:12;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;36555:12:0::1;:23;36551:254;;;36614:9;36624:16:::0;;-1:-1:-1;;36624:20:0;;;36614:31;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;36599:9:::1;:12:::0;;-1:-1:-1;;;;;36614:31:0;;::::1;::::0;36609:1;;36599:12;::::1;;;;;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;36599:46:0::1;-1:-1:-1::0;;;;;36599:46:0;;::::1;;::::0;;36664:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;36703:11:::1;:20:::0;;;;:28;;-1:-1:-1;;36703:28:0::1;::::0;;36750:9:::1;:15:::0;;;::::1;;;36551:254;36531:3;;36489:327;;26123:31:::0;;;-1:-1:-1;;;26123:31:0;;;;;:::o;939:106::-;1027:10;939:106;:::o;37307:337::-;-1:-1:-1;;;;;37400:19:0;;37392:68;;;;-1:-1:-1;;;37392:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;37479:21:0;;37471:68;;;;-1:-1:-1;;;37471:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;37552:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;37604:32;;;;;;;;;;;;;;;;;37307:337;;;:::o;38691:2237::-;-1:-1:-1;;;;;38788:20:0;;38780:70;;;;-1:-1:-1;;;38780:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;38869:23:0;;38861:71;;;;-1:-1:-1;;;38861:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38960:1;38951:6;:10;38943:64;;;;-1:-1:-1;;;38943:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;39027:20:0;;;;;;:9;:20;;;;;;;;39026:21;39018:57;;;;;-1:-1:-1;;;39018:57:0;;;;;;;;;;;;-1:-1:-1;;;39018:57:0;;;;;;;;;;;;;;;39105:10;39095:21;;;;:9;:21;;;;;;;;39094:22;39086:58;;;;;-1:-1:-1;;;39086:58:0;;;;;;;;;;;;-1:-1:-1;;;39086:58:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;39164:17:0;;;;;;:9;:17;;;;;;;;39163:18;39155:54;;;;;-1:-1:-1;;;39155:54:0;;;;;;;;;;;;-1:-1:-1;;;39155:54:0;;;;;;;;;;;;;;;39235:7;:5;:7::i;:::-;-1:-1:-1;;;;;39225:17:0;:6;-1:-1:-1;;;;;39225:17:0;;;:41;;;;;39259:7;:5;:7::i;:::-;-1:-1:-1;;;;;39246:20:0;:9;-1:-1:-1;;;;;39246:20:0;;;39225:41;39222:453;;;39386:11;;-1:-1:-1;;;39386:11:0;;;;39381:283;;-1:-1:-1;;;;;39424:23:0;;39442:4;39424:23;;:53;;-1:-1:-1;;;;;;39451:26:0;;39472:4;39451:26;39424:53;:100;;;;39516:7;:5;:7::i;:::-;-1:-1:-1;;;;;39498:26:0;:6;-1:-1:-1;;;;;39498:26:0;;39424:100;:133;;;;39549:7;:5;:7::i;:::-;-1:-1:-1;;;;;39528:29:0;:9;-1:-1:-1;;;;;39528:29:0;;39424:133;39418:231;;39591:11;;-1:-1:-1;;;39591:11:0;;;;39583:46;;;;;-1:-1:-1;;;39583:46:0;;;;;;;;;;;;-1:-1:-1;;;39583:46:0;;;;;;;;;;;;;;;39940:28;39971:24;39989:4;39971:9;:24::i;:::-;40059:32;;40107:6;;39940:55;;-1:-1:-1;40035:56:0;;;;-1:-1:-1;;;40107:6:0;;;;40106:7;:22;;;;-1:-1:-1;40117:11:0;;-1:-1:-1;;;40117:11:0;;;;40106:22;:45;;;;;40132:19;40106:45;:72;;;;-1:-1:-1;40165:13:0;;-1:-1:-1;;;;;40155:23:0;;;40165:13;;40155:23;;40106:72;40102:410;;;40280:38;40297:20;40280:16;:38::i;:::-;40364:21;40403:22;;40400:101;;40446:39;40463:21;40446:16;:39::i;:::-;40102:410;;-1:-1:-1;;;;;40704:26:0;;40585:12;40704:26;;;:18;:26;;;;;;40600:4;;40704:26;;;:59;;-1:-1:-1;;;;;;40734:29:0;;;;;;:18;:29;;;;;;;;40704:59;40701:105;;;-1:-1:-1;40789:5:0;40701:105;40873:47;40888:6;40895:9;40905:6;40912:7;40873:14;:47::i;:::-;38691:2237;;;;;;:::o;5026:192::-;5112:7;5148:12;5140:6;;;;5132:29;;;;-1:-1:-1;;;5132:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5184:5:0;;;5026:192::o;47473:163::-;47514:7;47535:15;47552;47571:19;:17;:19::i;:::-;47534:56;;-1:-1:-1;47534:56:0;-1:-1:-1;47608:20:0;47534:56;;47608:11;:20::i;:::-;47601:27;;;;47473:163;:::o;6404:132::-;6462:7;6489:39;6493:1;6496;6489:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;6482:46;6404:132;-1:-1:-1;;;6404:132:0:o;4141:181::-;4199:7;4231:5;;;4255:6;;;;4247:46;;;;;-1:-1:-1;;;4247:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;46189:477;46248:7;46257;46266;46275;46284;46293;46302;46323:23;46348:12;46362:16;46382:39;46394:7;46403;;46412:8;;46382:11;:39::i;:::-;46322:99;;;;;;46432:19;46455:10;:8;:10::i;:::-;46432:33;;46476:17;;:::i;:::-;46496:49;46508:7;46517:4;46523:8;46533:11;46496;:49::i;:::-;46564:12;;46578:20;;;;46600:9;;;;46644:13;;;;;46564:12;;-1:-1:-1;46578:20:0;-1:-1:-1;46600:9:0;;-1:-1:-1;46611:15:0;;-1:-1:-1;46628:4:0;;-1:-1:-1;46634:8:0;;-1:-1:-1;46644:13:0;;-1:-1:-1;;;46189:477:0;;;;;;;;;:::o;4596:136::-;4654:7;4681:43;4685:1;4688;4681:43;;;;;;;;;;;;;;;;;:3;:43::i;41117:600::-;26527:6;:13;;-1:-1:-1;;;;26527:13:0;-1:-1:-1;;;26527:13:0;;;41278:16:::1;::::0;;41292:1:::1;41278:16:::0;;;41254:21:::1;41278:16:::0;;::::1;::::0;;41254:21;41278:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;41278:16:0::1;41254:40;;41323:4;41305;41310:1;41305:7;;;;;;;;-1:-1:-1::0;;;;;41305:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;41349:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;41349:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;41305:7;;41349:22;;;;;:15;:22;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;41349:22:0;41339:7;;:4;;41344:1:::1;::::0;41339:7;::::1;;;;;-1:-1:-1::0;;;;;41339:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;41416:15:::1;::::0;41384:62:::1;::::0;41401:4:::1;::::0;41416:15:::1;41434:11:::0;41384:8:::1;:62::i;:::-;41485:15;::::0;:224:::1;::::0;-1:-1:-1;;;41485:224:0;;::::1;::::0;::::1;::::0;;;:15:::1;:224:::0;;;;;;41663:4:::1;41485:224:::0;;;;;;41683:15:::1;41485:224:::0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;41485:15:0;;::::1;::::0;:66:::1;::::0;41566:11;;41636:4;;41663;41683:15;41485:224;;;;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;;:15;:224:::1;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;26563:6:0;:14;;-1:-1:-1;;;;26563:14:0;;;-1:-1:-1;;;;41117:600:0:o;41725:108::-;41786:15;;-1:-1:-1;;;;;41786:15:0;:39;41811:13;:6;41822:1;41811:10;:13::i;:::-;41786:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42420:819;42532:7;42528:40;;42554:14;:12;:14::i;:::-;-1:-1:-1;;;;;42585:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;42609:22:0;;;;;;:11;:22;;;;;;;;42608:23;42585:46;42581:597;;;42648:48;42670:6;42678:9;42689:6;42648:21;:48::i;:::-;42581:597;;;-1:-1:-1;;;;;42719:19:0;;;;;;:11;:19;;;;;;;;42718:20;:46;;;;-1:-1:-1;;;;;;42742:22:0;;;;;;:11;:22;;;;;;;;42718:46;42714:464;;;42781:46;42801:6;42809:9;42820:6;42781:19;:46::i;42714:464::-;-1:-1:-1;;;;;42850:19:0;;;;;;:11;:19;;;;;;;;42849:20;:47;;;;-1:-1:-1;;;;;;42874:22:0;;;;;;:11;:22;;;;;;;;42873:23;42849:47;42845:333;;;42913:44;42931:6;42939:9;42950:6;42913:17;:44::i;42845:333::-;-1:-1:-1;;;;;42979:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;43002:22:0;;;;;;:11;:22;;;;;;;;42979:45;42975:203;;;43041:48;43063:6;43071:9;43082:6;43041:21;:48::i;42975:203::-;43122:44;43140:6;43148:9;43159:6;43122:17;:44::i;:::-;43194:7;43190:41;;43216:15;:13;:15::i;:::-;42420:819;;;;:::o;47644:555::-;47741:7;;47777;;47694;;;;;47795:289;47819:9;:16;47815:20;;47795:289;;;47885:7;47861;:21;47869:9;47879:1;47869:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;47869:12:0;47861:21;;;;;;;;;;;;;:31;;:66;;;47920:7;47896;:21;47904:9;47914:1;47904:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;47904:12:0;47896:21;;;;;;;;;;;;;:31;47861:66;47857:97;;;47937:7;;47946;;47929:25;;;;;;;;;47857:97;47979:34;47991:7;:21;47999:9;48009:1;47999:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;47999:12:0;47991:21;;;;;;;;;;;;;47979:7;;:11;:34::i;:::-;47969:44;;48038:34;48050:7;:21;48058:9;48068:1;48058:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;48058:12:0;48050:21;;;;;;;;;;;;;48038:7;;:11;:34::i;:::-;48028:44;-1:-1:-1;47837:3:0;;47795:289;;;-1:-1:-1;48120:7:0;;48108;;:20;;:11;:20::i;:::-;48098:7;:30;48094:61;;;48138:7;;48147;;48130:25;;;;;;;;48094:61;48174:7;;-1:-1:-1;48183:7:0;-1:-1:-1;47644:555:0;;;:::o;7021:278::-;7107:7;7142:12;7135:5;7127:28;;;;-1:-1:-1;;;7127:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7166:9;7182:1;7178;:5;;;;;;;7021:278;-1:-1:-1;;;;;7021:278:0:o;46674:360::-;46767:7;;;;46820:28;46844:3;46820:19;:7;46832:6;46820:11;:19::i;:::-;:23;;:28::i;:::-;46805:43;-1:-1:-1;46859:16:0;46878:29;46903:3;46878:20;:7;46890;46878:11;:20::i;:29::-;46859:48;-1:-1:-1;46918:23:0;46944:31;46859:48;46944:17;:7;46956:4;46944:11;:17::i;:::-;:21;;:31::i;:::-;46918:57;47011:4;;-1:-1:-1;47017:8:0;;-1:-1:-1;46674:360:0;;-1:-1:-1;;;;;46674:360:0:o;47042:423::-;47155:12;;:::i;:::-;47180:15;47198:24;:7;47210:11;47198;:24::i;:::-;47180:42;-1:-1:-1;47233:12:0;47248:21;:4;47257:11;47248:8;:21::i;:::-;47233:36;-1:-1:-1;47280:16:0;47299:25;:8;47312:11;47299:12;:25::i;:::-;47280:44;-1:-1:-1;47335:23:0;47361:31;47280:44;47361:17;:7;47373:4;47361:11;:17::i;:31::-;47410:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;47410:47:0;47042:423;-1:-1:-1;;;;;47042:423:0:o;36831:214::-;36877:7;;:12;:29;;;;-1:-1:-1;36893:8:0;;:13;36877:29;36874:41;;;36908:7;;36874:41;36945:7;;;36927:15;:25;36982:8;;;36963:16;:27;-1:-1:-1;37003:11:0;;;;37025:12;36831:214::o;44338:562::-;44441:15;44458:23;44483:12;44497:23;44522:12;44536;44550;44566:19;44577:7;44566:10;:19::i;:::-;44440:145;;;;;;;;;;;;;;44614:28;44634:7;44614;:15;44622:6;-1:-1:-1;;;;;44614:15:0;-1:-1:-1;;;;;44614:15:0;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;-1:-1:-1;;;;;44596:15:0;;;;;;:7;:15;;;;;;;;:46;;;;44671:7;:15;;;;:28;;44691:7;44671:19;:28::i;:::-;-1:-1:-1;;;;;44653:15:0;;;;;;;:7;:15;;;;;;:46;;;;44731:18;;;;;;;:39;;44754:15;44731:22;:39::i;:::-;-1:-1:-1;;;;;44710:18:0;;;;;;:7;:18;;;;;:60;44781:17;44787:4;44793;44781:5;:17::i;:::-;44809:23;44821:4;44827;44809:11;:23::i;:::-;44865:9;-1:-1:-1;;;;;44848:44:0;44857:6;-1:-1:-1;;;;;44848:44:0;;44876:15;44848:44;;;;;;;;;;;;;;;;;;44338:562;;;;;;;;;;:::o;43756:574::-;43857:15;43874:23;43899:12;43913:23;43938:12;43952;43966;43982:19;43993:7;43982:10;:19::i;:::-;43856:145;;;;;;;;;;;;;;44030:28;44050:7;44030;:15;44038:6;-1:-1:-1;;;;;44030:15:0;-1:-1:-1;;;;;44030:15:0;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;-1:-1:-1;;;;;44012:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;44090:18;;;;;:7;:18;;;;;:39;;44113:15;44090:22;:39::i;:::-;-1:-1:-1;;;;;44069:18:0;;;;;;:7;:18;;;;;;;;:60;;;;44161:7;:18;;;;:39;;44184:15;44161:22;:39::i;43247:501::-;43346:15;43363:23;43388:12;43402:23;43427:12;43441;43455;43471:19;43482:7;43471:10;:19::i;:::-;43345:145;;;;;;;;;;;;;;43519:28;43539:7;43519;:15;43527:6;-1:-1:-1;;;;;43519:15:0;-1:-1:-1;;;;;43519:15:0;;;;;;;;;;;;;:19;;:28;;;;:::i;44908:633::-;45011:15;45028:23;45053:12;45067:23;45092:12;45106;45120;45136:19;45147:7;45136:10;:19::i;:::-;45010:145;;;;;;;;;;;;;;45184:28;45204:7;45184;:15;45192:6;-1:-1:-1;;;;;45184:15:0;-1:-1:-1;;;;;45184:15:0;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;-1:-1:-1;;;;;45166:15:0;;;;;;:7;:15;;;;;;;;:46;;;;45241:7;:15;;;;:28;;45261:7;45241:19;:28::i;37053:115::-;37107:15;;37097:7;:25;37144:16;;37133:8;:27;37053:115::o;5468:471::-;5526:7;5771:6;5767:47;;-1:-1:-1;5801:1:0;5794:8;;5767:47;5838:5;;;5842:1;5838;:5;:1;5862:5;;;;;:10;5854:56;;;;-1:-1:-1;;;5854:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45549:252;45652:4;45636:22;;;;:7;:22;;;;;;:32;;45663:4;45636:26;:32::i;:::-;45627:4;45611:22;;;;:7;:22;;;;;;;;:57;;;;45682:11;:26;;;;;;45679:115;;;45766:4;45750:22;;;;:7;:22;;;;;;:32;;45777:4;45750:26;:32::i;:::-;45741:4;45725:22;;;;:7;:22;;;;;:57;45549:252;;:::o;45809:147::-;45887:7;;:17;;45899:4;45887:11;:17::i;:::-;45877:7;:27;45928:10;;:20;;45943:4;45928:14;:20::i;:::-;45915:10;:33;-1:-1:-1;;45809:147:0:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

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