Contract Overview
Balance:
0 MATIC
Token:
My Name Tag:
Not Available
[ Download CSV Export ]
Contract Name:
Staking
Compiler Version
v0.8.9+commit.e5eed63a
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { 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 { _transferOwnership(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"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @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); /** * @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 `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, 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 `from` to `to` 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 from, address to, uint256 amount ) external returns (bool); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC721/extensions/IERC721Enumerable.sol) pragma solidity ^0.8.0; import "../IERC721.sol"; /** * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Enumerable is IERC721 { /** * @dev Returns the total amount of tokens stored by the contract. */ function totalSupply() external view returns (uint256); /** * @dev Returns a token ID owned by `owner` at a given `index` of its token list. * Use along with {balanceOf} to enumerate all of ``owner``'s tokens. */ function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256); /** * @dev Returns a token ID at a given `index` of all the tokens stored by the contract. * Use along with {totalSupply} to enumerate all tokens. */ function tokenByIndex(uint256 index) external view returns (uint256); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/IERC721.sol) pragma solidity ^0.8.0; import "../../utils/introspection/IERC165.sol"; /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.9; import "@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol"; interface IERC721Ape is IERC721Enumerable { function tokenURI(uint256 tokenId) external view returns (string memory); function mutationLvl(uint256 tokenId) external view returns(uint256); }
// SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.8.9; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "./interfaces/IERC721Ape.sol"; import "@openzeppelin/contracts/access/Ownable.sol"; import "hardhat/console.sol"; contract Staking is Ownable { struct Position { address owner; // address owner uint256 startTimestamp; // period of staking in seconds uint256 endTimestamp; // staking starting time stamp uint256 tokens; // amount of "tokens" - converted from NFTs PositionKind positionKind; // true stake, false lock enummmmmmmm ENMMMMMM uint256[] arrayIdsOayc; uint256[] arrayIdsMoayc; } struct PositionInfo { address owner; uint256 positionId; uint256 accruedReward; uint256 maximumReward; uint256 stakedPeriod; uint256 remainingPeriod; PositionKind positionKind; uint256[] arrayIdsOayc; uint256[] arrayIdsMoayc; } enum PositionKind { Stake, Lock } // decimals 18 for multi IERC20 public token; IERC721Ape public OAYC; IERC721Ape public MOAYC; uint256 public rewardRate; uint256 public pairMulti; uint256 public notPairMulti; uint256 public oneOneMulti; uint256 public counterPositions; uint256 public lvl2Multi; uint256 public lvl3Multi; uint256 public stakeFine; // % (100 decimals) uint256 public lockFine; // % (100 decimals) bool public isStarted; uint256 constant DECIMALS = 1 ether; uint256[] availablePeriods; // 1 day, 7 days, 28 days, 100 days mapping(address => uint256[]) public userPositions; // address owner => array of positions mapping(uint256 => Position) public positions; // id position => Position mapping(uint256 => bool) public oayc1x1; mapping(uint256 => bool) public stakedOayc; mapping(uint256 => bool) public stakedMoayc; constructor( IERC721Ape OAYC_, IERC721Ape MOAYC_, IERC20 token_, uint256[] memory params, uint256[] memory availablePeriods_ ) { OAYC = OAYC_; MOAYC = MOAYC_; token = token_; rewardRate = params[0]; pairMulti = params[1]; notPairMulti = params[2]; oneOneMulti = params[3]; lvl2Multi = params[4]; lvl3Multi = params[5]; stakeFine = params[6]; lockFine = params[7]; availablePeriods = availablePeriods_; } modifier onlyStarted() { require(isStarted, "Staking is closed"); _; } modifier onlySameSizes(uint256[] calldata _oaycIds, uint256[] calldata _moaycIds) { require(_oaycIds.length == _moaycIds.length, "Wrong calldata arrays"); _; } modifier onlyPositionOwner(uint256 _index) { require(positions[_index].owner == msg.sender, "Only position owner can claim"); _; } function flipStarted() public onlyOwner { isStarted = !isStarted; } function getPositionInfo(uint256 index) public view returns (PositionInfo memory) { return PositionInfo( positions[index].owner, index, getRewardAmount(index), getMaximumRewardPerPosition(index), getStakingPertiod(index), block.timestamp > positions[index].endTimestamp ? 0 : positions[index].endTimestamp - block.timestamp, positions[index].positionKind, positions[index].arrayIdsOayc, positions[index].arrayIdsMoayc ); } function getAllPositionsInfo(address user) public view returns (PositionInfo[] memory) { uint256[] memory _indexes = userPositions[user]; uint256 _positionAmount = _indexes.length; PositionInfo[] memory _positions = new PositionInfo[](_positionAmount); for (uint256 i = 0; i < _positionAmount;) { _positions[i] = getPositionInfo(_indexes[i]); unchecked {i++;} } return _positions; } function stake( uint256[] calldata _oaycIds, uint256[] calldata _moaycIds, uint256 _periodIndex ) external onlyStarted onlySameSizes(_oaycIds, _moaycIds) { checkOwnerStake(_oaycIds, _moaycIds, msg.sender); counterPositions++; userPositions[msg.sender].push(counterPositions); positions[counterPositions] = Position( msg.sender, block.timestamp, block.timestamp + availablePeriods[_periodIndex], calculateTokens(_oaycIds, _moaycIds) / 2, PositionKind.Stake, _oaycIds, _moaycIds ); } function lock( uint256[] calldata _oaycIds, uint256[] calldata _moaycIds, uint256 _periodIndex ) external onlyStarted onlySameSizes(_oaycIds, _moaycIds) { transferPosition(msg.sender, address(this), _oaycIds, _moaycIds); counterPositions++; userPositions[msg.sender].push(counterPositions); positions[counterPositions] = Position( msg.sender, block.timestamp, block.timestamp + availablePeriods[_periodIndex], calculateTokens(_oaycIds, _moaycIds), PositionKind.Lock, _oaycIds, _moaycIds ); } function calculateTokens( uint256[] calldata _oaycIds, uint256[] calldata _moaycIds ) public view returns (uint256 counter) { uint256 _size = _oaycIds.length; uint256 oaycRatio; uint256 _counter; for (uint256 i = 0; i < _size;) { _counter = 0; oaycRatio = _oaycIds[i] != 0 ? 1 * DECIMALS : 0; if (oayc1x1[_oaycIds[i]]) { oaycRatio = oaycRatio * oneOneMulti / DECIMALS; } if (_oaycIds[i] != 0 && _moaycIds[i] != 0) { if (_oaycIds[i] == _moaycIds[i]) { _counter = (oaycRatio + moaycRatio(_moaycIds[i])) * pairMulti / DECIMALS; } else { _counter = (oaycRatio + moaycRatio(_moaycIds[i])) * notPairMulti / DECIMALS; } } else { _counter = (oaycRatio + moaycRatio(_moaycIds[i])); } counter += _counter; unchecked {i++;} } } function moaycRatio(uint256 _tokenId) public view returns (uint256) { if (_tokenId == 0) { return 0; } uint256 _lvl = MOAYC.mutationLvl(_tokenId); uint256 _proportion = 10000 * DECIMALS / MOAYC.totalSupply(); if (_lvl == 1) { return _proportion; } else { // return _lvl == 2 ? // _proportion * 55 / 10 : // _proportion * 55 * 2 / 10; return _lvl == 2 ? _proportion * lvl2Multi / DECIMALS : _proportion * lvl3Multi / DECIMALS; } } function transferPosition(address from, address to, uint256[] calldata _oaycIds, uint256[] calldata _moaycIds) internal { for (uint256 i = 0; i < _oaycIds.length;) { if (_oaycIds[i] != 0) { require(!stakedOayc[_oaycIds[i]], "This NFT already staked"); OAYC.transferFrom(from, to, _oaycIds[i]); } if (_moaycIds[i] != 0) { require(!stakedMoayc[_moaycIds[i]], "This NFT already staked"); MOAYC.transferFrom(from, to, _moaycIds[i]); } unchecked {i++;} } } function checkOwnerStake(uint256[] calldata _oaycIds, uint256[] calldata _moaycIds, address _sender) internal { for (uint256 i = 0; i < _oaycIds.length;) { if (_oaycIds[i] != 0) { require(!stakedOayc[_oaycIds[i]], "This NFT already staked"); stakedOayc[_oaycIds[i]] = true; require(_sender == OAYC.ownerOf(_oaycIds[i]), "Not owner of this NFT"); } if (_moaycIds[i] != 0) { require(!stakedMoayc[_moaycIds[i]], "This NFT already staked"); stakedMoayc[_moaycIds[i]] = true; require(_sender == MOAYC.ownerOf(_moaycIds[i]), "Not owner of this NFT"); } unchecked {i++;} } } function checkOwnerUnstake(uint256[] memory _oaycIds, uint256[] memory _moaycIds, address _sender) internal { for (uint256 i = 0; i < _oaycIds.length;) { if (_oaycIds[i] != 0) { require(stakedOayc[_oaycIds[i]], "This NFT not staked"); stakedOayc[_oaycIds[i]] = false; require(_sender == OAYC.ownerOf(_oaycIds[i]), "Not owner of this NFT"); } if (_moaycIds[i] != 0) { require(stakedMoayc[_moaycIds[i]], "This NFT not staked"); stakedMoayc[_moaycIds[i]] = false; require(_sender == MOAYC.ownerOf(_moaycIds[i]), "Not owner of this NFT"); } unchecked {i++;} } } function isActive(uint256 _index) public view returns (bool) { return !(positions[_index].endTimestamp <= block.timestamp); } function getRewardAmount(uint256 _index) view public returns (uint256) { return positions[_index].tokens * rewardRate * getStakingPertiod(_index) / DECIMALS; } function getStakingPertiod(uint256 _index) public view returns (uint256) { return block.timestamp > positions[_index].endTimestamp ? positions[_index].endTimestamp - positions[_index].startTimestamp : block.timestamp - positions[_index].startTimestamp; } function getMaximumRewardPerPosition(uint256 _index) public view returns (uint256) { return positions[_index].tokens * rewardRate * (positions[_index].endTimestamp - positions[_index].startTimestamp) / DECIMALS; } function positionsOf(address _owner) public view returns (uint256[] memory indexes) { indexes = userPositions[_owner]; } function getPositionsByIndexes(uint256[] memory _indexes) public view returns (Position[] memory) { uint256 _positionAmount = _indexes.length; Position[] memory _positions = new Position[](_positionAmount); for (uint256 i = 0; i < _positionAmount;) { _positions[i] = positions[_indexes[i]]; unchecked {i++;} } return _positions; } function getPositionsByOwner(address _owner) public view returns (Position[] memory) { uint256[] memory _indexes = positionsOf(_owner); uint256 _positionAmount = _indexes.length; Position[] memory _positions = new Position[](_positionAmount); for (uint256 i = 0; i < _positionAmount;) { _positions[i] = positions[_indexes[i]]; unchecked {i++;} } return _positions; } function claimReward(uint256 _index) public onlyPositionOwner(_index) { uint256 _rewardAmount = getRewardAmount(_index); Position storage position = positions[_index]; if (isActive(_index)) { if (position.positionKind == PositionKind.Stake) { // _rewardAmount = _rewardAmount / 2; _rewardAmount = _rewardAmount * stakeFine / 100; } else { // _rewardAmount = 0; _rewardAmount = _rewardAmount * lockFine / 100; } } transferReward( msg.sender, position.arrayIdsOayc, position.arrayIdsMoayc, _rewardAmount, _index, position.positionKind ); } function claimAllRewards() public { uint256 _positionAmount = userPositions[msg.sender].length; for (uint256 i = 0; i < _positionAmount;) { claimReward(userPositions[msg.sender][0]); unchecked {i++;} } } function transferReward( address _owner, uint256[] storage _arrayIdsOayc, uint256[] storage _arrayIdsMoayc, uint256 _reward, uint256 _index, PositionKind _positionKind ) internal { if (_positionKind == PositionKind.Stake) { checkOwnerUnstake(_arrayIdsOayc, _arrayIdsMoayc, _owner); } else { uint256 _size = _arrayIdsOayc.length; for (uint256 i = 0; i < _size;) { if (_arrayIdsOayc[i] != 0) { OAYC.transferFrom(address(this), _owner, _arrayIdsOayc[i]); } if (_arrayIdsMoayc[i] != 0) { MOAYC.transferFrom(address(this), _owner, _arrayIdsMoayc[i]); } unchecked {i++;} } } delete positions[_index]; _removePositionFromUser(msg.sender, _index); require(token.balanceOf(address(this)) >= _reward, "Not enough tokens on contract balance"); token.transfer(_owner, _reward); } function removeStakePosition(uint256 _index) public onlyPositionOwner(_index) { Position storage position = positions[_index]; for (uint256 i = 0; i < position.arrayIdsOayc.length;) { if (position.arrayIdsOayc[i] != 0) { require(stakedOayc[position.arrayIdsOayc[i]], "This NFT not staked"); stakedOayc[position.arrayIdsOayc[i]] = false; } if (position.arrayIdsMoayc[i] != 0) { require(stakedMoayc[position.arrayIdsMoayc[i]], "This NFT not staked"); stakedMoayc[position.arrayIdsMoayc[i]] = false; } unchecked {i++;} } delete positions[_index]; _removePositionFromUser(msg.sender, _index); } function _removePositionFromUser(address owner, uint256 _index) internal { uint256[] storage _indexes = userPositions[owner]; uint256 _positionAmount = _indexes.length; for (uint256 i = 0; i < _positionAmount; ) { if (_indexes[i] == _index) { _indexes[i] = _indexes[_positionAmount - 1]; _indexes.pop(); i = _positionAmount; } unchecked {i++;} } } function setAvailablePeriods(uint256[] calldata _availablePeriods) public onlyOwner { availablePeriods = _availablePeriods; } function addAvailablePeriods(uint256 _newAvailablePeriod) public onlyOwner { availablePeriods.push(_newAvailablePeriod); } function setRewardRate(uint256 _newRewardRate) public onlyOwner { rewardRate = _newRewardRate; } function setNotPairMulti(uint256 _newMulti) public onlyOwner { notPairMulti = _newMulti; } function setPairMulti(uint256 _newMulti) public onlyOwner { pairMulti = _newMulti; } function setOneOnOneMulti(uint256 _newMulti) public onlyOwner { oneOneMulti = _newMulti; } function addOayc1x1(uint256 _newTokenId) public onlyOwner { oayc1x1[_newTokenId] = true; } function removeOayc1x1(uint256 _newTokenId) public onlyOwner { oayc1x1[_newTokenId] = false; } function setLvl2Multi(uint256 _newMulti) public onlyOwner { lvl2Multi = _newMulti; } function setLvl3Multi(uint256 _newMulti) public onlyOwner { lvl3Multi = _newMulti; } function setStakeFine(uint256 _newFine) public onlyOwner { stakeFine = _newFine; } function setLockFine(uint256 _newFine) public onlyOwner { lockFine = _newFine; } }
// SPDX-License-Identifier: MIT pragma solidity >= 0.4.22 <0.9.0; library console { address constant CONSOLE_ADDRESS = address(0x000000000000000000636F6e736F6c652e6c6f67); function _sendLogPayload(bytes memory payload) private view { uint256 payloadLength = payload.length; address consoleAddress = CONSOLE_ADDRESS; assembly { let payloadStart := add(payload, 32) let r := staticcall(gas(), consoleAddress, payloadStart, payloadLength, 0, 0) } } function log() internal view { _sendLogPayload(abi.encodeWithSignature("log()")); } function logInt(int256 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(int256)", p0)); } function logUint(uint256 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256)", p0)); } function logString(string memory p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(string)", p0)); } function logBool(bool p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool)", p0)); } function logAddress(address p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(address)", p0)); } function logBytes(bytes memory p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes)", p0)); } function logBytes1(bytes1 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes1)", p0)); } function logBytes2(bytes2 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes2)", p0)); } function logBytes3(bytes3 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes3)", p0)); } function logBytes4(bytes4 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes4)", p0)); } function logBytes5(bytes5 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes5)", p0)); } function logBytes6(bytes6 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes6)", p0)); } function logBytes7(bytes7 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes7)", p0)); } function logBytes8(bytes8 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes8)", p0)); } function logBytes9(bytes9 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes9)", p0)); } function logBytes10(bytes10 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes10)", p0)); } function logBytes11(bytes11 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes11)", p0)); } function logBytes12(bytes12 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes12)", p0)); } function logBytes13(bytes13 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes13)", p0)); } function logBytes14(bytes14 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes14)", p0)); } function logBytes15(bytes15 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes15)", p0)); } function logBytes16(bytes16 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes16)", p0)); } function logBytes17(bytes17 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes17)", p0)); } function logBytes18(bytes18 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes18)", p0)); } function logBytes19(bytes19 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes19)", p0)); } function logBytes20(bytes20 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes20)", p0)); } function logBytes21(bytes21 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes21)", p0)); } function logBytes22(bytes22 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes22)", p0)); } function logBytes23(bytes23 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes23)", p0)); } function logBytes24(bytes24 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes24)", p0)); } function logBytes25(bytes25 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes25)", p0)); } function logBytes26(bytes26 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes26)", p0)); } function logBytes27(bytes27 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes27)", p0)); } function logBytes28(bytes28 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes28)", p0)); } function logBytes29(bytes29 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes29)", p0)); } function logBytes30(bytes30 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes30)", p0)); } function logBytes31(bytes31 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes31)", p0)); } function logBytes32(bytes32 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bytes32)", p0)); } function log(uint256 p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256)", p0)); } function log(string memory p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(string)", p0)); } function log(bool p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool)", p0)); } function log(address p0) internal view { _sendLogPayload(abi.encodeWithSignature("log(address)", p0)); } function log(uint256 p0, uint256 p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256)", p0, p1)); } function log(uint256 p0, string memory p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string)", p0, p1)); } function log(uint256 p0, bool p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool)", p0, p1)); } function log(uint256 p0, address p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address)", p0, p1)); } function log(string memory p0, uint256 p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256)", p0, p1)); } function log(string memory p0, string memory p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string)", p0, p1)); } function log(string memory p0, bool p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool)", p0, p1)); } function log(string memory p0, address p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address)", p0, p1)); } function log(bool p0, uint256 p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256)", p0, p1)); } function log(bool p0, string memory p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string)", p0, p1)); } function log(bool p0, bool p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool)", p0, p1)); } function log(bool p0, address p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address)", p0, p1)); } function log(address p0, uint256 p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256)", p0, p1)); } function log(address p0, string memory p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string)", p0, p1)); } function log(address p0, bool p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool)", p0, p1)); } function log(address p0, address p1) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address)", p0, p1)); } function log(uint256 p0, uint256 p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256)", p0, p1, p2)); } function log(uint256 p0, uint256 p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string)", p0, p1, p2)); } function log(uint256 p0, uint256 p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool)", p0, p1, p2)); } function log(uint256 p0, uint256 p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address)", p0, p1, p2)); } function log(uint256 p0, string memory p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256)", p0, p1, p2)); } function log(uint256 p0, string memory p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,string)", p0, p1, p2)); } function log(uint256 p0, string memory p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool)", p0, p1, p2)); } function log(uint256 p0, string memory p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,address)", p0, p1, p2)); } function log(uint256 p0, bool p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256)", p0, p1, p2)); } function log(uint256 p0, bool p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string)", p0, p1, p2)); } function log(uint256 p0, bool p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool)", p0, p1, p2)); } function log(uint256 p0, bool p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address)", p0, p1, p2)); } function log(uint256 p0, address p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256)", p0, p1, p2)); } function log(uint256 p0, address p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,string)", p0, p1, p2)); } function log(uint256 p0, address p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool)", p0, p1, p2)); } function log(uint256 p0, address p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,address)", p0, p1, p2)); } function log(string memory p0, uint256 p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256)", p0, p1, p2)); } function log(string memory p0, uint256 p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,string)", p0, p1, p2)); } function log(string memory p0, uint256 p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool)", p0, p1, p2)); } function log(string memory p0, uint256 p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,address)", p0, p1, p2)); } function log(string memory p0, string memory p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,uint256)", p0, p1, p2)); } function log(string memory p0, string memory p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,string)", p0, p1, p2)); } function log(string memory p0, string memory p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,bool)", p0, p1, p2)); } function log(string memory p0, string memory p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,address)", p0, p1, p2)); } function log(string memory p0, bool p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256)", p0, p1, p2)); } function log(string memory p0, bool p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,string)", p0, p1, p2)); } function log(string memory p0, bool p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool)", p0, p1, p2)); } function log(string memory p0, bool p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,address)", p0, p1, p2)); } function log(string memory p0, address p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,uint256)", p0, p1, p2)); } function log(string memory p0, address p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,string)", p0, p1, p2)); } function log(string memory p0, address p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,bool)", p0, p1, p2)); } function log(string memory p0, address p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,address)", p0, p1, p2)); } function log(bool p0, uint256 p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256)", p0, p1, p2)); } function log(bool p0, uint256 p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string)", p0, p1, p2)); } function log(bool p0, uint256 p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool)", p0, p1, p2)); } function log(bool p0, uint256 p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address)", p0, p1, p2)); } function log(bool p0, string memory p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256)", p0, p1, p2)); } function log(bool p0, string memory p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,string)", p0, p1, p2)); } function log(bool p0, string memory p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool)", p0, p1, p2)); } function log(bool p0, string memory p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,address)", p0, p1, p2)); } function log(bool p0, bool p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256)", p0, p1, p2)); } function log(bool p0, bool p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string)", p0, p1, p2)); } function log(bool p0, bool p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool)", p0, p1, p2)); } function log(bool p0, bool p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address)", p0, p1, p2)); } function log(bool p0, address p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256)", p0, p1, p2)); } function log(bool p0, address p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,string)", p0, p1, p2)); } function log(bool p0, address p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool)", p0, p1, p2)); } function log(bool p0, address p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,address)", p0, p1, p2)); } function log(address p0, uint256 p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256)", p0, p1, p2)); } function log(address p0, uint256 p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,string)", p0, p1, p2)); } function log(address p0, uint256 p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool)", p0, p1, p2)); } function log(address p0, uint256 p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,address)", p0, p1, p2)); } function log(address p0, string memory p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,uint256)", p0, p1, p2)); } function log(address p0, string memory p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,string)", p0, p1, p2)); } function log(address p0, string memory p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,bool)", p0, p1, p2)); } function log(address p0, string memory p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,address)", p0, p1, p2)); } function log(address p0, bool p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256)", p0, p1, p2)); } function log(address p0, bool p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,string)", p0, p1, p2)); } function log(address p0, bool p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool)", p0, p1, p2)); } function log(address p0, bool p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,address)", p0, p1, p2)); } function log(address p0, address p1, uint256 p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,uint256)", p0, p1, p2)); } function log(address p0, address p1, string memory p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,string)", p0, p1, p2)); } function log(address p0, address p1, bool p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,bool)", p0, p1, p2)); } function log(address p0, address p1, address p2) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,address)", p0, p1, p2)); } function log(uint256 p0, uint256 p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256,string)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256,bool)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256,address)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string,string)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string,bool)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string,address)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool,string)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool,bool)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool,address)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address,string)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address,bool)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address,address)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256,string)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256,bool)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256,address)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,string,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,string,string)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,string,bool)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,string,address)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool,string)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool,bool)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool,address)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,address,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,address,string)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,address,bool)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,address,address)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256,string)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256,bool)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256,address)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string,string)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string,bool)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string,address)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool,string)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool,bool)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool,address)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address,string)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address,bool)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address,address)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256,string)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256,bool)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256,address)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,string,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,string,string)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,string,bool)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,string,address)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool,string)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool,bool)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool,address)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,address,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,address,string)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,address,bool)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,address,address)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256,uint256)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256,string)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256,bool)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256,address)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,string,uint256)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,string,string)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,string,bool)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,string,address)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool,uint256)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool,string)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool,bool)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool,address)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,address,uint256)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,address,string)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,address,bool)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,address,address)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,uint256,uint256)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,uint256,string)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,uint256,bool)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,uint256,address)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,string,uint256)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,string,string)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,string,bool)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,string,address)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,bool,uint256)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,bool,string)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,bool,bool)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,bool,address)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,address,uint256)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,address,string)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,address,bool)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,string,address,address)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256,uint256)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256,string)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256,bool)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256,address)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,string,uint256)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,string,string)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,string,bool)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,string,address)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,uint256)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,string)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,bool)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,address)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,uint256)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,string)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,bool)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,address)", p0, p1, p2, p3)); } function log(string memory p0, address p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,uint256,uint256)", p0, p1, p2, p3)); } function log(string memory p0, address p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,uint256,string)", p0, p1, p2, p3)); } function log(string memory p0, address p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,uint256,bool)", p0, p1, p2, p3)); } function log(string memory p0, address p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,uint256,address)", p0, p1, p2, p3)); } function log(string memory p0, address p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,string,uint256)", p0, p1, p2, p3)); } function log(string memory p0, address p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,string,string)", p0, p1, p2, p3)); } function log(string memory p0, address p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,string,bool)", p0, p1, p2, p3)); } function log(string memory p0, address p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,string,address)", p0, p1, p2, p3)); } function log(string memory p0, address p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,uint256)", p0, p1, p2, p3)); } function log(string memory p0, address p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,string)", p0, p1, p2, p3)); } function log(string memory p0, address p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,bool)", p0, p1, p2, p3)); } function log(string memory p0, address p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,address)", p0, p1, p2, p3)); } function log(string memory p0, address p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,address,uint256)", p0, p1, p2, p3)); } function log(string memory p0, address p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,address,string)", p0, p1, p2, p3)); } function log(string memory p0, address p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,address,bool)", p0, p1, p2, p3)); } function log(string memory p0, address p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(string,address,address,address)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256,uint256)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256,string)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256,bool)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256,address)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string,uint256)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string,string)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string,bool)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string,address)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool,uint256)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool,string)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool,bool)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool,address)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address,uint256)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address,string)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address,bool)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address,address)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256,uint256)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256,string)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256,bool)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256,address)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,string,uint256)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,string,string)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,string,bool)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,string,address)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,uint256)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,string)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,bool)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,address)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,uint256)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,string)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,bool)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,address)", p0, p1, p2, p3)); } function log(bool p0, bool p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256,uint256)", p0, p1, p2, p3)); } function log(bool p0, bool p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256,string)", p0, p1, p2, p3)); } function log(bool p0, bool p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256,bool)", p0, p1, p2, p3)); } function log(bool p0, bool p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256,address)", p0, p1, p2, p3)); } function log(bool p0, bool p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,uint256)", p0, p1, p2, p3)); } function log(bool p0, bool p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,string)", p0, p1, p2, p3)); } function log(bool p0, bool p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,bool)", p0, p1, p2, p3)); } function log(bool p0, bool p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,address)", p0, p1, p2, p3)); } function log(bool p0, bool p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,uint256)", p0, p1, p2, p3)); } function log(bool p0, bool p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,string)", p0, p1, p2, p3)); } function log(bool p0, bool p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,bool)", p0, p1, p2, p3)); } function log(bool p0, bool p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,address)", p0, p1, p2, p3)); } function log(bool p0, bool p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,uint256)", p0, p1, p2, p3)); } function log(bool p0, bool p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,string)", p0, p1, p2, p3)); } function log(bool p0, bool p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,bool)", p0, p1, p2, p3)); } function log(bool p0, bool p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,address)", p0, p1, p2, p3)); } function log(bool p0, address p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256,uint256)", p0, p1, p2, p3)); } function log(bool p0, address p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256,string)", p0, p1, p2, p3)); } function log(bool p0, address p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256,bool)", p0, p1, p2, p3)); } function log(bool p0, address p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256,address)", p0, p1, p2, p3)); } function log(bool p0, address p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,uint256)", p0, p1, p2, p3)); } function log(bool p0, address p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,string)", p0, p1, p2, p3)); } function log(bool p0, address p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,bool)", p0, p1, p2, p3)); } function log(bool p0, address p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,address)", p0, p1, p2, p3)); } function log(bool p0, address p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,uint256)", p0, p1, p2, p3)); } function log(bool p0, address p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,string)", p0, p1, p2, p3)); } function log(bool p0, address p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,bool)", p0, p1, p2, p3)); } function log(bool p0, address p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,address)", p0, p1, p2, p3)); } function log(bool p0, address p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,uint256)", p0, p1, p2, p3)); } function log(bool p0, address p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,string)", p0, p1, p2, p3)); } function log(bool p0, address p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,bool)", p0, p1, p2, p3)); } function log(bool p0, address p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,address)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256,uint256)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256,string)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256,bool)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256,address)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,string,uint256)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,string,string)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,string,bool)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,string,address)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool,uint256)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool,string)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool,bool)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool,address)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,address,uint256)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,address,string)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,address,bool)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,address,address)", p0, p1, p2, p3)); } function log(address p0, string memory p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,uint256,uint256)", p0, p1, p2, p3)); } function log(address p0, string memory p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,uint256,string)", p0, p1, p2, p3)); } function log(address p0, string memory p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,uint256,bool)", p0, p1, p2, p3)); } function log(address p0, string memory p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,uint256,address)", p0, p1, p2, p3)); } function log(address p0, string memory p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,string,uint256)", p0, p1, p2, p3)); } function log(address p0, string memory p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,string,string)", p0, p1, p2, p3)); } function log(address p0, string memory p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,string,bool)", p0, p1, p2, p3)); } function log(address p0, string memory p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,string,address)", p0, p1, p2, p3)); } function log(address p0, string memory p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,uint256)", p0, p1, p2, p3)); } function log(address p0, string memory p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,string)", p0, p1, p2, p3)); } function log(address p0, string memory p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,bool)", p0, p1, p2, p3)); } function log(address p0, string memory p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,address)", p0, p1, p2, p3)); } function log(address p0, string memory p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,address,uint256)", p0, p1, p2, p3)); } function log(address p0, string memory p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,address,string)", p0, p1, p2, p3)); } function log(address p0, string memory p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,address,bool)", p0, p1, p2, p3)); } function log(address p0, string memory p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,string,address,address)", p0, p1, p2, p3)); } function log(address p0, bool p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256,uint256)", p0, p1, p2, p3)); } function log(address p0, bool p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256,string)", p0, p1, p2, p3)); } function log(address p0, bool p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256,bool)", p0, p1, p2, p3)); } function log(address p0, bool p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256,address)", p0, p1, p2, p3)); } function log(address p0, bool p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,uint256)", p0, p1, p2, p3)); } function log(address p0, bool p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,string)", p0, p1, p2, p3)); } function log(address p0, bool p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,bool)", p0, p1, p2, p3)); } function log(address p0, bool p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,address)", p0, p1, p2, p3)); } function log(address p0, bool p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,uint256)", p0, p1, p2, p3)); } function log(address p0, bool p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,string)", p0, p1, p2, p3)); } function log(address p0, bool p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,bool)", p0, p1, p2, p3)); } function log(address p0, bool p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,address)", p0, p1, p2, p3)); } function log(address p0, bool p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,uint256)", p0, p1, p2, p3)); } function log(address p0, bool p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,string)", p0, p1, p2, p3)); } function log(address p0, bool p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,bool)", p0, p1, p2, p3)); } function log(address p0, bool p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,address)", p0, p1, p2, p3)); } function log(address p0, address p1, uint256 p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,uint256,uint256)", p0, p1, p2, p3)); } function log(address p0, address p1, uint256 p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,uint256,string)", p0, p1, p2, p3)); } function log(address p0, address p1, uint256 p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,uint256,bool)", p0, p1, p2, p3)); } function log(address p0, address p1, uint256 p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,uint256,address)", p0, p1, p2, p3)); } function log(address p0, address p1, string memory p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,string,uint256)", p0, p1, p2, p3)); } function log(address p0, address p1, string memory p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,string,string)", p0, p1, p2, p3)); } function log(address p0, address p1, string memory p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,string,bool)", p0, p1, p2, p3)); } function log(address p0, address p1, string memory p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,string,address)", p0, p1, p2, p3)); } function log(address p0, address p1, bool p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,uint256)", p0, p1, p2, p3)); } function log(address p0, address p1, bool p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,string)", p0, p1, p2, p3)); } function log(address p0, address p1, bool p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,bool)", p0, p1, p2, p3)); } function log(address p0, address p1, bool p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,address)", p0, p1, p2, p3)); } function log(address p0, address p1, address p2, uint256 p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,address,uint256)", p0, p1, p2, p3)); } function log(address p0, address p1, address p2, string memory p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,address,string)", p0, p1, p2, p3)); } function log(address p0, address p1, address p2, bool p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,address,bool)", p0, p1, p2, p3)); } function log(address p0, address p1, address p2, address p3) internal view { _sendLogPayload(abi.encodeWithSignature("log(address,address,address,address)", p0, p1, p2, p3)); } }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
[{"inputs":[{"internalType":"contract IERC721Ape","name":"OAYC_","type":"address"},{"internalType":"contract IERC721Ape","name":"MOAYC_","type":"address"},{"internalType":"contract IERC20","name":"token_","type":"address"},{"internalType":"uint256[]","name":"params","type":"uint256[]"},{"internalType":"uint256[]","name":"availablePeriods_","type":"uint256[]"}],"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":[],"name":"MOAYC","outputs":[{"internalType":"contract IERC721Ape","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"OAYC","outputs":[{"internalType":"contract IERC721Ape","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newAvailablePeriod","type":"uint256"}],"name":"addAvailablePeriods","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newTokenId","type":"uint256"}],"name":"addOayc1x1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_oaycIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_moaycIds","type":"uint256[]"}],"name":"calculateTokens","outputs":[{"internalType":"uint256","name":"counter","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimAllRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"claimReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"counterPositions","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"flipStarted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getAllPositionsInfo","outputs":[{"components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"positionId","type":"uint256"},{"internalType":"uint256","name":"accruedReward","type":"uint256"},{"internalType":"uint256","name":"maximumReward","type":"uint256"},{"internalType":"uint256","name":"stakedPeriod","type":"uint256"},{"internalType":"uint256","name":"remainingPeriod","type":"uint256"},{"internalType":"enum Staking.PositionKind","name":"positionKind","type":"uint8"},{"internalType":"uint256[]","name":"arrayIdsOayc","type":"uint256[]"},{"internalType":"uint256[]","name":"arrayIdsMoayc","type":"uint256[]"}],"internalType":"struct Staking.PositionInfo[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"getMaximumRewardPerPosition","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getPositionInfo","outputs":[{"components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"positionId","type":"uint256"},{"internalType":"uint256","name":"accruedReward","type":"uint256"},{"internalType":"uint256","name":"maximumReward","type":"uint256"},{"internalType":"uint256","name":"stakedPeriod","type":"uint256"},{"internalType":"uint256","name":"remainingPeriod","type":"uint256"},{"internalType":"enum Staking.PositionKind","name":"positionKind","type":"uint8"},{"internalType":"uint256[]","name":"arrayIdsOayc","type":"uint256[]"},{"internalType":"uint256[]","name":"arrayIdsMoayc","type":"uint256[]"}],"internalType":"struct Staking.PositionInfo","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_indexes","type":"uint256[]"}],"name":"getPositionsByIndexes","outputs":[{"components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"startTimestamp","type":"uint256"},{"internalType":"uint256","name":"endTimestamp","type":"uint256"},{"internalType":"uint256","name":"tokens","type":"uint256"},{"internalType":"enum Staking.PositionKind","name":"positionKind","type":"uint8"},{"internalType":"uint256[]","name":"arrayIdsOayc","type":"uint256[]"},{"internalType":"uint256[]","name":"arrayIdsMoayc","type":"uint256[]"}],"internalType":"struct Staking.Position[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"getPositionsByOwner","outputs":[{"components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"startTimestamp","type":"uint256"},{"internalType":"uint256","name":"endTimestamp","type":"uint256"},{"internalType":"uint256","name":"tokens","type":"uint256"},{"internalType":"enum Staking.PositionKind","name":"positionKind","type":"uint8"},{"internalType":"uint256[]","name":"arrayIdsOayc","type":"uint256[]"},{"internalType":"uint256[]","name":"arrayIdsMoayc","type":"uint256[]"}],"internalType":"struct Staking.Position[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"getRewardAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"getStakingPertiod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"isActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isStarted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_oaycIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_moaycIds","type":"uint256[]"},{"internalType":"uint256","name":"_periodIndex","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockFine","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lvl2Multi","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lvl3Multi","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"moaycRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"notPairMulti","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"oayc1x1","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oneOneMulti","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pairMulti","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"positions","outputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"startTimestamp","type":"uint256"},{"internalType":"uint256","name":"endTimestamp","type":"uint256"},{"internalType":"uint256","name":"tokens","type":"uint256"},{"internalType":"enum Staking.PositionKind","name":"positionKind","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"positionsOf","outputs":[{"internalType":"uint256[]","name":"indexes","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newTokenId","type":"uint256"}],"name":"removeOayc1x1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"removeStakePosition","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_availablePeriods","type":"uint256[]"}],"name":"setAvailablePeriods","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newFine","type":"uint256"}],"name":"setLockFine","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newMulti","type":"uint256"}],"name":"setLvl2Multi","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newMulti","type":"uint256"}],"name":"setLvl3Multi","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newMulti","type":"uint256"}],"name":"setNotPairMulti","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newMulti","type":"uint256"}],"name":"setOneOnOneMulti","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newMulti","type":"uint256"}],"name":"setPairMulti","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newRewardRate","type":"uint256"}],"name":"setRewardRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newFine","type":"uint256"}],"name":"setStakeFine","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_oaycIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_moaycIds","type":"uint256[]"},{"internalType":"uint256","name":"_periodIndex","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stakeFine","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"stakedMoayc","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"stakedOayc","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"userPositions","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b506040516200369e3803806200369e833981016040819052620000349162000347565b6200003f33620001bd565b600280546001600160a01b038088166001600160a01b03199283161790925560038054878416908316179055600180549286169290911691909117905581518290600090620000925762000092620003f2565b602002602001015160048190555081600181518110620000b657620000b6620003f2565b602002602001015160058190555081600281518110620000da57620000da620003f2565b602002602001015160068190555081600381518110620000fe57620000fe620003f2565b602002602001015160078190555081600481518110620001225762000122620003f2565b602002602001015160098190555081600581518110620001465762000146620003f2565b6020026020010151600a81905550816006815181106200016a576200016a620003f2565b6020026020010151600b81905550816007815181106200018e576200018e620003f2565b602090810291909101810151600c558151620001b191600e91908401906200020d565b50505050505062000408565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280548282559060005260206000209081019282156200024b579160200282015b828111156200024b5782518255916020019190600101906200022e565b50620002599291506200025d565b5090565b5b808211156200025957600081556001016200025e565b6001600160a01b03811681146200028a57600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620002b557600080fd5b815160206001600160401b0380831115620002d457620002d46200028d565b8260051b604051601f19603f83011681018181108482111715620002fc57620002fc6200028d565b6040529384528581018301938381019250878511156200031b57600080fd5b83870191505b848210156200033c5781518352918301919083019062000321565b979650505050505050565b600080600080600060a086880312156200036057600080fd5b85516200036d8162000274565b6020870151909550620003808162000274565b6040870151909450620003938162000274565b60608701519093506001600160401b0380821115620003b157600080fd5b620003bf89838a01620002a3565b93506080880151915080821115620003d657600080fd5b50620003e588828901620002a3565b9150509295509295909350565b634e487b7160e01b600052603260045260246000fd5b61328680620004186000396000f3fe608060405234801561001057600080fd5b50600436106102d65760003560e01c806382afd23b11610182578063c84993af116100e9578063dedaff7c116100a2578063f81f25701161007c578063f81f2570146106b0578063f867d46b146106c3578063fc0c546a146106e3578063fe6db552146106f657600080fd5b8063dedaff7c14610681578063eda98d021461068a578063f2fde38b1461069d57600080fd5b8063c84993af14610619578063ce07b51c1461062c578063d2358a921461063f578063d4068a7214610648578063d442c4441461065b578063d919dc8e1461066e57600080fd5b8063a31830e21161013b578063a31830e214610591578063a70372a7146105a4578063ae169a50146105ad578063b36dd9fc146105c0578063c32008f9146105e3578063c5632e9f1461060657600080fd5b806382afd23b146104d1578063839d23c7146104f657806386c04aea146105095780638da5cb5b1461051257806399fbab88146105235780639e447fc61461057e57600080fd5b8063519f50991161024157806369db4031116101fa5780636cc44711116101d45780636cc44711146104a4578063715018a6146104ad57806374a1564b146104b55780637b0a47ee146104c857600080fd5b806369db40311461044e5780636a5d8e8f146104615780636c4b9dfe1461048157600080fd5b8063519f5099146103c557806354468750146103e5578063544736e6146103f85780635cfadbd7146104155780635e1b4d99146104285780635e7328a71461043b57600080fd5b806325879a0a1161029357806325879a0a146103385780632e2c55c614610341578063301e8fda1461035457806333fa83941461037f5780633784e99b1461039257806337f313d1146103a557600080fd5b80630b83a727146102db5780630cf585f2146102e55780630eedbb40146102ed57806314dbcda2146103095780631e724df41461031c578063255384d714610325575b600080fd5b6102e3610709565b005b6102e3610761565b6102f660055481565b6040519081526020015b60405180910390f35b6102e3610317366004612af3565b61077d565b6102f6600c5481565b6102e3610333366004612b58565b61078a565b6102f660085481565b6102e361034f366004612af3565b6107a3565b600354610367906001600160a01b031681565b6040516001600160a01b039091168152602001610300565b6102e361038d366004612af3565b610a28565b6102e36103a0366004612af3565b610a35565b6103b86103b3366004612baf565b610a58565b6040516103009190612cd9565b6103d86103d3366004612af3565b610b76565b6040516103009190612d3b565b6102e36103f3366004612af3565b610d1d565b600d546104059060ff1681565b6040519015158152602001610300565b6102e3610423366004612af3565b610d2a565b6102f6610436366004612d4e565b610d37565b6102e3610449366004612d7a565b610d68565b6102f661045c366004612dee565b610fce565b61047461046f366004612baf565b6111ae565b6040516103009190612e5a565b61040561048f366004612af3565b60116020526000908152604090205460ff1681565b6102f660095481565b6102e36113b4565b6102f66104c3366004612af3565b6113c8565b6102f660045481565b6104056104df366004612af3565b600090815260106020526040902060020154421090565b6102e3610504366004612d7a565b611565565b6102f6600b5481565b6000546001600160a01b0316610367565b61056d610531366004612af3565b601060205260009081526040902080546001820154600283015460038401546004909401546001600160a01b0390931693919290919060ff1685565b604051610300959493929190612f2a565b6102e361058c366004612af3565b6116a8565b6102e361059f366004612af3565b6116b5565b6102f660065481565b6102e36105bb366004612af3565b6116c2565b6104056105ce366004612af3565b60136020526000908152604090205460ff1681565b6104056105f1366004612af3565b60126020526000908152604090205460ff1681565b6102f6610614366004612af3565b6117d9565b6102f6610627366004612af3565b61183e565b6102e361063a366004612af3565b611852565b6102f660075481565b6102e3610656366004612af3565b61185f565b600254610367906001600160a01b031681565b6102e361067c366004612af3565b61189c565b6102f6600a5481565b6102f6610698366004612af3565b6118bc565b6102e36106ab366004612baf565b611918565b6104746106be366004612f72565b611991565b6106d66106d1366004612baf565b611b92565b6040516103009190613030565b600154610367906001600160a01b031681565b6102e3610704366004612af3565b611bfe565b336000908152600f6020526040812054905b8181101561075d57336000908152600f602052604081208054610755929061074557610745613074565b90600052602060002001546116c2565b60010161071b565b5050565b610769611c0b565b600d805460ff19811660ff90911615179055565b610785611c0b565b600755565b610792611c0b565b61079e600e8383612991565b505050565b60008181526010602052604090205481906001600160a01b031633146108105760405162461bcd60e51b815260206004820152601d60248201527f4f6e6c7920706f736974696f6e206f776e65722063616e20636c61696d00000060448201526064015b60405180910390fd5b6000828152601060205260408120905b60058201548110156109c25781600501818154811061084157610841613074565b90600052602060002001546000146108f3576012600083600501838154811061086c5761086c613074565b6000918252602080832090910154835282019290925260400190205460ff166108a75760405162461bcd60e51b81526004016108079061308a565b6000601260008460050184815481106108c2576108c2613074565b9060005260206000200154815260200190815260200160002060006101000a81548160ff0219169083151502179055505b81600601818154811061090857610908613074565b90600052602060002001546000146109ba576013600083600601838154811061093357610933613074565b6000918252602080832090910154835282019290925260400190205460ff1661096e5760405162461bcd60e51b81526004016108079061308a565b60006013600084600601848154811061098957610989613074565b9060005260206000200154815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600101610820565b50600083815260106020526040812080546001600160a01b031916815560018101829055600281018290556003810182905560048101805460ff1916905590610a0e60058301826129dc565b610a1c6006830160006129dc565b505061079e3384611c65565b610a30611c0b565b600b55565b610a3d611c0b565b6000908152601160205260409020805460ff19166001179055565b6001600160a01b0381166000908152600f60209081526040808320805482518185028101850190935280835260609493830182828015610ab757602002820191906000526020600020905b815481526020019060010190808311610aa3575b5050505050905060008151905060008167ffffffffffffffff811115610adf57610adf612f5c565b604051908082528060200260200182016040528015610b1857816020015b610b056129fa565b815260200190600190039081610afd5790505b50905060005b82811015610b6d57610b48848281518110610b3b57610b3b613074565b6020026020010151610b76565b828281518110610b5a57610b5a613074565b6020908102919091010152600101610b1e565b50949350505050565b610b7e6129fa565b604080516101208101825260008481526010602090815290839020546001600160a01b031682528101849052908101610bb68461183e565b8152602001610bc4846117d9565b8152602001610bd2846118bc565b815260200160106000858152602001908152602001600020600201544211610c1657600084815260106020526040902060020154610c119042906130cd565b610c19565b60005b815260008481526010602090815260409091206004015491019060ff166001811115610c4757610c47612bd3565b81526000848152601060209081526040918290206005018054835181840281018401909452808452938201939091830182828015610ca457602002820191906000526020600020905b815481526020019060010190808311610c90575b5050505050815260200160106000858152602001908152602001600020600601805480602002602001604051908101604052809291908181526020018280548015610d0e57602002820191906000526020600020905b815481526020019060010190808311610cfa575b50505050508152509050919050565b610d25611c0b565b600c55565b610d32611c0b565b600555565b600f6020528160005260406000208181548110610d5357600080fd5b90600052602060002001600091509150505481565b600d5460ff16610dae5760405162461bcd60e51b815260206004820152601160248201527014dd185ada5b99c81a5cc818db1bdcd959607a1b6044820152606401610807565b84848484808314610df95760405162461bcd60e51b815260206004820152601560248201527457726f6e672063616c6c646174612061727261797360581b6044820152606401610807565b610e0733308b8b8b8b611d2e565b60088054906000610e17836130e4565b9091555050336000818152600f602090815260408083206008548154600181018355918552938390200192909255815160e0810183529283524290830152600e80549183019188908110610e6d57610e6d613074565b906000526020600020015442610e8391906130ff565b8152602001610e948b8b8b8b610fce565b815260200160015b81526020018a8a808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050908252506040805160208a810282810182019093528a82529283019290918b918b9182918501908490808284376000920182905250939094525050600854815260106020908152604091829020845181546001600160a01b0319166001600160a01b03909116178155908401516001808301919091559184015160028201556060840151600382015560808401516004820180549294509092909160ff1916908381811115610f8457610f84612bd3565b021790555060a08201518051610fa4916005840191602090910190612a60565b5060c08201518051610fc0916006840191602090910190612a60565b505050505050505050505050565b6000838180805b838110156111a25760009150888882818110610ff357610ff3613074565b905060200201356000141561100957600061101c565b61101c670de0b6b3a76400006001613117565b9250601160008a8a8481811061103457611034613074565b602090810292909201358352508101919091526040016000205460ff161561107a57670de0b6b3a76400006007548461106d9190613117565b6110779190613136565b92505b88888281811061108c5761108c613074565b905060200201356000141580156110bc57508686828181106110b0576110b0613074565b90506020020135600014155b1561116c578686828181106110d3576110d3613074565b905060200201358989838181106110ec576110ec613074565b90506020020135141561114b57670de0b6b3a764000060055461112689898581811061111a5761111a613074565b905060200201356113c8565b61113090866130ff565b61113a9190613117565b6111449190613136565b915061118e565b670de0b6b3a764000060065461112689898581811061111a5761111a613074565b61118187878381811061111a5761111a613074565b61118b90846130ff565b91505b61119882866130ff565b9450600101610fd5565b50505050949350505050565b606060006111bb83611b92565b805190915060008167ffffffffffffffff8111156111db576111db612f5c565b60405190808252806020026020018201604052801561121457816020015b611201612a9b565b8152602001906001900390816111f95790505b50905060005b82811015610b6d576010600085838151811061123857611238613074565b602002602001015181526020019081526020016000206040518060e00160405290816000820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016001820154815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff1660018111156112ca576112ca612bd3565b60018111156112db576112db612bd3565b81526020016005820180548060200260200160405190810160405280929190818152602001828054801561132e57602002820191906000526020600020905b81548152602001906001019080831161131a575b505050505081526020016006820180548060200260200160405190810160405280929190818152602001828054801561138657602002820191906000526020600020905b815481526020019060010190808311611372575b5050505050815250508282815181106113a1576113a1613074565b602090810291909101015260010161121a565b6113bc611c0b565b6113c66000611f24565b565b6000816113d757506000919050565b600354604051634b1a537760e11b8152600481018490526000916001600160a01b031690639634a6ee9060240160206040518083038186803b15801561141c57600080fd5b505afa158015611430573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114549190613158565b90506000600360009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156114a657600080fd5b505afa1580156114ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114de9190613158565b6114f2670de0b6b3a7640000612710613117565b6114fc9190613136565b9050816001141561150e579392505050565b8160021461153c57670de0b6b3a7640000600a548261152d9190613117565b6115379190613136565b61155d565b670de0b6b3a7640000600954826115539190613117565b61155d9190613136565b949350505050565b600d5460ff166115ab5760405162461bcd60e51b815260206004820152601160248201527014dd185ada5b99c81a5cc818db1bdcd959607a1b6044820152606401610807565b848484848083146115f65760405162461bcd60e51b815260206004820152601560248201527457726f6e672063616c6c646174612061727261797360581b6044820152606401610807565b6116038989898933611f74565b60088054906000611613836130e4565b9091555050336000818152600f602090815260408083206008548154600181018355918552938390200192909255815160e0810183529283524290830152600e8054918301918890811061166957611669613074565b90600052602060002001544261167f91906130ff565b815260200160026116928c8c8c8c610fce565b61169c9190613136565b81526020016000610e9c565b6116b0611c0b565b600455565b6116bd611c0b565b600955565b60008181526010602052604090205481906001600160a01b0316331461172a5760405162461bcd60e51b815260206004820152601d60248201527f4f6e6c7920706f736974696f6e206f776e65722063616e20636c61696d0000006044820152606401610807565b60006117358361183e565b60008481526010602052604090206002810154919250904210156117b2576000600482015460ff16600181111561176e5761176e612bd3565b1415611795576064600b54836117849190613117565b61178e9190613136565b91506117b2565b6064600c54836117a59190613117565b6117af9190613136565b91505b60048101546117d3903390600584019060068501908690899060ff1661227f565b50505050565b60008181526010602052604081206001810154600290910154670de0b6b3a764000091611805916130cd565b6004546000858152601060205260409020600301546118249190613117565b61182e9190613117565b6118389190613136565b92915050565b6000670de0b6b3a7640000611805836118bc565b61185a611c0b565b600655565b611867611c0b565b600e80546001810182556000919091527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd0155565b6118a4611c0b565b6000908152601160205260409020805460ff19169055565b60008181526010602052604081206002015442116118f5576000828152601060205260409020600101546118f090426130cd565b611838565b6000828152601060205260409020600181015460029091015461183891906130cd565b611920611c0b565b6001600160a01b0381166119855760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610807565b61198e81611f24565b50565b805160609060008167ffffffffffffffff8111156119b1576119b1612f5c565b6040519080825280602002602001820160405280156119ea57816020015b6119d7612a9b565b8152602001906001900390816119cf5790505b50905060005b82811015611b8a5760106000868381518110611a0e57611a0e613074565b602002602001015181526020019081526020016000206040518060e00160405290816000820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016001820154815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff166001811115611aa057611aa0612bd3565b6001811115611ab157611ab1612bd3565b815260200160058201805480602002602001604051908101604052809291908181526020018280548015611b0457602002820191906000526020600020905b815481526020019060010190808311611af0575b5050505050815260200160068201805480602002602001604051908101604052809291908181526020018280548015611b5c57602002820191906000526020600020905b815481526020019060010190808311611b48575b505050505081525050828281518110611b7757611b77613074565b60209081029190910101526001016119f0565b509392505050565b6001600160a01b0381166000908152600f6020908152604091829020805483518184028101840190945280845260609392830182828015611bf257602002820191906000526020600020905b815481526020019060010190808311611bde575b50505050509050919050565b611c06611c0b565b600a55565b6000546001600160a01b031633146113c65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610807565b6001600160a01b0382166000908152600f60205260408120805490915b81811015611d275783838281548110611c9d57611c9d613074565b90600052602060002001541415611d1f5782611cba6001846130cd565b81548110611cca57611cca613074565b9060005260206000200154838281548110611ce757611ce7613074565b906000526020600020018190555082805480611d0557611d05613171565b600190038181906000526020600020016000905590558190505b600101611c82565b5050505050565b60005b83811015611f1b57848482818110611d4b57611d4b613074565b90506020020135600014611e265760126000868684818110611d6f57611d6f613074565b602090810292909201358352508101919091526040016000205460ff1615611da95760405162461bcd60e51b815260040161080790613187565b6002546001600160a01b03166323b872dd8888888886818110611dce57611dce613074565b905060200201356040518463ffffffff1660e01b8152600401611df3939291906131be565b600060405180830381600087803b158015611e0d57600080fd5b505af1158015611e21573d6000803e3d6000fd5b505050505b828282818110611e3857611e38613074565b90506020020135600014611f135760136000848484818110611e5c57611e5c613074565b602090810292909201358352508101919091526040016000205460ff1615611e965760405162461bcd60e51b815260040161080790613187565b6003546001600160a01b03166323b872dd8888868686818110611ebb57611ebb613074565b905060200201356040518463ffffffff1660e01b8152600401611ee0939291906131be565b600060405180830381600087803b158015611efa57600080fd5b505af1158015611f0e573d6000803e3d6000fd5b505050505b600101611d31565b50505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60005b8481101561227757858582818110611f9157611f91613074565b905060200201356000146120f75760126000878784818110611fb557611fb5613074565b602090810292909201358352508101919091526040016000205460ff1615611fef5760405162461bcd60e51b815260040161080790613187565b60016012600088888581811061200757612007613074565b60209081029290920135835250810191909152604001600020805460ff19169115159190911790556002546001600160a01b0316636352211e87878481811061205257612052613074565b905060200201356040518263ffffffff1660e01b815260040161207791815260200190565b60206040518083038186803b15801561208f57600080fd5b505afa1580156120a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120c791906131e2565b6001600160a01b0316826001600160a01b0316146120f75760405162461bcd60e51b8152600401610807906131ff565b83838281811061210957612109613074565b9050602002013560001461226f576013600085858481811061212d5761212d613074565b602090810292909201358352508101919091526040016000205460ff16156121675760405162461bcd60e51b815260040161080790613187565b60016013600086868581811061217f5761217f613074565b60209081029290920135835250810191909152604001600020805460ff19169115159190911790556003546001600160a01b0316636352211e8585848181106121ca576121ca613074565b905060200201356040518263ffffffff1660e01b81526004016121ef91815260200190565b60206040518083038186803b15801561220757600080fd5b505afa15801561221b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061223f91906131e2565b6001600160a01b0316826001600160a01b03161461226f5760405162461bcd60e51b8152600401610807906131ff565b600101611f77565b505050505050565b600081600181111561229357612293612bd3565b141561234757612342858054806020026020016040519081016040528092919081815260200182805480156122e757602002820191906000526020600020905b8154815260200190600101908083116122d3575b50505050508580548060200260200160405190810160405280929190818152602001828054801561233757602002820191906000526020600020905b815481526020019060010190808311612323575b50505050508861267b565b6124b9565b845460005b818110156124b65786818154811061236657612366613074565b90600052602060002001546000146124015760025487546001600160a01b03909116906323b872dd9030908b908b90869081106123a5576123a5613074565b90600052602060002001546040518463ffffffff1660e01b81526004016123ce939291906131be565b600060405180830381600087803b1580156123e857600080fd5b505af11580156123fc573d6000803e3d6000fd5b505050505b85818154811061241357612413613074565b90600052602060002001546000146124ae5760035486546001600160a01b03909116906323b872dd9030908b908a908690811061245257612452613074565b90600052602060002001546040518463ffffffff1660e01b815260040161247b939291906131be565b600060405180830381600087803b15801561249557600080fd5b505af11580156124a9573d6000803e3d6000fd5b505050505b60010161234c565b50505b600082815260106020526040812080546001600160a01b031916815560018101829055600281018290556003810182905560048101805460ff191690559061250460058301826129dc565b6125126006830160006129dc565b505061251e3383611c65565b6001546040516370a0823160e01b815230600482015284916001600160a01b0316906370a082319060240160206040518083038186803b15801561256157600080fd5b505afa158015612575573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125999190613158565b10156125f55760405162461bcd60e51b815260206004820152602560248201527f4e6f7420656e6f75676820746f6b656e73206f6e20636f6e74726163742062616044820152646c616e636560d81b6064820152608401610807565b60015460405163a9059cbb60e01b81526001600160a01b038881166004830152602482018690529091169063a9059cbb90604401602060405180830381600087803b15801561264357600080fd5b505af1158015612657573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f1b919061322e565b60005b83518110156117d35783818151811061269957612699613074565b602002602001015160001461280857601260008583815181106126be576126be613074565b60209081029190910181015182528101919091526040016000205460ff166126f85760405162461bcd60e51b81526004016108079061308a565b60006012600086848151811061271057612710613074565b6020908102919091018101518252810191909152604001600020805460ff191691151591909117905560025484516001600160a01b0390911690636352211e9086908490811061276257612762613074565b60200260200101516040518263ffffffff1660e01b815260040161278891815260200190565b60206040518083038186803b1580156127a057600080fd5b505afa1580156127b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127d891906131e2565b6001600160a01b0316826001600160a01b0316146128085760405162461bcd60e51b8152600401610807906131ff565b82818151811061281a5761281a613074565b6020026020010151600014612989576013600084838151811061283f5761283f613074565b60209081029190910181015182528101919091526040016000205460ff166128795760405162461bcd60e51b81526004016108079061308a565b60006013600085848151811061289157612891613074565b6020908102919091018101518252810191909152604001600020805460ff191691151591909117905560035483516001600160a01b0390911690636352211e908590849081106128e3576128e3613074565b60200260200101516040518263ffffffff1660e01b815260040161290991815260200190565b60206040518083038186803b15801561292157600080fd5b505afa158015612935573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061295991906131e2565b6001600160a01b0316826001600160a01b0316146129895760405162461bcd60e51b8152600401610807906131ff565b60010161267e565b8280548282559060005260206000209081019282156129cc579160200282015b828111156129cc5782358255916020019190600101906129b1565b506129d8929150612ade565b5090565b508054600082559060005260206000209081019061198e9190612ade565b60405180610120016040528060006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160006001811115612a4c57612a4c612bd3565b815260200160608152602001606081525090565b8280548282559060005260206000209081019282156129cc579160200282015b828111156129cc578251825591602001919060010190612a80565b6040518060e0016040528060006001600160a01b0316815260200160008152602001600081526020016000815260200160006001811115612a4c57612a4c612bd3565b5b808211156129d85760008155600101612adf565b600060208284031215612b0557600080fd5b5035919050565b60008083601f840112612b1e57600080fd5b50813567ffffffffffffffff811115612b3657600080fd5b6020830191508360208260051b8501011115612b5157600080fd5b9250929050565b60008060208385031215612b6b57600080fd5b823567ffffffffffffffff811115612b8257600080fd5b612b8e85828601612b0c565b90969095509350505050565b6001600160a01b038116811461198e57600080fd5b600060208284031215612bc157600080fd5b8135612bcc81612b9a565b9392505050565b634e487b7160e01b600052602160045260246000fd5b60028110612c0757634e487b7160e01b600052602160045260246000fd5b9052565b600081518084526020808501945080840160005b83811015612c3b57815187529582019590820190600101612c1f565b509495945050505050565b80516001600160a01b0316825260006101206020830151602085015260408301516040850152606083015160608501526080830151608085015260a083015160a085015260c0830151612c9c60c0860182612be9565b5060e08301518160e0860152612cb482860182612c0b565b9150506101008084015185830382870152612ccf8382612c0b565b9695505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015612d2e57603f19888603018452612d1c858351612c46565b94509285019290850190600101612d00565b5092979650505050505050565b602081526000612bcc6020830184612c46565b60008060408385031215612d6157600080fd5b8235612d6c81612b9a565b946020939093013593505050565b600080600080600060608688031215612d9257600080fd5b853567ffffffffffffffff80821115612daa57600080fd5b612db689838a01612b0c565b90975095506020880135915080821115612dcf57600080fd5b50612ddc88828901612b0c565b96999598509660400135949350505050565b60008060008060408587031215612e0457600080fd5b843567ffffffffffffffff80821115612e1c57600080fd5b612e2888838901612b0c565b90965094506020870135915080821115612e4157600080fd5b50612e4e87828801612b0c565b95989497509550505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b83811015612f1c57888303603f19018552815180516001600160a01b03168452878101518885015286810151878501526060808201519085015260808082015160e09190612ed182880182612be9565b505060a0808301518282880152612eea83880182612c0b565b9250505060c08083015192508582038187015250612f088183612c0b565b968901969450505090860190600101612e81565b509098975050505050505050565b6001600160a01b038616815260208101859052604081018490526060810183905260a08101612ccf6080830184612be9565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215612f8557600080fd5b823567ffffffffffffffff80821115612f9d57600080fd5b818501915085601f830112612fb157600080fd5b813581811115612fc357612fc3612f5c565b8060051b604051601f19603f83011681018181108582111715612fe857612fe8612f5c565b60405291825284820192508381018501918883111561300657600080fd5b938501935b828510156130245784358452938501939285019261300b565b98975050505050505050565b6020808252825182820181905260009190848201906040850190845b818110156130685783518352928401929184019160010161304c565b50909695505050505050565b634e487b7160e01b600052603260045260246000fd5b602080825260139082015272151a1a5cc8139195081b9bdd081cdd185ad959606a1b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000828210156130df576130df6130b7565b500390565b60006000198214156130f8576130f86130b7565b5060010190565b60008219821115613112576131126130b7565b500190565b6000816000190483118215151615613131576131316130b7565b500290565b60008261315357634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561316a57600080fd5b5051919050565b634e487b7160e01b600052603160045260246000fd5b60208082526017908201527f54686973204e465420616c7265616479207374616b6564000000000000000000604082015260600190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6000602082840312156131f457600080fd5b8151612bcc81612b9a565b602080825260159082015274139bdd081bdddb995c881bd9881d1a1a5cc8139195605a1b604082015260600190565b60006020828403121561324057600080fd5b81518015158114612bcc57600080fdfea264697066735822122090c477969c6a3f2e06d0cb51f2ff18b78a51a392c84016d6ccace1dc6bdfe33c64736f6c6343000809003300000000000000000000000068559ee6959bcd646b00741ac52c5baffd0f2ced0000000000000000000000005b701c95cdcdeafefc672571437be17f395e2300000000000000000000000000d7f4f862ca5d164946e7d57b9b08d57d951b513b00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000001c00000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000174876e800000000000000000000000000000000000000000000000000136dcc951d8c000000000000000000000000000000000000000000000000000010a741a46278000000000000000000000000000000000000000000000000000010a741a4627800000000000000000000000000000000000000000000000000000000000000000037000000000000000000000000000000000000000000000000000000000000006e00000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000151800000000000000000000000000000000000000000000000000000000000093a800000000000000000000000000000000000000000000000000000000000278d00
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000068559ee6959bcd646b00741ac52c5baffd0f2ced0000000000000000000000005b701c95cdcdeafefc672571437be17f395e2300000000000000000000000000d7f4f862ca5d164946e7d57b9b08d57d951b513b00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000001c00000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000174876e800000000000000000000000000000000000000000000000000136dcc951d8c000000000000000000000000000000000000000000000000000010a741a46278000000000000000000000000000000000000000000000000000010a741a4627800000000000000000000000000000000000000000000000000000000000000000037000000000000000000000000000000000000000000000000000000000000006e00000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000151800000000000000000000000000000000000000000000000000000000000093a800000000000000000000000000000000000000000000000000000000000278d00
-----Decoded View---------------
Arg [0] : OAYC_ (address): 0x68559ee6959bcd646b00741ac52c5baffd0f2ced
Arg [1] : MOAYC_ (address): 0x5b701c95cdcdeafefc672571437be17f395e2300
Arg [2] : token_ (address): 0xd7f4f862ca5d164946e7d57b9b08d57d951b513b
Arg [3] : params (uint256[]): 100000000000,1400000000000000000,1200000000000000000,1200000000000000000,55,110,50,0
Arg [4] : availablePeriods_ (uint256[]): 86400,604800,2592000
-----Encoded View---------------
18 Constructor Arguments found :
Arg [0] : 00000000000000000000000068559ee6959bcd646b00741ac52c5baffd0f2ced
Arg [1] : 0000000000000000000000005b701c95cdcdeafefc672571437be17f395e2300
Arg [2] : 000000000000000000000000d7f4f862ca5d164946e7d57b9b08d57d951b513b
Arg [3] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [4] : 00000000000000000000000000000000000000000000000000000000000001c0
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000008
Arg [6] : 000000000000000000000000000000000000000000000000000000174876e800
Arg [7] : 000000000000000000000000000000000000000000000000136dcc951d8c0000
Arg [8] : 00000000000000000000000000000000000000000000000010a741a462780000
Arg [9] : 00000000000000000000000000000000000000000000000010a741a462780000
Arg [10] : 0000000000000000000000000000000000000000000000000000000000000037
Arg [11] : 000000000000000000000000000000000000000000000000000000000000006e
Arg [12] : 0000000000000000000000000000000000000000000000000000000000000032
Arg [13] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [14] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [15] : 0000000000000000000000000000000000000000000000000000000000015180
Arg [16] : 0000000000000000000000000000000000000000000000000000000000093a80
Arg [17] : 0000000000000000000000000000000000000000000000000000000000278d00
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|