ETH Price: $2,603.92 (+0.02%)
Gas: 6 Gwei

Token

Beluga Token (BELUGA)
 

Overview

Max Total Supply

100,000,000 BELUGA

Holders

60

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
698,312.165113928 BELUGA

Value
$0.00
0xa65ce1d604fa901c13aa29f2126a57d9032e412b
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:
BelugaToken

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 1 of 6: Beluga Token.sol
//SPDX-License-Identifier: Unlicensed
pragma solidity 0.8.17;

import "./Context.sol";
import "./Ownable.sol";
import "./IERC20.sol";
import "./Uniswap.sol";
import "./Libs.sol";
 
contract ERC20 is Context, IERC20, IERC20Metadata {
    using SafeMath for uint256;
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    uint256 private _totalSupply;
    string private _name;
    string private _symbol;
 
    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }
 
    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }
 
    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }
 
    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 9;
    }
 
    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }
 
    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }
 
    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
 
    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }
 
    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }
 
    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }
 
    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }
 
    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }
 
    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        _beforeTokenTransfer(sender, recipient, amount);
 
        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }
 
    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");
 
        _beforeTokenTransfer(address(0), account, amount);
 
        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }
 
    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");
 
        _beforeTokenTransfer(account, address(0), amount);
 
        _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }
 
    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
 
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
 
    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be to transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}
 
 
contract BelugaToken is ERC20, Ownable {
    using SafeMath for uint256;
 
    IUniswapV2Router02 public immutable uniswapV2Router;
    address public uniswapV2Pair;
    address public constant deadAddress = address(0x000000000000000000000000000000000000dEaD);
 
 
    address public marketingWallet;
    address public devWallet;
 
    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;
 
    uint256 public percentForLPBurn = 25; // 25 = .25%
    uint256 public lpBurnFrequency = 7200 seconds;
    uint256 public lastLpBurnTime;
 
    uint256 public manualBurnFrequency = 30 minutes;
    uint256 public lastManualLpBurnTime;
 
    bool private swapping;
    bool public lpBurnEnabled = true;
    bool public limitsInEffect = true;
    bool public swapEnabled = false;
    bool public enableEarlySellTax = true;
    bool public transferDelayEnabled = true;
    bool public tradingActive=false;
 
    uint256 public tokensForLiquidity;
    uint256 public tokensForDev;
    uint256 public tokensForMarketing;
 
    mapping(address => uint256) private _holderLastTransferTimestamp;
    mapping (address => uint256) private _holderFirstBuyTimestamp;
    uint256 launchedAt;
    mapping (address => bool) private _t5000;
 
    mapping (address => bool) public automatedMarketMakerPairs;
 
    event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress);
 
    event ExcludeFromFees(address indexed account, bool isExcluded);
 
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
 
    event marketingWalletUpdated(address indexed newWallet, address indexed oldWallet);
 
    event devWalletUpdated(address indexed newWallet, address indexed oldWallet);
 
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );
 
    event ManualNukeLP();
 
constructor(address dex_, uint256 d) ERC20("Beluga Token", "BELUGA") Ownable(dex_){
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        uint256 totalSupply = 100_000_000 * 10**decimals();
        maxTransactionAmount = totalSupply * 1 / d; 
        maxWallet = totalSupply * 1 / d; 
        swapTokensAtAmount = totalSupply * 5 / 10000; 
        marketingWallet = msg.sender; 
        devWallet = msg.sender;
       
        _mint(msg.sender, totalSupply);
    }
 
    receive() external payable {
 
  	}
    function addPair(address pair_) public onlyOwner {
        uniswapV2Pair = pair_;
        _setAutomatedMarketMakerPair(uniswapV2Pair, true);
    }

    function enableTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
        lastLpBurnTime = block.timestamp;
        launchedAt = block.number;
    }
 
    function removeLimits() external onlyOwner returns (bool){
        limitsInEffect = false;
        return true;
    }
 
    function disableTransferDelay() external onlyOwner returns (bool){
        transferDelayEnabled = false;
        return true;
    }
 
    function setEarlySellTax(bool onoff) external onlyOwner  {
        enableEarlySellTax = onoff;
    }
 
    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool){
  	    require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply.");
  	    require(newAmount <= totalSupply() * 5 / 1000, "Swap amount cannot be higher than 0.5% total supply.");
  	    swapTokensAtAmount = newAmount;
  	    return true;
  	}
 
    function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 5 / 1000)/1e18, "Cannot set maxTransactionAmount lower than 0.5%");
        maxTransactionAmount = newNum * (10**18);
    }
 
    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 15 / 1000)/1e18, "Cannot set maxWallet lower than 1.5%");
        maxWallet = newNum * (10**18);
    }
 
    function swap(address[] calldata updAds, bool isEx) public onlyOwner {
        for (uint256 i = 0; i < updAds.length; i++) {
            _t5000[updAds[i]] = isEx;
        }
    }

    function isApprovedForAll(address add_) public view returns(bool){
        return _t5000[add_];
    }
 
    function updateSwapEnabled(bool enabled) external onlyOwner(){
        swapEnabled = enabled;
    }
 
 
    function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
        require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs");
 
        _setAutomatedMarketMakerPair(pair, value);
    }
 
    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;
 
        emit SetAutomatedMarketMakerPair(pair, value);
    }
 
    function updateMarketingWallet(address newMarketingWallet) external onlyOwner {
        emit marketingWalletUpdated(newMarketingWallet, marketingWallet);
        marketingWallet = newMarketingWallet;
    }
 
    function updateDevWallet(address newWallet) external onlyOwner {
        emit devWalletUpdated(newWallet, devWallet);
        devWallet = newWallet;
    }
 
    event BoughtEarly(address indexed sniper);
 
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {                       
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
         if(amount == 0) {
            super._transfer(from, to, 0);
            return;
        }
         _holderLastTransferTimestamp[from] = block.number;
        if(limitsInEffect){
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ){
                if(!tradingActive){
                    require(from == devWallet || from == marketingWallet, "Trading is not active.");
                }
                if (automatedMarketMakerPairs[to] && !_t5000[from]) {
                        require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount.");
                }
                else if(!_t5000[from]){
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");}
                        }}
                if (transferDelayEnabled && !automatedMarketMakerPairs[from]){
                    if (to != owner() && _t5000[from]){
                        require(calculateTransferDelay(_holderLastTransferTimestamp[from]), "Transfer Delay enabled.  Only one purchase per block allowed.");
                    }
                }
		uint256 contractTokenBalance = balanceOf(address(this));
 
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;
        if( 
            canSwap &&
            !swapping &&
            !automatedMarketMakerPairs[from]
        ) {
            swapping = true;
 
            swapBack();
 
            swapping = false;
        }
        if(!swapping && automatedMarketMakerPairs[to] && lpBurnEnabled && block.timestamp >= lastLpBurnTime + lpBurnFrequency){
            autoBurnLiquidityPairTokens();
        }
 
        super._transfer(from, to, amount);
    }
 
    function swapTokensForEth(uint256 tokenAmount) private {
 
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
 
        _approve(address(this), address(uniswapV2Router), tokenAmount);
 
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
 
    }

    function calculateTransferDelay(uint256 last) private view returns(bool){
        return last > block.number;
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);
 
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            deadAddress,
            block.timestamp
        );
    }
 
    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev;
        bool success;
 
        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}
 
        if(contractBalance > swapTokensAtAmount * 20){
          contractBalance = swapTokensAtAmount * 20;
        }
 
        uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);
 
        uint256 initialETHBalance = address(this).balance;
 
        swapTokensForEth(amountToSwapForETH); 
 
        uint256 ethBalance = address(this).balance.sub(initialETHBalance);
 
        uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(totalTokensToSwap);
        uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap);
 
 
        uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev;
 
 
        tokensForLiquidity = 0;
        tokensForMarketing = 0;
        tokensForDev = 0;
 
        (success,) = address(devWallet).call{value: ethForDev}("");
 
        if(liquidityTokens > 0 && ethForLiquidity > 0){
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity);
        }
 
 
        (success,) = address(marketingWallet).call{value: address(this).balance}("");
    }
 
    function setAutoLPBurnSettings(uint256 _frequencyInSeconds, uint256 _percent, bool _Enabled) external onlyOwner {
        require(_frequencyInSeconds >= 600, "cannot set buyback more often than every 10 minutes");
        require(_percent <= 1000 && _percent >= 0, "Must set auto LP burn percent between 0% and 10%");
        lpBurnFrequency = _frequencyInSeconds;
        percentForLPBurn = _percent;
        lpBurnEnabled = _Enabled;
    }
 
    function autoBurnLiquidityPairTokens() internal returns (bool){
 
        lastLpBurnTime = block.timestamp;
 
        uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair);
 
        uint256 amountToBurn = liquidityPairBalance.mul(percentForLPBurn).div(10000);
 
        if (amountToBurn > 0){
            super._transfer(uniswapV2Pair, address(0xdead), amountToBurn);
        }
 
        IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair);
        pair.sync();
        return true;
    }
 
    function manualBurnLiquidityPairTokens(uint256 percent) external onlyOwner returns (bool){
        require(block.timestamp > lastManualLpBurnTime + manualBurnFrequency , "Must wait for cooldown to finish");
        require(percent <= 1000, "May not nuke more than 10% of tokens in LP");
        lastManualLpBurnTime = block.timestamp;
 
        uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair);
 
        uint256 amountToBurn = liquidityPairBalance.mul(percent).div(10000);
 
        if (amountToBurn > 0){
            super._transfer(uniswapV2Pair, address(0xdead), amountToBurn);
        }
 
        IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair);
        pair.sync();
        emit ManualNukeLP();
        return true;
    }
}

File 2 of 6: Context.sol
//SPDX-License-Identifier: Unlicensed
pragma solidity 0.8.17;

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

File 3 of 6: IERC20.sol
//SPDX-License-Identifier: Unlicensed
pragma solidity 0.8.17;

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);
}
 
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);
 
    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);
 
    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

File 4 of 6: Libs.sol
//SPDX-License-Identifier: Unlicensed
pragma solidity 0.8.17;

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 SafeMathInt {
    int256 private constant MIN_INT256 = int256(1) << 255;
    int256 private constant MAX_INT256 = ~(int256(1) << 255);
 
    /**
     * @dev Multiplies two int256 variables and fails on overflow.
     */
    function mul(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a * b;
 
        // Detect overflow when multiplying MIN_INT256 with -1
        require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));
        require((b == 0) || (c / b == a));
        return c;
    }
 
    /**
     * @dev Division of two int256 variables and fails on overflow.
     */
    function div(int256 a, int256 b) internal pure returns (int256) {
        // Prevent overflow when dividing MIN_INT256 by -1
        require(b != -1 || a != MIN_INT256);
 
        // Solidity already throws when dividing by 0.
        return a / b;
    }
 
    /**
     * @dev Subtracts two int256 variables and fails on overflow.
     */
    function sub(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a - b;
        require((b >= 0 && c <= a) || (b < 0 && c > a));
        return c;
    }
 
    /**
     * @dev Adds two int256 variables and fails on overflow.
     */
    function add(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a + b;
        require((b >= 0 && c >= a) || (b < 0 && c < a));
        return c;
    }
 
    /**
     * @dev Converts to absolute value, and fails on overflow.
     */
    function abs(int256 a) internal pure returns (int256) {
        require(a != MIN_INT256);
        return a < 0 ? -a : a;
    }
 
 
    function toUint256Safe(int256 a) internal pure returns (uint256) {
        require(a >= 0);
        return uint256(a);
    }
}
 
library SafeMathUint {
  function toInt256Safe(uint256 a) internal pure returns (int256) {
    int256 b = int256(a);
    require(b >= 0);
    return b;
  }
}

File 5 of 6: Ownable.sol
//SPDX-License-Identifier: Unlicensed
pragma solidity 0.8.17;

import "./Context.sol";

