Contract Address Details

0xBafd9f2C035727E5CD66f06979ebB01Cc360cB3E

Contract Name
OwnerLQS
Creator
0xcf11a7–041d25 at 0x5feb1f–1dac39
Balance
0 VSC
Tokens
Fetching tokens...
Transactions
461 Transactions
Transfers
0 Transfers
Gas Used
1,297,077,941
Last Balance Update
15008196
Contract name:
OwnerLQS




Optimization enabled
false
Compiler version
v0.8.17+commit.8df45f5f




EVM Version
default




Verified at
2023-11-29T06:00:43.441120Z

Constructor Arguments

0x0000000000000000000000007105bd8d6f1018113f762a5d0f2c19ec402933eb

Arg [0] (address) : 0x7105bd8d6f1018113f762a5d0f2c19ec402933eb

              

Contract source code

pragma solidity 0.8.17;
// SPDX-License-Identifier: Unlicensed
pragma abicoder v2;


interface IERC20 {

    function totalSupply() external view returns (uint256);

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

    function mint(address _to, uint256 _amount) external returns (bool);

    function burn(uint256 _amount) external;

    function locklist (address account) external;

    function unLocklist (address account) external;

    /**
     * @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);
}

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        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;
    }
}


abstract contract Ownable is Context {
    address private _owner;

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

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

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual 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;
    }
}


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

contract OwnerLQS is Ownable {
     using SafeMath for uint256;
      IERC20 public stToken;


    event Stake(address indexed user,uint amount,uint time);
   
     
     constructor (address _token)  {
        stToken = IERC20(_token);
    }

    receive() external payable{
            //revert("Not allowed direct funds");
    }

    modifier isContractCheck(address _user) {
        require(!isContract(_user), "StToken: Invalid address");
        _;
    }

     /**
     * @dev isContract: Returns true if account is a contract
     */
    function isContract(address _account) public view returns(bool) {
        uint32 size;
        assembly {
            size:= extcodesize(_account)
        }
        if (size != 0)
            return true;
        return false;
    }

   

    function manualStakebyowner(address[] calldata recipients, uint256[] calldata amounts) public  onlyOwner {
         require(recipients.length == amounts.length, "Arrays length mismatch");
         for (uint256 i = 0; i < recipients.length; i++) {
        uint256 tokenamount = (amounts[i]).mul(1e18);
        stToken.mint(recipients[i],tokenamount);
        stToken.locklist(recipients[i]);
         }
    }

 

    
}



        

Contract ABI

