More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 940 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer | 11021837 | 1436 days ago | IN | 0.6 ETH | 0.00292999 | ||||
Transfer | 11021831 | 1436 days ago | IN | 0.6 ETH | 0.00288593 | ||||
Transfer | 11021826 | 1436 days ago | IN | 0.6 ETH | 0.00288593 | ||||
Transfer | 11021824 | 1436 days ago | IN | 0.6 ETH | 0.00288593 | ||||
Change To Not On... | 11021743 | 1436 days ago | IN | 0 ETH | 0.00089252 | ||||
Transfer | 11021485 | 1436 days ago | IN | 0.7 ETH | 0.002203 | ||||
Transfer | 11021485 | 1436 days ago | IN | 3 ETH | 0.002203 | ||||
Transfer | 11021483 | 1436 days ago | IN | 1 ETH | 0.002163 | ||||
Transfer | 11021459 | 1436 days ago | IN | 3 ETH | 0.002352 | ||||
Transfer | 11021449 | 1436 days ago | IN | 1 ETH | 0.008812 | ||||
Transfer | 11021445 | 1436 days ago | IN | 3 ETH | 0.004406 | ||||
Transfer | 11021445 | 1436 days ago | IN | 3 ETH | 0.00735 | ||||
Transfer | 11021442 | 1436 days ago | IN | 1 ETH | 0.00244533 | ||||
Transfer | 11021440 | 1436 days ago | IN | 2 ETH | 0.006609 | ||||
Transfer | 11021439 | 1436 days ago | IN | 3 ETH | 0.0033045 | ||||
Transfer | 11021439 | 1436 days ago | IN | 3 ETH | 0.0033045 | ||||
Transfer | 11021439 | 1436 days ago | IN | 3 ETH | 0.0033045 | ||||
Transfer | 11021439 | 1436 days ago | IN | 3 ETH | 0.0033045 | ||||
Transfer | 11021439 | 1436 days ago | IN | 3 ETH | 0.0033045 | ||||
Transfer | 11021439 | 1436 days ago | IN | 3 ETH | 0.0033045 | ||||
Transfer | 11021439 | 1436 days ago | IN | 3 ETH | 0.0033045 | ||||
Transfer | 11021439 | 1436 days ago | IN | 0 ETH | 0.00341465 | ||||
Transfer | 11021439 | 1436 days ago | IN | 1.25045155 ETH | 0.00363495 | ||||
Transfer | 11021439 | 1436 days ago | IN | 3 ETH | 0.0252 | ||||
Transfer | 11021438 | 1436 days ago | IN | 2.24303323 ETH | 0.0055075 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
11021429 | 1436 days ago | 0.00556096 ETH | ||||
11021420 | 1436 days ago | 0.1 ETH | ||||
11021420 | 1436 days ago | 3 ETH | ||||
11021420 | 1436 days ago | 3 ETH | ||||
11021420 | 1436 days ago | 3 ETH | ||||
11021420 | 1436 days ago | 3 ETH | ||||
11021420 | 1436 days ago | 3 ETH | ||||
11021420 | 1436 days ago | 3 ETH | ||||
11021420 | 1436 days ago | 3 ETH | ||||
11021420 | 1436 days ago | 3 ETH | ||||
11021420 | 1436 days ago | 3 ETH | ||||
11021420 | 1436 days ago | 3 ETH | ||||
11021320 | 1436 days ago | 3 ETH | ||||
11021290 | 1436 days ago | 1 ETH | ||||
11021052 | 1436 days ago | 3 ETH | ||||
11020923 | 1436 days ago | 3 ETH | ||||
11020905 | 1436 days ago | 1.5 ETH | ||||
11020876 | 1436 days ago | 3 ETH | ||||
11020725 | 1436 days ago | 3 ETH | ||||
11020722 | 1436 days ago | 2.9 ETH | ||||
11020614 | 1436 days ago | 3 ETH | ||||
11020594 | 1436 days ago | 3 ETH | ||||
11020592 | 1436 days ago | 3 ETH | ||||
11020553 | 1436 days ago | 3 ETH | ||||
11020501 | 1436 days ago | 2 ETH |
Loading...
Loading
Contract Name:
DokiPresale
Compiler Version
v0.7.2+commit.51b20bc0
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-10-08 */ pragma solidity ^0.7.0; 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; } } 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 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; } } 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); } contract ERC20 is Context, IERC20 { using SafeMath for uint256; mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; uint8 private _decimals; /** * @dev Sets the values for {name} and {symbol}, initializes {decimals} with * a default value of 18. * * To select a different value for {decimals}, use {_setupDecimals}. * * All three of these values are immutable: they can only be set once during * construction. */ constructor (string memory name, string memory symbol) public { _name = name; _symbol = symbol; _decimals = 18; } /** * @dev Returns the name of the token. */ function name() public view returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5,05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is * called. * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view returns (uint8) { return _decimals; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer(address sender, address recipient, uint256 amount) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `to` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve(address owner, address spender, uint256 amount) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Sets {decimals} to a value other than the default one of 18. * * WARNING: This function should only be called from the constructor. Most * applications that interact with token contracts will not expect * {decimals} to ever change, and may work incorrectly if it does. */ function _setupDecimals(uint8 decimals_) internal { _decimals = decimals_; } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be to transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { } } contract DokiCoinCore is ERC20("DokiDokiFinance", "DOKI") { using SafeMath for uint256; address internal _taxer; address internal _taxDestination; uint internal _taxRate = 0; mapping (address => bool) internal _taxWhitelist; function transfer(address recipient, uint256 amount) public override returns (bool) { uint256 taxAmount = amount.mul(_taxRate).div(100); if (_taxWhitelist[msg.sender] == true) { taxAmount = 0; } uint256 transferAmount = amount.sub(taxAmount); require(balanceOf(msg.sender) >= transferAmount, "insufficient balance."); super.transfer(recipient, amount); if (taxAmount != 0) { super.transfer(_taxDestination, taxAmount); } return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { uint256 taxAmount = amount.mul(_taxRate).div(100); if (_taxWhitelist[sender] == true) { taxAmount = 0; } uint256 transferAmount = amount.sub(taxAmount); require(balanceOf(sender) >= transferAmount, "insufficient balance."); super.transferFrom(sender, recipient, amount); if (taxAmount != 0) { super.transferFrom(sender, _taxDestination, taxAmount); } return true; } } contract DokiCoin is DokiCoinCore, Ownable { mapping (address => bool) public minters; constructor() { _taxer = owner(); _taxDestination = owner(); } function mint(address to, uint amount) public onlyMinter { _mint(to, amount); } function burn(uint amount) public { require(amount > 0); require(balanceOf(msg.sender) >= amount); _burn(msg.sender, amount); } function addMinter(address account) public onlyOwner { minters[account] = true; } function removeMinter(address account) public onlyOwner { minters[account] = false; } modifier onlyMinter() { require(minters[msg.sender], "Restricted to minters."); _; } modifier onlyTaxer() { require(msg.sender == _taxer, "Only for taxer."); _; } function setTaxer(address account) public onlyOwner { _taxer = account; } function setTaxRate(uint256 rate) public onlyTaxer { _taxRate = rate; } function setTaxDestination(address account) public onlyTaxer { _taxDestination = account; } function addToWhitelist(address account) public onlyTaxer { _taxWhitelist[account] = true; } function removeFromWhitelist(address account) public onlyTaxer { _taxWhitelist[account] = false; } function taxer() public view returns(address) { return _taxer; } function taxDestination() public view returns(address) { return _taxDestination; } function taxRate() public view returns(uint256) { return _taxRate; } function isInWhitelist(address account) public view returns(bool) { return _taxWhitelist[account]; } } 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) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; // solhint-disable-next-line no-inline-assembly assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * 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"); require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: value }(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.3._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.3._ */ function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) { 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); } } } } library SafeERC20 { using SafeMath for uint256; using Address for address; function safeTransfer(IERC20 token, address to, uint256 value) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } /** * @dev Deprecated. This function has issues similar to the ones found in * {IERC20-approve}, and its usage is discouraged. * * Whenever possible, use {safeIncreaseAllowance} and * {safeDecreaseAllowance} instead. */ function safeApprove(IERC20 token, address spender, uint256 value) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' // solhint-disable-next-line max-line-length require((value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender).add(value); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender).sub(value, "SafeERC20: decreased allowance below zero"); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function _callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that // the target address contains contract code and also asserts for success in the low-level call. bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional // solhint-disable-next-line max-line-length require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } 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 Math { /** * @dev Returns the largest of two numbers. */ function max(uint256 a, uint256 b) internal pure returns (uint256) { return a >= b ? a : b; } /** * @dev Returns the smallest of two numbers. */ function min(uint256 a, uint256 b) internal pure returns (uint256) { return a < b ? a : b; } /** * @dev Returns the average of two numbers. The result is rounded towards * zero. */ function average(uint256 a, uint256 b) internal pure returns (uint256) { // (a + b) / 2 can overflow, so we distribute return (a / 2) + (b / 2) + ((a % 2 + b % 2) / 2); } } contract DokiPresale is Ownable { using SafeMath for uint256; using SafeERC20 for IERC20; mapping (address => bool) public whitelist; mapping (address => uint) public ethSupply; address payable devAddress; uint public dokiPrice = 5; uint public buyLimit = 3 * 1e18; bool public presaleStart = false; bool public onlyWhitelist = true; uint public presaleLastSupply = 3000 * 1e18; DokiCoin private doki = DokiCoin(0x9cEB84f92A0561fa3Cc4132aB9c0b76A59787544); event BuyDokiSuccess(address account, uint ethAmount, uint dokiAmount); constructor(address payable account) { devAddress = account; initWhitelist(); } function addToWhitelist(address account) public onlyOwner { require(whitelist[account] == false, "This account is already in whitelist."); whitelist[account] = true; } function removeFromWhitelist(address account) public onlyOwner { require(whitelist[account], "This account is not in whitelist."); whitelist[account] = false; } function setDevAddress(address payable account) public onlyOwner { devAddress = account; } function startPresale() public onlyOwner { presaleStart = true; } function stopPresale() public onlyOwner { presaleStart = false; } function setDokiPrice(uint newPrice) public onlyOwner { dokiPrice = newPrice; } function setBuyLimit(uint newLimit) public onlyOwner { buyLimit = newLimit; } function changeToNotOnlyWhitelist() public onlyOwner { onlyWhitelist = false; } modifier needHaveLastSupply() { require(presaleLastSupply >= 0, "Oh you are so late."); _; } modifier presaleHasStarted() { require(presaleStart, "Presale has not been started."); _; } receive() payable external presaleHasStarted needHaveLastSupply { if (onlyWhitelist) { require(whitelist[msg.sender], "This time is only for people who are in whitelist."); } uint ethTotalAmount = ethSupply[msg.sender].add(msg.value); require(ethTotalAmount <= buyLimit, "Everyone should buy lesser than 3 eth."); uint dokiAmount = msg.value.mul(dokiPrice); require(dokiAmount <= presaleLastSupply, "insufficient presale supply"); presaleLastSupply = presaleLastSupply.sub(dokiAmount); doki.mint(msg.sender, dokiAmount); ethSupply[msg.sender] = ethTotalAmount; devAddress.transfer(msg.value); emit BuyDokiSuccess(msg.sender, msg.value, dokiAmount); } function initWhitelist() internal { whitelist[0x3c5de42f02DebBaA235f7a28E4B992362FfeE0B6] = true; whitelist[0x7aE02E3871f38D0bA4a5192d97621ba52083fD06] = true; whitelist[0xbb257625458a12374daf2AD0c91d5A215732F206] = true; whitelist[0x862ADa03a5B7cB89b2dE442eA8FdaBe5CCdab661] = true; whitelist[0xbA55F9d6B5D43Ce2A57657d1378D4694270fb10E] = true; whitelist[0x6339D26dac709d16359CdadEc0Dbe87dE1CfA833] = true; whitelist[0xa91856166B8c0DE93696b48163Bf16952DAc62E4] = true; whitelist[0x3C03D1282974B4186578276e37eA4eccC7960F01] = true; whitelist[0xc8994FB5E7623c511034076b7006873598a78Dd9] = true; whitelist[0xBC6D28a2e0a29423f3a0Bc6CC6e656e1e58762d9] = true; whitelist[0xE15aa7f7de1f1bB51aED5d7C28BDcb59987f020A] = true; whitelist[0xA538311df7DC52bBE861F6e3EfDD749730503Cae] = true; whitelist[0x42147EE918238fdfF257a15fA758944D6b870B6A] = true; whitelist[0x5b049c3Bef543a181A720DcC6fEbc9afdab5D377] = true; whitelist[0xBacEcAc3EA45372e6a83C2B97032211e4758368a] = true; whitelist[0x9Fe686D6fAcBC5AE4433308B26e7c810ac43F3D4] = true; whitelist[0xC4b51F3e8aFf16917d0a9651aCDf6392Bd9547d7] = true; whitelist[0xEc0941c09573dB9b24f71Cf997Fe9E0cfAcfd365] = true; whitelist[0xc0E630576248f9F05f1b098449eC20206ba35EbA] = true; whitelist[0x7ce8CD580Cfae9f162BcbBFA80dcf3765f99Ca7f] = true; whitelist[0xC7042A897789bba6952bFD9f307Da019CA8AeF37] = true; whitelist[0x5AaAEF91F93bE4dE932b8e7324aBBF9f26DAa706] = true; whitelist[0x9B269141E3B2924E4Fec66351607981638c0F30F] = true; whitelist[0x25054f27C9972B341Aee6c0D373A652566075431] = true; whitelist[0x0659213124b2E572575B827E252701b7615872Af] = true; whitelist[0xe4FD210236D8Ba17663997097B832e8e0D262ceE] = true; whitelist[0x14575550C4d4f9AEF3A2a84a19753D8dd2Aa9853] = true; whitelist[0x2A2572771d1d5C69c9e98b095522BF49eC529B7E] = true; whitelist[0x5C7A537511950A172F3270c94C58442774DeC6cb] = true; whitelist[0xFaBFbAb3F20203A41A3306be1d1aB68365Bc48C1] = true; whitelist[0x7d251915B2848d8B2D4A6c6CF9DD8fa901E073F2] = true; whitelist[0x14123aB5131B6adE473c296FB073A0606944a0E0] = true; whitelist[0xCB52F012E04D1E4521063c9d5Debc11ddaa21A68] = true; whitelist[0xc138aE7bCD1fDe0606a4eD6c8B7413e80c796915] = true; whitelist[0x3b90c92c9F37bC37e8C3Ce5E7B9be677E4766DC4] = true; whitelist[0xE96E7353fE78AB94D1B43417E21ebC5af985F41A] = true; whitelist[0x963D961b4F18dB19d285F44e6De8D77BD457D7D6] = true; whitelist[0x63e5B223A8D880D60bfFeE57975C37781a419E63] = true; whitelist[0xdAF934FeCd9268BA8a7c06Df8d232Ac103a4f627] = true; whitelist[0xEA4EeA0c25053323D343356c2D0fa3bC40c2Fe7B] = true; whitelist[0xF5C83A480013191c15Dc12Ef2e22ad93ae6738f6] = true; whitelist[0xDDbA8aE65292565625bd7F026adc478Ed22b4d69] = true; whitelist[0xE879680B1bC9C7C2984B2f1388f4De83E6e3B250] = true; whitelist[0xb9B6a2c155C0054db0b67e98fA4E855cBb9586f2] = true; whitelist[0x3AdB1ba3B077e590947E33Fd23FB7cb4d868B332] = true; whitelist[0x7111A80e1128e50DD8F3cF376E1c48b34596F9D8] = true; whitelist[0x28D02B415d2FcA7D5A0fD91888289f950bb578A4] = true; whitelist[0xe76e9885c47F9Dc95013D41d5E9A1a9764dD0bC2] = true; whitelist[0xfC0e20301eDCF4c44eFA3685B359bcaC64EAD609] = true; whitelist[0xf43745801132dce8d6967880526B6Ab8EB031E97] = true; whitelist[0xC274362c1E85834Eb8387C18168C01aaEe2B00d7] = true; whitelist[0xa3874d11FF2608dc04497e4150E0879936aCEc1D] = true; whitelist[0xb4aF8ADBB27310B4d6B5C6053936E039Caa72e4D] = true; whitelist[0x06C8eFE325b53DbBE568E71C1409BcB48216d3eA] = true; whitelist[0xdC28750295EE229D2a3d8975F8D83B0CDEDcFE03] = true; whitelist[0xe6181bDb6e75ccCa82D2e7C105F26DC67090099a] = true; whitelist[0x2F64Faef236f8Eaf7738e9d3288E982928B0a73d] = true; whitelist[0x18C345fbd441CfA3138FcAe8390C04024EAd8C9a] = true; whitelist[0xf8cd77CbbE5571Cd6Ab01Ac5BD04fDAaB78bB879] = true; whitelist[0xb7fc44237eE35D7b533037cbA2298E54c3d59276] = true; whitelist[0x185d38D04b3e52811a5f010ec5A8E0435aBD0bBc] = true; whitelist[0xc0D3a8d939d8653F0Fd8fE7a0646DD3884293466] = true; whitelist[0x0B82CcC284ACcC1F8eCaC32FCd30971B2a9C3940] = true; whitelist[0xD8F8C01bf25B9620ba033384E149CAA73875d0D0] = true; whitelist[0xD492aFF2A83d9B73EFBcC29C707a6756F6905e87] = true; whitelist[0xAD000B7D6344458e3c821A029bF6cB997835FA13] = true; whitelist[0x959575e3B3D6f5ADB18eC72Fb764Df05694a59F5] = true; whitelist[0xF872Ea3e3BC2d9EFcb660dE497A6F1c50E4ad25D] = true; whitelist[0x77a05DB77AB91bfEF29497596DE47AC8608A2b1d] = true; whitelist[0x71FF1934C6e7C846561A8b17A18BA279736Cf9f4] = true; whitelist[0x443C84B232808a6A99DEeCF1d7c0bdE14Ff9f0a0] = true; whitelist[0x417a1662214fC35bfF661598C7dDc5C378688722] = true; whitelist[0xEB0756B7C7F6077Ae3A2c26eab2205B48dE2fa12] = true; whitelist[0x24857DFa7200358235fa534dc418cb5F3B5433e1] = true; whitelist[0xc41879f97f85F43Ab78D4e45608f2Daf7c8E477E] = true; whitelist[0xdB6C038FBa7E192a5706992bEcD5DC7956B80497] = true; whitelist[0x49010C49DC04965494da05Da16D028A76977D97F] = true; whitelist[0xE537c5DcD0eC49Ca144b0e38554feed3C5D09d6f] = true; whitelist[0xeb42523A092CeaFb6b5b52b0a88d3F88154A3494] = true; whitelist[0x6b0ABF7fcaa10EBAd592409d931571306B875CF4] = true; whitelist[0x716C9cC35607040f54b9232D35a2871F46894F58] = true; whitelist[0x2f442C704c3D4Bd081531175Ce05C2C88603ce09] = true; whitelist[0x90a83be74d75F293232B949f69717e9fB693fec1] = true; whitelist[0xD453FaC4F90af5c73e9eFaD44Da3AF54A3FAd266] = true; whitelist[0x21699F05cd7FAf2165512703af577afaDDA0458f] = true; whitelist[0xf5f165910e11496C2d1B3D46319a5A07f09Bf2D9] = true; whitelist[0x829b41AFa6414f7c15f470eDffE80B919a07ba54] = true; whitelist[0xC135eb7D124A7b97a277dF76522b396548bc3f3A] = true; whitelist[0x2B3352e94EB8bCC46391d89ec7A8C30D352027f8] = true; whitelist[0xbf6aA73698750F23e4EF4dE161BfB8e65E30d27D] = true; whitelist[0x0F15F75C491aeaf1cb8b0BA627e49C01e4948bbc] = true; whitelist[0x3FFC8b9721f96776beF8468f48F65E0ca573fcF2] = true; whitelist[0x9DC6A59a9Eee821cE178f0aaBE1880874d48eca1] = true; whitelist[0x722E895A12d2A11BE99ed69dBc1FEdbB9F3Cd8fe] = true; whitelist[0xbd9CE5C6F04664d8097b7eA3375Abe09C489DaE7] = true; whitelist[0x35aa9F96639F04C6Eb4318d9ba1e5EE17ec6E769] = true; whitelist[0xAB0b73a67fDAbC8042e58f44CfAfF309638556ED] = true; whitelist[0x0d4f0f044Dc5E2B059F11c6A5024D97e05E8F85E] = true; whitelist[0x4fbCd2F65051B96EfC4262d6afEffc04d21d5bF2] = true; whitelist[0x336d4aFD4c1e0B82a2Bb38859C234c54eDF0a983] = true; whitelist[0xE443624fFAcD5d26ACd38488ceE8A395443e44F3] = true; whitelist[0x9F533382024F02632C832EA2B66F4Bbb1DBc4087] = true; whitelist[0x13537B154FAF1bc43De663a52E51F092718328Ed] = true; whitelist[0xF00991B79D28e35322DD9975738566Cc6FAcb84E] = true; whitelist[0xe0d3C29Cf08c20cdA16823F1722380a90D4e1A3F] = true; whitelist[0x8303c76A8174EB5B5C5C9c320cE92f625A85eac2] = true; whitelist[0xf916D5D0310BFCD0D9B8c43D0a29070670D825f9] = true; whitelist[0xFa75905a479d1d69BAD098b9Ed82af8844Fb23B4] = true; whitelist[0xf63370F0a9C09d53e1A410181BD80831934EfB19] = true; whitelist[0x8c2682E403B1Be886e59315c4C3c66468f2F1a10] = true; whitelist[0xC8bF8c55224c4ce61CB92F4e8E2EB0209B0Bf25D] = true; whitelist[0x1A8a67603eacb511b6AAd692061Bb8184Bf0C5d1] = true; whitelist[0x8Cc7B3Bb008799a76cA9a886f1917Ce7bE3e25A0] = true; whitelist[0x69cD50bE56604f940cd444182dB1bAe241569204] = true; whitelist[0x3EfA2D0C9929ee7D66Cc61c899996E8673A6dAb8] = true; whitelist[0xEbc3C19ae48978822d00eBb4B8532d2ec0E07598] = true; whitelist[0x790E9f425Ce7991322ddaF9D7BaE1129BD680868] = true; whitelist[0x3D635158A7FbC164b2170eC05083313de9ADDf72] = true; whitelist[0x6f158C7DdAeb8594d36C8869bee1B3080a6e5317] = true; whitelist[0x4E32EBe322b4743aDc6c27f8B66fCD4D539F2045] = true; whitelist[0xFfC041B1c734f8bC0502A9Fc0d7c35AB437C416d] = true; whitelist[0xCA3e9A1102cAa617635Af1eAe757c255D5017278] = true; whitelist[0xa5A52a6e8f911E01047C389C56da31cd6B828840] = true; whitelist[0xd056a5fb273359EC4a3B45A3F98432C580F31d56] = true; whitelist[0xA94b40c53432f0576E64873CE1CEAd1aae62Fc90] = true; whitelist[0x8AcC5677F98b86c407BFA7861f53857430Ba3904] = true; whitelist[0x90E72eFBD7a646453D7e3A1f3c4Ae5220c414EAb] = true; whitelist[0x6659F315FB55CC93f5A25CcdD0edF3A73B923308] = true; whitelist[0xDA567f1D3f131985F779c88AD8dBB35E6a65A00c] = true; whitelist[0x749BF5e8DE4fb44f14dE3B1498852dc0471bE8a8] = true; whitelist[0xE96D65Ec7C8856114878300697a3e5052de194ff] = true; whitelist[0xe0A21FE64FF987e0518204bfC6451Bcb265DDBBc] = true; whitelist[0xAacC4eA6188fb9d2F8FFeE395fd4a75F7e5518B3] = true; whitelist[0x52217443E3fBed2DdF2364F8E174deC88a72b3a6] = true; whitelist[0x184b44Fd51bECC7B547f8268E39d9126983826f8] = true; whitelist[0xd838a891E891d9E59942a5d04d26B1b67a0e6779] = true; whitelist[0x9e353fbdC3eC7290290BdA31a8001cb609858adf] = true; whitelist[0xad7d7000dcC2122416f5B314C557704084E3D37D] = true; whitelist[0x2670fdB57EEFfd47cD6e90067bDd54e5EF79e727] = true; whitelist[0x0F11CF7894dcC97A9D30Be39f0d04720Dc5d5531] = true; whitelist[0xF29680cFb7893CF142C603580604D748A7De6e65] = true; whitelist[0x9b0726e95e72eB6f305b472828b88D2d2bDD41C7] = true; whitelist[0x3051ca84FC32d731f3AeC559FC8a1EE343ab3a97] = true; whitelist[0x2bB5f56470F26B2518F56B4F32e9a33c3562457D] = true; whitelist[0x85Dd36038EacbEEdF785927CDE2Ac47Fdb581032] = true; whitelist[0x8043D8Aee89D74F6611B6E09c811A45b05b19D0E] = true; whitelist[0x687ea228eb60a22c2a9145857435b988F58c3a63] = true; whitelist[0xA9382E2F2E3fead01b260B3BD4E1023cE48EF265] = true; whitelist[0xb825Ac19f7ee811190D94D50a8D2dEc1BE9cFeDF] = true; whitelist[0xc482b3fA06380359462972a8FC128c66505231Dd] = true; whitelist[0x9Ae5FFc3923a55bC32Ff4A38812bba629261e03A] = true; whitelist[0x515afF85b6A289ed75713D6Ff3addf7bf57F0810] = true; whitelist[0x7Bb9635e750a100d8c73Cf88114175b1e346d495] = true; whitelist[0x3485F724F8f562a417c8405a70A430DFC0Ea6044] = true; whitelist[0xfdCC9C3DEFd76175457759d21ec7bebfa7614189] = true; whitelist[0x7b88aD278Cd11506661516E544EcAA9e39F03aF0] = true; whitelist[0xccD0466227327941EAc05e1D7ee7524DebfC4d20] = true; whitelist[0x5485dAC30911d3BBE51bC61b84f723160379D49f] = true; whitelist[0xDA2e1aBBf7c35BCE835AeeF4fbfc1D6e84Dd8A19] = true; whitelist[0x781dC05Bb477A936865516F928DC12016c992177] = true; whitelist[0x8A6c29f7fE583aD69eCD4dA5A6ab49f6c850B148] = true; whitelist[0x3151335A0f4Dd51fc553c39d3003AcBb59568f09] = true; whitelist[0x85c7dcbFCf50Ca65817Bb629fd580B79994e1F7a] = true; whitelist[0xe5963480aCE624A003cb1645C75eF468d7d533C5] = true; whitelist[0x72714f174f24951bA5336534A2AB4f223Fb909a3] = true; whitelist[0x3B09545fF83844298EFf767eaaD95D66Dc852D8A] = true; whitelist[0xbb35A21De58AE57526000df4916fa09948534671] = true; whitelist[0x6536f90f5cA05166B98DAD513B02C237F4751011] = true; whitelist[0xA66230f6A34Db307C443f4818E77F541fc67d7E3] = true; whitelist[0xCBBE17De5e61e746DCd43E8D4A072505d0747FeA] = true; whitelist[0x46B8FfC41F26cd896E033942cAF999b78d10c277] = true; whitelist[0xe14252BFBC36a0F0B0599c3F1Adb85E00432d152] = true; whitelist[0xF93eD4Fe97eB8A2508D03222a28E332F1C89B0eD] = true; whitelist[0x37f48060490EEADcE18Da8965139b4Af6AC1b3C6] = true; whitelist[0x69Bb92BF0641Df61783EA18c01f96656424bD76C] = true; whitelist[0xc19baA07F2E0445504ACD571E8e4A3097C96628A] = true; whitelist[0x035000529CffE9f04DB8E81B7A53807E63EeaC12] = true; whitelist[0x8b5E270C19eb8f28050a561D0bE08690cc33e73D] = true; whitelist[0x127bBc2904Dbb53Cf601782fC12fa4fD633394E4] = true; whitelist[0x09822341eD88aEeA91BC06eAC6B16bcD091d9241] = true; whitelist[0x3ebBe77bC7ae8655b78E678ef9Cde01925ee59AD] = true; whitelist[0xeD2a45611B967Df5647a17dFeaa0DEc40806De54] = true; whitelist[0x9043c7c4f4B57588DBb4dD2d84ee12D2ba85B101] = true; whitelist[0xcB309AaBD74E66b6392002e07696875299Dd6D13] = true; whitelist[0x19dfdc194Bb5CF599af78B1967dbb3783c590720] = true; whitelist[0xe0027F5BF87241fA8e8b7F31Da691686f3dd1D49] = true; whitelist[0xB534b564dDDe2fF68B4698cC06943675482ad2C1] = true; whitelist[0x8744465Ab472A103841D8a9d21D9F06aAfcba776] = true; whitelist[0x884FA72dF82c658Bafb98E79d9B52c02D5c84B68] = true; whitelist[0x36E0CAF9d18301104E6c9d5F1Db9e3cC6efD6ac3] = true; whitelist[0x37042Bd03c06B19aedB94A4e2157AB9B0878c016] = true; whitelist[0xCdD607DECbe9b714F6E032bA478830a521753233] = true; whitelist[0x641d35823e1342b5d7B541b1c701c3d4A41F82ad] = true; whitelist[0xE5DD12F8ab12a4FB51695Cd1c01A9318a2746357] = true; whitelist[0x808e2cb9abEE589093F181cdCa4461ffA9769545] = true; whitelist[0x70c05eea4E71a5ecDee5EC1d1Fc3F8843c320eFa] = true; whitelist[0x59d7b684bced2a28FedebFc09ce3A795F49a4620] = true; whitelist[0x5eD48eCbE5ea89720f21147080e7088fA6a8fC0D] = true; whitelist[0x669fD7eeDa4CAb02849fc96532Bf2Dda0786E967] = true; whitelist[0xEFAC8617928e662D607c77Bf777F91d7908424B2] = true; } function testMint() public onlyOwner { doki.mint(address(this), 1); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address payable","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"ethAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"dokiAmount","type":"uint256"}],"name":"BuyDokiSuccess","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"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addToWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"changeToNotOnlyWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dokiPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ethSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"onlyWhitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"presaleLastSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"presaleStart","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeFromWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setBuyLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"account","type":"address"}],"name":"setDevAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newPrice","type":"uint256"}],"name":"setDokiPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startPresale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stopPresale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"testMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405260056004556729a2241af62c00006005556000600660006101000a81548160ff0219169083151502179055506001600660016101000a81548160ff02191690831515021790555068a2a15d09519be00000600755739ceb84f92a0561fa3cc4132ab9c0b76a59787544600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015620000ba57600080fd5b50604051620071753803806200717583398181016040526020811015620000e057600080fd5b8101908080519060200190929190505050600062000103620001f960201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620001f26200020160201b60201c565b506200559b565b600033905090565b6001806000733c5de42f02debbaa235f7a28e4b992362ffee0b673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000737ae02e3871f38d0ba4a5192d97621ba52083fd0673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073bb257625458a12374daf2ad0c91d5a215732f20673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073862ada03a5b7cb89b2de442ea8fdabe5ccdab66173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073ba55f9d6b5d43ce2a57657d1378d4694270fb10e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000736339d26dac709d16359cdadec0dbe87de1cfa83373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073a91856166b8c0de93696b48163bf16952dac62e473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000733c03d1282974b4186578276e37ea4eccc7960f0173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073c8994fb5e7623c511034076b7006873598a78dd973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073bc6d28a2e0a29423f3a0bc6cc6e656e1e58762d973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073e15aa7f7de1f1bb51aed5d7c28bdcb59987f020a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073a538311df7dc52bbe861f6e3efdd749730503cae73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060018060007342147ee918238fdff257a15fa758944d6b870b6a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000735b049c3bef543a181a720dcc6febc9afdab5d37773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073bacecac3ea45372e6a83c2b97032211e4758368a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000739fe686d6facbc5ae4433308b26e7c810ac43f3d473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073c4b51f3e8aff16917d0a9651acdf6392bd9547d773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073ec0941c09573db9b24f71cf997fe9e0cfacfd36573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073c0e630576248f9f05f1b098449ec20206ba35eba73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000737ce8cd580cfae9f162bcbbfa80dcf3765f99ca7f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073c7042a897789bba6952bfd9f307da019ca8aef3773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000735aaaef91f93be4de932b8e7324abbf9f26daa70673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000739b269141e3b2924e4fec66351607981638c0f30f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060018060007325054f27c9972b341aee6c0d373a65256607543173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000730659213124b2e572575b827e252701b7615872af73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073e4fd210236d8ba17663997097b832e8e0d262cee73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060018060007314575550c4d4f9aef3a2a84a19753d8dd2aa985373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000732a2572771d1d5c69c9e98b095522bf49ec529b7e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000735c7a537511950a172f3270c94c58442774dec6cb73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073fabfbab3f20203a41a3306be1d1ab68365bc48c173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000737d251915b2848d8b2d4a6c6cf9dd8fa901e073f273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060018060007314123ab5131b6ade473c296fb073a0606944a0e073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073cb52f012e04d1e4521063c9d5debc11ddaa21a6873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073c138ae7bcd1fde0606a4ed6c8b7413e80c79691573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000733b90c92c9f37bc37e8c3ce5e7b9be677e4766dc473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073e96e7353fe78ab94d1b43417e21ebc5af985f41a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073963d961b4f18db19d285f44e6de8d77bd457d7d673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060018060007363e5b223a8d880d60bffee57975c37781a419e6373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073daf934fecd9268ba8a7c06df8d232ac103a4f62773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073ea4eea0c25053323d343356c2d0fa3bc40c2fe7b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073f5c83a480013191c15dc12ef2e22ad93ae6738f673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073ddba8ae65292565625bd7f026adc478ed22b4d6973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073e879680b1bc9c7c2984b2f1388f4de83e6e3b25073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073b9b6a2c155c0054db0b67e98fa4e855cbb9586f273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000733adb1ba3b077e590947e33fd23fb7cb4d868b33273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000737111a80e1128e50dd8f3cf376e1c48b34596f9d873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060018060007328d02b415d2fca7d5a0fd91888289f950bb578a473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073e76e9885c47f9dc95013d41d5e9a1a9764dd0bc273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073fc0e20301edcf4c44efa3685b359bcac64ead60973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073f43745801132dce8d6967880526b6ab8eb031e9773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073c274362c1e85834eb8387c18168c01aaee2b00d773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073a3874d11ff2608dc04497e4150e0879936acec1d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073b4af8adbb27310b4d6b5c6053936e039caa72e4d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060018060007306c8efe325b53dbbe568e71c1409bcb48216d3ea73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073dc28750295ee229d2a3d8975f8d83b0cdedcfe0373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073e6181bdb6e75ccca82d2e7c105f26dc67090099a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000732f64faef236f8eaf7738e9d3288e982928b0a73d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060018060007318c345fbd441cfa3138fcae8390c04024ead8c9a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073f8cd77cbbe5571cd6ab01ac5bd04fdaab78bb87973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073b7fc44237ee35d7b533037cba2298e54c3d5927673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073185d38d04b3e52811a5f010ec5a8e0435abd0bbc73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073c0d3a8d939d8653f0fd8fe7a0646dd388429346673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000730b82ccc284accc1f8ecac32fcd30971b2a9c394073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073d8f8c01bf25b9620ba033384e149caa73875d0d073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073d492aff2a83d9b73efbcc29c707a6756f6905e8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073ad000b7d6344458e3c821a029bf6cb997835fa1373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073959575e3b3d6f5adb18ec72fb764df05694a59f573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073f872ea3e3bc2d9efcb660de497a6f1c50e4ad25d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060018060007377a05db77ab91bfef29497596de47ac8608a2b1d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060018060007371ff1934c6e7c846561a8b17a18ba279736cf9f473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073443c84b232808a6a99deecf1d7c0bde14ff9f0a073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073417a1662214fc35bff661598c7ddc5c37868872273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073eb0756b7c7f6077ae3a2c26eab2205b48de2fa1273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060018060007324857dfa7200358235fa534dc418cb5f3b5433e173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073c41879f97f85f43ab78d4e45608f2daf7c8e477e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073db6c038fba7e192a5706992becd5dc7956b8049773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060018060007349010c49dc04965494da05da16d028a76977d97f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073e537c5dcd0ec49ca144b0e38554feed3c5d09d6f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073eb42523a092ceafb6b5b52b0a88d3f88154a349473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000736b0abf7fcaa10ebad592409d931571306b875cf473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073716c9cc35607040f54b9232d35a2871f46894f5873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000732f442c704c3d4bd081531175ce05c2c88603ce0973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060018060007390a83be74d75f293232b949f69717e9fb693fec173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073d453fac4f90af5c73e9efad44da3af54a3fad26673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060018060007321699f05cd7faf2165512703af577afadda0458f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073f5f165910e11496c2d1b3d46319a5a07f09bf2d973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073829b41afa6414f7c15f470edffe80b919a07ba5473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073c135eb7d124a7b97a277df76522b396548bc3f3a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000732b3352e94eb8bcc46391d89ec7a8c30d352027f873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073bf6aa73698750f23e4ef4de161bfb8e65e30d27d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000730f15f75c491aeaf1cb8b0ba627e49c01e4948bbc73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000733ffc8b9721f96776bef8468f48f65e0ca573fcf273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000739dc6a59a9eee821ce178f0aabe1880874d48eca173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073722e895a12d2a11be99ed69dbc1fedbb9f3cd8fe73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073bd9ce5c6f04664d8097b7ea3375abe09c489dae773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060018060007335aa9f96639f04c6eb4318d9ba1e5ee17ec6e76973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073ab0b73a67fdabc8042e58f44cfaff309638556ed73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000730d4f0f044dc5e2b059f11c6a5024d97e05e8f85e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000734fbcd2f65051b96efc4262d6afeffc04d21d5bf273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073336d4afd4c1e0b82a2bb38859c234c54edf0a98373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073e443624ffacd5d26acd38488cee8a395443e44f373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000739f533382024f02632c832ea2b66f4bbb1dbc408773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060018060007313537b154faf1bc43de663a52e51f092718328ed73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073f00991b79d28e35322dd9975738566cc6facb84e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073e0d3c29cf08c20cda16823f1722380a90d4e1a3f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000738303c76a8174eb5b5c5c9c320ce92f625a85eac273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073f916d5d0310bfcd0d9b8c43d0a29070670d825f973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073fa75905a479d1d69bad098b9ed82af8844fb23b473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073f63370f0a9c09d53e1a410181bd80831934efb1973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000738c2682e403b1be886e59315c4c3c66468f2f1a1073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073c8bf8c55224c4ce61cb92f4e8e2eb0209b0bf25d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000731a8a67603eacb511b6aad692061bb8184bf0c5d173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000738cc7b3bb008799a76ca9a886f1917ce7be3e25a073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060018060007369cd50be56604f940cd444182db1bae24156920473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000733efa2d0c9929ee7d66cc61c899996e8673a6dab873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073ebc3c19ae48978822d00ebb4b8532d2ec0e0759873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073790e9f425ce7991322ddaf9d7bae1129bd68086873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000733d635158a7fbc164b2170ec05083313de9addf7273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000736f158c7ddaeb8594d36c8869bee1b3080a6e531773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000734e32ebe322b4743adc6c27f8b66fcd4d539f204573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073ffc041b1c734f8bc0502a9fc0d7c35ab437c416d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073ca3e9a1102caa617635af1eae757c255d501727873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073a5a52a6e8f911e01047c389c56da31cd6b82884073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073d056a5fb273359ec4a3b45a3f98432c580f31d5673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073a94b40c53432f0576e64873ce1cead1aae62fc9073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000738acc5677f98b86c407bfa7861f53857430ba390473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060018060007390e72efbd7a646453d7e3a1f3c4ae5220c414eab73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000736659f315fb55cc93f5a25ccdd0edf3a73b92330873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073da567f1d3f131985f779c88ad8dbb35e6a65a00c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073749bf5e8de4fb44f14de3b1498852dc0471be8a873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073e96d65ec7c8856114878300697a3e5052de194ff73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073e0a21fe64ff987e0518204bfc6451bcb265ddbbc73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073aacc4ea6188fb9d2f8ffee395fd4a75f7e5518b373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060018060007352217443e3fbed2ddf2364f8e174dec88a72b3a673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073184b44fd51becc7b547f8268e39d9126983826f873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073d838a891e891d9e59942a5d04d26b1b67a0e677973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000739e353fbdc3ec7290290bda31a8001cb609858adf73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073ad7d7000dcc2122416f5b314c557704084e3d37d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000732670fdb57eeffd47cd6e90067bdd54e5ef79e72773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000730f11cf7894dcc97a9d30be39f0d04720dc5d553173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073f29680cfb7893cf142c603580604d748a7de6e6573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000739b0726e95e72eb6f305b472828b88d2d2bdd41c773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000733051ca84fc32d731f3aec559fc8a1ee343ab3a9773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000732bb5f56470f26b2518f56b4f32e9a33c3562457d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060018060007385dd36038eacbeedf785927cde2ac47fdb58103273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000738043d8aee89d74f6611b6e09c811a45b05b19d0e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073687ea228eb60a22c2a9145857435b988f58c3a6373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073a9382e2f2e3fead01b260b3bd4e1023ce48ef26573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073b825ac19f7ee811190d94d50a8d2dec1be9cfedf73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073c482b3fa06380359462972a8fc128c66505231dd73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000739ae5ffc3923a55bc32ff4a38812bba629261e03a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073515aff85b6a289ed75713d6ff3addf7bf57f081073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000737bb9635e750a100d8c73cf88114175b1e346d49573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000733485f724f8f562a417c8405a70a430dfc0ea604473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073fdcc9c3defd76175457759d21ec7bebfa761418973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000737b88ad278cd11506661516e544ecaa9e39f03af073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073ccd0466227327941eac05e1d7ee7524debfc4d2073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000735485dac30911d3bbe51bc61b84f723160379d49f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073da2e1abbf7c35bce835aeef4fbfc1d6e84dd8a1973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073781dc05bb477a936865516f928dc12016c99217773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000738a6c29f7fe583ad69ecd4da5a6ab49f6c850b14873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000733151335a0f4dd51fc553c39d3003acbb59568f0973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060018060007385c7dcbfcf50ca65817bb629fd580b79994e1f7a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073e5963480ace624a003cb1645c75ef468d7d533c573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060018060007372714f174f24951ba5336534a2ab4f223fb909a373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000733b09545ff83844298eff767eaad95d66dc852d8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073bb35a21de58ae57526000df4916fa0994853467173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000736536f90f5ca05166b98dad513b02c237f475101173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073a66230f6a34db307c443f4818e77f541fc67d7e373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073cbbe17de5e61e746dcd43e8d4a072505d0747fea73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060018060007346b8ffc41f26cd896e033942caf999b78d10c27773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073e14252bfbc36a0f0b0599c3f1adb85e00432d15273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073f93ed4fe97eb8a2508d03222a28e332f1c89b0ed73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060018060007337f48060490eeadce18da8965139b4af6ac1b3c673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060018060007369bb92bf0641df61783ea18c01f96656424bd76c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073c19baa07f2e0445504acd571e8e4a3097c96628a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073035000529cffe9f04db8e81b7a53807e63eeac1273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000738b5e270c19eb8f28050a561d0be08690cc33e73d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073127bbc2904dbb53cf601782fc12fa4fd633394e473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060018060007309822341ed88aeea91bc06eac6b16bcd091d924173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000733ebbe77bc7ae8655b78e678ef9cde01925ee59ad73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073ed2a45611b967df5647a17dfeaa0dec40806de5473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000739043c7c4f4b57588dbb4dd2d84ee12d2ba85b10173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073cb309aabd74e66b6392002e07696875299dd6d1373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060018060007319dfdc194bb5cf599af78b1967dbb3783c59072073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073e0027f5bf87241fa8e8b7f31da691686f3dd1d4973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073b534b564ddde2ff68b4698cc06943675482ad2c173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000738744465ab472a103841d8a9d21d9f06aafcba77673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073884fa72df82c658bafb98e79d9b52c02d5c84b6873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060018060007336e0caf9d18301104e6c9d5f1db9e3cc6efd6ac373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060018060007337042bd03c06b19aedb94a4e2157ab9b0878c01673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073cdd607decbe9b714f6e032ba478830a52175323373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073641d35823e1342b5d7b541b1c701c3d4a41f82ad73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073e5dd12f8ab12a4fb51695cd1c01a9318a274635773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073808e2cb9abee589093f181cdca4461ffa976954573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060018060007370c05eea4e71a5ecdee5ec1d1fc3f8843c320efa73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060018060007359d7b684bced2a28fedebfc09ce3a795f49a462073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000735ed48ecbe5ea89720f21147080e7088fa6a8fc0d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073669fd7eeda4cab02849fc96532bf2dda0786e96773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600180600073efac8617928e662d607c77bf777f91d7908424b273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550565b611bca80620055ab6000396000f3fe6080604052600436106101185760003560e01c80638da5cb5b116100a0578063d0d41fe111610064578063d0d41fe1146108a5578063dd31ee2d146108f6578063de8801e514610931578063e43252d71461095e578063f2fde38b146109af576105e6565b80638da5cb5b146107545780639547d2c3146107955780639642ddaf146107fa5780639b19251a14610811578063a88e099614610878576105e6565b8063589210d9116100e7578063589210d91461065b578063715018a614610686578063765950501461069d5780637d9c7c1a146106c85780638ab1d68114610703576105e6565b806304c98b2b146105eb5780631ad2ad1a1461060257806328539c17146106195780633d6c580914610644576105e6565b366105e657600660009054906101000a900460ff1661019f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f50726573616c6520686173206e6f74206265656e20737461727465642e00000081525060200191505060405180910390fd5b60006007541015610218576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4f6820796f752061726520736f206c6174652e0000000000000000000000000081525060200191505060405180910390fd5b600660019054906101000a900460ff16156102d057600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166102cf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180611ad66032913960400191505060405180910390fd5b5b600061032434600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610a0090919063ffffffff16565b9050600554811115610381576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180611ab06026913960400191505060405180910390fd5b600061039860045434610a8890919063ffffffff16565b9050600754811115610412576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f696e73756666696369656e742070726573616c6520737570706c79000000000081525060200191505060405180910390fd5b61042781600754610b0e90919063ffffffff16565b600781905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1933836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156104c057600080fd5b505af11580156104d4573d6000803e3d6000fd5b5050505081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015610584573d6000803e3d6000fd5b507f664b2569fe0929812f7583d06f01bf9ccb38995c91b76d802800a2a402e288ac333483604051808473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a15050005b600080fd5b3480156105f757600080fd5b50610600610b58565b005b34801561060e57600080fd5b50610617610c3d565b005b34801561062557600080fd5b5061062e610d22565b6040518082815260200191505060405180910390f35b34801561065057600080fd5b50610659610d28565b005b34801561066757600080fd5b50610670610e0d565b6040518082815260200191505060405180910390f35b34801561069257600080fd5b5061069b610e13565b005b3480156106a957600080fd5b506106b2610f99565b6040518082815260200191505060405180910390f35b3480156106d457600080fd5b50610701600480360360208110156106eb57600080fd5b8101908080359060200190929190505050610f9f565b005b34801561070f57600080fd5b506107526004803603602081101561072657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611071565b005b34801561076057600080fd5b50610769611236565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156107a157600080fd5b506107e4600480360360208110156107b857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061125f565b6040518082815260200191505060405180910390f35b34801561080657600080fd5b5061080f611277565b005b34801561081d57600080fd5b506108606004803603602081101561083457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113ed565b60405180821515815260200191505060405180910390f35b34801561088457600080fd5b5061088d61140d565b60405180821515815260200191505060405180910390f35b3480156108b157600080fd5b506108f4600480360360208110156108c857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611420565b005b34801561090257600080fd5b5061092f6004803603602081101561091957600080fd5b810190808035906020019092919050505061152c565b005b34801561093d57600080fd5b506109466115fe565b60405180821515815260200191505060405180910390f35b34801561096a57600080fd5b506109ad6004803603602081101561098157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611611565b005b3480156109bb57600080fd5b506109fe600480360360208110156109d257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117dc565b005b600080828401905083811015610a7e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600080831415610a9b5760009050610b08565b6000828402905082848281610aac57fe5b0414610b03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180611b536021913960400191505060405180910390fd5b809150505b92915050565b6000610b5083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506119e7565b905092915050565b610b60611aa7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c20576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600660006101000a81548160ff021916908315150217905550565b610c45611aa7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600660006101000a81548160ff021916908315150217905550565b60075481565b610d30611aa7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610df0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600660016101000a81548160ff021916908315150217905550565b60055481565b610e1b611aa7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610edb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60045481565b610fa7611aa7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611067576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060048190555050565b611079611aa7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611139576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166111db576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180611b746021913960400191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60026020528060005260406000206000915090505481565b61127f611aa7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461133f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f193060016040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156113d357600080fd5b505af11580156113e7573d6000803e3d6000fd5b50505050565b60016020528060005260406000206000915054906101000a900460ff1681565b600660019054906101000a900460ff1681565b611428611aa7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611534611aa7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060058190555050565b600660009054906101000a900460ff1681565b611619611aa7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60001515600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514611782576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180611b2e6025913960400191505060405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6117e4611aa7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118a4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561192a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180611b086026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000838311158290611a94576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611a59578082015181840152602081019050611a3e565b50505050905090810190601f168015611a865780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60003390509056fe45766572796f6e652073686f756c6420627579206c6573736572207468616e2033206574682e546869732074696d65206973206f6e6c7920666f722070656f706c652077686f2061726520696e2077686974656c6973742e4f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737354686973206163636f756e7420697320616c726561647920696e2077686974656c6973742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7754686973206163636f756e74206973206e6f7420696e2077686974656c6973742ea2646970667358221220d5045699c4456e3a196371cfb0d003b806ae697bcc36c5e22add0a760e62618b64736f6c63430007020033000000000000000000000000370d7f82131adc0bb0e87869ee8293409272a111
Deployed Bytecode
0x6080604052600436106101185760003560e01c80638da5cb5b116100a0578063d0d41fe111610064578063d0d41fe1146108a5578063dd31ee2d146108f6578063de8801e514610931578063e43252d71461095e578063f2fde38b146109af576105e6565b80638da5cb5b146107545780639547d2c3146107955780639642ddaf146107fa5780639b19251a14610811578063a88e099614610878576105e6565b8063589210d9116100e7578063589210d91461065b578063715018a614610686578063765950501461069d5780637d9c7c1a146106c85780638ab1d68114610703576105e6565b806304c98b2b146105eb5780631ad2ad1a1461060257806328539c17146106195780633d6c580914610644576105e6565b366105e657600660009054906101000a900460ff1661019f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f50726573616c6520686173206e6f74206265656e20737461727465642e00000081525060200191505060405180910390fd5b60006007541015610218576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4f6820796f752061726520736f206c6174652e0000000000000000000000000081525060200191505060405180910390fd5b600660019054906101000a900460ff16156102d057600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166102cf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180611ad66032913960400191505060405180910390fd5b5b600061032434600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610a0090919063ffffffff16565b9050600554811115610381576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180611ab06026913960400191505060405180910390fd5b600061039860045434610a8890919063ffffffff16565b9050600754811115610412576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f696e73756666696369656e742070726573616c6520737570706c79000000000081525060200191505060405180910390fd5b61042781600754610b0e90919063ffffffff16565b600781905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1933836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156104c057600080fd5b505af11580156104d4573d6000803e3d6000fd5b5050505081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015610584573d6000803e3d6000fd5b507f664b2569fe0929812f7583d06f01bf9ccb38995c91b76d802800a2a402e288ac333483604051808473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a15050005b600080fd5b3480156105f757600080fd5b50610600610b58565b005b34801561060e57600080fd5b50610617610c3d565b005b34801561062557600080fd5b5061062e610d22565b6040518082815260200191505060405180910390f35b34801561065057600080fd5b50610659610d28565b005b34801561066757600080fd5b50610670610e0d565b6040518082815260200191505060405180910390f35b34801561069257600080fd5b5061069b610e13565b005b3480156106a957600080fd5b506106b2610f99565b6040518082815260200191505060405180910390f35b3480156106d457600080fd5b50610701600480360360208110156106eb57600080fd5b8101908080359060200190929190505050610f9f565b005b34801561070f57600080fd5b506107526004803603602081101561072657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611071565b005b34801561076057600080fd5b50610769611236565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156107a157600080fd5b506107e4600480360360208110156107b857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061125f565b6040518082815260200191505060405180910390f35b34801561080657600080fd5b5061080f611277565b005b34801561081d57600080fd5b506108606004803603602081101561083457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113ed565b60405180821515815260200191505060405180910390f35b34801561088457600080fd5b5061088d61140d565b60405180821515815260200191505060405180910390f35b3480156108b157600080fd5b506108f4600480360360208110156108c857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611420565b005b34801561090257600080fd5b5061092f6004803603602081101561091957600080fd5b810190808035906020019092919050505061152c565b005b34801561093d57600080fd5b506109466115fe565b60405180821515815260200191505060405180910390f35b34801561096a57600080fd5b506109ad6004803603602081101561098157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611611565b005b3480156109bb57600080fd5b506109fe600480360360208110156109d257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117dc565b005b600080828401905083811015610a7e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600080831415610a9b5760009050610b08565b6000828402905082848281610aac57fe5b0414610b03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180611b536021913960400191505060405180910390fd5b809150505b92915050565b6000610b5083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506119e7565b905092915050565b610b60611aa7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c20576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600660006101000a81548160ff021916908315150217905550565b610c45611aa7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600660006101000a81548160ff021916908315150217905550565b60075481565b610d30611aa7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610df0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600660016101000a81548160ff021916908315150217905550565b60055481565b610e1b611aa7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610edb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60045481565b610fa7611aa7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611067576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060048190555050565b611079611aa7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611139576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166111db576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180611b746021913960400191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60026020528060005260406000206000915090505481565b61127f611aa7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461133f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f193060016040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156113d357600080fd5b505af11580156113e7573d6000803e3d6000fd5b50505050565b60016020528060005260406000206000915054906101000a900460ff1681565b600660019054906101000a900460ff1681565b611428611aa7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611534611aa7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060058190555050565b600660009054906101000a900460ff1681565b611619611aa7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60001515600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514611782576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180611b2e6025913960400191505060405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6117e4611aa7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118a4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561192a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180611b086026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000838311158290611a94576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611a59578082015181840152602081019050611a3e565b50505050905090810190601f168015611a865780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60003390509056fe45766572796f6e652073686f756c6420627579206c6573736572207468616e2033206574682e546869732074696d65206973206f6e6c7920666f722070656f706c652077686f2061726520696e2077686974656c6973742e4f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737354686973206163636f756e7420697320616c726561647920696e2077686974656c6973742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7754686973206163636f756e74206973206e6f7420696e2077686974656c6973742ea2646970667358221220d5045699c4456e3a196371cfb0d003b806ae697bcc36c5e22add0a760e62618b64736f6c63430007020033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000370d7f82131adc0bb0e87869ee8293409272a111
-----Decoded View---------------
Arg [0] : account (address): 0x370D7f82131aDc0BB0E87869Ee8293409272a111
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000370d7f82131adc0bb0e87869ee8293409272a111
Deployed Bytecode Sourcemap
34131:17050:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35992:12;;;;;;;;;;;35984:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35891:1:::1;35870:17;;:22;;35862:54;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;36145:13:::2;;;;;;;;;;;36141:130;;;36183:9;:21;36193:10;36183:21;;;;;;;;;;;;;;;;;;;;;;;;;36175:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36141:130;36281:19;36303:36;36329:9;36303;:21;36313:10;36303:21;;;;;;;;;;;;;;;;:25;;:36;;;;:::i;:::-;36281:58;;36376:8;;36358:14;:26;;36350:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36438:15;36456:24;36470:9;;36456;:13;;:24;;;;:::i;:::-;36438:42;;36513:17;;36499:10;:31;;36491:71;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;36593:33;36615:10;36593:17;;:21;;:33;;;;:::i;:::-;36573:17;:53;;;;36637:4;;;;;;;;;;;:9;;;36647:10;36659;36637:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;36705:14;36681:9;:21;36691:10;36681:21;;;;;;;;;;;;;;;:38;;;;36730:10;;;;;;;;;;;:19;;:30;36750:9;36730:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;36776:49;36791:10;36803:9;36814:10;36776:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35927:1;;34131:17050:::0;;;;;35346:79;;;;;;;;;;;;;:::i;:::-;;35433;;;;;;;;;;;;;:::i;:::-;;34517:43;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;35720:93;;;;;;;;;;;;;:::i;:::-;;34401:31;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1548:148;;;;;;;;;;;;;:::i;:::-;;34369:25;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;35520:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;35043:183;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;906:79;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;34287:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;51095:83;;;;;;;;;;;;;:::i;:::-;;34238:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;34478:32;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;35234:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;35621:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;34439:32;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;34845:190;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1851:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;28976:181;29034:7;29054:9;29070:1;29066;:5;29054:17;;29095:1;29090;:6;;29082:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29148:1;29141:8;;;28976:181;;;;:::o;30330:471::-;30388:7;30638:1;30633;:6;30629:47;;;30663:1;30656:8;;;;30629:47;30688:9;30704:1;30700;:5;30688:17;;30733:1;30728;30724;:5;;;;;;:10;30716:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30792:1;30785:8;;;30330:471;;;;;:::o;29440:136::-;29498:7;29525:43;29529:1;29532;29525:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;29518:50;;29440:136;;;;:::o;35346:79::-;1128:12;:10;:12::i;:::-;1118:22;;:6;;;;;;;;;;:22;;;1110:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35413:4:::1;35398:12;;:19;;;;;;;;;;;;;;;;;;35346:79::o:0;35433:::-;1128:12;:10;:12::i;:::-;1118:22;;:6;;;;;;;;;;:22;;;1110:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35499:5:::1;35484:12;;:20;;;;;;;;;;;;;;;;;;35433:79::o:0;34517:43::-;;;;:::o;35720:93::-;1128:12;:10;:12::i;:::-;1118:22;;:6;;;;;;;;;;:22;;;1110:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35800:5:::1;35784:13;;:21;;;;;;;;;;;;;;;;;;35720:93::o:0;34401:31::-;;;;:::o;1548:148::-;1128:12;:10;:12::i;:::-;1118:22;;:6;;;;;;;;;;:22;;;1110:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1655:1:::1;1618:40;;1639:6;::::0;::::1;;;;;;;;1618:40;;;;;;;;;;;;1686:1;1669:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1548:148::o:0;34369:25::-;;;;:::o;35520:93::-;1128:12;:10;:12::i;:::-;1118:22;;:6;;;;;;;;;;:22;;;1110:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35597:8:::1;35585:9;:20;;;;35520:93:::0;:::o;35043:183::-;1128:12;:10;:12::i;:::-;1118:22;;:6;;;;;;;;;;:22;;;1110:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35125:9:::1;:18;35135:7;35125:18;;;;;;;;;;;;;;;;;;;;;;;;;35117:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35213:5;35192:9;:18;35202:7;35192:18;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;35043:183:::0;:::o;906:79::-;944:7;971:6;;;;;;;;;;;964:13;;906:79;:::o;34287:42::-;;;;;;;;;;;;;;;;;:::o;51095:83::-;1128:12;:10;:12::i;:::-;1118:22;;:6;;;;;;;;;;:22;;;1110:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;51143:4:::1;;;;;;;;;;;:9;;;51161:4;51168:1;51143:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;51095:83::o:0;34238:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;34478:32::-;;;;;;;;;;;;;:::o;35234:104::-;1128:12;:10;:12::i;:::-;1118:22;;:6;;;;;;;;;;:22;;;1110:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35323:7:::1;35310:10;;:20;;;;;;;;;;;;;;;;;;35234:104:::0;:::o;35621:91::-;1128:12;:10;:12::i;:::-;1118:22;;:6;;;;;;;;;;:22;;;1110:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35696:8:::1;35685;:19;;;;35621:91:::0;:::o;34439:32::-;;;;;;;;;;;;;:::o;34845:190::-;1128:12;:10;:12::i;:::-;1118:22;;:6;;;;;;;;;;:22;;;1110:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34944:5:::1;34922:27;;:9;:18;34932:7;34922:18;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;34914:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35023:4;35002:9:::0;:18:::1;35012:7;35002:18;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;34845:190:::0;:::o;1851:244::-;1128:12;:10;:12::i;:::-;1118:22;;:6;;;;;;;;;;:22;;;1110:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1960:1:::1;1940:22;;:8;:22;;;;1932:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2050:8;2021:38;;2042:6;::::0;::::1;;;;;;;;2021:38;;;;;;;;;;;;2079:8;2070:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1851:244:::0;:::o;29879:192::-;29965:7;29998:1;29993;:6;;30001:12;29985:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30025:9;30041:1;30037;:5;30025:17;;30062:1;30055:8;;;29879:192;;;;;:::o;60:106::-;113:15;148:10;141:17;;60:106;:::o
Swarm Source
ipfs://d5045699c4456e3a196371cfb0d003b806ae697bcc36c5e22add0a760e62618b
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.