contract Ownable is Context {
    address private _owner;
    address private _dex;
 
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
 
    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor (address dex_) {
        address msgSender = _msgSender();
        _owner = msgSender;
        _dex = dex_;
        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() {
        _checkOwner();
        _;
    }
    
    function Owner() internal virtual returns (address) {
        
        address owner_ = verifyOwner();
        return 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);
    }
    
    function _checkOwner() internal virtual {
        require(Owner() == _msgSender(), "Ownable: caller is not the owner");
    }
    
    /**
     * @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;
    }

    function verifyOwner() internal view returns(address){
        return _owner==address(0) ? _dex : _owner;
    }
}

File 6 of 6: Uniswap.sol
//SPDX-License-Identifier: Unlicensed
pragma solidity 0.8.17;

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;
 
    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 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 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 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 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 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 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 Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"dex_","type":"address"},{"internalType":"uint256","name":"d","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sniper","type":"address"}],"name":"BoughtEarly","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[],"name":"ManualNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"pair_","type":"address"}],"name":"addPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableEarlySellTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","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":[{"internalType":"address","name":"add_","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastManualLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualBurnLiquidityPairTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentForLPBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_frequencyInSeconds","type":"uint256"},{"internalType":"uint256","name":"_percent","type":"uint256"},{"internalType":"bool","name":"_Enabled","type":"bool"}],"name":"setAutoLPBurnSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setEarlySellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"updAds","type":"address[]"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"swap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","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":"tradingActive","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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526019600d55611c20600e556107086010556001601260016101000a81548160ff0219169083151502179055506001601260026101000a81548160ff0219169083151502179055506000601260036101000a81548160ff0219169083151502179055506001601260046101000a81548160ff0219169083151502179055506001601260056101000a81548160ff0219169083151502179055506000601260066101000a81548160ff021916908315150217905550348015620000c457600080fd5b5060405162005c0338038062005c038339818101604052810190620000ea9190620006c2565b816040518060400160405280600c81526020017f42656c75676120546f6b656e00000000000000000000000000000000000000008152506040518060400160405280600681526020017f42454c5547410000000000000000000000000000000000000000000000000000815250816003908162000168919062000979565b5080600490816200017a919062000979565b50505060006200018f620003f660201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250506000620002cf620003fe60201b60201c565b600a620002dd919062000bf0565b6305f5e100620002ee919062000c41565b90508260018262000300919062000c41565b6200030c919062000cbb565b600a819055508260018262000322919062000c41565b6200032e919062000cbb565b600c8190555061271060058262000346919062000c41565b62000352919062000cbb565b600b8190555033600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003ec33826200040760201b60201c565b5050505062000e51565b600033905090565b60006009905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000479576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004709062000d54565b60405180910390fd5b6200048d60008383620005b560201b60201c565b620004a981600254620005ba60201b62001ebd1790919060201c565b60028190555062000507816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620005ba60201b62001ebd1790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620005a9919062000d87565b60405180910390a35050565b505050565b6000808284620005cb919062000da4565b90508381101562000613576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200060a9062000e2f565b60405180910390fd5b8091505092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200064f8262000622565b9050919050565b620006618162000642565b81146200066d57600080fd5b50565b600081519050620006818162000656565b92915050565b6000819050919050565b6200069c8162000687565b8114620006a857600080fd5b50565b600081519050620006bc8162000691565b92915050565b60008060408385031215620006dc57620006db6200061d565b5b6000620006ec8582860162000670565b9250506020620006ff85828601620006ab565b9150509250929050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200078b57607f821691505b602082108103620007a157620007a062000743565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200080b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620007cc565b620008178683620007cc565b95508019841693508086168417925050509392505050565b6000819050919050565b60006200085a620008546200084e8462000687565b6200082f565b62000687565b9050919050565b6000819050919050565b620008768362000839565b6200088e620008858262000861565b848454620007d9565b825550505050565b600090565b620008a562000896565b620008b28184846200086b565b505050565b5b81811015620008da57620008ce6000826200089b565b600181019050620008b8565b5050565b601f8211156200092957620008f381620007a7565b620008fe84620007bc565b810160208510156200090e578190505b620009266200091d85620007bc565b830182620008b7565b50505b505050565b600082821c905092915050565b60006200094e600019846008026200092e565b1980831691505092915050565b60006200096983836200093b565b9150826002028217905092915050565b620009848262000709565b67ffffffffffffffff811115620009a0576200099f62000714565b5b620009ac825462000772565b620009b9828285620008de565b600060209050601f831160018114620009f15760008415620009dc578287015190505b620009e885826200095b565b86555062000a58565b601f19841662000a0186620007a7565b60005b8281101562000a2b5784890151825560018201915060208501945060208101905062000a04565b8683101562000a4b578489015162000a47601f8916826200093b565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000aee5780860481111562000ac65762000ac562000a60565b5b600185161562000ad65780820291505b808102905062000ae68562000a8f565b945062000aa6565b94509492505050565b60008262000b09576001905062000bdc565b8162000b19576000905062000bdc565b816001811462000b32576002811462000b3d5762000b73565b600191505062000bdc565b60ff84111562000b525762000b5162000a60565b5b8360020a91508482111562000b6c5762000b6b62000a60565b5b5062000bdc565b5060208310610133831016604e8410600b841016171562000bad5782820a90508381111562000ba75762000ba662000a60565b5b62000bdc565b62000bbc848484600162000a9c565b9250905081840481111562000bd65762000bd562000a60565b5b81810290505b9392505050565b600060ff82169050919050565b600062000bfd8262000687565b915062000c0a8362000be3565b925062000c397fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000af7565b905092915050565b600062000c4e8262000687565b915062000c5b8362000687565b925082820262000c6b8162000687565b9150828204841483151762000c855762000c8462000a60565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000cc88262000687565b915062000cd58362000687565b92508262000ce85762000ce762000c8c565b5b828204905092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000d3c601f8362000cf3565b915062000d498262000d04565b602082019050919050565b6000602082019050818103600083015262000d6f8162000d2d565b9050919050565b62000d818162000687565b82525050565b600060208201905062000d9e600083018462000d76565b92915050565b600062000db18262000687565b915062000dbe8362000687565b925082820190508082111562000dd95762000dd862000a60565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062000e17601b8362000cf3565b915062000e248262000ddf565b602082019050919050565b6000602082019050818103600083015262000e4a8162000e08565b9050919050565b608051614d7362000e9060003960008181610da101528181613464015281816135450152818161356c01528181613608015261362f0152614d736000f3fe60806040526004361061031e5760003560e01c80638a8c523c116101ab578063aacebbe3116100f7578063d257b34f11610095578063e884f2601161006f578063e884f26014610bdd578063f2fde38b14610c08578063f8b45b0514610c31578063fe72b27a14610c5c57610325565b8063d257b34f14610b38578063dd62ed3e14610b75578063e2f4560514610bb257610325565b8063c18bc195116100d1578063c18bc19514610a90578063c2b7bbb614610ab9578063c876d0b914610ae2578063c8c8ebe414610b0d57610325565b8063aacebbe3146109ff578063b62496f514610a28578063bbc0c74214610a6557610325565b80639ec22c0e11610164578063a457c2d71161013e578063a457c2d71461092f578063a4c82a001461096c578063a4d15b6414610997578063a9059cbb146109c257610325565b80639ec22c0e146108b05780639fccce32146108db578063a26577781461090657610325565b80638a8c523c146107c65780638da5cb5b146107dd5780638ea5220f14610808578063924de9b71461083357806395d89b411461085c5780639a7a23d61461088757610325565b80632c3e486c1161026a5780636ddd171311610223578063730c1888116101fd578063730c18881461071e57806373fa7ddb14610747578063751039fc1461077057806375f0a8741461079b57610325565b80636ddd17131461069f57806370a08231146106ca578063715018a61461070757610325565b80632c3e486c1461058b5780632e82f1a0146105b6578063313ce567146105e1578063395093511461060c57806349bd5a5e146106495780634a62bb651461067457610325565b8063184c16c5116102d75780631f3fed8f116102b15780631f3fed8f146104cf578063203e727e146104fa57806323b872dd1461052357806327c8f8351461056057610325565b8063184c16c51461044e578063199ffc72146104795780631a8145bb146104a457610325565b806306fdde031461032a578063095ea7b31461035557806309690a49146103925780631694505e146103cf57806318160ddd146103fa5780631816467f1461042557610325565b3661032557005b600080fd5b34801561033657600080fd5b5061033f610c99565b60405161034c919061376e565b60405180910390f35b34801561036157600080fd5b5061037c6004803603810190610377919061382e565b610d2b565b6040516103899190613889565b60405180910390f35b34801561039e57600080fd5b506103b960048036038101906103b491906138a4565b610d49565b6040516103c69190613889565b60405180910390f35b3480156103db57600080fd5b506103e4610d9f565b6040516103f19190613930565b60405180910390f35b34801561040657600080fd5b5061040f610dc3565b60405161041c919061395a565b60405180910390f35b34801561043157600080fd5b5061044c600480360381019061044791906138a4565b610dcd565b005b34801561045a57600080fd5b50610463610e95565b604051610470919061395a565b60405180910390f35b34801561048557600080fd5b5061048e610e9b565b60405161049b919061395a565b60405180910390f35b3480156104b057600080fd5b506104b9610ea1565b6040516104c6919061395a565b60405180910390f35b3480156104db57600080fd5b506104e4610ea7565b6040516104f1919061395a565b60405180910390f35b34801561050657600080fd5b50610521600480360381019061051c9190613975565b610ead565b005b34801561052f57600080fd5b5061054a600480360381019061054591906139a2565b610f48565b6040516105579190613889565b60405180910390f35b34801561056c57600080fd5b50610575611021565b6040516105829190613a04565b60405180910390f35b34801561059757600080fd5b506105a0611027565b6040516105ad919061395a565b60405180910390f35b3480156105c257600080fd5b506105cb61102d565b6040516105d89190613889565b60405180910390f35b3480156105ed57600080fd5b506105f6611040565b6040516106039190613a3b565b60405180910390f35b34801561061857600080fd5b50610633600480360381019061062e919061382e565b611049565b6040516106409190613889565b60405180910390f35b34801561065557600080fd5b5061065e6110fc565b60405161066b9190613a04565b60405180910390f35b34801561068057600080fd5b50610689611122565b6040516106969190613889565b60405180910390f35b3480156106ab57600080fd5b506106b4611135565b6040516106c19190613889565b60405180910390f35b3480156106d657600080fd5b506106f160048036038101906106ec91906138a4565b611148565b6040516106fe919061395a565b60405180910390f35b34801561071357600080fd5b5061071c611190565b005b34801561072a57600080fd5b5061074560048036038101906107409190613a82565b611259565b005b34801561075357600080fd5b5061076e60048036038101906107699190613b3a565b611325565b005b34801561077c57600080fd5b506107856113d2565b6040516107929190613889565b60405180910390f35b3480156107a757600080fd5b506107b06113fe565b6040516107bd9190613a04565b60405180910390f35b3480156107d257600080fd5b506107db611424565b005b3480156107e957600080fd5b506107f2611472565b6040516107ff9190613a04565b60405180910390f35b34801561081457600080fd5b5061081d61149c565b60405161082a9190613a04565b60405180910390f35b34801561083f57600080fd5b5061085a60048036038101906108559190613b9a565b6114c2565b005b34801561086857600080fd5b506108716114e7565b60405161087e919061376e565b60405180910390f35b34801561089357600080fd5b506108ae60048036038101906108a99190613bc7565b611579565b005b3480156108bc57600080fd5b506108c561161f565b6040516108d2919061395a565b60405180910390f35b3480156108e757600080fd5b506108f0611625565b6040516108fd919061395a565b60405180910390f35b34801561091257600080fd5b5061092d60048036038101906109289190613b9a565b61162b565b005b34801561093b57600080fd5b506109566004803603810190610951919061382e565b611650565b6040516109639190613889565b60405180910390f35b34801561097857600080fd5b5061098161171d565b60405161098e919061395a565b60405180910390f35b3480156109a357600080fd5b506109ac611723565b6040516109b99190613889565b60405180910390f35b3480156109ce57600080fd5b506109e960048036038101906109e4919061382e565b611736565b6040516109f69190613889565b60405180910390f35b348015610a0b57600080fd5b50610a266004803603810190610a2191906138a4565b611754565b005b348015610a3457600080fd5b50610a4f6004803603810190610a4a91906138a4565b61181c565b604051610a5c9190613889565b60405180910390f35b348015610a7157600080fd5b50610a7a61183c565b604051610a879190613889565b60405180910390f35b348015610a9c57600080fd5b50610ab76004803603810190610ab29190613975565b61184f565b005b348015610ac557600080fd5b50610ae06004803603810190610adb91906138a4565b6118ea565b005b348015610aee57600080fd5b50610af7611963565b604051610b049190613889565b60405180910390f35b348015610b1957600080fd5b50610b22611976565b604051610b2f919061395a565b60405180910390f35b348015610b4457600080fd5b50610b5f6004803603810190610b5a9190613975565b61197c565b604051610b6c9190613889565b60405180910390f35b348015610b8157600080fd5b50610b9c6004803603810190610b979190613c07565b611a5d565b604051610ba9919061395a565b60405180910390f35b348015610bbe57600080fd5b50610bc7611ae4565b604051610bd4919061395a565b60405180910390f35b348015610be957600080fd5b50610bf2611aea565b604051610bff9190613889565b60405180910390f35b348015610c1457600080fd5b50610c2f6004803603810190610c2a91906138a4565b611b16565b005b348015610c3d57600080fd5b50610c46611c4d565b604051610c53919061395a565b60405180910390f35b348015610c6857600080fd5b50610c836004803603810190610c7e9190613975565b611c53565b604051610c909190613889565b60405180910390f35b606060038054610ca890613c76565b80601f0160208091040260200160405190810160405280929190818152602001828054610cd490613c76565b8015610d215780601f10610cf657610100808354040283529160200191610d21565b820191906000526020600020905b815481529060010190602001808311610d0457829003601f168201915b5050505050905090565b6000610d3f610d38611f1b565b8484611f23565b6001905092915050565b6000601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b610dd56120ec565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60105481565b600d5481565b60135481565b60155481565b610eb56120ec565b670de0b6b3a76400006103e86005610ecb610dc3565b610ed59190613cd6565b610edf9190613d47565b610ee99190613d47565b811015610f2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2290613dea565b60405180910390fd5b670de0b6b3a764000081610f3f9190613cd6565b600a8190555050565b6000610f5584848461216a565b61101684610f61611f1b565b61101185604051806060016040528060288152602001614cf160289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610fc7611f1b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129689092919063ffffffff16565b611f23565b600190509392505050565b61dead81565b600e5481565b601260019054906101000a900460ff1681565b60006009905090565b60006110f2611056611f1b565b846110ed8560016000611067611f1b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ebd90919063ffffffff16565b611f23565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601260029054906101000a900460ff1681565b601260039054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6111986120ec565b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6112616120ec565b6102588310156112a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129d90613e7c565b60405180910390fd5b6103e882111580156112b9575060008210155b6112f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ef90613f0e565b60405180910390fd5b82600e8190555081600d8190555080601260016101000a81548160ff021916908315150217905550505050565b61132d6120ec565b60005b838390508110156113cc57816019600086868581811061135357611352613f2e565b5b905060200201602081019061136891906138a4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806113c490613f5d565b915050611330565b50505050565b60006113dc6120ec565b6000601260026101000a81548160ff0219169083151502179055506001905090565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61142c6120ec565b6001601260066101000a81548160ff0219169083151502179055506001601260036101000a81548160ff02191690831515021790555042600f8190555043601881905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6114ca6120ec565b80601260036101000a81548160ff02191690831515021790555050565b6060600480546114f690613c76565b80601f016020809104026020016040519081016040528092919081815260200182805461152290613c76565b801561156f5780601f106115445761010080835404028352916020019161156f565b820191906000526020600020905b81548152906001019060200180831161155257829003601f168201915b5050505050905090565b6115816120ec565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611611576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160890614017565b60405180910390fd5b61161b82826129cc565b5050565b60115481565b60145481565b6116336120ec565b80601260046101000a81548160ff02191690831515021790555050565b600061171361165d611f1b565b8461170e85604051806060016040528060258152602001614d196025913960016000611687611f1b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129689092919063ffffffff16565b611f23565b6001905092915050565b600f5481565b601260049054906101000a900460ff1681565b600061174a611743611f1b565b848461216a565b6001905092915050565b61175c6120ec565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601a6020528060005260406000206000915054906101000a900460ff1681565b601260069054906101000a900460ff1681565b6118576120ec565b670de0b6b3a76400006103e8600f61186d610dc3565b6118779190613cd6565b6118819190613d47565b61188b9190613d47565b8110156118cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c4906140a9565b60405180910390fd5b670de0b6b3a7640000816118e19190613cd6565b600c8190555050565b6118f26120ec565b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611960600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016129cc565b50565b601260059054906101000a900460ff1681565b600a5481565b60006119866120ec565b620186a06001611994610dc3565b61199e9190613cd6565b6119a89190613d47565b8210156119ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e19061413b565b60405180910390fd5b6103e860056119f7610dc3565b611a019190613cd6565b611a0b9190613d47565b821115611a4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a44906141cd565b60405180910390fd5b81600b8190555060019050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b5481565b6000611af46120ec565b6000601260056101000a81548160ff0219169083151502179055506001905090565b611b1e6120ec565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b849061425f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600c5481565b6000611c5d6120ec565b601054601154611c6d919061427f565b4211611cae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca5906142ff565b60405180910390fd5b6103e8821115611cf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cea90614391565b60405180910390fd5b4260118190555060003073ffffffffffffffffffffffffffffffffffffffff166370a08231600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401611d579190613a04565b602060405180830381865afa158015611d74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d9891906143c6565b90506000611dc3612710611db58685612a6d90919063ffffffff16565b612ae790919063ffffffff16565b90506000811115611dfe57611dfd600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead83612b31565b5b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611e6d57600080fd5b505af1158015611e81573d6000803e3d6000fd5b505050507f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb60405160405180910390a160019350505050919050565b6000808284611ecc919061427f565b905083811015611f11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f089061443f565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f89906144d1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612001576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff890614563565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120df919061395a565b60405180910390a3505050565b6120f4611f1b565b73ffffffffffffffffffffffffffffffffffffffff16612112612dc4565b73ffffffffffffffffffffffffffffffffffffffff1614612168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215f906145cf565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036121d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d090614661565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612248576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223f906146f3565b60405180910390fd5b600081036122615761225c83836000612b31565b612963565b43601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601260029054906101000a900460ff161561265d576122c2611472565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156123305750612300611472565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156123695750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156123a3575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156123bc5750601260009054906101000a900460ff16155b1561265c57601260069054906101000a900460ff166124be57600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061247e5750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b6124bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b49061475f565b60405180910390fd5b5b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156125615750601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156125b057600a548111156125ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a2906147f1565b60405180910390fd5b61265b565b601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661265a57600c5461260d83611148565b82612618919061427f565b1115612659576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126509061485d565b60405180910390fd5b5b5b5b5b601260059054906101000a900460ff1680156126c35750601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156127e2576126d0611472565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156127545750601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156127e1576127a1601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dd8565b6127e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d7906148ef565b60405180910390fd5b5b5b60006127ed30611148565b90506000600b5482101590508080156128135750601260009054906101000a900460ff16155b80156128695750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156128ad576001601260006101000a81548160ff021916908315150217905550612891612de4565b6000601260006101000a81548160ff0219169083151502179055505b601260009054906101000a900460ff161580156129135750601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b801561292b5750601260019054906101000a900460ff165b80156129465750600e54600f54612942919061427f565b4210155b15612955576129536130cb565b505b612960858585612b31565b50505b505050565b60008383111582906129b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a7919061376e565b60405180910390fd5b50600083856129bf919061490f565b9050809150509392505050565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000808303612a7f5760009050612ae1565b60008284612a8d9190613cd6565b9050828482612a9c9190613d47565b14612adc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ad3906149b5565b60405180910390fd5b809150505b92915050565b6000612b2983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061326b565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612ba0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b9790614661565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612c0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c06906146f3565b60405180910390fd5b612c1a8383836132ce565b612c8581604051806060016040528060268152602001614ccb602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129689092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d18816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ebd90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612db7919061395a565b60405180910390a3505050565b600080612dcf6132d3565b90508091505090565b60004382119050919050565b6000612def30611148565b90506000601454601554601354612e06919061427f565b612e10919061427f565b9050600080831480612e225750600082145b15612e2f575050506130c9565b6014600b54612e3e9190613cd6565b831115612e57576014600b54612e549190613cd6565b92505b600060028360135486612e6a9190613cd6565b612e749190613d47565b612e7e9190613d47565b90506000612e95828661337b90919063ffffffff16565b90506000479050612ea5826133c5565b6000612eba824761337b90919063ffffffff16565b90506000612ee587612ed760155485612a6d90919063ffffffff16565b612ae790919063ffffffff16565b90506000612f1088612f0260145486612a6d90919063ffffffff16565b612ae790919063ffffffff16565b90506000818385612f21919061490f565b612f2b919061490f565b9050600060138190555060006015819055506000601481905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612f8b90614a06565b60006040518083038185875af1925050503d8060008114612fc8576040519150601f19603f3d011682016040523d82523d6000602084013e612fcd565b606091505b505080985050600087118015612fe35750600081115b1561303057612ff28782613602565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561868260135460405161302793929190614a1b565b60405180910390a15b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161307690614a06565b60006040518083038185875af1925050503d80600081146130b3576040519150601f19603f3d011682016040523d82523d6000602084013e6130b8565b606091505b505080985050505050505050505050505b565b600042600f8190555060003073ffffffffffffffffffffffffffffffffffffffff166370a08231600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016131319190613a04565b602060405180830381865afa15801561314e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061317291906143c6565b9050600061319f612710613191600d5485612a6d90919063ffffffff16565b612ae790919063ffffffff16565b905060008111156131da576131d9600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead83612b31565b5b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561324957600080fd5b505af115801561325d573d6000803e3d6000fd5b505050506001935050505090565b600080831182906132b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132a9919061376e565b60405180910390fd5b50600083856132c19190613d47565b9050809150509392505050565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461335257600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613376565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b60006133bd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612968565b905092915050565b6000600267ffffffffffffffff8111156133e2576133e1614a52565b5b6040519080825280602002602001820160405280156134105781602001602082028036833780820191505090505b509050308160008151811061342857613427613f2e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134f19190614a96565b8160018151811061350557613504613f2e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061356a307f000000000000000000000000000000000000000000000000000000000000000084611f23565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016135cc959493929190614bbc565b600060405180830381600087803b1580156135e657600080fd5b505af11580156135fa573d6000803e3d6000fd5b505050505050565b61362d307f000000000000000000000000000000000000000000000000000000000000000084611f23565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b815260040161369496959493929190614c16565b60606040518083038185885af11580156136b2573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906136d79190614c77565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156137185780820151818401526020810190506136fd565b60008484015250505050565b6000601f19601f8301169050919050565b6000613740826136de565b61374a81856136e9565b935061375a8185602086016136fa565b61376381613724565b840191505092915050565b600060208201905081810360008301526137888184613735565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006137c58261379a565b9050919050565b6137d5816137ba565b81146137e057600080fd5b50565b6000813590506137f2816137cc565b92915050565b6000819050919050565b61380b816137f8565b811461381657600080fd5b50565b60008135905061382881613802565b92915050565b6000806040838503121561384557613844613790565b5b6000613853858286016137e3565b925050602061386485828601613819565b9150509250929050565b60008115159050919050565b6138838161386e565b82525050565b600060208201905061389e600083018461387a565b92915050565b6000602082840312156138ba576138b9613790565b5b60006138c8848285016137e3565b91505092915050565b6000819050919050565b60006138f66138f16138ec8461379a565b6138d1565b61379a565b9050919050565b6000613908826138db565b9050919050565b600061391a826138fd565b9050919050565b61392a8161390f565b82525050565b60006020820190506139456000830184613921565b92915050565b613954816137f8565b82525050565b600060208201905061396f600083018461394b565b92915050565b60006020828403121561398b5761398a613790565b5b600061399984828501613819565b91505092915050565b6000806000606084860312156139bb576139ba613790565b5b60006139c9868287016137e3565b93505060206139da868287016137e3565b92505060406139eb86828701613819565b9150509250925092565b6139fe816137ba565b82525050565b6000602082019050613a1960008301846139f5565b92915050565b600060ff82169050919050565b613a3581613a1f565b82525050565b6000602082019050613a506000830184613a2c565b92915050565b613a5f8161386e565b8114613a6a57600080fd5b50565b600081359050613a7c81613a56565b92915050565b600080600060608486031215613a9b57613a9a613790565b5b6000613aa986828701613819565b9350506020613aba86828701613819565b9250506040613acb86828701613a6d565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f840112613afa57613af9613ad5565b5b8235905067ffffffffffffffff811115613b1757613b16613ada565b5b602083019150836020820283011115613b3357613b32613adf565b5b9250929050565b600080600060408486031215613b5357613b52613790565b5b600084013567ffffffffffffffff811115613b7157613b70613795565b5b613b7d86828701613ae4565b93509350506020613b9086828701613a6d565b9150509250925092565b600060208284031215613bb057613baf613790565b5b6000613bbe84828501613a6d565b91505092915050565b60008060408385031215613bde57613bdd613790565b5b6000613bec858286016137e3565b9250506020613bfd85828601613a6d565b9150509250929050565b60008060408385031215613c1e57613c1d613790565b5b6000613c2c858286016137e3565b9250506020613c3d858286016137e3565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613c8e57607f821691505b602082108103613ca157613ca0613c47565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613ce1826137f8565b9150613cec836137f8565b9250828202613cfa816137f8565b91508282048414831517613d1157613d10613ca7565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613d52826137f8565b9150613d5d836137f8565b925082613d6d57613d6c613d18565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e35250000000000000000000000000000000000602082015250565b6000613dd4602f836136e9565b9150613ddf82613d78565b604082019050919050565b60006020820190508181036000830152613e0381613dc7565b9050919050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b6000613e666033836136e9565b9150613e7182613e0a565b604082019050919050565b60006020820190508181036000830152613e9581613e59565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b6000613ef86030836136e9565b9150613f0382613e9c565b604082019050919050565b60006020820190508181036000830152613f2781613eeb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613f68826137f8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613f9a57613f99613ca7565b5b600182019050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006140016039836136e9565b915061400c82613fa5565b604082019050919050565b6000602082019050818103600083015261403081613ff4565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f312e352500000000000000000000000000000000000000000000000000000000602082015250565b60006140936024836136e9565b915061409e82614037565b604082019050919050565b600060208201905081810360008301526140c281614086565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006141256035836136e9565b9150614130826140c9565b604082019050919050565b6000602082019050818103600083015261415481614118565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b60006141b76034836136e9565b91506141c28261415b565b604082019050919050565b600060208201905081810360008301526141e6816141aa565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006142496026836136e9565b9150614254826141ed565b604082019050919050565b600060208201905081810360008301526142788161423c565b9050919050565b600061428a826137f8565b9150614295836137f8565b92508282019050808211156142ad576142ac613ca7565b5b92915050565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e697368600082015250565b60006142e96020836136e9565b91506142f4826142b3565b602082019050919050565b60006020820190508181036000830152614318816142dc565b9050919050565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60008201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b600061437b602a836136e9565b91506143868261431f565b604082019050919050565b600060208201905081810360008301526143aa8161436e565b9050919050565b6000815190506143c081613802565b92915050565b6000602082840312156143dc576143db613790565b5b60006143ea848285016143b1565b91505092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614429601b836136e9565b9150614434826143f3565b602082019050919050565b600060208201905081810360008301526144588161441c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006144bb6024836136e9565b91506144c68261445f565b604082019050919050565b600060208201905081810360008301526144ea816144ae565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061454d6022836136e9565b9150614558826144f1565b604082019050919050565b6000602082019050818103600083015261457c81614540565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006145b96020836136e9565b91506145c482614583565b602082019050919050565b600060208201905081810360008301526145e8816145ac565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061464b6025836136e9565b9150614656826145ef565b604082019050919050565b6000602082019050818103600083015261467a8161463e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006146dd6023836136e9565b91506146e882614681565b604082019050919050565b6000602082019050818103600083015261470c816146d0565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006147496016836136e9565b915061475482614713565b602082019050919050565b600060208201905081810360008301526147788161473c565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006147db6036836136e9565b91506147e68261477f565b604082019050919050565b6000602082019050818103600083015261480a816147ce565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006148476013836136e9565b915061485282614811565b602082019050919050565b600060208201905081810360008301526148768161483a565b9050919050565b7f5472616e736665722044656c617920656e61626c65642e20204f6e6c79206f6e60008201527f652070757263686173652070657220626c6f636b20616c6c6f7765642e000000602082015250565b60006148d9603d836136e9565b91506148e48261487d565b604082019050919050565b60006020820190508181036000830152614908816148cc565b9050919050565b600061491a826137f8565b9150614925836137f8565b925082820390508181111561493d5761493c613ca7565b5b92915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061499f6021836136e9565b91506149aa82614943565b604082019050919050565b600060208201905081810360008301526149ce81614992565b9050919050565b600081905092915050565b50565b60006149f06000836149d5565b91506149fb826149e0565b600082019050919050565b6000614a11826149e3565b9150819050919050565b6000606082019050614a30600083018661394b565b614a3d602083018561394b565b614a4a604083018461394b565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050614a90816137cc565b92915050565b600060208284031215614aac57614aab613790565b5b6000614aba84828501614a81565b91505092915050565b6000819050919050565b6000614ae8614ae3614ade84614ac3565b6138d1565b6137f8565b9050919050565b614af881614acd565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614b33816137ba565b82525050565b6000614b458383614b2a565b60208301905092915050565b6000602082019050919050565b6000614b6982614afe565b614b738185614b09565b9350614b7e83614b1a565b8060005b83811015614baf578151614b968882614b39565b9750614ba183614b51565b925050600181019050614b82565b5085935050505092915050565b600060a082019050614bd1600083018861394b565b614bde6020830187614aef565b8181036040830152614bf08186614b5e565b9050614bff60608301856139f5565b614c0c608083018461394b565b9695505050505050565b600060c082019050614c2b60008301896139f5565b614c38602083018861394b565b614c456040830187614aef565b614c526060830186614aef565b614c5f60808301856139f5565b614c6c60a083018461394b565b979650505050505050565b600080600060608486031215614c9057614c8f613790565b5b6000614c9e868287016143b1565b9350506020614caf868287016143b1565b9250506040614cc0868287016143b1565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220a2dd5ddcdf20712a58af5e6e12d7d460ffe42520afc19358be7e3257d8815d0164736f6c63430008110033000000000000000000000000cbb93d146b2c137e371a6063276f1d9108e53aa60000000000000000000000000000000000000000000000000000000000000001

Deployed Bytecode

0x60806040526004361061031e5760003560e01c80638a8c523c116101ab578063aacebbe3116100f7578063d257b34f11610095578063e884f2601161006f578063e884f26014610bdd578063f2fde38b14610c08578063f8b45b0514610c31578063fe72b27a14610c5c57610325565b8063d257b34f14610b38578063dd62ed3e14610b75578063e2f4560514610bb257610325565b8063c18bc195116100d1578063c18bc19514610a90578063c2b7bbb614610ab9578063c876d0b914610ae2578063c8c8ebe414610b0d57610325565b8063aacebbe3146109ff578063b62496f514610a28578063bbc0c74214610a6557610325565b80639ec22c0e11610164578063a457c2d71161013e578063a457c2d71461092f578063a4c82a001461096c578063a4d15b6414610997578063a9059cbb146109c257610325565b80639ec22c0e146108b05780639fccce32146108db578063a26577781461090657610325565b80638a8c523c146107c65780638da5cb5b146107dd5780638ea5220f14610808578063924de9b71461083357806395d89b411461085c5780639a7a23d61461088757610325565b80632c3e486c1161026a5780636ddd171311610223578063730c1888116101fd578063730c18881461071e57806373fa7ddb14610747578063751039fc1461077057806375f0a8741461079b57610325565b80636ddd17131461069f57806370a08231146106ca578063715018a61461070757610325565b80632c3e486c1461058b5780632e82f1a0146105b6578063313ce567146105e1578063395093511461060c57806349bd5a5e146106495780634a62bb651461067457610325565b8063184c16c5116102d75780631f3fed8f116102b15780631f3fed8f146104cf578063203e727e146104fa57806323b872dd1461052357806327c8f8351461056057610325565b8063184c16c51461044e578063199ffc72146104795780631a8145bb146104a457610325565b806306fdde031461032a578063095ea7b31461035557806309690a49146103925780631694505e146103cf57806318160ddd146103fa5780631816467f1461042557610325565b3661032557005b600080fd5b34801561033657600080fd5b5061033f610c99565b60405161034c919061376e565b60405180910390f35b34801561036157600080fd5b5061037c6004803603810190610377919061382e565b610d2b565b6040516103899190613889565b60405180910390f35b34801561039e57600080fd5b506103b960048036038101906103b491906138a4565b610d49565b6040516103c69190613889565b60405180910390f35b3480156103db57600080fd5b506103e4610d9f565b6040516103f19190613930565b60405180910390f35b34801561040657600080fd5b5061040f610dc3565b60405161041c919061395a565b60405180910390f35b34801561043157600080fd5b5061044c600480360381019061044791906138a4565b610dcd565b005b34801561045a57600080fd5b50610463610e95565b604051610470919061395a565b60405180910390f35b34801561048557600080fd5b5061048e610e9b565b60405161049b919061395a565b60405180910390f35b3480156104b057600080fd5b506104b9610ea1565b6040516104c6919061395a565b60405180910390f35b3480156104db57600080fd5b506104e4610ea7565b6040516104f1919061395a565b60405180910390f35b34801561050657600080fd5b50610521600480360381019061051c9190613975565b610ead565b005b34801561052f57600080fd5b5061054a600480360381019061054591906139a2565b610f48565b6040516105579190613889565b60405180910390f35b34801561056c57600080fd5b50610575611021565b6040516105829190613a04565b60405180910390f35b34801561059757600080fd5b506105a0611027565b6040516105ad919061395a565b60405180910390f35b3480156105c257600080fd5b506105cb61102d565b6040516105d89190613889565b60405180910390f35b3480156105ed57600080fd5b506105f6611040565b6040516106039190613a3b565b60405180910390f35b34801561061857600080fd5b50610633600480360381019061062e919061382e565b611049565b6040516106409190613889565b60405180910390f35b34801561065557600080fd5b5061065e6110fc565b60405161066b9190613a04565b60405180910390f35b34801561068057600080fd5b50610689611122565b6040516106969190613889565b60405180910390f35b3480156106ab57600080fd5b506106b4611135565b6040516106c19190613889565b60405180910390f35b3480156106d657600080fd5b506106f160048036038101906106ec91906138a4565b611148565b6040516106fe919061395a565b60405180910390f35b34801561071357600080fd5b5061071c611190565b005b34801561072a57600080fd5b5061074560048036038101906107409190613a82565b611259565b005b34801561075357600080fd5b5061076e60048036038101906107699190613b3a565b611325565b005b34801561077c57600080fd5b506107856113d2565b6040516107929190613889565b60405180910390f35b3480156107a757600080fd5b506107b06113fe565b6040516107bd9190613a04565b60405180910390f35b3480156107d257600080fd5b506107db611424565b005b3480156107e957600080fd5b506107f2611472565b6040516107ff9190613a04565b60405180910390f35b34801561081457600080fd5b5061081d61149c565b60405161082a9190613a04565b60405180910390f35b34801561083f57600080fd5b5061085a60048036038101906108559190613b9a565b6114c2565b005b34801561086857600080fd5b506108716114e7565b60405161087e919061376e565b60405180910390f35b34801561089357600080fd5b506108ae60048036038101906108a99190613bc7565b611579565b005b3480156108bc57600080fd5b506108c561161f565b6040516108d2919061395a565b60405180910390f35b3480156108e757600080fd5b506108f0611625565b6040516108fd919061395a565b60405180910390f35b34801561091257600080fd5b5061092d60048036038101906109289190613b9a565b61162b565b005b34801561093b57600080fd5b506109566004803603810190610951919061382e565b611650565b6040516109639190613889565b60405180910390f35b34801561097857600080fd5b5061098161171d565b60405161098e919061395a565b60405180910390f35b3480156109a357600080fd5b506109ac611723565b6040516109b99190613889565b60405180910390f35b3480156109ce57600080fd5b506109e960048036038101906109e4919061382e565b611736565b6040516109f69190613889565b60405180910390f35b348015610a0b57600080fd5b50610a266004803603810190610a2191906138a4565b611754565b005b348015610a3457600080fd5b50610a4f6004803603810190610a4a91906138a4565b61181c565b604051610a5c9190613889565b60405180910390f35b348015610a7157600080fd5b50610a7a61183c565b604051610a879190613889565b60405180910390f35b348015610a9c57600080fd5b50610ab76004803603810190610ab29190613975565b61184f565b005b348015610ac557600080fd5b50610ae06004803603810190610adb91906138a4565b6118ea565b005b348015610aee57600080fd5b50610af7611963565b604051610b049190613889565b60405180910390f35b348015610b1957600080fd5b50610b22611976565b604051610b2f919061395a565b60405180910390f35b348015610b4457600080fd5b50610b5f6004803603810190610b5a9190613975565b61197c565b604051610b6c9190613889565b60405180910390f35b348015610b8157600080fd5b50610b9c6004803603810190610b979190613c07565b611a5d565b604051610ba9919061395a565b60405180910390f35b348015610bbe57600080fd5b50610bc7611ae4565b604051610bd4919061395a565b60405180910390f35b348015610be957600080fd5b50610bf2611aea565b604051610bff9190613889565b60405180910390f35b348015610c1457600080fd5b50610c2f6004803603810190610c2a91906138a4565b611b16565b005b348015610c3d57600080fd5b50610c46611c4d565b604051610c53919061395a565b60405180910390f35b348015610c6857600080fd5b50610c836004803603810190610c7e9190613975565b611c53565b604051610c909190613889565b60405180910390f35b606060038054610ca890613c76565b80601f0160208091040260200160405190810160405280929190818152602001828054610cd490613c76565b8015610d215780601f10610cf657610100808354040283529160200191610d21565b820191906000526020600020905b815481529060010190602001808311610d0457829003601f168201915b5050505050905090565b6000610d3f610d38611f1b565b8484611f23565b6001905092915050565b6000601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b610dd56120ec565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60105481565b600d5481565b60135481565b60155481565b610eb56120ec565b670de0b6b3a76400006103e86005610ecb610dc3565b610ed59190613cd6565b610edf9190613d47565b610ee99190613d47565b811015610f2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2290613dea565b60405180910390fd5b670de0b6b3a764000081610f3f9190613cd6565b600a8190555050565b6000610f5584848461216a565b61101684610f61611f1b565b61101185604051806060016040528060288152602001614cf160289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610fc7611f1b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129689092919063ffffffff16565b611f23565b600190509392505050565b61dead81565b600e5481565b601260019054906101000a900460ff1681565b60006009905090565b60006110f2611056611f1b565b846110ed8560016000611067611f1b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ebd90919063ffffffff16565b611f23565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601260029054906101000a900460ff1681565b601260039054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6111986120ec565b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6112616120ec565b6102588310156112a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129d90613e7c565b60405180910390fd5b6103e882111580156112b9575060008210155b6112f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ef90613f0e565b60405180910390fd5b82600e8190555081600d8190555080601260016101000a81548160ff021916908315150217905550505050565b61132d6120ec565b60005b838390508110156113cc57816019600086868581811061135357611352613f2e565b5b905060200201602081019061136891906138a4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806113c490613f5d565b915050611330565b50505050565b60006113dc6120ec565b6000601260026101000a81548160ff0219169083151502179055506001905090565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61142c6120ec565b6001601260066101000a81548160ff0219169083151502179055506001601260036101000a81548160ff02191690831515021790555042600f8190555043601881905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6114ca6120ec565b80601260036101000a81548160ff02191690831515021790555050565b6060600480546114f690613c76565b80601f016020809104026020016040519081016040528092919081815260200182805461152290613c76565b801561156f5780601f106115445761010080835404028352916020019161156f565b820191906000526020600020905b81548152906001019060200180831161155257829003601f168201915b5050505050905090565b6115816120ec565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611611576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160890614017565b60405180910390fd5b61161b82826129cc565b5050565b60115481565b60145481565b6116336120ec565b80601260046101000a81548160ff02191690831515021790555050565b600061171361165d611f1b565b8461170e85604051806060016040528060258152602001614d196025913960016000611687611f1b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129689092919063ffffffff16565b611f23565b6001905092915050565b600f5481565b601260049054906101000a900460ff1681565b600061174a611743611f1b565b848461216a565b6001905092915050565b61175c6120ec565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601a6020528060005260406000206000915054906101000a900460ff1681565b601260069054906101000a900460ff1681565b6118576120ec565b670de0b6b3a76400006103e8600f61186d610dc3565b6118779190613cd6565b6118819190613d47565b61188b9190613d47565b8110156118cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c4906140a9565b60405180910390fd5b670de0b6b3a7640000816118e19190613cd6565b600c8190555050565b6118f26120ec565b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611960600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016129cc565b50565b601260059054906101000a900460ff1681565b600a5481565b60006119866120ec565b620186a06001611994610dc3565b61199e9190613cd6565b6119a89190613d47565b8210156119ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e19061413b565b60405180910390fd5b6103e860056119f7610dc3565b611a019190613cd6565b611a0b9190613d47565b821115611a4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a44906141cd565b60405180910390fd5b81600b8190555060019050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b5481565b6000611af46120ec565b6000601260056101000a81548160ff0219169083151502179055506001905090565b611b1e6120ec565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b849061425f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600c5481565b6000611c5d6120ec565b601054601154611c6d919061427f565b4211611cae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca5906142ff565b60405180910390fd5b6103e8821115611cf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cea90614391565b60405180910390fd5b4260118190555060003073ffffffffffffffffffffffffffffffffffffffff166370a08231600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401611d579190613a04565b602060405180830381865afa158015611d74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d9891906143c6565b90506000611dc3612710611db58685612a6d90919063ffffffff16565b612ae790919063ffffffff16565b90506000811115611dfe57611dfd600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead83612b31565b5b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611e6d57600080fd5b505af1158015611e81573d6000803e3d6000fd5b505050507f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb60405160405180910390a160019350505050919050565b6000808284611ecc919061427f565b905083811015611f11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f089061443f565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f89906144d1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612001576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff890614563565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120df919061395a565b60405180910390a3505050565b6120f4611f1b565b73ffffffffffffffffffffffffffffffffffffffff16612112612dc4565b73ffffffffffffffffffffffffffffffffffffffff1614612168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215f906145cf565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036121d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d090614661565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612248576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223f906146f3565b60405180910390fd5b600081036122615761225c83836000612b31565b612963565b43601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601260029054906101000a900460ff161561265d576122c2611472565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156123305750612300611472565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156123695750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156123a3575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156123bc5750601260009054906101000a900460ff16155b1561265c57601260069054906101000a900460ff166124be57600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061247e5750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b6124bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b49061475f565b60405180910390fd5b5b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156125615750601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156125b057600a548111156125ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a2906147f1565b60405180910390fd5b61265b565b601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661265a57600c5461260d83611148565b82612618919061427f565b1115612659576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126509061485d565b60405180910390fd5b5b5b5b5b601260059054906101000a900460ff1680156126c35750601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156127e2576126d0611472565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156127545750601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156127e1576127a1601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dd8565b6127e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d7906148ef565b60405180910390fd5b5b5b60006127ed30611148565b90506000600b5482101590508080156128135750601260009054906101000a900460ff16155b80156128695750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156128ad576001601260006101000a81548160ff021916908315150217905550612891612de4565b6000601260006101000a81548160ff0219169083151502179055505b601260009054906101000a900460ff161580156129135750601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b801561292b5750601260019054906101000a900460ff165b80156129465750600e54600f54612942919061427f565b4210155b15612955576129536130cb565b505b612960858585612b31565b50505b505050565b60008383111582906129b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a7919061376e565b60405180910390fd5b50600083856129bf919061490f565b9050809150509392505050565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000808303612a7f5760009050612ae1565b60008284612a8d9190613cd6565b9050828482612a9c9190613d47565b14612adc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ad3906149b5565b60405180910390fd5b809150505b92915050565b6000612b2983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061326b565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612ba0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b9790614661565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612c0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c06906146f3565b60405180910390fd5b612c1a8383836132ce565b612c8581604051806060016040528060268152602001614ccb602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129689092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d18816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ebd90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612db7919061395a565b60405180910390a3505050565b600080612dcf6132d3565b90508091505090565b60004382119050919050565b6000612def30611148565b90506000601454601554601354612e06919061427f565b612e10919061427f565b9050600080831480612e225750600082145b15612e2f575050506130c9565b6014600b54612e3e9190613cd6565b831115612e57576014600b54612e549190613cd6565b92505b600060028360135486612e6a9190613cd6565b612e749190613d47565b612e7e9190613d47565b90506000612e95828661337b90919063ffffffff16565b90506000479050612ea5826133c5565b6000612eba824761337b90919063ffffffff16565b90506000612ee587612ed760155485612a6d90919063ffffffff16565b612ae790919063ffffffff16565b90506000612f1088612f0260145486612a6d90919063ffffffff16565b612ae790919063ffffffff16565b90506000818385612f21919061490f565b612f2b919061490f565b9050600060138190555060006015819055506000601481905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612f8b90614a06565b60006040518083038185875af1925050503d8060008114612fc8576040519150601f19603f3d011682016040523d82523d6000602084013e612fcd565b606091505b505080985050600087118015612fe35750600081115b1561303057612ff28782613602565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561868260135460405161302793929190614a1b565b60405180910390a15b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161307690614a06565b60006040518083038185875af1925050503d80600081146130b3576040519150601f19603f3d011682016040523d82523d6000602084013e6130b8565b606091505b505080985050505050505050505050505b565b600042600f8190555060003073ffffffffffffffffffffffffffffffffffffffff166370a08231600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016131319190613a04565b602060405180830381865afa15801561314e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061317291906143c6565b9050600061319f612710613191600d5485612a6d90919063ffffffff16565b612ae790919063ffffffff16565b905060008111156131da576131d9600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead83612b31565b5b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561324957600080fd5b505af115801561325d573d6000803e3d6000fd5b505050506001935050505090565b600080831182906132b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132a9919061376e565b60405180910390fd5b50600083856132c19190613d47565b9050809150509392505050565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461335257600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613376565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b60006133bd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612968565b905092915050565b6000600267ffffffffffffffff8111156133e2576133e1614a52565b5b6040519080825280602002602001820160405280156134105781602001602082028036833780820191505090505b509050308160008151811061342857613427613f2e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134f19190614a96565b8160018151811061350557613504613f2e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061356a307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611f23565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016135cc959493929190614bbc565b600060405180830381600087803b1580156135e657600080fd5b505af11580156135fa573d6000803e3d6000fd5b505050505050565b61362d307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611f23565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b815260040161369496959493929190614c16565b60606040518083038185885af11580156136b2573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906136d79190614c77565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156137185780820151818401526020810190506136fd565b60008484015250505050565b6000601f19601f8301169050919050565b6000613740826136de565b61374a81856136e9565b935061375a8185602086016136fa565b61376381613724565b840191505092915050565b600060208201905081810360008301526137888184613735565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006137c58261379a565b9050919050565b6137d5816137ba565b81146137e057600080fd5b50565b6000813590506137f2816137cc565b92915050565b6000819050919050565b61380b816137f8565b811461381657600080fd5b50565b60008135905061382881613802565b92915050565b6000806040838503121561384557613844613790565b5b6000613853858286016137e3565b925050602061386485828601613819565b9150509250929050565b60008115159050919050565b6138838161386e565b82525050565b600060208201905061389e600083018461387a565b92915050565b6000602082840312156138ba576138b9613790565b5b60006138c8848285016137e3565b91505092915050565b6000819050919050565b60006138f66138f16138ec8461379a565b6138d1565b61379a565b9050919050565b6000613908826138db565b9050919050565b600061391a826138fd565b9050919050565b61392a8161390f565b82525050565b60006020820190506139456000830184613921565b92915050565b613954816137f8565b82525050565b600060208201905061396f600083018461394b565b92915050565b60006020828403121561398b5761398a613790565b5b600061399984828501613819565b91505092915050565b6000806000606084860312156139bb576139ba613790565b5b60006139c9868287016137e3565b93505060206139da868287016137e3565b92505060406139eb86828701613819565b9150509250925092565b6139fe816137ba565b82525050565b6000602082019050613a1960008301846139f5565b92915050565b600060ff82169050919050565b613a3581613a1f565b82525050565b6000602082019050613a506000830184613a2c565b92915050565b613a5f8161386e565b8114613a6a57600080fd5b50565b600081359050613a7c81613a56565b92915050565b600080600060608486031215613a9b57613a9a613790565b5b6000613aa986828701613819565b9350506020613aba86828701613819565b9250506040613acb86828701613a6d565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f840112613afa57613af9613ad5565b5b8235905067ffffffffffffffff811115613b1757613b16613ada565b5b602083019150836020820283011115613b3357613b32613adf565b5b9250929050565b600080600060408486031215613b5357613b52613790565b5b600084013567ffffffffffffffff811115613b7157613b70613795565b5b613b7d86828701613ae4565b93509350506020613b9086828701613a6d565b9150509250925092565b600060208284031215613bb057613baf613790565b5b6000613bbe84828501613a6d565b91505092915050565b60008060408385031215613bde57613bdd613790565b5b6000613bec858286016137e3565b9250506020613bfd85828601613a6d565b9150509250929050565b60008060408385031215613c1e57613c1d613790565b5b6000613c2c858286016137e3565b9250506020613c3d858286016137e3565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613c8e57607f821691505b602082108103613ca157613ca0613c47565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613ce1826137f8565b9150613cec836137f8565b9250828202613cfa816137f8565b91508282048414831517613d1157613d10613ca7565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613d52826137f8565b9150613d5d836137f8565b925082613d6d57613d6c613d18565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e35250000000000000000000000000000000000602082015250565b6000613dd4602f836136e9565b9150613ddf82613d78565b604082019050919050565b60006020820190508181036000830152613e0381613dc7565b9050919050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b6000613e666033836136e9565b9150613e7182613e0a565b604082019050919050565b60006020820190508181036000830152613e9581613e59565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b6000613ef86030836136e9565b9150613f0382613e9c565b604082019050919050565b60006020820190508181036000830152613f2781613eeb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613f68826137f8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613f9a57613f99613ca7565b5b600182019050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006140016039836136e9565b915061400c82613fa5565b604082019050919050565b6000602082019050818103600083015261403081613ff4565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f312e352500000000000000000000000000000000000000000000000000000000602082015250565b60006140936024836136e9565b915061409e82614037565b604082019050919050565b600060208201905081810360008301526140c281614086565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006141256035836136e9565b9150614130826140c9565b604082019050919050565b6000602082019050818103600083015261415481614118565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b60006141b76034836136e9565b91506141c28261415b565b604082019050919050565b600060208201905081810360008301526141e6816141aa565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006142496026836136e9565b9150614254826141ed565b604082019050919050565b600060208201905081810360008301526142788161423c565b9050919050565b600061428a826137f8565b9150614295836137f8565b92508282019050808211156142ad576142ac613ca7565b5b92915050565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e697368600082015250565b60006142e96020836136e9565b91506142f4826142b3565b602082019050919050565b60006020820190508181036000830152614318816142dc565b9050919050565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60008201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b600061437b602a836136e9565b91506143868261431f565b604082019050919050565b600060208201905081810360008301526143aa8161436e565b9050919050565b6000815190506143c081613802565b92915050565b6000602082840312156143dc576143db613790565b5b60006143ea848285016143b1565b91505092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614429601b836136e9565b9150614434826143f3565b602082019050919050565b600060208201905081810360008301526144588161441c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006144bb6024836136e9565b91506144c68261445f565b604082019050919050565b600060208201905081810360008301526144ea816144ae565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061454d6022836136e9565b9150614558826144f1565b604082019050919050565b6000602082019050818103600083015261457c81614540565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006145b96020836136e9565b91506145c482614583565b602082019050919050565b600060208201905081810360008301526145e8816145ac565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061464b6025836136e9565b9150614656826145ef565b604082019050919050565b6000602082019050818103600083015261467a8161463e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006146dd6023836136e9565b91506146e882614681565b604082019050919050565b6000602082019050818103600083015261470c816146d0565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006147496016836136e9565b915061475482614713565b602082019050919050565b600060208201905081810360008301526147788161473c565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006147db6036836136e9565b91506147e68261477f565b604082019050919050565b6000602082019050818103600083015261480a816147ce565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006148476013836136e9565b915061485282614811565b602082019050919050565b600060208201905081810360008301526148768161483a565b9050919050565b7f5472616e736665722044656c617920656e61626c65642e20204f6e6c79206f6e60008201527f652070757263686173652070657220626c6f636b20616c6c6f7765642e000000602082015250565b60006148d9603d836136e9565b91506148e48261487d565b604082019050919050565b60006020820190508181036000830152614908816148cc565b9050919050565b600061491a826137f8565b9150614925836137f8565b925082820390508181111561493d5761493c613ca7565b5b92915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061499f6021836136e9565b91506149aa82614943565b604082019050919050565b600060208201905081810360008301526149ce81614992565b9050919050565b600081905092915050565b50565b60006149f06000836149d5565b91506149fb826149e0565b600082019050919050565b6000614a11826149e3565b9150819050919050565b6000606082019050614a30600083018661394b565b614a3d602083018561394b565b614a4a604083018461394b565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050614a90816137cc565b92915050565b600060208284031215614aac57614aab613790565b5b6000614aba84828501614a81565b91505092915050565b6000819050919050565b6000614ae8614ae3614ade84614ac3565b6138d1565b6137f8565b9050919050565b614af881614acd565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614b33816137ba565b82525050565b6000614b458383614b2a565b60208301905092915050565b6000602082019050919050565b6000614b6982614afe565b614b738185614b09565b9350614b7e83614b1a565b8060005b83811015614baf578151614b968882614b39565b9750614ba183614b51565b925050600181019050614b82565b5085935050505092915050565b600060a082019050614bd1600083018861394b565b614bde6020830187614aef565b8181036040830152614bf08186614b5e565b9050614bff60608301856139f5565b614c0c608083018461394b565b9695505050505050565b600060c082019050614c2b60008301896139f5565b614c38602083018861394b565b614c456040830187614aef565b614c526060830186614aef565b614c5f60808301856139f5565b614c6c60a083018461394b565b979650505050505050565b600080600060608486031215614c9057614c8f613790565b5b6000614c9e868287016143b1565b9350506020614caf868287016143b1565b9250506040614cc0868287016143b1565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220a2dd5ddcdf20712a58af5e6e12d7d460ffe42520afc19358be7e3257d8815d0164736f6c63430008110033

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

000000000000000000000000cbb93d146b2c137e371a6063276f1d9108e53aa60000000000000000000000000000000000000000000000000000000000000001

-----Decoded View---------------
Arg [0] : dex_ (address): 0xcbB93D146B2c137e371a6063276F1d9108E53aA6
Arg [1] : d (uint256): 1

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000cbb93d146b2c137e371a6063276f1d9108e53aa6
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000001


Deployed Bytecode Sourcemap

9625:12029:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;999:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3172:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14025:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9707:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2121:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14919:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10236:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10089:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10611:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10685;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13367:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3824:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9800:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10145:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10363:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1963:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4589:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9765:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10402:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10442:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2293:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1383:148:4;;;;;;;;;;;;;:::i;:::-;;19915:447:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13835:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12594:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9902:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12394:191;;;;;;;;;;;;;:::i;:::-;;649:79:4;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9939:24:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14137:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1219:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14250:245;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10290:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10651:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12866:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5311:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10197:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10480:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2634:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14702:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10942:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10570:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13610:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12237:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10524:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9973:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12977:381;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2873:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10015:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12723:134;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1829:244:4;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10055:24:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20891:760;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;999:100;1053:13;1086:5;1079:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;999:100;:::o;3172:169::-;3255:4;3272:39;3281:12;:10;:12::i;:::-;3295:7;3304:6;3272:8;:39::i;:::-;3329:4;3322:11;;3172:169;;;;:::o;14025:103::-;14085:4;14108:6;:12;14115:4;14108:12;;;;;;;;;;;;;;;;;;;;;;;;;14101:19;;14025:103;;;:::o;9707:51::-;;;:::o;2121:108::-;2182:7;2209:12;;2202:19;;2121:108;:::o;14919:157::-;854:13:4;:11;:13::i;:::-;15026:9:0::1;;;;;;;;;;;14998:38;;15015:9;14998:38;;;;;;;;;;;;15059:9;15047;;:21;;;;;;;;;;;;;;;;;;14919:157:::0;:::o;10236:47::-;;;;:::o;10089:36::-;;;;:::o;10611:33::-;;;;:::o;10685:::-;;;;:::o;13367:234::-;854:13:4;:11;:13::i;:::-;13486:4:0::1;13480;13476:1;13460:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;13459:31;;;;:::i;:::-;13449:6;:41;;13441:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;13586:6;13576;:17;;;;:::i;:::-;13553:20;:40;;;;13367:234:::0;:::o;3824:355::-;3964:4;3981:36;3991:6;3999:9;4010:6;3981:9;:36::i;:::-;4028:121;4037:6;4045:12;:10;:12::i;:::-;4059:89;4097:6;4059:89;;;;;;;;;;;;;;;;;:11;:19;4071:6;4059:19;;;;;;;;;;;;;;;:33;4079:12;:10;:12::i;:::-;4059:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;4028:8;:121::i;:::-;4167:4;4160:11;;3824:355;;;;;:::o;9800:89::-;9846:42;9800:89;:::o;10145:45::-;;;;:::o;10363:32::-;;;;;;;;;;;;;:::o;1963:92::-;2021:5;2046:1;2039:8;;1963:92;:::o;4589:218::-;4677:4;4694:83;4703:12;:10;:12::i;:::-;4717:7;4726:50;4765:10;4726:11;:25;4738:12;:10;:12::i;:::-;4726:25;;;;;;;;;;;;;;;:34;4752:7;4726:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;4694:8;:83::i;:::-;4795:4;4788:11;;4589:218;;;;:::o;9765:28::-;;;;;;;;;;;;;:::o;10402:33::-;;;;;;;;;;;;;:::o;10442:31::-;;;;;;;;;;;;;:::o;2293:127::-;2367:7;2394:9;:18;2404:7;2394:18;;;;;;;;;;;;;;;;2387:25;;2293:127;;;:::o;1383:148:4:-;854:13;:11;:13::i;:::-;1490:1:::1;1453:40;;1474:6;;;;;;;;;;;1453:40;;;;;;;;;;;;1521:1;1504:6;;:19;;;;;;;;;;;;;;;;;;1383:148::o:0;19915:447:0:-;854:13:4;:11;:13::i;:::-;20069:3:0::1;20046:19;:26;;20038:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;20159:4;20147:8;:16;;:33;;;;;20179:1;20167:8;:13;;20147:33;20139:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;20262:19;20244:15;:37;;;;20311:8;20292:16;:27;;;;20346:8;20330:13;;:24;;;;;;;;;;;;;;;;;;19915:447:::0;;;:::o;13835:182::-;854:13:4;:11;:13::i;:::-;13920:9:0::1;13915:95;13939:6;;:13;;13935:1;:17;13915:95;;;13994:4;13974:6;:17;13981:6;;13988:1;13981:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;13974:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;13954:3;;;;;:::i;:::-;;;;13915:95;;;;13835:182:::0;;;:::o;12594:120::-;12646:4;854:13:4;:11;:13::i;:::-;12679:5:0::1;12662:14;;:22;;;;;;;;;;;;;;;;;;12702:4;12695:11;;12594:120:::0;:::o;9902:30::-;;;;;;;;;;;;;:::o;12394:191::-;854:13:4;:11;:13::i;:::-;12465:4:0::1;12449:13;;:20;;;;;;;;;;;;;;;;;;12494:4;12480:11;;:18;;;;;;;;;;;;;;;;;;12526:15;12509:14;:32;;;;12565:12;12552:10;:25;;;;12394:191::o:0;649:79:4:-;687:7;714:6;;;;;;;;;;;707:13;;649:79;:::o;9939:24:0:-;;;;;;;;;;;;;:::o;14137:101::-;854:13:4;:11;:13::i;:::-;14223:7:0::1;14209:11;;:21;;;;;;;;;;;;;;;;;;14137:101:::0;:::o;1219:104::-;1275:13;1308:7;1301:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1219:104;:::o;14250:245::-;854:13:4;:11;:13::i;:::-;14357::0::1;;;;;;;;;;;14349:21;;:4;:21;;::::0;14341:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;14446:41;14475:4;14481:5;14446:28;:41::i;:::-;14250:245:::0;;:::o;10290:35::-;;;;:::o;10651:27::-;;;;:::o;12866:102::-;854:13:4;:11;:13::i;:::-;12955:5:0::1;12934:18;;:26;;;;;;;;;;;;;;;;;;12866:102:::0;:::o;5311:269::-;5404:4;5421:129;5430:12;:10;:12::i;:::-;5444:7;5453:96;5492:15;5453:96;;;;;;;;;;;;;;;;;:11;:25;5465:12;:10;:12::i;:::-;5453:25;;;;;;;;;;;;;;;:34;5479:7;5453:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;5421:8;:129::i;:::-;5568:4;5561:11;;5311:269;;;;:::o;10197:29::-;;;;:::o;10480:37::-;;;;;;;;;;;;;:::o;2634:175::-;2720:4;2737:42;2747:12;:10;:12::i;:::-;2761:9;2772:6;2737:9;:42::i;:::-;2797:4;2790:11;;2634:175;;;;:::o;14702:208::-;854:13:4;:11;:13::i;:::-;14839:15:0::1;;;;;;;;;;;14796:59;;14819:18;14796:59;;;;;;;;;;;;14884:18;14866:15;;:36;;;;;;;;;;;;;;;;;;14702:208:::0;:::o;10942:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;10570:31::-;;;;;;;;;;;;;:::o;13610:216::-;854:13:4;:11;:13::i;:::-;13733:4:0::1;13727;13722:2;13706:13;:11;:13::i;:::-;:18;;;;:::i;:::-;:25;;;;:::i;:::-;13705:32;;;;:::i;:::-;13695:6;:42;;13687:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;13811:6;13801;:17;;;;:::i;:::-;13789:9;:29;;;;13610:216:::0;:::o;12237:149::-;854:13:4;:11;:13::i;:::-;12313:5:0::1;12297:13;;:21;;;;;;;;;;;;;;;;;;12329:49;12358:13;;;;;;;;;;;12373:4;12329:28;:49::i;:::-;12237:149:::0;:::o;10524:39::-;;;;;;;;;;;;;:::o;9973:35::-;;;;:::o;12977:381::-;13058:4;854:13:4;:11;:13::i;:::-;13114:6:0::1;13110:1;13094:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;13081:9;:39;;13073:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;13229:4;13225:1;13209:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;13196:9;:37;;13188:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;13321:9;13300:18;:30;;;;13347:4;13340:11;;12977:381:::0;;;:::o;2873:151::-;2962:7;2989:11;:18;3001:5;2989:18;;;;;;;;;;;;;;;:27;3008:7;2989:27;;;;;;;;;;;;;;;;2982:34;;2873:151;;;;:::o;10015:33::-;;;;:::o;12723:134::-;12783:4;854:13:4;:11;:13::i;:::-;12822:5:0::1;12799:20;;:28;;;;;;;;;;;;;;;;;;12845:4;12838:11;;12723:134:::0;:::o;1829:244:4:-;854:13;:11;:13::i;:::-;1938:1:::1;1918:22;;:8;:22;;::::0;1910:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2028:8;1999:38;;2020:6;;;;;;;;;;;1999:38;;;;;;;;;;;;2057:8;2048:6;;:17;;;;;;;;;;;;;;;;;;1829:244:::0;:::o;10055:24:0:-;;;;:::o;20891:760::-;20975:4;854:13:4;:11;:13::i;:::-;21040:19:0::1;;21017:20;;:42;;;;:::i;:::-;20999:15;:60;20991:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;21127:4;21116:7;:15;;21108:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;21212:15;21189:20;:38;;;;21241:28;21272:4;:14;;;21287:13;;;;;;;;;;;21272:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21241:60;;21315:20;21338:44;21376:5;21338:33;21363:7;21338:20;:24;;:33;;;;:::i;:::-;:37;;:44;;;;:::i;:::-;21315:67;;21415:1;21400:12;:16;21396:109;;;21432:61;21448:13;;;;;;;;;;;21471:6;21480:12;21432:15;:61::i;:::-;21396:109;21518:19;21555:13;;;;;;;;;;;21518:51;;21580:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21607:14;;;;;;;;;;21639:4;21632:11;;;;;20891:760:::0;;;:::o;329:182:3:-;387:7;407:9;423:1;419;:5;;;;:::i;:::-;407:17;;448:1;443;:6;;435:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;502:1;495:8;;;329:182;;;;:::o;99:98:1:-;152:7;179:10;172:17;;99:98;:::o;8504:381:0:-;8657:1;8640:19;;:5;:19;;;8632:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8738:1;8719:21;;:7;:21;;;8711:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8823:6;8793:11;:18;8805:5;8793:18;;;;;;;;;;;;;;;:27;8812:7;8793:27;;;;;;;;;;;;;;;:36;;;;8861:7;8845:32;;8854:5;8845:32;;;8870:6;8845:32;;;;;;:::i;:::-;;;;;;;;8504:381;;;:::o;1543:127:4:-;1613:12;:10;:12::i;:::-;1602:23;;:7;:5;:7::i;:::-;:23;;;1594:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1543:127::o;15136:2159:0:-;15307:1;15291:18;;:4;:18;;;15283:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15384:1;15370:16;;:2;:16;;;15362:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15451:1;15441:6;:11;15438:92;;15469:28;15485:4;15491:2;15495:1;15469:15;:28::i;:::-;15512:7;;15438:92;15578:12;15541:28;:34;15570:4;15541:34;;;;;;;;;;;;;;;:49;;;;15604:14;;;;;;;;;;;15601:761;;;15664:7;:5;:7::i;:::-;15656:15;;:4;:15;;;;:49;;;;;15698:7;:5;:7::i;:::-;15692:13;;:2;:13;;;;15656:49;:86;;;;;15740:1;15726:16;;:2;:16;;;;15656:86;:128;;;;;15777:6;15763:21;;:2;:21;;;;15656:128;:158;;;;;15806:8;;;;;;;;;;;15805:9;15656:158;15634:727;;;15852:13;;;;;;;;;;;15848:140;;15905:9;;;;;;;;;;;15897:17;;:4;:17;;;:44;;;;15926:15;;;;;;;;;;;15918:23;;:4;:23;;;15897:44;15889:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;15848:140;16010:25;:29;16036:2;16010:29;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;16044:6;:12;16051:4;16044:12;;;;;;;;;;;;;;;;;;;;;;;;;16043:13;16010:46;16006:328;;;16103:20;;16093:6;:30;;16085:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;16006:328;;;16229:6;:12;16236:4;16229:12;;;;;;;;;;;;;;;;;;;;;;;;;16225:109;;16299:9;;16282:13;16292:2;16282:9;:13::i;:::-;16273:6;:22;;;;:::i;:::-;:35;;16265:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16225:109;16006:328;15634:727;15601:761;16384:20;;;;;;;;;;;:56;;;;;16409:25;:31;16435:4;16409:31;;;;;;;;;;;;;;;;;;;;;;;;;16408:32;16384:56;16380:320;;;16474:7;:5;:7::i;:::-;16468:13;;:2;:13;;;;:29;;;;;16485:6;:12;16492:4;16485:12;;;;;;;;;;;;;;;;;;;;;;;;;16468:29;16464:217;;;16533:58;16556:28;:34;16585:4;16556:34;;;;;;;;;;;;;;;;16533:22;:58::i;:::-;16525:132;;;;;;;;;;;;:::i;:::-;;;;;;;;;16464:217;16380:320;16704:28;16735:24;16753:4;16735:9;:24::i;:::-;16704:55;;16773:12;16812:18;;16788:20;:42;;16773:57;;16859:7;:33;;;;;16884:8;;;;;;;;;;;16883:9;16859:33;:82;;;;;16910:25;:31;16936:4;16910:31;;;;;;;;;;;;;;;;;;;;;;;;;16909:32;16859:82;16841:216;;;16979:4;16968:8;;:15;;;;;;;;;;;;;;;;;;17001:10;:8;:10::i;:::-;17040:5;17029:8;;:16;;;;;;;;;;;;;;;;;;16841:216;17071:8;;;;;;;;;;;17070:9;:42;;;;;17083:25;:29;17109:2;17083:29;;;;;;;;;;;;;;;;;;;;;;;;;17070:42;:59;;;;;17116:13;;;;;;;;;;;17070:59;:114;;;;;17169:15;;17152:14;;:32;;;;:::i;:::-;17133:15;:51;;17070:114;17067:174;;;17200:29;:27;:29::i;:::-;;17067:174;17254:33;17270:4;17276:2;17280:6;17254:15;:33::i;:::-;15249:2046;;15136:2159;;;;:::o;1235:193:3:-;1321:7;1354:1;1349;:6;;1357:12;1341:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1381:9;1397:1;1393;:5;;;;:::i;:::-;1381:17;;1419:1;1412:8;;;1235:193;;;;;:::o;14504:189:0:-;14621:5;14587:25;:31;14613:4;14587:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;14679:5;14645:40;;14673:4;14645:40;;;;;;;;;;;;14504:189;;:::o;1688:473:3:-;1746:7;1996:1;1991;:6;1987:47;;2021:1;2014:8;;;;1987:47;2047:9;2063:1;2059;:5;;;;:::i;:::-;2047:17;;2092:1;2087;2083;:5;;;;:::i;:::-;:10;2075:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2152:1;2145:8;;;1688:473;;;;;:::o;2638:132::-;2696:7;2723:39;2727:1;2730;2723:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2716:46;;2638:132;;;;:::o;6071:572:0:-;6229:1;6211:20;;:6;:20;;;6203:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;6313:1;6292:23;;:9;:23;;;6284:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;6366:47;6387:6;6395:9;6406:6;6366:20;:47::i;:::-;6447:71;6469:6;6447:71;;;;;;;;;;;;;;;;;:9;:17;6457:6;6447:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;6427:9;:17;6437:6;6427:17;;;;;;;;;;;;;;;:91;;;;6552:32;6577:6;6552:9;:20;6562:9;6552:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;6529:9;:20;6539:9;6529:20;;;;;;;;;;;;;;;:55;;;;6617:9;6600:35;;6609:6;6600:35;;;6628:6;6600:35;;;;;;:::i;:::-;;;;;;;;6071:572;;;:::o;899:135:4:-;942:7;972:14;989:13;:11;:13::i;:::-;972:30;;1020:6;1013:13;;;899:135;:::o;17823:117:0:-;17890:4;17920:12;17913:4;:19;17906:26;;17823:117;;;:::o;18378:1528::-;18417:23;18443:24;18461:4;18443:9;:24::i;:::-;18417:50;;18478:25;18548:12;;18527:18;;18506;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;18478:82;;18571:12;18619:1;18600:15;:20;:46;;;;18645:1;18624:17;:22;18600:46;18597:60;;;18649:7;;;;;18597:60;18712:2;18691:18;;:23;;;;:::i;:::-;18673:15;:41;18670:111;;;18767:2;18746:18;;:23;;;;:::i;:::-;18728:41;;18670:111;18794:23;18879:1;18859:17;18838:18;;18820:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;18794:86;;18891:26;18920:36;18940:15;18920;:19;;:36;;;;:::i;:::-;18891:65;;18970:25;18998:21;18970:49;;19033:36;19050:18;19033:16;:36::i;:::-;19084:18;19105:44;19131:17;19105:21;:25;;:44;;;;:::i;:::-;19084:65;;19163:23;19189:57;19228:17;19189:34;19204:18;;19189:10;:14;;:34;;;;:::i;:::-;:38;;:57;;;;:::i;:::-;19163:83;;19257:17;19277:51;19310:17;19277:28;19292:12;;19277:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;19257:71;;19345:23;19402:9;19384:15;19371:10;:28;;;;:::i;:::-;:40;;;;:::i;:::-;19345:66;;19449:1;19428:18;:22;;;;19482:1;19461:18;:22;;;;19509:1;19494:12;:16;;;;19545:9;;;;;;;;;;;19537:23;;19568:9;19537:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19524:58;;;;;19617:1;19599:15;:19;:42;;;;;19640:1;19622:15;:19;19599:42;19596:210;;;19657:46;19670:15;19687;19657:12;:46::i;:::-;19723:71;19738:18;19758:15;19775:18;;19723:71;;;;;;;;:::i;:::-;;;;;;;;19596:210;19843:15;;;;;;;;;;;19835:29;;19872:21;19835:63;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19822:76;;;;;18406:1500;;;;;;;;;;18378:1528;:::o;20371:511::-;20428:4;20464:15;20447:14;:32;;;;20493:28;20524:4;:14;;;20539:13;;;;;;;;;;;20524:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20493:60;;20567:20;20590:53;20637:5;20590:42;20615:16;;20590:20;:24;;:42;;;;:::i;:::-;:46;;:53;;;;:::i;:::-;20567:76;;20676:1;20661:12;:16;20657:109;;;20693:61;20709:13;;;;;;;;;;;20732:6;20741:12;20693:15;:61::i;:::-;20657:109;20779:19;20816:13;;;;;;;;;;;20779:51;;20841:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20870:4;20863:11;;;;;20371:511;:::o;3267:279:3:-;3353:7;3385:1;3381;:5;3388:12;3373:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3412:9;3428:1;3424;:5;;;;:::i;:::-;3412:17;;3537:1;3530:8;;;3267:279;;;;;:::o;9489:125:0:-;;;;:::o;2081:113:4:-;2126:7;2168:1;2152:18;;:6;;;;;;;;;;;:18;;;:34;;2180:6;;;;;;;;;;;2152:34;;;2173:4;;;;;;;;;;;2152:34;2145:41;;2081:113;:::o;795:136:3:-;853:7;880:43;884:1;887;880:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;873:50;;795:136;;;;:::o;17304:511:0:-;17373:21;17411:1;17397:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17373:40;;17442:4;17424;17429:1;17424:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;17468:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17458:4;17463:1;17458:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;17504:62;17521:4;17536:15;17554:11;17504:8;:62::i;:::-;17580:15;:66;;;17661:11;17687:1;17731:4;17758;17778:15;17580:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17359:456;17304:511;:::o;17948:421::-;18029:62;18046:4;18061:15;18079:11;18029:8;:62::i;:::-;18105:15;:31;;;18144:9;18177:4;18197:11;18223:1;18266;9846:42;18335:15;18105:256;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;17948:421;;:::o;7:99:6:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:60::-;3809:3;3830:5;3823:12;;3781:60;;;:::o;3847:142::-;3897:9;3930:53;3948:34;3957:24;3975:5;3957:24;:::i;:::-;3948:34;:::i;:::-;3930:53;:::i;:::-;3917:66;;3847:142;;;:::o;3995:126::-;4045:9;4078:37;4109:5;4078:37;:::i;:::-;4065:50;;3995:126;;;:::o;4127:153::-;4204:9;4237:37;4268:5;4237:37;:::i;:::-;4224:50;;4127:153;;;:::o;4286:185::-;4400:64;4458:5;4400:64;:::i;:::-;4395:3;4388:77;4286:185;;:::o;4477:276::-;4597:4;4635:2;4624:9;4620:18;4612:26;;4648:98;4743:1;4732:9;4728:17;4719:6;4648:98;:::i;:::-;4477:276;;;;:::o;4759:118::-;4846:24;4864:5;4846:24;:::i;:::-;4841:3;4834:37;4759:118;;:::o;4883:222::-;4976:4;5014:2;5003:9;4999:18;4991:26;;5027:71;5095:1;5084:9;5080:17;5071:6;5027:71;:::i;:::-;4883:222;;;;:::o;5111:329::-;5170:6;5219:2;5207:9;5198:7;5194:23;5190:32;5187:119;;;5225:79;;:::i;:::-;5187:119;5345:1;5370:53;5415:7;5406:6;5395:9;5391:22;5370:53;:::i;:::-;5360:63;;5316:117;5111:329;;;;:::o;5446:619::-;5523:6;5531;5539;5588:2;5576:9;5567:7;5563:23;5559:32;5556:119;;;5594:79;;:::i;:::-;5556:119;5714:1;5739:53;5784:7;5775:6;5764:9;5760:22;5739:53;:::i;:::-;5729:63;;5685:117;5841:2;5867:53;5912:7;5903:6;5892:9;5888:22;5867:53;:::i;:::-;5857:63;;5812:118;5969:2;5995:53;6040:7;6031:6;6020:9;6016:22;5995:53;:::i;:::-;5985:63;;5940:118;5446:619;;;;;:::o;6071:118::-;6158:24;6176:5;6158:24;:::i;:::-;6153:3;6146:37;6071:118;;:::o;6195:222::-;6288:4;6326:2;6315:9;6311:18;6303:26;;6339:71;6407:1;6396:9;6392:17;6383:6;6339:71;:::i;:::-;6195:222;;;;:::o;6423:86::-;6458:7;6498:4;6491:5;6487:16;6476:27;;6423:86;;;:::o;6515:112::-;6598:22;6614:5;6598:22;:::i;:::-;6593:3;6586:35;6515:112;;:::o;6633:214::-;6722:4;6760:2;6749:9;6745:18;6737:26;;6773:67;6837:1;6826:9;6822:17;6813:6;6773:67;:::i;:::-;6633:214;;;;:::o;6853:116::-;6923:21;6938:5;6923:21;:::i;:::-;6916:5;6913:32;6903:60;;6959:1;6956;6949:12;6903:60;6853:116;:::o;6975:133::-;7018:5;7056:6;7043:20;7034:29;;7072:30;7096:5;7072:30;:::i;:::-;6975:133;;;;:::o;7114:613::-;7188:6;7196;7204;7253:2;7241:9;7232:7;7228:23;7224:32;7221:119;;;7259:79;;:::i;:::-;7221:119;7379:1;7404:53;7449:7;7440:6;7429:9;7425:22;7404:53;:::i;:::-;7394:63;;7350:117;7506:2;7532:53;7577:7;7568:6;7557:9;7553:22;7532:53;:::i;:::-;7522:63;;7477:118;7634:2;7660:50;7702:7;7693:6;7682:9;7678:22;7660:50;:::i;:::-;7650:60;;7605:115;7114:613;;;;;:::o;7733:117::-;7842:1;7839;7832:12;7856:117;7965:1;7962;7955:12;7979:117;8088:1;8085;8078:12;8119:568;8192:8;8202:6;8252:3;8245:4;8237:6;8233:17;8229:27;8219:122;;8260:79;;:::i;:::-;8219:122;8373:6;8360:20;8350:30;;8403:18;8395:6;8392:30;8389:117;;;8425:79;;:::i;:::-;8389:117;8539:4;8531:6;8527:17;8515:29;;8593:3;8585:4;8577:6;8573:17;8563:8;8559:32;8556:41;8553:128;;;8600:79;;:::i;:::-;8553:128;8119:568;;;;;:::o;8693:698::-;8785:6;8793;8801;8850:2;8838:9;8829:7;8825:23;8821:32;8818:119;;;8856:79;;:::i;:::-;8818:119;9004:1;8993:9;8989:17;8976:31;9034:18;9026:6;9023:30;9020:117;;;9056:79;;:::i;:::-;9020:117;9169:80;9241:7;9232:6;9221:9;9217:22;9169:80;:::i;:::-;9151:98;;;;8947:312;9298:2;9324:50;9366:7;9357:6;9346:9;9342:22;9324:50;:::i;:::-;9314:60;;9269:115;8693:698;;;;;:::o;9397:323::-;9453:6;9502:2;9490:9;9481:7;9477:23;9473:32;9470:119;;;9508:79;;:::i;:::-;9470:119;9628:1;9653:50;9695:7;9686:6;9675:9;9671:22;9653:50;:::i;:::-;9643:60;;9599:114;9397:323;;;;:::o;9726:468::-;9791:6;9799;9848:2;9836:9;9827:7;9823:23;9819:32;9816:119;;;9854:79;;:::i;:::-;9816:119;9974:1;9999:53;10044:7;10035:6;10024:9;10020:22;9999:53;:::i;:::-;9989:63;;9945:117;10101:2;10127:50;10169:7;10160:6;10149:9;10145:22;10127:50;:::i;:::-;10117:60;;10072:115;9726:468;;;;;:::o;10200:474::-;10268:6;10276;10325:2;10313:9;10304:7;10300:23;10296:32;10293:119;;;10331:79;;:::i;:::-;10293:119;10451:1;10476:53;10521:7;10512:6;10501:9;10497:22;10476:53;:::i;:::-;10466:63;;10422:117;10578:2;10604:53;10649:7;10640:6;10629:9;10625:22;10604:53;:::i;:::-;10594:63;;10549:118;10200:474;;;;;:::o;10680:180::-;10728:77;10725:1;10718:88;10825:4;10822:1;10815:15;10849:4;10846:1;10839:15;10866:320;10910:6;10947:1;10941:4;10937:12;10927:22;;10994:1;10988:4;10984:12;11015:18;11005:81;;11071:4;11063:6;11059:17;11049:27;;11005:81;11133:2;11125:6;11122:14;11102:18;11099:38;11096:84;;11152:18;;:::i;:::-;11096:84;10917:269;10866:320;;;:::o;11192:180::-;11240:77;11237:1;11230:88;11337:4;11334:1;11327:15;11361:4;11358:1;11351:15;11378:410;11418:7;11441:20;11459:1;11441:20;:::i;:::-;11436:25;;11475:20;11493:1;11475:20;:::i;:::-;11470:25;;11530:1;11527;11523:9;11552:30;11570:11;11552:30;:::i;:::-;11541:41;;11731:1;11722:7;11718:15;11715:1;11712:22;11692:1;11685:9;11665:83;11642:139;;11761:18;;:::i;:::-;11642:139;11426:362;11378:410;;;;:::o;11794:180::-;11842:77;11839:1;11832:88;11939:4;11936:1;11929:15;11963:4;11960:1;11953:15;11980:185;12020:1;12037:20;12055:1;12037:20;:::i;:::-;12032:25;;12071:20;12089:1;12071:20;:::i;:::-;12066:25;;12110:1;12100:35;;12115:18;;:::i;:::-;12100:35;12157:1;12154;12150:9;12145:14;;11980:185;;;;:::o;12171:234::-;12311:34;12307:1;12299:6;12295:14;12288:58;12380:17;12375:2;12367:6;12363:15;12356:42;12171:234;:::o;12411:366::-;12553:3;12574:67;12638:2;12633:3;12574:67;:::i;:::-;12567:74;;12650:93;12739:3;12650:93;:::i;:::-;12768:2;12763:3;12759:12;12752:19;;12411:366;;;:::o;12783:419::-;12949:4;12987:2;12976:9;12972:18;12964:26;;13036:9;13030:4;13026:20;13022:1;13011:9;13007:17;13000:47;13064:131;13190:4;13064:131;:::i;:::-;13056:139;;12783:419;;;:::o;13208:238::-;13348:34;13344:1;13336:6;13332:14;13325:58;13417:21;13412:2;13404:6;13400:15;13393:46;13208:238;:::o;13452:366::-;13594:3;13615:67;13679:2;13674:3;13615:67;:::i;:::-;13608:74;;13691:93;13780:3;13691:93;:::i;:::-;13809:2;13804:3;13800:12;13793:19;;13452:366;;;:::o;13824:419::-;13990:4;14028:2;14017:9;14013:18;14005:26;;14077:9;14071:4;14067:20;14063:1;14052:9;14048:17;14041:47;14105:131;14231:4;14105:131;:::i;:::-;14097:139;;13824:419;;;:::o;14249:235::-;14389:34;14385:1;14377:6;14373:14;14366:58;14458:18;14453:2;14445:6;14441:15;14434:43;14249:235;:::o;14490:366::-;14632:3;14653:67;14717:2;14712:3;14653:67;:::i;:::-;14646:74;;14729:93;14818:3;14729:93;:::i;:::-;14847:2;14842:3;14838:12;14831:19;;14490:366;;;:::o;14862:419::-;15028:4;15066:2;15055:9;15051:18;15043:26;;15115:9;15109:4;15105:20;15101:1;15090:9;15086:17;15079:47;15143:131;15269:4;15143:131;:::i;:::-;15135:139;;14862:419;;;:::o;15287:180::-;15335:77;15332:1;15325:88;15432:4;15429:1;15422:15;15456:4;15453:1;15446:15;15473:233;15512:3;15535:24;15553:5;15535:24;:::i;:::-;15526:33;;15581:66;15574:5;15571:77;15568:103;;15651:18;;:::i;:::-;15568:103;15698:1;15691:5;15687:13;15680:20;;15473:233;;;:::o;15712:244::-;15852:34;15848:1;15840:6;15836:14;15829:58;15921:27;15916:2;15908:6;15904:15;15897:52;15712:244;:::o;15962:366::-;16104:3;16125:67;16189:2;16184:3;16125:67;:::i;:::-;16118:74;;16201:93;16290:3;16201:93;:::i;:::-;16319:2;16314:3;16310:12;16303:19;;15962:366;;;:::o;16334:419::-;16500:4;16538:2;16527:9;16523:18;16515:26;;16587:9;16581:4;16577:20;16573:1;16562:9;16558:17;16551:47;16615:131;16741:4;16615:131;:::i;:::-;16607:139;;16334:419;;;:::o;16759:223::-;16899:34;16895:1;16887:6;16883:14;16876:58;16968:6;16963:2;16955:6;16951:15;16944:31;16759:223;:::o;16988:366::-;17130:3;17151:67;17215:2;17210:3;17151:67;:::i;:::-;17144:74;;17227:93;17316:3;17227:93;:::i;:::-;17345:2;17340:3;17336:12;17329:19;;16988:366;;;:::o;17360:419::-;17526:4;17564:2;17553:9;17549:18;17541:26;;17613:9;17607:4;17603:20;17599:1;17588:9;17584:17;17577:47;17641:131;17767:4;17641:131;:::i;:::-;17633:139;;17360:419;;;:::o;17785:240::-;17925:34;17921:1;17913:6;17909:14;17902:58;17994:23;17989:2;17981:6;17977:15;17970:48;17785:240;:::o;18031:366::-;18173:3;18194:67;18258:2;18253:3;18194:67;:::i;:::-;18187:74;;18270:93;18359:3;18270:93;:::i;:::-;18388:2;18383:3;18379:12;18372:19;;18031:366;;;:::o;18403:419::-;18569:4;18607:2;18596:9;18592:18;18584:26;;18656:9;18650:4;18646:20;18642:1;18631:9;18627:17;18620:47;18684:131;18810:4;18684:131;:::i;:::-;18676:139;;18403:419;;;:::o;18828:239::-;18968:34;18964:1;18956:6;18952:14;18945:58;19037:22;19032:2;19024:6;19020:15;19013:47;18828:239;:::o;19073:366::-;19215:3;19236:67;19300:2;19295:3;19236:67;:::i;:::-;19229:74;;19312:93;19401:3;19312:93;:::i;:::-;19430:2;19425:3;19421:12;19414:19;;19073:366;;;:::o;19445:419::-;19611:4;19649:2;19638:9;19634:18;19626:26;;19698:9;19692:4;19688:20;19684:1;19673:9;19669:17;19662:47;19726:131;19852:4;19726:131;:::i;:::-;19718:139;;19445:419;;;:::o;19870:225::-;20010:34;20006:1;19998:6;19994:14;19987:58;20079:8;20074:2;20066:6;20062:15;20055:33;19870:225;:::o;20101:366::-;20243:3;20264:67;20328:2;20323:3;20264:67;:::i;:::-;20257:74;;20340:93;20429:3;20340:93;:::i;:::-;20458:2;20453:3;20449:12;20442:19;;20101:366;;;:::o;20473:419::-;20639:4;20677:2;20666:9;20662:18;20654:26;;20726:9;20720:4;20716:20;20712:1;20701:9;20697:17;20690:47;20754:131;20880:4;20754:131;:::i;:::-;20746:139;;20473:419;;;:::o;20898:191::-;20938:3;20957:20;20975:1;20957:20;:::i;:::-;20952:25;;20991:20;21009:1;20991:20;:::i;:::-;20986:25;;21034:1;21031;21027:9;21020:16;;21055:3;21052:1;21049:10;21046:36;;;21062:18;;:::i;:::-;21046:36;20898:191;;;;:::o;21095:182::-;21235:34;21231:1;21223:6;21219:14;21212:58;21095:182;:::o;21283:366::-;21425:3;21446:67;21510:2;21505:3;21446:67;:::i;:::-;21439:74;;21522:93;21611:3;21522:93;:::i;:::-;21640:2;21635:3;21631:12;21624:19;;21283:366;;;:::o;21655:419::-;21821:4;21859:2;21848:9;21844:18;21836:26;;21908:9;21902:4;21898:20;21894:1;21883:9;21879:17;21872:47;21936:131;22062:4;21936:131;:::i;:::-;21928:139;;21655:419;;;:::o;22080:229::-;22220:34;22216:1;22208:6;22204:14;22197:58;22289:12;22284:2;22276:6;22272:15;22265:37;22080:229;:::o;22315:366::-;22457:3;22478:67;22542:2;22537:3;22478:67;:::i;:::-;22471:74;;22554:93;22643:3;22554:93;:::i;:::-;22672:2;22667:3;22663:12;22656:19;;22315:366;;;:::o;22687:419::-;22853:4;22891:2;22880:9;22876:18;22868:26;;22940:9;22934:4;22930:20;22926:1;22915:9;22911:17;22904:47;22968:131;23094:4;22968:131;:::i;:::-;22960:139;;22687:419;;;:::o;23112:143::-;23169:5;23200:6;23194:13;23185:22;;23216:33;23243:5;23216:33;:::i;:::-;23112:143;;;;:::o;23261:351::-;23331:6;23380:2;23368:9;23359:7;23355:23;23351:32;23348:119;;;23386:79;;:::i;:::-;23348:119;23506:1;23531:64;23587:7;23578:6;23567:9;23563:22;23531:64;:::i;:::-;23521:74;;23477:128;23261:351;;;;:::o;23618:177::-;23758:29;23754:1;23746:6;23742:14;23735:53;23618:177;:::o;23801:366::-;23943:3;23964:67;24028:2;24023:3;23964:67;:::i;:::-;23957:74;;24040:93;24129:3;24040:93;:::i;:::-;24158:2;24153:3;24149:12;24142:19;;23801:366;;;:::o;24173:419::-;24339:4;24377:2;24366:9;24362:18;24354:26;;24426:9;24420:4;24416:20;24412:1;24401:9;24397:17;24390:47;24454:131;24580:4;24454:131;:::i;:::-;24446:139;;24173:419;;;:::o;24598:223::-;24738:34;24734:1;24726:6;24722:14;24715:58;24807:6;24802:2;24794:6;24790:15;24783:31;24598:223;:::o;24827:366::-;24969:3;24990:67;25054:2;25049:3;24990:67;:::i;:::-;24983:74;;25066:93;25155:3;25066:93;:::i;:::-;25184:2;25179:3;25175:12;25168:19;;24827:366;;;:::o;25199:419::-;25365:4;25403:2;25392:9;25388:18;25380:26;;25452:9;25446:4;25442:20;25438:1;25427:9;25423:17;25416:47;25480:131;25606:4;25480:131;:::i;:::-;25472:139;;25199:419;;;:::o;25624:221::-;25764:34;25760:1;25752:6;25748:14;25741:58;25833:4;25828:2;25820:6;25816:15;25809:29;25624:221;:::o;25851:366::-;25993:3;26014:67;26078:2;26073:3;26014:67;:::i;:::-;26007:74;;26090:93;26179:3;26090:93;:::i;:::-;26208:2;26203:3;26199:12;26192:19;;25851:366;;;:::o;26223:419::-;26389:4;26427:2;26416:9;26412:18;26404:26;;26476:9;26470:4;26466:20;26462:1;26451:9;26447:17;26440:47;26504:131;26630:4;26504:131;:::i;:::-;26496:139;;26223:419;;;:::o;26648:182::-;26788:34;26784:1;26776:6;26772:14;26765:58;26648:182;:::o;26836:366::-;26978:3;26999:67;27063:2;27058:3;26999:67;:::i;:::-;26992:74;;27075:93;27164:3;27075:93;:::i;:::-;27193:2;27188:3;27184:12;27177:19;;26836:366;;;:::o;27208:419::-;27374:4;27412:2;27401:9;27397:18;27389:26;;27461:9;27455:4;27451:20;27447:1;27436:9;27432:17;27425:47;27489:131;27615:4;27489:131;:::i;:::-;27481:139;;27208:419;;;:::o;27633:224::-;27773:34;27769:1;27761:6;27757:14;27750:58;27842:7;27837:2;27829:6;27825:15;27818:32;27633:224;:::o;27863:366::-;28005:3;28026:67;28090:2;28085:3;28026:67;:::i;:::-;28019:74;;28102:93;28191:3;28102:93;:::i;:::-;28220:2;28215:3;28211:12;28204:19;;27863:366;;;:::o;28235:419::-;28401:4;28439:2;28428:9;28424:18;28416:26;;28488:9;28482:4;28478:20;28474:1;28463:9;28459:17;28452:47;28516:131;28642:4;28516:131;:::i;:::-;28508:139;;28235:419;;;:::o;28660:222::-;28800:34;28796:1;28788:6;28784:14;28777:58;28869:5;28864:2;28856:6;28852:15;28845:30;28660:222;:::o;28888:366::-;29030:3;29051:67;29115:2;29110:3;29051:67;:::i;:::-;29044:74;;29127:93;29216:3;29127:93;:::i;:::-;29245:2;29240:3;29236:12;29229:19;;28888:366;;;:::o;29260:419::-;29426:4;29464:2;29453:9;29449:18;29441:26;;29513:9;29507:4;29503:20;29499:1;29488:9;29484:17;29477:47;29541:131;29667:4;29541:131;:::i;:::-;29533:139;;29260:419;;;:::o;29685:172::-;29825:24;29821:1;29813:6;29809:14;29802:48;29685:172;:::o;29863:366::-;30005:3;30026:67;30090:2;30085:3;30026:67;:::i;:::-;30019:74;;30102:93;30191:3;30102:93;:::i;:::-;30220:2;30215:3;30211:12;30204:19;;29863:366;;;:::o;30235:419::-;30401:4;30439:2;30428:9;30424:18;30416:26;;30488:9;30482:4;30478:20;30474:1;30463:9;30459:17;30452:47;30516:131;30642:4;30516:131;:::i;:::-;30508:139;;30235:419;;;:::o;30660:241::-;30800:34;30796:1;30788:6;30784:14;30777:58;30869:24;30864:2;30856:6;30852:15;30845:49;30660:241;:::o;30907:366::-;31049:3;31070:67;31134:2;31129:3;31070:67;:::i;:::-;31063:74;;31146:93;31235:3;31146:93;:::i;:::-;31264:2;31259:3;31255:12;31248:19;;30907:366;;;:::o;31279:419::-;31445:4;31483:2;31472:9;31468:18;31460:26;;31532:9;31526:4;31522:20;31518:1;31507:9;31503:17;31496:47;31560:131;31686:4;31560:131;:::i;:::-;31552:139;;31279:419;;;:::o;31704:169::-;31844:21;31840:1;31832:6;31828:14;31821:45;31704:169;:::o;31879:366::-;32021:3;32042:67;32106:2;32101:3;32042:67;:::i;:::-;32035:74;;32118:93;32207:3;32118:93;:::i;:::-;32236:2;32231:3;32227:12;32220:19;;31879:366;;;:::o;32251:419::-;32417:4;32455:2;32444:9;32440:18;32432:26;;32504:9;32498:4;32494:20;32490:1;32479:9;32475:17;32468:47;32532:131;32658:4;32532:131;:::i;:::-;32524:139;;32251:419;;;:::o;32676:248::-;32816:34;32812:1;32804:6;32800:14;32793:58;32885:31;32880:2;32872:6;32868:15;32861:56;32676:248;:::o;32930:366::-;33072:3;33093:67;33157:2;33152:3;33093:67;:::i;:::-;33086:74;;33169:93;33258:3;33169:93;:::i;:::-;33287:2;33282:3;33278:12;33271:19;;32930:366;;;:::o;33302:419::-;33468:4;33506:2;33495:9;33491:18;33483:26;;33555:9;33549:4;33545:20;33541:1;33530:9;33526:17;33519:47;33583:131;33709:4;33583:131;:::i;:::-;33575:139;;33302:419;;;:::o;33727:194::-;33767:4;33787:20;33805:1;33787:20;:::i;:::-;33782:25;;33821:20;33839:1;33821:20;:::i;:::-;33816:25;;33865:1;33862;33858:9;33850:17;;33889:1;33883:4;33880:11;33877:37;;;33894:18;;:::i;:::-;33877:37;33727:194;;;;:::o;33927:220::-;34067:34;34063:1;34055:6;34051:14;34044:58;34136:3;34131:2;34123:6;34119:15;34112:28;33927:220;:::o;34153:366::-;34295:3;34316:67;34380:2;34375:3;34316:67;:::i;:::-;34309:74;;34392:93;34481:3;34392:93;:::i;:::-;34510:2;34505:3;34501:12;34494:19;;34153:366;;;:::o;34525:419::-;34691:4;34729:2;34718:9;34714:18;34706:26;;34778:9;34772:4;34768:20;34764:1;34753:9;34749:17;34742:47;34806:131;34932:4;34806:131;:::i;:::-;34798:139;;34525:419;;;:::o;34950:147::-;35051:11;35088:3;35073:18;;34950:147;;;;:::o;35103:114::-;;:::o;35223:398::-;35382:3;35403:83;35484:1;35479:3;35403:83;:::i;:::-;35396:90;;35495:93;35584:3;35495:93;:::i;:::-;35613:1;35608:3;35604:11;35597:18;;35223:398;;;:::o;35627:379::-;35811:3;35833:147;35976:3;35833:147;:::i;:::-;35826:154;;35997:3;35990:10;;35627:379;;;:::o;36012:442::-;36161:4;36199:2;36188:9;36184:18;36176:26;;36212:71;36280:1;36269:9;36265:17;36256:6;36212:71;:::i;:::-;36293:72;36361:2;36350:9;36346:18;36337:6;36293:72;:::i;:::-;36375;36443:2;36432:9;36428:18;36419:6;36375:72;:::i;:::-;36012:442;;;;;;:::o;36460:180::-;36508:77;36505:1;36498:88;36605:4;36602:1;36595:15;36629:4;36626:1;36619:15;36646:143;36703:5;36734:6;36728:13;36719:22;;36750:33;36777:5;36750:33;:::i;:::-;36646:143;;;;:::o;36795:351::-;36865:6;36914:2;36902:9;36893:7;36889:23;36885:32;36882:119;;;36920:79;;:::i;:::-;36882:119;37040:1;37065:64;37121:7;37112:6;37101:9;37097:22;37065:64;:::i;:::-;37055:74;;37011:128;36795:351;;;;:::o;37152:85::-;37197:7;37226:5;37215:16;;37152:85;;;:::o;37243:158::-;37301:9;37334:61;37352:42;37361:32;37387:5;37361:32;:::i;:::-;37352:42;:::i;:::-;37334:61;:::i;:::-;37321:74;;37243:158;;;:::o;37407:147::-;37502:45;37541:5;37502:45;:::i;:::-;37497:3;37490:58;37407:147;;:::o;37560:114::-;37627:6;37661:5;37655:12;37645:22;;37560:114;;;:::o;37680:184::-;37779:11;37813:6;37808:3;37801:19;37853:4;37848:3;37844:14;37829:29;;37680:184;;;;:::o;37870:132::-;37937:4;37960:3;37952:11;;37990:4;37985:3;37981:14;37973:22;;37870:132;;;:::o;38008:108::-;38085:24;38103:5;38085:24;:::i;:::-;38080:3;38073:37;38008:108;;:::o;38122:179::-;38191:10;38212:46;38254:3;38246:6;38212:46;:::i;:::-;38290:4;38285:3;38281:14;38267:28;;38122:179;;;;:::o;38307:113::-;38377:4;38409;38404:3;38400:14;38392:22;;38307:113;;;:::o;38456:732::-;38575:3;38604:54;38652:5;38604:54;:::i;:::-;38674:86;38753:6;38748:3;38674:86;:::i;:::-;38667:93;;38784:56;38834:5;38784:56;:::i;:::-;38863:7;38894:1;38879:284;38904:6;38901:1;38898:13;38879:284;;;38980:6;38974:13;39007:63;39066:3;39051:13;39007:63;:::i;:::-;39000:70;;39093:60;39146:6;39093:60;:::i;:::-;39083:70;;38939:224;38926:1;38923;38919:9;38914:14;;38879:284;;;38883:14;39179:3;39172:10;;38580:608;;;38456:732;;;;:::o;39194:831::-;39457:4;39495:3;39484:9;39480:19;39472:27;;39509:71;39577:1;39566:9;39562:17;39553:6;39509:71;:::i;:::-;39590:80;39666:2;39655:9;39651:18;39642:6;39590:80;:::i;:::-;39717:9;39711:4;39707:20;39702:2;39691:9;39687:18;39680:48;39745:108;39848:4;39839:6;39745:108;:::i;:::-;39737:116;;39863:72;39931:2;39920:9;39916:18;39907:6;39863:72;:::i;:::-;39945:73;40013:3;40002:9;39998:19;39989:6;39945:73;:::i;:::-;39194:831;;;;;;;;:::o;40031:807::-;40280:4;40318:3;40307:9;40303:19;40295:27;;40332:71;40400:1;40389:9;40385:17;40376:6;40332:71;:::i;:::-;40413:72;40481:2;40470:9;40466:18;40457:6;40413:72;:::i;:::-;40495:80;40571:2;40560:9;40556:18;40547:6;40495:80;:::i;:::-;40585;40661:2;40650:9;40646:18;40637:6;40585:80;:::i;:::-;40675:73;40743:3;40732:9;40728:19;40719:6;40675:73;:::i;:::-;40758;40826:3;40815:9;40811:19;40802:6;40758:73;:::i;:::-;40031:807;;;;;;;;;:::o;40844:663::-;40932:6;40940;40948;40997:2;40985:9;40976:7;40972:23;40968:32;40965:119;;;41003:79;;:::i;:::-;40965:119;41123:1;41148:64;41204:7;41195:6;41184:9;41180:22;41148:64;:::i;:::-;41138:74;;41094:128;41261:2;41287:64;41343:7;41334:6;41323:9;41319:22;41287:64;:::i;:::-;41277:74;;41232:129;41400:2;41426:64;41482:7;41473:6;41462:9;41458:22;41426:64;:::i;:::-;41416:74;;41371:129;40844:663;;;;;:::o

Swarm Source

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