More Info
Private Name Tags
ContractCreator
Latest 19 from a total of 19 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Claim Pir | 12041303 | 1379 days ago | IN | 0 ETH | 0.00683212 | ||||
Claim Pir | 11621082 | 1443 days ago | IN | 0 ETH | 0.00325719 | ||||
Claim Pir | 11547921 | 1454 days ago | IN | 0 ETH | 0.00489184 | ||||
Claim Pir | 11535287 | 1456 days ago | IN | 0 ETH | 0.00178916 | ||||
Claim Pir | 11498971 | 1462 days ago | IN | 0 ETH | 0.00167375 | ||||
Claim Pir | 11490545 | 1463 days ago | IN | 0 ETH | 0.00174328 | ||||
Claim Pir | 11477563 | 1465 days ago | IN | 0 ETH | 0.00207405 | ||||
Claim Pir | 11472681 | 1466 days ago | IN | 0 ETH | 0.00527574 | ||||
Add Attack Contr... | 11461190 | 1468 days ago | IN | 0 ETH | 0.0025224 | ||||
Remove Attack Co... | 11461167 | 1468 days ago | IN | 0 ETH | 0.00183069 | ||||
Add Attack Contr... | 11461122 | 1468 days ago | IN | 0 ETH | 0.0038578 | ||||
Claim Pir | 11459796 | 1468 days ago | IN | 0 ETH | 0.00356347 | ||||
Claim Pir | 11458522 | 1468 days ago | IN | 0 ETH | 0.00348657 | ||||
Claim Pir | 11454446 | 1469 days ago | IN | 0 ETH | 0.00169741 | ||||
Claim Pir | 11441697 | 1471 days ago | IN | 0 ETH | 0.0007386 | ||||
Claim Pir | 11418470 | 1474 days ago | IN | 0 ETH | 0.00157116 | ||||
Add White List | 11382144 | 1480 days ago | IN | 0 ETH | 0.0021761 | ||||
Add Attack Contr... | 11382102 | 1480 days ago | IN | 0 ETH | 0.00167593 | ||||
Add White List | 11382085 | 1480 days ago | IN | 0 ETH | 0.00192882 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
PiranhasGame
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-12-03 */ /* Developed by TimeusLab https://timeus.org */ pragma solidity ^0.6.0; abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } 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; 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; } } contract ERC20 is Context, IERC20 { using SafeMath for uint256; using Address for address; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; uint8 private _decimals; /** * @dev Sets the values for {name} and {symbol}, initializes {decimals} with * a default value of 18. * * To select a different value for {decimals}, use {_setupDecimals}. * * All three of these values are immutable: they can only be set once during * construction. */ constructor (string memory name, string memory symbol) public { _name = name; _symbol = symbol; _decimals = 18; } /** * @dev Returns the name of the token. */ function name() public view returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5,05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is * called. * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view returns (uint8) { return _decimals; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}; * * Requirements: * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer(address sender, address recipient, uint256 amount) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements * * - `to` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens. * * This is internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve(address owner, address spender, uint256 amount) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Sets {decimals} to a value other than the default one of 18. * * WARNING: This function should only be called from the constructor. Most * applications that interact with token contracts will not expect * {decimals} to ever change, and may work incorrectly if it does. */ function _setupDecimals(uint8 decimals_) internal { _decimals = decimals_; } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be to transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {} } contract PiranhasToken is ERC20("Piranhas", "$PIR"), Ownable { bool public isTransferable = false; uint256 public minTotalSupply = 10000; // lists of addresses address[] public canTransfer; address[] public WithoutBurn; address[] public UniswapPairs; constructor (uint256 total) public { // mint new _mint(msg.sender, total.mul(10 ** 18)); WithoutBurn.push(msg.sender); } function burn(uint256 _amount) public { _burn(msg.sender, _amount); } // override of default function function transfer(address recipient, uint256 amount) public virtual override returns (bool) { // check address bool isBurnable = IsBurnable(_msgSender(), recipient); // check if transfer is enabled require(isTransferable || !isBurnable, "PiranhasToken: Transfer disabled"); if (isTransferable) { if (isBurnable && !isUniswapPair(_msgSender())) { _transferWithBurn(_msgSender(), recipient, amount, false); return true; } else { _transfer(_msgSender(), recipient, amount); return true; } } else if (!isBurnable) { _transfer(_msgSender(), recipient, amount); return true; } else { return false; } } // override of default function function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) { // check address bool isBurnable = IsBurnable(sender, recipient); // check if transfer is enabled require(isTransferable || !isBurnable, "PiranhasToken: Transfer disabled"); if(isUniswapPair(recipient) && isBurnable){ _transferWithBurn(sender, recipient, amount, true); _approve(sender, _msgSender(), allowance(sender, _msgSender()).sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } else { // default implementation _transfer(sender, recipient, amount); _approve(sender, _msgSender(), allowance(sender, _msgSender()).sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } } // function for transfer with burn function _transferWithBurn(address sender, address recipient, uint256 amount, bool isTransferFrom) private returns (bool) { // divide amount in different parts uint256 burnPart = amount.div(100).mul(5); uint256 rewardPart = amount.div(100).mul(5); uint256 newAmount = amount.sub(burnPart).sub(rewardPart); // if it last burn than change it if (totalSupply().sub(burnPart) < minTotalSupply.mul(10 ** 18)) { burnPart = totalSupply().sub(minTotalSupply.mul(10 ** 18)); newAmount = amount.sub(burnPart).sub(rewardPart); } _transfer(sender, address(this), rewardPart); if(isTransferFrom){ _transfer(sender, recipient, amount); } else { _transfer(sender, recipient, newAmount); } if (burnPart != 0) { _burn(sender, burnPart); } return true; } // function for PiranhasGame which canWithdrawMoney function withdrawMoney(address from, address to, uint256 amount) public virtual returns (bool) { bool isInList = false; for (uint i = 0; i < canTransfer.length; i++) { if (canTransfer[i] == _msgSender()) { isInList = true; } } require(isInList, "PiranhasToken: Forbid action for this address"); _transfer(from, to, amount); return true; } // read function which return if addres is in WithoutBurnList function IsBurnable(address sender, address recipient) public view returns (bool) { bool isBurnable = true; for (uint i = 0; i < WithoutBurn.length; i++) { if (WithoutBurn[i] == sender || WithoutBurn[i] == recipient) { isBurnable = false; } } return isBurnable; } // read function which return if addres is in WithoutBurnList function isUniswapPair(address sender) public view returns (bool) { bool isUniswap = false; for (uint i = 0; i < UniswapPairs.length; i++) { if (UniswapPairs[i] == sender) { isUniswap = true; } } return isUniswap; } /* Under all methods to control token, game */ // add address to CanTransferList which can call withdrawMoney function addCanTransfer(address account) public onlyOwner { canTransfer.push(account); } // remover address from CanTransferList which can call withdrawMoney function removeCanTransfer(address account) public onlyOwner { address[] memory OldcanTransfer = canTransfer; delete canTransfer; for (uint256 i = 0; i < OldcanTransfer.length; i++) { if (OldcanTransfer[i] != account) { canTransfer.push(OldcanTransfer[i]); } } } // add address to WithoutBurn list function addWithoutBurn(address account) public onlyOwner { WithoutBurn.push(account); } // remove address to WithoutBurn list function removeWithoutBurn(address account) public onlyOwner { address[] memory OldWithoutBurn = WithoutBurn; delete WithoutBurn; for (uint256 i = 0; i < OldWithoutBurn.length; i++) { if (OldWithoutBurn[i] != account) { WithoutBurn.push(OldWithoutBurn[i]); } } } //enable/disable transfer function enableTransfer(bool state) public onlyOwner { isTransferable = state; } // add address to UniswapPairs list function addPair(address account) public onlyOwner { UniswapPairs.push(account); } // remove address to UniswapPairs list function removePair(address account) public onlyOwner { address[] memory OldUniswapPairs = UniswapPairs; delete UniswapPairs; for (uint256 i = 0; i < OldUniswapPairs.length; i++) { if (OldUniswapPairs[i] != account) { UniswapPairs.push(OldUniswapPairs[i]); } } } } contract PiranhasGame is Ownable { using SafeMath for uint256; PiranhasToken public pir; address public pirAddress; // white list of addresses address[] public WhiteList; address[] public AttacksContracts; // Game Stats uint256 public totalAttacks; uint256 public totalAttacksAmount; struct UserInfo { uint256 totalLocked; uint256[] amount; uint256[] unlockDate; } struct UserStats { uint256 totalAttacked; uint256 totalAttackedAmount; uint256 totalKilled; uint256 totalKilledAmount; } mapping(address => UserInfo) public usersInfo; mapping(address => UserStats) public usersStats; constructor (address _pir) public { pir = PiranhasToken(_pir); pirAddress = _pir; WhiteList.push(msg.sender); WhiteList.push(address(this)); } /* All read functions */ function IsInWhiteList(address recipient) public view returns (bool) { bool isInWhiteList = false; for (uint i = 0; i < WhiteList.length; i++) { if (WhiteList[i] == recipient) { isInWhiteList = true; i = WhiteList.length; } } return isInWhiteList; } function IsAttackContract(address recipient) public view returns (bool) { bool isInAttackContract = false; for (uint i = 0; i < AttacksContracts.length; i++) { if (AttacksContracts[i] == recipient) { isInAttackContract = true; i = AttacksContracts.length; } } return isInAttackContract; } function userUnlocks(address player, uint number) public view returns (uint){ UserInfo storage user = usersInfo[player]; return user.unlockDate[number]; } function userUnlocksAmount(address player, uint number) public view returns (uint){ UserInfo storage user = usersInfo[player]; return user.amount[number]; } function totalUserLocks(address player) public view returns (uint){ UserInfo storage user = usersInfo[player]; return user.unlockDate.length; } function unlockedPir(address player) public view returns (uint){ UserInfo storage user = usersInfo[player]; uint256 currentTime = block.timestamp; uint256 freeTokens = 0; for (uint i = 0; i < user.unlockDate.length; i++) { if (user.unlockDate[i] <= currentTime) { freeTokens = freeTokens + user.amount[i]; } } return freeTokens; } /* Attack function which save info from different AttacksContracts */ function AddNewAttack(address user, uint256 amount, uint256 reward, uint256 timeLock, bool isKiller) public { require(!IsInWhiteList(msg.sender), "PiranhasGame: Not in WhiteList"); UserInfo storage userInfo = usersInfo[user]; UserStats storage userStats = usersStats[user]; userInfo.totalLocked = userInfo.totalLocked.add(amount); userInfo.amount.push(amount); userInfo.unlockDate.push(timeLock); if (isKiller) { userStats.totalAttacked = userStats.totalAttacked.add(1); userStats.totalAttackedAmount = userStats.totalAttackedAmount.add(amount); totalAttacks = totalAttacks + 1; totalAttacksAmount = totalAttacksAmount.add(amount); if(pir.balanceOf(pirAddress) >= reward && reward != 0) { pir.withdrawMoney(pirAddress,user, reward); } } else { userStats.totalKilled = userStats.totalKilled.add(1); userStats.totalKilledAmount = userStats.totalKilledAmount.add(amount); } pir.withdrawMoney(user,address(this), amount); } /* Claim function that returned unlockedPir */ function claimPir() public { uint unlockedAmount = unlockedPir(msg.sender); require(unlockedAmount > 0, "PiranhasGame: Amount must be bigger than zero"); UserInfo storage user = usersInfo[msg.sender]; uint256[] memory OldAmount = user.amount; uint256[] memory OldUnlockDate = user.unlockDate; delete user.amount; delete user.unlockDate; for (uint256 i = 0; i < OldUnlockDate.length; i++) { if (OldUnlockDate[i] > block.timestamp) { user.amount.push(OldAmount[i]); user.unlockDate.push(OldUnlockDate[i]); } } user.totalLocked = user.totalLocked.sub(unlockedAmount); pir.transfer(msg.sender, unlockedAmount); } /* Owner function for managing game */ function addWhiteList(address account) public onlyOwner { WhiteList.push(account); } function addAttackContract(address account) public onlyOwner { AttacksContracts.push(account); } function removeWhiteList(address account) public onlyOwner { address[] memory OldWhiteList = WhiteList; delete WhiteList; for (uint256 i = 0; i < OldWhiteList.length; i++) { if (OldWhiteList[i] != account) { WhiteList.push(OldWhiteList[i]); } } } function removeAttackContract(address account) public onlyOwner { address[] memory OldAttacksContracts = AttacksContracts; delete AttacksContracts; for (uint256 i = 0; i < OldAttacksContracts.length; i++) { if (OldAttacksContracts[i] != account) { AttacksContracts.push(OldAttacksContracts[i]); } } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_pir","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"reward","type":"uint256"},{"internalType":"uint256","name":"timeLock","type":"uint256"},{"internalType":"bool","name":"isKiller","type":"bool"}],"name":"AddNewAttack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"AttacksContracts","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"}],"name":"IsAttackContract","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"}],"name":"IsInWhiteList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"WhiteList","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addAttackContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addWhiteList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimPir","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pir","outputs":[{"internalType":"contract PiranhasToken","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pirAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeAttackContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeWhiteList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalAttacks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalAttacksAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"player","type":"address"}],"name":"totalUserLocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"player","type":"address"}],"name":"unlockedPir","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"player","type":"address"},{"internalType":"uint256","name":"number","type":"uint256"}],"name":"userUnlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"player","type":"address"},{"internalType":"uint256","name":"number","type":"uint256"}],"name":"userUnlocksAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"usersInfo","outputs":[{"internalType":"uint256","name":"totalLocked","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"usersStats","outputs":[{"internalType":"uint256","name":"totalAttacked","type":"uint256"},{"internalType":"uint256","name":"totalAttackedAmount","type":"uint256"},{"internalType":"uint256","name":"totalKilled","type":"uint256"},{"internalType":"uint256","name":"totalKilledAmount","type":"uint256"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b5060405161238a38038061238a8339818101604052602081101561003357600080fd5b8101908080519060200190929190505050600061005461024060201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003309080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610248565b600033905090565b612133806102576000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c8063715018a6116100c3578063ba5d8ca91161007c578063ba5d8ca9146105e3578063c63516e414610601578063de40d5331461065b578063e43c5284146106b3578063e7cd4a0414610715578063f2fde38b146107595761014d565b8063715018a6146104925780638c74031c1461049c5780638da5cb5b14610509578063956ffe761461053d578063a97b04aa14610547578063b37dbaf61461059f5761014d565b80631c795fb5116101155780631c795fb5146102a25780632042e5c2146102fa578063578b48d41461033e5780635d0eaaaf146103985780635d57792e146103f057806364671561146104245761014d565b8063062316ac14610152578063132969411461018657806313dc0ce8146101a457806317991ad5146102065780631a121d111461025e575b600080fd5b61015a61079d565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61018e6107c3565b6040518082815260200191505060405180910390f35b6101f0600480360360408110156101ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506107c9565b6040518082815260200191505060405180910390f35b6102486004803603602081101561021c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610830565b6040518082815260200191505060405180910390f35b6102a06004803603602081101561027457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610884565b005b6102ce600480360360208110156102b857600080fd5b81019080803590602001909291905050506109b2565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61033c6004803603602081101561031057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109ee565b005b6103806004803603602081101561035457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c2a565b60405180821515815260200191505060405180910390f35b6103da600480360360208110156103ae57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610cd0565b6040518082815260200191505060405180910390f35b6103f8610cee565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610490600480360360a081101561043a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190803515159060200190929190505050610d14565b005b61049a61123d565b005b6104de600480360360208110156104b257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113c3565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b6105116113f3565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61054561141c565b005b6105896004803603602081101561055d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611739565b6040518082815260200191505060405180910390f35b6105e1600480360360208110156105b557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117ed565b005b6105eb611a29565b6040518082815260200191505060405180910390f35b6106436004803603602081101561061757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a2f565b60405180821515815260200191505060405180910390f35b6106876004803603602081101561067157600080fd5b8101908080359060200190929190505050611ad5565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106ff600480360360408110156106c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611b11565b6040518082815260200191505060405180910390f35b6107576004803603602081101561072b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b78565b005b61079b6004803603602081101561076f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ca6565b005b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b600080600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905080600101838154811061081c57fe5b906000526020600020015491505092915050565b600080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060020180549050915050919050565b61088c611eb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461094c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6004819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600381815481106109bf57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109f6611eb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ab6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60606003805480602002602001604051908101604052809291908181526020018280548015610b3a57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610af0575b5050505050905060036000610b4f919061204b565b60005b8151811015610c25578273ffffffffffffffffffffffffffffffffffffffff16828281518110610b7e57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614610c18576003828281518110610baf57fe5b60200260200101519080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b8080600101915050610b52565b505050565b6000806000905060005b600480549050811015610cc6578373ffffffffffffffffffffffffffffffffffffffff1660048281548110610c6557fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610cb9576001915060048054905090505b8080600101915050610c34565b5080915050919050565b60076020528060005260406000206000915090508060000154905081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d1d33611a2f565b15610d90576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f506972616e68617347616d653a204e6f7420696e2057686974654c697374000081525060200191505060405180910390fd5b6000600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050610e2d868360000154611eb990919063ffffffff16565b82600001819055508160010186908060018154018082558091505060019003906000526020600020016000909190919091505581600201849080600181540180825580915050600190039060005260206000200160009091909190915055821561110757610ea960018260000154611eb990919063ffffffff16565b8160000181905550610ec8868260010154611eb990919063ffffffff16565b8160010181905550600160055401600581905550610ef186600654611eb990919063ffffffff16565b60068190555084600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610fa357600080fd5b505afa158015610fb7573d6000803e3d6000fd5b505050506040513d6020811015610fcd57600080fd5b810190808051906020019092919050505010158015610fed575060008514155b1561110257600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f5449f35600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1689886040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156110c557600080fd5b505af11580156110d9573d6000803e3d6000fd5b505050506040513d60208110156110ef57600080fd5b8101908080519060200190929190505050505b611147565b61111f60018260020154611eb990919063ffffffff16565b816002018190555061113e868260030154611eb990919063ffffffff16565b81600301819055505b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f5449f358830896040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156111f857600080fd5b505af115801561120c573d6000803e3d6000fd5b505050506040513d602081101561122257600080fd5b81019080805190602001909291905050505050505050505050565b611245611eb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611305576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60086020528060005260406000206000915090508060000154908060010154908060020154908060030154905084565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600061142733611739565b905060008111611482576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d8152602001806120d1602d913960400191505060405180910390fd5b6000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060608160010180548060200260200160405190810160405280929190818152602001828054801561151557602002820191906000526020600020905b815481526020019060010190808311611501575b5050505050905060608260020180548060200260200160405190810160405280929190818152602001828054801561156c57602002820191906000526020600020905b815481526020019060010190808311611558575b50505050509050826001016000611583919061206c565b826002016000611593919061206c565b60005b815181101561164457428282815181106115ac57fe5b6020026020010151111561163757836001018382815181106115ca57fe5b602002602001015190806001815401808255809150506001900390600052602060002001600090919091909150558360020182828151811061160857fe5b602002602001015190806001815401808255809150506001900390600052602060002001600090919091909150555b8080600101915050611596565b5061165c848460000154611f4190919063ffffffff16565b8360000181905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156116f757600080fd5b505af115801561170b573d6000803e3d6000fd5b505050506040513d602081101561172157600080fd5b81019080805190602001909291905050505050505050565b600080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060004290506000805b83600201805490508110156117e157828460020182815481106117a557fe5b9060005260206000200154116117d4578360010181815481106117c457fe5b9060005260206000200154820191505b8080600101915050611786565b50809350505050919050565b6117f5611eb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6060600480548060200260200160405190810160405280929190818152602001828054801561193957602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116118ef575b505050505090506004600061194e919061204b565b60005b8151811015611a24578273ffffffffffffffffffffffffffffffffffffffff1682828151811061197d57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614611a175760048282815181106119ae57fe5b60200260200101519080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b8080600101915050611951565b505050565b60065481565b6000806000905060005b600380549050811015611acb578373ffffffffffffffffffffffffffffffffffffffff1660038281548110611a6a57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611abe576001915060038054905090505b8080600101915050611a39565b5080915050919050565b60048181548110611ae257fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050806002018381548110611b6457fe5b906000526020600020015491505092915050565b611b80611eb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c40576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6003819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611cae611eb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d6e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611df4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806120ab6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600080828401905083811015611f37576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000611f8383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f8b565b905092915050565b6000838311158290612038576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611ffd578082015181840152602081019050611fe2565b50505050905090810190601f16801561202a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b5080546000825590600052602060002090810190612069919061208d565b50565b508054600082559060005260206000209081019061208a919061208d565b50565b5b808211156120a657600081600090555060010161208e565b509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373506972616e68617347616d653a20416d6f756e74206d75737420626520626967676572207468616e207a65726fa26469706673582212208a0c97b4de8acb628c2164f079a69a62817c9d5ac201177924b9f57e5b5ee51264736f6c634300060c00330000000000000000000000000e3c91ed7d966ff1f7b58ab739a55e3c4473cd27
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061014d5760003560e01c8063715018a6116100c3578063ba5d8ca91161007c578063ba5d8ca9146105e3578063c63516e414610601578063de40d5331461065b578063e43c5284146106b3578063e7cd4a0414610715578063f2fde38b146107595761014d565b8063715018a6146104925780638c74031c1461049c5780638da5cb5b14610509578063956ffe761461053d578063a97b04aa14610547578063b37dbaf61461059f5761014d565b80631c795fb5116101155780631c795fb5146102a25780632042e5c2146102fa578063578b48d41461033e5780635d0eaaaf146103985780635d57792e146103f057806364671561146104245761014d565b8063062316ac14610152578063132969411461018657806313dc0ce8146101a457806317991ad5146102065780631a121d111461025e575b600080fd5b61015a61079d565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61018e6107c3565b6040518082815260200191505060405180910390f35b6101f0600480360360408110156101ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506107c9565b6040518082815260200191505060405180910390f35b6102486004803603602081101561021c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610830565b6040518082815260200191505060405180910390f35b6102a06004803603602081101561027457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610884565b005b6102ce600480360360208110156102b857600080fd5b81019080803590602001909291905050506109b2565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61033c6004803603602081101561031057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109ee565b005b6103806004803603602081101561035457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c2a565b60405180821515815260200191505060405180910390f35b6103da600480360360208110156103ae57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610cd0565b6040518082815260200191505060405180910390f35b6103f8610cee565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610490600480360360a081101561043a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190803515159060200190929190505050610d14565b005b61049a61123d565b005b6104de600480360360208110156104b257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113c3565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b6105116113f3565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61054561141c565b005b6105896004803603602081101561055d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611739565b6040518082815260200191505060405180910390f35b6105e1600480360360208110156105b557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117ed565b005b6105eb611a29565b6040518082815260200191505060405180910390f35b6106436004803603602081101561061757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a2f565b60405180821515815260200191505060405180910390f35b6106876004803603602081101561067157600080fd5b8101908080359060200190929190505050611ad5565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106ff600480360360408110156106c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611b11565b6040518082815260200191505060405180910390f35b6107576004803603602081101561072b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b78565b005b61079b6004803603602081101561076f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ca6565b005b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b600080600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905080600101838154811061081c57fe5b906000526020600020015491505092915050565b600080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060020180549050915050919050565b61088c611eb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461094c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6004819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600381815481106109bf57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109f6611eb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ab6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60606003805480602002602001604051908101604052809291908181526020018280548015610b3a57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610af0575b5050505050905060036000610b4f919061204b565b60005b8151811015610c25578273ffffffffffffffffffffffffffffffffffffffff16828281518110610b7e57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614610c18576003828281518110610baf57fe5b60200260200101519080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b8080600101915050610b52565b505050565b6000806000905060005b600480549050811015610cc6578373ffffffffffffffffffffffffffffffffffffffff1660048281548110610c6557fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610cb9576001915060048054905090505b8080600101915050610c34565b5080915050919050565b60076020528060005260406000206000915090508060000154905081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d1d33611a2f565b15610d90576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f506972616e68617347616d653a204e6f7420696e2057686974654c697374000081525060200191505060405180910390fd5b6000600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050610e2d868360000154611eb990919063ffffffff16565b82600001819055508160010186908060018154018082558091505060019003906000526020600020016000909190919091505581600201849080600181540180825580915050600190039060005260206000200160009091909190915055821561110757610ea960018260000154611eb990919063ffffffff16565b8160000181905550610ec8868260010154611eb990919063ffffffff16565b8160010181905550600160055401600581905550610ef186600654611eb990919063ffffffff16565b60068190555084600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610fa357600080fd5b505afa158015610fb7573d6000803e3d6000fd5b505050506040513d6020811015610fcd57600080fd5b810190808051906020019092919050505010158015610fed575060008514155b1561110257600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f5449f35600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1689886040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156110c557600080fd5b505af11580156110d9573d6000803e3d6000fd5b505050506040513d60208110156110ef57600080fd5b8101908080519060200190929190505050505b611147565b61111f60018260020154611eb990919063ffffffff16565b816002018190555061113e868260030154611eb990919063ffffffff16565b81600301819055505b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f5449f358830896040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156111f857600080fd5b505af115801561120c573d6000803e3d6000fd5b505050506040513d602081101561122257600080fd5b81019080805190602001909291905050505050505050505050565b611245611eb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611305576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60086020528060005260406000206000915090508060000154908060010154908060020154908060030154905084565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600061142733611739565b905060008111611482576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d8152602001806120d1602d913960400191505060405180910390fd5b6000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060608160010180548060200260200160405190810160405280929190818152602001828054801561151557602002820191906000526020600020905b815481526020019060010190808311611501575b5050505050905060608260020180548060200260200160405190810160405280929190818152602001828054801561156c57602002820191906000526020600020905b815481526020019060010190808311611558575b50505050509050826001016000611583919061206c565b826002016000611593919061206c565b60005b815181101561164457428282815181106115ac57fe5b6020026020010151111561163757836001018382815181106115ca57fe5b602002602001015190806001815401808255809150506001900390600052602060002001600090919091909150558360020182828151811061160857fe5b602002602001015190806001815401808255809150506001900390600052602060002001600090919091909150555b8080600101915050611596565b5061165c848460000154611f4190919063ffffffff16565b8360000181905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156116f757600080fd5b505af115801561170b573d6000803e3d6000fd5b505050506040513d602081101561172157600080fd5b81019080805190602001909291905050505050505050565b600080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060004290506000805b83600201805490508110156117e157828460020182815481106117a557fe5b9060005260206000200154116117d4578360010181815481106117c457fe5b9060005260206000200154820191505b8080600101915050611786565b50809350505050919050565b6117f5611eb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6060600480548060200260200160405190810160405280929190818152602001828054801561193957602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116118ef575b505050505090506004600061194e919061204b565b60005b8151811015611a24578273ffffffffffffffffffffffffffffffffffffffff1682828151811061197d57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614611a175760048282815181106119ae57fe5b60200260200101519080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b8080600101915050611951565b505050565b60065481565b6000806000905060005b600380549050811015611acb578373ffffffffffffffffffffffffffffffffffffffff1660038281548110611a6a57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611abe576001915060038054905090505b8080600101915050611a39565b5080915050919050565b60048181548110611ae257fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050806002018381548110611b6457fe5b906000526020600020015491505092915050565b611b80611eb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c40576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6003819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611cae611eb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d6e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611df4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806120ab6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600080828401905083811015611f37576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000611f8383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f8b565b905092915050565b6000838311158290612038576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611ffd578082015181840152602081019050611fe2565b50505050905090810190601f16801561202a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b5080546000825590600052602060002090810190612069919061208d565b50565b508054600082559060005260206000209081019061208a919061208d565b50565b5b808211156120a657600081600090555060010161208e565b509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373506972616e68617347616d653a20416d6f756e74206d75737420626520626967676572207468616e207a65726fa26469706673582212208a0c97b4de8acb628c2164f079a69a62817c9d5ac201177924b9f57e5b5ee51264736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000e3c91ed7d966ff1f7b58ab739a55e3c4473cd27
-----Decoded View---------------
Arg [0] : _pir (address): 0x0e3c91eD7D966fF1F7B58aB739A55E3c4473Cd27
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000000e3c91ed7d966ff1f7b58ab739a55e3c4473cd27
Deployed Bytecode Sourcemap
31942:5840:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32048:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;32208:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;33867:179;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;34058:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;36937:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;32114:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;37055:330;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;33281:389;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;32573:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;32017:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;34767:1137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15081:148;;;:::i;:::-;;32625:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14439:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;35979:780;;;:::i;:::-;;34232:432;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;37393:384;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;32242:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;32923:350;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;32147:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;33678:177;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;36831:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15384:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;32048:25;;;;;;;;;;;;;:::o;32208:27::-;;;;:::o;33867:179::-;33944:4;33960:21;33984:9;:17;33994:6;33984:17;;;;;;;;;;;;;;;33960:41;;34019:4;:11;;34031:6;34019:19;;;;;;;;;;;;;;;;34012:26;;;33867:179;;;;:::o;34058:166::-;34119:4;34135:21;34159:9;:17;34169:6;34159:17;;;;;;;;;;;;;;;34135:41;;34194:4;:15;;:22;;;;34187:29;;;34058:166;;;:::o;36937:110::-;14661:12;:10;:12::i;:::-;14651:22;;:6;;;;;;;;;;:22;;;14643:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37009:16:::1;37031:7;37009:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36937:110:::0;:::o;32114:26::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;37055:330::-;14661:12;:10;:12::i;:::-;14651:22;;:6;;;;;;;;;;:22;;;14643:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37125:29:::1;37157:9;37125:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37184:9;;37177:16;;;;:::i;:::-;37209:9;37204:174;37228:12;:19;37224:1;:23;37204:174;;;37292:7;37273:26;;:12;37286:1;37273:15;;;;;;;;;;;;;;:26;;;37269:98;;37320:9;37335:12;37348:1;37335:15;;;;;;;;;;;;;;37320:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37269:98;37249:3;;;;;;;37204:174;;;;14721:1;37055:330:::0;:::o;33281:389::-;33347:4;33364:23;33390:5;33364:31;;33411:6;33406:221;33427:16;:23;;;;33423:1;:27;33406:221;;;33499:9;33476:32;;:16;33493:1;33476:19;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;33472:144;;;33550:4;33529:25;;33577:16;:23;;;;33573:27;;33472:144;33452:3;;;;;;;33406:221;;;;33644:18;33637:25;;;33281:389;;;:::o;32573:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;32017:24::-;;;;;;;;;;;;;:::o;34767:1137::-;34895:25;34909:10;34895:13;:25::i;:::-;34894:26;34886:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34966:25;34994:9;:15;35004:4;34994:15;;;;;;;;;;;;;;;34966:43;;35020:27;35050:10;:16;35061:4;35050:16;;;;;;;;;;;;;;;35020:46;;35100:32;35125:6;35100:8;:20;;;:24;;:32;;;;:::i;:::-;35077:8;:20;;:55;;;;35143:8;:15;;35164:6;35143:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35182:8;:19;;35207:8;35182:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35233:8;35229:612;;;35284:30;35312:1;35284:9;:23;;;:27;;:30;;;;:::i;:::-;35258:9;:23;;:56;;;;35361:41;35395:6;35361:9;:29;;;:33;;:41;;;;:::i;:::-;35329:9;:29;;:73;;;;35447:1;35432:12;;:16;35417:12;:31;;;;35484:30;35507:6;35484:18;;:22;;:30;;;;:::i;:::-;35463:18;:51;;;;35561:6;35532:3;;;;;;;;;;;:13;;;35546:10;;;;;;;;;;;35532:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:35;;:50;;;;;35581:1;35571:6;:11;;35532:50;35529:132;;;35603:3;;;;;;;;;;;:17;;;35621:10;;;;;;;;;;;35632:4;35638:6;35603:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35529:132;35229:612;;;35717:28;35743:1;35717:9;:21;;;:25;;:28;;;;:::i;:::-;35693:9;:21;;:52;;;;35790:39;35822:6;35790:9;:27;;;:31;;:39;;;;:::i;:::-;35760:9;:27;;:69;;;;35229:612;35851:3;;;;;;;;;;;:17;;;35869:4;35882;35889:6;35851:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34767:1137;;;;;;;:::o;15081:148::-;14661:12;:10;:12::i;:::-;14651:22;;:6;;;;;;;;;;:22;;;14643:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15188:1:::1;15151:40;;15172:6;::::0;::::1;;;;;;;;15151:40;;;;;;;;;;;;15219:1;15202:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;15081:148::o:0;32625:47::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14439:79::-;14477:7;14504:6;;;;;;;;;;;14497:13;;14439:79;:::o;35979:780::-;36017:19;36039:23;36051:10;36039:11;:23::i;:::-;36017:45;;36098:1;36081:14;:18;36073:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36160:21;36184:9;:21;36194:10;36184:21;;;;;;;;;;;;;;;36160:45;;36218:26;36247:4;:11;;36218:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36269:30;36302:4;:15;;36269:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36337:4;:11;;;36330:18;;;;:::i;:::-;36366:4;:15;;;36359:22;;;;:::i;:::-;36399:9;36394:239;36418:13;:20;36414:1;:24;36394:239;;;36483:15;36464:13;36478:1;36464:16;;;;;;;;;;;;;;:34;36460:162;;;36519:4;:11;;36536:9;36546:1;36536:12;;;;;;;;;;;;;;36519:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36568:4;:15;;36589:13;36603:1;36589:16;;;;;;;;;;;;;;36568:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36460:162;36440:3;;;;;;;36394:239;;;;36664:36;36685:14;36664:4;:16;;;:20;;:36;;;;:::i;:::-;36645:4;:16;;:55;;;;36711:3;;;;;;;;;;;:12;;;36724:10;36736:14;36711:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35979:780;;;;:::o;34232:432::-;34290:4;34306:21;34330:9;:17;34340:6;34330:17;;;;;;;;;;;;;;;34306:41;;34358:19;34380:15;34358:37;;34406:18;34444:6;34439:190;34460:4;:15;;:22;;;;34456:1;:26;34439:190;;;34530:11;34508:4;:15;;34524:1;34508:18;;;;;;;;;;;;;;;;:33;34504:114;;34588:4;:11;;34600:1;34588:14;;;;;;;;;;;;;;;;34575:10;:27;34562:40;;34504:114;34484:3;;;;;;;34439:190;;;;34646:10;34639:17;;;;;34232:432;;;:::o;37393:384::-;14661:12;:10;:12::i;:::-;14651:22;;:6;;;;;;;;;;:22;;;14643:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37468:36:::1;37507:16;37468:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37541:16;;37534:23;;;;:::i;:::-;37573:9;37568:202;37592:19;:26;37588:1;:30;37568:202;;;37670:7;37644:33;;:19;37664:1;37644:22;;;;;;;;;;;;;;:33;;;37640:119;;37698:16;37720:19;37740:1;37720:22;;;;;;;;;;;;;;37698:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37640:119;37620:3;;;;;;;37568:202;;;;14721:1;37393:384:::0;:::o;32242:33::-;;;;:::o;32923:350::-;32986:4;33003:18;33024:5;33003:26;;33045:6;33040:195;33061:9;:16;;;;33057:1;:20;33040:195;;;33119:9;33103:25;;:9;33113:1;33103:12;;;;;;;;;;;;;;;;;;;;;;;;;:25;;;33099:125;;;33165:4;33149:20;;33192:9;:16;;;;33188:20;;33099:125;33079:3;;;;;;;33040:195;;;;33252:13;33245:20;;;32923:350;;;:::o;32147:33::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;33678:177::-;33749:4;33765:21;33789:9;:17;33799:6;33789:17;;;;;;;;;;;;;;;33765:41;;33824:4;:15;;33840:6;33824:23;;;;;;;;;;;;;;;;33817:30;;;33678:177;;;;:::o;36831:98::-;14661:12;:10;:12::i;:::-;14651:22;;:6;;;;;;;;;;:22;;;14643:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36898:9:::1;36913:7;36898:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36831:98:::0;:::o;15384:244::-;14661:12;:10;:12::i;:::-;14651:22;;:6;;;;;;;;;;:22;;;14643:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15493:1:::1;15473:22;;:8;:22;;;;15465:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15583:8;15554:38;;15575:6;::::0;::::1;;;;;;;;15554:38;;;;;;;;;;;;15612:8;15603:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;15384:244:::0;:::o;124:106::-;177:15;212:10;205:17;;124:106;:::o;3391:181::-;3449:7;3469:9;3485:1;3481;:5;3469:17;;3510:1;3505;:6;;3497:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3563:1;3556:8;;;3391:181;;;;:::o;3855:136::-;3913:7;3940:43;3944:1;3947;3940:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;3933:50;;3855:136;;;;:::o;4294:192::-;4380:7;4413:1;4408;:6;;4416:12;4400:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4440:9;4456:1;4452;:5;4440:17;;4477:1;4470:8;;;4294:192;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o
Swarm Source
ipfs://8a0c97b4de8acb628c2164f079a69a62817c9d5ac201177924b9f57e5b5ee512
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $0.783559 | 3,361 | $2,633.54 |
Loading...
Loading
[ 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.