ETH Price: $2,604.72 (-2.47%)

Token

Multi Stake (MS)
 

Overview

Max Total Supply

1,000,000,000,000 MS

Holders

45

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
13,587,936,143.135556593 MS

Value
$0.00
0x793ae5e6e3196bca720f1eb95521f622b432a1ea
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:
MultiStake

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-11-25
*/

/**

*/

/*
https://t.me/MultiStakeToken
Tokenomics:
4% For Marketing
4% Buy-Backs
3% Redistribution for holders

 */
// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.6.12;

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

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

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

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

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

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

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

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

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

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

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

            return c;
        }

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

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

            return c;
        }

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

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

            return c;
        }

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

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

            return c;
        }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        function geUnlockTime() public view returns (uint256) {
            return _lockTime;
        }

        //Locks the contract for owner for the amount of time provided
        function lock(uint256 time) public virtual onlyOwner {
            _previousOwner = _owner;
            _owner = address(0);
            _lockTime = now + time;
            emit OwnershipTransferred(_owner, address(0));
        }
        
        //Unlocks the contract for owner when _lockTime is exceeds
        function unlock() public virtual {
            require(_previousOwner == msg.sender, "You don't have permission to unlock");
            require(now > _lockTime , "Contract is locked until 7 days");
            emit OwnershipTransferred(_owner, _previousOwner);
            _owner = _previousOwner;
        }
    }  

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

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

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

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

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

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

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

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

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

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

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

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

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

        function initialize(address, address) external;
    }

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

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

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

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

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

    // Contract implementation
    contract MultiStake is Context, IERC20, Ownable {
        using SafeMath for uint256;
        using Address for address;

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

        mapping (address => bool) private _isExcludedFromFee;

        mapping (address => bool) private _isExcluded;
        address[] private _excluded;
    
        uint256 private constant MAX = ~uint256(0);
        uint256 private _tTotal = 1000000000000 * 10**9;
        uint256 private _rTotal = (MAX - (MAX % _tTotal));
        uint256 private _tFeeTotal;

        string private _name = 'Multi Stake';
        string private _symbol = 'MS';
        uint8 private _decimals = 9;
        
        uint256 private _taxFee = 10; 
        uint256 private _developmentFee = 4;
        uint256 private _previousTaxFee = _taxFee;
        uint256 private _previousDevelopmentFee = _developmentFee;

        address payable public _developmentWalletAddress;
        address payable public _marketingWalletAddress;
        
        
        IUniswapV2Router02 public immutable uniswapV2Router;
        address public immutable uniswapV2Pair;

        bool inSwap = false;
        bool public swapEnabled = true;

        uint256 private _maxTxAmount = 50000000000e9;
        // We will set a minimum amount of tokens to be swaped => 5M
        uint256 private _numOfTokensToExchangeForDevelopment = 5 * 10**3 * 10**9;

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

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

        constructor (address payable developmentWalletAddress, address payable marketingWalletAddress) public {
            _developmentWalletAddress = developmentWalletAddress;
            _marketingWalletAddress = marketingWalletAddress;
            _rOwned[_msgSender()] = _rTotal;

            IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 
            uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
                .createPair(address(this), _uniswapV2Router.WETH());

            
            uniswapV2Router = _uniswapV2Router;

            
            _isExcludedFromFee[owner()] = true;
            _isExcludedFromFee[address(this)] = true;
            _isExcludedFromFee[_developmentWalletAddress] = true;
            _isExcludedFromFee[_marketingWalletAddress] = true;

            emit Transfer(address(0), _msgSender(), _tTotal);
        }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        function removeAllFee() private {
            if(_taxFee == 0 && _developmentFee == 0) return;
            
            _previousTaxFee = _taxFee;
            _previousDevelopmentFee = _developmentFee;
            
            _taxFee = 0;
            _developmentFee = 0;
        }
    
        function restoreAllFee() private {
            _taxFee = _previousTaxFee;
            _developmentFee = _previousDevelopmentFee;
        }
    
        function isExcludedFromFee(address account) public view returns(bool) {
            return _isExcludedFromFee[account];
        }

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

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

        function _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(sender != owner() && recipient != owner())
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");

            
            uint256 contractTokenBalance = balanceOf(address(this));
            
            if(contractTokenBalance >= _maxTxAmount)
            {
                contractTokenBalance = _maxTxAmount;
            }
            
            bool overMinTokenBalance = contractTokenBalance >= _numOfTokensToExchangeForDevelopment;
            if (!inSwap && swapEnabled && overMinTokenBalance && sender != uniswapV2Pair) {
                
                swapTokensForEth(contractTokenBalance);
                
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToDevelopment(address(this).balance);
                }
            }
            
            
            bool takeFee = true;
            
            
            if(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]){
                takeFee = false;
            }
            
            
            _tokenTransfer(sender,recipient,amount,takeFee);
        }

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

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

            
            uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
                tokenAmount,
                0, 
                path,
                address(this),
                block.timestamp
            );
        }
        
        function sendETHToDevelopment(uint256 amount) private {
            _developmentWalletAddress.transfer(amount.mul(2).div(6));
            _marketingWalletAddress.transfer(amount.mul(2).div(6));
            
        }
        
        
        function manualSwap() external onlyOwner() {
            uint256 contractBalance = balanceOf(address(this));
            swapTokensForEth(contractBalance);
        }
        
        function manualSend() external onlyOwner() {
            uint256 contractETHBalance = address(this).balance;
            sendETHToDevelopment(contractETHBalance);
        }

        function setSwapEnabled(bool enabled) external onlyOwner(){
            swapEnabled = enabled;
        }
        
        function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private {
            if(!takeFee)
                removeAllFee();

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

            if(!takeFee)
                restoreAllFee();
        }

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

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

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

        function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
            (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tDevelopment) = _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);   
            _takeDevelopment(tDevelopment);         
            _reflectFee(rFee, tFee);
            emit Transfer(sender, recipient, tTransferAmount);
        }

        function _takeDevelopment(uint256 tDevelopment) private {
            uint256 currentRate =  _getRate();
            uint256 rDevelopment = tDevelopment.mul(currentRate);
            _rOwned[address(this)] = _rOwned[address(this)].add(rDevelopment);
            if(_isExcluded[address(this)])
                _tOwned[address(this)] = _tOwned[address(this)].add(tDevelopment);
        }

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

         
        receive() external payable {}

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

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

        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);
        }
        
        function _getTaxFee() private view returns(uint256) {
            return _taxFee;
        }

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

        function _getETHBalance() public view returns(uint256 balance) {
            return address(this).balance;
        }
        
        function _setTaxFee(uint256 taxFee) external onlyOwner() {
            require(taxFee >= 0 && taxFee <= 25, 'taxFee should be in 0 - 25');
            _taxFee = taxFee;
        }

        function _setDevelopmentFee(uint256 developmentFee) external onlyOwner() {
            require(developmentFee >= 1 && developmentFee <= 25, 'developmentFee should be in 1 - 25');
            _developmentFee = developmentFee;
        }
        
        function _setDevelopmentWallet(address payable developmentWalletAddress) external onlyOwner() {
            _developmentWalletAddress = developmentWalletAddress;
        }
                
        function _setMarketingWallet(address payable marketingWalletAddress) external onlyOwner() {
            _marketingWalletAddress = marketingWalletAddress;
        }
        
        function _setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
            _maxTxAmount = maxTxAmount;
        }
    }

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address payable","name":"developmentWalletAddress","type":"address"},{"internalType":"address payable","name":"marketingWalletAddress","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":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_developmentWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_getETHBalance","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"developmentFee","type":"uint256"}],"name":"_setDevelopmentFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"developmentWalletAddress","type":"address"}],"name":"_setDevelopmentWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketingWalletAddress","type":"address"}],"name":"_setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"_setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"_setTaxFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"geUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052683635c9adc5dea00000600955600954600019816200001f57fe5b0660001903600a556040518060400160405280600b81526020017f4d756c7469205374616b65000000000000000000000000000000000000000000815250600c908051906020019062000074929190620007cb565b506040518060400160405280600281526020017f4d53000000000000000000000000000000000000000000000000000000000000815250600d9080519060200190620000c2929190620007cb565b506009600e60006101000a81548160ff021916908360ff160217905550600a600f556004601055600f5460115560105460125560006014806101000a81548160ff0219169083151502179055506001601460156101000a81548160ff0219169083151502179055506802b5e3af16b188000060155565048c273950006016553480156200014e57600080fd5b5060405162005afb38038062005afb833981810160405260408110156200017457600080fd5b8101908080519060200190929190805190602001909291905050506000620001a16200079a60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35081601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a5460036000620002d86200079a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200037657600080fd5b505afa1580156200038b573d6000803e3d6000fd5b505050506040513d6020811015620003a257600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200041657600080fd5b505afa1580156200042b573d6000803e3d6000fd5b505050506040513d60208110156200044257600080fd5b81019080805190602001909291905050506040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015620004bd57600080fd5b505af1158015620004d2573d6000803e3d6000fd5b505050506040513d6020811015620004e957600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250506001600660006200057d620007a260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200072a6200079a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009546040518082815260200191505060405180910390a350505062000871565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200080e57805160ff19168380011785556200083f565b828001600101855582156200083f579182015b828111156200083e57825182559160200191906001019062000821565b5b5090506200084e919062000852565b5090565b5b808211156200086d57600081600090555060010162000853565b5090565b60805160601c60a05160601c61524c620008af600039806115b352806134a1525080610eec52806138fb52806139e75280613a0e525061524c6000f3fe60806040526004361061023f5760003560e01c806370a082311161012e578063dd467064116100ab578063f2fde38b1161006f578063f2fde38b14610d01578063f429389014610d52578063f815a84214610d69578063f84354f114610d94578063fbeb37be14610de557610246565b8063dd46706414610b62578063dd62ed3e14610b9d578063e01af92c14610c22578063e53a606f14610c5f578063f2cc0c1814610cb057610246565b8063a69df4b5116100f2578063a69df4b5146109eb578063a9059cbb14610a02578063af9549e014610a73578063b6c5232414610ad0578063cba0e99614610afb57610246565b806370a082311461082d578063715018a6146108925780638da5cb5b146108a957806395d89b41146108ea578063a457c2d71461097a57610246565b8063313ce567116101bc57806349bd5a5e1161018057806349bd5a5e1461070657806351bc3c85146107475780635342acb41461075e5780635880b873146107c55780636ddd17131461080057610246565b8063313ce5671461059057806339509351146105be5780633bd5d1731461062f5780634144d9e41461066a5780634549b039146106ab57610246565b80631bbae6e0116102035780631bbae6e0146103e35780631ff53b601461041e57806323b872dd1461046f57806325250c71146105005780632d8381191461054157610246565b806306fdde031461024b578063095ea7b3146102db57806313114a9d1461034c5780631694505e1461037757806318160ddd146103b857610246565b3661024657005b600080fd5b34801561025757600080fd5b50610260610e20565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102a0578082015181840152602081019050610285565b50505050905090810190601f1680156102cd5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102e757600080fd5b50610334600480360360408110156102fe57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ec2565b60405180821515815260200191505060405180910390f35b34801561035857600080fd5b50610361610ee0565b6040518082815260200191505060405180910390f35b34801561038357600080fd5b5061038c610eea565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103c457600080fd5b506103cd610f0e565b6040518082815260200191505060405180910390f35b3480156103ef57600080fd5b5061041c6004803603602081101561040657600080fd5b8101908080359060200190929190505050610f18565b005b34801561042a57600080fd5b5061046d6004803603602081101561044157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610fea565b005b34801561047b57600080fd5b506104e86004803603606081101561049257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506110f6565b60405180821515815260200191505060405180910390f35b34801561050c57600080fd5b506105156111cf565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561054d57600080fd5b5061057a6004803603602081101561056457600080fd5b81019080803590602001909291905050506111f5565b6040518082815260200191505060405180910390f35b34801561059c57600080fd5b506105a5611279565b604051808260ff16815260200191505060405180910390f35b3480156105ca57600080fd5b50610617600480360360408110156105e157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611290565b60405180821515815260200191505060405180910390f35b34801561063b57600080fd5b506106686004803603602081101561065257600080fd5b8101908080359060200190929190505050611343565b005b34801561067657600080fd5b5061067f6114d4565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156106b757600080fd5b506106f0600480360360408110156106ce57600080fd5b81019080803590602001909291908035151590602001909291905050506114fa565b6040518082815260200191505060405180910390f35b34801561071257600080fd5b5061071b6115b1565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561075357600080fd5b5061075c6115d5565b005b34801561076a57600080fd5b506107ad6004803603602081101561078157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116b6565b60405180821515815260200191505060405180910390f35b3480156107d157600080fd5b506107fe600480360360208110156107e857600080fd5b810190808035906020019092919050505061170c565b005b34801561080c57600080fd5b50610815611862565b60405180821515815260200191505060405180910390f35b34801561083957600080fd5b5061087c6004803603602081101561085057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611875565b6040518082815260200191505060405180910390f35b34801561089e57600080fd5b506108a7611960565b005b3480156108b557600080fd5b506108be611ae6565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156108f657600080fd5b506108ff611b0f565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561093f578082015181840152602081019050610924565b50505050905090810190601f16801561096c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561098657600080fd5b506109d36004803603604081101561099d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611bb1565b60405180821515815260200191505060405180910390f35b3480156109f757600080fd5b50610a00611c7e565b005b348015610a0e57600080fd5b50610a5b60048036036040811015610a2557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e9b565b60405180821515815260200191505060405180910390f35b348015610a7f57600080fd5b50610ace60048036036040811015610a9657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611eb9565b005b348015610adc57600080fd5b50610ae5611fdc565b6040518082815260200191505060405180910390f35b348015610b0757600080fd5b50610b4a60048036036020811015610b1e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611fe6565b60405180821515815260200191505060405180910390f35b348015610b6e57600080fd5b50610b9b60048036036020811015610b8557600080fd5b810190808035906020019092919050505061203c565b005b348015610ba957600080fd5b50610c0c60048036036040811015610bc057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061222d565b6040518082815260200191505060405180910390f35b348015610c2e57600080fd5b50610c5d60048036036020811015610c4557600080fd5b810190808035151590602001909291905050506122b4565b005b348015610c6b57600080fd5b50610cae60048036036020811015610c8257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612399565b005b348015610cbc57600080fd5b50610cff60048036036020811015610cd357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506124a5565b005b348015610d0d57600080fd5b50610d5060048036036020811015610d2457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612858565b005b348015610d5e57600080fd5b50610d67612a63565b005b348015610d7557600080fd5b50610d7e612b3c565b6040518082815260200191505060405180910390f35b348015610da057600080fd5b50610de360048036036020811015610db757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b44565b005b348015610df157600080fd5b50610e1e60048036036020811015610e0857600080fd5b8101908080359060200190929190505050612ece565b005b6060600c8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610eb85780601f10610e8d57610100808354040283529160200191610eb8565b820191906000526020600020905b815481529060010190602001808311610e9b57829003601f168201915b5050505050905090565b6000610ed6610ecf613007565b848461300f565b6001905092915050565b6000600b54905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600954905090565b610f20613007565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fe0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060158190555050565b610ff2613007565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000611103848484613206565b6111c48461110f613007565b6111bf856040518060600160405280602881526020016150e760289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611175613007565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135dd9092919063ffffffff16565b61300f565b600190509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600a54821115611252576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061502c602a913960400191505060405180910390fd5b600061125c61369d565b905061127181846136c890919063ffffffff16565b915050919050565b6000600e60009054906101000a900460ff16905090565b600061133961129d613007565b8461133485600560006112ae613007565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461371290919063ffffffff16565b61300f565b6001905092915050565b600061134d613007565b9050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156113f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806151a3602c913960400191505060405180910390fd5b60006113fd8361379a565b5050505050905061145681600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461380190919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506114ae81600a5461380190919063ffffffff16565b600a819055506114c983600b5461371290919063ffffffff16565b600b81905550505050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600954831115611574576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b816115945760006115848461379a565b50505050509050809150506115ab565b600061159f8461379a565b50505050915050809150505b92915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6115dd613007565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461169d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60006116a830611875565b90506116b38161384b565b50565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611714613007565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600081101580156117e6575060198111155b611858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f7461784665652073686f756c6420626520696e2030202d20323500000000000081525060200191505060405180910390fd5b80600f8190555050565b601460159054906101000a900460ff1681565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561191057600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061195b565b611958600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111f5565b90505b919050565b611968613007565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a28576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600d8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611ba75780601f10611b7c57610100808354040283529160200191611ba7565b820191906000526020600020905b815481529060010190602001808311611b8a57829003601f168201915b5050505050905090565b6000611c74611bbe613007565b84611c6f856040518060600160405280602581526020016151f26025913960056000611be8613007565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135dd9092919063ffffffff16565b61300f565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d24576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806151cf6023913960400191505060405180910390fd5b6002544211611d9b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f6e7472616374206973206c6f636b656420756e74696c203720646179730081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000611eaf611ea8613007565b8484613206565b6001905092915050565b611ec1613007565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f81576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600254905090565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b612044613007565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612104576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550804201600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6122bc613007565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461237c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601460156101000a81548160ff02191690831515021790555050565b6123a1613007565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612461576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6124ad613007565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461256d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612606576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806151816022913960400191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156126c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561279a57612756600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111f5565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612860613007565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612920576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156129a6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806150566026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612a6b613007565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b2b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000479050612b3981613b2d565b50565b600047905090565b612b4c613007565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c0c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612ccb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b60005b600880549050811015612eca578173ffffffffffffffffffffffffffffffffffffffff1660088281548110612cff57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612ebd57600860016008805490500381548110612d5b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660088281548110612d9357fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008805480612e8357fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055612eca565b8080600101915050612cce565b5050565b612ed6613007565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612f96576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60018110158015612fa8575060198111155b612ffd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061500a6022913960400191505060405180910390fd5b8060108190555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613095576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061515d6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561311b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061507c6022913960400191505060405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561328c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806151386025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613312576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180614fe76023913960400191505060405180910390fd5b6000811161336b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602981526020018061510f6029913960400191505060405180910390fd5b613373611ae6565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156133e157506133b1611ae6565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561344257601554811115613441576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061509e6028913960400191505060405180910390fd5b5b600061344d30611875565b9050601554811061345e5760155490505b6000601654821015905060148054906101000a900460ff1615801561348f5750601460159054906101000a900460ff165b80156134985750805b80156134f057507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15613518576134fe8261384b565b600047905060008111156135165761351547613b2d565b5b505b600060019050600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806135bf5750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156135c957600090505b6135d586868684613c4e565b505050505050565b600083831115829061368a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561364f578082015181840152602081019050613634565b50505050905090810190601f16801561367c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008060006136aa613f5f565b915091506136c181836136c890919063ffffffff16565b9250505090565b600061370a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506141f0565b905092915050565b600080828401905083811015613790576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008060008060008060008060006137b78a600f546010546142b6565b92509250925060006137c761369d565b905060008060006137d98e878661434c565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061384383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506135dd565b905092915050565b60016014806101000a81548160ff0219169083151502179055506060600267ffffffffffffffff8111801561387f57600080fd5b506040519080825280602002602001820160405280156138ae5781602001602082028036833780820191505090505b50905030816000815181106138bf57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561395f57600080fd5b505afa158015613973573d6000803e3d6000fd5b505050506040513d602081101561398957600080fd5b8101908080519060200190929190505050816001815181106139a757fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613a0c307f00000000000000000000000000000000000000000000000000000000000000008461300f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015613ace578082015181840152602081019050613ab3565b505050509050019650505050505050600060405180830381600087803b158015613af757600080fd5b505af1158015613b0b573d6000803e3d6000fd5b505050505060006014806101000a81548160ff02191690831515021790555050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc613b906006613b826002866143aa90919063ffffffff16565b6136c890919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015613bbb573d6000803e3d6000fd5b50601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc613c1f6006613c116002866143aa90919063ffffffff16565b6136c890919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015613c4a573d6000803e3d6000fd5b5050565b80613c5c57613c5b614430565b5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613cff5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613d1457613d0f848484614473565b613f4b565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613db75750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613dcc57613dc78484846146d3565b613f4a565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613e705750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613e8557613e80848484614933565b613f49565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613f275750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613f3c57613f37848484614afe565b613f48565b613f47848484614933565b5b5b5b5b80613f5957613f58614df3565b5b50505050565b6000806000600a5490506000600954905060005b6008805490508110156141b357826003600060088481548110613f9257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180614079575081600460006008848154811061401157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561409057600a54600954945094505050506141ec565b61411960036000600884815481106140a457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461380190919063ffffffff16565b92506141a4600460006008848154811061412f57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361380190919063ffffffff16565b91508080600101915050613f73565b506141cb600954600a546136c890919063ffffffff16565b8210156141e357600a546009549350935050506141ec565b81819350935050505b9091565b6000808311829061429c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614261578082015181840152602081019050614246565b50505050905090810190601f16801561428e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816142a857fe5b049050809150509392505050565b6000806000806142e260646142d4888a6143aa90919063ffffffff16565b6136c890919063ffffffff16565b9050600061430c60646142fe888b6143aa90919063ffffffff16565b6136c890919063ffffffff16565b9050600061433582614327858c61380190919063ffffffff16565b61380190919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061436585886143aa90919063ffffffff16565b9050600061437c86886143aa90919063ffffffff16565b90506000614393828461380190919063ffffffff16565b905082818395509550955050505093509350939050565b6000808314156143bd576000905061442a565b60008284029050828482816143ce57fe5b0414614425576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806150c66021913960400191505060405180910390fd5b809150505b92915050565b6000600f5414801561444457506000601054145b1561444e57614471565b600f546011819055506010546012819055506000600f8190555060006010819055505b565b6000806000806000806144858761379a565b9550955095509550955095506144e387600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461380190919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061457886600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461380190919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061460d85600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461371290919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061465981614e07565b6146638483614fac565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b6000806000806000806146e58761379a565b95509550955095509550955061474386600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461380190919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506147d883600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461371290919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061486d85600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461371290919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506148b981614e07565b6148c38483614fac565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b6000806000806000806149458761379a565b9550955095509550955095506149a386600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461380190919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614a3885600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461371290919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614a8481614e07565b614a8e8483614fac565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080614b108761379a565b955095509550955095509550614b6e87600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461380190919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614c0386600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461380190919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614c9883600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461371290919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614d2d85600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461371290919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614d7981614e07565b614d838483614fac565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b601154600f81905550601254601081905550565b6000614e1161369d565b90506000614e2882846143aa90919063ffffffff16565b9050614e7c81600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461371290919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615614fa757614f6383600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461371290919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b614fc182600a5461380190919063ffffffff16565b600a81905550614fdc81600b5461371290919063ffffffff16565b600b81905550505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373646576656c6f706d656e744665652073686f756c6420626520696e2031202d203235416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573735472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737357652063616e206e6f74206578636c75646520556e697377617020726f757465722e4578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6f636b45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220782a7e0ab2fb1e7bd4dbd5d8542c632db049263a5fa2dc5f2f5d342fa516ee8964736f6c634300060c00330000000000000000000000006352abb9a8a7ca2b6db9c2c23a7b0c27683e9ead0000000000000000000000006352abb9a8a7ca2b6db9c2c23a7b0c27683e9ead

