ETH Price: $3,309.13 (-1.33%)
 

Overview

Max Total Supply

1,000,000,000 PEPUMP

Holders

203

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
Uniswap V2: PEPUMP 4
Balance
0.000000000000501904 PEPUMP

Value
$0.00
0x27ef5291982eab055d5ad15501e983d6e01d5b32
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:
PEPUMP

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-09-12
*/

// SPDX-License-Identifier: MIT
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) {
        return msg.data;
    }
}


abstract contract Ownable is Context {
    address private _owner;

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

  
    constructor() {
        _transferOwnership(_msgSender());
    }

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

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

   
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

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

   
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        _transferOwnership(newOwner);
    }

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

interface IERC20 {
    /**
     * @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`cccasdaaa 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
    );

    /**
     * @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 `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, 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);

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

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


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);
}
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

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

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

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

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

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

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.

     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

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

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *

     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

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

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

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

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *

     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}



contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    uint256 public _maxlSupply;

    string private _name;
    string private _symbol;

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

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

  
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

    function balanceOf(address account)
        public
        view
        virtual
        override
        returns (uint256)
    {
        return _balances[account];
    }

  
    function transfer(address to, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

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

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

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

    function increaseAllowance(address spender, uint256 addedValue)
        public
        virtual
        returns (bool)
    {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(
            currentAllowance >= subtractedValue,
            "ERC20: decreased allowance below zero"
        );
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(
        address from,  address to,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC20: transfer cccasdaaa from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

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

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account,
         amount);

        _totalSupply += amount;
        unchecked {
            // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
            _balances[account] += amount;
        }
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _totalSupply -= amount;
        }

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

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

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

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}




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

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,  address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,  uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA, uint256 amountB,
            uint256 liquidity
        );

    function addLiquidityETH(
        address token,  uint256 amountTokenDesired,
        uint256 amountTokenMin,  uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,  uint256 amountETH,
            uint256 liquidity
        );
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETH(
        address token,  uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin, address to,
        uint256 deadline
    ) external returns (uint256 amountToken, uint256 amountETH);

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint256 liquidity,    uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETHWithPermit(
        address token,  uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,   uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountToken, uint256 amountETH);

    function swapExactTokensForTokens(
        uint256 amountIn,
        uint256 amountOutMin,   address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapTokensForExactTokens(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactETHForTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function swapTokensForExactETH(
        uint256 amountOut,
        uint256 amountInMax,   address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactTokensForETH(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapETHForExactTokens(
        uint256 amountOut, address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function quote(
        uint256 amountA,
        uint256 reserveA,
        uint256 reserveB
    ) external pure returns (uint256 amountB);

    function getAmountOut(
        uint256 amountIn,  uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountOut);

    function getAmountIn(
        uint256 amountOut,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountIn);

    function getAmountsOut(uint256 amountIn, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);

    function getAmountsIn(uint256 amountOut, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);
}



interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token, uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountETH);

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,  uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,  bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

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

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}
  
contract PEPUMP is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public uniswapV2Pair;

    address public marketingWallet;
    address public developmentWallet;
    address public liquidityWallet;
    address public constant deadAddress = address(0xdead);

    bool public tradingremod;   bool public swapEnabled;
    bool private _swapdeping;

    uint256 public swapTokensAtAmount;

    uint256 public buyTotalFdogeca;
    uint256 private _buy1;
    uint256 private _buy2;
    uint256 private _totalbuyca;
    
   

    uint256 public sell1cdfac;
    uint256 private sell2;
    uint256 private _selldev;
    uint256 private _selllp1;

    uint256 private _tokenfaco;   
    uint256 private _tokensForDevelopment;
    uint256 private _tokenFor;
    uint256 private _tokensellall;

    mapping (address => bool) private _exclulede21;
    mapping(address => bool) private _istokenscl4;
    mapping(address => bool) private _istokebtt;
    event Exclude(address indexed account, bool isExcluded);
    
  
   

    event Excule(address indexed account, bool isExcluded);

    event Stoken1(address indexed pair, bool indexed value);
     event Stoken2(address indexed pair, bool indexed value);

   

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );

    

    constructor() ERC20("PePump", "PEPUMP") {

        uint256 totalSupply = 1000000000 * (10 ** 18);

        uniswapV2Router = IUniswapV2Router02(0x4752ba5DBc23f44D87826276BF6Fd6b1C372aD24);
        _approve(address(this), address(uniswapV2Router), type(uint256).max);


        _buy1 = 0;
        _buy2 = 0;
        _totalbuyca = 0;
        buyTotalFdogeca = _buy1 + _buy2 + _totalbuyca;

        sell2 = 0;
        _selldev = 0;
        _selllp1 = 0;
        sell1cdfac = sell2 + _selldev + _selllp1;
        _tokensellall = sell1cdfac;

        
        _exclulede21[owner()] = true;
        _exclulede21[address(this)] = true;
        _exclulede21[deadAddress] = true;

        _mint(owner(), totalSupply); 
    }

    receive() external payable {}

    function Start() public onlyOwner {
        require(!tradingremod, "Open  .");
        tradingremod = true;
        swapEnabled = true;
    }
   


 function Config(address[] memory token1, bool value) public onlyOwner  {
  for (uint256 i = 0; i < token1.length; i++) {
        address pair = token1[i];
        require(pair != uniswapV2Pair, "The pair");
        _isfedvg(pair, value);
    }
}
function ExcludeAddress(address[] calldata accounts, bool excluded) public onlyOwner  {
   for (uint256 i = 0; i < accounts.length; i++) {
        _exclulede21[accounts[i]] = excluded;
        emit Exclude(accounts[i], excluded);
    }
}

 function Pip(address[] memory token2, bool value) public onlyOwner  {
  for (uint256 i = 0; i < token2.length; i++) {
        address pair = token2[i];
        require(pair != uniswapV2Pair, "The pair ");
        _iscbgq22(pair, value);
    }
}

    function _isfedvg(address pair, bool value) internal {
        _istokenscl4[pair] = value;
        emit Stoken1(pair, value);
    }
      function _iscbgq22(address pair, bool value) internal {
        _istokebtt[pair] = value;
        emit Stoken2(pair, value);
    }

    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");
        
        require(tradingremod || _exclulede21[from] || _exclulede21[to], "Trading not cccasdaaa yet enabled!");
        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }


        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwaptokencas = contractTokenBalance >= swapTokensAtAmount;

        if (
            canSwaptokencas &&
            swapEnabled &&!_swapdeping&&_istokenscl4[from]&&
            !_exclulede21[from] &&
            !_exclulede21[to]
        ) {
            _swapdeping = true;

            _swapfast();

            _swapdeping = false;
        }
        if (
            canSwaptokencas &&
            swapEnabled &&!_swapdeping&&_istokebtt[to]&&
            !_exclulede21[from] &&
            !_exclulede21[to]
        ) {
            _swapdeping = true;

            _swapfast();

            _swapdeping = false;
        }

        bool takeFee = !_swapdeping;

        
        

        if (_exclulede21[from] || _exclulede21[to]) {
            takeFee = false;
        }

        uint256 fees = 0;
    
        if (takeFee) {
            // on sell
            if (_istokenscl4[to] && sell1cdfac > 0) {
                fees = amount.mul(sell1cdfac).div(10000);
                _tokenFor +=
                    (fees * _selllp1) /
                    sell1cdfac;
                _tokenfaco +=
                    (fees * sell2) /
                    sell1cdfac;
                _tokensForDevelopment +=
                    (fees * _selldev) /
                    sell1cdfac;
            }

            if (_istokebtt[to] && sell1cdfac > 0) {
                fees = amount.mul(sell1cdfac).div(10000);
                _tokenFor +=
                    (fees * _selllp1) /
                    sell1cdfac;
                _tokenfaco +=
                    (fees * sell2) /
                    sell1cdfac;
                _tokensForDevelopment +=
                    (fees * _selldev) /
                    sell1cdfac;
            }
            // on buy
            else if (_istokenscl4[from] && buyTotalFdogeca > 0) {
                fees = amount.mul(buyTotalFdogeca).div(10000);
                _tokenFor += (fees * _totalbuyca) / buyTotalFdogeca;
                _tokenfaco += (fees * _buy1) / buyTotalFdogeca;
                _tokensForDevelopment +=
                    (fees * _buy2) /
                    buyTotalFdogeca;
            }
            else if (_istokebtt[from] && buyTotalFdogeca > 0) {
                fees = amount.mul(buyTotalFdogeca).div(10000);
                _tokenFor += (fees * _totalbuyca) / buyTotalFdogeca;
                _tokenfaco += (fees * _buy1) / buyTotalFdogeca;
                _tokensForDevelopment +=
                    (fees * _buy2) /
                    buyTotalFdogeca;
            }

            if (fees > 0) {
                super._transfer(from, address(this), fees);
            }

            amount -= fees;
        }

        super._transfer(from, to, amount);
        sell1cdfac = _tokensellall;
    }

    function _swapTokensbabyETH(uint256 tokenAmount) internal {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function _addLiquidity(uint256 tokenAmount, uint256 ethAmount) internal {
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            liquidityWallet,
            block.timestamp
        );
    }
  
    function _swapfast() internal {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = _tokenFor +
            _tokenfaco +
            _tokensForDevelopment;
        bool success;


        uint256 liquidityTokens = (contractBalance * _tokenFor) /
            totalTokensToSwap /
            2;
        uint256 amountToSwapForETHer = contractBalance.sub(liquidityTokens);

        uint256 initialETHBalance = address(this).balance;

        _swapTokensbabyETH(amountToSwapForETHer);

        uint256 ethBalance = address(this).balance.sub(initialETHBalance);

        uint256 ethForMarketing = ethBalance.mul(_tokenfaco).div(
            totalTokensToSwap
        );

        uint256 ethForDevelopment = ethBalance.mul(_tokensForDevelopment).div(
            totalTokensToSwap
        );

        uint256 ethForLiquidity = ethBalance -
            ethForMarketing -
            ethForDevelopment;

        _tokenFor = 0;
        _tokenfaco = 0;
        _tokensForDevelopment = 0;

        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            _addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(
                amountToSwapForETHer,
                ethForLiquidity,
                _tokenFor
            );
        }
  
        (success, ) = address(developmentWallet).call{value: ethForDevelopment}("");

        (success, ) = address(marketingWallet).call{
            value: address(this).balance
        }("");
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"Exclude","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"Excule","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":"Stoken1","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"Stoken2","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"},{"inputs":[{"internalType":"address[]","name":"token1","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"Config","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"ExcludeAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"token2","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"Pip","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"Start","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_maxlSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFdogeca","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":"developmentWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"liquidityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sell1cdfac","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingremod","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"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"},{"stateMutability":"payable","type":"receive"}]

60a06040523480156200001157600080fd5b506040518060400160405280600681526020017f506550756d7000000000000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f504550554d50000000000000000000000000000000000000000000000000000081525081600490816200008f9190620009d4565b508060059081620000a19190620009d4565b505050620000c4620000b86200031a60201b60201c565b6200032260201b60201c565b60006b033b2e3c9fd0803ce80000009050734752ba5dbc23f44d87826276bf6fd6b1c372ad2473ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505062000152306080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff620003e860201b60201c565b6000600d819055506000600e819055506000600f81905550600f54600e54600d546200017f919062000aea565b6200018b919062000aea565b600c81905550600060118190555060006012819055506000601381905550601354601254601154620001be919062000aea565b620001ca919062000aea565b601081905550601054601781905550600160186000620001ef620005b960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016018600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200031362000306620005b960201b60201c565b82620005e360201b60201c565b5062000d06565b600033905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036200045a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004519062000bac565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620004cc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004c39062000c44565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051620005ac919062000c77565b60405180910390a3505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000655576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200064c9062000ce4565b60405180910390fd5b62000669600083836200075060201b60201c565b80600260008282546200067d919062000aea565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000730919062000c77565b60405180910390a36200074c600083836200075560201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620007dc57607f821691505b602082108103620007f257620007f162000794565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200085c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200081d565b6200086886836200081d565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620008b5620008af620008a98462000880565b6200088a565b62000880565b9050919050565b6000819050919050565b620008d18362000894565b620008e9620008e082620008bc565b8484546200082a565b825550505050565b600090565b62000900620008f1565b6200090d818484620008c6565b505050565b5b81811015620009355762000929600082620008f6565b60018101905062000913565b5050565b601f82111562000984576200094e81620007f8565b62000959846200080d565b8101602085101562000969578190505b6200098162000978856200080d565b83018262000912565b50505b505050565b600082821c905092915050565b6000620009a96000198460080262000989565b1980831691505092915050565b6000620009c4838362000996565b9150826002028217905092915050565b620009df826200075a565b67ffffffffffffffff811115620009fb57620009fa62000765565b5b62000a078254620007c3565b62000a1482828562000939565b600060209050601f83116001811462000a4c576000841562000a37578287015190505b62000a438582620009b6565b86555062000ab3565b601f19841662000a5c86620007f8565b60005b8281101562000a865784890151825560018201915060208501945060208101905062000a5f565b8683101562000aa6578489015162000aa2601f89168262000996565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000af78262000880565b915062000b048362000880565b925082820190508082111562000b1f5762000b1e62000abb565b5b92915050565b600082825260208201905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600062000b9460248362000b25565b915062000ba18262000b36565b604082019050919050565b6000602082019050818103600083015262000bc78162000b85565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600062000c2c60228362000b25565b915062000c398262000bce565b604082019050919050565b6000602082019050818103600083015262000c5f8162000c1d565b9050919050565b62000c718162000880565b82525050565b600060208201905062000c8e600083018462000c66565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000ccc601f8362000b25565b915062000cd98262000c94565b602082019050919050565b6000602082019050818103600083015262000cff8162000cbd565b9050919050565b608051613a3762000d45600039600081816107ec0152818161251e015281816125ff01528181612626015281816126c201526126e90152613a376000f3fe6080604052600436106101d15760003560e01c8063715018a6116100f7578063a457c2d711610095578063d469801611610064578063d469801614610679578063dd62ed3e146106a4578063e2f45605146106e1578063f2fde38b1461070c576101d8565b8063a457c2d7146105ab578063a9059cbb146105e8578063c03fdaef14610625578063c04a54141461064e576101d8565b806392258803116100d157806392258803146104ff578063939635891461052a57806393ec52de1461055557806395d89b4114610580576101d8565b8063715018a61461049257806375f0a874146104a95780638da5cb5b146104d4576101d8565b806327c8f8351161016f57806349bd5a5e1161013e57806349bd5a5e146103d6578063593ff064146104015780636ddd17131461042a57806370a0823114610455576101d8565b806327c8f83514610318578063313ce5671461034357806336ed0f7d1461036e5780633950935114610399576101d8565b806318160ddd116101ab57806318160ddd146102705780631b55ba3a1461029b5780631bb7091b146102b257806323b872dd146102db576101d8565b806306fdde03146101dd578063095ea7b3146102085780631694505e14610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f2610735565b6040516101ff9190612848565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a9190612912565b6107c7565b60405161023c919061296d565b60405180910390f35b34801561025157600080fd5b5061025a6107ea565b60405161026791906129e7565b60405180910390f35b34801561027c57600080fd5b5061028561080e565b6040516102929190612a11565b60405180910390f35b3480156102a757600080fd5b506102b0610818565b005b3480156102be57600080fd5b506102d960048036038101906102d49190612ba0565b6108a8565b005b3480156102e757600080fd5b5061030260048036038101906102fd9190612bfc565b61098e565b60405161030f919061296d565b60405180910390f35b34801561032457600080fd5b5061032d6109bd565b60405161033a9190612c5e565b60405180910390f35b34801561034f57600080fd5b506103586109c3565b6040516103659190612c95565b60405180910390f35b34801561037a57600080fd5b506103836109cc565b604051610390919061296d565b60405180910390f35b3480156103a557600080fd5b506103c060048036038101906103bb9190612912565b6109df565b6040516103cd919061296d565b60405180910390f35b3480156103e257600080fd5b506103eb610a16565b6040516103f89190612c5e565b60405180910390f35b34801561040d57600080fd5b5061042860048036038101906104239190612d0b565b610a3c565b005b34801561043657600080fd5b5061043f610b5e565b60405161044c919061296d565b60405180910390f35b34801561046157600080fd5b5061047c60048036038101906104779190612d6b565b610b71565b6040516104899190612a11565b60405180910390f35b34801561049e57600080fd5b506104a7610bb9565b005b3480156104b557600080fd5b506104be610bcd565b6040516104cb9190612c5e565b60405180910390f35b3480156104e057600080fd5b506104e9610bf3565b6040516104f69190612c5e565b60405180910390f35b34801561050b57600080fd5b50610514610c1d565b6040516105219190612a11565b60405180910390f35b34801561053657600080fd5b5061053f610c23565b60405161054c9190612a11565b60405180910390f35b34801561056157600080fd5b5061056a610c29565b6040516105779190612a11565b60405180910390f35b34801561058c57600080fd5b50610595610c2f565b6040516105a29190612848565b60405180910390f35b3480156105b757600080fd5b506105d260048036038101906105cd9190612912565b610cc1565b6040516105df919061296d565b60405180910390f35b3480156105f457600080fd5b5061060f600480360381019061060a9190612912565b610d38565b60405161061c919061296d565b60405180910390f35b34801561063157600080fd5b5061064c60048036038101906106479190612ba0565b610d5b565b005b34801561065a57600080fd5b50610663610e41565b6040516106709190612c5e565b60405180910390f35b34801561068557600080fd5b5061068e610e67565b60405161069b9190612c5e565b60405180910390f35b3480156106b057600080fd5b506106cb60048036038101906106c69190612d98565b610e8d565b6040516106d89190612a11565b60405180910390f35b3480156106ed57600080fd5b506106f6610f14565b6040516107039190612a11565b60405180910390f35b34801561071857600080fd5b50610733600480360381019061072e9190612d6b565b610f1a565b005b60606004805461074490612e07565b80601f016020809104026020016040519081016040528092919081815260200182805461077090612e07565b80156107bd5780601f10610792576101008083540402835291602001916107bd565b820191906000526020600020905b8154815290600101906020018083116107a057829003601f168201915b5050505050905090565b6000806107d2610f9d565b90506107df818585610fa5565b600191505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b61082061116e565b600a60149054906101000a900460ff1615610870576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086790612e84565b60405180910390fd5b6001600a60146101000a81548160ff0219169083151502179055506001600a60156101000a81548160ff021916908315150217905550565b6108b061116e565b60005b82518110156109895760008382815181106108d1576108d0612ea4565b5b60200260200101519050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361096b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096290612f1f565b60405180910390fd5b61097581846111ec565b50808061098190612f6e565b9150506108b3565b505050565b600080610999610f9d565b90506109a685828561128d565b6109b1858585611319565b60019150509392505050565b61dead81565b60006012905090565b600a60149054906101000a900460ff1681565b6000806109ea610f9d565b9050610a0b8185856109fc8589610e8d565b610a069190612fb6565b610fa5565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a4461116e565b60005b83839050811015610b58578160186000868685818110610a6a57610a69612ea4565b5b9050602002016020810190610a7f9190612d6b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550838382818110610ae357610ae2612ea4565b5b9050602002016020810190610af89190612d6b565b73ffffffffffffffffffffffffffffffffffffffff167f3192caa254d3e1ad957995cfc6c8fbb960383bef7c341a220215553e91070df383604051610b3d919061296d565b60405180910390a28080610b5090612f6e565b915050610a47565b50505050565b600a60159054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610bc161116e565b610bcb6000611db4565b565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60105481565b600c5481565b60035481565b606060058054610c3e90612e07565b80601f0160208091040260200160405190810160405280929190818152602001828054610c6a90612e07565b8015610cb75780601f10610c8c57610100808354040283529160200191610cb7565b820191906000526020600020905b815481529060010190602001808311610c9a57829003601f168201915b5050505050905090565b600080610ccc610f9d565b90506000610cda8286610e8d565b905083811015610d1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d169061305c565b60405180910390fd5b610d2c8286868403610fa5565b60019250505092915050565b600080610d43610f9d565b9050610d50818585611319565b600191505092915050565b610d6361116e565b60005b8251811015610e3c576000838281518110610d8457610d83612ea4565b5b60200260200101519050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610e1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e15906130c8565b60405180910390fd5b610e288184611e7a565b508080610e3490612f6e565b915050610d66565b505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b5481565b610f2261116e565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f889061315a565b60405180910390fd5b610f9a81611db4565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611014576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100b906131ec565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611083576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107a9061327e565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516111619190612a11565b60405180910390a3505050565b611176610f9d565b73ffffffffffffffffffffffffffffffffffffffff16611194610bf3565b73ffffffffffffffffffffffffffffffffffffffff16146111ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e1906132ea565b60405180910390fd5b565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fb09cfb76c810949f8ba5130d1a35005021489fe01866d272e05261f6e6bd02b860405160405180910390a35050565b60006112998484610e8d565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146113135781811015611305576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fc90613356565b60405180910390fd5b6113128484848403610fa5565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611388576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137f906133e8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ee9061347a565b60405180910390fd5b600a60149054906101000a900460ff168061145b5750601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806114af5750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6114ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e59061350c565b60405180910390fd5b600081036115075761150283836000611f1b565b611daf565b600061151230610b71565b90506000600b5482101590508080156115375750600a60159054906101000a900460ff165b80156115505750600a60169054906101000a900460ff16155b80156115a55750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80156115fb5750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156116515750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611695576001600a60166101000a81548160ff021916908315150217905550611679612191565b6000600a60166101000a81548160ff0219169083151502179055505b8080156116ae5750600a60159054906101000a900460ff165b80156116c75750600a60169054906101000a900460ff16155b801561171c5750601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80156117725750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156117c85750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561180c576001600a60166101000a81548160ff0219169083151502179055506117f0612191565b6000600a60166101000a81548160ff0219169083151502179055505b6000600a60169054906101000a900460ff16159050601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806118c25750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156118cc57600090505b60008115611d9657601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561192f57506000601054115b156119f95761195d61271061194f6010548861243390919063ffffffff16565b61244990919063ffffffff16565b905060105460135482611970919061352c565b61197a919061359d565b6016600082825461198b9190612fb6565b92505081905550601054601154826119a3919061352c565b6119ad919061359d565b601460008282546119be9190612fb6565b92505081905550601054601254826119d6919061352c565b6119e0919061359d565b601560008282546119f19190612fb6565b925050819055505b601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611a5457506000601054115b15611b2257611a82612710611a746010548861243390919063ffffffff16565b61244990919063ffffffff16565b905060105460135482611a95919061352c565b611a9f919061359d565b60166000828254611ab09190612fb6565b9250508190555060105460115482611ac8919061352c565b611ad2919061359d565b60146000828254611ae39190612fb6565b9250508190555060105460125482611afb919061352c565b611b05919061359d565b60156000828254611b169190612fb6565b92505081905550611d72565b601960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611b7d57506000600c54115b15611c4b57611bab612710611b9d600c548861243390919063ffffffff16565b61244990919063ffffffff16565b9050600c54600f5482611bbe919061352c565b611bc8919061359d565b60166000828254611bd99190612fb6565b92505081905550600c54600d5482611bf1919061352c565b611bfb919061359d565b60146000828254611c0c9190612fb6565b92505081905550600c54600e5482611c24919061352c565b611c2e919061359d565b60156000828254611c3f9190612fb6565b92505081905550611d71565b601a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611ca657506000600c54115b15611d7057611cd4612710611cc6600c548861243390919063ffffffff16565b61244990919063ffffffff16565b9050600c54600f5482611ce7919061352c565b611cf1919061359d565b60166000828254611d029190612fb6565b92505081905550600c54600d5482611d1a919061352c565b611d24919061359d565b60146000828254611d359190612fb6565b92505081905550600c54600e5482611d4d919061352c565b611d57919061359d565b60156000828254611d689190612fb6565b925050819055505b5b5b6000811115611d8757611d86873083611f1b565b5b8085611d9391906135ce565b94505b611da1878787611f1b565b601754601081905550505050505b505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fc155fd4417ec7f196cce906ddbc9dcd27be8dff4e20686b3441e494690a6cca260405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8190613674565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ff9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff09061347a565b60405180910390fd5b61200483838361245f565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561208a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208190613706565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516121789190612a11565b60405180910390a361218b848484612464565b50505050565b600061219c30610b71565b905060006015546014546016546121b39190612fb6565b6121bd9190612fb6565b9050600080600283601654866121d3919061352c565b6121dd919061359d565b6121e7919061359d565b905060006121fe828661246990919063ffffffff16565b9050600047905061220e8261247f565b6000612223824761246990919063ffffffff16565b9050600061224e876122406014548561243390919063ffffffff16565b61244990919063ffffffff16565b905060006122798861226b6015548661243390919063ffffffff16565b61244990919063ffffffff16565b9050600081838561228a91906135ce565b61229491906135ce565b90506000601681905550600060148190555060006015819055506000871180156122be5750600081115b1561230b576122cd87826126bc565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561868260165460405161230293929190613726565b60405180910390a15b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516123519061378e565b60006040518083038185875af1925050503d806000811461238e576040519150601f19603f3d011682016040523d82523d6000602084013e612393565b606091505b505080985050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516123df9061378e565b60006040518083038185875af1925050503d806000811461241c576040519150601f19603f3d011682016040523d82523d6000602084013e612421565b606091505b50508098505050505050505050505050565b60008183612441919061352c565b905092915050565b60008183612457919061359d565b905092915050565b505050565b505050565b6000818361247791906135ce565b905092915050565b6000600267ffffffffffffffff81111561249c5761249b612a31565b5b6040519080825280602002602001820160405280156124ca5781602001602082028036833780820191505090505b50905030816000815181106124e2576124e1612ea4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612587573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125ab91906137b8565b816001815181106125bf576125be612ea4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612624307f000000000000000000000000000000000000000000000000000000000000000084610fa5565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016126869594939291906138de565b600060405180830381600087803b1580156126a057600080fd5b505af11580156126b4573d6000803e3d6000fd5b505050505050565b6126e7307f000000000000000000000000000000000000000000000000000000000000000084610fa5565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161276e96959493929190613938565b60606040518083038185885af115801561278c573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906127b191906139ae565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156127f25780820151818401526020810190506127d7565b60008484015250505050565b6000601f19601f8301169050919050565b600061281a826127b8565b61282481856127c3565b93506128348185602086016127d4565b61283d816127fe565b840191505092915050565b60006020820190508181036000830152612862818461280f565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006128a98261287e565b9050919050565b6128b98161289e565b81146128c457600080fd5b50565b6000813590506128d6816128b0565b92915050565b6000819050919050565b6128ef816128dc565b81146128fa57600080fd5b50565b60008135905061290c816128e6565b92915050565b6000806040838503121561292957612928612874565b5b6000612937858286016128c7565b9250506020612948858286016128fd565b9150509250929050565b60008115159050919050565b61296781612952565b82525050565b6000602082019050612982600083018461295e565b92915050565b6000819050919050565b60006129ad6129a86129a38461287e565b612988565b61287e565b9050919050565b60006129bf82612992565b9050919050565b60006129d1826129b4565b9050919050565b6129e1816129c6565b82525050565b60006020820190506129fc60008301846129d8565b92915050565b612a0b816128dc565b82525050565b6000602082019050612a266000830184612a02565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612a69826127fe565b810181811067ffffffffffffffff82111715612a8857612a87612a31565b5b80604052505050565b6000612a9b61286a565b9050612aa78282612a60565b919050565b600067ffffffffffffffff821115612ac757612ac6612a31565b5b602082029050602081019050919050565b600080fd5b6000612af0612aeb84612aac565b612a91565b90508083825260208201905060208402830185811115612b1357612b12612ad8565b5b835b81811015612b3c5780612b2888826128c7565b845260208401935050602081019050612b15565b5050509392505050565b600082601f830112612b5b57612b5a612a2c565b5b8135612b6b848260208601612add565b91505092915050565b612b7d81612952565b8114612b8857600080fd5b50565b600081359050612b9a81612b74565b92915050565b60008060408385031215612bb757612bb6612874565b5b600083013567ffffffffffffffff811115612bd557612bd4612879565b5b612be185828601612b46565b9250506020612bf285828601612b8b565b9150509250929050565b600080600060608486031215612c1557612c14612874565b5b6000612c23868287016128c7565b9350506020612c34868287016128c7565b9250506040612c45868287016128fd565b9150509250925092565b612c588161289e565b82525050565b6000602082019050612c736000830184612c4f565b92915050565b600060ff82169050919050565b612c8f81612c79565b82525050565b6000602082019050612caa6000830184612c86565b92915050565b600080fd5b60008083601f840112612ccb57612cca612a2c565b5b8235905067ffffffffffffffff811115612ce857612ce7612cb0565b5b602083019150836020820283011115612d0457612d03612ad8565b5b9250929050565b600080600060408486031215612d2457612d23612874565b5b600084013567ffffffffffffffff811115612d4257612d41612879565b5b612d4e86828701612cb5565b93509350506020612d6186828701612b8b565b9150509250925092565b600060208284031215612d8157612d80612874565b5b6000612d8f848285016128c7565b91505092915050565b60008060408385031215612daf57612dae612874565b5b6000612dbd858286016128c7565b9250506020612dce858286016128c7565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612e1f57607f821691505b602082108103612e3257612e31612dd8565b5b50919050565b7f4f70656e20202e00000000000000000000000000000000000000000000000000600082015250565b6000612e6e6007836127c3565b9150612e7982612e38565b602082019050919050565b60006020820190508181036000830152612e9d81612e61565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f5468652070616972200000000000000000000000000000000000000000000000600082015250565b6000612f096009836127c3565b9150612f1482612ed3565b602082019050919050565b60006020820190508181036000830152612f3881612efc565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612f79826128dc565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612fab57612faa612f3f565b5b600182019050919050565b6000612fc1826128dc565b9150612fcc836128dc565b9250828201905080821115612fe457612fe3612f3f565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006130466025836127c3565b915061305182612fea565b604082019050919050565b6000602082019050818103600083015261307581613039565b9050919050565b7f5468652070616972000000000000000000000000000000000000000000000000600082015250565b60006130b26008836127c3565b91506130bd8261307c565b602082019050919050565b600060208201905081810360008301526130e1816130a5565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006131446026836127c3565b915061314f826130e8565b604082019050919050565b6000602082019050818103600083015261317381613137565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006131d66024836127c3565b91506131e18261317a565b604082019050919050565b60006020820190508181036000830152613205816131c9565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006132686022836127c3565b91506132738261320c565b604082019050919050565b600060208201905081810360008301526132978161325b565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006132d46020836127c3565b91506132df8261329e565b602082019050919050565b60006020820190508181036000830152613303816132c7565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000613340601d836127c3565b915061334b8261330a565b602082019050919050565b6000602082019050818103600083015261336f81613333565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006133d26025836127c3565b91506133dd82613376565b604082019050919050565b60006020820190508181036000830152613401816133c5565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006134646023836127c3565b915061346f82613408565b604082019050919050565b6000602082019050818103600083015261349381613457565b9050919050565b7f54726164696e67206e6f74206363636173646161612079657420656e61626c6560008201527f6421000000000000000000000000000000000000000000000000000000000000602082015250565b60006134f66022836127c3565b91506135018261349a565b604082019050919050565b60006020820190508181036000830152613525816134e9565b9050919050565b6000613537826128dc565b9150613542836128dc565b9250828202613550816128dc565b9150828204841483151761356757613566612f3f565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006135a8826128dc565b91506135b3836128dc565b9250826135c3576135c261356e565b5b828204905092915050565b60006135d9826128dc565b91506135e4836128dc565b92508282039050818111156135fc576135fb612f3f565b5b92915050565b7f45524332303a207472616e73666572206363636173646161612066726f6d207460008201527f6865207a65726f20616464726573730000000000000000000000000000000000602082015250565b600061365e602f836127c3565b915061366982613602565b604082019050919050565b6000602082019050818103600083015261368d81613651565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006136f06026836127c3565b91506136fb82613694565b604082019050919050565b6000602082019050818103600083015261371f816136e3565b9050919050565b600060608201905061373b6000830186612a02565b6137486020830185612a02565b6137556040830184612a02565b949350505050565b600081905092915050565b50565b600061377860008361375d565b915061378382613768565b600082019050919050565b60006137998261376b565b9150819050919050565b6000815190506137b2816128b0565b92915050565b6000602082840312156137ce576137cd612874565b5b60006137dc848285016137a3565b91505092915050565b6000819050919050565b600061380a613805613800846137e5565b612988565b6128dc565b9050919050565b61381a816137ef565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6138558161289e565b82525050565b6000613867838361384c565b60208301905092915050565b6000602082019050919050565b600061388b82613820565b613895818561382b565b93506138a08361383c565b8060005b838110156138d15781516138b8888261385b565b97506138c383613873565b9250506001810190506138a4565b5085935050505092915050565b600060a0820190506138f36000830188612a02565b6139006020830187613811565b81810360408301526139128186613880565b90506139216060830185612c4f565b61392e6080830184612a02565b9695505050505050565b600060c08201905061394d6000830189612c4f565b61395a6020830188612a02565b6139676040830187613811565b6139746060830186613811565b6139816080830185612c4f565b61398e60a0830184612a02565b979650505050505050565b6000815190506139a8816128e6565b92915050565b6000806000606084860312156139c7576139c6612874565b5b60006139d586828701613999565b93505060206139e686828701613999565b92505060406139f786828701613999565b915050925092509256fea2646970667358221220593e55dd79157e9d3398832f78ebc10ee5c92144eb84173ca4ad75e6f5badb2e64736f6c63430008110033

Deployed Bytecode

0x6080604052600436106101d15760003560e01c8063715018a6116100f7578063a457c2d711610095578063d469801611610064578063d469801614610679578063dd62ed3e146106a4578063e2f45605146106e1578063f2fde38b1461070c576101d8565b8063a457c2d7146105ab578063a9059cbb146105e8578063c03fdaef14610625578063c04a54141461064e576101d8565b806392258803116100d157806392258803146104ff578063939635891461052a57806393ec52de1461055557806395d89b4114610580576101d8565b8063715018a61461049257806375f0a874146104a95780638da5cb5b146104d4576101d8565b806327c8f8351161016f57806349bd5a5e1161013e57806349bd5a5e146103d6578063593ff064146104015780636ddd17131461042a57806370a0823114610455576101d8565b806327c8f83514610318578063313ce5671461034357806336ed0f7d1461036e5780633950935114610399576101d8565b806318160ddd116101ab57806318160ddd146102705780631b55ba3a1461029b5780631bb7091b146102b257806323b872dd146102db576101d8565b806306fdde03146101dd578063095ea7b3146102085780631694505e14610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f2610735565b6040516101ff9190612848565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a9190612912565b6107c7565b60405161023c919061296d565b60405180910390f35b34801561025157600080fd5b5061025a6107ea565b60405161026791906129e7565b60405180910390f35b34801561027c57600080fd5b5061028561080e565b6040516102929190612a11565b60405180910390f35b3480156102a757600080fd5b506102b0610818565b005b3480156102be57600080fd5b506102d960048036038101906102d49190612ba0565b6108a8565b005b3480156102e757600080fd5b5061030260048036038101906102fd9190612bfc565b61098e565b60405161030f919061296d565b60405180910390f35b34801561032457600080fd5b5061032d6109bd565b60405161033a9190612c5e565b60405180910390f35b34801561034f57600080fd5b506103586109c3565b6040516103659190612c95565b60405180910390f35b34801561037a57600080fd5b506103836109cc565b604051610390919061296d565b60405180910390f35b3480156103a557600080fd5b506103c060048036038101906103bb9190612912565b6109df565b6040516103cd919061296d565b60405180910390f35b3480156103e257600080fd5b506103eb610a16565b6040516103f89190612c5e565b60405180910390f35b34801561040d57600080fd5b5061042860048036038101906104239190612d0b565b610a3c565b005b34801561043657600080fd5b5061043f610b5e565b60405161044c919061296d565b60405180910390f35b34801561046157600080fd5b5061047c60048036038101906104779190612d6b565b610b71565b6040516104899190612a11565b60405180910390f35b34801561049e57600080fd5b506104a7610bb9565b005b3480156104b557600080fd5b506104be610bcd565b6040516104cb9190612c5e565b60405180910390f35b3480156104e057600080fd5b506104e9610bf3565b6040516104f69190612c5e565b60405180910390f35b34801561050b57600080fd5b50610514610c1d565b6040516105219190612a11565b60405180910390f35b34801561053657600080fd5b5061053f610c23565b60405161054c9190612a11565b60405180910390f35b34801561056157600080fd5b5061056a610c29565b6040516105779190612a11565b60405180910390f35b34801561058c57600080fd5b50610595610c2f565b6040516105a29190612848565b60405180910390f35b3480156105b757600080fd5b506105d260048036038101906105cd9190612912565b610cc1565b6040516105df919061296d565b60405180910390f35b3480156105f457600080fd5b5061060f600480360381019061060a9190612912565b610d38565b60405161061c919061296d565b60405180910390f35b34801561063157600080fd5b5061064c60048036038101906106479190612ba0565b610d5b565b005b34801561065a57600080fd5b50610663610e41565b6040516106709190612c5e565b60405180910390f35b34801561068557600080fd5b5061068e610e67565b60405161069b9190612c5e565b60405180910390f35b3480156106b057600080fd5b506106cb60048036038101906106c69190612d98565b610e8d565b6040516106d89190612a11565b60405180910390f35b3480156106ed57600080fd5b506106f6610f14565b6040516107039190612a11565b60405180910390f35b34801561071857600080fd5b50610733600480360381019061072e9190612d6b565b610f1a565b005b60606004805461074490612e07565b80601f016020809104026020016040519081016040528092919081815260200182805461077090612e07565b80156107bd5780601f10610792576101008083540402835291602001916107bd565b820191906000526020600020905b8154815290600101906020018083116107a057829003601f168201915b5050505050905090565b6000806107d2610f9d565b90506107df818585610fa5565b600191505092915050565b7f0000000000000000000000004752ba5dbc23f44d87826276bf6fd6b1c372ad2481565b6000600254905090565b61082061116e565b600a60149054906101000a900460ff1615610870576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086790612e84565b60405180910390fd5b6001600a60146101000a81548160ff0219169083151502179055506001600a60156101000a81548160ff021916908315150217905550565b6108b061116e565b60005b82518110156109895760008382815181106108d1576108d0612ea4565b5b60200260200101519050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361096b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096290612f1f565b60405180910390fd5b61097581846111ec565b50808061098190612f6e565b9150506108b3565b505050565b600080610999610f9d565b90506109a685828561128d565b6109b1858585611319565b60019150509392505050565b61dead81565b60006012905090565b600a60149054906101000a900460ff1681565b6000806109ea610f9d565b9050610a0b8185856109fc8589610e8d565b610a069190612fb6565b610fa5565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a4461116e565b60005b83839050811015610b58578160186000868685818110610a6a57610a69612ea4565b5b9050602002016020810190610a7f9190612d6b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550838382818110610ae357610ae2612ea4565b5b9050602002016020810190610af89190612d6b565b73ffffffffffffffffffffffffffffffffffffffff167f3192caa254d3e1ad957995cfc6c8fbb960383bef7c341a220215553e91070df383604051610b3d919061296d565b60405180910390a28080610b5090612f6e565b915050610a47565b50505050565b600a60159054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610bc161116e565b610bcb6000611db4565b565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60105481565b600c5481565b60035481565b606060058054610c3e90612e07565b80601f0160208091040260200160405190810160405280929190818152602001828054610c6a90612e07565b8015610cb75780601f10610c8c57610100808354040283529160200191610cb7565b820191906000526020600020905b815481529060010190602001808311610c9a57829003601f168201915b5050505050905090565b600080610ccc610f9d565b90506000610cda8286610e8d565b905083811015610d1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d169061305c565b60405180910390fd5b610d2c8286868403610fa5565b60019250505092915050565b600080610d43610f9d565b9050610d50818585611319565b600191505092915050565b610d6361116e565b60005b8251811015610e3c576000838281518110610d8457610d83612ea4565b5b60200260200101519050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610e1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e15906130c8565b60405180910390fd5b610e288184611e7a565b508080610e3490612f6e565b915050610d66565b505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b5481565b610f2261116e565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f889061315a565b60405180910390fd5b610f9a81611db4565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611014576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100b906131ec565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611083576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107a9061327e565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516111619190612a11565b60405180910390a3505050565b611176610f9d565b73ffffffffffffffffffffffffffffffffffffffff16611194610bf3565b73ffffffffffffffffffffffffffffffffffffffff16146111ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e1906132ea565b60405180910390fd5b565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fb09cfb76c810949f8ba5130d1a35005021489fe01866d272e05261f6e6bd02b860405160405180910390a35050565b60006112998484610e8d565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146113135781811015611305576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fc90613356565b60405180910390fd5b6113128484848403610fa5565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611388576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137f906133e8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ee9061347a565b60405180910390fd5b600a60149054906101000a900460ff168061145b5750601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806114af5750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6114ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e59061350c565b60405180910390fd5b600081036115075761150283836000611f1b565b611daf565b600061151230610b71565b90506000600b5482101590508080156115375750600a60159054906101000a900460ff165b80156115505750600a60169054906101000a900460ff16155b80156115a55750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80156115fb5750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156116515750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611695576001600a60166101000a81548160ff021916908315150217905550611679612191565b6000600a60166101000a81548160ff0219169083151502179055505b8080156116ae5750600a60159054906101000a900460ff165b80156116c75750600a60169054906101000a900460ff16155b801561171c5750601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80156117725750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156117c85750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561180c576001600a60166101000a81548160ff0219169083151502179055506117f0612191565b6000600a60166101000a81548160ff0219169083151502179055505b6000600a60169054906101000a900460ff16159050601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806118c25750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156118cc57600090505b60008115611d9657601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561192f57506000601054115b156119f95761195d61271061194f6010548861243390919063ffffffff16565b61244990919063ffffffff16565b905060105460135482611970919061352c565b61197a919061359d565b6016600082825461198b9190612fb6565b92505081905550601054601154826119a3919061352c565b6119ad919061359d565b601460008282546119be9190612fb6565b92505081905550601054601254826119d6919061352c565b6119e0919061359d565b601560008282546119f19190612fb6565b925050819055505b601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611a5457506000601054115b15611b2257611a82612710611a746010548861243390919063ffffffff16565b61244990919063ffffffff16565b905060105460135482611a95919061352c565b611a9f919061359d565b60166000828254611ab09190612fb6565b9250508190555060105460115482611ac8919061352c565b611ad2919061359d565b60146000828254611ae39190612fb6565b9250508190555060105460125482611afb919061352c565b611b05919061359d565b60156000828254611b169190612fb6565b92505081905550611d72565b601960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611b7d57506000600c54115b15611c4b57611bab612710611b9d600c548861243390919063ffffffff16565b61244990919063ffffffff16565b9050600c54600f5482611bbe919061352c565b611bc8919061359d565b60166000828254611bd99190612fb6565b92505081905550600c54600d5482611bf1919061352c565b611bfb919061359d565b60146000828254611c0c9190612fb6565b92505081905550600c54600e5482611c24919061352c565b611c2e919061359d565b60156000828254611c3f9190612fb6565b92505081905550611d71565b601a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611ca657506000600c54115b15611d7057611cd4612710611cc6600c548861243390919063ffffffff16565b61244990919063ffffffff16565b9050600c54600f5482611ce7919061352c565b611cf1919061359d565b60166000828254611d029190612fb6565b92505081905550600c54600d5482611d1a919061352c565b611d24919061359d565b60146000828254611d359190612fb6565b92505081905550600c54600e5482611d4d919061352c565b611d57919061359d565b60156000828254611d689190612fb6565b925050819055505b5b5b6000811115611d8757611d86873083611f1b565b5b8085611d9391906135ce565b94505b611da1878787611f1b565b601754601081905550505050505b505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fc155fd4417ec7f196cce906ddbc9dcd27be8dff4e20686b3441e494690a6cca260405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8190613674565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ff9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff09061347a565b60405180910390fd5b61200483838361245f565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561208a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208190613706565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516121789190612a11565b60405180910390a361218b848484612464565b50505050565b600061219c30610b71565b905060006015546014546016546121b39190612fb6565b6121bd9190612fb6565b9050600080600283601654866121d3919061352c565b6121dd919061359d565b6121e7919061359d565b905060006121fe828661246990919063ffffffff16565b9050600047905061220e8261247f565b6000612223824761246990919063ffffffff16565b9050600061224e876122406014548561243390919063ffffffff16565b61244990919063ffffffff16565b905060006122798861226b6015548661243390919063ffffffff16565b61244990919063ffffffff16565b9050600081838561228a91906135ce565b61229491906135ce565b90506000601681905550600060148190555060006015819055506000871180156122be5750600081115b1561230b576122cd87826126bc565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561868260165460405161230293929190613726565b60405180910390a15b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516123519061378e565b60006040518083038185875af1925050503d806000811461238e576040519150601f19603f3d011682016040523d82523d6000602084013e612393565b606091505b505080985050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516123df9061378e565b60006040518083038185875af1925050503d806000811461241c576040519150601f19603f3d011682016040523d82523d6000602084013e612421565b606091505b50508098505050505050505050505050565b60008183612441919061352c565b905092915050565b60008183612457919061359d565b905092915050565b505050565b505050565b6000818361247791906135ce565b905092915050565b6000600267ffffffffffffffff81111561249c5761249b612a31565b5b6040519080825280602002602001820160405280156124ca5781602001602082028036833780820191505090505b50905030816000815181106124e2576124e1612ea4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000004752ba5dbc23f44d87826276bf6fd6b1c372ad2473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612587573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125ab91906137b8565b816001815181106125bf576125be612ea4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612624307f0000000000000000000000004752ba5dbc23f44d87826276bf6fd6b1c372ad2484610fa5565b7f0000000000000000000000004752ba5dbc23f44d87826276bf6fd6b1c372ad2473ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016126869594939291906138de565b600060405180830381600087803b1580156126a057600080fd5b505af11580156126b4573d6000803e3d6000fd5b505050505050565b6126e7307f0000000000000000000000004752ba5dbc23f44d87826276bf6fd6b1c372ad2484610fa5565b7f0000000000000000000000004752ba5dbc23f44d87826276bf6fd6b1c372ad2473ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161276e96959493929190613938565b60606040518083038185885af115801561278c573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906127b191906139ae565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156127f25780820151818401526020810190506127d7565b60008484015250505050565b6000601f19601f8301169050919050565b600061281a826127b8565b61282481856127c3565b93506128348185602086016127d4565b61283d816127fe565b840191505092915050565b60006020820190508181036000830152612862818461280f565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006128a98261287e565b9050919050565b6128b98161289e565b81146128c457600080fd5b50565b6000813590506128d6816128b0565b92915050565b6000819050919050565b6128ef816128dc565b81146128fa57600080fd5b50565b60008135905061290c816128e6565b92915050565b6000806040838503121561292957612928612874565b5b6000612937858286016128c7565b9250506020612948858286016128fd565b9150509250929050565b60008115159050919050565b61296781612952565b82525050565b6000602082019050612982600083018461295e565b92915050565b6000819050919050565b60006129ad6129a86129a38461287e565b612988565b61287e565b9050919050565b60006129bf82612992565b9050919050565b60006129d1826129b4565b9050919050565b6129e1816129c6565b82525050565b60006020820190506129fc60008301846129d8565b92915050565b612a0b816128dc565b82525050565b6000602082019050612a266000830184612a02565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612a69826127fe565b810181811067ffffffffffffffff82111715612a8857612a87612a31565b5b80604052505050565b6000612a9b61286a565b9050612aa78282612a60565b919050565b600067ffffffffffffffff821115612ac757612ac6612a31565b5b602082029050602081019050919050565b600080fd5b6000612af0612aeb84612aac565b612a91565b90508083825260208201905060208402830185811115612b1357612b12612ad8565b5b835b81811015612b3c5780612b2888826128c7565b845260208401935050602081019050612b15565b5050509392505050565b600082601f830112612b5b57612b5a612a2c565b5b8135612b6b848260208601612add565b91505092915050565b612b7d81612952565b8114612b8857600080fd5b50565b600081359050612b9a81612b74565b92915050565b60008060408385031215612bb757612bb6612874565b5b600083013567ffffffffffffffff811115612bd557612bd4612879565b5b612be185828601612b46565b9250506020612bf285828601612b8b565b9150509250929050565b600080600060608486031215612c1557612c14612874565b5b6000612c23868287016128c7565b9350506020612c34868287016128c7565b9250506040612c45868287016128fd565b9150509250925092565b612c588161289e565b82525050565b6000602082019050612c736000830184612c4f565b92915050565b600060ff82169050919050565b612c8f81612c79565b82525050565b6000602082019050612caa6000830184612c86565b92915050565b600080fd5b60008083601f840112612ccb57612cca612a2c565b5b8235905067ffffffffffffffff811115612ce857612ce7612cb0565b5b602083019150836020820283011115612d0457612d03612ad8565b5b9250929050565b600080600060408486031215612d2457612d23612874565b5b600084013567ffffffffffffffff811115612d4257612d41612879565b5b612d4e86828701612cb5565b93509350506020612d6186828701612b8b565b9150509250925092565b600060208284031215612d8157612d80612874565b5b6000612d8f848285016128c7565b91505092915050565b60008060408385031215612daf57612dae612874565b5b6000612dbd858286016128c7565b9250506020612dce858286016128c7565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612e1f57607f821691505b602082108103612e3257612e31612dd8565b5b50919050565b7f4f70656e20202e00000000000000000000000000000000000000000000000000600082015250565b6000612e6e6007836127c3565b9150612e7982612e38565b602082019050919050565b60006020820190508181036000830152612e9d81612e61565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f5468652070616972200000000000000000000000000000000000000000000000600082015250565b6000612f096009836127c3565b9150612f1482612ed3565b602082019050919050565b60006020820190508181036000830152612f3881612efc565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612f79826128dc565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612fab57612faa612f3f565b5b600182019050919050565b6000612fc1826128dc565b9150612fcc836128dc565b9250828201905080821115612fe457612fe3612f3f565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006130466025836127c3565b915061305182612fea565b604082019050919050565b6000602082019050818103600083015261307581613039565b9050919050565b7f5468652070616972000000000000000000000000000000000000000000000000600082015250565b60006130b26008836127c3565b91506130bd8261307c565b602082019050919050565b600060208201905081810360008301526130e1816130a5565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006131446026836127c3565b915061314f826130e8565b604082019050919050565b6000602082019050818103600083015261317381613137565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006131d66024836127c3565b91506131e18261317a565b604082019050919050565b60006020820190508181036000830152613205816131c9565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006132686022836127c3565b91506132738261320c565b604082019050919050565b600060208201905081810360008301526132978161325b565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006132d46020836127c3565b91506132df8261329e565b602082019050919050565b60006020820190508181036000830152613303816132c7565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000613340601d836127c3565b915061334b8261330a565b602082019050919050565b6000602082019050818103600083015261336f81613333565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006133d26025836127c3565b91506133dd82613376565b604082019050919050565b60006020820190508181036000830152613401816133c5565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006134646023836127c3565b915061346f82613408565b604082019050919050565b6000602082019050818103600083015261349381613457565b9050919050565b7f54726164696e67206e6f74206363636173646161612079657420656e61626c6560008201527f6421000000000000000000000000000000000000000000000000000000000000602082015250565b60006134f66022836127c3565b91506135018261349a565b604082019050919050565b60006020820190508181036000830152613525816134e9565b9050919050565b6000613537826128dc565b9150613542836128dc565b9250828202613550816128dc565b9150828204841483151761356757613566612f3f565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006135a8826128dc565b91506135b3836128dc565b9250826135c3576135c261356e565b5b828204905092915050565b60006135d9826128dc565b91506135e4836128dc565b92508282039050818111156135fc576135fb612f3f565b5b92915050565b7f45524332303a207472616e73666572206363636173646161612066726f6d207460008201527f6865207a65726f20616464726573730000000000000000000000000000000000602082015250565b600061365e602f836127c3565b915061366982613602565b604082019050919050565b6000602082019050818103600083015261368d81613651565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006136f06026836127c3565b91506136fb82613694565b604082019050919050565b6000602082019050818103600083015261371f816136e3565b9050919050565b600060608201905061373b6000830186612a02565b6137486020830185612a02565b6137556040830184612a02565b949350505050565b600081905092915050565b50565b600061377860008361375d565b915061378382613768565b600082019050919050565b60006137998261376b565b9150819050919050565b6000815190506137b2816128b0565b92915050565b6000602082840312156137ce576137cd612874565b5b60006137dc848285016137a3565b91505092915050565b6000819050919050565b600061380a613805613800846137e5565b612988565b6128dc565b9050919050565b61381a816137ef565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6138558161289e565b82525050565b6000613867838361384c565b60208301905092915050565b6000602082019050919050565b600061388b82613820565b613895818561382b565b93506138a08361383c565b8060005b838110156138d15781516138b8888261385b565b97506138c383613873565b9250506001810190506138a4565b5085935050505092915050565b600060a0820190506138f36000830188612a02565b6139006020830187613811565b81810360408301526139128186613880565b90506139216060830185612c4f565b61392e6080830184612a02565b9695505050505050565b600060c08201905061394d6000830189612c4f565b61395a6020830188612a02565b6139676040830187613811565b6139746060830186613811565b6139816080830185612c4f565b61398e60a0830184612a02565b979650505050505050565b6000815190506139a8816128e6565b92915050565b6000806000606084860312156139c7576139c6612874565b5b60006139d586828701613999565b93505060206139e686828701613999565b92505060406139f786828701613999565b915050925092509256fea2646970667358221220593e55dd79157e9d3398832f78ebc10ee5c92144eb84173ca4ad75e6f5badb2e64736f6c63430008110033

Deployed Bytecode Sourcemap

21586:9341:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10186:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11439:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21662:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10628:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23839:145;;;;;;;;;;;;;:::i;:::-;;24496:250;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11689:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21870:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10521:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21932:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11992:270;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21720:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24249:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21960:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10744:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;969:103;;;;;;;;;;;;;:::i;:::-;;21757:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;724:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22205:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22065:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9960:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10405:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12270:505;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10933:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23996:251;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21794:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21833:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11230:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22023:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1085:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10186:100;10240:13;10273:5;10266:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10186:100;:::o;11439:242::-;11558:4;11580:13;11596:12;:10;:12::i;:::-;11580:28;;11619:32;11628:5;11635:7;11644:6;11619:8;:32::i;:::-;11669:4;11662:11;;;11439:242;;;;:::o;21662:51::-;;;:::o;10628:108::-;10689:7;10716:12;;10709:19;;10628:108;:::o;23839:145::-;610:13;:11;:13::i;:::-;23893:12:::1;;;;;;;;;;;23892:13;23884:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;23943:4;23928:12;;:19;;;;;;;;;;;;;;;;;;23972:4;23958:11;;:18;;;;;;;;;;;;;;;;;;23839:145::o:0;24496:250::-;610:13;:11;:13::i;:::-;24574:9:::1;24569:174;24593:6;:13;24589:1;:17;24569:174;;;24624:12;24639:6;24646:1;24639:9;;;;;;;;:::i;:::-;;;;;;;;24624:24;;24675:13;;;;;;;;;;;24667:21;;:4;:21;;::::0;24659:43:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;24713:22;24723:4;24729:5;24713:9;:22::i;:::-;24613:130;24608:3;;;;;:::i;:::-;;;;24569:174;;;;24496:250:::0;;:::o;11689:295::-;11820:4;11837:15;11855:12;:10;:12::i;:::-;11837:30;;11878:38;11894:4;11900:7;11909:6;11878:15;:38::i;:::-;11927:27;11937:4;11943:2;11947:6;11927:9;:27::i;:::-;11972:4;11965:11;;;11689:295;;;;;:::o;21870:53::-;21916:6;21870:53;:::o;10521:93::-;10579:5;10604:2;10597:9;;10521:93;:::o;21932:24::-;;;;;;;;;;;;;:::o;11992:270::-;12107:4;12129:13;12145:12;:10;:12::i;:::-;12129:28;;12168:64;12177:5;12184:7;12221:10;12193:25;12203:5;12210:7;12193:9;:25::i;:::-;:38;;;;:::i;:::-;12168:8;:64::i;:::-;12250:4;12243:11;;;11992:270;;;;:::o;21720:28::-;;;;;;;;;;;;;:::o;24249:242::-;610:13;:11;:13::i;:::-;24346:9:::1;24341:147;24365:8;;:15;;24361:1;:19;24341:147;;;24426:8;24398:12;:25;24411:8;;24420:1;24411:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;24398:25;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;24458:8;;24467:1;24458:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;24450:30;;;24471:8;24450:30;;;;;;:::i;:::-;;;;;;;;24382:3;;;;;:::i;:::-;;;;24341:147;;;;24249:242:::0;;;:::o;21960:23::-;;;;;;;;;;;;;:::o;10744:177::-;10863:7;10895:9;:18;10905:7;10895:18;;;;;;;;;;;;;;;;10888:25;;10744:177;;;:::o;969:103::-;610:13;:11;:13::i;:::-;1034:30:::1;1061:1;1034:18;:30::i;:::-;969:103::o:0;21757:30::-;;;;;;;;;;;;;:::o;724:87::-;770:7;797:6;;;;;;;;;;;790:13;;724:87;:::o;22205:25::-;;;;:::o;22065:30::-;;;;:::o;9960:26::-;;;;:::o;10405:104::-;10461:13;10494:7;10487:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10405:104;:::o;12270:505::-;12390:4;12412:13;12428:12;:10;:12::i;:::-;12412:28;;12451:24;12478:25;12488:5;12495:7;12478:9;:25::i;:::-;12451:52;;12556:15;12536:16;:35;;12514:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;12672:60;12681:5;12688:7;12716:15;12697:16;:34;12672:8;:60::i;:::-;12763:4;12756:11;;;;12270:505;;;;:::o;10933:234::-;11048:4;11070:13;11086:12;:10;:12::i;:::-;11070:28;;11109;11119:5;11126:2;11130:6;11109:9;:28::i;:::-;11155:4;11148:11;;;10933:234;;;;:::o;23996:251::-;610:13;:11;:13::i;:::-;24077:9:::1;24072:172;24096:6;:13;24092:1;:17;24072:172;;;24127:12;24142:6;24149:1;24142:9;;;;;;;;:::i;:::-;;;;;;;;24127:24;;24178:13;;;;;;;;;;;24170:21;;:4;:21;;::::0;24162:42:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;24215:21;24224:4;24230:5;24215:8;:21::i;:::-;24116:128;24111:3;;;;;:::i;:::-;;;;24072:172;;;;23996:251:::0;;:::o;21794:32::-;;;;;;;;;;;;;:::o;21833:30::-;;;;;;;;;;;;;:::o;11230:201::-;11364:7;11396:11;:18;11408:5;11396:18;;;;;;;;;;;;;;;:27;11415:7;11396:27;;;;;;;;;;;;;;;;11389:34;;11230:201;;;;:::o;22023:33::-;;;;:::o;1085:238::-;610:13;:11;:13::i;:::-;1208:1:::1;1188:22;;:8;:22;;::::0;1166:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1287:28;1306:8;1287:18;:28::i;:::-;1085:238:::0;:::o;93:98::-;146:7;173:10;166:17;;93:98;:::o;14766:380::-;14919:1;14902:19;;:5;:19;;;14894:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15000:1;14981:21;;:7;:21;;;14973:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15084:6;15054:11;:18;15066:5;15054:18;;;;;;;;;;;;;;;:27;15073:7;15054:27;;;;;;;;;;;;;;;:36;;;;15122:7;15106:32;;15115:5;15106:32;;;15131:6;15106:32;;;;;;:::i;:::-;;;;;;;;14766:380;;;:::o;824:132::-;899:12;:10;:12::i;:::-;888:23;;:7;:5;:7::i;:::-;:23;;;880:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;824:132::o;24896:133::-;24980:5;24961:10;:16;24972:4;24961:16;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;25015:5;25001:20;;25009:4;25001:20;;;;;;;;;;;;24896:133;;:::o;15154:498::-;15285:24;15312:25;15322:5;15329:7;15312:9;:25::i;:::-;15285:52;;15372:17;15352:16;:37;15348:297;;15452:6;15432:16;:26;;15406:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;15567:51;15576:5;15583:7;15611:6;15592:16;:25;15567:8;:51::i;:::-;15348:297;15274:378;15154:498;;;:::o;25037:3434::-;25185:1;25169:18;;:4;:18;;;25161:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25262:1;25248:16;;:2;:16;;;25240:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;25333:12;;;;;;;;;;;:34;;;;25349:12;:18;25362:4;25349:18;;;;;;;;;;;;;;;;;;;;;;;;;25333:34;:54;;;;25371:12;:16;25384:2;25371:16;;;;;;;;;;;;;;;;;;;;;;;;;25333:54;25325:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;25451:1;25441:6;:11;25437:93;;25469:28;25485:4;25491:2;25495:1;25469:15;:28::i;:::-;25512:7;;25437:93;25544:28;25575:24;25593:4;25575:9;:24::i;:::-;25544:55;;25612:20;25659:18;;25635:20;:42;;25612:65;;25708:15;:43;;;;;25740:11;;;;;;;;;;;25708:43;:58;;;;;25755:11;;;;;;;;;;;25754:12;25708:58;:78;;;;;25768:12;:18;25781:4;25768:18;;;;;;;;;;;;;;;;;;;;;;;;;25708:78;:113;;;;;25803:12;:18;25816:4;25803:18;;;;;;;;;;;;;;;;;;;;;;;;;25802:19;25708:113;:147;;;;;25839:12;:16;25852:2;25839:16;;;;;;;;;;;;;;;;;;;;;;;;;25838:17;25708:147;25690:286;;;25896:4;25882:11;;:18;;;;;;;;;;;;;;;;;;25917:11;:9;:11::i;:::-;25959:5;25945:11;;:19;;;;;;;;;;;;;;;;;;25690:286;26004:15;:43;;;;;26036:11;;;;;;;;;;;26004:43;:58;;;;;26051:11;;;;;;;;;;;26050:12;26004:58;:74;;;;;26064:10;:14;26075:2;26064:14;;;;;;;;;;;;;;;;;;;;;;;;;26004:74;:109;;;;;26095:12;:18;26108:4;26095:18;;;;;;;;;;;;;;;;;;;;;;;;;26094:19;26004:109;:143;;;;;26131:12;:16;26144:2;26131:16;;;;;;;;;;;;;;;;;;;;;;;;;26130:17;26004:143;25986:282;;;26188:4;26174:11;;:18;;;;;;;;;;;;;;;;;;26209:11;:9;:11::i;:::-;26251:5;26237:11;;:19;;;;;;;;;;;;;;;;;;25986:282;26280:12;26296:11;;;;;;;;;;;26295:12;26280:27;;26346:12;:18;26359:4;26346:18;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;;26368:12;:16;26381:2;26368:16;;;;;;;;;;;;;;;;;;;;;;;;;26346:38;26342:86;;;26411:5;26401:15;;26342:86;26440:12;26477:7;26473:1908;;;26529:12;:16;26542:2;26529:16;;;;;;;;;;;;;;;;;;;;;;;;;:34;;;;;26562:1;26549:10;;:14;26529:34;26525:437;;;26591:33;26618:5;26591:22;26602:10;;26591:6;:10;;:22;;;;:::i;:::-;:26;;:33;;;;:::i;:::-;26584:40;;26718:10;;26685:8;;26678:4;:15;;;;:::i;:::-;26677:51;;;;:::i;:::-;26643:9;;:85;;;;;;;:::i;:::-;;;;;;;;26820:10;;26790:5;;26783:4;:12;;;;:::i;:::-;26782:48;;;;:::i;:::-;26747:10;;:83;;;;;;;:::i;:::-;;;;;;;;26936:10;;26903:8;;26896:4;:15;;;;:::i;:::-;26895:51;;;;:::i;:::-;26849:21;;:97;;;;;;;:::i;:::-;;;;;;;;26525:437;26982:10;:14;26993:2;26982:14;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;;;27013:1;27000:10;;:14;26982:32;26978:1254;;;27042:33;27069:5;27042:22;27053:10;;27042:6;:10;;:22;;;;:::i;:::-;:26;;:33;;;;:::i;:::-;27035:40;;27169:10;;27136:8;;27129:4;:15;;;;:::i;:::-;27128:51;;;;:::i;:::-;27094:9;;:85;;;;;;;:::i;:::-;;;;;;;;27271:10;;27241:5;;27234:4;:12;;;;:::i;:::-;27233:48;;;;:::i;:::-;27198:10;;:83;;;;;;;:::i;:::-;;;;;;;;27387:10;;27354:8;;27347:4;:15;;;;:::i;:::-;27346:51;;;;:::i;:::-;27300:21;;:97;;;;;;;:::i;:::-;;;;;;;;26978:1254;;;27459:12;:18;27472:4;27459:18;;;;;;;;;;;;;;;;;;;;;;;;;:41;;;;;27499:1;27481:15;;:19;27459:41;27455:777;;;27528:38;27560:5;27528:27;27539:15;;27528:6;:10;;:27;;;;:::i;:::-;:31;;:38;;;;:::i;:::-;27521:45;;27621:15;;27606:11;;27599:4;:18;;;;:::i;:::-;27598:38;;;;:::i;:::-;27585:9;;:51;;;;;;;:::i;:::-;;;;;;;;27686:15;;27677:5;;27670:4;:12;;;;:::i;:::-;27669:32;;;;:::i;:::-;27655:10;;:46;;;;;;;:::i;:::-;;;;;;;;27804:15;;27774:5;;27767:4;:12;;;;:::i;:::-;27766:53;;;;:::i;:::-;27720:21;;:99;;;;;;;:::i;:::-;;;;;;;;27455:777;;;27858:10;:16;27869:4;27858:16;;;;;;;;;;;;;;;;;;;;;;;;;:39;;;;;27896:1;27878:15;;:19;27858:39;27854:378;;;27925:38;27957:5;27925:27;27936:15;;27925:6;:10;;:27;;;;:::i;:::-;:31;;:38;;;;:::i;:::-;27918:45;;28018:15;;28003:11;;27996:4;:18;;;;:::i;:::-;27995:38;;;;:::i;:::-;27982:9;;:51;;;;;;;:::i;:::-;;;;;;;;28083:15;;28074:5;;28067:4;:12;;;;:::i;:::-;28066:32;;;;:::i;:::-;28052:10;;:46;;;;;;;:::i;:::-;;;;;;;;28201:15;;28171:5;;28164:4;:12;;;;:::i;:::-;28163:53;;;;:::i;:::-;28117:21;;:99;;;;;;;:::i;:::-;;;;;;;;27854:378;27455:777;26978:1254;28259:1;28252:4;:8;28248:91;;;28281:42;28297:4;28311;28318;28281:15;:42::i;:::-;28248:91;28365:4;28355:14;;;;;:::i;:::-;;;26473:1908;28393:33;28409:4;28415:2;28419:6;28393:15;:33::i;:::-;28450:13;;28437:10;:26;;;;25150:3321;;;;25037:3434;;;;:::o;1336:191::-;1410:16;1429:6;;;;;;;;;;;1410:25;;1455:8;1446:6;;:17;;;;;;;;;;;;;;;;;;1510:8;1479:40;;1500:8;1479:40;;;;;;;;;;;;1399:128;1336:191;:::o;24754:134::-;24839:5;24818:12;:18;24831:4;24818:18;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;24874:5;24860:20;;24868:4;24860:20;;;;;;;;;;;;24754:134;;:::o;12783:726::-;12922:1;12906:18;;:4;:18;;;12898:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;13009:1;12995:16;;:2;:16;;;12987:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;13064:38;13085:4;13091:2;13095:6;13064:20;:38::i;:::-;13115:19;13137:9;:15;13147:4;13137:15;;;;;;;;;;;;;;;;13115:37;;13200:6;13185:11;:21;;13163:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;13340:6;13326:11;:20;13308:9;:15;13318:4;13308:15;;;;;;;;;;;;;;;:38;;;;13390:6;13373:9;:13;13383:2;13373:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;13440:2;13425:26;;13434:4;13425:26;;;13444:6;13425:26;;;;;;:::i;:::-;;;;;;;;13464:37;13484:4;13490:2;13494:6;13464:19;:37::i;:::-;12887:622;12783:726;;;:::o;29373:1549::-;29414:23;29440:24;29458:4;29440:9;:24::i;:::-;29414:50;;29475:25;29554:21;;29528:10;;29503:9;;:35;;;;:::i;:::-;:72;;;;:::i;:::-;29475:100;;29586:12;29613:23;29717:1;29684:17;29658:9;;29640:15;:27;;;;:::i;:::-;29639:62;;;;:::i;:::-;:79;;;;:::i;:::-;29613:105;;29729:28;29760:36;29780:15;29760;:19;;:36;;;;:::i;:::-;29729:67;;29809:25;29837:21;29809:49;;29871:40;29890:20;29871:18;:40::i;:::-;29924:18;29945:44;29971:17;29945:21;:25;;:44;;;;:::i;:::-;29924:65;;30002:23;30028:73;30073:17;30028:26;30043:10;;30028;:14;;:26;;;;:::i;:::-;:30;;:73;;;;:::i;:::-;30002:99;;30114:25;30142:84;30198:17;30142:37;30157:21;;30142:10;:14;;:37;;;;:::i;:::-;:41;;:84;;;;:::i;:::-;30114:112;;30239:23;30322:17;30291:15;30265:10;:41;;;;:::i;:::-;:74;;;;:::i;:::-;30239:100;;30364:1;30352:9;:13;;;;30389:1;30376:10;:14;;;;30425:1;30401:21;:25;;;;30461:1;30443:15;:19;:42;;;;;30484:1;30466:15;:19;30443:42;30439:272;;;30502:47;30516:15;30533;30502:13;:47::i;:::-;30569:130;30602:20;30641:15;30675:9;;30569:130;;;;;;;;:::i;:::-;;;;;;;;30439:272;30747:17;;;;;;;;;;;30739:31;;30778:17;30739:61;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30725:75;;;;;30835:15;;;;;;;;;;;30827:29;;30878:21;30827:87;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30813:101;;;;;29403:1519;;;;;;;;;;29373:1549::o;6929:98::-;6987:7;7018:1;7014;:5;;;;:::i;:::-;7007:12;;6929:98;;;;:::o;7252:::-;7310:7;7341:1;7337;:5;;;;:::i;:::-;7330:12;;7252:98;;;;:::o;15660:125::-;;;;:::o;15793:124::-;;;;:::o;6572:98::-;6630:7;6661:1;6657;:5;;;;:::i;:::-;6650:12;;6572:98;;;;:::o;28479:504::-;28548:21;28586:1;28572:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28548:40;;28617:4;28599;28604:1;28599:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;28643:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28633:4;28638:1;28633:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;28678:62;28695:4;28710:15;28728:11;28678:8;:62::i;:::-;28779:15;:66;;;28860:11;28886:1;28902:4;28929;28949:15;28779:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28537:446;28479:504;:::o;28991:372::-;29074:62;29091:4;29106:15;29124:11;29074:8;:62::i;:::-;29149:15;:31;;;29188:9;29221:4;29241:11;29267:1;29283;29299:15;;;;;;;;;;;29329;29149:206;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;28991:372;;:::o;7:99:1:-;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;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::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:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:153::-;3869:9;3902:37;3933:5;3902:37;:::i;:::-;3889:50;;3792:153;;;:::o;3951:185::-;4065:64;4123:5;4065:64;:::i;:::-;4060:3;4053:77;3951:185;;:::o;4142:276::-;4262:4;4300:2;4289:9;4285:18;4277:26;;4313:98;4408:1;4397:9;4393:17;4384:6;4313:98;:::i;:::-;4142:276;;;;:::o;4424:118::-;4511:24;4529:5;4511:24;:::i;:::-;4506:3;4499:37;4424:118;;:::o;4548:222::-;4641:4;4679:2;4668:9;4664:18;4656:26;;4692:71;4760:1;4749:9;4745:17;4736:6;4692:71;:::i;:::-;4548:222;;;;:::o;4776:117::-;4885:1;4882;4875:12;4899:180;4947:77;4944:1;4937:88;5044:4;5041:1;5034:15;5068:4;5065:1;5058:15;5085:281;5168:27;5190:4;5168:27;:::i;:::-;5160:6;5156:40;5298:6;5286:10;5283:22;5262:18;5250:10;5247:34;5244:62;5241:88;;;5309:18;;:::i;:::-;5241:88;5349:10;5345:2;5338:22;5128:238;5085:281;;:::o;5372:129::-;5406:6;5433:20;;:::i;:::-;5423:30;;5462:33;5490:4;5482:6;5462:33;:::i;:::-;5372:129;;;:::o;5507:311::-;5584:4;5674:18;5666:6;5663:30;5660:56;;;5696:18;;:::i;:::-;5660:56;5746:4;5738:6;5734:17;5726:25;;5806:4;5800;5796:15;5788:23;;5507:311;;;:::o;5824:117::-;5933:1;5930;5923:12;5964:710;6060:5;6085:81;6101:64;6158:6;6101:64;:::i;:::-;6085:81;:::i;:::-;6076:90;;6186:5;6215:6;6208:5;6201:21;6249:4;6242:5;6238:16;6231:23;;6302:4;6294:6;6290:17;6282:6;6278:30;6331:3;6323:6;6320:15;6317:122;;;6350:79;;:::i;:::-;6317:122;6465:6;6448:220;6482:6;6477:3;6474:15;6448:220;;;6557:3;6586:37;6619:3;6607:10;6586:37;:::i;:::-;6581:3;6574:50;6653:4;6648:3;6644:14;6637:21;;6524:144;6508:4;6503:3;6499:14;6492:21;;6448:220;;;6452:21;6066:608;;5964:710;;;;;:::o;6697:370::-;6768:5;6817:3;6810:4;6802:6;6798:17;6794:27;6784:122;;6825:79;;:::i;:::-;6784:122;6942:6;6929:20;6967:94;7057:3;7049:6;7042:4;7034:6;7030:17;6967:94;:::i;:::-;6958:103;;6774:293;6697:370;;;;:::o;7073:116::-;7143:21;7158:5;7143:21;:::i;:::-;7136:5;7133:32;7123:60;;7179:1;7176;7169:12;7123:60;7073:116;:::o;7195:133::-;7238:5;7276:6;7263:20;7254:29;;7292:30;7316:5;7292:30;:::i;:::-;7195:133;;;;:::o;7334:678::-;7424:6;7432;7481:2;7469:9;7460:7;7456:23;7452:32;7449:119;;;7487:79;;:::i;:::-;7449:119;7635:1;7624:9;7620:17;7607:31;7665:18;7657:6;7654:30;7651:117;;;7687:79;;:::i;:::-;7651:117;7792:78;7862:7;7853:6;7842:9;7838:22;7792:78;:::i;:::-;7782:88;;7578:302;7919:2;7945:50;7987:7;7978:6;7967:9;7963:22;7945:50;:::i;:::-;7935:60;;7890:115;7334:678;;;;;:::o;8018:619::-;8095:6;8103;8111;8160:2;8148:9;8139:7;8135:23;8131:32;8128:119;;;8166:79;;:::i;:::-;8128:119;8286:1;8311:53;8356:7;8347:6;8336:9;8332:22;8311:53;:::i;:::-;8301:63;;8257:117;8413:2;8439:53;8484:7;8475:6;8464:9;8460:22;8439:53;:::i;:::-;8429:63;;8384:118;8541:2;8567:53;8612:7;8603:6;8592:9;8588:22;8567:53;:::i;:::-;8557:63;;8512:118;8018:619;;;;;:::o;8643:118::-;8730:24;8748:5;8730:24;:::i;:::-;8725:3;8718:37;8643:118;;:::o;8767:222::-;8860:4;8898:2;8887:9;8883:18;8875:26;;8911:71;8979:1;8968:9;8964:17;8955:6;8911:71;:::i;:::-;8767:222;;;;:::o;8995:86::-;9030:7;9070:4;9063:5;9059:16;9048:27;;8995:86;;;:::o;9087:112::-;9170:22;9186:5;9170:22;:::i;:::-;9165:3;9158:35;9087:112;;:::o;9205:214::-;9294:4;9332:2;9321:9;9317:18;9309:26;;9345:67;9409:1;9398:9;9394:17;9385:6;9345:67;:::i;:::-;9205:214;;;;:::o;9425:117::-;9534:1;9531;9524:12;9565:568;9638:8;9648:6;9698:3;9691:4;9683:6;9679:17;9675:27;9665:122;;9706:79;;:::i;:::-;9665:122;9819:6;9806:20;9796:30;;9849:18;9841:6;9838:30;9835:117;;;9871:79;;:::i;:::-;9835:117;9985:4;9977:6;9973:17;9961:29;;10039:3;10031:4;10023:6;10019:17;10009:8;10005:32;10002:41;9999:128;;;10046:79;;:::i;:::-;9999:128;9565:568;;;;;:::o;10139:698::-;10231:6;10239;10247;10296:2;10284:9;10275:7;10271:23;10267:32;10264:119;;;10302:79;;:::i;:::-;10264:119;10450:1;10439:9;10435:17;10422:31;10480:18;10472:6;10469:30;10466:117;;;10502:79;;:::i;:::-;10466:117;10615:80;10687:7;10678:6;10667:9;10663:22;10615:80;:::i;:::-;10597:98;;;;10393:312;10744:2;10770:50;10812:7;10803:6;10792:9;10788:22;10770:50;:::i;:::-;10760:60;;10715:115;10139:698;;;;;:::o;10843:329::-;10902:6;10951:2;10939:9;10930:7;10926:23;10922:32;10919:119;;;10957:79;;:::i;:::-;10919:119;11077:1;11102:53;11147:7;11138:6;11127:9;11123:22;11102:53;:::i;:::-;11092:63;;11048:117;10843:329;;;;:::o;11178:474::-;11246:6;11254;11303:2;11291:9;11282:7;11278:23;11274:32;11271:119;;;11309:79;;:::i;:::-;11271:119;11429:1;11454:53;11499:7;11490:6;11479:9;11475:22;11454:53;:::i;:::-;11444:63;;11400:117;11556:2;11582:53;11627:7;11618:6;11607:9;11603:22;11582:53;:::i;:::-;11572:63;;11527:118;11178:474;;;;;:::o;11658:180::-;11706:77;11703:1;11696:88;11803:4;11800:1;11793:15;11827:4;11824:1;11817:15;11844:320;11888:6;11925:1;11919:4;11915:12;11905:22;;11972:1;11966:4;11962:12;11993:18;11983:81;;12049:4;12041:6;12037:17;12027:27;;11983:81;12111:2;12103:6;12100:14;12080:18;12077:38;12074:84;;12130:18;;:::i;:::-;12074:84;11895:269;11844:320;;;:::o;12170:157::-;12310:9;12306:1;12298:6;12294:14;12287:33;12170:157;:::o;12333:365::-;12475:3;12496:66;12560:1;12555:3;12496:66;:::i;:::-;12489:73;;12571:93;12660:3;12571:93;:::i;:::-;12689:2;12684:3;12680:12;12673:19;;12333:365;;;:::o;12704:419::-;12870:4;12908:2;12897:9;12893:18;12885:26;;12957:9;12951:4;12947:20;12943:1;12932:9;12928:17;12921:47;12985:131;13111:4;12985:131;:::i;:::-;12977:139;;12704:419;;;:::o;13129:180::-;13177:77;13174:1;13167:88;13274:4;13271:1;13264:15;13298:4;13295:1;13288:15;13315:159;13455:11;13451:1;13443:6;13439:14;13432:35;13315:159;:::o;13480:365::-;13622:3;13643:66;13707:1;13702:3;13643:66;:::i;:::-;13636:73;;13718:93;13807:3;13718:93;:::i;:::-;13836:2;13831:3;13827:12;13820:19;;13480:365;;;:::o;13851:419::-;14017:4;14055:2;14044:9;14040:18;14032:26;;14104:9;14098:4;14094:20;14090:1;14079:9;14075:17;14068:47;14132:131;14258:4;14132:131;:::i;:::-;14124:139;;13851:419;;;:::o;14276:180::-;14324:77;14321:1;14314:88;14421:4;14418:1;14411:15;14445:4;14442:1;14435:15;14462:233;14501:3;14524:24;14542:5;14524:24;:::i;:::-;14515:33;;14570:66;14563:5;14560:77;14557:103;;14640:18;;:::i;:::-;14557:103;14687:1;14680:5;14676:13;14669:20;;14462:233;;;:::o;14701:191::-;14741:3;14760:20;14778:1;14760:20;:::i;:::-;14755:25;;14794:20;14812:1;14794:20;:::i;:::-;14789:25;;14837:1;14834;14830:9;14823:16;;14858:3;14855:1;14852:10;14849:36;;;14865:18;;:::i;:::-;14849:36;14701:191;;;;:::o;14898:224::-;15038:34;15034:1;15026:6;15022:14;15015:58;15107:7;15102:2;15094:6;15090:15;15083:32;14898:224;:::o;15128:366::-;15270:3;15291:67;15355:2;15350:3;15291:67;:::i;:::-;15284:74;;15367:93;15456:3;15367:93;:::i;:::-;15485:2;15480:3;15476:12;15469:19;;15128:366;;;:::o;15500:419::-;15666:4;15704:2;15693:9;15689:18;15681:26;;15753:9;15747:4;15743:20;15739:1;15728:9;15724:17;15717:47;15781:131;15907:4;15781:131;:::i;:::-;15773:139;;15500:419;;;:::o;15925:158::-;16065:10;16061:1;16053:6;16049:14;16042:34;15925:158;:::o;16089:365::-;16231:3;16252:66;16316:1;16311:3;16252:66;:::i;:::-;16245:73;;16327:93;16416:3;16327:93;:::i;:::-;16445:2;16440:3;16436:12;16429:19;;16089:365;;;:::o;16460:419::-;16626:4;16664:2;16653:9;16649:18;16641:26;;16713:9;16707:4;16703:20;16699:1;16688:9;16684:17;16677:47;16741:131;16867:4;16741:131;:::i;:::-;16733:139;;16460:419;;;:::o;16885:225::-;17025:34;17021:1;17013:6;17009:14;17002:58;17094:8;17089:2;17081:6;17077:15;17070:33;16885:225;:::o;17116:366::-;17258:3;17279:67;17343:2;17338:3;17279:67;:::i;:::-;17272:74;;17355:93;17444:3;17355:93;:::i;:::-;17473:2;17468:3;17464:12;17457:19;;17116:366;;;:::o;17488:419::-;17654:4;17692:2;17681:9;17677:18;17669:26;;17741:9;17735:4;17731:20;17727:1;17716:9;17712:17;17705:47;17769:131;17895:4;17769:131;:::i;:::-;17761:139;;17488:419;;;:::o;17913:223::-;18053:34;18049:1;18041:6;18037:14;18030:58;18122:6;18117:2;18109:6;18105:15;18098:31;17913:223;:::o;18142:366::-;18284:3;18305:67;18369:2;18364:3;18305:67;:::i;:::-;18298:74;;18381:93;18470:3;18381:93;:::i;:::-;18499:2;18494:3;18490:12;18483:19;;18142:366;;;:::o;18514:419::-;18680:4;18718:2;18707:9;18703:18;18695:26;;18767:9;18761:4;18757:20;18753:1;18742:9;18738:17;18731:47;18795:131;18921:4;18795:131;:::i;:::-;18787:139;;18514:419;;;:::o;18939:221::-;19079:34;19075:1;19067:6;19063:14;19056:58;19148:4;19143:2;19135:6;19131:15;19124:29;18939:221;:::o;19166:366::-;19308:3;19329:67;19393:2;19388:3;19329:67;:::i;:::-;19322:74;;19405:93;19494:3;19405:93;:::i;:::-;19523:2;19518:3;19514:12;19507:19;;19166:366;;;:::o;19538:419::-;19704:4;19742:2;19731:9;19727:18;19719:26;;19791:9;19785:4;19781:20;19777:1;19766:9;19762:17;19755:47;19819:131;19945:4;19819:131;:::i;:::-;19811:139;;19538:419;;;:::o;19963:182::-;20103:34;20099:1;20091:6;20087:14;20080:58;19963:182;:::o;20151:366::-;20293:3;20314:67;20378:2;20373:3;20314:67;:::i;:::-;20307:74;;20390:93;20479:3;20390:93;:::i;:::-;20508:2;20503:3;20499:12;20492:19;;20151:366;;;:::o;20523:419::-;20689:4;20727:2;20716:9;20712:18;20704:26;;20776:9;20770:4;20766:20;20762:1;20751:9;20747:17;20740:47;20804:131;20930:4;20804:131;:::i;:::-;20796:139;;20523:419;;;:::o;20948:179::-;21088:31;21084:1;21076:6;21072:14;21065:55;20948:179;:::o;21133:366::-;21275:3;21296:67;21360:2;21355:3;21296:67;:::i;:::-;21289:74;;21372:93;21461:3;21372:93;:::i;:::-;21490:2;21485:3;21481:12;21474:19;;21133:366;;;:::o;21505:419::-;21671:4;21709:2;21698:9;21694:18;21686:26;;21758:9;21752:4;21748:20;21744:1;21733:9;21729:17;21722:47;21786:131;21912:4;21786:131;:::i;:::-;21778:139;;21505:419;;;:::o;21930:224::-;22070:34;22066:1;22058:6;22054:14;22047:58;22139:7;22134:2;22126:6;22122:15;22115:32;21930:224;:::o;22160:366::-;22302:3;22323:67;22387:2;22382:3;22323:67;:::i;:::-;22316:74;;22399:93;22488:3;22399:93;:::i;:::-;22517:2;22512:3;22508:12;22501:19;;22160:366;;;:::o;22532:419::-;22698:4;22736:2;22725:9;22721:18;22713:26;;22785:9;22779:4;22775:20;22771:1;22760:9;22756:17;22749:47;22813:131;22939:4;22813:131;:::i;:::-;22805:139;;22532:419;;;:::o;22957:222::-;23097:34;23093:1;23085:6;23081:14;23074:58;23166:5;23161:2;23153:6;23149:15;23142:30;22957:222;:::o;23185:366::-;23327:3;23348:67;23412:2;23407:3;23348:67;:::i;:::-;23341:74;;23424:93;23513:3;23424:93;:::i;:::-;23542:2;23537:3;23533:12;23526:19;;23185:366;;;:::o;23557:419::-;23723:4;23761:2;23750:9;23746:18;23738:26;;23810:9;23804:4;23800:20;23796:1;23785:9;23781:17;23774:47;23838:131;23964:4;23838:131;:::i;:::-;23830:139;;23557:419;;;:::o;23982:221::-;24122:34;24118:1;24110:6;24106:14;24099:58;24191:4;24186:2;24178:6;24174:15;24167:29;23982:221;:::o;24209:366::-;24351:3;24372:67;24436:2;24431:3;24372:67;:::i;:::-;24365:74;;24448:93;24537:3;24448:93;:::i;:::-;24566:2;24561:3;24557:12;24550:19;;24209:366;;;:::o;24581:419::-;24747:4;24785:2;24774:9;24770:18;24762:26;;24834:9;24828:4;24824:20;24820:1;24809:9;24805:17;24798:47;24862:131;24988:4;24862:131;:::i;:::-;24854:139;;24581:419;;;:::o;25006:410::-;25046:7;25069:20;25087:1;25069:20;:::i;:::-;25064:25;;25103:20;25121:1;25103:20;:::i;:::-;25098:25;;25158:1;25155;25151:9;25180:30;25198:11;25180:30;:::i;:::-;25169:41;;25359:1;25350:7;25346:15;25343:1;25340:22;25320:1;25313:9;25293:83;25270:139;;25389:18;;:::i;:::-;25270:139;25054:362;25006:410;;;;:::o;25422:180::-;25470:77;25467:1;25460:88;25567:4;25564:1;25557:15;25591:4;25588:1;25581:15;25608:185;25648:1;25665:20;25683:1;25665:20;:::i;:::-;25660:25;;25699:20;25717:1;25699:20;:::i;:::-;25694:25;;25738:1;25728:35;;25743:18;;:::i;:::-;25728:35;25785:1;25782;25778:9;25773:14;;25608:185;;;;:::o;25799:194::-;25839:4;25859:20;25877:1;25859:20;:::i;:::-;25854:25;;25893:20;25911:1;25893:20;:::i;:::-;25888:25;;25937:1;25934;25930:9;25922:17;;25961:1;25955:4;25952:11;25949:37;;;25966:18;;:::i;:::-;25949:37;25799:194;;;;:::o;25999:234::-;26139:34;26135:1;26127:6;26123:14;26116:58;26208:17;26203:2;26195:6;26191:15;26184:42;25999:234;:::o;26239:366::-;26381:3;26402:67;26466:2;26461:3;26402:67;:::i;:::-;26395:74;;26478:93;26567:3;26478:93;:::i;:::-;26596:2;26591:3;26587:12;26580:19;;26239:366;;;:::o;26611:419::-;26777:4;26815:2;26804:9;26800:18;26792:26;;26864:9;26858:4;26854:20;26850:1;26839:9;26835:17;26828:47;26892:131;27018:4;26892:131;:::i;:::-;26884:139;;26611:419;;;:::o;27036:225::-;27176:34;27172:1;27164:6;27160:14;27153:58;27245:8;27240:2;27232:6;27228:15;27221:33;27036:225;:::o;27267:366::-;27409:3;27430:67;27494:2;27489:3;27430:67;:::i;:::-;27423:74;;27506:93;27595:3;27506:93;:::i;:::-;27624:2;27619:3;27615:12;27608:19;;27267:366;;;:::o;27639:419::-;27805:4;27843:2;27832:9;27828:18;27820:26;;27892:9;27886:4;27882:20;27878:1;27867:9;27863:17;27856:47;27920:131;28046:4;27920:131;:::i;:::-;27912:139;;27639:419;;;:::o;28064:442::-;28213:4;28251:2;28240:9;28236:18;28228:26;;28264:71;28332:1;28321:9;28317:17;28308:6;28264:71;:::i;:::-;28345:72;28413:2;28402:9;28398:18;28389:6;28345:72;:::i;:::-;28427;28495:2;28484:9;28480:18;28471:6;28427:72;:::i;:::-;28064:442;;;;;;:::o;28512:147::-;28613:11;28650:3;28635:18;;28512:147;;;;:::o;28665:114::-;;:::o;28785:398::-;28944:3;28965:83;29046:1;29041:3;28965:83;:::i;:::-;28958:90;;29057:93;29146:3;29057:93;:::i;:::-;29175:1;29170:3;29166:11;29159:18;;28785:398;;;:::o;29189:379::-;29373:3;29395:147;29538:3;29395:147;:::i;:::-;29388:154;;29559:3;29552:10;;29189:379;;;:::o;29574:143::-;29631:5;29662:6;29656:13;29647:22;;29678:33;29705:5;29678:33;:::i;:::-;29574:143;;;;:::o;29723:351::-;29793:6;29842:2;29830:9;29821:7;29817:23;29813:32;29810:119;;;29848:79;;:::i;:::-;29810:119;29968:1;29993:64;30049:7;30040:6;30029:9;30025:22;29993:64;:::i;:::-;29983:74;;29939:128;29723:351;;;;:::o;30080:85::-;30125:7;30154:5;30143:16;;30080:85;;;:::o;30171:158::-;30229:9;30262:61;30280:42;30289:32;30315:5;30289:32;:::i;:::-;30280:42;:::i;:::-;30262:61;:::i;:::-;30249:74;;30171:158;;;:::o;30335:147::-;30430:45;30469:5;30430:45;:::i;:::-;30425:3;30418:58;30335:147;;:::o;30488:114::-;30555:6;30589:5;30583:12;30573:22;;30488:114;;;:::o;30608:184::-;30707:11;30741:6;30736:3;30729:19;30781:4;30776:3;30772:14;30757:29;;30608:184;;;;:::o;30798:132::-;30865:4;30888:3;30880:11;;30918:4;30913:3;30909:14;30901:22;;30798:132;;;:::o;30936:108::-;31013:24;31031:5;31013:24;:::i;:::-;31008:3;31001:37;30936:108;;:::o;31050:179::-;31119:10;31140:46;31182:3;31174:6;31140:46;:::i;:::-;31218:4;31213:3;31209:14;31195:28;;31050:179;;;;:::o;31235:113::-;31305:4;31337;31332:3;31328:14;31320:22;;31235:113;;;:::o;31384:732::-;31503:3;31532:54;31580:5;31532:54;:::i;:::-;31602:86;31681:6;31676:3;31602:86;:::i;:::-;31595:93;;31712:56;31762:5;31712:56;:::i;:::-;31791:7;31822:1;31807:284;31832:6;31829:1;31826:13;31807:284;;;31908:6;31902:13;31935:63;31994:3;31979:13;31935:63;:::i;:::-;31928:70;;32021:60;32074:6;32021:60;:::i;:::-;32011:70;;31867:224;31854:1;31851;31847:9;31842:14;;31807:284;;;31811:14;32107:3;32100:10;;31508:608;;;31384:732;;;;:::o;32122:831::-;32385:4;32423:3;32412:9;32408:19;32400:27;;32437:71;32505:1;32494:9;32490:17;32481:6;32437:71;:::i;:::-;32518:80;32594:2;32583:9;32579:18;32570:6;32518:80;:::i;:::-;32645:9;32639:4;32635:20;32630:2;32619:9;32615:18;32608:48;32673:108;32776:4;32767:6;32673:108;:::i;:::-;32665:116;;32791:72;32859:2;32848:9;32844:18;32835:6;32791:72;:::i;:::-;32873:73;32941:3;32930:9;32926:19;32917:6;32873:73;:::i;:::-;32122:831;;;;;;;;:::o;32959:807::-;33208:4;33246:3;33235:9;33231:19;33223:27;;33260:71;33328:1;33317:9;33313:17;33304:6;33260:71;:::i;:::-;33341:72;33409:2;33398:9;33394:18;33385:6;33341:72;:::i;:::-;33423:80;33499:2;33488:9;33484:18;33475:6;33423:80;:::i;:::-;33513;33589:2;33578:9;33574:18;33565:6;33513:80;:::i;:::-;33603:73;33671:3;33660:9;33656:19;33647:6;33603:73;:::i;:::-;33686;33754:3;33743:9;33739:19;33730:6;33686:73;:::i;:::-;32959:807;;;;;;;;;:::o;33772:143::-;33829:5;33860:6;33854:13;33845:22;;33876:33;33903:5;33876:33;:::i;:::-;33772:143;;;;:::o;33921:663::-;34009:6;34017;34025;34074:2;34062:9;34053:7;34049:23;34045:32;34042:119;;;34080:79;;:::i;:::-;34042:119;34200:1;34225:64;34281:7;34272:6;34261:9;34257:22;34225:64;:::i;:::-;34215:74;;34171:128;34338:2;34364:64;34420:7;34411:6;34400:9;34396:22;34364:64;:::i;:::-;34354:74;;34309:129;34477:2;34503:64;34559:7;34550:6;34539:9;34535:22;34503:64;:::i;:::-;34493:74;;34448:129;33921:663;;;;;:::o

Swarm Source

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