More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 134 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer | 17844775 | 467 days ago | IN | 0 ETH | 0.0029938 | ||||
Approve | 13906035 | 1050 days ago | IN | 0 ETH | 0.00280936 | ||||
Approve | 13906032 | 1050 days ago | IN | 0 ETH | 0.00287302 | ||||
Approve | 13891163 | 1052 days ago | IN | 0 ETH | 0.00185083 | ||||
Approve | 13885141 | 1053 days ago | IN | 0 ETH | 0.00226822 | ||||
Approve | 13221607 | 1157 days ago | IN | 0 ETH | 0.00164985 | ||||
Approve | 13087837 | 1178 days ago | IN | 0 ETH | 0.00259443 | ||||
Approve | 13066549 | 1181 days ago | IN | 0 ETH | 0.00083841 | ||||
Approve | 13066549 | 1181 days ago | IN | 0 ETH | 0.00077453 | ||||
Approve | 13059139 | 1182 days ago | IN | 0 ETH | 0.00207137 | ||||
Approve | 13052894 | 1183 days ago | IN | 0 ETH | 0.00204732 | ||||
Transfer | 13043927 | 1185 days ago | IN | 0 ETH | 0.01468922 | ||||
Approve | 13032811 | 1186 days ago | IN | 0 ETH | 0.00271831 | ||||
Approve | 13030630 | 1187 days ago | IN | 0 ETH | 0.00181467 | ||||
Approve | 13026785 | 1187 days ago | IN | 0 ETH | 0.00133075 | ||||
Approve | 13020797 | 1188 days ago | IN | 0 ETH | 0.0009761 | ||||
Approve | 13015961 | 1189 days ago | IN | 0 ETH | 0.00209385 | ||||
Approve | 13015932 | 1189 days ago | IN | 0 ETH | 0.00190773 | ||||
Approve | 13014549 | 1189 days ago | IN | 0 ETH | 0.00170307 | ||||
Approve | 13012911 | 1190 days ago | IN | 0 ETH | 0.01270269 | ||||
Approve | 13012897 | 1190 days ago | IN | 0 ETH | 0.01377288 | ||||
Approve | 13012684 | 1190 days ago | IN | 0 ETH | 0.00279883 | ||||
Approve | 13012309 | 1190 days ago | IN | 0 ETH | 0.0023265 | ||||
Approve | 13012029 | 1190 days ago | IN | 0 ETH | 0.00227997 | ||||
Approve | 13011869 | 1190 days ago | IN | 0 ETH | 0.00227997 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
17844775 | 467 days ago | 19 wei | ||||
17844775 | 467 days ago | 18 wei | ||||
17844775 | 467 days ago | 37 wei | ||||
13885341 | 1053 days ago | 0.00117698 ETH | ||||
13885341 | 1053 days ago | 0.00117698 ETH | ||||
13885341 | 1053 days ago | 0.00235397 ETH | ||||
13286448 | 1147 days ago | 0.0024118 ETH | ||||
13286448 | 1147 days ago | 0.0024118 ETH | ||||
13286448 | 1147 days ago | 0.0048236 ETH | ||||
13212654 | 1159 days ago | 0.00297932 ETH | ||||
13212654 | 1159 days ago | 0.00297932 ETH | ||||
13212654 | 1159 days ago | 0.00595864 ETH | ||||
13176654 | 1164 days ago | 0.0042638 ETH | ||||
13176654 | 1164 days ago | 0.0042638 ETH | ||||
13176654 | 1164 days ago | 0.0085276 ETH | ||||
13151328 | 1168 days ago | 0.00225247 ETH | ||||
13151328 | 1168 days ago | 0.00225247 ETH | ||||
13151328 | 1168 days ago | 0.00450494 ETH | ||||
13108261 | 1175 days ago | 0.00175055 ETH | ||||
13108261 | 1175 days ago | 0.00175055 ETH | ||||
13108261 | 1175 days ago | 0.00350111 ETH | ||||
13076954 | 1180 days ago | 0.00145161 ETH | ||||
13076954 | 1180 days ago | 0.00145161 ETH | ||||
13076954 | 1180 days ago | 0.00290322 ETH | ||||
13059142 | 1182 days ago | 0.00072617 ETH |
Loading...
Loading
Contract Name:
BLASC
Compiler Version
v0.6.12+commit.27d51765
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
//SPDX-License-Identifier: GPL-3.0-or-later // __________ ___. .____ _____ __________________ // \______ \_____ \_ |__ ___.__. | | / _ \ / _____/\_ ___ \ // | | _/\__ \ | __ < | | | | / /_\ \ \_____ \ / \ \/ // | | \ / __ \| \_\ \___ | | |___/ | \/ \\ \____ // |______ /(____ /___ / ____| |_______ \____|__ /_______ / \______ / // \/ \/ \/\/ \/ \/ \/ \/ pragma solidity ^0.6.12; abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } contract Ownable is Context { address private _owner; address private _previousOwner; uint256 private _lockTime; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () internal { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } function geUnlockTime() public view returns (uint256) { return _lockTime; } //Locks the contract for owner for the amount of time provided function lock(uint256 time) public virtual onlyOwner { _previousOwner = _owner; _owner = address(0); _lockTime = now + time; emit OwnershipTransferred(_owner, address(0)); } //Unlocks the contract for owner when _lockTime is exceeds function unlock() public virtual { require(_previousOwner == msg.sender, "You don't have permission to unlock"); require(now > _lockTime , "Contract is locked until 7 days"); emit OwnershipTransferred(_owner, _previousOwner); _owner = _previousOwner; } } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; } // Contract implementation contract BLASC is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; mapping (address => uint256) private _rOwned; mapping (address => uint256) private _tOwned; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFee; mapping (address => bool) private _isExcluded; // excluded from reward address[] private _excluded; mapping (address => bool) private _isBlackListedBot; address[] private _blackListedBots; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 10_000 * 10**18; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; string private _name = 'Baby Lonely Alien Space Club'; string private _symbol = 'BLASC'; uint8 private _decimals = 18; uint256 private _taxFee = 10; uint256 private _nftFee = 55; uint256 private _marketingFee = 20; uint256 private _swapImpact = 10; uint256 private _previousTaxFee = _taxFee; uint256 private _previousNftFee = _nftFee; uint256 private _previousMarketingFee = _marketingFee; address payable public _nftWalletAddress = payable(0xAe89a842F77546f22357a7290E49566F93A3f9C3); address payable public _marketingWalletAddress = payable(0x13ff7906c023FeAeEC81343A75243633aEdE2704); IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; bool inSwapAndLiquify = false; bool public swapAndLiquifyEnabled = true; bool public tradingOpen = false; uint256 private _maxTxAmount = _tTotal.div(200); event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); event SwapTokensForETH( uint256 amountIn, address[] path ); modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor () public { _rOwned[_msgSender()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // UniswapV2 for Ethereum network // Create a uniswap pair for this new token uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); // set the rest of the contract variables uniswapV2Router = _uniswapV2Router; // Exclude owner and this contract from fee _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_nftWalletAddress] = true; _isExcludedFromFee[_marketingWalletAddress] = true; _isBlackListedBot[address(0xa1ceC245c456dD1bd9F2815a6955fEf44Eb4191b)] = true; _blackListedBots.push(address(0xa1ceC245c456dD1bd9F2815a6955fEf44Eb4191b)); _isBlackListedBot[address(0x27F9Adb26D532a41D97e00206114e429ad58c679)] = true; _blackListedBots.push(address(0x27F9Adb26D532a41D97e00206114e429ad58c679)); _isBlackListedBot[address(0x9282dc5c422FA91Ff2F6fF3a0b45B7BF97CF78E7)] = true; _blackListedBots.push(address(0x9282dc5c422FA91Ff2F6fF3a0b45B7BF97CF78E7)); _isBlackListedBot[address(0xfad95B6089c53A0D1d861eabFaadd8901b0F8533)] = true; _blackListedBots.push(address(0xfad95B6089c53A0D1d861eabFaadd8901b0F8533)); _isBlackListedBot[address(0xfe9d99ef02E905127239E85A611c29ad32c31c2F)] = true; _blackListedBots.push(address(0xfe9d99ef02E905127239E85A611c29ad32c31c2F)); _isBlackListedBot[address(0x59341Bc6b4f3Ace878574b05914f43309dd678c7)] = true; _blackListedBots.push(address(0x59341Bc6b4f3Ace878574b05914f43309dd678c7)); _isBlackListedBot[address(0x136F4B5b6A306091b280E3F251fa0E21b1280Cd5)] = true; _blackListedBots.push(address(0x136F4B5b6A306091b280E3F251fa0E21b1280Cd5)); _isBlackListedBot[address(0xf1CA09CE745bfa38258b26cd839ef0E8DE062A40)] = true; _blackListedBots.push(address(0xf1CA09CE745bfa38258b26cd839ef0E8DE062A40)); _isBlackListedBot[address(0x8719c2829944150F59E3428CA24f6Fc018E43890)] = true; _blackListedBots.push(address(0x8719c2829944150F59E3428CA24f6Fc018E43890)); _isBlackListedBot[address(0xa8E0771582EA33A9d8e6d2Ccb65A8D10Bd0Ea517)] = true; _blackListedBots.push(address(0xa8E0771582EA33A9d8e6d2Ccb65A8D10Bd0Ea517)); _isBlackListedBot[address(0xF3DaA7465273587aec8b2d2706335e06068ccce4)] = true; _blackListedBots.push(address(0xF3DaA7465273587aec8b2d2706335e06068ccce4)); _isBlackListedBot[address(0x9272A2c7083Da2B1C2F0739d9655D1A09764DEAD)] = true; _blackListedBots.push(address(0x9272A2c7083Da2B1C2F0739d9655D1A09764DEAD)); emit Transfer(address(0), _msgSender(), _tTotal); } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function isExcludedFromReward(address account) public view returns (bool) { return _isExcluded[account]; } function setExcludeFromFee(address account, bool excluded) external onlyOwner() { _isExcludedFromFee[account] = excluded; } function totalFees() public view returns (uint256) { return _tFeeTotal; } function deliver(uint256 tAmount) public { address sender = _msgSender(); require(!_isExcluded[sender], "Excluded addresses cannot call this function"); (uint256 rAmount,,,,,) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rTotal = _rTotal.sub(rAmount); _tFeeTotal = _tFeeTotal.add(tAmount); } function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) { require(tAmount <= _tTotal, "Amount must be less than supply"); if (!deductTransferFee) { (uint256 rAmount,,,,,) = _getValues(tAmount); return rAmount; } else { (,uint256 rTransferAmount,,,,) = _getValues(tAmount); return rTransferAmount; } } function tokenFromReflection(uint256 rAmount) public view returns(uint256) { require(rAmount <= _rTotal, "Amount must be less than total reflections"); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function excludeFromReward(address account) external onlyOwner() { require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not exclude Uniswap router.'); require(!_isExcluded[account], "Account is already excluded"); if(_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; _excluded.push(account); } function includeInReward(address account) external onlyOwner() { require(_isExcluded[account], "Account is already excluded"); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _tOwned[account] = 0; _isExcluded[account] = false; _excluded.pop(); break; } } } function addBotToBlackList(address account) external onlyOwner() { require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not blacklist Uniswap router.'); require(!_isBlackListedBot[account], "Account is already blacklisted"); _isBlackListedBot[account] = true; _blackListedBots.push(account); } function removeBotFromBlackList(address account) external onlyOwner() { require(_isBlackListedBot[account], "Account is not blacklisted"); for (uint256 i = 0; i < _blackListedBots.length; i++) { if (_blackListedBots[i] == account) { _blackListedBots[i] = _blackListedBots[_blackListedBots.length - 1]; _isBlackListedBot[account] = false; _blackListedBots.pop(); break; } } } function removeAllFee() private { if(_taxFee == 0 && _nftFee == 0 && _marketingFee == 0) return; _previousTaxFee = _taxFee; _previousNftFee = _nftFee; _previousMarketingFee = _marketingFee; _taxFee = 0; _nftFee = 0; _marketingFee = 0; } function restoreAllFee() private { _taxFee = _previousTaxFee; _marketingFee = _previousMarketingFee; _nftFee = _previousMarketingFee; } function isExcludedFromFee(address account) public view returns(bool) { return _isExcludedFromFee[account]; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer(address sender, address recipient, uint256 amount) private { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); require(!_isBlackListedBot[sender], "You have no power here!"); require(!_isBlackListedBot[recipient], "You have no power here!"); require(!_isBlackListedBot[tx.origin], "You have no power here!"); if(sender != owner() && recipient != owner()) { require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount."); // sorry about that, but sniper bots nowadays are buying multiple times, hope I have something more robust to prevent them to nuke the launch :-( if (sender == uniswapV2Pair) { require(tradingOpen, "Wait for opened trading"); require(balanceOf(recipient) <= _maxTxAmount, "Already bought maxTxAmount, wait till check off"); require(balanceOf(tx.origin) <= _maxTxAmount, "Already bought maxTxAmount, wait till check off"); } // is the token balance of this contract address over the min number of // tokens that we need to initiate a swap + liquidity lock? // also, don't get caught in a circular liquidity event. // also, don't swap & liquify if sender is uniswap pair. if (!inSwapAndLiquify && swapAndLiquifyEnabled && sender != uniswapV2Pair) { swapTokens(amount, recipient == uniswapV2Pair); } } //indicates if fee should be deducted from transfer bool takeFee = true; //if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]){ takeFee = false; } //transfer amount, it will take tax and eth fee _tokenTransfer(sender,recipient,amount,takeFee); } event SwapAndLiquifyFailed(bytes failErr); function swapTokens(uint256 amount, bool isSell) private lockTheSwap { uint256 contractTokenBalance = balanceOf(address(this)); uint256 maxAddedToSlipPage = amount.mul(_swapImpact).div(100); if (isSell && contractTokenBalance > maxAddedToSlipPage) { contractTokenBalance = maxAddedToSlipPage; } swapTokensForEth(contractTokenBalance); sendETHToWallets(address(this).balance); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap try uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ) { emit SwapTokensForETH(tokenAmount, path); } catch (bytes memory e) { emit SwapAndLiquifyFailed(e); } } function sendETHToWallets(uint256 amount) private { uint256 fees = _marketingFee.add(_nftFee); uint256 marketing = amount.mul(_marketingFee).div(fees); _marketingWalletAddress.transfer(marketing); _nftWalletAddress.transfer(amount.sub(marketing)); } function openTrading() public onlyOwner { tradingOpen = true; } // We are exposing these functions to be able to manual swap and send // in case the token is highly valued and 5M becomes too much function manualSwap() external onlyOwner() { uint256 contractBalance = balanceOf(address(this)); swapTokensForEth(contractBalance); } function manualSwapAmount(uint256 amount) public onlyOwner() { uint256 contractBalance = balanceOf(address(this)); require(contractBalance >= amount , 'contract balance should be greater then amount'); swapTokensForEth(amount); } function manualSend() public onlyOwner() { uint256 contractETHBalance = address(this).balance; sendETHToWallets(contractETHBalance); } function manualSwapAndSend(uint256 amount) external onlyOwner() { manualSwapAmount(amount); manualSend(); } function setSwapAndLiquifyEnabled(bool _swapAndLiquifyEnabled) external onlyOwner(){ swapAndLiquifyEnabled = _swapAndLiquifyEnabled; } function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private { if(!takeFee) removeAllFee(); if (_isExcluded[sender] && !_isExcluded[recipient]) { _transferFromExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && _isExcluded[recipient]) { _transferToExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && !_isExcluded[recipient]) { _transferStandard(sender, recipient, amount); } else if (_isExcluded[sender] && _isExcluded[recipient]) { _transferBothExcluded(sender, recipient, amount); } else { _transferStandard(sender, recipient, amount); } if(!takeFee) restoreAllFee(); } function _transferStandard(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tNftMarketing) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeAllEthFees(tNftMarketing); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferToExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tNftMarketing) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeAllEthFees(tNftMarketing); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tNftMarketing) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeAllEthFees(tNftMarketing); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tNftMarketing) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeAllEthFees(tNftMarketing); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _takeAllEthFees(uint256 tNftMarketing) private { uint256 currentRate = _getRate(); uint256 rNftMarketing = tNftMarketing.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rNftMarketing); if(_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tNftMarketing); } function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } //to recieve ETH from uniswapV2Router when swapping receive() external payable {} function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) { (uint256 tTransferAmount, uint256 tFee, uint256 tNftMarketing) = _getTValues(tAmount); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tNftMarketing); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tNftMarketing); } function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256) { uint256 tFee = tAmount.mul(_taxFee).div(1000); uint256 tNftMarketing = tAmount.mul(_marketingFee.add(_nftFee)).div(1000); uint256 tTransferAmount = tAmount.sub(tFee).sub(tNftMarketing); return (tTransferAmount, tFee, tNftMarketing); } function _getRValues(uint256 tAmount, uint256 tFee, uint256 tNftMarketing) private view returns (uint256, uint256, uint256) { uint256 currentRate = _getRate(); uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); // thanks myobu for finding bug here, now everybody need to deploy new contracts lmao.. uint256 rNftMarketing = tNftMarketing.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rNftMarketing); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns(uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns(uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; for (uint256 i = 0; i < _excluded.length; i++) { if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal); rSupply = rSupply.sub(_rOwned[_excluded[i]]); tSupply = tSupply.sub(_tOwned[_excluded[i]]); } if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function _getTaxFee() private view returns(uint256) { return _taxFee; } function _getMaxTxAmount() private view returns(uint256) { return _maxTxAmount; } function _getETHBalance() public view returns(uint256 balance) { return address(this).balance; } function _setTaxFee(uint256 taxFee) external onlyOwner() { require(taxFee >= 0 && taxFee <= 490, 'taxFee should be in 0 - 490'); _taxFee = taxFee; } function _setMarketingFee(uint256 marketingFee) external onlyOwner() { require(marketingFee >= 0 && marketingFee <= 490, 'marketingFee should be in 0 - 490'); _marketingFee = marketingFee; } function _setNftFee(uint256 nftFee) external onlyOwner() { require(nftFee >= 0 && nftFee <= 490, 'nftFee should be in 0 - 490'); _nftFee = nftFee; } function _setMarketingWallet(address payable marketingWalletAddress) external onlyOwner() { _marketingWalletAddress = marketingWalletAddress; } function _setSwapImpact(uint256 swapImpact) external onlyOwner() { _swapImpact = swapImpact; } function _setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() { require(maxTxAmount >= 10**9 , 'maxTxAmount should be greater than total 1e9'); _maxTxAmount = maxTxAmount; } function recoverTokens(uint256 tokenAmount) public virtual onlyOwner() { _approve(address(this), owner(), tokenAmount); _transfer(address(this), owner(), tokenAmount); } }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"failErr","type":"bytes"}],"name":"SwapAndLiquifyFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_getETHBalance","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_nftWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketingFee","type":"uint256"}],"name":"_setMarketingFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketingWalletAddress","type":"address"}],"name":"_setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"_setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"nftFee","type":"uint256"}],"name":"_setNftFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapImpact","type":"uint256"}],"name":"_setSwapImpact","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"_setTaxFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addBotToBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"geUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualSwapAndSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"recoverTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBotFromBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapAndLiquifyEnabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
69021e19e0c9bab2400000600b55690200b25812c4f53fffff19600c55610100604052601c60c08190527f42616279204c6f6e656c7920416c69656e20537061636520436c75620000000060e09081526200005e91600e919062000938565b5060408051808201909152600580825264424c41534360d81b60209092019182526200008d91600f9162000938565b5060108054601260ff199091168117909155600a6011819055603791829055601460138190558181556015919091556016919091556017556018805473ae89a842f77546f22357a7290e49566f93a3f9c36001600160a01b03199182161790915560198054600160a81b7313ff7906c023feaeec81343a75243633aede2704919093161761ffff60a01b19169190911760ff60b01b19169055600b54620001429060c86200082d602090811b6200214817901c565b601a553480156200015257600080fd5b5060006200015f6200087e565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600c5460036000620001ba6200087e565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200023157600080fd5b505afa15801562000246573d6000803e3d6000fd5b505050506040513d60208110156200025d57600080fd5b5051604080516315ab88c960e31b815290516001600160a01b039283169263c9c653969230929186169163ad5c464891600480820192602092909190829003018186803b158015620002ae57600080fd5b505afa158015620002c3573d6000803e3d6000fd5b505050506040513d6020811015620002da57600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301525160448083019260209291908290030181600087803b1580156200032d57600080fd5b505af115801562000342573d6000803e3d6000fd5b505050506040513d60208110156200035957600080fd5b50516001600160601b0319606091821b811660a0529082901b166080526001600660006200038662000882565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152600684528281208054861660019081179091556018548316825283822080548716821790556019549092168152918220805485168217905560099092527f404b5b762e8059f6055e90a7bf5e88e1e2f628911a8da7857df40bf26352e2128054841683179055600a805480840182557fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a890810180546001600160a01b031990811673a1cec245c456dd1bd9f2815a6955fef44eb4191b179091557f82951a08c86bbc382122443ed556bc8073b7e0bdf3bbfb811f503389aad35bfc8054871686179055825480860184558201805482167327f9adb26d532a41d97e00206114e429ad58c6791790557f3ee2bfab112ce489483443731da982ac406a17d09137224e74d494a6037142ad805487168617905582548086018455820180548216739282dc5c422fa91ff2f6ff3a0b45b7bf97cf78e71790557fb7baecc9aa863a1182bccd59d3b8aaee484658aee9400a94283dad2dbafd9d1d80548716861790558254808601845582018054821673fad95b6089c53a0d1d861eabfaadd8901b0f85331790557fab5495752a9187414227aebaa8b39a4bffdb32802987cba6aff3f20498292a7180548716861790558254808601845582018054821673fe9d99ef02e905127239e85a611c29ad32c31c2f1790557f942ebcb2565846ab429e313119fc37882c100e43cc02a57b5525c115ad4f72998054871686179055825480860184558201805482167359341bc6b4f3ace878574b05914f43309dd678c71790557f11c8caefcbc9afecd5b2153811f415fe306a1f3884466a0ddf30ba3939464b1e80548716861790558254808601845582018054821673136f4b5b6a306091b280e3f251fa0e21b1280cd51790557f5285ca56d5238f5cab5f1f0e88c2f05725198ebf90836644148c3ad2ae4350dd80548716861790558254808601845582018054821673f1ca09ce745bfa38258b26cd839ef0e8de062a401790557f63311b9fe935901487e2709d823f9feaee35256550ebb1a20dea871df42b7600805487168617905582548086018455820180548216738719c2829944150f59e3428ca24f6fc018e438901790557ff1094c410968a21d81ae0bddb783a54ddd1d40925fb4944787cb37532e24c12380548716861790558254808601845582018054821673a8e0771582ea33a9d8e6d2ccb65a8d10bd0ea5171790557f1b4ff325b507f000c86886ba6b3c0ac86d817073e665a7d9d453685df186721280548716861790558254808601845582018054821673f3daa7465273587aec8b2d2706335e06068ccce41790557f14636460c0484814d76a12b4eef4c00c0ddcb351e422a21849209003359fc5fa80549096168517909555815493840182559152018054909116739272a2c7083da2b1c2f0739d9655d1a09764dead179055620007d96200087e565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600b546040518082815260200191505060405180910390a350620009d4565b60006200087783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200089160201b60201c565b9392505050565b3390565b6000546001600160a01b031690565b60008183620009215760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620008e5578181015183820152602001620008cb565b50505050905090810190601f168015620009135780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816200092e57fe5b0495945050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200097b57805160ff1916838001178555620009ab565b82800160010185558215620009ab579182015b82811115620009ab5782518255916020019190600101906200098e565b50620009b9929150620009bd565b5090565b5b80821115620009b95760008155600101620009be565b60805160601c60a05160601c61389762000a1c600039806113c5528061250352806126575280612697525080610b51528061291952806129d152806129f852506138976000f3fe6080604052600436106102975760003560e01c806370a082311161015a578063af9549e0116100c1578063dd4670641161007a578063dd467064146109be578063dd62ed3e146109e8578063f2fde38b14610a23578063f429389014610a56578063f815a84214610a6b578063ffb54a9914610a805761029e565b8063af9549e0146108ee578063b6c5232414610929578063bbbfab1f1461093e578063c49b9a8014610953578063c9567bf91461097f578063c994c4b9146109945761029e565b806395d89b411161011357806395d89b41146107fe5780639a02ecd514610813578063a457c2d71461083d578063a52fe9bb14610876578063a69df4b5146108a0578063a9059cbb146108b55761029e565b806370a0823114610711578063715018a6146107445780637ded4d6a1461075957806388e0853e1461078c57806388f82020146107b65780638da5cb5b146107e95761029e565b806339509351116101fe57806349bd5a5e116101b757806349bd5a5e146106425780634a74bb021461065757806351bc3c851461066c57806352390c02146106815780635342acb4146106b45780635880b873146106e75761029e565b8063395093511461053b5780633bd5d173146105745780634144d9e41461059e5780634303443d146105b35780634549b039146105e6578063474fe03f146106185761029e565b80631ff53b60116102505780631ff53b601461041357806323b872dd146104465780632d8381191461048957806330599fc5146104b3578063313ce567146104dd5780633685d419146105085761029e565b806306fdde03146102a3578063095ea7b31461032d57806313114a9d1461037a5780631694505e146103a157806318160ddd146103d25780631bbae6e0146103e75761029e565b3661029e57005b600080fd5b3480156102af57600080fd5b506102b8610a95565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102f25781810151838201526020016102da565b50505050905090810190601f16801561031f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561033957600080fd5b506103666004803603604081101561035057600080fd5b506001600160a01b038135169060200135610b2b565b604080519115158252519081900360200190f35b34801561038657600080fd5b5061038f610b49565b60408051918252519081900360200190f35b3480156103ad57600080fd5b506103b6610b4f565b604080516001600160a01b039092168252519081900360200190f35b3480156103de57600080fd5b5061038f610b73565b3480156103f357600080fd5b506104116004803603602081101561040a57600080fd5b5035610b79565b005b34801561041f57600080fd5b506104116004803603602081101561043657600080fd5b50356001600160a01b0316610c19565b34801561045257600080fd5b506103666004803603606081101561046957600080fd5b506001600160a01b03813581169160208101359091169060400135610c93565b34801561049557600080fd5b5061038f600480360360208110156104ac57600080fd5b5035610d1a565b3480156104bf57600080fd5b50610411600480360360208110156104d657600080fd5b5035610d7c565b3480156104e957600080fd5b506104f2610dfb565b6040805160ff9092168252519081900360200190f35b34801561051457600080fd5b506104116004803603602081101561052b57600080fd5b50356001600160a01b0316610e04565b34801561054757600080fd5b506103666004803603604081101561055e57600080fd5b506001600160a01b038135169060200135610fc5565b34801561058057600080fd5b506104116004803603602081101561059757600080fd5b5035611013565b3480156105aa57600080fd5b506103b66110ed565b3480156105bf57600080fd5b50610411600480360360208110156105d657600080fd5b50356001600160a01b03166110fc565b3480156105f257600080fd5b5061038f6004803603604081101561060957600080fd5b50803590602001351515611284565b34801561062457600080fd5b506104116004803603602081101561063b57600080fd5b5035611316565b34801561064e57600080fd5b506103b66113c3565b34801561066357600080fd5b506103666113e7565b34801561067857600080fd5b506104116113f7565b34801561068d57600080fd5b50610411600480360360208110156106a457600080fd5b50356001600160a01b0316611465565b3480156106c057600080fd5b50610366600480360360208110156106d757600080fd5b50356001600160a01b0316611647565b3480156106f357600080fd5b506104116004803603602081101561070a57600080fd5b5035611665565b34801561071d57600080fd5b5061038f6004803603602081101561073457600080fd5b50356001600160a01b0316611719565b34801561075057600080fd5b5061041161177b565b34801561076557600080fd5b506104116004803603602081101561077c57600080fd5b50356001600160a01b031661180b565b34801561079857600080fd5b50610411600480360360208110156107af57600080fd5b5035611998565b3480156107c257600080fd5b50610366600480360360208110156107d957600080fd5b50356001600160a01b0316611a01565b3480156107f557600080fd5b506103b6611a1f565b34801561080a57600080fd5b506102b8611a2e565b34801561081f57600080fd5b506104116004803603602081101561083657600080fd5b5035611a8f565b34801561084957600080fd5b506103666004803603604081101561086057600080fd5b506001600160a01b038135169060200135611aec565b34801561088257600080fd5b506104116004803603602081101561089957600080fd5b5035611b54565b3480156108ac57600080fd5b50610411611bf2565b3480156108c157600080fd5b50610366600480360360408110156108d857600080fd5b506001600160a01b038135169060200135611ce0565b3480156108fa57600080fd5b506104116004803603604081101561091157600080fd5b506001600160a01b0381351690602001351515611cf4565b34801561093557600080fd5b5061038f611d77565b34801561094a57600080fd5b506103b6611d7d565b34801561095f57600080fd5b506104116004803603602081101561097657600080fd5b50351515611d8c565b34801561098b57600080fd5b50610411611e02565b3480156109a057600080fd5b50610411600480360360208110156109b757600080fd5b5035611e6f565b3480156109ca57600080fd5b50610411600480360360208110156109e157600080fd5b5035611f23565b3480156109f457600080fd5b5061038f60048036036040811015610a0b57600080fd5b506001600160a01b0381358116916020013516611fc1565b348015610a2f57600080fd5b5061041160048036036020811015610a4657600080fd5b50356001600160a01b0316611fec565b348015610a6257600080fd5b506104116120d2565b348015610a7757600080fd5b5061038f612134565b348015610a8c57600080fd5b50610366612138565b600e8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610b215780601f10610af657610100808354040283529160200191610b21565b820191906000526020600020905b815481529060010190602001808311610b0457829003601f168201915b5050505050905090565b6000610b3f610b38612191565b8484612195565b5060015b92915050565b600d5490565b7f000000000000000000000000000000000000000000000000000000000000000081565b600b5490565b610b81612191565b6000546001600160a01b03908116911614610bd1576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b633b9aca00811015610c145760405162461bcd60e51b815260040180806020018281038252602c815260200180613660602c913960400191505060405180910390fd5b601a55565b610c21612191565b6000546001600160a01b03908116911614610c71576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b601980546001600160a01b0319166001600160a01b0392909216919091179055565b6000610ca0848484612281565b610d1084610cac612191565b610d0b856040518060600160405280602881526020016136ad602891396001600160a01b038a16600090815260056020526040812090610cea612191565b6001600160a01b03168152602081019190915260400160002054919061272c565b612195565b5060019392505050565b6000600c54821115610d5d5760405162461bcd60e51b815260040180806020018281038252602a815260200180613597602a913960400191505060405180910390fd5b6000610d676127c3565b9050610d738382612148565b9150505b919050565b610d84612191565b6000546001600160a01b03908116911614610dd4576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b610de630610de0611a1f565b83612195565b610df830610df2611a1f565b83612281565b50565b60105460ff1690565b610e0c612191565b6000546001600160a01b03908116911614610e5c576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526007602052604090205460ff16610ec9576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b60005b600854811015610fc157816001600160a01b031660088281548110610eed57fe5b6000918252602090912001546001600160a01b03161415610fb957600880546000198101908110610f1a57fe5b600091825260209091200154600880546001600160a01b039092169183908110610f4057fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600482526040808220829055600790925220805460ff191690556008805480610f9257fe5b600082815260209020810160001990810180546001600160a01b0319169055019055610fc1565b600101610ecc565b5050565b6000610b3f610fd2612191565b84610d0b8560056000610fe3612191565b6001600160a01b03908116825260208083019390935260409182016000908120918c1681529252902054906127e6565b600061101d612191565b6001600160a01b03811660009081526007602052604090205490915060ff16156110785760405162461bcd60e51b815260040180806020018281038252602c8152602001806137ee602c913960400191505060405180910390fd5b600061108383612840565b505050506001600160a01b0384166000908152600360205260409020549192506110af91905082612887565b6001600160a01b038316600090815260036020526040902055600c546110d59082612887565b600c55600d546110e590846127e6565b600d55505050565b6019546001600160a01b031681565b611104612191565b6000546001600160a01b03908116911614611154576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03821614156111b05760405162461bcd60e51b815260040180806020018281038252602481526020018061373e6024913960400191505060405180910390fd5b6001600160a01b03811660009081526009602052604090205460ff161561121e576040805162461bcd60e51b815260206004820152601e60248201527f4163636f756e7420697320616c726561647920626c61636b6c69737465640000604482015290519081900360640190fd5b6001600160a01b03166000818152600960205260408120805460ff19166001908117909155600a805491820181559091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319169091179055565b6000600b548311156112dd576040805162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015290519081900360640190fd5b816112fc5760006112ed84612840565b50939550610b43945050505050565b600061130784612840565b50929550610b43945050505050565b61131e612191565b6000546001600160a01b0390811691161461136e576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b600061137930611719565b9050818110156113ba5760405162461bcd60e51b815260040180806020018281038252602e815260200180613569602e913960400191505060405180910390fd5b610fc1826128c9565b7f000000000000000000000000000000000000000000000000000000000000000081565b601954600160a81b900460ff1681565b6113ff612191565b6000546001600160a01b0390811691161461144f576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b600061145a30611719565b9050610df8816128c9565b61146d612191565b6000546001600160a01b039081169116146114bd576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03821614156115195760405162461bcd60e51b81526004018080602001828103825260228152602001806137cc6022913960400191505060405180910390fd5b6001600160a01b03811660009081526007602052604090205460ff1615611587576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b6001600160a01b038116600090815260036020526040902054156115e1576001600160a01b0381166000908152600360205260409020546115c790610d1a565b6001600160a01b0382166000908152600460205260409020555b6001600160a01b03166000818152600760205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b6001600160a01b031660009081526006602052604090205460ff1690565b61166d612191565b6000546001600160a01b039081169116146116bd576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b6101ea811115611714576040805162461bcd60e51b815260206004820152601b60248201527f7461784665652073686f756c6420626520696e2030202d203439300000000000604482015290519081900360640190fd5b601155565b6001600160a01b03811660009081526007602052604081205460ff161561175957506001600160a01b038116600090815260046020526040902054610d77565b6001600160a01b038216600090815260036020526040902054610b4390610d1a565b611783612191565b6000546001600160a01b039081169116146117d3576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116906000805160206136f5833981519152908390a3600080546001600160a01b0319169055565b611813612191565b6000546001600160a01b03908116911614611863576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526009602052604090205460ff166118d0576040805162461bcd60e51b815260206004820152601a60248201527f4163636f756e74206973206e6f7420626c61636b6c6973746564000000000000604482015290519081900360640190fd5b60005b600a54811015610fc157816001600160a01b0316600a82815481106118f457fe5b6000918252602090912001546001600160a01b0316141561199057600a8054600019810190811061192157fe5b600091825260209091200154600a80546001600160a01b03909216918390811061194757fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600990915260409020805460ff19169055600a805480610f9257fe5b6001016118d3565b6119a0612191565b6000546001600160a01b039081169116146119f0576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b6119f981611316565b610df86120d2565b6001600160a01b031660009081526007602052604090205460ff1690565b6000546001600160a01b031690565b600f8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610b215780601f10610af657610100808354040283529160200191610b21565b611a97612191565b6000546001600160a01b03908116911614611ae7576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b601455565b6000610b3f611af9612191565b84610d0b8560405180606001604052806025815260200161383d6025913960056000611b23612191565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919061272c565b611b5c612191565b6000546001600160a01b03908116911614611bac576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b6101ea811115611bed5760405162461bcd60e51b81526004018080602001828103825260218152602001806137876021913960400191505060405180910390fd5b601355565b6001546001600160a01b03163314611c3b5760405162461bcd60e51b815260040180806020018281038252602381526020018061381a6023913960400191505060405180910390fd5b6002544211611c91576040805162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c2037206461797300604482015290519081900360640190fd5b600154600080546040516001600160a01b0393841693909116916000805160206136f583398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000610b3f611ced612191565b8484612281565b611cfc612191565b6000546001600160a01b03908116911614611d4c576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b60025490565b6018546001600160a01b031681565b611d94612191565b6000546001600160a01b03908116911614611de4576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b60198054911515600160a81b0260ff60a81b19909216919091179055565b611e0a612191565b6000546001600160a01b03908116911614611e5a576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b6019805460ff60b01b1916600160b01b179055565b611e77612191565b6000546001600160a01b03908116911614611ec7576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b6101ea811115611f1e576040805162461bcd60e51b815260206004820152601b60248201527f6e66744665652073686f756c6420626520696e2030202d203439300000000000604482015290519081900360640190fd5b601255565b611f2b612191565b6000546001600160a01b03908116911614611f7b576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b60008054600180546001600160a01b03199081166001600160a01b0384161790915516815542820160025560405181906000805160206136f5833981519152908290a350565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b611ff4612191565b6000546001600160a01b03908116911614612044576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b6001600160a01b0381166120895760405162461bcd60e51b81526004018080602001828103825260268152602001806135c16026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216916000805160206136f583398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6120da612191565b6000546001600160a01b0390811691161461212a576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b47610df881612c29565b4790565b601954600160b01b900460ff1681565b600061218a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612ce2565b9392505050565b3390565b6001600160a01b0383166121da5760405162461bcd60e51b81526004018080602001828103825260248152602001806137a86024913960400191505060405180910390fd5b6001600160a01b03821661221f5760405162461bcd60e51b81526004018080602001828103825260228152602001806135e76022913960400191505060405180910390fd5b6001600160a01b03808416600081815260056020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166122c65760405162461bcd60e51b81526004018080602001828103825260258152602001806137626025913960400191505060405180910390fd5b6001600160a01b03821661230b5760405162461bcd60e51b81526004018080602001828103825260238152602001806135466023913960400191505060405180910390fd5b6000811161234a5760405162461bcd60e51b81526004018080602001828103825260298152602001806137156029913960400191505060405180910390fd5b6001600160a01b03831660009081526009602052604090205460ff16156123b2576040805162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b604482015290519081900360640190fd5b6001600160a01b03821660009081526009602052604090205460ff161561241a576040805162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b604482015290519081900360640190fd5b3260009081526009602052604090205460ff1615612479576040805162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b604482015290519081900360640190fd5b612481611a1f565b6001600160a01b0316836001600160a01b0316141580156124bb57506124a5611a1f565b6001600160a01b0316826001600160a01b031614155b156126cf57601a548111156125015760405162461bcd60e51b81526004018080602001828103825260288152602001806136386028913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316141561262b57601954600160b01b900460ff16612599576040805162461bcd60e51b815260206004820152601760248201527f5761697420666f72206f70656e65642074726164696e67000000000000000000604482015290519081900360640190fd5b601a546125a583611719565b11156125e25760405162461bcd60e51b815260040180806020018281038252602f815260200180613609602f913960400191505060405180910390fd5b601a546125ee32611719565b111561262b5760405162461bcd60e51b815260040180806020018281038252602f815260200180613609602f913960400191505060405180910390fd5b601954600160a01b900460ff1615801561264e5750601954600160a81b900460ff165b801561268c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614155b156126cf576126cf817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031614612d47565b6001600160a01b03831660009081526006602052604090205460019060ff168061271157506001600160a01b03831660009081526006602052604090205460ff165b1561271a575060005b61272684848484612dbf565b50505050565b600081848411156127bb5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612780578181015183820152602001612768565b50505050905090810190601f1680156127ad5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008060006127d0612f2d565b90925090506127df8282612148565b9250505090565b60008282018381101561218a576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008060008060008060008060006128578a613090565b925092509250600080600061286d8d8686613102565b919f909e50909c50959a5093985091965092945050505050565b600061218a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061272c565b604080516002808252606080830184529260208301908036833701905050905030816000815181106128f757fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561297057600080fd5b505afa158015612984573d6000803e3d6000fd5b505050506040513d602081101561299a57600080fd5b50518151829060019081106129ab57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506129f6307f000000000000000000000000000000000000000000000000000000000000000084612195565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663791ac9478360008430426040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015612a9b578181015183820152602001612a83565b505050509050019650505050505050600060405180830381600087803b158015612ac457600080fd5b505af1925050508015612ad5575060015b612ba8573d808015612b03576040519150601f19603f3d011682016040523d82523d6000602084013e612b08565b606091505b507fc062bf45765a468f8a8d2ac697498f1f0211f1c5ac8a9c51fad14b916351c565816040518080602001828103825283818151815260200191508051906020019080838360005b83811015612b68578181015183820152602001612b50565b50505050905090810190601f168015612b955780820380516001836020036101000a031916815260200191505b509250505060405180910390a150610fc1565b7f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040518083815260200180602001828103825283818151815260200191508051906020019060200280838360005b83811015612c11578181015183820152602001612bf9565b50505050905001935050505060405180910390a15050565b6000612c426012546013546127e690919063ffffffff16565b90506000612c6582612c5f6013548661315f90919063ffffffff16565b90612148565b6019546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015612ca0573d6000803e3d6000fd5b506018546001600160a01b03166108fc612cba8584612887565b6040518115909202916000818181858888f19350505050158015612726573d6000803e3d6000fd5b60008183612d315760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612780578181015183820152602001612768565b506000838581612d3d57fe5b0495945050505050565b6019805460ff60a01b1916600160a01b1790556000612d6530611719565b90506000612d836064612c5f6014548761315f90919063ffffffff16565b9050828015612d9157508082115b15612d9a578091505b612da3826128c9565b612dac47612c29565b50506019805460ff60a01b191690555050565b80612dcc57612dcc6131b8565b6001600160a01b03841660009081526007602052604090205460ff168015612e0d57506001600160a01b03831660009081526007602052604090205460ff16155b15612e2257612e1d848484613201565b612f20565b6001600160a01b03841660009081526007602052604090205460ff16158015612e6357506001600160a01b03831660009081526007602052604090205460ff165b15612e7357612e1d848484613325565b6001600160a01b03841660009081526007602052604090205460ff16158015612eb557506001600160a01b03831660009081526007602052604090205460ff16155b15612ec557612e1d8484846133ce565b6001600160a01b03841660009081526007602052604090205460ff168015612f0557506001600160a01b03831660009081526007602052604090205460ff165b15612f1557612e1d848484613412565b612f208484846133ce565b8061272657612726613485565b600c54600b546000918291825b60085481101561305e57826003600060088481548110612f5657fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612fbb5750816004600060088481548110612f9457fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612fd257600c54600b549450945050505061308c565b6130126003600060088481548110612fe657fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612887565b9250613054600460006008848154811061302857fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612887565b9150600101612f3a565b50600b54600c5461306e91612148565b82101561308657600c54600b5493509350505061308c565b90925090505b9091565b6000806000806130b16103e8612c5f6011548861315f90919063ffffffff16565b905060006130dc6103e8612c5f6130d56012546013546127e690919063ffffffff16565b899061315f565b905060006130f4826130ee8986612887565b90612887565b979296509094509092505050565b6000806000806131106127c3565b9050600061311e888361315f565b9050600061312c888461315f565b9050600061313a888561315f565b9050600061314c826130ee8686612887565b939b939a50919850919650505050505050565b60008261316e57506000610b43565b8282028284828161317b57fe5b041461218a5760405162461bcd60e51b815260040180806020018281038252602181526020018061368c6021913960400191505060405180910390fd5b6011541580156131c85750601254155b80156131d45750601354155b156131de576131ff565b60118054601555601280546016556013805460175560009283905590829055555b565b60008060008060008061321387612840565b6001600160a01b038f16600090815260046020526040902054959b509399509197509550935091506132459088612887565b6001600160a01b038a166000908152600460209081526040808320939093556003905220546132749087612887565b6001600160a01b03808b1660009081526003602052604080822093909355908a16815220546132a390866127e6565b6001600160a01b0389166000908152600360205260409020556132c581613498565b6132cf8483613521565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b60008060008060008061333787612840565b6001600160a01b038f16600090815260036020526040902054959b509399509197509550935091506133699087612887565b6001600160a01b03808b16600090815260036020908152604080832094909455918b1681526004909152205461339f90846127e6565b6001600160a01b0389166000908152600460209081526040808320939093556003905220546132a390866127e6565b6000806000806000806133e087612840565b6001600160a01b038f16600090815260036020526040902054959b509399509197509550935091506132749087612887565b60008060008060008061342487612840565b6001600160a01b038f16600090815260046020526040902054959b509399509197509550935091506134569088612887565b6001600160a01b038a166000908152600460209081526040808320939093556003905220546133699087612887565b6015546011556017546013819055601255565b60006134a26127c3565b905060006134b0838361315f565b306000908152600360205260409020549091506134cd90826127e6565b3060009081526003602090815260408083209390935560079052205460ff161561351c573060009081526004602052604090205461350b90846127e6565b306000908152600460205260409020555b505050565b600c5461352e9083612887565b600c55600d5461353e90826127e6565b600d55505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373636f6e74726163742062616c616e63652073686f756c642062652067726561746572207468656e20616d6f756e74416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373416c726561647920626f75676874206d61785478416d6f756e742c20776169742074696c6c20636865636b206f66665472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e6d61785478416d6f756e742073686f756c642062652067726561746572207468616e20746f74616c20316539536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f57652063616e206e6f7420626c61636b6c69737420556e697377617020726f757465722e45524332303a207472616e736665722066726f6d20746865207a65726f20616464726573736d61726b6574696e674665652073686f756c6420626520696e2030202d2034393045524332303a20617070726f76652066726f6d20746865207a65726f206164647265737357652063616e206e6f74206578636c75646520556e697377617020726f757465722e4578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6f636b45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122038753535f093f12023bfe1465b803bdcb2d2579704508ce306c0a5b4be35f15564736f6c634300060c0033
Deployed Bytecode
0x6080604052600436106102975760003560e01c806370a082311161015a578063af9549e0116100c1578063dd4670641161007a578063dd467064146109be578063dd62ed3e146109e8578063f2fde38b14610a23578063f429389014610a56578063f815a84214610a6b578063ffb54a9914610a805761029e565b8063af9549e0146108ee578063b6c5232414610929578063bbbfab1f1461093e578063c49b9a8014610953578063c9567bf91461097f578063c994c4b9146109945761029e565b806395d89b411161011357806395d89b41146107fe5780639a02ecd514610813578063a457c2d71461083d578063a52fe9bb14610876578063a69df4b5146108a0578063a9059cbb146108b55761029e565b806370a0823114610711578063715018a6146107445780637ded4d6a1461075957806388e0853e1461078c57806388f82020146107b65780638da5cb5b146107e95761029e565b806339509351116101fe57806349bd5a5e116101b757806349bd5a5e146106425780634a74bb021461065757806351bc3c851461066c57806352390c02146106815780635342acb4146106b45780635880b873146106e75761029e565b8063395093511461053b5780633bd5d173146105745780634144d9e41461059e5780634303443d146105b35780634549b039146105e6578063474fe03f146106185761029e565b80631ff53b60116102505780631ff53b601461041357806323b872dd146104465780632d8381191461048957806330599fc5146104b3578063313ce567146104dd5780633685d419146105085761029e565b806306fdde03146102a3578063095ea7b31461032d57806313114a9d1461037a5780631694505e146103a157806318160ddd146103d25780631bbae6e0146103e75761029e565b3661029e57005b600080fd5b3480156102af57600080fd5b506102b8610a95565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102f25781810151838201526020016102da565b50505050905090810190601f16801561031f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561033957600080fd5b506103666004803603604081101561035057600080fd5b506001600160a01b038135169060200135610b2b565b604080519115158252519081900360200190f35b34801561038657600080fd5b5061038f610b49565b60408051918252519081900360200190f35b3480156103ad57600080fd5b506103b6610b4f565b604080516001600160a01b039092168252519081900360200190f35b3480156103de57600080fd5b5061038f610b73565b3480156103f357600080fd5b506104116004803603602081101561040a57600080fd5b5035610b79565b005b34801561041f57600080fd5b506104116004803603602081101561043657600080fd5b50356001600160a01b0316610c19565b34801561045257600080fd5b506103666004803603606081101561046957600080fd5b506001600160a01b03813581169160208101359091169060400135610c93565b34801561049557600080fd5b5061038f600480360360208110156104ac57600080fd5b5035610d1a565b3480156104bf57600080fd5b50610411600480360360208110156104d657600080fd5b5035610d7c565b3480156104e957600080fd5b506104f2610dfb565b6040805160ff9092168252519081900360200190f35b34801561051457600080fd5b506104116004803603602081101561052b57600080fd5b50356001600160a01b0316610e04565b34801561054757600080fd5b506103666004803603604081101561055e57600080fd5b506001600160a01b038135169060200135610fc5565b34801561058057600080fd5b506104116004803603602081101561059757600080fd5b5035611013565b3480156105aa57600080fd5b506103b66110ed565b3480156105bf57600080fd5b50610411600480360360208110156105d657600080fd5b50356001600160a01b03166110fc565b3480156105f257600080fd5b5061038f6004803603604081101561060957600080fd5b50803590602001351515611284565b34801561062457600080fd5b506104116004803603602081101561063b57600080fd5b5035611316565b34801561064e57600080fd5b506103b66113c3565b34801561066357600080fd5b506103666113e7565b34801561067857600080fd5b506104116113f7565b34801561068d57600080fd5b50610411600480360360208110156106a457600080fd5b50356001600160a01b0316611465565b3480156106c057600080fd5b50610366600480360360208110156106d757600080fd5b50356001600160a01b0316611647565b3480156106f357600080fd5b506104116004803603602081101561070a57600080fd5b5035611665565b34801561071d57600080fd5b5061038f6004803603602081101561073457600080fd5b50356001600160a01b0316611719565b34801561075057600080fd5b5061041161177b565b34801561076557600080fd5b506104116004803603602081101561077c57600080fd5b50356001600160a01b031661180b565b34801561079857600080fd5b50610411600480360360208110156107af57600080fd5b5035611998565b3480156107c257600080fd5b50610366600480360360208110156107d957600080fd5b50356001600160a01b0316611a01565b3480156107f557600080fd5b506103b6611a1f565b34801561080a57600080fd5b506102b8611a2e565b34801561081f57600080fd5b506104116004803603602081101561083657600080fd5b5035611a8f565b34801561084957600080fd5b506103666004803603604081101561086057600080fd5b506001600160a01b038135169060200135611aec565b34801561088257600080fd5b506104116004803603602081101561089957600080fd5b5035611b54565b3480156108ac57600080fd5b50610411611bf2565b3480156108c157600080fd5b50610366600480360360408110156108d857600080fd5b506001600160a01b038135169060200135611ce0565b3480156108fa57600080fd5b506104116004803603604081101561091157600080fd5b506001600160a01b0381351690602001351515611cf4565b34801561093557600080fd5b5061038f611d77565b34801561094a57600080fd5b506103b6611d7d565b34801561095f57600080fd5b506104116004803603602081101561097657600080fd5b50351515611d8c565b34801561098b57600080fd5b50610411611e02565b3480156109a057600080fd5b50610411600480360360208110156109b757600080fd5b5035611e6f565b3480156109ca57600080fd5b50610411600480360360208110156109e157600080fd5b5035611f23565b3480156109f457600080fd5b5061038f60048036036040811015610a0b57600080fd5b506001600160a01b0381358116916020013516611fc1565b348015610a2f57600080fd5b5061041160048036036020811015610a4657600080fd5b50356001600160a01b0316611fec565b348015610a6257600080fd5b506104116120d2565b348015610a7757600080fd5b5061038f612134565b348015610a8c57600080fd5b50610366612138565b600e8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610b215780601f10610af657610100808354040283529160200191610b21565b820191906000526020600020905b815481529060010190602001808311610b0457829003601f168201915b5050505050905090565b6000610b3f610b38612191565b8484612195565b5060015b92915050565b600d5490565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b600b5490565b610b81612191565b6000546001600160a01b03908116911614610bd1576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b633b9aca00811015610c145760405162461bcd60e51b815260040180806020018281038252602c815260200180613660602c913960400191505060405180910390fd5b601a55565b610c21612191565b6000546001600160a01b03908116911614610c71576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b601980546001600160a01b0319166001600160a01b0392909216919091179055565b6000610ca0848484612281565b610d1084610cac612191565b610d0b856040518060600160405280602881526020016136ad602891396001600160a01b038a16600090815260056020526040812090610cea612191565b6001600160a01b03168152602081019190915260400160002054919061272c565b612195565b5060019392505050565b6000600c54821115610d5d5760405162461bcd60e51b815260040180806020018281038252602a815260200180613597602a913960400191505060405180910390fd5b6000610d676127c3565b9050610d738382612148565b9150505b919050565b610d84612191565b6000546001600160a01b03908116911614610dd4576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b610de630610de0611a1f565b83612195565b610df830610df2611a1f565b83612281565b50565b60105460ff1690565b610e0c612191565b6000546001600160a01b03908116911614610e5c576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526007602052604090205460ff16610ec9576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b60005b600854811015610fc157816001600160a01b031660088281548110610eed57fe5b6000918252602090912001546001600160a01b03161415610fb957600880546000198101908110610f1a57fe5b600091825260209091200154600880546001600160a01b039092169183908110610f4057fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600482526040808220829055600790925220805460ff191690556008805480610f9257fe5b600082815260209020810160001990810180546001600160a01b0319169055019055610fc1565b600101610ecc565b5050565b6000610b3f610fd2612191565b84610d0b8560056000610fe3612191565b6001600160a01b03908116825260208083019390935260409182016000908120918c1681529252902054906127e6565b600061101d612191565b6001600160a01b03811660009081526007602052604090205490915060ff16156110785760405162461bcd60e51b815260040180806020018281038252602c8152602001806137ee602c913960400191505060405180910390fd5b600061108383612840565b505050506001600160a01b0384166000908152600360205260409020549192506110af91905082612887565b6001600160a01b038316600090815260036020526040902055600c546110d59082612887565b600c55600d546110e590846127e6565b600d55505050565b6019546001600160a01b031681565b611104612191565b6000546001600160a01b03908116911614611154576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03821614156111b05760405162461bcd60e51b815260040180806020018281038252602481526020018061373e6024913960400191505060405180910390fd5b6001600160a01b03811660009081526009602052604090205460ff161561121e576040805162461bcd60e51b815260206004820152601e60248201527f4163636f756e7420697320616c726561647920626c61636b6c69737465640000604482015290519081900360640190fd5b6001600160a01b03166000818152600960205260408120805460ff19166001908117909155600a805491820181559091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319169091179055565b6000600b548311156112dd576040805162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015290519081900360640190fd5b816112fc5760006112ed84612840565b50939550610b43945050505050565b600061130784612840565b50929550610b43945050505050565b61131e612191565b6000546001600160a01b0390811691161461136e576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b600061137930611719565b9050818110156113ba5760405162461bcd60e51b815260040180806020018281038252602e815260200180613569602e913960400191505060405180910390fd5b610fc1826128c9565b7f000000000000000000000000ad72be412ee99779a9a671e7a1516a67a277df8f81565b601954600160a81b900460ff1681565b6113ff612191565b6000546001600160a01b0390811691161461144f576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b600061145a30611719565b9050610df8816128c9565b61146d612191565b6000546001600160a01b039081169116146114bd576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03821614156115195760405162461bcd60e51b81526004018080602001828103825260228152602001806137cc6022913960400191505060405180910390fd5b6001600160a01b03811660009081526007602052604090205460ff1615611587576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b6001600160a01b038116600090815260036020526040902054156115e1576001600160a01b0381166000908152600360205260409020546115c790610d1a565b6001600160a01b0382166000908152600460205260409020555b6001600160a01b03166000818152600760205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b6001600160a01b031660009081526006602052604090205460ff1690565b61166d612191565b6000546001600160a01b039081169116146116bd576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b6101ea811115611714576040805162461bcd60e51b815260206004820152601b60248201527f7461784665652073686f756c6420626520696e2030202d203439300000000000604482015290519081900360640190fd5b601155565b6001600160a01b03811660009081526007602052604081205460ff161561175957506001600160a01b038116600090815260046020526040902054610d77565b6001600160a01b038216600090815260036020526040902054610b4390610d1a565b611783612191565b6000546001600160a01b039081169116146117d3576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116906000805160206136f5833981519152908390a3600080546001600160a01b0319169055565b611813612191565b6000546001600160a01b03908116911614611863576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526009602052604090205460ff166118d0576040805162461bcd60e51b815260206004820152601a60248201527f4163636f756e74206973206e6f7420626c61636b6c6973746564000000000000604482015290519081900360640190fd5b60005b600a54811015610fc157816001600160a01b0316600a82815481106118f457fe5b6000918252602090912001546001600160a01b0316141561199057600a8054600019810190811061192157fe5b600091825260209091200154600a80546001600160a01b03909216918390811061194757fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600990915260409020805460ff19169055600a805480610f9257fe5b6001016118d3565b6119a0612191565b6000546001600160a01b039081169116146119f0576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b6119f981611316565b610df86120d2565b6001600160a01b031660009081526007602052604090205460ff1690565b6000546001600160a01b031690565b600f8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610b215780601f10610af657610100808354040283529160200191610b21565b611a97612191565b6000546001600160a01b03908116911614611ae7576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b601455565b6000610b3f611af9612191565b84610d0b8560405180606001604052806025815260200161383d6025913960056000611b23612191565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919061272c565b611b5c612191565b6000546001600160a01b03908116911614611bac576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b6101ea811115611bed5760405162461bcd60e51b81526004018080602001828103825260218152602001806137876021913960400191505060405180910390fd5b601355565b6001546001600160a01b03163314611c3b5760405162461bcd60e51b815260040180806020018281038252602381526020018061381a6023913960400191505060405180910390fd5b6002544211611c91576040805162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c2037206461797300604482015290519081900360640190fd5b600154600080546040516001600160a01b0393841693909116916000805160206136f583398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000610b3f611ced612191565b8484612281565b611cfc612191565b6000546001600160a01b03908116911614611d4c576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b60025490565b6018546001600160a01b031681565b611d94612191565b6000546001600160a01b03908116911614611de4576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b60198054911515600160a81b0260ff60a81b19909216919091179055565b611e0a612191565b6000546001600160a01b03908116911614611e5a576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b6019805460ff60b01b1916600160b01b179055565b611e77612191565b6000546001600160a01b03908116911614611ec7576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b6101ea811115611f1e576040805162461bcd60e51b815260206004820152601b60248201527f6e66744665652073686f756c6420626520696e2030202d203439300000000000604482015290519081900360640190fd5b601255565b611f2b612191565b6000546001600160a01b03908116911614611f7b576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b60008054600180546001600160a01b03199081166001600160a01b0384161790915516815542820160025560405181906000805160206136f5833981519152908290a350565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b611ff4612191565b6000546001600160a01b03908116911614612044576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b6001600160a01b0381166120895760405162461bcd60e51b81526004018080602001828103825260268152602001806135c16026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216916000805160206136f583398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6120da612191565b6000546001600160a01b0390811691161461212a576040805162461bcd60e51b815260206004820181905260248201526000805160206136d5833981519152604482015290519081900360640190fd5b47610df881612c29565b4790565b601954600160b01b900460ff1681565b600061218a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612ce2565b9392505050565b3390565b6001600160a01b0383166121da5760405162461bcd60e51b81526004018080602001828103825260248152602001806137a86024913960400191505060405180910390fd5b6001600160a01b03821661221f5760405162461bcd60e51b81526004018080602001828103825260228152602001806135e76022913960400191505060405180910390fd5b6001600160a01b03808416600081815260056020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166122c65760405162461bcd60e51b81526004018080602001828103825260258152602001806137626025913960400191505060405180910390fd5b6001600160a01b03821661230b5760405162461bcd60e51b81526004018080602001828103825260238152602001806135466023913960400191505060405180910390fd5b6000811161234a5760405162461bcd60e51b81526004018080602001828103825260298152602001806137156029913960400191505060405180910390fd5b6001600160a01b03831660009081526009602052604090205460ff16156123b2576040805162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b604482015290519081900360640190fd5b6001600160a01b03821660009081526009602052604090205460ff161561241a576040805162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b604482015290519081900360640190fd5b3260009081526009602052604090205460ff1615612479576040805162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b604482015290519081900360640190fd5b612481611a1f565b6001600160a01b0316836001600160a01b0316141580156124bb57506124a5611a1f565b6001600160a01b0316826001600160a01b031614155b156126cf57601a548111156125015760405162461bcd60e51b81526004018080602001828103825260288152602001806136386028913960400191505060405180910390fd5b7f000000000000000000000000ad72be412ee99779a9a671e7a1516a67a277df8f6001600160a01b0316836001600160a01b0316141561262b57601954600160b01b900460ff16612599576040805162461bcd60e51b815260206004820152601760248201527f5761697420666f72206f70656e65642074726164696e67000000000000000000604482015290519081900360640190fd5b601a546125a583611719565b11156125e25760405162461bcd60e51b815260040180806020018281038252602f815260200180613609602f913960400191505060405180910390fd5b601a546125ee32611719565b111561262b5760405162461bcd60e51b815260040180806020018281038252602f815260200180613609602f913960400191505060405180910390fd5b601954600160a01b900460ff1615801561264e5750601954600160a81b900460ff165b801561268c57507f000000000000000000000000ad72be412ee99779a9a671e7a1516a67a277df8f6001600160a01b0316836001600160a01b031614155b156126cf576126cf817f000000000000000000000000ad72be412ee99779a9a671e7a1516a67a277df8f6001600160a01b0316846001600160a01b031614612d47565b6001600160a01b03831660009081526006602052604090205460019060ff168061271157506001600160a01b03831660009081526006602052604090205460ff165b1561271a575060005b61272684848484612dbf565b50505050565b600081848411156127bb5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612780578181015183820152602001612768565b50505050905090810190601f1680156127ad5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008060006127d0612f2d565b90925090506127df8282612148565b9250505090565b60008282018381101561218a576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008060008060008060008060006128578a613090565b925092509250600080600061286d8d8686613102565b919f909e50909c50959a5093985091965092945050505050565b600061218a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061272c565b604080516002808252606080830184529260208301908036833701905050905030816000815181106128f757fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561297057600080fd5b505afa158015612984573d6000803e3d6000fd5b505050506040513d602081101561299a57600080fd5b50518151829060019081106129ab57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506129f6307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612195565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663791ac9478360008430426040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015612a9b578181015183820152602001612a83565b505050509050019650505050505050600060405180830381600087803b158015612ac457600080fd5b505af1925050508015612ad5575060015b612ba8573d808015612b03576040519150601f19603f3d011682016040523d82523d6000602084013e612b08565b606091505b507fc062bf45765a468f8a8d2ac697498f1f0211f1c5ac8a9c51fad14b916351c565816040518080602001828103825283818151815260200191508051906020019080838360005b83811015612b68578181015183820152602001612b50565b50505050905090810190601f168015612b955780820380516001836020036101000a031916815260200191505b509250505060405180910390a150610fc1565b7f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040518083815260200180602001828103825283818151815260200191508051906020019060200280838360005b83811015612c11578181015183820152602001612bf9565b50505050905001935050505060405180910390a15050565b6000612c426012546013546127e690919063ffffffff16565b90506000612c6582612c5f6013548661315f90919063ffffffff16565b90612148565b6019546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015612ca0573d6000803e3d6000fd5b506018546001600160a01b03166108fc612cba8584612887565b6040518115909202916000818181858888f19350505050158015612726573d6000803e3d6000fd5b60008183612d315760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612780578181015183820152602001612768565b506000838581612d3d57fe5b0495945050505050565b6019805460ff60a01b1916600160a01b1790556000612d6530611719565b90506000612d836064612c5f6014548761315f90919063ffffffff16565b9050828015612d9157508082115b15612d9a578091505b612da3826128c9565b612dac47612c29565b50506019805460ff60a01b191690555050565b80612dcc57612dcc6131b8565b6001600160a01b03841660009081526007602052604090205460ff168015612e0d57506001600160a01b03831660009081526007602052604090205460ff16155b15612e2257612e1d848484613201565b612f20565b6001600160a01b03841660009081526007602052604090205460ff16158015612e6357506001600160a01b03831660009081526007602052604090205460ff165b15612e7357612e1d848484613325565b6001600160a01b03841660009081526007602052604090205460ff16158015612eb557506001600160a01b03831660009081526007602052604090205460ff16155b15612ec557612e1d8484846133ce565b6001600160a01b03841660009081526007602052604090205460ff168015612f0557506001600160a01b03831660009081526007602052604090205460ff165b15612f1557612e1d848484613412565b612f208484846133ce565b8061272657612726613485565b600c54600b546000918291825b60085481101561305e57826003600060088481548110612f5657fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612fbb5750816004600060088481548110612f9457fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612fd257600c54600b549450945050505061308c565b6130126003600060088481548110612fe657fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612887565b9250613054600460006008848154811061302857fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612887565b9150600101612f3a565b50600b54600c5461306e91612148565b82101561308657600c54600b5493509350505061308c565b90925090505b9091565b6000806000806130b16103e8612c5f6011548861315f90919063ffffffff16565b905060006130dc6103e8612c5f6130d56012546013546127e690919063ffffffff16565b899061315f565b905060006130f4826130ee8986612887565b90612887565b979296509094509092505050565b6000806000806131106127c3565b9050600061311e888361315f565b9050600061312c888461315f565b9050600061313a888561315f565b9050600061314c826130ee8686612887565b939b939a50919850919650505050505050565b60008261316e57506000610b43565b8282028284828161317b57fe5b041461218a5760405162461bcd60e51b815260040180806020018281038252602181526020018061368c6021913960400191505060405180910390fd5b6011541580156131c85750601254155b80156131d45750601354155b156131de576131ff565b60118054601555601280546016556013805460175560009283905590829055555b565b60008060008060008061321387612840565b6001600160a01b038f16600090815260046020526040902054959b509399509197509550935091506132459088612887565b6001600160a01b038a166000908152600460209081526040808320939093556003905220546132749087612887565b6001600160a01b03808b1660009081526003602052604080822093909355908a16815220546132a390866127e6565b6001600160a01b0389166000908152600360205260409020556132c581613498565b6132cf8483613521565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b60008060008060008061333787612840565b6001600160a01b038f16600090815260036020526040902054959b509399509197509550935091506133699087612887565b6001600160a01b03808b16600090815260036020908152604080832094909455918b1681526004909152205461339f90846127e6565b6001600160a01b0389166000908152600460209081526040808320939093556003905220546132a390866127e6565b6000806000806000806133e087612840565b6001600160a01b038f16600090815260036020526040902054959b509399509197509550935091506132749087612887565b60008060008060008061342487612840565b6001600160a01b038f16600090815260046020526040902054959b509399509197509550935091506134569088612887565b6001600160a01b038a166000908152600460209081526040808320939093556003905220546133699087612887565b6015546011556017546013819055601255565b60006134a26127c3565b905060006134b0838361315f565b306000908152600360205260409020549091506134cd90826127e6565b3060009081526003602090815260408083209390935560079052205460ff161561351c573060009081526004602052604090205461350b90846127e6565b306000908152600460205260409020555b505050565b600c5461352e9083612887565b600c55600d5461353e90826127e6565b600d55505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373636f6e74726163742062616c616e63652073686f756c642062652067726561746572207468656e20616d6f756e74416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373416c726561647920626f75676874206d61785478416d6f756e742c20776169742074696c6c20636865636b206f66665472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e6d61785478416d6f756e742073686f756c642062652067726561746572207468616e20746f74616c20316539536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f57652063616e206e6f7420626c61636b6c69737420556e697377617020726f757465722e45524332303a207472616e736665722066726f6d20746865207a65726f20616464726573736d61726b6574696e674665652073686f756c6420626520696e2030202d2034393045524332303a20617070726f76652066726f6d20746865207a65726f206164647265737357652063616e206e6f74206578636c75646520556e697377617020726f757465722e4578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6f636b45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122038753535f093f12023bfe1465b803bdcb2d2579704508ce306c0a5b4be35f15564736f6c634300060c0033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 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.