Deployed Bytecode

0x60806040526004361061023f5760003560e01c806370a082311161012e578063dd467064116100ab578063f2fde38b1161006f578063f2fde38b14610d01578063f429389014610d52578063f815a84214610d69578063f84354f114610d94578063fbeb37be14610de557610246565b8063dd46706414610b62578063dd62ed3e14610b9d578063e01af92c14610c22578063e53a606f14610c5f578063f2cc0c1814610cb057610246565b8063a69df4b5116100f2578063a69df4b5146109eb578063a9059cbb14610a02578063af9549e014610a73578063b6c5232414610ad0578063cba0e99614610afb57610246565b806370a082311461082d578063715018a6146108925780638da5cb5b146108a957806395d89b41146108ea578063a457c2d71461097a57610246565b8063313ce567116101bc57806349bd5a5e1161018057806349bd5a5e1461070657806351bc3c85146107475780635342acb41461075e5780635880b873146107c55780636ddd17131461080057610246565b8063313ce5671461059057806339509351146105be5780633bd5d1731461062f5780634144d9e41461066a5780634549b039146106ab57610246565b80631bbae6e0116102035780631bbae6e0146103e35780631ff53b601461041e57806323b872dd1461046f57806325250c71146105005780632d8381191461054157610246565b806306fdde031461024b578063095ea7b3146102db57806313114a9d1461034c5780631694505e1461037757806318160ddd146103b857610246565b3661024657005b600080fd5b34801561025757600080fd5b50610260610e20565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102a0578082015181840152602081019050610285565b50505050905090810190601f1680156102cd5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102e757600080fd5b50610334600480360360408110156102fe57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ec2565b60405180821515815260200191505060405180910390f35b34801561035857600080fd5b50610361610ee0565b6040518082815260200191505060405180910390f35b34801561038357600080fd5b5061038c610eea565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103c457600080fd5b506103cd610f0e565b6040518082815260200191505060405180910390f35b3480156103ef57600080fd5b5061041c6004803603602081101561040657600080fd5b8101908080359060200190929190505050610f18565b005b34801561042a57600080fd5b5061046d6004803603602081101561044157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610fea565b005b34801561047b57600080fd5b506104e86004803603606081101561049257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506110f6565b60405180821515815260200191505060405180910390f35b34801561050c57600080fd5b506105156111cf565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561054d57600080fd5b5061057a6004803603602081101561056457600080fd5b81019080803590602001909291905050506111f5565b6040518082815260200191505060405180910390f35b34801561059c57600080fd5b506105a5611279565b604051808260ff16815260200191505060405180910390f35b3480156105ca57600080fd5b50610617600480360360408110156105e157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611290565b60405180821515815260200191505060405180910390f35b34801561063b57600080fd5b506106686004803603602081101561065257600080fd5b8101908080359060200190929190505050611343565b005b34801561067657600080fd5b5061067f6114d4565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156106b757600080fd5b506106f0600480360360408110156106ce57600080fd5b81019080803590602001909291908035151590602001909291905050506114fa565b6040518082815260200191505060405180910390f35b34801561071257600080fd5b5061071b6115b1565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561075357600080fd5b5061075c6115d5565b005b34801561076a57600080fd5b506107ad6004803603602081101561078157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116b6565b60405180821515815260200191505060405180910390f35b3480156107d157600080fd5b506107fe600480360360208110156107e857600080fd5b810190808035906020019092919050505061170c565b005b34801561080c57600080fd5b50610815611862565b60405180821515815260200191505060405180910390f35b34801561083957600080fd5b5061087c6004803603602081101561085057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611875565b6040518082815260200191505060405180910390f35b34801561089e57600080fd5b506108a7611960565b005b3480156108b557600080fd5b506108be611ae6565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156108f657600080fd5b506108ff611b0f565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561093f578082015181840152602081019050610924565b50505050905090810190601f16801561096c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561098657600080fd5b506109d36004803603604081101561099d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611bb1565b60405180821515815260200191505060405180910390f35b3480156109f757600080fd5b50610a00611c7e565b005b348015610a0e57600080fd5b50610a5b60048036036040811015610a2557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e9b565b60405180821515815260200191505060405180910390f35b348015610a7f57600080fd5b50610ace60048036036040811015610a9657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611eb9565b005b348015610adc57600080fd5b50610ae5611fdc565b6040518082815260200191505060405180910390f35b348015610b0757600080fd5b50610b4a60048036036020811015610b1e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611fe6565b60405180821515815260200191505060405180910390f35b348015610b6e57600080fd5b50610b9b60048036036020811015610b8557600080fd5b810190808035906020019092919050505061203c565b005b348015610ba957600080fd5b50610c0c60048036036040811015610bc057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061222d565b6040518082815260200191505060405180910390f35b348015610c2e57600080fd5b50610c5d60048036036020811015610c4557600080fd5b810190808035151590602001909291905050506122b4565b005b348015610c6b57600080fd5b50610cae60048036036020811015610c8257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612399565b005b348015610cbc57600080fd5b50610cff60048036036020811015610cd357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506124a5565b005b348015610d0d57600080fd5b50610d5060048036036020811015610d2457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612858565b005b348015610d5e57600080fd5b50610d67612a63565b005b348015610d7557600080fd5b50610d7e612b3c565b6040518082815260200191505060405180910390f35b348015610da057600080fd5b50610de360048036036020811015610db757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b44565b005b348015610df157600080fd5b50610e1e60048036036020811015610e0857600080fd5b8101908080359060200190929190505050612ece565b005b6060600c8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610eb85780601f10610e8d57610100808354040283529160200191610eb8565b820191906000526020600020905b815481529060010190602001808311610e9b57829003601f168201915b5050505050905090565b6000610ed6610ecf613007565b848461300f565b6001905092915050565b6000600b54905090565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600954905090565b610f20613007565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fe0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060158190555050565b610ff2613007565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000611103848484613206565b6111c48461110f613007565b6111bf856040518060600160405280602881526020016150e760289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611175613007565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135dd9092919063ffffffff16565b61300f565b600190509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600a54821115611252576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061502c602a913960400191505060405180910390fd5b600061125c61369d565b905061127181846136c890919063ffffffff16565b915050919050565b6000600e60009054906101000a900460ff16905090565b600061133961129d613007565b8461133485600560006112ae613007565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461371290919063ffffffff16565b61300f565b6001905092915050565b600061134d613007565b9050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156113f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806151a3602c913960400191505060405180910390fd5b60006113fd8361379a565b5050505050905061145681600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461380190919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506114ae81600a5461380190919063ffffffff16565b600a819055506114c983600b5461371290919063ffffffff16565b600b81905550505050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600954831115611574576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b816115945760006115848461379a565b50505050509050809150506115ab565b600061159f8461379a565b50505050915050809150505b92915050565b7f0000000000000000000000000fda73673b007a3ac4e9d459c2e420ae2718b39181565b6115dd613007565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461169d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60006116a830611875565b90506116b38161384b565b50565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611714613007565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600081101580156117e6575060198111155b611858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f7461784665652073686f756c6420626520696e2030202d20323500000000000081525060200191505060405180910390fd5b80600f8190555050565b601460159054906101000a900460ff1681565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561191057600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061195b565b611958600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111f5565b90505b919050565b611968613007565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a28576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600d8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611ba75780601f10611b7c57610100808354040283529160200191611ba7565b820191906000526020600020905b815481529060010190602001808311611b8a57829003601f168201915b5050505050905090565b6000611c74611bbe613007565b84611c6f856040518060600160405280602581526020016151f26025913960056000611be8613007565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135dd9092919063ffffffff16565b61300f565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d24576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806151cf6023913960400191505060405180910390fd5b6002544211611d9b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f6e7472616374206973206c6f636b656420756e74696c203720646179730081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000611eaf611ea8613007565b8484613206565b6001905092915050565b611ec1613007565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f81576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600254905090565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b612044613007565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612104576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550804201600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6122bc613007565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461237c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601460156101000a81548160ff02191690831515021790555050565b6123a1613007565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612461576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6124ad613007565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461256d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612606576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806151816022913960400191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156126c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561279a57612756600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111f5565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612860613007565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612920576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156129a6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806150566026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612a6b613007565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b2b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000479050612b3981613b2d565b50565b600047905090565b612b4c613007565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c0c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612ccb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b60005b600880549050811015612eca578173ffffffffffffffffffffffffffffffffffffffff1660088281548110612cff57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612ebd57600860016008805490500381548110612d5b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660088281548110612d9357fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008805480612e8357fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055612eca565b8080600101915050612cce565b5050565b612ed6613007565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612f96576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60018110158015612fa8575060198111155b612ffd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061500a6022913960400191505060405180910390fd5b8060108190555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613095576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061515d6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561311b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061507c6022913960400191505060405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561328c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806151386025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613312576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180614fe76023913960400191505060405180910390fd5b6000811161336b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602981526020018061510f6029913960400191505060405180910390fd5b613373611ae6565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156133e157506133b1611ae6565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561344257601554811115613441576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061509e6028913960400191505060405180910390fd5b5b600061344d30611875565b9050601554811061345e5760155490505b6000601654821015905060148054906101000a900460ff1615801561348f5750601460159054906101000a900460ff165b80156134985750805b80156134f057507f0000000000000000000000000fda73673b007a3ac4e9d459c2e420ae2718b39173ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15613518576134fe8261384b565b600047905060008111156135165761351547613b2d565b5b505b600060019050600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806135bf5750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156135c957600090505b6135d586868684613c4e565b505050505050565b600083831115829061368a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561364f578082015181840152602081019050613634565b50505050905090810190601f16801561367c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008060006136aa613f5f565b915091506136c181836136c890919063ffffffff16565b9250505090565b600061370a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506141f0565b905092915050565b600080828401905083811015613790576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008060008060008060008060006137b78a600f546010546142b6565b92509250925060006137c761369d565b905060008060006137d98e878661434c565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061384383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506135dd565b905092915050565b60016014806101000a81548160ff0219169083151502179055506060600267ffffffffffffffff8111801561387f57600080fd5b506040519080825280602002602001820160405280156138ae5781602001602082028036833780820191505090505b50905030816000815181106138bf57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561395f57600080fd5b505afa158015613973573d6000803e3d6000fd5b505050506040513d602081101561398957600080fd5b8101908080519060200190929190505050816001815181106139a757fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613a0c307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461300f565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015613ace578082015181840152602081019050613ab3565b505050509050019650505050505050600060405180830381600087803b158015613af757600080fd5b505af1158015613b0b573d6000803e3d6000fd5b505050505060006014806101000a81548160ff02191690831515021790555050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc613b906006613b826002866143aa90919063ffffffff16565b6136c890919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015613bbb573d6000803e3d6000fd5b50601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc613c1f6006613c116002866143aa90919063ffffffff16565b6136c890919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015613c4a573d6000803e3d6000fd5b5050565b80613c5c57613c5b614430565b5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613cff5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613d1457613d0f848484614473565b613f4b565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613db75750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613dcc57613dc78484846146d3565b613f4a565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613e705750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613e8557613e80848484614933565b613f49565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613f275750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613f3c57613f37848484614afe565b613f48565b613f47848484614933565b5b5b5b5b80613f5957613f58614df3565b5b50505050565b6000806000600a5490506000600954905060005b6008805490508110156141b357826003600060088481548110613f9257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180614079575081600460006008848154811061401157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561409057600a54600954945094505050506141ec565b61411960036000600884815481106140a457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461380190919063ffffffff16565b92506141a4600460006008848154811061412f57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361380190919063ffffffff16565b91508080600101915050613f73565b506141cb600954600a546136c890919063ffffffff16565b8210156141e357600a546009549350935050506141ec565b81819350935050505b9091565b6000808311829061429c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614261578082015181840152602081019050614246565b50505050905090810190601f16801561428e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816142a857fe5b049050809150509392505050565b6000806000806142e260646142d4888a6143aa90919063ffffffff16565b6136c890919063ffffffff16565b9050600061430c60646142fe888b6143aa90919063ffffffff16565b6136c890919063ffffffff16565b9050600061433582614327858c61380190919063ffffffff16565b61380190919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061436585886143aa90919063ffffffff16565b9050600061437c86886143aa90919063ffffffff16565b90506000614393828461380190919063ffffffff16565b905082818395509550955050505093509350939050565b6000808314156143bd576000905061442a565b60008284029050828482816143ce57fe5b0414614425576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806150c66021913960400191505060405180910390fd5b809150505b92915050565b6000600f5414801561444457506000601054145b1561444e57614471565b600f546011819055506010546012819055506000600f8190555060006010819055505b565b6000806000806000806144858761379a565b9550955095509550955095506144e387600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461380190919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061457886600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461380190919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061460d85600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461371290919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061465981614e07565b6146638483614fac565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b6000806000806000806146e58761379a565b95509550955095509550955061474386600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461380190919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506147d883600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461371290919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061486d85600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461371290919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506148b981614e07565b6148c38483614fac565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b6000806000806000806149458761379a565b9550955095509550955095506149a386600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461380190919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614a3885600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461371290919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614a8481614e07565b614a8e8483614fac565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080614b108761379a565b955095509550955095509550614b6e87600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461380190919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614c0386600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461380190919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614c9883600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461371290919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614d2d85600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461371290919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614d7981614e07565b614d838483614fac565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b601154600f81905550601254601081905550565b6000614e1161369d565b90506000614e2882846143aa90919063ffffffff16565b9050614e7c81600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461371290919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615614fa757614f6383600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461371290919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b614fc182600a5461380190919063ffffffff16565b600a81905550614fdc81600b5461371290919063ffffffff16565b600b81905550505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373646576656c6f706d656e744665652073686f756c6420626520696e2031202d203235416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573735472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737357652063616e206e6f74206578636c75646520556e697377617020726f757465722e4578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6f636b45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220782a7e0ab2fb1e7bd4dbd5d8542c632db049263a5fa2dc5f2f5d342fa516ee8964736f6c634300060c0033

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