[{"type":"constructor","inputs":[{"type":"address","name":"_token","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"isContract","inputs":[{"type":"address","name":"_account","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"manualStakebyowner","inputs":[{"type":"address[]","name":"recipients","internalType":"address[]"},{"type":"uint256[]","name":"amounts","internalType":"uint256[]"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"owner","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"renounceOwnership","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract IERC20"}],"name":"stToken","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"transferOwnership","inputs":[{"type":"address","name":"newOwner","internalType":"address"}]},{"type":"event","name":"OwnershipTransferred","inputs":[{"type":"address","name":"previousOwner","indexed":true},{"type":"address","name":"newOwner","indexed":true}],"anonymous":false},{"type":"event","name":"Stake","inputs":[{"type":"address","name":"user","indexed":true},{"type":"uint256","name":"amount","indexed":false},{"type":"uint256","name":"time","indexed":false}],"anonymous":false},{"type":"receive"}]
              

Contract Creation Code

0x60806040523480156200001157600080fd5b5060405162001093380380620010938339818101604052810190620000379190620001a1565b6000620000496200012f60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050620001d3565b600033905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000169826200013c565b9050919050565b6200017b816200015c565b81146200018757600080fd5b50565b6000815190506200019b8162000170565b92915050565b600060208284031215620001ba57620001b962000137565b5b6000620001ca848285016200018a565b91505092915050565b610eb080620001e36000396000f3fe6080604052600436106100595760003560e01c8063162790551461006557806323b6443e146100a2578063715018a6146100cd5780638da5cb5b146100e4578063aca465641461010f578063f2fde38b1461013857610060565b3661006057005b600080fd5b34801561007157600080fd5b5061008c60048036038101906100879190610847565b610161565b604051610099919061088f565b60405180910390f35b3480156100ae57600080fd5b506100b761018b565b6040516100c49190610909565b60405180910390f35b3480156100d957600080fd5b506100e26101b1565b005b3480156100f057600080fd5b506100f96102eb565b6040516101069190610933565b60405180910390f35b34801561011b57600080fd5b5061013660048036038101906101319190610a09565b610314565b005b34801561014457600080fd5b5061015f600480360381019061015a9190610847565b6105b5565b005b600080823b905060008163ffffffff1614610180576001915050610186565b60009150505b919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6101b961075d565b73ffffffffffffffffffffffffffffffffffffffff166101d76102eb565b73ffffffffffffffffffffffffffffffffffffffff161461022d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161022490610ae7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61031c61075d565b73ffffffffffffffffffffffffffffffffffffffff1661033a6102eb565b73ffffffffffffffffffffffffffffffffffffffff1614610390576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161038790610ae7565b60405180910390fd5b8181905084849050146103d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103cf90610b53565b60405180910390fd5b60005b848490508110156105ae57600061041c670de0b6b3a764000085858581811061040757610406610b73565b5b9050602002013561076590919063ffffffff16565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1987878581811061046f5761046e610b73565b5b90506020020160208101906104849190610847565b836040518363ffffffff1660e01b81526004016104a2929190610bbb565b6020604051808303816000875af11580156104c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e59190610c10565b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630230949b87878581811061053757610536610b73565b5b905060200201602081019061054c9190610847565b6040518263ffffffff1660e01b81526004016105689190610933565b600060405180830381600087803b15801561058257600080fd5b505af1158015610596573d6000803e3d6000fd5b505050505080806105a690610c6c565b9150506103db565b5050505050565b6105bd61075d565b73ffffffffffffffffffffffffffffffffffffffff166105db6102eb565b73ffffffffffffffffffffffffffffffffffffffff1614610631576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062890610ae7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036106a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069790610d26565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600080830361077757600090506107d9565b600082846107859190610d46565b90508284826107949190610db7565b146107d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107cb90610e5a565b60405180910390fd5b809150505b92915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610814826107e9565b9050919050565b61082481610809565b811461082f57600080fd5b50565b6000813590506108418161081b565b92915050565b60006020828403121561085d5761085c6107df565b5b600061086b84828501610832565b91505092915050565b60008115159050919050565b61088981610874565b82525050565b60006020820190506108a46000830184610880565b92915050565b6000819050919050565b60006108cf6108ca6108c5846107e9565b6108aa565b6107e9565b9050919050565b60006108e1826108b4565b9050919050565b60006108f3826108d6565b9050919050565b610903816108e8565b82525050565b600060208201905061091e60008301846108fa565b92915050565b61092d81610809565b82525050565b60006020820190506109486000830184610924565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126109735761097261094e565b5b8235905067ffffffffffffffff8111156109905761098f610953565b5b6020830191508360208202830111156109ac576109ab610958565b5b9250929050565b60008083601f8401126109c9576109c861094e565b5b8235905067ffffffffffffffff8111156109e6576109e5610953565b5b602083019150836020820283011115610a0257610a01610958565b5b9250929050565b60008060008060408587031215610a2357610a226107df565b5b600085013567ffffffffffffffff811115610a4157610a406107e4565b5b610a4d8782880161095d565b9450945050602085013567ffffffffffffffff811115610a7057610a6f6107e4565b5b610a7c878288016109b3565b925092505092959194509250565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000610ad1602083610a8a565b9150610adc82610a9b565b602082019050919050565b60006020820190508181036000830152610b0081610ac4565b9050919050565b7f417272617973206c656e677468206d69736d6174636800000000000000000000600082015250565b6000610b3d601683610a8a565b9150610b4882610b07565b602082019050919050565b60006020820190508181036000830152610b6c81610b30565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b610bb581610ba2565b82525050565b6000604082019050610bd06000830185610924565b610bdd6020830184610bac565b9392505050565b610bed81610874565b8114610bf857600080fd5b50565b600081519050610c0a81610be4565b92915050565b600060208284031215610c2657610c256107df565b5b6000610c3484828501610bfb565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610c7782610ba2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610ca957610ca8610c3d565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000610d10602683610a8a565b9150610d1b82610cb4565b604082019050919050565b60006020820190508181036000830152610d3f81610d03565b9050919050565b6000610d5182610ba2565b9150610d5c83610ba2565b9250828202610d6a81610ba2565b91508282048414831517610d8157610d80610c3d565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610dc282610ba2565b9150610dcd83610ba2565b925082610ddd57610ddc610d88565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000610e44602183610a8a565b9150610e4f82610de8565b604082019050919050565b60006020820190508181036000830152610e7381610e37565b905091905056fea26469706673582212207bb30435de6d0bf7fd73575696931385060a422c1b04e3f5262079848e4eaf8e64736f6c634300081100330000000000000000000000007105bd8d6f1018113f762a5d0f2c19ec402933eb

Deployed ByteCode

0x6080604052600436106100595760003560e01c8063162790551461006557806323b6443e146100a2578063715018a6146100cd5780638da5cb5b146100e4578063aca465641461010f578063f2fde38b1461013857610060565b3661006057005b600080fd5b34801561007157600080fd5b5061008c60048036038101906100879190610847565b610161565b604051610099919061088f565b60405180910390f35b3480156100ae57600080fd5b506100b761018b565b6040516100c49190610909565b60405180910390f35b3480156100d957600080fd5b506100e26101b1565b005b3480156100f057600080fd5b506100f96102eb565b6040516101069190610933565b60405180910390f35b34801561011b57600080fd5b5061013660048036038101906101319190610a09565b610314565b005b34801561014457600080fd5b5061015f600480360381019061015a9190610847565b6105b5565b005b600080823b905060008163ffffffff1614610180576001915050610186565b60009150505b919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6101b961075d565b73ffffffffffffffffffffffffffffffffffffffff166101d76102eb565b73ffffffffffffffffffffffffffffffffffffffff161461022d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161022490610ae7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61031c61075d565b73ffffffffffffffffffffffffffffffffffffffff1661033a6102eb565b73ffffffffffffffffffffffffffffffffffffffff1614610390576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161038790610ae7565b60405180910390fd5b8181905084849050146103d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103cf90610b53565b60405180910390fd5b60005b848490508110156105ae57600061041c670de0b6b3a764000085858581811061040757610406610b73565b5b9050602002013561076590919063ffffffff16565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1987878581811061046f5761046e610b73565b5b90506020020160208101906104849190610847565b836040518363ffffffff1660e01b81526004016104a2929190610bbb565b6020604051808303816000875af11580156104c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e59190610c10565b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630230949b87878581811061053757610536610b73565b5b905060200201602081019061054c9190610847565b6040518263ffffffff1660e01b81526004016105689190610933565b600060405180830381600087803b15801561058257600080fd5b505af1158015610596573d6000803e3d6000fd5b505050505080806105a690610c6c565b9150506103db565b5050505050565b6105bd61075d565b73ffffffffffffffffffffffffffffffffffffffff166105db6102eb565b73ffffffffffffffffffffffffffffffffffffffff1614610631576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062890610ae7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036106a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069790610d26565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600080830361077757600090506107d9565b600082846107859190610d46565b90508284826107949190610db7565b146107d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107cb90610e5a565b60405180910390fd5b809150505b92915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610814826107e9565b9050919050565b61082481610809565b811461082f57600080fd5b50565b6000813590506108418161081b565b92915050565b60006020828403121561085d5761085c6107df565b5b600061086b84828501610832565b91505092915050565b60008115159050919050565b61088981610874565b82525050565b60006020820190506108a46000830184610880565b92915050565b6000819050919050565b60006108cf6108ca6108c5846107e9565b6108aa565b6107e9565b9050919050565b60006108e1826108b4565b9050919050565b60006108f3826108d6565b9050919050565b610903816108e8565b82525050565b600060208201905061091e60008301846108fa565b92915050565b61092d81610809565b82525050565b60006020820190506109486000830184610924565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126109735761097261094e565b5b8235905067ffffffffffffffff8111156109905761098f610953565b5b6020830191508360208202830111156109ac576109ab610958565b5b9250929050565b60008083601f8401126109c9576109c861094e565b5b8235905067ffffffffffffffff8111156109e6576109e5610953565b5b602083019150836020820283011115610a0257610a01610958565b5b9250929050565b60008060008060408587031215610a2357610a226107df565b5b600085013567ffffffffffffffff811115610a4157610a406107e4565b5b610a4d8782880161095d565b9450945050602085013567ffffffffffffffff811115610a7057610a6f6107e4565b5b610a7c878288016109b3565b925092505092959194509250565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000610ad1602083610a8a565b9150610adc82610a9b565b602082019050919050565b60006020820190508181036000830152610b0081610ac4565b9050919050565b7f417272617973206c656e677468206d69736d6174636800000000000000000000600082015250565b6000610b3d601683610a8a565b9150610b4882610b07565b602082019050919050565b60006020820190508181036000830152610b6c81610b30565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b610bb581610ba2565b82525050565b6000604082019050610bd06000830185610924565b610bdd6020830184610bac565b9392505050565b610bed81610874565b8114610bf857600080fd5b50565b600081519050610c0a81610be4565b92915050565b600060208284031215610c2657610c256107df565b5b6000610c3484828501610bfb565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610c7782610ba2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610ca957610ca8610c3d565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000610d10602683610a8a565b9150610d1b82610cb4565b604082019050919050565b60006020820190508181036000830152610d3f81610d03565b9050919050565b6000610d5182610ba2565b9150610d5c83610ba2565b9250828202610d6a81610ba2565b91508282048414831517610d8157610d80610c3d565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610dc282610ba2565b9150610dcd83610ba2565b925082610ddd57610ddc610d88565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000610e44602183610a8a565b9150610e4f82610de8565b604082019050919050565b60006020820190508181036000830152610e7381610e37565b905091905056fea26469706673582212207bb30435de6d0bf7fd73575696931385060a422c1b04e3f5262079848e4eaf8e64736f6c63430008110033