0000000000000000000000006352abb9a8a7ca2b6db9c2c23a7b0c27683e9ead0000000000000000000000006352abb9a8a7ca2b6db9c2c23a7b0c27683e9ead

-----Decoded View---------------
Arg [0] : developmentWalletAddress (address): 0x6352aBB9A8A7Ca2b6DB9c2C23a7B0c27683E9ead
Arg [1] : marketingWalletAddress (address): 0x6352aBB9A8A7Ca2b6DB9c2C23a7B0c27683E9ead

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000006352abb9a8a7ca2b6db9c2c23a7b0c27683e9ead
Arg [1] : 0000000000000000000000006352abb9a8a7ca2b6db9c2c23a7b0c27683e9ead


Deployed Bytecode Sourcemap

26651:18771:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29415:91;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30419:173;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;31767:95;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;27831:51;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;29728:103;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;45295:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;45110:165;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;30604:329;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;27695:48;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;32775:269;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;29625:91;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;30945:230;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;31874:405;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27754:46;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;32291:472;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;27893:38;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;37466:168;;;;;;;;;;;;;:::i;:::-;;34540:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;44459:181;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27974:30;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;29843:210;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16486:160;;;;;;;;;;;;;:::i;:::-;;15784:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;29518:95;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31187:281;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17593:313;;;;;;;;;;;;;:::i;:::-;;30065:179;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;31610:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17090:97;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;31480:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17271:234;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;30256:151;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;37841:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;44909:173;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;33056:475;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16818:260;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;37654:175;;;;;;;;;;;;;:::i;:::-;;44321:118;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;33543:522;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;44652:237;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;29415:91;29452:13;29489:5;29482:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29415:91;:::o;30419:173::-;30494:4;30515:39;30524:12;:10;:12::i;:::-;30538:7;30547:6;30515:8;:39::i;:::-;30576:4;30569:11;;30419:173;;;;:::o;31767:95::-;31809:7;31840:10;;31833:17;;31767:95;:::o;27831:51::-;;;:::o;29728:103::-;29781:7;29812;;29805:14;;29728:103;:::o;45295:120::-;16032:12;:10;:12::i;:::-;16022:22;;:6;;;;;;;;;;:22;;;16014:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45392:11:::1;45377:12;:26;;;;45295:120:::0;:::o;45110:165::-;16032:12;:10;:12::i;:::-;16022:22;;:6;;;;;;;;;;:22;;;16014:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45241:22:::1;45215:23;;:48;;;;;;;;;;;;;;;;;;45110:165:::0;:::o;30604:329::-;30702:4;30723:36;30733:6;30741:9;30752:6;30723:9;:36::i;:::-;30774:121;30783:6;30791:12;:10;:12::i;:::-;30805:89;30843:6;30805:89;;;;;;;;;;;;;;;;;:11;:19;30817:6;30805:19;;;;;;;;;;;;;;;:33;30825:12;:10;:12::i;:::-;30805:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;30774:8;:121::i;:::-;30917:4;30910:11;;30604:329;;;;;:::o;27695:48::-;;;;;;;;;;;;;:::o;32775:269::-;32841:7;32884;;32873;:18;;32865:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32953:19;32976:10;:8;:10::i;:::-;32953:33;;33008:24;33020:11;33008:7;:11;;:24;;;;:::i;:::-;33001:31;;;32775:269;;;:::o;29625:91::-;29666:5;29695:9;;;;;;;;;;;29688:16;;29625:91;:::o;30945:230::-;31033:4;31054:83;31063:12;:10;:12::i;:::-;31077:7;31086:50;31125:10;31086:11;:25;31098:12;:10;:12::i;:::-;31086:25;;;;;;;;;;;;;;;:34;31112:7;31086:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;31054:8;:83::i;:::-;31159:4;31152:11;;30945:230;;;;:::o;31874:405::-;31930:14;31947:12;:10;:12::i;:::-;31930:29;;31983:11;:19;31995:6;31983:19;;;;;;;;;;;;;;;;;;;;;;;;;31982:20;31974:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32067:15;32091:19;32102:7;32091:10;:19::i;:::-;32066:44;;;;;;;32143:28;32163:7;32143;:15;32151:6;32143:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;32125:7;:15;32133:6;32125:15;;;;;;;;;;;;;;;:46;;;;32196:20;32208:7;32196;;:11;;:20;;;;:::i;:::-;32186:7;:30;;;;32244:23;32259:7;32244:10;;:14;;:23;;;;:::i;:::-;32231:10;:36;;;;31874:405;;;:::o;27754:46::-;;;;;;;;;;;;;:::o;32291:472::-;32381:7;32424;;32413;:18;;32405:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32487:17;32482:270;;32526:15;32550:19;32561:7;32550:10;:19::i;:::-;32525:44;;;;;;;32595:7;32588:14;;;;;32482:270;32645:23;32676:19;32687:7;32676:10;:19::i;:::-;32643:52;;;;;;;32721:15;32714:22;;;32291:472;;;;;:::o;27893:38::-;;;:::o;37466:168::-;16032:12;:10;:12::i;:::-;16022:22;;:6;;;;;;;;;;:22;;;16014:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37524:23:::1;37550:24;37568:4;37550:9;:24::i;:::-;37524:50;;37589:33;37606:15;37589:16;:33::i;:::-;16096:1;37466:168::o:0;34540:131::-;34604:4;34632:18;:27;34651:7;34632:27;;;;;;;;;;;;;;;;;;;;;;;;;34625:34;;34540:131;;;:::o;44459:181::-;16032:12;:10;:12::i;:::-;16022:22;;:6;;;;;;;;;;:22;;;16014:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44549:1:::1;44539:6;:11;;:27;;;;;44564:2;44554:6;:12;;44539:27;44531:66;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;44622:6;44612:7;:16;;;;44459:181:::0;:::o;27974:30::-;;;;;;;;;;;;;:::o;29843:210::-;29909:7;29937:11;:20;29949:7;29937:20;;;;;;;;;;;;;;;;;;;;;;;;;29933:49;;;29966:7;:16;29974:7;29966:16;;;;;;;;;;;;;;;;29959:23;;;;29933:49;30004:37;30024:7;:16;30032:7;30024:16;;;;;;;;;;;;;;;;30004:19;:37::i;:::-;29997:44;;29843:210;;;;:::o;16486:160::-;16032:12;:10;:12::i;:::-;16022:22;;:6;;;;;;;;;;:22;;;16014:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16597:1:::1;16560:40;;16581:6;::::0;::::1;;;;;;;;16560:40;;;;;;;;;;;;16632:1;16615:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;16486:160::o:0;15784:87::-;15822:7;15853:6;;;;;;;;;;;15846:13;;15784:87;:::o;29518:95::-;29557:13;29594:7;29587:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29518:95;:::o;31187:281::-;31280:4;31301:129;31310:12;:10;:12::i;:::-;31324:7;31333:96;31372:15;31333:96;;;;;;;;;;;;;;;;;:11;:25;31345:12;:10;:12::i;:::-;31333:25;;;;;;;;;;;;;;;:34;31359:7;31333:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;31301:8;:129::i;:::-;31452:4;31445:11;;31187:281;;;;:::o;17593:313::-;17667:10;17649:28;;:14;;;;;;;;;;;:28;;;17641:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17746:9;;17740:3;:15;17732:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17841:14;;;;;;;;;;;17812:44;;17833:6;;;;;;;;;;17812:44;;;;;;;;;;;;17880:14;;;;;;;;;;;17871:6;;:23;;;;;;;;;;;;;;;;;;17593:313::o;30065:179::-;30143:4;30164:42;30174:12;:10;:12::i;:::-;30188:9;30199:6;30164:9;:42::i;:::-;30228:4;30221:11;;30065:179;;;;:::o;31610:145::-;16032:12;:10;:12::i;:::-;16022:22;;:6;;;;;;;;;;:22;;;16014:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31735:8:::1;31705:18;:27;31724:7;31705:27;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;31610:145:::0;;:::o;17090:97::-;17135:7;17166:9;;17159:16;;17090:97;:::o;31480:118::-;31538:4;31566:11;:20;31578:7;31566:20;;;;;;;;;;;;;;;;;;;;;;;;;31559:27;;31480:118;;;:::o;17271:234::-;16032:12;:10;:12::i;:::-;16022:22;;:6;;;;;;;;;;:22;;;16014:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17356:6:::1;::::0;::::1;;;;;;;;17339:14;;:23;;;;;;;;;;;;;;;;;;17394:1;17377:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;17429:4;17423:3;:10;17411:9;:22;;;;17490:1;17453:40;;17474:6;::::0;::::1;;;;;;;;17453:40;;;;;;;;;;;;17271:234:::0;:::o;30256:151::-;30337:7;30368:11;:18;30380:5;30368:18;;;;;;;;;;;;;;;:27;30387:7;30368:27;;;;;;;;;;;;;;;;30361:34;;30256:151;;;;:::o;37841:106::-;16032:12;:10;:12::i;:::-;16022:22;;:6;;;;;;;;;;:22;;;16014:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37928:7:::1;37914:11;;:21;;;;;;;;;;;;;;;;;;37841:106:::0;:::o;44909:173::-;16032:12;:10;:12::i;:::-;16022:22;;:6;;;;;;;;;;:22;;;16014:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45046:24:::1;45018:25;;:52;;;;;;;;;;;;;;;;;;44909:173:::0;:::o;33056:475::-;16032:12;:10;:12::i;:::-;16022:22;;:6;;;;;;;;;;:22;;;16014:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33152:42:::1;33141:53;;:7;:53;;;;33133:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33257:11;:20;33269:7;33257:20;;;;;;;;;;;;;;;;;;;;;;;;;33256:21;33248:61;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;33346:1;33327:7;:16;33335:7;33327:16;;;;;;;;;;;;;;;;:20;33324:116;;;33387:37;33407:7;:16;33415:7;33407:16;;;;;;;;;;;;;;;;33387:19;:37::i;:::-;33368:7;:16;33376:7;33368:16;;;;;;;;;;;;;;;:56;;;;33324:116;33477:4;33454:11;:20;33466:7;33454:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;33496:9;33511:7;33496:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33056:475:::0;:::o;16818:260::-;16032:12;:10;:12::i;:::-;16022:22;;:6;;;;;;;;;;:22;;;16014:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16931:1:::1;16911:22;;:8;:22;;;;16903:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17025:8;16996:38;;17017:6;::::0;::::1;;;;;;;;16996:38;;;;;;;;;;;;17058:8;17049:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;16818:260:::0;:::o;37654:175::-;16032:12;:10;:12::i;:::-;16022:22;;:6;;;;;;;;;;:22;;;16014:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37712:26:::1;37741:21;37712:50;;37777:40;37798:18;37777:20;:40::i;:::-;16096:1;37654:175::o:0;44321:118::-;44367:15;44406:21;44399:28;;44321:118;:::o;33543:522::-;16032:12;:10;:12::i;:::-;16022:22;;:6;;;;;;;;;;:22;;;16014:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33628:11:::1;:20;33640:7;33628:20;;;;;;;;;;;;;;;;;;;;;;;;;33620:60;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;33700:9;33695:359;33719:9;:16;;;;33715:1;:20;33695:359;;;33781:7;33765:23;;:9;33775:1;33765:12;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;33761:278;;;33828:9;33857:1;33838:9;:16;;;;:20;33828:31;;;;;;;;;;;;;;;;;;;;;;;;;33813:9;33823:1;33813:12;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;33901:1;33882:7;:16;33890:7;33882:16;;;;;;;;;;;;;;;:20;;;;33948:5;33925:11;:20;33937:7;33925:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;33976:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34014:5;;33761:278;33737:3;;;;;;;33695:359;;;;33543:522:::0;:::o;44652:237::-;16032:12;:10;:12::i;:::-;16022:22;;:6;;;;;;;;;;:22;;;16014:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44766:1:::1;44748:14;:19;;:43;;;;;44789:2;44771:14;:20;;44748:43;44740:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44863:14;44845:15;:32;;;;44652:237:::0;:::o;241:114::-;294:15;333:10;326:17;;241:114;:::o;34683:357::-;34797:1;34780:19;;:5;:19;;;;34772:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34882:1;34863:21;;:7;:21;;;;34855:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34970:6;34940:11;:18;34952:5;34940:18;;;;;;;;;;;;;;;:27;34959:7;34940:27;;;;;;;;;;;;;;;:36;;;;35012:7;34996:32;;35005:5;34996:32;;;35021:6;34996:32;;;;;;;;;;;;;;;;;;34683:357;;;:::o;35052:1569::-;35171:1;35153:20;;:6;:20;;;;35145:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35259:1;35238:23;;:9;:23;;;;35230:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35333:1;35324:6;:10;35316:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35422:7;:5;:7::i;:::-;35412:17;;:6;:17;;;;:41;;;;;35446:7;:5;:7::i;:::-;35433:20;;:9;:20;;;;35412:41;35409:138;;;35490:12;;35480:6;:22;;35472:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35409:138;35578:28;35609:24;35627:4;35609:9;:24::i;:::-;35578:55;;35689:12;;35665:20;:36;35662:124;;35758:12;;35735:35;;35662:124;35814:24;35865:36;;35841:20;:60;;35814:87;;35921:6;;;;;;;;;;35920:7;:22;;;;;35931:11;;;;;;;;;;;35920:22;:45;;;;;35946:19;35920:45;:72;;;;;35979:13;35969:23;;:6;:23;;;;35920:72;35916:387;;;36031:38;36048:20;36031:16;:38::i;:::-;36106:26;36135:21;36106:50;;36199:1;36178:18;:22;36175:113;;;36225:43;36246:21;36225:20;:43::i;:::-;36175:113;35916:387;;36345:12;36360:4;36345:19;;36410:18;:26;36429:6;36410:26;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;36440:18;:29;36459:9;36440:29;;;;;;;;;;;;;;;;;;;;;;;;;36410:59;36407:113;;;36499:5;36489:15;;36407:113;36562:47;36577:6;36584:9;36594:6;36601:7;36562:14;:47::i;:::-;35052:1569;;;;;;:::o;4768:208::-;4854:7;4891:1;4886;:6;;4894:12;4878:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4922:9;4938:1;4934;:5;4922:17;;4963:1;4956:8;;;4768:208;;;;;:::o;43293:175::-;43334:7;43359:15;43376;43395:19;:17;:19::i;:::-;43358:56;;;;43436:20;43448:7;43436;:11;;:20;;;;:::i;:::-;43429:27;;;;43293:175;:::o;6298:140::-;6356:7;6387:39;6391:1;6394;6387:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;6380:46;;6298:140;;;;:::o;3771:197::-;3829:7;3853:9;3869:1;3865;:5;3853:17;;3898:1;3893;:6;;3885:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3955:1;3948:8;;;3771:197;;;;:::o;41995:502::-;42054:7;42063;42072;42081;42090;42099;42124:23;42149:12;42163:20;42187:46;42199:7;42208;;42217:15;;42187:11;:46::i;:::-;42123:110;;;;;;42248:19;42271:10;:8;:10::i;:::-;42248:33;;42297:15;42314:23;42339:12;42355:39;42367:7;42376:4;42382:11;42355;:39::i;:::-;42296:98;;;;;;42417:7;42426:15;42443:4;42449:15;42466:4;42472:12;42409:76;;;;;;;;;;;;;;;;;;;41995:502;;;;;;;:::o;4286:144::-;4344:7;4375:43;4379:1;4382;4375:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;4368:50;;4286:144;;;;:::o;36633:563::-;28395:4;28386:6;;:13;;;;;;;;;;;;;;;;;;36728:21:::1;36766:1;36752:16;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36728:40;;36801:4;36783;36788:1;36783:7;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;36831:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;36821:4;36826:1;36821:7;;;;;;;;;;;;;:32;;;;;;;;;::::0;::::1;36870:62;36887:4;36902:15;36920:11;36870:8;:62::i;:::-;36963:15;:66;;;37048:11;37078:1;37099:4;37130;37154:15;36963:221;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;28414:1;28439:5:::0;28430:6;;:14;;;;;;;;;;;;;;;;;;36633:563;:::o;37216:220::-;37285:25;;;;;;;;;;;:34;;:56;37320:20;37338:1;37320:13;37331:1;37320:6;:10;;:13;;;;:::i;:::-;:17;;:20;;;;:::i;:::-;37285:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37356:23;;;;;;;;;;;:32;;:54;37389:20;37407:1;37389:13;37400:1;37389:6;:10;;:13;;;;:::i;:::-;:17;;:20;;;;:::i;:::-;37356:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37216:220;:::o;37967:883::-;38083:7;38079:44;;38109:14;:12;:14::i;:::-;38079:44;38144:11;:19;38156:6;38144:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;38168:11;:22;38180:9;38168:22;;;;;;;;;;;;;;;;;;;;;;;;;38167:23;38144:46;38140:637;;;38211:48;38233:6;38241:9;38252:6;38211:21;:48::i;:::-;38140:637;;;38286:11;:19;38298:6;38286:19;;;;;;;;;;;;;;;;;;;;;;;;;38285:20;:46;;;;;38309:11;:22;38321:9;38309:22;;;;;;;;;;;;;;;;;;;;;;;;;38285:46;38281:496;;;38352:46;38372:6;38380:9;38391:6;38352:19;:46::i;:::-;38281:496;;;38425:11;:19;38437:6;38425:19;;;;;;;;;;;;;;;;;;;;;;;;;38424:20;:47;;;;;38449:11;:22;38461:9;38449:22;;;;;;;;;;;;;;;;;;;;;;;;;38448:23;38424:47;38420:357;;;38492:44;38510:6;38518:9;38529:6;38492:17;:44::i;:::-;38420:357;;;38562:11;:19;38574:6;38562:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;38585:11;:22;38597:9;38585:22;;;;;;;;;;;;;;;;;;;;;;;;;38562:45;38558:219;;;38628:48;38650:6;38658:9;38669:6;38628:21;:48::i;:::-;38558:219;;;38717:44;38735:6;38743:9;38754:6;38717:17;:44::i;:::-;38558:219;38420:357;38281:496;38140:637;38797:7;38793:45;;38823:15;:13;:15::i;:::-;38793:45;37967:883;;;;:::o;43480:601::-;43530:7;43539;43563:15;43581:7;;43563:25;;43603:15;43621:7;;43603:25;;43654:9;43649:305;43673:9;:16;;;;43669:1;:20;43649:305;;;43743:7;43719;:21;43727:9;43737:1;43727:12;;;;;;;;;;;;;;;;;;;;;;;;;43719:21;;;;;;;;;;;;;;;;:31;:66;;;;43778:7;43754;:21;43762:9;43772:1;43762:12;;;;;;;;;;;;;;;;;;;;;;;;;43754:21;;;;;;;;;;;;;;;;:31;43719:66;43715:97;;;43795:7;;43804;;43787:25;;;;;;;;;43715:97;43841:34;43853:7;:21;43861:9;43871:1;43861:12;;;;;;;;;;;;;;;;;;;;;;;;;43853:21;;;;;;;;;;;;;;;;43841:7;:11;;:34;;;;:::i;:::-;43831:44;;43904:34;43916:7;:21;43924:9;43934:1;43924:12;;;;;;;;;;;;;;;;;;;;;;;;;43916:21;;;;;;;;;;;;;;;;43904:7;:11;;:34;;;;:::i;:::-;43894:44;;43691:3;;;;;;;43649:305;;;;43982:20;43994:7;;43982;;:11;;:20;;;;:::i;:::-;43972:7;:30;43968:61;;;44012:7;;44021;;44004:25;;;;;;;;43968:61;44052:7;44061;44044:25;;;;;;43480:601;;;:::o;6975:298::-;7061:7;7097:1;7093;:5;7100:12;7085:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7128:9;7144:1;7140;:5;;;;;;7128:17;;7260:1;7253:8;;;6975:298;;;;;:::o;42509:406::-;42609:7;42618;42627;42651:12;42666:28;42690:3;42666:19;42678:6;42666:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;42651:43;;42709:20;42732:36;42764:3;42732:27;42744:14;42732:7;:11;;:27;;;;:::i;:::-;:31;;:36;;;;:::i;:::-;42709:59;;42783:23;42809:35;42831:12;42809:17;42821:4;42809:7;:11;;:17;;;;:::i;:::-;:21;;:35;;;;:::i;:::-;42783:61;;42867:15;42884:4;42890:12;42859:44;;;;;;;;;42509:406;;;;;;;:::o;42927:354::-;43022:7;43031;43040;43064:15;43082:24;43094:11;43082:7;:11;;:24;;;;:::i;:::-;43064:42;;43121:12;43136:21;43145:11;43136:4;:8;;:21;;;;:::i;:::-;43121:36;;43172:23;43198:17;43210:4;43198:7;:11;;:17;;;;:::i;:::-;43172:43;;43238:7;43247:15;43264:4;43230:39;;;;;;;;;42927:354;;;;;;;:::o;5270:511::-;5328:7;5594:1;5589;:6;5585:55;;;5623:1;5616:8;;;;5585:55;5656:9;5672:1;5668;:5;5656:17;;5705:1;5700;5696;:5;;;;;;:10;5688:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5768:1;5761:8;;;5270:511;;;;;:::o;34077:290::-;34138:1;34127:7;;:12;:36;;;;;34162:1;34143:15;;:20;34127:36;34124:48;;;34165:7;;34124:48;34218:7;;34200:15;:25;;;;34266:15;;34240:23;:41;;;;34320:1;34310:7;:11;;;;34354:1;34336:15;:19;;;;34077:290;:::o;40052:605::-;40159:15;40176:23;40201:12;40215:23;40240:12;40254:20;40278:19;40289:7;40278:10;:19::i;:::-;40158:139;;;;;;;;;;;;40330:28;40350:7;40330;:15;40338:6;40330:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;40312:7;:15;40320:6;40312:15;;;;;;;;;;;;;;;:46;;;;40391:28;40411:7;40391;:15;40399:6;40391:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;40373:7;:15;40381:6;40373:15;;;;;;;;;;;;;;;:46;;;;40455:39;40478:15;40455:7;:18;40463:9;40455:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;40434:7;:18;40442:9;40434:18;;;;;;;;;;;;;;;:60;;;;40510:30;40527:12;40510:16;:30::i;:::-;40558:23;40570:4;40576;40558:11;:23::i;:::-;40618:9;40601:44;;40610:6;40601:44;;;40629:15;40601:44;;;;;;;;;;;;;;;;;;40052:605;;;;;;;;;:::o;39412:628::-;39517:15;39534:23;39559:12;39573:23;39598:12;39612:20;39636:19;39647:7;39636:10;:19::i;:::-;39516:139;;;;;;;;;;;;39688:28;39708:7;39688;:15;39696:6;39688:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;39670:7;:15;39678:6;39670:15;;;;;;;;;;;;;;;:46;;;;39752:39;39775:15;39752:7;:18;39760:9;39752:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;39731:7;:18;39739:9;39731:18;;;;;;;;;;;;;;;:60;;;;39827:39;39850:15;39827:7;:18;39835:9;39827:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;39806:7;:18;39814:9;39806:18;;;;;;;;;;;;;;;:60;;;;39885:30;39902:12;39885:16;:30::i;:::-;39941:23;39953:4;39959;39941:11;:23::i;:::-;40001:9;39984:44;;39993:6;39984:44;;;40012:15;39984:44;;;;;;;;;;;;;;;;;;39412:628;;;;;;;;;:::o;38862:538::-;38965:15;38982:23;39007:12;39021:23;39046:12;39060:20;39084:19;39095:7;39084:10;:19::i;:::-;38964:139;;;;;;;;;;;;39136:28;39156:7;39136;:15;39144:6;39136:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;39118:7;:15;39126:6;39118:15;;;;;;;;;;;;;;;:46;;;;39200:39;39223:15;39200:7;:18;39208:9;39200:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;39179:7;:18;39187:9;39179:18;;;;;;;;;;;;;;;:60;;;;39255:30;39272:12;39255:16;:30::i;:::-;39301:23;39313:4;39319;39301:11;:23::i;:::-;39361:9;39344:44;;39353:6;39344:44;;;39372:15;39344:44;;;;;;;;;;;;;;;;;;38862:538;;;;;;;;;:::o;40669:688::-;40776:15;40793:23;40818:12;40832:23;40857:12;40871:20;40895:19;40906:7;40895:10;:19::i;:::-;40775:139;;;;;;;;;;;;40947:28;40967:7;40947;:15;40955:6;40947:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;40929:7;:15;40937:6;40929:15;;;;;;;;;;;;;;;:46;;;;41008:28;41028:7;41008;:15;41016:6;41008:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;40990:7;:15;40998:6;40990:15;;;;;;;;;;;;;;;:46;;;;41072:39;41095:15;41072:7;:18;41080:9;41072:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;41051:7;:18;41059:9;41051:18;;;;;;;;;;;;;;;:60;;;;41147:39;41170:15;41147:7;:18;41155:9;41147:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;41126:7;:18;41134:9;41126:18;;;;;;;;;;;;;;;:60;;;;41204:30;41221:12;41204:16;:30::i;:::-;41258:23;41270:4;41276;41258:11;:23::i;:::-;41318:9;41301:44;;41310:6;41301:44;;;41329:15;41301:44;;;;;;;;;;;;;;;;;;40669:688;;;;;;;;;:::o;34383:141::-;34441:15;;34431:7;:25;;;;34489:23;;34471:15;:41;;;;34383:141::o;41369:391::-;41440:19;41463:10;:8;:10::i;:::-;41440:33;;41488:20;41511:29;41528:11;41511:12;:16;;:29;;;;:::i;:::-;41488:52;;41580:40;41607:12;41580:7;:22;41596:4;41580:22;;;;;;;;;;;;;;;;:26;;:40;;;;:::i;:::-;41555:7;:22;41571:4;41555:22;;;;;;;;;;;;;;;:65;;;;41638:11;:26;41658:4;41638:26;;;;;;;;;;;;;;;;;;;;;;;;;41635:113;;;41708:40;41735:12;41708:7;:22;41724:4;41708:22;;;;;;;;;;;;;;;;:26;;:40;;;;:::i;:::-;41683:7;:22;41699:4;41683:22;;;;;;;;;;;;;;;:65;;;;41635:113;41369:391;;;:::o;41772:159::-;41854:17;41866:4;41854:7;;:11;;:17;;;;:::i;:::-;41844:7;:27;;;;41899:20;41914:4;41899:10;;:14;;:20;;;;:::i;:::-;41886:10;:33;;;;41772:159;;:::o

Swarm Source

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